From ebf364cebe7d3c8a35f6d1e19a3d2451525feaff Mon Sep 17 00:00:00 2001 From: Michal Bajer Date: Tue, 25 Jul 2023 09:03:07 +0000 Subject: [PATCH] feat(geth-all-in-one): add ethereum test image and helper class - Add new `geth-all-in-one` test image for running ethereum tests in mainnet-like environment. Image is based on `client-go:v1.12.0` and uses Clique (PoS). There is one coinbase account with publicly available keys like in other, similar packages in cacti. - New image was introduced because currently used open-ethereum one is deprecated. - Add `geth-all-in-one-publish` CI for publishing new images. - Add `@hyperledger/cactus-test-geth-ledger` for using new geth ledger container in the tests. The class has been moved out of `cactus-test-tooling` because of conflicting `web3js` versions. Other than that, it's similar to open-ethereum test class. - Add basic tests for `@hyperledger/cactus-test-geth-ledger`. More tests are being developed right now, and should be available in subsequent PRs. Closes: #2577 Signed-off-by: Michal Bajer --- .../workflows/geth-all-in-one-publish.yaml | 60 ++ packages/cactus-test-geth-ledger/README.md | 74 ++ packages/cactus-test-geth-ledger/package.json | 74 ++ .../src/main/typescript/geth-test-ledger.ts | 410 +++++++++ .../src/main/typescript/index.ts | 1 + .../src/main/typescript/index.web.ts | 1 + .../src/main/typescript/public-api.ts | 7 + .../integration/api-surface.test.ts | 5 + .../integration/geth-test-ledger.test.ts | 102 +++ .../cactus-test-geth-ledger/tsconfig.json | 21 + tools/docker/geth-all-in-one/Dockerfile | 44 + tools/docker/geth-all-in-one/README.md | 65 ++ .../docker/geth-all-in-one/docker-compose.yml | 22 + .../geth-all-in-one/script-start-docker.sh | 2 + tools/docker/geth-all-in-one/src/genesis.json | 27 + .../docker/geth-all-in-one/src/healthcheck.sh | 14 + ...--6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0 | 1 + tsconfig.json | 3 + yarn.lock | 867 ++++++++++++------ 19 files changed, 1524 insertions(+), 276 deletions(-) create mode 100644 .github/workflows/geth-all-in-one-publish.yaml create mode 100644 packages/cactus-test-geth-ledger/README.md create mode 100644 packages/cactus-test-geth-ledger/package.json create mode 100644 packages/cactus-test-geth-ledger/src/main/typescript/geth-test-ledger.ts create mode 100755 packages/cactus-test-geth-ledger/src/main/typescript/index.ts create mode 100755 packages/cactus-test-geth-ledger/src/main/typescript/index.web.ts create mode 100755 packages/cactus-test-geth-ledger/src/main/typescript/public-api.ts create mode 100644 packages/cactus-test-geth-ledger/src/test/typescript/integration/api-surface.test.ts create mode 100644 packages/cactus-test-geth-ledger/src/test/typescript/integration/geth-test-ledger.test.ts create mode 100644 packages/cactus-test-geth-ledger/tsconfig.json create mode 100644 tools/docker/geth-all-in-one/Dockerfile create mode 100644 tools/docker/geth-all-in-one/README.md create mode 100644 tools/docker/geth-all-in-one/docker-compose.yml create mode 100755 tools/docker/geth-all-in-one/script-start-docker.sh create mode 100644 tools/docker/geth-all-in-one/src/genesis.json create mode 100644 tools/docker/geth-all-in-one/src/healthcheck.sh create mode 100644 tools/docker/geth-all-in-one/src/keystore/UTC--2023-07-03T14-42-00.153791517Z--6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0 diff --git a/.github/workflows/geth-all-in-one-publish.yaml b/.github/workflows/geth-all-in-one-publish.yaml new file mode 100644 index 0000000000..73d5cabc63 --- /dev/null +++ b/.github/workflows/geth-all-in-one-publish.yaml @@ -0,0 +1,60 @@ +name: geth-all-in-one-publish + +on: + push: + # Publish `main` as Docker `latest` image. + branches: + - main + + # Publish `v1.2.3` tags as releases. + tags: + - v* + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + IMAGE_NAME: cactus-geth-all-in-one + +jobs: + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + build-tag-push-container: + runs-on: ubuntu-20.04 + env: + DOCKER_BUILDKIT: 1 + DOCKERFILE_PATH: ./tools/docker/geth-all-in-one/Dockerfile + DOCKER_BUILD_DIR: ./tools/docker/geth-all-in-one/ + permissions: + packages: write + contents: read + + steps: + - uses: actions/checkout@v3.5.2 + + - name: Build image + run: docker build $DOCKER_BUILD_DIR --file $DOCKERFILE_PATH --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" + + - name: Log in to registry + # This is where you will update the PAT to GITHUB_TOKEN + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin + + - name: Push image + run: | + SHORTHASH=$(git rev-parse --short "$GITHUB_SHA") + TODAYS_DATE="$(date +%F)" + DOCKER_TAG="$TODAYS_DATE-$SHORTHASH" + IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + # Strip "v" prefix from tag name + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + # Do not use the `latest` tag at all, tag with date + git short hash if there is no git tag + [ "$VERSION" == "main" ] && VERSION=$DOCKER_TAG + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION diff --git a/packages/cactus-test-geth-ledger/README.md b/packages/cactus-test-geth-ledger/README.md new file mode 100644 index 0000000000..638e1f0ca9 --- /dev/null +++ b/packages/cactus-test-geth-ledger/README.md @@ -0,0 +1,74 @@ +# `@hyperledger/cactus-test-geth-ledger` + +Helpers for running test `go-ethereum` ledger in test scripts. + +## Summary + +- [Getting Started](#getting-started) +- [Usage](#usage) +- [Runing the tests](#running-the-tests) +- [Contributing](#contributing) +- [License](#license) +- [Acknowledgments](#acknowledgments) + +## Getting Started + +Clone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on +your local machine for development and testing purposes. + +### Prerequisites + +In the root of the project to install the dependencies execute the command: + +```sh +npm run configure +``` + +## Usage + +- In order to start the new test ledger, you must import `GethTestLedger` and `start()` it. +- Options can be modified by supplying constructor argument object. +- See tests for more complete usage examples. + +```typescript +import { GethTestLedger } from "@hyperledger/cactus-test-geth-ledger"; + +// You can supply empty object, suitable default values will be used. +const options = { + containerImageName: "cactus_geth_all_in_one", // geth AIO container name + containerImageVersion: "local-build", // geth AIO container tag + logLevel: "info" as LogLevelDesc, // log verbosity of test class, not ethereum node! + emitContainerLogs: false, // will print ethereum node logs here if `true` + envVars: [], // environment variables to provide when starting the ledger + useRunningLedger: false, // test flag to search for already running ledger instead of starting new one (only for development) +}; + +const ledger = new GethTestLedger(options); +await ledger.start(); +// await ledger.start(true); // don't pull image, use one from local storage + +// Use +const rpcApiHttpHost = await ledger.getRpcApiHttpHost(); +``` + +## Running the tests + +To check that all has been installed correctly and that the test class has no errors: + +- Run this command at the project's root: + +```sh +npx jest cactus-test-geth-ledger +``` + +## Contributing + +We welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do! + +Please review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started. + +## License + +This distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file. + +## Acknowledgments diff --git a/packages/cactus-test-geth-ledger/package.json b/packages/cactus-test-geth-ledger/package.json new file mode 100644 index 0000000000..45c894f348 --- /dev/null +++ b/packages/cactus-test-geth-ledger/package.json @@ -0,0 +1,74 @@ +{ + "name": "@hyperledger/cactus-test-geth-ledger", + "version": "2.0.0-alpha.1", + "description": "Helpers for running test go-ethereum ledger in test scripts.", + "keywords": [ + "Hyperledger", + "Cactus", + "Integration", + "Blockchain", + "Distributed Ledger Technology" + ], + "homepage": "https://github.com/hyperledger/cactus#readme", + "bugs": { + "url": "https://github.com/hyperledger/cactus/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger/cactus.git" + }, + "license": "Apache-2.0", + "author": { + "name": "Hyperledger Cactus Contributors", + "email": "cactus@lists.hyperledger.org", + "url": "https://www.hyperledger.org/use/cactus" + }, + "contributors": [ + { + "name": "Please add yourself to the list of contributors", + "email": "your.name@example.com", + "url": "https://example.com" + }, + { + "name": "Michal Bajer", + "email": "michal.bajer@fujitsu.com", + "url": "https://www.fujitsu.com/global/" + } + ], + "main": "dist/lib/main/typescript/index.js", + "module": "dist/lib/main/typescript/index.js", + "browser": "dist/cactus-test-geth-ledger.web.umd.js", + "types": "dist/lib/main/typescript/index.d.ts", + "files": [ + "dist/*" + ], + "scripts": { + "watch": "npm-watch", + "webpack": "npm-run-all webpack:dev", + "webpack:dev": "npm-run-all webpack:dev:node webpack:dev:web", + "webpack:dev:node": "webpack --env=dev --target=node --config ../../webpack.config.js", + "webpack:dev:web": "webpack --env=dev --target=web --config ../../webpack.config.js" + }, + "dependencies": { + "@hyperledger/cactus-common": "2.0.0-alpha.1", + "@hyperledger/cactus-test-tooling": "2.0.0-alpha.1", + "dockerode": "3.3.0", + "internal-ip": "6.2.0", + "run-time-error": "1.4.0", + "web3": "4.0.3", + "web3-eth-accounts": "4.0.3" + }, + "devDependencies": { + "@types/dockerode": "3.2.7" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "publishConfig": { + "access": "public" + }, + "browserMinified": "dist/cactus-test-geth-ledger.web.umd.min.js", + "mainMinified": "dist/cactus-test-geth-ledger.node.umd.min.js", + "watch": {} +} diff --git a/packages/cactus-test-geth-ledger/src/main/typescript/geth-test-ledger.ts b/packages/cactus-test-geth-ledger/src/main/typescript/geth-test-ledger.ts new file mode 100644 index 0000000000..2fa9bc53e6 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/main/typescript/geth-test-ledger.ts @@ -0,0 +1,410 @@ +import { EventEmitter } from "events"; +import Docker, { Container } from "dockerode"; +import { v4 as internalIpV4 } from "internal-ip"; +import Web3, { ContractAbi, TransactionReceipt } from "web3"; +import type { Web3Account } from "web3-eth-accounts"; +import { RuntimeError } from "run-time-error"; + +import { + Logger, + Checks, + LogLevelDesc, + LoggerProvider, +} from "@hyperledger/cactus-common"; +import { Containers } from "@hyperledger/cactus-test-tooling"; + +export interface IGethTestLedgerOptions { + readonly containerImageName?: string; + readonly containerImageVersion?: string; + readonly logLevel?: LogLevelDesc; + readonly emitContainerLogs?: boolean; + readonly envVars?: string[]; + // For test development, attach to ledger that is already running, don't spin up new one + readonly useRunningLedger?: boolean; +} + +/** + * Default values used by GethTestLedger constructor. + */ +export const GETH_TEST_LEDGER_DEFAULT_OPTIONS = Object.freeze({ + containerImageName: "ghcr.io/hyperledger/cacti-geth-all-in-one", + containerImageVersion: "2023-07-27-2a8c48ed6", + logLevel: "info" as LogLevelDesc, + emitContainerLogs: false, + envVars: [], + useRunningLedger: false, +}); + +export const WHALE_ACCOUNT_PRIVATE_KEY = + "86bbf98cf5e5b1c43d2c8701764897357e0fa24982c0137efabf6dc3a6e7b69e"; +export const WHALE_ACCOUNT_ADDRESS = "6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0"; + +export class GethTestLedger { + public static readonly CLASS_NAME = "GethTestLedger"; + private readonly log: Logger; + private readonly logLevel: LogLevelDesc; + private readonly containerImageName: string; + private readonly containerImageVersion: string; + private readonly envVars: string[]; + private readonly emitContainerLogs: boolean; + public readonly useRunningLedger: boolean; + private _container: Container | undefined; + private _containerId: string | undefined; + private _web3: Web3 | undefined; + + public get fullContainerImageName(): string { + return [this.containerImageName, this.containerImageVersion].join(":"); + } + + public get className(): string { + return GethTestLedger.CLASS_NAME; + } + + public get container(): Container { + if (this._container) { + return this._container; + } else { + throw new Error(`Invalid state: _container is not set. Called start()?`); + } + } + + private get web3(): Web3 { + if (this._web3) { + return this._web3; + } else { + throw new Error( + "Invalid state: web3 client is missing, start the ledger container first.", + ); + } + } + + constructor(public readonly options: IGethTestLedgerOptions) { + const fnTag = `${this.className}#constructor()`; + Checks.truthy(options, `${fnTag} arg options`); + + this.logLevel = + this.options.logLevel || GETH_TEST_LEDGER_DEFAULT_OPTIONS.logLevel; + const label = this.className; + this.log = LoggerProvider.getOrCreate({ level: this.logLevel, label }); + + this.emitContainerLogs = + options?.emitContainerLogs ?? + GETH_TEST_LEDGER_DEFAULT_OPTIONS.emitContainerLogs; + this.useRunningLedger = + options?.useRunningLedger ?? + GETH_TEST_LEDGER_DEFAULT_OPTIONS.useRunningLedger; + this.containerImageName = + this.options.containerImageName || + GETH_TEST_LEDGER_DEFAULT_OPTIONS.containerImageName; + this.containerImageVersion = + this.options.containerImageVersion || + GETH_TEST_LEDGER_DEFAULT_OPTIONS.containerImageVersion; + this.envVars = + this.options.envVars || GETH_TEST_LEDGER_DEFAULT_OPTIONS.envVars; + + this.log.info( + `Created ${this.className} OK. Image FQN: ${this.fullContainerImageName}`, + ); + } + + /** + * Get container status. + * + * @returns status string + */ + public async getContainerStatus(): Promise { + if (!this.container) { + throw new Error( + "GethTestLedger#getContainerStatus(): Container not started yet!", + ); + } + + const { Status } = await Containers.getById(this.container.id); + return Status; + } + + /** + * Start a test Geth ledger. + * + * @param omitPull Don't pull docker image from upstream if true. + * @returns Promise + */ + public async start(omitPull = false): Promise { + if (this.useRunningLedger) { + this.log.info( + "Search for already running Geth Test Ledger because 'useRunningLedger' flag is enabled.", + ); + this.log.info( + "Search criteria - image name: ", + this.fullContainerImageName, + ", state: running", + ); + const containerInfo = await Containers.getByPredicate( + (ci) => + ci.Image === this.fullContainerImageName && ci.State === "healthy", + ); + const docker = new Docker(); + this._container = docker.getContainer(containerInfo.Id); + return this._container; + } + + if (this._container) { + this.log.warn("Container was already running - restarting it..."); + await this.container.stop(); + await this.container.remove(); + this._container = undefined; + } + + if (!omitPull) { + await Containers.pullImage( + this.fullContainerImageName, + {}, + this.logLevel, + ); + } + + return new Promise((resolve, reject) => { + const docker = new Docker(); + const eventEmitter: EventEmitter = docker.run( + this.fullContainerImageName, + [], + [], + { + ExposedPorts: { + ["8545/tcp"]: {}, + ["8546/tcp"]: {}, + }, + Env: this.envVars, + HostConfig: { + PublishAllPorts: true, + }, + }, + {}, + (err?: Error) => { + if (err) { + this.log.error( + `Failed to start ${this.fullContainerImageName} container; `, + err, + ); + reject(err); + } + }, + ); + + eventEmitter.once("start", async (container: Container) => { + this._container = container; + this._containerId = container.id; + + if (this.emitContainerLogs) { + const fnTag = `[${this.fullContainerImageName}]`; + await Containers.streamLogs({ + container: this.container, + tag: fnTag, + log: this.log, + }); + } + + try { + await Containers.waitForHealthCheck(this._containerId); + this._web3 = new Web3(await this.getRpcApiHttpHost()); + resolve(container); + } catch (ex) { + reject(ex); + } + }); + }); + } + + /** + * Stop a test Geth ledger. + * + * @returns Stop operation results. + */ + public async stop(): Promise { + if (this.useRunningLedger) { + this.log.info("Ignore stop request because useRunningLedger is enabled."); + return; + } else if (this.container) { + this._web3 = undefined; + return Containers.stop(this.container); + } else { + throw new Error( + `GethTestLedger#stop() Container was never created, nothing to stop.`, + ); + } + } + + /** + * Destroy a test Geth ledger. + * + * @returns Destroy operation results. + */ + public async destroy(): Promise { + if (this.useRunningLedger) { + this.log.info( + "Ignore destroy request because useRunningLedger is enabled.", + ); + return; + } else if (this.container) { + this._web3 = undefined; + return this.container.remove(); + } else { + throw new Error( + `GethTestLedger#destroy() Container was never created, nothing to destroy.`, + ); + } + } + + /** + * Creates a new ETH account from scratch on the ledger and then sends it a + * little seed money to get things started. + * + * Uses `web3.eth.accounts.create` + * + * @param [seedMoney=10e8] The amount of money to seed the new test account with. + */ + public async createEthTestAccount(seedMoney = 10e8): Promise { + const ethTestAccount = this.web3.eth.accounts.create(); + + const receipt = await this.transferAssetFromCoinbase( + ethTestAccount.address, + seedMoney, + ); + + if (receipt instanceof Error) { + throw new RuntimeError("Error in createEthTestAccount", receipt); + } else { + return ethTestAccount; + } + } + + /** + * Creates a new personal ethereum account with specified initial money and password. + * + * Uses `web3.eth.personal.newAccount` + * + * @param seedMoney Initial money to transfer to this account + * @param password Personal account password + * @returns New account address + */ + public async newEthPersonalAccount( + seedMoney = 10e8, + password = "test", + ): Promise { + const account = await this.web3.eth.personal.newAccount(password); + + const receipt = await this.transferAssetFromCoinbase(account, seedMoney); + + if (receipt instanceof Error) { + throw new RuntimeError("Error in newEthPersonalAccount", receipt); + } else { + return account; + } + } + + /** + * Seed `targetAccount` with money from coin base account. + * + * @param targetAccount Ethereum account to send money to. + * @param value Amount of money. + * @returns Transfer `TransactionReceipt` + */ + public async transferAssetFromCoinbase( + targetAccount: string, + value: number, + ): Promise { + const fnTag = `${this.className}#transferAssetFromCoinbase()`; + + const tx = await this.web3.eth.accounts.signTransaction( + { + from: WHALE_ACCOUNT_ADDRESS, + to: targetAccount, + value: value, + gas: 1000000, + }, + WHALE_ACCOUNT_PRIVATE_KEY, + ); + + if (!tx.rawTransaction) { + throw new Error(`${fnTag} Signing transaction failed, reason unknown.`); + } + + return await this.web3.eth.sendSignedTransaction(tx.rawTransaction); + } + + /** + * Deploy contract from coin base account to the ledger. + * + * @param abi - JSON interface of the contract. + * @param bytecode - Compiled code of the contract. + * @param args - Contract arguments. + * @returns Contract deployment `TransactionReceipt` + */ + public async deployContract( + abi: ContractAbi, + bytecode: string, + args?: any[], + ): Promise { + // Encode ABI + const contractProxy = new this.web3.eth.Contract(abi); + const contractTx = contractProxy.deploy({ + data: bytecode, + arguments: args as any, + }); + + // Send TX + const signedTx = await this.web3.eth.accounts.signTransaction( + { + from: WHALE_ACCOUNT_ADDRESS, + data: contractTx.encodeABI(), + gas: 8000000, // Max possible gas + nonce: await this.web3.eth.getTransactionCount(WHALE_ACCOUNT_ADDRESS), + }, + WHALE_ACCOUNT_PRIVATE_KEY, + ); + + if (!signedTx.rawTransaction) { + throw new Error(`Signing transaction failed, reason unknown.`); + } + + return await this.web3.eth.sendSignedTransaction(signedTx.rawTransaction); + } + + public async getRpcApiHttpHost( + host?: string, + port?: number, + ): Promise { + const thePort = port || (await this.getHostPortHttp()); + const lanIpV4OrUndefined = await internalIpV4(); + const lanAddress = host || lanIpV4OrUndefined || "127.0.0.1"; // best effort... + return `http://${lanAddress}:${thePort}`; + } + + public async getRpcApiWebSocketHost( + host?: string, + port?: number, + ): Promise { + const thePort = port || (await this.getHostPortWs()); + const lanIpV4OrUndefined = await internalIpV4(); + const lanAddress = host || lanIpV4OrUndefined || "127.0.0.1"; // best effort... + return `ws://${lanAddress}:${thePort}`; + } + + private async getHostPort(port: number): Promise { + const fnTag = `${this.className}#getHostPort()`; + if (this._containerId) { + const cInfo = await Containers.getById(this._containerId); + return Containers.getPublicPort(port, cInfo); + } else { + throw new Error(`${fnTag} Container ID not set. Did you call start()?`); + } + } + + public async getHostPortHttp(): Promise { + return this.getHostPort(8545); + } + + public async getHostPortWs(): Promise { + return this.getHostPort(8546); + } +} diff --git a/packages/cactus-test-geth-ledger/src/main/typescript/index.ts b/packages/cactus-test-geth-ledger/src/main/typescript/index.ts new file mode 100755 index 0000000000..87cb558397 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/main/typescript/index.ts @@ -0,0 +1 @@ +export * from "./public-api"; diff --git a/packages/cactus-test-geth-ledger/src/main/typescript/index.web.ts b/packages/cactus-test-geth-ledger/src/main/typescript/index.web.ts new file mode 100755 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/main/typescript/index.web.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/cactus-test-geth-ledger/src/main/typescript/public-api.ts b/packages/cactus-test-geth-ledger/src/main/typescript/public-api.ts new file mode 100755 index 0000000000..262913be47 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/main/typescript/public-api.ts @@ -0,0 +1,7 @@ +export { + IGethTestLedgerOptions, + GETH_TEST_LEDGER_DEFAULT_OPTIONS, + WHALE_ACCOUNT_PRIVATE_KEY, + WHALE_ACCOUNT_ADDRESS, + GethTestLedger, +} from "./geth-test-ledger"; diff --git a/packages/cactus-test-geth-ledger/src/test/typescript/integration/api-surface.test.ts b/packages/cactus-test-geth-ledger/src/test/typescript/integration/api-surface.test.ts new file mode 100644 index 0000000000..a65ea58247 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/test/typescript/integration/api-surface.test.ts @@ -0,0 +1,5 @@ +import * as apiSurface from "../../../main/typescript/public-api"; + +test("Library can be loaded", async () => { + expect(apiSurface).toBeTruthy(); +}); diff --git a/packages/cactus-test-geth-ledger/src/test/typescript/integration/geth-test-ledger.test.ts b/packages/cactus-test-geth-ledger/src/test/typescript/integration/geth-test-ledger.test.ts new file mode 100644 index 0000000000..9cae4bb245 --- /dev/null +++ b/packages/cactus-test-geth-ledger/src/test/typescript/integration/geth-test-ledger.test.ts @@ -0,0 +1,102 @@ +/** + * Tests of Geth helper typescript setup class. + */ + +////////////////////////////////// +// Constants +////////////////////////////////// + +// Ledger settings +// const containerImageName = "ghcr.io/hyperledger/cactus-geth-all-in-one"; +// const containerImageVersion = "2022-10-18-06770b6c"; +// const useRunningLedger = false; + +// Log settings +const testLogLevel: LogLevelDesc = "info"; + +import { GethTestLedger } from "../../../main/typescript/index"; + +import { + LogLevelDesc, + LoggerProvider, + Logger, +} from "@hyperledger/cactus-common"; +import { pruneDockerAllIfGithubAction } from "@hyperledger/cactus-test-tooling"; + +import "jest-extended"; +import { Web3 } from "web3"; + +// Logger setup +const log: Logger = LoggerProvider.getOrCreate({ + label: "geth-test-ledger.test", + level: testLogLevel, +}); + +/** + * Main test suite + */ +describe("Geth Test Ledger checks", () => { + let ledger: GethTestLedger; + + ////////////////////////////////// + // Environment Setup + ////////////////////////////////// + + beforeAll(async () => { + log.info("Prune Docker..."); + await pruneDockerAllIfGithubAction({ logLevel: testLogLevel }); + + log.info("Start GethTestLedger..."); + ledger = new GethTestLedger({ + emitContainerLogs: true, + logLevel: testLogLevel, + }); + log.debug("Geth image:", ledger.fullContainerImageName); + expect(ledger).toBeTruthy(); + + await ledger.start(); + }); + + afterAll(async () => { + log.info("FINISHING THE TESTS"); + + if (ledger) { + log.info("Stop the fabric ledger..."); + await ledger.stop(); + await ledger.destroy(); + } + + log.info("Prune Docker..."); + await pruneDockerAllIfGithubAction({ logLevel: testLogLevel }); + }); + + ////////////////////////////////// + // Tests + ////////////////////////////////// + + /** + * Check if started container is still healthy. + */ + test("Started container is healthy", async () => { + const status = await ledger.getContainerStatus(); + expect(status).toEndWith("(healthy)"); + }); + + test("web3 can be attached through HTTP endpoint", async () => { + const httpRpcHost = await ledger.getRpcApiHttpHost(); + const httpWeb3 = new Web3(httpRpcHost); + const blockNumber = await httpWeb3.eth.getBlockNumber(); + expect(blockNumber.toString()).toBeTruthy(); + }); + + test("web3 can be attached through WS endpoint", async () => { + const wsRpcHost = await ledger.getRpcApiWebSocketHost(); + const wsWeb3 = new Web3(wsRpcHost); + try { + const blockNumber = await wsWeb3.eth.getBlockNumber(); + expect(blockNumber.toString()).toBeTruthy(); + } finally { + wsWeb3.provider?.disconnect(); + } + }); +}); diff --git a/packages/cactus-test-geth-ledger/tsconfig.json b/packages/cactus-test-geth-ledger/tsconfig.json new file mode 100644 index 0000000000..95cf4429f7 --- /dev/null +++ b/packages/cactus-test-geth-ledger/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/lib/", + "declarationDir": "./dist/lib/", + "rootDir": "./src", + "tsBuildInfoFile": "../../.build-cache/cactus-test-geth-ledger.tsbuildinfo" + }, + "include": [ + "./src" + ], + "references": [ + { + "path": "../cactus-common/tsconfig.json" + }, + { + "path": "../cactus-test-tooling/tsconfig.json" + } + ] +} \ No newline at end of file diff --git a/tools/docker/geth-all-in-one/Dockerfile b/tools/docker/geth-all-in-one/Dockerfile new file mode 100644 index 0000000000..1353e2235a --- /dev/null +++ b/tools/docker/geth-all-in-one/Dockerfile @@ -0,0 +1,44 @@ +FROM ethereum/client-go:v1.12.0 + +# Init +COPY ./src/genesis.json /root/data/ +COPY ./src/keystore/ /root/data/keystore/ +RUN geth --datadir "/root/data" init "/root/data/genesis.json" + +# Setup healtcheck +COPY ./src/healthcheck.sh /bin/healthcheck +RUN chmod +x /bin/healthcheck +HEALTHCHECK --interval=5s --timeout=10s --start-period=10s --retries=30 CMD /bin/healthcheck + +# RPC - HTTP +EXPOSE 8545 +# RPC - WS +EXPOSE 8546 + +VOLUME [ "/root/data" ] + +ENTRYPOINT [ \ + "geth", \ + "--datadir", "/root/data", \ + "--nodiscover", \ + "--http", \ + "--http.addr", "0.0.0.0", \ + "--http.port", "8545", \ + "--http.corsdomain", "*", \ + "--http.vhosts", "*", \ + "--ws", \ + "--ws.addr", "0.0.0.0", \ + "--ws.port", "8546", \ + "--ws.origins", "*", \ + "--unlock", "0x6A2EC8c50BA1a9cE47c52d1cb5B7136Ee9d0cCC0", \ + "--mine", \ + "--password", "/dev/null", \ + "--allow-insecure-unlock", \ + "--miner.etherbase", "0x6A2EC8c50BA1a9cE47c52d1cb5B7136Ee9d0cCC0", \ + "--verbosity", "5" \ + ] +CMD [ \ + "--networkid", "10", \ + "--http.api", "eth,personal,web3,net,admin,debug", \ + "--ws.api", "eth,personal,web3,net,admin,debug" \ + ] \ No newline at end of file diff --git a/tools/docker/geth-all-in-one/README.md b/tools/docker/geth-all-in-one/README.md new file mode 100644 index 0000000000..529c0d209a --- /dev/null +++ b/tools/docker/geth-all-in-one/README.md @@ -0,0 +1,65 @@ +# geth-all-in-one + +An all in one ethereum/client-go (geth) docker image as described in [go-ethereum documentation](https://geth.ethereum.org/docs/fundamentals/private-network). + +- Clique (PoS) is used to mimic mainnet node. +- This docker image is for `testing` and `development` only. +- **Do NOT use in production!** +- Only use provided test account in internal network, don't use it on mainnet / testnets. + +## Usage + +### Docker Compose + +```bash +./script-start-docker.sh +``` + +or manually: + +```bash +docker-compose build && docker-compose up -d +``` + +### Docker + +```bash +# Build +DOCKER_BUILDKIT=1 docker build ./tools/docker/geth-all-in-one/ -t cactus_geth_all_in_one + +# Run +docker run --rm --name geth_aio_testnet --detach -p 8545:8545 -p 8546:8546 cactus_geth_all_in_one +``` + +### Examples + +#### Attach geth CLI + +```bash +docker exec -ti geth_aio_testnet geth --datadir "/root/data" attach + +> eth.blockNumber +24 +``` + +### Configure with Hardhat + +```javascript +module.exports = { + // ... + networks: { + geth: { + url: "http://127.0.0.1:8545", + chainId: 10, + }, + }, +}; +``` + +## Test Setup + +- Use typescript [GethTestLedger helper class](../../../packages/cactus-test-geth-ledger) to start this ledger and use it from inside of automatic test. + +## Possible improvements + +- Replace (deprecated) `eth.personal` with `Clef` - https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-personal diff --git a/tools/docker/geth-all-in-one/docker-compose.yml b/tools/docker/geth-all-in-one/docker-compose.yml new file mode 100644 index 0000000000..75bfb47b3c --- /dev/null +++ b/tools/docker/geth-all-in-one/docker-compose.yml @@ -0,0 +1,22 @@ +version: "3.5" + +services: + geth-aio-testnet: + container_name: ${CACTUS_GETH_LEDGER_CONTAINER_NAME:-geth_aio_testnet} + image: ${CACTUS_GETH_LEDGER_IMAGE_NAME:-cactus_geth_all_in_one:local-build} + build: + context: ./ + dockerfile: Dockerfile + ports: + - 8545:8545/tcp # RPC - HTTP + - 8546:8546/tcp # RPC - WS + expose: + - 8545/tcp # RPC - HTTP + - 8546/tcp # RPC - WS + networks: + - geth-network + +networks: + geth-network: + name: geth_aio_network + driver: bridge diff --git a/tools/docker/geth-all-in-one/script-start-docker.sh b/tools/docker/geth-all-in-one/script-start-docker.sh new file mode 100755 index 0000000000..83156688d0 --- /dev/null +++ b/tools/docker/geth-all-in-one/script-start-docker.sh @@ -0,0 +1,2 @@ +echo "[process] start docker environment for Geth testnet" +docker-compose build && docker-compose up -d diff --git a/tools/docker/geth-all-in-one/src/genesis.json b/tools/docker/geth-all-in-one/src/genesis.json new file mode 100644 index 0000000000..6066c68e57 --- /dev/null +++ b/tools/docker/geth-all-in-one/src/genesis.json @@ -0,0 +1,27 @@ +{ + "config": { + "chainId": 10, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "clique": { + "period": 5, + "epoch": 30000 + } + }, + "difficulty": "1", + "gasLimit": "800000000", + "extradata": "0x00000000000000000000000000000000000000000000000000000000000000006a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "alloc": { + "6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0": { + "balance": "100000000000000000000000000" + } + } +} diff --git a/tools/docker/geth-all-in-one/src/healthcheck.sh b/tools/docker/geth-all-in-one/src/healthcheck.sh new file mode 100644 index 0000000000..1a5b51c260 --- /dev/null +++ b/tools/docker/geth-all-in-one/src/healthcheck.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +function is_valid_block_returned() { + local rpc_endpoint="$1" + local block_number=$(geth attach --exec "eth.blockNumber" "$rpc_endpoint") + if ! echo "$block_number" | grep -Eq '^[0-9]+$'; then + echo "Invalid eth.blockNumber '${block_number}' -> UNHEALTHY" + exit 1 + fi +} + +# Check both HTTP and WS endpoints +is_valid_block_returned "http://localhost:8545" +is_valid_block_returned "ws://localhost:8546" diff --git a/tools/docker/geth-all-in-one/src/keystore/UTC--2023-07-03T14-42-00.153791517Z--6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0 b/tools/docker/geth-all-in-one/src/keystore/UTC--2023-07-03T14-42-00.153791517Z--6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0 new file mode 100644 index 0000000000..2d6576bd78 --- /dev/null +++ b/tools/docker/geth-all-in-one/src/keystore/UTC--2023-07-03T14-42-00.153791517Z--6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0 @@ -0,0 +1 @@ +{"address":"6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0","crypto":{"cipher":"aes-128-ctr","ciphertext":"2b0ea1bbdd3aa8ae3205de9428a2327e73a3fb301ea7eb36cc3b588879e15983","cipherparams":{"iv":"fbcaccd21ec623ab283aa2506055cff2"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"a686699704e7f43cf2ca2421dc026a03e6532d97ab129d66f20faf1439456097"},"mac":"186797fe2b904d2d0ed9f2d839af14785326ef31c4277d6c668c7a4d3431be60"},"id":"a2cd2edd-813d-49e5-b84d-3c18b6e2524f","version":3} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index e34b210a73..a323665bc1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -91,6 +91,9 @@ { "path": "./packages/cactus-test-cmd-api-server/tsconfig.json" }, + { + "path": "./packages/cactus-test-geth-ledger/tsconfig.json" + }, { "path": "./packages/cactus-test-plugin-consortium-manual/tsconfig.json" }, diff --git a/yarn.lock b/yarn.lock index b8f9128e52..356c4e9a4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:^1.8.8": + version: 1.9.2 + resolution: "@adraffy/ens-normalize@npm:1.9.2" + checksum: a9fdeb9e080774c19e4b7f9f60aa5b37cf23fe0e8fe80284bf8221f7396e9f78642bfd39a09a94a4dc3fb8e70f2ac81545204bdcaf222d93f4c4c2ae1f0dca0b + languageName: node + linkType: hard + "@ampproject/remapping@npm:2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" @@ -813,7 +820,7 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.1, @babel/compat-data@npm:^7.22.5": +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.22.5": version: 7.22.5 resolution: "@babel/compat-data@npm:7.22.5" checksum: eb1a47ebf79ae268b4a16903e977be52629339806e248455eb9973897c503a04b701f36a9de64e19750d6e081d0561e77a514c8dc470babbeba59ae94298ed18 @@ -827,6 +834,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.20.1, @babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.21.4": version: 7.21.4 resolution: "@babel/compat-data@npm:7.21.4" @@ -841,13 +855,6 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 - languageName: node - linkType: hard - "@babel/core@npm:7.19.3": version: 7.19.3 resolution: "@babel/core@npm:7.19.3" @@ -1021,7 +1028,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.18.7, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9": +"@babel/generator@npm:^7.18.7, @babel/generator@npm:^7.19.3, @babel/generator@npm:^7.20.7, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9": version: 7.22.9 resolution: "@babel/generator@npm:7.22.9" dependencies: @@ -1044,18 +1051,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.19.3, @babel/generator@npm:^7.20.7, @babel/generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/generator@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: efa64da70ca88fe69f05520cf5feed6eba6d30a85d32237671488cc355fdc379fe2c3246382a861d49574c4c2f82a317584f8811e95eb024e365faff3232b49d - languageName: node - linkType: hard - "@babel/generator@npm:^7.21.4": version: 7.21.4 resolution: "@babel/generator@npm:7.21.4" @@ -1080,6 +1075,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/generator@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: efa64da70ca88fe69f05520cf5feed6eba6d30a85d32237671488cc355fdc379fe2c3246382a861d49574c4c2f82a317584f8811e95eb024e365faff3232b49d + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:7.18.6, @babel/helper-annotate-as-pure@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" @@ -1130,7 +1137,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.19.3, @babel/helper-compilation-targets@npm:^7.20.0, @babel/helper-compilation-targets@npm:^7.22.5": +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-compilation-targets@npm:7.22.5" dependencies: @@ -1159,6 +1166,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.19.3, @babel/helper-compilation-targets@npm:^7.20.0, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.5 + browserslist: ^4.21.9 + lru-cache: ^5.1.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: ea0006c6a93759025f4a35a25228ae260538c9f15023e8aac2a6d45ca68aef4cf86cfc429b19af9a402cbdd54d5de74ad3fbcf6baa7e48184dc079f1a791e178 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.20.7": version: 7.21.4 resolution: "@babel/helper-compilation-targets@npm:7.21.4" @@ -1189,21 +1211,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-compilation-targets@npm:7.22.9" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: ea0006c6a93759025f4a35a25228ae260538c9f15023e8aac2a6d45ca68aef4cf86cfc429b19af9a402cbdd54d5de74ad3fbcf6baa7e48184dc079f1a791e178 - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.18.6": version: 7.22.5 resolution: "@babel/helper-create-class-features-plugin@npm:7.22.5" @@ -1514,19 +1521,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.19.0, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-transforms@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.19.0, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: "@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.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/helper-validator-identifier": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 8985dc0d971fd17c467e8b84fe0f50f3dd8610e33b6c86e5b3ca8e8859f9448bcc5c84e08a2a14285ef388351c0484797081c8f05a03770bf44fc27bf4900e68 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 languageName: node linkType: hard @@ -1546,18 +1552,19 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" +"@babel/helper-module-transforms@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-module-transforms@npm:7.22.5" dependencies: "@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-split-export-declaration": ^7.22.5 "@babel/helper-validator-identifier": ^7.22.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 + "@babel/template": ^7.22.5 + "@babel/traverse": ^7.22.5 + "@babel/types": ^7.22.5 + checksum: 8985dc0d971fd17c467e8b84fe0f50f3dd8610e33b6c86e5b3ca8e8859f9448bcc5c84e08a2a14285ef388351c0484797081c8f05a03770bf44fc27bf4900e68 languageName: node linkType: hard @@ -1865,14 +1872,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.19.0, @babel/helpers@npm:^7.20.7": - version: 7.22.5 - resolution: "@babel/helpers@npm:7.22.5" +"@babel/helpers@npm:^7.19.0, @babel/helpers@npm:^7.20.7, @babel/helpers@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helpers@npm:7.22.6" dependencies: "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 + "@babel/traverse": ^7.22.6 "@babel/types": ^7.22.5 - checksum: a96e785029dff72f171190943df895ab0f76e17bf3881efd630bc5fae91215042d1c2e9ed730e8e4adf4da6f28b24bd1f54ed93b90ffbca34c197351872a084e + checksum: 5c1f33241fe7bf7709868c2105134a0a86dca26a0fbd508af10a89312b1f77ca38ebae43e50be3b208613c5eacca1559618af4ca236f0abc55d294800faeff30 languageName: node linkType: hard @@ -1887,17 +1894,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helpers@npm:7.22.6" - dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.6 - "@babel/types": ^7.22.5 - checksum: 5c1f33241fe7bf7709868c2105134a0a86dca26a0fbd508af10a89312b1f77ca38ebae43e50be3b208613c5eacca1559618af4ca236f0abc55d294800faeff30 - languageName: node - linkType: hard - "@babel/highlight@npm:7.0.0-beta.51": version: 7.0.0-beta.51 resolution: "@babel/highlight@npm:7.0.0-beta.51" @@ -1978,12 +1974,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.19.3, @babel/parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/parser@npm:7.22.5" +"@babel/parser@npm:^7.19.3, @babel/parser@npm:^7.22.7": + version: 7.22.7 + resolution: "@babel/parser@npm:7.22.7" bin: parser: ./bin/babel-parser.js - checksum: 470ebba516417ce8683b36e2eddd56dcfecb32c54b9bb507e28eb76b30d1c3e618fd0cfeee1f64d8357c2254514e1a19e32885cfb4e73149f4ae875436a6d59c + checksum: 02209ddbd445831ee8bf966fdf7c29d189ed4b14343a68eb2479d940e7e3846340d7cc6bd654a5f3d87d19dc84f49f50a58cf9363bee249dc5409ff3ba3dab54 languageName: node linkType: hard @@ -2005,12 +2001,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.22.7": - version: 7.22.7 - resolution: "@babel/parser@npm:7.22.7" +"@babel/parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/parser@npm:7.22.5" bin: parser: ./bin/babel-parser.js - checksum: 02209ddbd445831ee8bf966fdf7c29d189ed4b14343a68eb2479d940e7e3846340d7cc6bd654a5f3d87d19dc84f49f50a58cf9363bee249dc5409ff3ba3dab54 + checksum: 470ebba516417ce8683b36e2eddd56dcfecb32c54b9bb507e28eb76b30d1c3e618fd0cfeee1f64d8357c2254514e1a19e32885cfb4e73149f4ae875436a6d59c languageName: node linkType: hard @@ -2556,21 +2552,21 @@ __metadata: linkType: hard "@babel/plugin-transform-classes@npm:^7.20.2": - version: 7.22.5 - resolution: "@babel/plugin-transform-classes@npm:7.22.5" + version: 7.22.6 + resolution: "@babel/plugin-transform-classes@npm:7.22.6" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.5 + "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-function-name": ^7.22.5 "@babel/helper-optimise-call-expression": ^7.22.5 "@babel/helper-plugin-utils": ^7.22.5 "@babel/helper-replace-supers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 124b1b79180524cc9d08155cecde92c7f2ab0db02cbe0f8befa187ef3c7320909ce1a6d6daf5ce73e8330f9b40cf9991f424c6e572b8dddc1f14e2758fa80d20 + checksum: 8380e855c01033dbc7460d9acfbc1fc37c880350fa798c2de8c594ef818ade0e4c96173ec72f05f2a4549d8d37135e18cb62548352d51557b45a0fb4388d2f3f languageName: node linkType: hard @@ -3132,20 +3128,20 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.15.4": - version: 7.20.6 - resolution: "@babel/runtime@npm:7.20.6" + version: 7.22.6 + resolution: "@babel/runtime@npm:7.22.6" dependencies: regenerator-runtime: ^0.13.11 - checksum: 42a8504db21031b1859fbc0f52d698a3d2f5ada9519eb76c6f96a7e657d8d555732a18fe71ef428a67cc9fc81ca0d3562fb7afdc70549c5fec343190cbaa9b03 + checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 languageName: node linkType: hard "@babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.9.2": - version: 7.22.6 - resolution: "@babel/runtime@npm:7.22.6" + version: 7.21.5 + resolution: "@babel/runtime@npm:7.21.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: e585338287c4514a713babf4fdb8fc2a67adcebab3e7723a739fc62c79cfda875b314c90fd25f827afb150d781af97bc16c85bfdbfa2889f06053879a1ddb597 + checksum: 358f2779d3187f5c67ad302e8f8d435412925d0b991d133c7d4a7b1ddd5a3fda1b6f34537cb64628dfd96a27ae46df105bed3895b8d754b88cacdded8d1129dd languageName: node linkType: hard @@ -3170,7 +3166,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:7.20.7": +"@babel/template@npm:7.20.7, @babel/template@npm:^7.20.7, @babel/template@npm:^7.4.0": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: @@ -3192,7 +3188,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.5, @babel/template@npm:^7.4.0": +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.22.5": version: 7.22.5 resolution: "@babel/template@npm:7.22.5" dependencies: @@ -3286,21 +3282,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/traverse@npm:7.22.5" +"@babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": + version: 7.22.8 + resolution: "@babel/traverse@npm:7.22.8" dependencies: "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.5 + "@babel/generator": ^7.22.7 "@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.5 - "@babel/parser": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.22.7 "@babel/types": ^7.22.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: 560931422dc1761f2df723778dcb4e51ce0d02e560cf2caa49822921578f49189a5a7d053b78a32dca33e59be886a6b2200a6e24d4ae9b5086ca0ba803815694 + checksum: a381369bc3eedfd13ed5fef7b884657f1c29024ea7388198149f0edc34bd69ce3966e9f40188d15f56490a5e12ba250ccc485f2882b53d41b054fccefb233e33 languageName: node linkType: hard @@ -3322,21 +3318,21 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": - version: 7.22.8 - resolution: "@babel/traverse@npm:7.22.8" +"@babel/traverse@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/traverse@npm:7.22.5" dependencies: "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 + "@babel/generator": ^7.22.5 "@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.7 + "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/parser": ^7.22.5 "@babel/types": ^7.22.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: a381369bc3eedfd13ed5fef7b884657f1c29024ea7388198149f0edc34bd69ce3966e9f40188d15f56490a5e12ba250ccc485f2882b53d41b054fccefb233e33 + checksum: 560931422dc1761f2df723778dcb4e51ce0d02e560cf2caa49822921578f49189a5a7d053b78a32dca33e59be886a6b2200a6e24d4ae9b5086ca0ba803815694 languageName: node linkType: hard @@ -4294,9 +4290,9 @@ __metadata: linkType: hard "@eslint-community/regexpp@npm:^4.5.0": - version: 4.5.1 - resolution: "@eslint-community/regexpp@npm:4.5.1" - checksum: 6d901166d64998d591fab4db1c2f872981ccd5f6fe066a1ad0a93d4e11855ecae6bfb76660869a469563e8882d4307228cebd41142adb409d182f2966771e57e + version: 4.6.1 + resolution: "@eslint-community/regexpp@npm:4.6.1" + checksum: 5741f457f5cc4ec89389d185c44c511fc85ef3630c6ce033a64c779e72f7aa3a7d5bcdc45d54612989f0dc6ea958438c02d363797b3e4f87952fc6878481da0e languageName: node linkType: hard @@ -4357,6 +4353,15 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/rlp@npm:^4.0.1": + version: 4.0.1 + resolution: "@ethereumjs/rlp@npm:4.0.1" + bin: + rlp: bin/rlp + checksum: 30db19c78faa2b6ff27275ab767646929207bb207f903f09eb3e4c273ce2738b45f3c82169ddacd67468b4f063d8d96035f2bf36f02b6b7e4d928eefe2e3ecbc + languageName: node + linkType: hard + "@ethereumjs/tx@npm:3.3.2": version: 3.3.2 resolution: "@ethereumjs/tx@npm:3.3.2" @@ -5199,7 +5204,7 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.1.1, @grpc/grpc-js@npm:^1.1.3, @grpc/grpc-js@npm:^1.3.4": +"@grpc/grpc-js@npm:^1.1.1, @grpc/grpc-js@npm:^1.1.3": version: 1.8.14 resolution: "@grpc/grpc-js@npm:1.8.14" dependencies: @@ -5209,7 +5214,7 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:~1.5.0": +"@grpc/grpc-js@npm:^1.3.4, @grpc/grpc-js@npm:~1.5.0": version: 1.5.7 resolution: "@grpc/grpc-js@npm:1.5.7" dependencies: @@ -5254,7 +5259,22 @@ __metadata: languageName: node linkType: hard -"@grpc/proto-loader@npm:^0.6.1, @grpc/proto-loader@npm:^0.6.10, @grpc/proto-loader@npm:^0.6.13, @grpc/proto-loader@npm:^0.6.2, @grpc/proto-loader@npm:^0.6.4": +"@grpc/proto-loader@npm:^0.6.1, @grpc/proto-loader@npm:^0.6.2, @grpc/proto-loader@npm:^0.6.4": + version: 0.6.9 + resolution: "@grpc/proto-loader@npm:0.6.9" + dependencies: + "@types/long": ^4.0.1 + lodash.camelcase: ^4.3.0 + long: ^4.0.0 + protobufjs: ^6.10.0 + yargs: ^16.2.0 + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 30081a5a6e866506d8e799ebed00367024a2710b9b990104d804fe23c60d81d5ccaa74ad14bd0bedfab6fb313eccbc18e0bbcf3bda7f3288d8eb31cab040255f + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.6.10, @grpc/proto-loader@npm:^0.6.13": version: 0.6.13 resolution: "@grpc/proto-loader@npm:0.6.13" dependencies: @@ -6838,6 +6858,21 @@ __metadata: languageName: unknown linkType: soft +"@hyperledger/cactus-test-geth-ledger@workspace:packages/cactus-test-geth-ledger": + version: 0.0.0-use.local + resolution: "@hyperledger/cactus-test-geth-ledger@workspace:packages/cactus-test-geth-ledger" + dependencies: + "@hyperledger/cactus-common": 2.0.0-alpha.1 + "@hyperledger/cactus-test-tooling": 2.0.0-alpha.1 + "@types/dockerode": 3.2.7 + dockerode: 3.3.0 + internal-ip: 6.2.0 + run-time-error: 1.4.0 + web3: 4.0.3 + web3-eth-accounts: 4.0.3 + languageName: unknown + linkType: soft + "@hyperledger/cactus-test-plugin-consortium-manual@workspace:packages/cactus-test-plugin-consortium-manual": version: 0.0.0-use.local resolution: "@hyperledger/cactus-test-plugin-consortium-manual@workspace:packages/cactus-test-plugin-consortium-manual" @@ -9615,9 +9650,9 @@ __metadata: linkType: hard "@sindresorhus/is@npm:^5.2.0": - version: 5.5.2 - resolution: "@sindresorhus/is@npm:5.5.2" - checksum: 609a38ed040ed4c13560862aa0fcc67452bea6928edc60600cd78fb84f2f6e335148e0a8b2ca27ba70fabb102c1fbeab860579b24a505b7ab71ba900ac8642c6 + version: 5.6.0 + resolution: "@sindresorhus/is@npm:5.6.0" + checksum: 2e6e0c3acf188dcd9aea0f324ac1b6ad04c9fc672392a7b5a1218512fcde066965797eba8b9fe2108657a504388bd4a6664e6e6602555168e828a6df08b9f10e languageName: node linkType: hard @@ -11102,13 +11137,20 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^12.12.54, @types/node@npm:^12.12.6, @types/node@npm:^12.7.11": +"@types/node@npm:^12.12.54, @types/node@npm:^12.7.11": version: 12.20.55 resolution: "@types/node@npm:12.20.55" checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 languageName: node linkType: hard +"@types/node@npm:^12.12.6": + version: 12.20.46 + resolution: "@types/node@npm:12.20.46" + checksum: 5326c3b5a576e041e522670d642aa17f92d833fa33ff6a6619d7d9fbac54c6a29f329905a7ccd7642a3aac79c80f9cc6887f45e2afa2c24dcf81269c296121a8 + languageName: node + linkType: hard + "@types/node@npm:^14.0.14": version: 14.18.46 resolution: "@types/node@npm:14.18.46" @@ -11539,6 +11581,15 @@ __metadata: languageName: node linkType: hard +"@types/ws@npm:^8.5.3": + version: 8.5.5 + resolution: "@types/ws@npm:8.5.5" + dependencies: + "@types/node": "*" + checksum: d00bf8070e6938e3ccf933010921c6ce78ac3606696ce37a393b27a9a603f7bd93ea64f3c5fa295a2f743575ba9c9a9fdb904af0f5fe2229bf2adf0630386e4a + languageName: node + linkType: hard + "@types/xml2js@npm:0.4.9": version: 0.4.9 resolution: "@types/xml2js@npm:0.4.9" @@ -13105,7 +13156,20 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.3, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.3": + version: 3.1.4 + resolution: "array-includes@npm:3.1.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.1 + get-intrinsic: ^1.1.1 + is-string: ^1.0.7 + checksum: 69967c38c52698f84b50a7aed5554aadc89c6ac6399b6d92ad061a5952f8423b4bba054c51d40963f791dfa294d7247cdd7988b6b1f2c5861477031c6386e1c0 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -13165,7 +13229,18 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.4, array.prototype.flat@npm:^1.3.1": +"array.prototype.flat@npm:^1.2.4": + version: 1.2.5 + resolution: "array.prototype.flat@npm:1.2.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.0 + checksum: 9cc6414b111abfc7717e39546e4887b1e5ec74df8f1618d83425deaa95752bf05d475d1d241253b4d88d4a01f8e1bc84845ad5b7cc2047f8db2f614512acd40e + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flat@npm:1.3.1" dependencies: @@ -13595,12 +13670,12 @@ __metadata: linkType: hard "axios-retry@npm:^3.1.9": - version: 3.3.1 - resolution: "axios-retry@npm:3.3.1" + version: 3.5.1 + resolution: "axios-retry@npm:3.5.1" dependencies: "@babel/runtime": ^7.15.4 is-retry-allowed: ^2.2.0 - checksum: 125c75e08048a28de5d0dfa9de9a1924185d863a4323a71472646a1d5a326f727ff59e75e1b557220da1aad7cba01222c47c26194c5940f295378668dd3b9163 + checksum: ff1690a635c74b45a0ff60b2608d36bae82ea23660a2571dea918c79242fd88cc0332ba9757810bfac398c947a950299078cef2bc2b08807c27c6ffe069aad4a languageName: node linkType: hard @@ -14920,7 +14995,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:4.21.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": +"browserslist@npm:4.21.5, browserslist@npm:^4.21.3": version: 4.21.5 resolution: "browserslist@npm:4.21.5" dependencies: @@ -15575,17 +15650,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001373": - version: 1.0.30001516 - resolution: "caniuse-lite@npm:1.0.30001516" - checksum: 044adf3493b734a356a2922445a30095a0f6de6b9194695cdf74deafe7bef658e85858a31177762c2813f6e1ed2722d832d59eee0ecb2151e93a611ee18cb21f - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001426, caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001510 - resolution: "caniuse-lite@npm:1.0.30001510" - checksum: 4b5237c85760a8aea0d003eb329e84f66d00665e36a92f6b3795bd436ac590f67f304aa978111ca480913c893b8b37d806425d615853637b2b760db868d80041 +"caniuse-lite@npm:^1.0.30001373, caniuse-lite@npm:^1.0.30001426, caniuse-lite@npm:^1.0.30001503": + version: 1.0.30001517 + resolution: "caniuse-lite@npm:1.0.30001517" + checksum: e4e87436ae1c4408cf4438aac22902b31eb03f3f5bad7f33bc518d12ffb35f3fd9395ccf7efc608ee046f90ce324ec6f7f26f8a8172b8c43c26a06ecee612a29 languageName: node linkType: hard @@ -15606,9 +15674,9 @@ __metadata: linkType: hard "capture-stack-trace@npm:^1.0.0": - version: 1.0.2 - resolution: "capture-stack-trace@npm:1.0.2" - checksum: 13295e8176e8de74bcbe0e4fd938bed9eb4204b4cc200210ff46df91cb20b69e86f6ef42f408a59454f8b62e567ef0ee6ee5b5e7e16e686668bc77f2741542b4 + version: 1.0.1 + resolution: "capture-stack-trace@npm:1.0.1" + checksum: 493668211de1307009589aeba5c382dc8b1011a41ca02f033b5f5a489ee174323a4b31d5afdc4bd48f64e1dd23b2521ddda4dbdcd382767e140f94b555f8f332 languageName: node linkType: hard @@ -15823,32 +15891,31 @@ __metadata: languageName: node linkType: hard -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" +"cheerio-select@npm:^1.5.0": + version: 1.5.0 + resolution: "cheerio-select@npm:1.5.0" dependencies: - boolbase: ^1.0.0 - css-select: ^5.1.0 - css-what: ^6.1.0 - domelementtype: ^2.3.0 - domhandler: ^5.0.3 - domutils: ^3.0.1 - checksum: 843d6d479922f28a6c5342c935aff1347491156814de63c585a6eb73baf7bb4185c1b4383a1195dca0f12e3946d737c7763bcef0b9544c515d905c5c44c5308b + css-select: ^4.1.3 + css-what: ^5.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + domutils: ^2.7.0 + checksum: d4506d8b9ad330a18f9de3a5a22138d0804063e92aac2fc020384cc52ab86d2194d2ae614fc87f0e2a62b6a6dd0c28ad23669cec64331172a9f99ad604863010 languageName: node linkType: hard "cheerio@npm:^1.0.0-rc.2": - version: 1.0.0-rc.12 - resolution: "cheerio@npm:1.0.0-rc.12" + version: 1.0.0-rc.10 + resolution: "cheerio@npm:1.0.0-rc.10" dependencies: - cheerio-select: ^2.1.0 - dom-serializer: ^2.0.0 - domhandler: ^5.0.3 - domutils: ^3.0.1 - htmlparser2: ^8.0.1 - parse5: ^7.0.0 - parse5-htmlparser2-tree-adapter: ^7.0.0 - checksum: 5d4c1b7a53cf22d3a2eddc0aff70cf23cbb30d01a4c79013e703a012475c02461aa1fcd99127e8d83a02216386ed6942b2c8103845fd0812300dd199e6e7e054 + cheerio-select: ^1.5.0 + dom-serializer: ^1.3.2 + domhandler: ^4.2.0 + htmlparser2: ^6.1.0 + parse5: ^6.0.1 + parse5-htmlparser2-tree-adapter: ^6.0.1 + tslib: ^2.2.0 + checksum: ace2f9c5809737534b1320d11d48762013694fa905b4deacac81a634edac178c1b0534f79d7b1896a88ce489db6cb539f222317996b21c8b6923ce413dcc1a2f languageName: node linkType: hard @@ -17125,11 +17192,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.25.1": - version: 3.31.0 - resolution: "core-js-compat@npm:3.31.0" + version: 3.31.1 + resolution: "core-js-compat@npm:3.31.1" dependencies: - browserslist: ^4.21.5 - checksum: 5c76ac5e4ab39480391f93a5aef14a2cfa188cda7bd6a7b8532de1f8bc5d89099a5025b2640d2ef70a2928614792363dcbcf8bd254aa7b2e11b85aeed7ac460f + browserslist: ^4.21.9 + checksum: 9a16d6992621f4e099169297381a28d5712cdef7df1fa85352a7c285a5885d5d7a117ec2eae9ad715ed88c7cc774787a22cdb8aceababf6775fbc8b0cbeccdb7 languageName: node linkType: hard @@ -17251,6 +17318,15 @@ __metadata: languageName: node linkType: hard +"crc-32@npm:^1.2.2": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 + languageName: node + linkType: hard + "create-ecdh@npm:^4.0.0": version: 4.0.4 resolution: "create-ecdh@npm:4.0.4" @@ -17553,29 +17629,29 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^4.2.0": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" +"css-select@npm:^4.1.3": + version: 4.2.1 + resolution: "css-select@npm:4.2.1" dependencies: boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 + css-what: ^5.1.0 + domhandler: ^4.3.0 domutils: ^2.8.0 nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + checksum: 6617193ec7c332217204c4ea371d332c6845603fda415e36032e7e9e18206d7c368a14e3c57532082314d2689955b01122aa1097c1c52b6c1cab7ad90970d3c6 languageName: node linkType: hard -"css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" +"css-select@npm:^4.2.0": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" dependencies: boolbase: ^1.0.0 - css-what: ^6.1.0 - domhandler: ^5.0.2 - domutils: ^3.0.1 + css-what: ^6.0.1 + domhandler: ^4.3.1 + domutils: ^2.8.0 nth-check: ^2.0.1 - checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda + checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 languageName: node linkType: hard @@ -17589,7 +17665,14 @@ __metadata: languageName: node linkType: hard -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": +"css-what@npm:^5.0.1, css-what@npm:^5.1.0": + version: 5.1.0 + resolution: "css-what@npm:5.1.0" + checksum: 0b75d1bac95c885c168573c85744a6c6843d8c33345f54f717218b37ea6296b0e99bb12105930ea170fd4a921990392a7c790c16c585c1d8960c49e2b7ec39f7 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1": version: 6.1.0 resolution: "css-what@npm:6.1.0" checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe @@ -18521,7 +18604,7 @@ __metadata: languageName: node linkType: hard -"dom-serializer@npm:^1.0.1": +"dom-serializer@npm:^1.0.1, dom-serializer@npm:^1.3.2": version: 1.3.2 resolution: "dom-serializer@npm:1.3.2" dependencies: @@ -18580,7 +18663,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.0": version: 4.3.0 resolution: "domhandler@npm:4.3.0" dependencies: @@ -18598,7 +18681,7 @@ __metadata: languageName: node linkType: hard -"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" dependencies: @@ -18607,7 +18690,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": +"domutils@npm:^2.5.2, domutils@npm:^2.7.0, domutils@npm:^2.8.0": version: 2.8.0 resolution: "domutils@npm:2.8.0" dependencies: @@ -18619,13 +18702,13 @@ __metadata: linkType: hard "domutils@npm:^3.0.1": - version: 3.0.1 - resolution: "domutils@npm:3.0.1" + version: 3.1.0 + resolution: "domutils@npm:3.1.0" dependencies: dom-serializer: ^2.0.0 domelementtype: ^2.3.0 - domhandler: ^5.0.1 - checksum: 23aa7a840572d395220e173cb6263b0d028596e3950100520870a125af33ff819e6f609e1606d6f7d73bd9e7feb03bb404286e57a39063b5384c62b724d987b3 + domhandler: ^5.0.3 + checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 languageName: node linkType: hard @@ -18846,9 +18929,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.431": - version: 1.4.447 - resolution: "electron-to-chromium@npm:1.4.447" - checksum: 2771bed3f43d8e93bfcedac7b85af11942a5b7af57ebc50bb26b034dafd9e99c040f6168b21f5694ef6348d5056bbc0dca87862a7d3f20864af40db87f7c319e + version: 1.4.470 + resolution: "electron-to-chromium@npm:1.4.470" + checksum: 0b1749f07b5e97b9d8f805cac6950574017cf2cf19a05cbc3dc46e7397be1d51485a5ece69478e7b12766f4643f45530b6bcebefa8916096a50f6a38dca381ca languageName: node linkType: hard @@ -18990,8 +19073,8 @@ __metadata: linkType: hard "engine.io-client@npm:~3.5.0": - version: 3.5.3 - resolution: "engine.io-client@npm:3.5.3" + version: 3.5.2 + resolution: "engine.io-client@npm:3.5.2" dependencies: component-emitter: ~1.3.0 component-inherit: 0.0.3 @@ -19004,7 +19087,7 @@ __metadata: ws: ~7.4.2 xmlhttprequest-ssl: ~1.6.2 yeast: 0.1.2 - checksum: 2732f3e9dc331f429b45cc8f4bafea6a1b6032cf57a25e4bc850de4f5d664a482e03f8a6edacc02dd513a39f7fe08dfcc3208e02b29848c45fa1b377f8d0aaa4 + checksum: 2a4a8407ea939c45826d3483e39fe017e66d488dfd101282a79644f75196f7b84cac9d6f981e3ace1ab231e2469c18b25d79b114f20ab58d0eaa393bf66f213e languageName: node linkType: hard @@ -19113,9 +19196,9 @@ __metadata: linkType: hard "entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 languageName: node linkType: hard @@ -19815,7 +19898,17 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.5, eslint-import-resolver-node@npm:^0.3.7": +"eslint-import-resolver-node@npm:^0.3.5": + version: 0.3.6 + resolution: "eslint-import-resolver-node@npm:0.3.6" + dependencies: + debug: ^3.2.7 + resolve: ^1.20.0 + checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.7": version: 0.3.7 resolution: "eslint-import-resolver-node@npm:0.3.7" dependencies: @@ -19826,7 +19919,17 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.6.2, eslint-module-utils@npm:^2.7.4": +"eslint-module-utils@npm:^2.6.2": + version: 2.7.3 + resolution: "eslint-module-utils@npm:2.7.3" + dependencies: + debug: ^3.2.7 + find-up: ^2.1.0 + checksum: 77048263f309167a1e6a1e1b896bfb5ddd1d3859b2e2abbd9c32c432aee13d610d46e6820b1ca81b37fba437cf423a404bc6649be64ace9148a3062d1886a678 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.7.4": version: 2.8.0 resolution: "eslint-module-utils@npm:2.8.0" dependencies: @@ -20395,14 +20498,14 @@ __metadata: linkType: hard "ethereum-cryptography@npm:^2.0.0": - version: 2.1.2 - resolution: "ethereum-cryptography@npm:2.1.2" + version: 2.1.0 + resolution: "ethereum-cryptography@npm:2.1.0" dependencies: "@noble/curves": 1.1.0 "@noble/hashes": 1.3.1 "@scure/bip32": 1.3.1 "@scure/bip39": 1.2.1 - checksum: 2e8f7b8cc90232ae838ab6a8167708e8362621404d26e79b5d9e762c7b53d699f7520aff358d9254de658fcd54d2d0af168ff909943259ed27dc4cef2736410c + checksum: 47bd69103f0553e5c98e0645c295ca74e0da53a92b8d26237287f528521cd2aa13d5cd1e288c36e59ce885451199cef8e4de424a93c45bacf54a06bdd09946a4 languageName: node linkType: hard @@ -23378,8 +23481,8 @@ gluegun@latest: linkType: hard "got@npm:^11.8.2": - version: 11.8.6 - resolution: "got@npm:11.8.6" + version: 11.8.3 + resolution: "got@npm:11.8.3" dependencies: "@sindresorhus/is": ^4.0.0 "@szmarczak/http-timer": ^4.0.5 @@ -23392,7 +23495,7 @@ gluegun@latest: lowercase-keys: ^2.0.0 p-cancelable: ^2.0.0 responselike: ^2.0.0 - checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d + checksum: 3b6db107d9765470b18e4cb22f7c7400381be7425b9be5823f0168d6c21b5d6b28b023c0b3ee208f73f6638c3ce251948ca9b54a1e8f936d3691139ac202d01b languageName: node linkType: hard @@ -24121,7 +24224,7 @@ gluegun@latest: languageName: node linkType: hard -"htmlparser2@npm:^6.0.0": +"htmlparser2@npm:^6.0.0, htmlparser2@npm:^6.1.0": version: 6.1.0 resolution: "htmlparser2@npm:6.1.0" dependencies: @@ -24145,26 +24248,7 @@ gluegun@latest: languageName: node linkType: hard -"htmlparser2@npm:^8.0.1": - version: 8.0.1 - resolution: "htmlparser2@npm:8.0.1" - dependencies: - domelementtype: ^2.3.0 - domhandler: ^5.0.2 - domutils: ^3.0.1 - entities: ^4.3.0 - checksum: 06d5c71e8313597722bc429ae2a7a8333d77bd3ab07ccb916628384b37332027b047f8619448d8f4a3312b6609c6ea3302a4e77435d859e9e686999e6699ca39 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 @@ -25293,21 +25377,21 @@ gluegun@latest: languageName: node linkType: hard -"is-core-module@npm:^2.4.0, is-core-module@npm:^2.9.0": - version: 2.12.1 - resolution: "is-core-module@npm:2.12.1" +"is-core-module@npm:^2.4.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": + version: 2.8.1 + resolution: "is-core-module@npm:2.8.1" dependencies: has: ^1.0.3 - checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 + checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f languageName: node linkType: hard -"is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" +"is-core-module@npm:^2.9.0": + version: 2.12.1 + resolution: "is-core-module@npm:2.12.1" dependencies: has: ^1.0.3 - checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f + checksum: f04ea30533b5e62764e7b2e049d3157dc0abd95ef44275b32489ea2081176ac9746ffb1cdb107445cf1ff0e0dfcad522726ca27c27ece64dadf3795428b8e468 languageName: node linkType: hard @@ -26136,6 +26220,15 @@ gluegun@latest: languageName: node linkType: hard +"isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 + languageName: node + linkType: hard + "isstream@npm:0.1.x, isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -28255,6 +28348,17 @@ gluegun@latest: languageName: node linkType: hard +"json5@npm:^1.0.1": + version: 1.0.1 + resolution: "json5@npm:1.0.1" + dependencies: + minimist: ^1.2.0 + bin: + json5: lib/cli.js + checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 + languageName: node + linkType: hard + "json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" @@ -30389,11 +30493,11 @@ gluegun@latest: linkType: hard "memfs@npm:^3.4.12": - version: 3.6.0 - resolution: "memfs@npm:3.6.0" + version: 3.5.3 + resolution: "memfs@npm:3.5.3" dependencies: fs-monkey: ^1.0.4 - checksum: 934e79f32aabb10869056815bf369ed63aacb61d13183a3a3826847bbb359d7023fd5b365984ddd73faed463bbb5370ed5cd1e87ecf50ac010c5cac81929ed78 + checksum: 18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 languageName: node linkType: hard @@ -31151,13 +31255,20 @@ gluegun@latest: languageName: node linkType: hard -"moment@npm:2.29.4, moment@npm:^2.22.1": +"moment@npm:2.29.4": version: 2.29.4 resolution: "moment@npm:2.29.4" checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e languageName: node linkType: hard +"moment@npm:^2.22.1": + version: 2.29.2 + resolution: "moment@npm:2.29.2" + checksum: ee850b5776485e2af0775ceb3cfebaa7d7638f0a750fe0678fcae24c310749f96c1938808384bd422a55e5703834a71fcb09c8a1d36d9cf847f6ed0205d7a3e5 + languageName: node + linkType: hard + "morgan@npm:1.10.0": version: 1.10.0 resolution: "morgan@npm:1.10.0" @@ -32103,9 +32214,9 @@ gluegun@latest: linkType: hard "node-releases@npm:^2.0.12": - version: 2.0.12 - resolution: "node-releases@npm:2.0.12" - checksum: b8c56db82c4642a0f443332b331a4396dae452a2ac5a65c8dbd93ef89ecb2fbb0da9d42ac5366d4764973febadca816cf7587dad492dce18d2a6b2af59cda260 + version: 2.0.13 + resolution: "node-releases@npm:2.0.13" + checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 languageName: node linkType: hard @@ -32827,7 +32938,18 @@ gluegun@latest: languageName: node linkType: hard -"object.values@npm:^1.1.3, object.values@npm:^1.1.6": +"object.values@npm:^1.1.3": + version: 1.1.5 + resolution: "object.values@npm:1.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.1 + checksum: 0f17e99741ebfbd0fa55ce942f6184743d3070c61bd39221afc929c8422c4907618c8da694c6915bc04a83ab3224260c779ba37fc07bb668bdc5f33b66a902a4 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6": version: 1.1.6 resolution: "object.values@npm:1.1.6" dependencies: @@ -33728,16 +33850,6 @@ gluegun@latest: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.0.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" - dependencies: - domhandler: ^5.0.2 - parse5: ^7.0.0 - checksum: fc5d01e07733142a1baf81de5c2a9c41426c04b7ab29dd218acb80cd34a63177c90aff4a4aee66cf9f1d0aeecff1389adb7452ad6f8af0a5888e3e9ad6ef733d - languageName: node - linkType: hard - "parse5-sax-parser@npm:^7.0.0": version: 7.0.0 resolution: "parse5-sax-parser@npm:7.0.0" @@ -34546,25 +34658,14 @@ gluegun@latest: languageName: node linkType: hard -"postcss@npm:^8.4.14": - version: 8.4.26 - resolution: "postcss@npm:8.4.26" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 1cf08ee10d58cbe98f94bf12ac49a5e5ed1588507d333d2642aacc24369ca987274e1f60ff4cbf0081f70d2ab18a5cd3a4a273f188d835b8e7f3ba381b184e57 - languageName: node - linkType: hard - -"postcss@npm:^8.4.19": - version: 8.4.24 - resolution: "postcss@npm:8.4.24" +"postcss@npm:^8.4.14, postcss@npm:^8.4.19": + version: 8.4.27 + resolution: "postcss@npm:8.4.27" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d + checksum: 1cdd0c298849df6cd65f7e646a3ba36870a37b65f55fd59d1a165539c263e9b4872a402bf4ed1ca1bc31f58b68b2835545e33ea1a23b161a1f8aa6d5ded81e78 languageName: node linkType: hard @@ -36141,13 +36242,20 @@ gluegun@latest: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.4": +"regenerator-runtime@npm:^0.13.11": version: 0.13.11 resolution: "regenerator-runtime@npm:0.13.11" checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 languageName: node linkType: hard +"regenerator-runtime@npm:^0.13.4": + version: 0.13.9 + resolution: "regenerator-runtime@npm:0.13.9" + checksum: 65ed455fe5afd799e2897baf691ca21c2772e1a969d19bb0c4695757c2d96249eb74ee3553ea34a91062b2a676beedf630b4c1551cc6299afb937be1426ec55e + languageName: node + linkType: hard + "regenerator-transform@npm:^0.15.1": version: 0.15.1 resolution: "regenerator-transform@npm:0.15.1" @@ -37267,15 +37375,15 @@ gluegun@latest: linkType: hard "sass@npm:^1.56.1": - version: 1.63.6 - resolution: "sass@npm:1.63.6" + version: 1.64.1 + resolution: "sass@npm:1.64.1" dependencies: chokidar: ">=3.0.0 <4.0.0" immutable: ^4.0.0 source-map-js: ">=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 3372319904658eeafaf78a09a6fcb3368a68e6d76fe3c43c2d009f4f72e475ab22b82ef483ef5c00fcda3ab00066846c0bd88c36b42771b855f6ab80c7eda541 + checksum: e908f96f3d5fa5869e2f2aec97548c93d6ef390680af89870fcae8bdbaee2392ac650fbeae8d2ef8e4c99cb9f81e6b3624e1cb659af6d6e746332a22233b5ad8 languageName: node linkType: hard @@ -38267,8 +38375,8 @@ gluegun@latest: linkType: hard "socket.io-client@npm:^2.1.0": - version: 2.5.0 - resolution: "socket.io-client@npm:2.5.0" + version: 2.4.0 + resolution: "socket.io-client@npm:2.4.0" dependencies: backo2: 1.0.2 component-bind: 1.0.0 @@ -38281,7 +38389,7 @@ gluegun@latest: parseuri: 0.0.6 socket.io-parser: ~3.3.0 to-array: 0.1.4 - checksum: a33accaf02c4a4c47ac9b09018fa4b9fa67a648a0cc92602e520ec884520050796786eb0df78fc1a9bf51e7b3d7b50ba4ffd3bda6e44df2c253a77100124669c + checksum: d5f16c6d836f6672f89896e785dccdb15ea4a78719daf9bc7954b5943e6ecbae97a56f4a8a33e22418ab0ce38e05a54770d2080bbf6c6d5c0c3a72b60a895800 languageName: node linkType: hard @@ -38308,12 +38416,12 @@ gluegun@latest: linkType: hard "socket.io-parser@npm:~4.2.1": - version: 4.2.1 - resolution: "socket.io-parser@npm:4.2.1" + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" dependencies: "@socket.io/component-emitter": ~3.1.0 debug: ~4.3.1 - checksum: 2582202f22538d7e6b4436991378cb4cea3b2f8219cda24923ae35afd291ab5ad6120e7d093e41738256b6c6ad10c667dd25753c2d9a2340fead04e9286f152d + checksum: 61540ef99af33e6a562b9effe0fad769bcb7ec6a301aba5a64b3a8bccb611a0abdbe25f469933ab80072582006a78ca136bf0ad8adff9c77c9953581285e2263 languageName: node linkType: hard @@ -38675,7 +38783,7 @@ gluegun@latest: languageName: node linkType: hard -"source-map@npm:0.7.4, source-map@npm:^0.7.3": +"source-map@npm:0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 @@ -38689,7 +38797,7 @@ gluegun@latest: languageName: node linkType: hard -"source-map@npm:~0.7.2": +"source-map@npm:^0.7.3, source-map@npm:~0.7.2": version: 0.7.3 resolution: "source-map@npm:0.7.3" checksum: cd24efb3b8fa69b64bf28e3c1b1a500de77e84260c5b7f2b873f88284df17974157cc88d386ee9b6d081f08fdd8242f3fc05c953685a6ad81aad94c7393dedea @@ -40948,7 +41056,7 @@ gluegun@latest: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.9.0": +"tsconfig-paths@npm:^3.14.1": version: 3.14.2 resolution: "tsconfig-paths@npm:3.14.2" dependencies: @@ -40960,6 +41068,18 @@ gluegun@latest: languageName: node linkType: hard +"tsconfig-paths@npm:^3.9.0": + version: 3.12.0 + resolution: "tsconfig-paths@npm:3.12.0" + dependencies: + "@types/json5": ^0.0.29 + json5: ^1.0.1 + minimist: ^1.2.0 + strip-bom: ^3.0.0 + checksum: 4999ec6cd1c7cc06750a460dbc0d39fe3595a4308cb5f1d0d0a8283009cf9c0a30d5a156508c28fe3a47760508af5263ab288fc23d71e9762779674257a95d3b + languageName: node + linkType: hard + "tsconfig-paths@npm:^4.1.0, tsconfig-paths@npm:^4.1.1": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -41014,9 +41134,9 @@ gluegun@latest: linkType: hard "tslib@npm:^2.0.3": - version: 2.6.0 - resolution: "tslib@npm:2.6.0" - checksum: c01066038f950016a18106ddeca4649b4d76caa76ec5a31e2a26e10586a59fceb4ee45e96719bf6c715648e7c14085a81fee5c62f7e9ebee68e77a5396e5538f + version: 2.6.1 + resolution: "tslib@npm:2.6.1" + checksum: b0d176d176487905b66ae4d5856647df50e37beea7571c53b8d10ba9222c074b81f1410fb91da13debaf2cbc970663609068bdebafa844ea9d69b146527c38fe languageName: node linkType: hard @@ -42937,6 +43057,25 @@ gluegun@latest: languageName: node linkType: hard +"web3-core@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-core@npm:4.0.3" + dependencies: + web3-errors: ^1.0.2 + web3-eth-iban: ^4.0.3 + web3-providers-http: ^4.0.3 + web3-providers-ipc: ^4.0.3 + web3-providers-ws: ^4.0.3 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + dependenciesMeta: + web3-providers-ipc: + optional: true + checksum: 83632bc56834d54180ac82b71d7894aa7256804cb7afd42180f3e36478046d585da0c23af0e54d2024b1e8f6e8013492cf6f6ee8c98c3f2a81a929b076b7fa56 + languageName: node + linkType: hard + "web3-errors@npm:^1.0.2": version: 1.0.2 resolution: "web3-errors@npm:1.0.2" @@ -43006,7 +43145,7 @@ gluegun@latest: languageName: node linkType: hard -"web3-eth-abi@npm:4.0.3": +"web3-eth-abi@npm:4.0.3, web3-eth-abi@npm:^4.0.3": version: 4.0.3 resolution: "web3-eth-abi@npm:4.0.3" dependencies: @@ -43132,6 +43271,21 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth-accounts@npm:4.0.3, web3-eth-accounts@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth-accounts@npm:4.0.3" + dependencies: + "@ethereumjs/rlp": ^4.0.1 + crc-32: ^1.2.2 + ethereum-cryptography: ^2.0.0 + web3-errors: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: 487343ecad8f37a471bb43d0a1f340ce98790bcaeec68247737c6cfb136902dc600f053636a7ceeed3c51db2862b10404fa8812d2a05a77e5d56182fb8a1f5e6 + languageName: node + linkType: hard + "web3-eth-contract@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-contract@npm:1.10.0" @@ -43228,6 +43382,21 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth-contract@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth-contract@npm:4.0.3" + dependencies: + web3-core: ^4.0.3 + web3-errors: ^1.0.2 + web3-eth: ^4.0.3 + web3-eth-abi: ^4.0.3 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: 24f5cc9645af7c2c6ffe6ff2dd819c576904b959e4d2388bb9565014bfa256c75903450b9de48a6e734bbca4a5542c441246497a858ed392cf71340bb1e961ca + languageName: node + linkType: hard + "web3-eth-ens@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-ens@npm:1.10.0" @@ -43324,6 +43493,23 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth-ens@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth-ens@npm:4.0.3" + dependencies: + "@adraffy/ens-normalize": ^1.8.8 + web3-core: ^4.0.3 + web3-errors: ^1.0.2 + web3-eth: ^4.0.3 + web3-eth-contract: ^4.0.3 + web3-net: ^4.0.3 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: a27a87f35fa939174f0cc6a9e92f23696ce70007cad2d1713a041da1bf492b58cc75953e9eb2d35c9cd9a6b88c1b6bb33c174fdefd6fa9ac5aea561e1dc7860c + languageName: node + linkType: hard + "web3-eth-iban@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-iban@npm:1.10.0" @@ -43384,6 +43570,18 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth-iban@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth-iban@npm:4.0.3" + dependencies: + web3-errors: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: 66b0883ad449d891de2aecdef0c4c4fc606ace2c809ee084968dec2ac584a18a9b45ed6abea459dfd0a1e6b1c283c7425710a7c2410e7fbfc62c273cb89a7aa9 + languageName: node + linkType: hard + "web3-eth-personal@npm:1.10.0": version: 1.10.0 resolution: "web3-eth-personal@npm:1.10.0" @@ -43468,6 +43666,20 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth-personal@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth-personal@npm:4.0.3" + dependencies: + web3-core: ^4.0.3 + web3-eth: ^4.0.3 + web3-rpc-methods: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: 9075e7e2c7512d12472fcc5bd4c530a9342d4ef6b73164b5d90587cff08c71d894a02c36dd1be98ae5e16a0e685199de179c57f21026778d79860918b6e7dd2f + languageName: node + linkType: hard + "web3-eth@npm:1.10.0": version: 1.10.0 resolution: "web3-eth@npm:1.10.0" @@ -43588,6 +43800,25 @@ gluegun@latest: languageName: node linkType: hard +"web3-eth@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-eth@npm:4.0.3" + dependencies: + setimmediate: ^1.0.5 + web3-core: ^4.0.3 + web3-errors: ^1.0.2 + web3-eth-abi: ^4.0.3 + web3-eth-accounts: ^4.0.3 + web3-net: ^4.0.3 + web3-providers-ws: ^4.0.3 + web3-rpc-methods: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: ce758d952cd1bd414a9449defc68d6a3c8fc1d183dfb152a2130e774018bef9ff7af70844884cabe5b4e5238823a061eba2c7622e49ea7afe8f3cec112930f2e + languageName: node + linkType: hard + "web3-net@npm:1.10.0": version: 1.10.0 resolution: "web3-net@npm:1.10.0" @@ -43654,6 +43885,18 @@ gluegun@latest: languageName: node linkType: hard +"web3-net@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-net@npm:4.0.3" + dependencies: + web3-core: ^4.0.3 + web3-rpc-methods: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + checksum: 117c97c95611ee3127778d8e690fc9c904cf909dc4e1ccaac0574532552a55153a8e12014358176f460c9c2ae02d4109db8454483034fa8f94fccc0b5781560c + languageName: node + linkType: hard + "web3-providers-http@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-http@npm:1.10.0" @@ -43718,6 +43961,18 @@ gluegun@latest: languageName: node linkType: hard +"web3-providers-http@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-providers-http@npm:4.0.3" + dependencies: + cross-fetch: ^3.1.5 + web3-errors: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + checksum: 8de3c2912b2b27f8c21c3937418039b220bc8595e2b4ff21538e22c197c82528adc4608a109b132cbf4055423d8b14d27f165a11b93396d8a8d53ad4ad2f4679 + languageName: node + linkType: hard + "web3-providers-ipc@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-ipc@npm:1.10.0" @@ -43778,6 +44033,17 @@ gluegun@latest: languageName: node linkType: hard +"web3-providers-ipc@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-providers-ipc@npm:4.0.3" + dependencies: + web3-errors: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + checksum: b649154bae5682fc026cb08df83f76ef625bc8948312baa1010612050d00fd3d5b356d2b3575d005e1ed48df77741571f91a67f8d78a9b8159ea14b646e97088 + languageName: node + linkType: hard + "web3-providers-ws@npm:1.10.0": version: 1.10.0 resolution: "web3-providers-ws@npm:1.10.0" @@ -43844,6 +44110,31 @@ gluegun@latest: languageName: node linkType: hard +"web3-providers-ws@npm:^4.0.3": + version: 4.0.3 + resolution: "web3-providers-ws@npm:4.0.3" + dependencies: + "@types/ws": ^8.5.3 + isomorphic-ws: ^5.0.0 + web3-errors: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + ws: ^8.8.1 + checksum: 00e85cb756350494fa171ac9d5273b56e0cebcf83032c0f69c1962ab2739ebb2adb82d8221c8daff8f7c7ef24f7478eef1aa3791067a4887ad11ce60b190a895 + languageName: node + linkType: hard + +"web3-rpc-methods@npm:^1.0.2": + version: 1.0.2 + resolution: "web3-rpc-methods@npm:1.0.2" + dependencies: + web3-core: ^4.0.3 + web3-types: ^1.0.2 + web3-validator: ^1.0.2 + checksum: 2f98a3cb6d7f7f46140e4cd239ef2a11bb130d327e41762d3ce5c4b0f49deb6b5e6b14d2cf2c77e0ea647b489bc74b52638e31f10f3cec6d6a8b476fe7de2540 + languageName: node + linkType: hard + "web3-shh@npm:1.10.0": version: 1.10.0 resolution: "web3-shh@npm:1.10.0" @@ -44128,6 +44419,30 @@ gluegun@latest: languageName: node linkType: hard +"web3@npm:4.0.3": + version: 4.0.3 + resolution: "web3@npm:4.0.3" + dependencies: + web3-core: ^4.0.3 + web3-errors: ^1.0.2 + web3-eth: ^4.0.3 + web3-eth-abi: ^4.0.3 + web3-eth-accounts: ^4.0.3 + web3-eth-contract: ^4.0.3 + web3-eth-ens: ^4.0.3 + web3-eth-iban: ^4.0.3 + web3-eth-personal: ^4.0.3 + web3-net: ^4.0.3 + web3-providers-http: ^4.0.3 + web3-providers-ws: ^4.0.3 + web3-rpc-methods: ^1.0.2 + web3-types: ^1.0.2 + web3-utils: ^4.0.3 + web3-validator: ^1.0.2 + checksum: 9f96e0790a9a32bcb9d9469f65692309b38a5a0c291739555c0227da68db11d5746f1555a52cb147e96394360e5ea5797470d0769bfb60033140906c446605d2 + languageName: node + linkType: hard + "web3js-quorum@npm:21.7.0-rc1": version: 21.7.0-rc1 resolution: "web3js-quorum@npm:21.7.0-rc1" @@ -45080,7 +45395,7 @@ gluegun@latest: languageName: node linkType: hard -"ws@npm:^8.4.2": +"ws@npm:^8.4.2, ws@npm:^8.8.1": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: