From 6045fadf56feedb634a570b0dac583febbf10b22 Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Tue, 1 Nov 2022 15:26:49 +0100 Subject: [PATCH 1/7] feat: index MerkleDistributor `Claimed` events --- .env.sample | 7 + migrations/1667312452969-Claim.ts | 33 + package.json | 2 +- src/modules/configuration/index.ts | 9 +- src/modules/database/database.providers.ts | 4 + .../MerkleDistributorBlockEventsConsumer.ts | 63 + .../scraper/adapter/messaging/index.ts | 7 + .../scraper/entry-point/http/controller.ts | 15 + .../MerkleDistributorProcessedBlock.entity.ts | 16 + src/modules/scraper/model/claim.entity.ts | 36 + src/modules/scraper/module.ts | 9 +- src/modules/scraper/service.ts | 101 +- .../scraper/service/ScraperQueuesService.ts | 8 + .../web3/services/EthProvidersService.ts | 63 +- src/modules/web3/services/EventsQuerier.ts | 93 + .../MerkleDistributorEventsQuerier.ts | 21 + .../web3/services/SpokePoolEventsQuerier.ts | 93 +- yarn.lock | 1657 ++++++++++++++++- 18 files changed, 2076 insertions(+), 161 deletions(-) create mode 100644 migrations/1667312452969-Claim.ts create mode 100644 src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts create mode 100644 src/modules/scraper/model/MerkleDistributorProcessedBlock.entity.ts create mode 100644 src/modules/scraper/model/claim.entity.ts create mode 100644 src/modules/web3/services/EventsQuerier.ts create mode 100644 src/modules/web3/services/MerkleDistributorEventsQuerier.ts diff --git a/.env.sample b/.env.sample index 124c7105..3fe783c5 100644 --- a/.env.sample +++ b/.env.sample @@ -12,6 +12,7 @@ WEB3_NODE_URL_10=https://optimism-mainnet.infura.io/v3/ WEB3_NODE_URL_288=https://boba-mainnet.gateway.pokt.network/v1/lb/ WEB3_NODE_URL_42161=https://arbitrum-mainnet.infura.io/v3/ WEB3_NODE_URL_137=https://polygon-mainnet.infura.io/v3/ +WEB3_NODE_URL_5=https://goerli.infura.io/v3/ REFERRAL_DELIMITER_START_TIMESTAMP=1657290720 ENABLE_SPOKE_POOLS_EVENTS_PROCESSING=false ENABLE_REFERRALS_MATERIALIZED_VIEW_REFRESH=false @@ -27,3 +28,9 @@ DISCORD_CLIENT_ID=clientId DISCORD_CLIENT_SECRET=clientSecret # the url accessed after the Discord authorization processed is fulfilled DISCORD_REDIRECT_URI=http://localhost + +# MerkleDistributor overrides +MERKLE_DISTRIBUTOR_CHAIN_ID= +MERKLE_DISTRIBUTOR_ADDRESS= +REFERRALS_START_WINDOW_INDEX= +ENABLE_MERKLE_DISTRIBUTOR_EVENTS_PROCESSING=false diff --git a/migrations/1667312452969-Claim.ts b/migrations/1667312452969-Claim.ts new file mode 100644 index 00000000..a4b68204 --- /dev/null +++ b/migrations/1667312452969-Claim.ts @@ -0,0 +1,33 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class Claim1667312452969 implements MigrationInterface { + name = "Claim1667312452969"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "merkle_distributor_recipient" DROP CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre"`, + ); + await queryRunner.query( + `CREATE TABLE "claim" ("id" SERIAL NOT NULL, "caller" character varying NOT NULL, "accountIndex" integer NOT NULL, "windowIndex" integer NOT NULL, "account" character varying NOT NULL, "rewardToken" character varying NOT NULL, "blockNumber" integer NOT NULL, "claimedAt" TIMESTAMP NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UK_claim_windowIndex_accountIndex" UNIQUE ("windowIndex", "accountIndex"), CONSTRAINT "PK_466b305cc2e591047fa1ce58f81" PRIMARY KEY ("id"))`, + ); + await queryRunner.query(`CREATE INDEX "IX_claim_account" ON "claim" ("account") `); + await queryRunner.query( + `CREATE TABLE "merkle_distributor_processed_block" ("id" SERIAL NOT NULL, "chainId" integer NOT NULL, "latestBlock" integer NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_fb2eb512abaadb453e1cfef109e" PRIMARY KEY ("id"))`, + ); + await queryRunner.query( + `ALTER TABLE "merkle_distributor_recipient" ADD CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_address" UNIQUE ("merkleDistributorWindowId", "address")`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "merkle_distributor_recipient" DROP CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_address"`, + ); + await queryRunner.query(`DROP TABLE "merkle_distributor_processed_block"`); + await queryRunner.query(`DROP INDEX "public"."IX_claim_account"`); + await queryRunner.query(`DROP TABLE "claim"`); + await queryRunner.query( + `ALTER TABLE "merkle_distributor_recipient" ADD CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre" UNIQUE ("merkleDistributorWindowId", "address")`, + ); + } +} diff --git a/package.json b/package.json index 2b87727c..3308aa60 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "db:migration:run": "yarn typeorm -- migration:run -d ormconfig.ts" }, "dependencies": { - "@across-protocol/contracts-v2": "^1.0.0", + "@across-protocol/contracts-v2": "^1.0.5", "@nestjs/axios": "^0.0.8", "@nestjs/bull": "^0.5.5", "@nestjs/cli": "^8.2.4", diff --git a/src/modules/configuration/index.ts b/src/modules/configuration/index.ts index c2ef1dbd..ad07195e 100644 --- a/src/modules/configuration/index.ts +++ b/src/modules/configuration/index.ts @@ -39,7 +39,7 @@ export const configValues = () => ({ // 69: process.env.WEB3_NODE_URL_69, // 4: process.env.WEB3_NODE_URL_4, // 80001: process.env.WEB3_NODE_URL_80001, - // 5: process.env.WEB3_NODE_URL_5, + 5: process.env.WEB3_NODE_URL_5, }, spokePoolContracts: { [ChainIds.mainnet]: { @@ -63,9 +63,16 @@ export const configValues = () => ({ startBlockNumber: 28604263, }, }, + merkleDistributor: { + address: process.env.MERKLE_DISTRIBUTOR_ADDRESS || "0xc64226599444cA9b6d930603B507a04d8FA61AdD", // TODO: replace with mainnet + chainId: Number(process.env.MERKLE_DISTRIBUTOR_CHAIN_ID || "5"), + referralsStartWindowIndex: Number(process.env.REFERRALS_START_WINDOW_INDEX || "1"), + startBlockNumber: 7866869, + }, }, acxUsdPrice: 0.1, enableSpokePoolsEventsProcessing: process.env.ENABLE_SPOKE_POOLS_EVENTS_PROCESSING === "true", + enableMerkleDistributorEventsProcessing: process.env.ENABLE_MERKLE_DISTRIBUTOR_EVENTS_PROCESSING === "true", enableReferralsMaterializedViewRefresh: process.env.ENABLE_REFERRALS_MATERIALIZED_VIEW_REFRESH === "true", allowWalletRewardsEdit: process.env.ALLOW_WALLET_REWARDS_EDIT === "true", stickyReferralAddressesMechanism: process.env.STICKY_REFERRAL_ADDRESSES_MECHANISM diff --git a/src/modules/database/database.providers.ts b/src/modules/database/database.providers.ts index 53b9e0b3..91f0c2f9 100644 --- a/src/modules/database/database.providers.ts +++ b/src/modules/database/database.providers.ts @@ -2,6 +2,8 @@ import { TypeOrmOptionsFactory, TypeOrmModuleOptions } from "@nestjs/typeorm"; import { Injectable } from "@nestjs/common"; import { AppConfig } from "../configuration/configuration.service"; import { ProcessedBlock } from "../scraper/model/ProcessedBlock.entity"; +import { MerkleDistributorProcessedBlock } from "../scraper/model/MerkleDistributorProcessedBlock.entity"; +import { Claim } from "../scraper/model/claim.entity"; import { Block } from "../web3/model/block.entity"; import { Deposit } from "../scraper/model/deposit.entity"; import { Token } from "../web3/model/token.entity"; @@ -17,6 +19,8 @@ import { MerkleDistributorWindow } from "../airdrop/model/merkle-distributor-win // TODO: Add db entities here const entities = [ ProcessedBlock, + MerkleDistributorProcessedBlock, + Claim, Block, Deposit, Token, diff --git a/src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts b/src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts new file mode 100644 index 00000000..1737acc9 --- /dev/null +++ b/src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts @@ -0,0 +1,63 @@ +import { OnQueueFailed, Process, Processor } from "@nestjs/bull"; +import { Logger } from "@nestjs/common"; +import { Job } from "bull"; +import { InjectRepository } from "@nestjs/typeorm"; +import { Repository, QueryFailedError } from "typeorm"; + +import { EthProvidersService } from "../../../web3/services/EthProvidersService"; +import { MerkleDistributorBlockEventsQueueMessage, ScraperQueue } from "."; +import { ClaimedEvent } from "@across-protocol/contracts-v2/dist/typechain/MerkleDistributor"; +import { Claim } from "../../model/claim.entity"; +import { utils } from "ethers"; + +@Processor(ScraperQueue.MerkleDistributorBlockEvents) +export class MerkleDistributorBlocksEventsConsumer { + private logger = new Logger(MerkleDistributorBlocksEventsConsumer.name); + + constructor( + private providers: EthProvidersService, + @InjectRepository(Claim) private claimRepository: Repository, + ) {} + + @Process({ concurrency: 1 }) + private async process(job: Job) { + const { chainId, from, to } = job.data; + const claimedEvents: ClaimedEvent[] = await this.providers.getMerkleDistributorQuerier().getClaimedEvents(from, to); + this.logger.log(`(${from}, ${to}) - chainId ${chainId} - found ${claimedEvents.length} ClaimedEvent`); + + for (const event of claimedEvents) { + try { + const claim = await this.fromClaimedEventToClaim(event); + await this.claimRepository.insert(claim); + } catch (error) { + if (error instanceof QueryFailedError && error.driverError?.code === "23505") { + // Ignore duplicate key value violates unique constraint error. + this.logger.warn(error); + } else { + throw error; + } + } + } + } + + private async fromClaimedEventToClaim(event: ClaimedEvent) { + const { blockNumber, getBlock } = event; + const { caller, accountIndex, windowIndex, account, rewardToken } = event.args; + const blockTimestamp = (await getBlock()).timestamp; + + return this.claimRepository.create({ + caller, + accountIndex: accountIndex.toNumber(), + windowIndex: windowIndex.toNumber(), + account: utils.getAddress(account), + rewardToken: utils.getAddress(rewardToken), + blockNumber: blockNumber, + claimedAt: new Date(blockTimestamp * 1000).toISOString(), + }); + } + + @OnQueueFailed() + private onQueueFailed(job: Job, error: Error) { + this.logger.error(`${ScraperQueue.MerkleDistributorBlockEvents} ${JSON.stringify(job.data)} failed: ${error}`); + } +} diff --git a/src/modules/scraper/adapter/messaging/index.ts b/src/modules/scraper/adapter/messaging/index.ts index fe7de48f..9b023aa4 100644 --- a/src/modules/scraper/adapter/messaging/index.ts +++ b/src/modules/scraper/adapter/messaging/index.ts @@ -6,6 +6,7 @@ export enum ScraperQueue { DepositReferral = "DepositReferral", TokenPrice = "TokenPrice", DepositFilledDate = "DepositFilledDate", + MerkleDistributorBlockEvents = "MerkleDistributorBlockEvents", } export type BlocksEventsQueueMessage = { @@ -14,6 +15,12 @@ export type BlocksEventsQueueMessage = { to: number; }; +export type MerkleDistributorBlockEventsQueueMessage = { + chainId: number; + from: number; + to: number; +}; + export type FillEventsQueueMessage = { realizedLpFeePct: string; originChainId: number; diff --git a/src/modules/scraper/entry-point/http/controller.ts b/src/modules/scraper/entry-point/http/controller.ts index 81af1b60..00aa7851 100644 --- a/src/modules/scraper/entry-point/http/controller.ts +++ b/src/modules/scraper/entry-point/http/controller.ts @@ -5,6 +5,7 @@ import { JwtAuthGuard } from "../../../auth/entry-points/http/jwt.guard"; import { Role, Roles, RolesGuard } from "../../../auth/entry-points/http/roles"; import { BlocksEventsQueueMessage, + MerkleDistributorBlockEventsQueueMessage, DepositFilledDateQueueMessage, DepositReferralQueueMessage, ScraperQueue, @@ -28,6 +29,20 @@ export class ScraperController { }); } + @Post("scraper/blocks/merkle-distributor") + @ApiTags("scraper") + async processMerkleDistributorBlocks(@Req() req: Request, @Body() body: ProcessBlocksBody) { + const { chainId, from, to } = body; + await this.scraperQueuesService.publishMessage( + ScraperQueue.MerkleDistributorBlockEvents, + { + chainId, + from, + to, + }, + ); + } + @Post("scraper/prices") @ApiTags("scraper") async submitPricesJobs(@Body() body: ProcessPricesBody) { diff --git a/src/modules/scraper/model/MerkleDistributorProcessedBlock.entity.ts b/src/modules/scraper/model/MerkleDistributorProcessedBlock.entity.ts new file mode 100644 index 00000000..6eaca8ee --- /dev/null +++ b/src/modules/scraper/model/MerkleDistributorProcessedBlock.entity.ts @@ -0,0 +1,16 @@ +import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class MerkleDistributorProcessedBlock { + @PrimaryGeneratedColumn() + id: number; + + @Column() + chainId: number; + + @Column() + latestBlock: number; + + @CreateDateColumn() + createdAt: Date; +} diff --git a/src/modules/scraper/model/claim.entity.ts b/src/modules/scraper/model/claim.entity.ts new file mode 100644 index 00000000..356d2956 --- /dev/null +++ b/src/modules/scraper/model/claim.entity.ts @@ -0,0 +1,36 @@ +import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn, Unique, UpdateDateColumn } from "typeorm"; + +@Entity() +@Unique("UK_claim_windowIndex_accountIndex", ["windowIndex", "accountIndex"]) +@Index("IX_claim_account", ["account"]) +export class Claim { + @PrimaryGeneratedColumn() + id: number; + + @Column() + caller: string; + + @Column() + accountIndex: number; + + @Column() + windowIndex: number; + + @Column() + account: string; + + @Column() + rewardToken: string; + + @Column() + blockNumber: number; + + @Column() + claimedAt: Date; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/modules/scraper/module.ts b/src/modules/scraper/module.ts index 5d4a2537..e4a00065 100644 --- a/src/modules/scraper/module.ts +++ b/src/modules/scraper/module.ts @@ -12,6 +12,7 @@ import { DepositFixture } from "./adapter/db/deposit-fixture"; import { ScraperQueue } from "./adapter/messaging"; import { BlockNumberConsumer } from "./adapter/messaging/BlockNumberConsumer"; import { BlocksEventsConsumer } from "./adapter/messaging/BlocksEventsConsumer"; +import { MerkleDistributorBlocksEventsConsumer } from "./adapter/messaging/MerkleDistributorBlockEventsConsumer"; import { DepositFilledDateConsumer } from "./adapter/messaging/DepositFilledDateConsumer"; import { DepositReferralConsumer } from "./adapter/messaging/DepositReferralConsumer"; import { FillEventsConsumer } from "./adapter/messaging/FillEventsConsumer"; @@ -19,7 +20,9 @@ import { TokenDetailsConsumer } from "./adapter/messaging/TokenDetailsConsumer"; import { TokenPriceConsumer } from "./adapter/messaging/TokenPriceConsumer"; import { ScraperController } from "./entry-point/http/controller"; import { Deposit } from "./model/deposit.entity"; +import { Claim } from "./model/claim.entity"; import { ProcessedBlock } from "./model/ProcessedBlock.entity"; +import { MerkleDistributorProcessedBlock } from "./model/MerkleDistributorProcessedBlock.entity"; import { ScraperService } from "./service"; import { ScraperQueuesService } from "./service/ScraperQueuesService"; @@ -28,6 +31,7 @@ import { ScraperQueuesService } from "./service/ScraperQueuesService"; ScraperService, ScraperQueuesService, BlocksEventsConsumer, + MerkleDistributorBlocksEventsConsumer, FillEventsConsumer, BlockNumberConsumer, TokenDetailsConsumer, @@ -39,7 +43,7 @@ import { ScraperQueuesService } from "./service/ScraperQueuesService"; imports: [ Web3Module, AppConfigModule, - TypeOrmModule.forFeature([ProcessedBlock, Deposit]), + TypeOrmModule.forFeature([ProcessedBlock, MerkleDistributorProcessedBlock, Claim, Deposit]), MarketPriceModule, HttpModule, ReferralModule, @@ -49,6 +53,9 @@ import { ScraperQueuesService } from "./service/ScraperQueuesService"; BullModule.registerQueue({ name: ScraperQueue.BlocksEvents, }), + BullModule.registerQueue({ + name: ScraperQueue.MerkleDistributorBlockEvents, + }), BullModule.registerQueue({ name: ScraperQueue.TokenDetails, }), diff --git a/src/modules/scraper/service.ts b/src/modules/scraper/service.ts index f19f4343..961ba87d 100644 --- a/src/modules/scraper/service.ts +++ b/src/modules/scraper/service.ts @@ -6,6 +6,7 @@ import { Repository } from "typeorm"; import { ChainIds } from "../web3/model/ChainId"; import { AppConfig } from "../configuration/configuration.service"; import { ProcessedBlock } from "./model/ProcessedBlock.entity"; +import { MerkleDistributorProcessedBlock } from "./model/MerkleDistributorProcessedBlock.entity"; import { ScraperQueuesService } from "./service/ScraperQueuesService"; import { BlocksEventsQueueMessage, ScraperQueue } from "./adapter/messaging"; import { wait } from "../../utils"; @@ -19,6 +20,8 @@ export class ScraperService { private appConfig: AppConfig, @InjectRepository(ProcessedBlock) private processedBlockRepository: Repository, + @InjectRepository(MerkleDistributorProcessedBlock) + private merkleDistributorProcessedBlockRepository: Repository, private scraperQueuesService: ScraperQueuesService, ) { this.run(); @@ -30,6 +33,9 @@ export class ScraperService { if (this.appConfig.values.enableSpokePoolsEventsProcessing) { await this.publishBlocks(); } + if (this.appConfig.values.enableMerkleDistributorEventsProcessing) { + await this.publishMerkleDistributorBlocks(); + } } catch (error) { this.logger.error(error); } @@ -52,6 +58,37 @@ export class ScraperService { } } + public async publishMerkleDistributorBlocks() { + const chainId = this.appConfig.values.web3.merkleDistributor.chainId; + const configStartBlockNumber = this.appConfig.values.web3.merkleDistributor.startBlockNumber; + const provider = this.providers.getProvider(chainId); + const latestBlock = await provider.getBlock("latest"); + let previousProcessedBlock = await this.merkleDistributorProcessedBlockRepository.findOne({ + where: { chainId }, + }); + + const blockRange = this.determineBlockRange( + chainId, + latestBlock.number, + configStartBlockNumber, + previousProcessedBlock?.latestBlock, + ); + + if (!blockRange) { + return; + } + + if (!previousProcessedBlock) { + previousProcessedBlock = this.merkleDistributorProcessedBlockRepository.create({ + chainId, + latestBlock: blockRange.to, + }); + } else { + previousProcessedBlock.latestBlock = blockRange.to; + } + await this.merkleDistributorProcessedBlockRepository.save(previousProcessedBlock); + } + /** * Fetch the latest block numbers from all supported chains */ @@ -75,41 +112,59 @@ export class ScraperService { public async determineBlockRanges(latestBlocks: Record) { const blockRanges: Record = {}; - for (const chainId of Object.keys(latestBlocks)) { + for (const chainIdStr of Object.keys(latestBlocks)) { + const chainId = parseInt(chainIdStr); let previousProcessedBlock = await this.processedBlockRepository.findOne({ - where: { chainId: parseInt(chainId) }, + where: { chainId }, }); const configStartBlockNumber = this.appConfig.values.web3.spokePoolContracts[chainId].startBlockNumber; - let from = 1; - if (previousProcessedBlock) { - from = previousProcessedBlock.latestBlock + 1; - } else if (configStartBlockNumber) { - from = configStartBlockNumber; + const blockRange = this.determineBlockRange( + chainId, + latestBlocks[chainId], + configStartBlockNumber, + previousProcessedBlock?.latestBlock, + ); + + if (!blockRange) { + continue; } - const to = Math.min( - latestBlocks[chainId] - this.getFollowingDistance(parseInt(chainId)), - from + this.getMinBlockRange(parseInt(chainId)), - ); - if (from < to) { - blockRanges[chainId] = { from, to }; - - if (!previousProcessedBlock) { - previousProcessedBlock = this.processedBlockRepository.create({ - chainId: parseInt(chainId), - latestBlock: to, - }); - } else { - previousProcessedBlock.latestBlock = to; - } - await this.processedBlockRepository.save(previousProcessedBlock); + if (!previousProcessedBlock) { + previousProcessedBlock = this.processedBlockRepository.create({ + chainId, + latestBlock: blockRange.to, + }); + } else { + previousProcessedBlock.latestBlock = blockRange.to; } + await this.processedBlockRepository.save(previousProcessedBlock); } return blockRanges; } + public determineBlockRange( + chainId: number, + latestBlockNumber: number, + configStartBlockNumber: number, + previousProcessedBlockNumber?: number, + ) { + let from = 1; + + if (previousProcessedBlockNumber) { + from = previousProcessedBlockNumber + 1; + } else if (configStartBlockNumber) { + from = configStartBlockNumber; + } + + const to = Math.min(latestBlockNumber - this.getFollowingDistance(chainId), from + this.getMinBlockRange(chainId)); + + if (from < to) { + return { from, to }; + } + } + public getMinBlockRange(chainId: number) { if (chainId === ChainIds.boba) { return 50_000; diff --git a/src/modules/scraper/service/ScraperQueuesService.ts b/src/modules/scraper/service/ScraperQueuesService.ts index ab2d6113..e75547b4 100644 --- a/src/modules/scraper/service/ScraperQueuesService.ts +++ b/src/modules/scraper/service/ScraperQueuesService.ts @@ -9,6 +9,7 @@ export class ScraperQueuesService { public constructor( @InjectQueue(ScraperQueue.BlocksEvents) private blocksEventsQueue: Queue, + @InjectQueue(ScraperQueue.MerkleDistributorBlockEvents) private merkleDistributorBlocksEventsQueue: Queue, @InjectQueue(ScraperQueue.FillEvents) private fillEventsQueue: Queue, @InjectQueue(ScraperQueue.BlockNumber) private blockNumberQueue: Queue, @InjectQueue(ScraperQueue.TokenDetails) private tokenDetailsQueue: Queue, @@ -20,6 +21,9 @@ export class ScraperQueuesService { this.blocksEventsQueue .getJobCounts() .then((data) => this.logger.log(`${ScraperQueue.BlocksEvents} ${JSON.stringify(data)}`)); + this.merkleDistributorBlocksEventsQueue + .getJobCounts() + .then((data) => this.logger.log(`${ScraperQueue.MerkleDistributorBlockEvents} ${JSON.stringify(data)}`)); this.fillEventsQueue .getJobCounts() .then((data) => this.logger.log(`${ScraperQueue.FillEvents} ${JSON.stringify(data)}`)); @@ -56,6 +60,8 @@ export class ScraperQueuesService { await this.tokenPriceQueue.add(message); } else if (queue === ScraperQueue.DepositFilledDate) { await this.depositFilledDateQueue.add(message); + } else if (queue === ScraperQueue.MerkleDistributorBlockEvents) { + await this.merkleDistributorBlocksEventsQueue.add(message); } } @@ -74,6 +80,8 @@ export class ScraperQueuesService { await this.tokenPriceQueue.addBulk(messages.map((m) => ({ data: m }))); } else if (queue === ScraperQueue.DepositFilledDate) { await this.depositFilledDateQueue.addBulk(messages.map((m) => ({ data: m }))); + } else if (queue === ScraperQueue.MerkleDistributorBlockEvents) { + await this.merkleDistributorBlocksEventsQueue.addBulk(messages.map((m) => ({ data: m }))); } } } diff --git a/src/modules/web3/services/EthProvidersService.ts b/src/modules/web3/services/EthProvidersService.ts index 7c388240..d2e9d010 100644 --- a/src/modules/web3/services/EthProvidersService.ts +++ b/src/modules/web3/services/EthProvidersService.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, SpokePool__factory } from "@across-protocol/contracts-v2"; +import { ERC20__factory, MerkleDistributor__factory, SpokePool__factory } from "@across-protocol/contracts-v2"; import { Injectable } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; import { ethers } from "ethers"; @@ -8,12 +8,14 @@ import { Block } from "../model/block.entity"; import { ChainId } from "../model/ChainId"; import { Token } from "../model/token.entity"; import { SpokePoolEventsQuerier } from "./SpokePoolEventsQuerier"; +import { MerkleDistributorEventsQuerier } from "./MerkleDistributorEventsQuerier"; import { Transaction } from "../model/transaction.entity"; @Injectable() export class EthProvidersService { private providers: Record = {}; private spokePoolEventQueriers: Record = {}; + private merkleDistributorEventQuerier: MerkleDistributorEventsQuerier; public constructor( private appConfig: AppConfig, @@ -21,22 +23,9 @@ export class EthProvidersService { @InjectRepository(Token) private tokenRepository: Repository, @InjectRepository(Transaction) private transactionRepository: Repository, ) { - const supportedChainIds = Object.keys(this.appConfig.values.web3.providers); - - for (const chainId of supportedChainIds) { - if (this.appConfig.values.web3.providers[chainId]) { - const provider = new ethers.providers.JsonRpcProvider(this.appConfig.values.web3.providers[chainId]); - this.providers[chainId] = provider; - } - } - - for (const chainId of Object.keys(this.getProviders())) { - const spokePool = SpokePool__factory.connect( - appConfig.values.web3.spokePoolContracts[parseInt(chainId)].address, - this.getProvider(parseInt(chainId)), - ); - this.spokePoolEventQueriers[chainId] = new SpokePoolEventsQuerier(spokePool); - } + this.setProviders(); + this.setSpokePoolEventQueriers(); + this.setMerkleDistributorEventQuerier(); } public getProvider(chainId: ChainId): ethers.providers.JsonRpcProvider | undefined { @@ -55,6 +44,10 @@ export class EthProvidersService { return this.spokePoolEventQueriers; } + public getMerkleDistributorQuerier(): MerkleDistributorEventsQuerier | undefined { + return this.merkleDistributorEventQuerier; + } + public async getCachedBlock(chainId: number, blockNumber: number) { let block = await this.blockRepository.findOne({ where: { chainId, blockNumber } }); @@ -111,4 +104,40 @@ export class EthProvidersService { return transaction; } + + private setProviders() { + const supportedChainIds = Object.keys(this.appConfig.values.web3.providers); + + for (const chainId of supportedChainIds) { + if (this.appConfig.values.web3.providers[chainId]) { + const provider = new ethers.providers.JsonRpcProvider(this.appConfig.values.web3.providers[chainId]); + this.providers[chainId] = provider; + } + } + } + + private setSpokePoolEventQueriers() { + for (const chainIdStr of Object.keys(this.getProviders())) { + const chainId = parseInt(chainIdStr); + const spokePoolAddress = this.appConfig.values.web3.spokePoolContracts[chainId]?.address; + if (spokePoolAddress) { + const spokePool = SpokePool__factory.connect( + this.appConfig.values.web3.spokePoolContracts[chainId].address, + this.getProvider(chainId), + ); + this.spokePoolEventQueriers[chainId] = new SpokePoolEventsQuerier(spokePool); + } + } + } + + private setMerkleDistributorEventQuerier() { + const provider = this.getProvider(this.appConfig.values.web3.merkleDistributor.chainId); + if (provider) { + const merkleDistributor = MerkleDistributor__factory.connect( + this.appConfig.values.web3.merkleDistributor.address, + provider, + ); + this.merkleDistributorEventQuerier = new MerkleDistributorEventsQuerier(merkleDistributor); + } + } } diff --git a/src/modules/web3/services/EventsQuerier.ts b/src/modules/web3/services/EventsQuerier.ts new file mode 100644 index 00000000..0d9e2a10 --- /dev/null +++ b/src/modules/web3/services/EventsQuerier.ts @@ -0,0 +1,93 @@ +import { MerkleDistributor, SpokePool } from "@across-protocol/contracts-v2"; +import { TypedEvent, TypedEventFilter } from "@across-protocol/contracts-v2/dist/typechain/common"; +import { Logger } from "@nestjs/common"; +import { Web3Error, Web3ErrorCode } from "../model/ChainId"; + +const DEFAULT_BLOCK_RANGE = 100_000; + +export class EventsQuerier { + constructor( + private contract: SpokePool | MerkleDistributor, + private logger: Logger, + private blockRangeSize?: number, + ) {} + + public async getEvents( + from: number, + to: number, + filters: TypedEventFilter[], any>, + ): Promise[]> { + let events: TypedEvent[] = []; + let retryWithLowerBatchSize; + + do { + const blockRangeSizeAtStart = this.blockRangeSize; + try { + retryWithLowerBatchSize = false; + events = []; + + if (this.blockRangeSize) { + const intervals = this.getSamplesBetween(from, to, this.blockRangeSize); + // query events only for the first interval to make sure block range is fine + const [intervalStart, intervalEnd] = intervals[0]; + const newEvents = await this.contract.queryFilter(filters, intervalStart, intervalEnd); + events.push(...newEvents); + + // query the rest of block intervals in parallel in order to get the events + const newEventsList = await Promise.all( + intervals + .slice(1) + .map(([intervalStart, intervalEnd]) => this.contract.queryFilter(filters, intervalStart, intervalEnd)), + ); + events.push(...newEventsList.flat()); + } else { + const newEvents = await this.contract.queryFilter(filters, from, to); + events.push(...newEvents); + } + } catch (error) { + if ( + (error as Web3Error).error?.code === Web3ErrorCode.BLOCK_RANGE_TOO_LARGE || + (error as Web3Error).error?.code === Web3ErrorCode.EXCEEDED_MAXIMUM_BLOCK_RANGE || + (error as Web3Error).error?.code === Web3ErrorCode.LOG_RESPONSE_SIZE_EXCEEDED || + (error as Web3Error).error?.code === Web3ErrorCode.LOG_RESPONSE_SIZE_EXCEEDED_2 + ) { + // make sure the block range size wasn't modified by a parallel function call + if (this.blockRangeSize === blockRangeSizeAtStart) { + const newBlockRangeSize = this.blockRangeSize ? this.blockRangeSize / 2 : DEFAULT_BLOCK_RANGE; + this.logger.warn(`lowering block range size from ${this.blockRangeSize} to ${newBlockRangeSize}`); + this.blockRangeSize = newBlockRangeSize; + } + retryWithLowerBatchSize = true; + } else { + retryWithLowerBatchSize = false; + console.error(error); + throw error; + } + } + } while (retryWithLowerBatchSize); + + return events; + } + + /** + * Takes two values and returns a list of number intervals + * + * @example + * ```js + * getSamplesBetween(1, 9, 3) //returns [[1, 3], [4, 7], [8, 9]] + * ``` + */ + private getSamplesBetween = (min: number, max: number, size: number) => { + let keepIterate = true; + const intervals = []; + + while (keepIterate) { + const to = Math.min(min + size - 1, max); + intervals.push([min, to]); + min = to + 1; + if (min >= max) keepIterate = false; + } + + return intervals; + }; +} diff --git a/src/modules/web3/services/MerkleDistributorEventsQuerier.ts b/src/modules/web3/services/MerkleDistributorEventsQuerier.ts new file mode 100644 index 00000000..cf84aaa2 --- /dev/null +++ b/src/modules/web3/services/MerkleDistributorEventsQuerier.ts @@ -0,0 +1,21 @@ +import { MerkleDistributor } from "@across-protocol/contracts-v2"; +import { TypedEvent } from "@across-protocol/contracts-v2/dist/typechain/common"; +import { Logger } from "@nestjs/common"; +import { EventsQuerier } from "./EventsQuerier"; + +export class MerkleDistributorEventsQuerier extends EventsQuerier { + constructor(private merkleDistributor: MerkleDistributor, blockRangeSize?: number) { + super(merkleDistributor, new Logger(MerkleDistributorEventsQuerier.name), blockRangeSize); + } + + public async getClaimedEvents(from: number, to: number, account?: string): Promise[]> { + return this.getEvents(from, to, this.getClaimedEventsFilter(account)); + } + + private getClaimedEventsFilter(account?: string) { + if (account) { + return this.merkleDistributor.filters.Claimed(undefined, undefined, account, undefined, undefined, undefined); + } + return this.merkleDistributor.filters.Claimed(); + } +} diff --git a/src/modules/web3/services/SpokePoolEventsQuerier.ts b/src/modules/web3/services/SpokePoolEventsQuerier.ts index 74d99b6f..280b692b 100644 --- a/src/modules/web3/services/SpokePoolEventsQuerier.ts +++ b/src/modules/web3/services/SpokePoolEventsQuerier.ts @@ -1,14 +1,12 @@ import { SpokePool } from "@across-protocol/contracts-v2"; -import { TypedEvent, TypedEventFilter } from "@across-protocol/contracts-v2/dist/typechain/common"; +import { TypedEvent } from "@across-protocol/contracts-v2/dist/typechain/common"; import { Logger } from "@nestjs/common"; -import { Web3Error, Web3ErrorCode } from "../model/ChainId"; +import { EventsQuerier } from "./EventsQuerier"; -const DEFAULT_BLOCK_RANGE = 100_000; - -export class SpokePoolEventsQuerier { - private logger = new Logger(SpokePoolEventsQuerier.name); - - constructor(private spokePool: SpokePool, private blockRangeSize?: number) {} +export class SpokePoolEventsQuerier extends EventsQuerier { + constructor(private spokePool: SpokePool, blockRangeSize?: number) { + super(spokePool, new Logger(SpokePoolEventsQuerier.name), blockRangeSize); + } public async getFundsDepositEvents(from: number, to: number, depositorAddr?: string): Promise[]> { return this.getEvents(from, to, this.getDepositEventsFilters(depositorAddr)); @@ -57,83 +55,4 @@ export class SpokePoolEventsQuerier { } return this.spokePool.filters.FundsDeposited(); } - - private async getEvents( - from: number, - to: number, - filters: TypedEventFilter[], any>, - ): Promise[]> { - let events: TypedEvent[] = []; - let retryWithLowerBatchSize; - - do { - const blockRangeSizeAtStart = this.blockRangeSize; - try { - retryWithLowerBatchSize = false; - events = []; - - if (this.blockRangeSize) { - const intervals = this.getSamplesBetween(from, to, this.blockRangeSize); - // query events only for the first interval to make sure block range is fine - const [intervalStart, intervalEnd] = intervals[0]; - const newEvents = await this.spokePool.queryFilter(filters, intervalStart, intervalEnd); - events.push(...newEvents); - - // query the rest of block intervals in parallel in order to get the events - const newEventsList = await Promise.all( - intervals - .slice(1) - .map(([intervalStart, intervalEnd]) => this.spokePool.queryFilter(filters, intervalStart, intervalEnd)), - ); - events.push(...newEventsList.flat()); - } else { - const newEvents = await this.spokePool.queryFilter(filters, from, to); - events.push(...newEvents); - } - } catch (error) { - if ( - (error as Web3Error).error?.code === Web3ErrorCode.BLOCK_RANGE_TOO_LARGE || - (error as Web3Error).error?.code === Web3ErrorCode.EXCEEDED_MAXIMUM_BLOCK_RANGE || - (error as Web3Error).error?.code === Web3ErrorCode.LOG_RESPONSE_SIZE_EXCEEDED || - (error as Web3Error).error?.code === Web3ErrorCode.LOG_RESPONSE_SIZE_EXCEEDED_2 - ) { - // make sure the block range size wasn't modified by a parallel function call - if (this.blockRangeSize === blockRangeSizeAtStart) { - const newBlockRangeSize = this.blockRangeSize ? this.blockRangeSize / 2 : DEFAULT_BLOCK_RANGE; - this.logger.warn(`lowering block range size from ${this.blockRangeSize} to ${newBlockRangeSize}`); - this.blockRangeSize = newBlockRangeSize; - } - retryWithLowerBatchSize = true; - } else { - retryWithLowerBatchSize = false; - console.error(error); - throw error; - } - } - } while (retryWithLowerBatchSize); - - return events; - } - - /** - * Takes two values and returns a list of number intervals - * - * @example - * ```js - * getSamplesBetween(1, 9, 3) //returns [[1, 3], [4, 7], [8, 9]] - * ``` - */ - private getSamplesBetween = (min: number, max: number, size: number) => { - let keepIterate = true; - const intervals = []; - - while (keepIterate) { - const to = Math.min(min + size - 1, max); - intervals.push([min, to]); - min = to + 1; - if (min >= max) keepIterate = false; - } - - return intervals; - }; } diff --git a/yarn.lock b/yarn.lock index 277f754e..7e5239f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,18 @@ # yarn lockfile v1 -"@across-protocol/contracts-v2@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-1.0.2.tgz#53c1c56f159209d4e5c5c658a959251c6c7a2b5f" - integrity sha512-Or7Ccs4Fw8yolUGHn7cay6HTq6cdP6AuZm4/9RdUgNcqiGWTeNw8o7CbJLEjn9+6xrhrHWf/AUtbBXkdVVS+wg== +"@across-protocol/contracts-v2@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-1.0.5.tgz#32c4891126568b6b1556df8850ed0ea7408e3aaa" + integrity sha512-qbY4Q2pEUOSNYXuvdqIXDU3pETqohXujPx6sxjcGDoFeDPd+WgVAixWMYoGg8D7JMdocPd5nwBtbox4gXTC21A== dependencies: "@defi-wonderland/smock" "^2.0.7" "@eth-optimism/contracts" "^0.5.11" - "@openzeppelin/contracts" "^4.4.2" - "@uma/common" "^2.17.0" - "@uma/contracts-node" "^0.2.0" - "@uma/core" "^2.24.0" + "@openzeppelin/contracts" "^4.7.3" + "@uma/common" "^2.28.0" + "@uma/contracts-node" "^0.3.18" + "@uma/core" "^2.38.0" + "@uma/merkle-distributor" "^1.3.38" arb-bridge-eth "^0.7.4" arb-bridge-peripherals "^1.0.5" @@ -250,6 +251,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== +"@babel/parser@^7.9.4": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" + integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -639,6 +645,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/abstract-provider@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz#a533aed39a5f27312745c8c4c40fa25fc884831c" @@ -665,6 +686,19 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/web" "^5.6.1" +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "@ethersproject/abstract-signer@5.0.14": version "5.0.14" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz#30ef912b0f86599d90fdffc65c110452e7b55cf1" @@ -687,6 +721,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/address@5.0.11": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.11.tgz#12022e8c590c33939beb5ab18b401ecf585eac59" @@ -709,6 +754,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.1" +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/base64@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.9.tgz#bb1f35d3dba92082a574d5e2418f9202a0a1a7e6" @@ -723,6 +779,13 @@ dependencies: "@ethersproject/bytes" "^5.6.1" +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/basex@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.9.tgz#00d727a031bac563cb8bb900955206f1bf3cf1fc" @@ -739,6 +802,14 @@ "@ethersproject/bytes" "^5.6.1" "@ethersproject/properties" "^5.6.0" +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/bignumber@5.0.15": version "5.0.15" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.15.tgz#b089b3f1e0381338d764ac1c10512f0c93b184ed" @@ -757,6 +828,15 @@ "@ethersproject/logger" "^5.6.0" bn.js "^5.2.1" +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bytes@5.0.11": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.11.tgz#21118e75b1d00db068984c15530e316021101276" @@ -771,6 +851,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/constants@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.10.tgz#eb0c604fbc44c53ba9641eed31a1d0c9e1ebcadc" @@ -785,6 +872,13 @@ dependencies: "@ethersproject/bignumber" "^5.6.2" +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts@5.0.12": version "5.0.12" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.12.tgz#6d488db46221258399dfe80b89bf849b3afd7897" @@ -816,6 +910,22 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/transactions" "^5.6.2" +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/hash@5.0.12": version "5.0.12" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.12.tgz#1074599f7509e2ca2bb7a3d4f4e39ab3a796da42" @@ -844,6 +954,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hdnode@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.10.tgz#f7cdf154bf5d104c76dce2940745fc71d9e7eb1b" @@ -880,6 +1005,24 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/wordlists" "^5.6.1" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/json-wallets@5.0.12": version "5.0.12" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.12.tgz#8946a0fcce1634b636313a50330b7d30a24996e8" @@ -918,6 +1061,25 @@ aes-js "3.0.0" scrypt-js "3.0.1" +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/keccak256@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.9.tgz#ca0d86e4af56c13b1ef25e533bde3e96d28f647d" @@ -934,6 +1096,14 @@ "@ethersproject/bytes" "^5.6.1" js-sha3 "0.8.0" +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/logger@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.10.tgz#fd884688b3143253e0356ef92d5f22d109d2e026" @@ -944,6 +1114,11 @@ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/networks@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.9.tgz#ec5da11e4d4bfd69bec4eaebc9ace33eb9569279" @@ -958,6 +1133,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.9.tgz#be39c7f0a66c0d3cb1ad1dbb12a78e9bcdf9b5ae" @@ -974,6 +1156,14 @@ "@ethersproject/bytes" "^5.6.1" "@ethersproject/sha2" "^5.6.1" +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/properties@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.9.tgz#d7aae634680760136ea522e25c3ef043ec15b5c2" @@ -988,6 +1178,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/providers@5.0.24": version "5.0.24" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.24.tgz#4c638a029482d052faa18364b5e0e2d3ddd9c0cb" @@ -1039,6 +1236,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.9.tgz#1903d4436ba66e4c8ac77968b16f756abea3a0d0" @@ -1055,6 +1278,14 @@ "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.9.tgz#da205bf8a34d3c3409eb73ddd237130a4b376aff" @@ -1071,6 +1302,14 @@ "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2@5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.9.tgz#41275ee03e6e1660b3c997754005e089e936adc6" @@ -1089,6 +1328,15 @@ "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + "@ethersproject/signing-key@5.0.11": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.11.tgz#19fc5c4597e18ad0a5efc6417ba5b74069fdd2af" @@ -1111,6 +1359,18 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/solidity@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.10.tgz#128c9289761cf83d81ff62a1195d6079a924a86c" @@ -1134,6 +1394,18 @@ "@ethersproject/sha2" "^5.6.1" "@ethersproject/strings" "^5.6.1" +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/strings@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.10.tgz#ddce1e9724f4ac4f3f67e0cac0b48748e964bfdb" @@ -1152,6 +1424,15 @@ "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/transactions@5.0.11": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.11.tgz#b31df5292f47937136a45885d6ee6112477c13df" @@ -1182,6 +1463,21 @@ "@ethersproject/rlp" "^5.6.1" "@ethersproject/signing-key" "^5.6.2" +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/units@5.0.11": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.11.tgz#f82f6e353ac0d6fa43b17337790f1f9aa72cb4c8" @@ -1200,6 +1496,15 @@ "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/wallet@5.0.12": version "5.0.12" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.12.tgz#bfb96f95e066b4b1b4591c4615207b87afedda8b" @@ -1242,6 +1547,27 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/wordlists" "^5.6.1" +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/web@5.0.14": version "5.0.14" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.14.tgz#6e7bebdd9fb967cb25ee60f44d9218dc0803bac4" @@ -1264,6 +1590,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/wordlists@5.0.10": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.10.tgz#177b9a0b4d72b9c4f304d08b36612d6c60e9b896" @@ -1286,6 +1623,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@gnosis.pm/mock-contract@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@gnosis.pm/mock-contract/-/mock-contract-4.0.0.tgz#eaf500fddcab81b5f6c22280a7b22ff891dd6f87" @@ -1318,6 +1666,13 @@ dependencies: google-gax "^2.24.1" +"@google-cloud/kms@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/kms/-/kms-3.0.1.tgz#2e86889f2c08f13208afc5bd272a7f25326c9f17" + integrity sha512-xUrhzattC5mkNqbfMcIgBzwAab9eXCYrn1R1KYUNV5E96fK7ciT57bJESaUQvin7XKd18sQcLRD+uOJ6eTfXbg== + dependencies: + google-gax "^3.0.1" + "@google-cloud/paginator@^3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" @@ -1331,11 +1686,21 @@ resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== +"@google-cloud/projectify@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" + integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== + "@google-cloud/promisify@^2.0.0": version "2.0.4" resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== +"@google-cloud/promisify@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e" + integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA== + "@google-cloud/storage@^5.8.5": version "5.20.5" resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.20.5.tgz#1de71fc88d37934a886bc815722c134b162d335d" @@ -1365,6 +1730,29 @@ uuid "^8.0.0" xdg-basedir "^4.0.0" +"@google-cloud/storage@^6.4.2": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.6.0.tgz#01f64bf706acc98dc2787e490afe878ad9f64250" + integrity sha512-z1rj7ft15TZd7hzPVsqTZPduLPR+ZMOnwUME9d1yynJvHm5bWkyV3d3eigZ+v2Zirl7rjk8UZTdzRSYr1MvgRQ== + dependencies: + "@google-cloud/paginator" "^3.0.7" + "@google-cloud/projectify" "^3.0.0" + "@google-cloud/promisify" "^3.0.0" + abort-controller "^3.0.0" + async-retry "^1.3.3" + compressible "^2.0.12" + duplexify "^4.0.0" + ent "^2.2.0" + extend "^3.0.2" + gaxios "^5.0.0" + google-auth-library "^8.0.1" + mime "^3.0.0" + mime-types "^2.0.8" + p-limit "^3.0.1" + retry-request "^5.0.0" + teeny-request "^8.0.0" + uuid "^8.0.0" + "@grpc/grpc-js@~1.6.0": version "1.6.7" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.7.tgz#4c4fa998ff719fe859ac19fe977fdef097bb99aa" @@ -1373,6 +1761,14 @@ "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" +"@grpc/grpc-js@~1.7.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.7.3.tgz#f2ea79f65e31622d7f86d4b4c9ae38f13ccab99a" + integrity sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + "@grpc/proto-loader@^0.6.12", "@grpc/proto-loader@^0.6.4": version "0.6.13" resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" @@ -1384,6 +1780,17 @@ protobufjs "^6.11.3" yargs "^16.2.0" +"@grpc/proto-loader@^0.7.0": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.3.tgz#75a6f95b51b85c5078ac7394da93850c32d36bb8" + integrity sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^7.0.0" + yargs "^16.2.0" + "@humanwhocodes/config-array@^0.9.2": version "0.9.5" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" @@ -1758,6 +2165,11 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.0.2.tgz#baea7764b1adf201ce4a792fe971fd7211dad2e4" integrity sha512-fpnI00dt+yO1cKx9qBXelKhPBdEgvc8ZPav1+0r09j0woYQU2N79w/jcGawSY5UGlgQ3vjaJsFHnGbGvvqdLzg== +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + "@nestjs/axios@^0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@nestjs/axios/-/axios-0.0.8.tgz#4e321e36b6bc3ab0f02d80bafe04ae39edfdcacf" @@ -2006,7 +2418,8 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@openzeppelin/contracts-0.8@npm:@openzeppelin/contracts@^4.3.2", "@openzeppelin/contracts@^4.2.0", "@openzeppelin/contracts@^4.3.2", "@openzeppelin/contracts@^4.4.2": +"@openzeppelin/contracts-0.8@npm:@openzeppelin/contracts@^4.3.2", "@openzeppelin/contracts@^4.2.0", "@openzeppelin/contracts@^4.3.2": + name "@openzeppelin/contracts-0.8" version "4.6.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== @@ -2041,6 +2454,11 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.4.2.tgz#4e889c9c66e736f7de189a53f8ba5b8d789425c2" integrity sha512-NyJV7sJgoGYqbtNUWgzzOGW4T6rR19FmX1IJgXGdapGPWsuMelGJn9h03nos0iqfforCbCB0iYIR0MtIuIFLLw== +"@openzeppelin/contracts@^4.7.3": + version "4.7.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.3.tgz#939534757a81f8d69cc854c7692805684ff3111e" + integrity sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw== + "@openzeppelin/upgrades-core@^1.7.6": version "1.16.1" resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.16.1.tgz#a4c383fc628cc9d37d5a276def99a093c951644b" @@ -2743,6 +3161,11 @@ "@types/level-errors" "*" "@types/node" "*" +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + "@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" @@ -2763,12 +3186,25 @@ resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.3.2.tgz#8a3f2cdd4858ce698b56cd8597d9243b8e9d3c65" integrity sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA== +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -3023,7 +3459,7 @@ "@typescript-eslint/types" "5.29.0" eslint-visitor-keys "^3.3.0" -"@uma/common@^2.17.0", "@uma/common@^2.21.0": +"@uma/common@^2.21.0": version "2.21.0" resolved "https://registry.yarnpkg.com/@uma/common/-/common-2.21.0.tgz#cfdb14dc5ade167c522603591bca2059c8892c6b" integrity sha512-PJSjwVnJWWkcpqsFs6WlG+B1GiCcw6+p1/WLo9jYDuXcYhEwcS9NsOOTcbu4sWqw9cJqI1Mx2r7f/7eOpwSvMQ== @@ -3060,12 +3496,49 @@ web3 "^1.6.0" winston "^3.2.1" -"@uma/contracts-node@^0.2.0": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@uma/contracts-node/-/contracts-node-0.2.1.tgz#29ebba6b2ecba7f0d2dc9b484bc34f0abbdefdaa" - integrity sha512-7wPkH/m8tD8UMLYUjSXN5gSp/5NsuPRF1icmwXNTWlhp/Mg4qmJHeANjsWP9JCDxlgdSDixA4hJ5qhVOPXFniA== +"@uma/common@^2.28.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/@uma/common/-/common-2.28.0.tgz#7123caf705a7bad3f16a9c211759913d9226929b" + integrity sha512-a6znfnN8Te5imvIzEkcrwg87vkd6//Oa+H74uBtx1z4ZTU0+FcByUnfSbPMlwQxrvkF2GUF9+7mmnD81Dz8ZVg== + dependencies: + "@across-protocol/contracts" "^0.1.4" + "@eth-optimism/hardhat-ovm" "^0.2.2" + "@ethersproject/bignumber" "^5.0.5" + "@google-cloud/kms" "^3.0.1" + "@google-cloud/storage" "^6.4.2" + "@nomiclabs/hardhat-ethers" "^2.0.2" + "@nomiclabs/hardhat-etherscan" "^3.0.0" + "@nomiclabs/hardhat-web3" "^2.0.0" + "@truffle/contract" "^4.3.38" + "@truffle/hdwallet-provider" eip1559-beta + "@types/ethereum-protocol" "^1.0.0" + "@umaprotocol/truffle-ledger-provider" "^1.0.5" + "@uniswap/v3-core" "^1.0.0-rc.2" + abi-decoder "github:UMAprotocol/abi-decoder" + bignumber.js "^8.0.1" + chalk-pipe "^3.0.0" + decimal.js "^10.2.1" + dotenv "^9.0.0" + eth-crypto "^1.7.0" + hardhat-deploy "0.9.1" + hardhat-gas-reporter "^1.0.4" + hardhat-typechain "^0.3.5" + lodash.uniqby "^4.7.0" + minimist "^1.2.0" + moment "^2.24.0" + node-metamask "github:UMAprotocol/node-metamask" + require-context "^1.1.0" + solidity-coverage "^0.7.13" + truffle-deploy-registry "^0.5.1" + web3 "^1.6.0" + winston "^3.2.1" -"@uma/core@^2.18.0", "@uma/core@^2.24.0": +"@uma/contracts-node@^0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@uma/contracts-node/-/contracts-node-0.3.18.tgz#40e053ff6bc66f7ae7ce6c5d203a3200cf9ed928" + integrity sha512-ENFYjvVnyplKZF1G5YxOfpm0Ob1nOKtKcwX+TtfOiQGLNMVed8azV8tTSAWlJG/5SZkekX9Y5xZSP5YfcmMj0A== + +"@uma/core@^2.18.0": version "2.29.0" resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.29.0.tgz#499d457eaf9d046ab4f6e5039f1587dcf306746f" integrity sha512-LjOgO1m4iA1Aqxj3Q4DqmNSBEAkZRHINj7qA5PVkdH+8202licY+pf880xrUyJBTLhWydlTmtP0XWYvXqmCWWg== @@ -3081,6 +3554,36 @@ "@uniswap/v3-core" "^1.0.0-rc.2" "@uniswap/v3-periphery" "^1.0.0-beta.23" +"@uma/core@^2.38.0": + version "2.38.0" + resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.38.0.tgz#67e1d246509a663a0703b70666e78f4ec410183f" + integrity sha512-Vb1CU8YsXBS71DHoKMYnWk3/NVeU3lhoT8D/s5b1OraOLr1MOToXAJpT0IEGA+fvpchwRFpN0qY5gMUY8MhkBg== + dependencies: + "@gnosis.pm/safe-contracts" "^1.3.0" + "@gnosis.pm/zodiac" "1.0.3" + "@maticnetwork/fx-portal" "^1.0.4" + "@openzeppelin/contracts" "4.4.2" + "@uma/common" "^2.28.0" + "@uniswap/lib" "4.0.1-alpha" + "@uniswap/v2-core" "1.0.0" + "@uniswap/v2-periphery" "1.1.0-beta.0" + "@uniswap/v3-core" "^1.0.0-rc.2" + "@uniswap/v3-periphery" "^1.0.0-beta.23" + +"@uma/merkle-distributor@^1.3.38": + version "1.3.38" + resolved "https://registry.yarnpkg.com/@uma/merkle-distributor/-/merkle-distributor-1.3.38.tgz#8e680df2ab32fefc8706387579ee194eb339e539" + integrity sha512-QezWgxZ+blfAwoKSvf/D3B/LuvQrRN/NOzUm9BV3htVptzOfpJaYGF/vqyEGtFNlvS8evlP1ArE9JEqLaTZz+A== + dependencies: + "@uma/common" "^2.28.0" + "@uma/contracts-node" "^0.3.18" + chai "^4.3.0" + commander "^7.1.0" + ethers "^5.4.2" + ipfs-http-client "^49.0.2" + mocha "^8.3.0" + node-fetch "^2.6.1" + "@umaprotocol/truffle-ledger-provider@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@umaprotocol/truffle-ledger-provider/-/truffle-ledger-provider-1.0.5.tgz#e30025c4ecc2f2540825c46788ef1291474080be" @@ -3317,6 +3820,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zxing/text-encoding@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -3440,6 +3948,11 @@ acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + address@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" @@ -3598,6 +4111,14 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== +any-signal@^2.1.0, any-signal@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -3738,7 +4259,7 @@ asap@^2.0.0, asap@~2.0.6: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1.js@^5.2.0: +asn1.js@^5.0.1, asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== @@ -4545,7 +5066,7 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -bl@^4.0.3, bl@^4.1.0: +bl@^4.0.0, bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -4559,7 +5080,14 @@ blakejs@^1.1.0: resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -bluebird@^3.5.0, bluebird@^3.5.2: +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -4602,6 +5130,19 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +borc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" + integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== + dependencies: + bignumber.js "^9.0.0" + buffer "^5.5.0" + commander "^2.15.0" + ieee754 "^1.1.13" + iso-url "~0.4.7" + json-text-sequence "~0.1.0" + readable-stream "^3.6.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4610,6 +5151,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -4627,6 +5175,11 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -4771,7 +5324,7 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@6.0.3, buffer@^6.0.3: +buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -4779,7 +5332,7 @@ buffer@6.0.3, buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4899,6 +5452,13 @@ caseless@^0.12.0, caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +catharsis@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" + integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== + dependencies: + lodash "^4.17.15" + cbor@^5.0.2, cbor@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" @@ -4914,7 +5474,7 @@ cbor@^8.0.0: dependencies: nofilter "^3.1.0" -chai@^4.3.4: +chai@^4.3.0, chai@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== @@ -5063,6 +5623,21 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -5109,6 +5684,16 @@ cids@^0.7.1: multicodec "^1.0.0" multihashes "~0.4.15" +cids@^1.0.0, cids@^1.1.5: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -5332,11 +5917,16 @@ commander@4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^2.19.0, commander@^2.20.0: +commander@^2.15.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.1.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -5704,6 +6294,13 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, d dependencies: ms "2.1.2" +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -5854,6 +6451,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== + denque@^1.1.0: version "1.5.1" resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" @@ -5956,6 +6558,15 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dns-over-http-resolver@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -6109,6 +6720,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.164: version "1.4.168" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.168.tgz#8f6bda320a434ac963850d18e41d83220973cbdd" @@ -6178,7 +6796,7 @@ encoding-down@~5.0.0: level-errors "^2.0.0" xtend "^4.0.1" -encoding@^0.1.11: +encoding@^0.1.11, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -6217,11 +6835,26 @@ entities@^4.2.0, entities@^4.3.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +err-code@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -6359,6 +6992,18 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +escodegen@^1.13.0: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -6492,6 +7137,15 @@ eslint@^8.12.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +espree@^9.0.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + espree@^9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" @@ -6530,7 +7184,7 @@ estraverse@^1.9.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -7068,6 +7722,42 @@ ethers@^5.0.13, ethers@^5.4.6, ethers@^5.6.8: "@ethersproject/web" "5.6.1" "@ethersproject/wordlists" "5.6.1" +ethers@^5.4.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -7094,7 +7784,7 @@ eventemitter3@4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -events@^3.0.0, events@^3.2.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -7254,6 +7944,11 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-fifo@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.1.0.tgz#17d1a3646880b9891dfa0c54e69c5fef33cad779" + integrity sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g== + fast-glob@^3.0.3, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" @@ -7604,7 +8299,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -7664,6 +8359,16 @@ gaxios@^4.0.0: is-stream "^2.0.0" node-fetch "^2.6.7" +gaxios@^5.0.0, gaxios@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.0.2.tgz#ca3a40e851c728d31d7001c2357062d46bf966d1" + integrity sha512-TjtV2AJOZoMQqRYoy5eM8cCQogYwazWNYLQ72QB0kwa6vHHruYkGmhhyrlzbmgNHK1dNnuP2WSH81urfzyN2Og== + dependencies: + extend "^3.0.2" + https-proxy-agent "^5.0.0" + is-stream "^2.0.0" + node-fetch "^2.6.7" + gcp-metadata@^4.2.0: version "4.3.1" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" @@ -7672,6 +8377,14 @@ gcp-metadata@^4.2.0: gaxios "^4.0.0" json-bigint "^1.0.0" +gcp-metadata@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.0.1.tgz#8d1e785ee7fad554bc2a80c1f930c9a9518d2b00" + integrity sha512-jiRJ+Fk7e8FH68Z6TLaqwea307OktJpDjmYnU7/li6ziwvVvU2RlrCyQo5vkdeP94chm0kcSCOOszvmuaioq3g== + dependencies: + gaxios "^5.0.0" + json-bigint "^1.0.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -7701,6 +8414,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.3" +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7799,6 +8517,18 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -7834,6 +8564,17 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -7916,6 +8657,21 @@ google-auth-library@^7.14.0, google-auth-library@^7.14.1: jws "^4.0.0" lru-cache "^6.0.0" +google-auth-library@^8.0.1, google-auth-library@^8.0.2: + version "8.6.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.6.0.tgz#79cc4c8bacffee26bac244f25f4968ac87218bb8" + integrity sha512-y6bw1yTWMVgs1vGJwBZ3uu+uIClfgxQfsEVcTNKjQeNQOVwox69+ZUgTeTAzrh+74hBqrk1gWyb9RsQVDI7seg== + dependencies: + arrify "^2.0.0" + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + fast-text-encoding "^1.0.0" + gaxios "^5.0.0" + gcp-metadata "^5.0.0" + gtoken "^6.1.0" + jws "^4.0.0" + lru-cache "^6.0.0" + google-gax@^2.24.1: version "2.30.5" resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.5.tgz#e836f984f3228900a8336f608c83d75f9cb73eff" @@ -7935,6 +8691,26 @@ google-gax@^2.24.1: protobufjs "6.11.3" retry-request "^4.0.0" +google-gax@^3.0.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.5.2.tgz#7c3ad61dbf366a55527b803caead276668b160d8" + integrity sha512-AyP53w0gHcWlzxm+jSgqCR3Xu4Ld7EpSjhtNBnNhzwwWaIUyphH9kBGNIEH+i4UGkTUXOY29K/Re8EiAvkBRGw== + dependencies: + "@grpc/grpc-js" "~1.7.0" + "@grpc/proto-loader" "^0.7.0" + "@types/long" "^4.0.0" + abort-controller "^3.0.0" + duplexify "^4.0.0" + fast-text-encoding "^1.0.3" + google-auth-library "^8.0.2" + is-stream-ended "^0.1.4" + node-fetch "^2.6.1" + object-hash "^3.0.0" + proto3-json-serializer "^1.0.0" + protobufjs "7.1.2" + protobufjs-cli "1.0.2" + retry-request "^5.0.0" + google-p12-pem@^3.1.3: version "3.1.4" resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.4.tgz#123f7b40da204de4ed1fbf2fd5be12c047fc8b3b" @@ -7942,6 +8718,13 @@ google-p12-pem@^3.1.3: dependencies: node-forge "^1.3.1" +google-p12-pem@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" + integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== + dependencies: + node-forge "^1.3.1" + got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -7998,6 +8781,15 @@ gtoken@^5.0.4: google-p12-pem "^3.1.3" jws "^4.0.0" +gtoken@^6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" + integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== + dependencies: + gaxios "^5.0.1" + google-p12-pem "^4.0.0" + jws "^4.0.0" + handlebars@^4.0.1: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -8569,11 +9361,143 @@ ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipfs-core-types@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.3.1.tgz#5dab234428d031d0657d1708f7bb040281d6ab5f" + integrity sha512-xPBsowS951RsuskMo86AWz9y4ReaBot1YsjOhZvKl8ORd8taxIBTT72LnEPwIZ2G24U854Zjxvd/qUMqO14ivg== + dependencies: + cids "^1.1.5" + multiaddr "^8.0.0" + peer-id "^0.14.1" + +ipfs-core-utils@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.7.2.tgz#ebc1281d14d26538881a8249c3eed8c27b98f519" + integrity sha512-d7T72GxvhNN+tEHsJjxI5Y4LQVdMMbSwNbWB6nVsIHUEdwm3w85L2u1E/ctNd9aaNGvoBwEcnIZhSmqhMf7stw== + dependencies: + any-signal "^2.1.2" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + cids "^1.1.5" + err-code "^2.0.3" + ipfs-core-types "^0.3.1" + ipfs-utils "^6.0.1" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.1" + multiaddr "^8.0.0" + multiaddr-to-uri "^6.0.0" + parse-duration "^0.4.4" + timeout-abort-controller "^1.1.1" + uint8arrays "^2.1.3" + +ipfs-http-client@^49.0.2: + version "49.0.4" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-49.0.4.tgz#a7b5a696ab755ce1e822240e1774caab6cffa117" + integrity sha512-qgWbkcB4glQrUkE2tZR+GVXyrO6aJyspWBjyct/6TzrhCHx7evjz+kUTK+wNm4S9zccUePEml5VNZUmUhoQtbA== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.2" + bignumber.js "^9.0.1" + cids "^1.1.5" + debug "^4.1.1" + form-data "^3.0.0" + ipfs-core-types "^0.3.1" + ipfs-core-utils "^0.7.2" + ipfs-utils "^6.0.1" + ipld-block "^0.11.0" + ipld-dag-cbor "^0.17.0" + ipld-dag-pb "^0.20.0" + ipld-raw "^6.0.0" + it-last "^1.0.4" + it-map "^1.0.4" + it-tar "^1.2.2" + it-to-stream "^0.1.2" + merge-options "^3.0.4" + multiaddr "^8.0.0" + multibase "^4.0.2" + multicodec "^3.0.1" + multihashes "^4.0.2" + nanoid "^3.1.12" + native-abort-controller "^1.0.3" + parse-duration "^0.4.4" + stream-to-it "^0.2.2" + uint8arrays "^2.1.3" + +ipfs-utils@^6.0.1: + version "6.0.8" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-6.0.8.tgz#a0e4cad19af35569226fac93a84664b4c222d946" + integrity sha512-mDDQaDisI/uWk+X08wyw+jBcq76IXwMjgyaoyEgJDb/Izb+QbBCSJjo9q+EvbMxh6/l6q0NiAfbbsxEyQYPW9w== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.0.0" + it-glob "~0.0.11" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-abort-controller "^1.0.3" + native-fetch "^3.0.0" + node-fetch "^2.6.1" + stream-to-it "^0.2.2" + +ipld-block@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/ipld-block/-/ipld-block-0.11.1.tgz#c3a7b41aee3244187bd87a73f980e3565d299b6e" + integrity sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw== + dependencies: + cids "^1.0.0" + +ipld-dag-cbor@^0.17.0: + version "0.17.1" + resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz#842e6c250603e5791049168831a425ec03471fb1" + integrity sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== + dependencies: + borc "^2.1.2" + cids "^1.0.0" + is-circular "^1.0.2" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + uint8arrays "^2.1.3" + +ipld-dag-pb@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.20.0.tgz#025c0343aafe6cb9db395dd1dc93c8c60a669360" + integrity sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + protons "^2.0.0" + reset "^0.1.0" + run "^1.4.0" + stable "^0.1.8" + uint8arrays "^1.0.0" + +ipld-raw@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-6.0.0.tgz#74d947fcd2ce4e0e1d5bb650c1b5754ed8ea6da0" + integrity sha512-UK7fjncAzs59iu/o2kwYtb8jgTtW6B+cNWIiNpAJkfRwqoMk1xD/6i25ktzwe4qO8gQgoR9RxA5ibC23nq8BLg== + dependencies: + cids "^1.0.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -8624,6 +9548,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-circular@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" + integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== + is-core-module@^2.8.1, is-core-module@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" @@ -8638,6 +9567,11 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-electron@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" + integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -8704,6 +9638,13 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + is-lower-case@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" @@ -8857,6 +9798,29 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +iso-constants@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/iso-constants/-/iso-constants-0.1.2.tgz#3d2456ed5aeaa55d18564f285ba02a47a0d885b4" + integrity sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ== + +iso-random-stream@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.2.tgz#a24f77c34cfdad9d398707d522a6a0cc640ff27d" + integrity sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ== + dependencies: + events "^3.3.0" + readable-stream "^3.4.0" + +iso-url@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + +iso-url@~0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" + integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -8912,6 +9876,84 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-concat@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-1.0.3.tgz#84db9376e4c77bf7bc1fd933bb90f184e7cef32b" + integrity sha512-sjeZQ1BWQ9U/W2oI09kZgUyvSWzQahTkOkLIsnEPgyqZFaF9ME5gV6An4nMjlyhXKWQMKEakQU8oRHs2SdmeyA== + dependencies: + bl "^4.0.0" + +it-glob@~0.0.11: + version "0.0.14" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-0.0.14.tgz#24f5e7fa48f9698ce7dd410355f327470c91eb90" + integrity sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-peekable@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-reader@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-2.1.0.tgz#b1164be343f8538d8775e10fb0339f61ccf71b0f" + integrity sha512-hSysqWTO9Tlwc5EGjVf8JYZzw0D2FsxD/g+eNNWrez9zODxWt6QlN6JAMmycK72Mv4jHEKEXoyzUN4FYGmJaZw== + dependencies: + bl "^4.0.0" + +it-tar@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/it-tar/-/it-tar-1.2.2.tgz#8d79863dad27726c781a4bcc491f53c20f2866cf" + integrity sha512-M8V4a9I+x/vwXTjqvixcEZbQZHjwDIb8iUQ+D4M2QbhAdNs3WKVSl+45u5/F2XFx6jYMFOGzMVlKNK/uONgNIA== + dependencies: + bl "^4.0.0" + buffer "^5.4.3" + iso-constants "^0.1.2" + it-concat "^1.0.0" + it-reader "^2.0.0" + p-defer "^3.0.0" + +it-to-stream@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-0.1.2.tgz#7163151f75b60445e86b8ab1a968666acaacfe7b" + integrity sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ== + dependencies: + buffer "^5.6.0" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + iterare@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" @@ -9358,6 +10400,13 @@ js-yaml@3.x, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -9365,11 +10414,39 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +js2xmlparser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== + dependencies: + xmlcreate "^2.0.4" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsdoc@^3.6.3: + version "3.6.11" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.11.tgz#8bbb5747e6f579f141a5238cbad4e95e004458ce" + integrity sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg== + dependencies: + "@babel/parser" "^7.9.4" + "@types/markdown-it" "^12.2.3" + bluebird "^3.7.2" + catharsis "^0.9.0" + escape-string-regexp "^2.0.0" + js2xmlparser "^4.0.2" + klaw "^3.0.0" + markdown-it "^12.3.2" + markdown-it-anchor "^8.4.1" + marked "^4.0.10" + mkdirp "^1.0.4" + requizzle "^0.2.3" + strip-json-comments "^3.1.0" + taffydb "2.6.2" + underscore "~1.13.2" + jsdom@^16.6.0: version "16.7.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" @@ -9499,6 +10576,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== +json-text-sequence@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== + dependencies: + delimit-stream "0.1.0" + json5@2.x, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" @@ -9623,6 +10707,11 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keypair@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" + integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -9642,6 +10731,13 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +klaw@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" + integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== + dependencies: + graceful-fs "^4.1.9" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -9845,6 +10941,23 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libp2p-crypto@^0.19.0: + version "0.19.7" + resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz#e96a95bd430e672a695209fe0fbd2bcbd348bc35" + integrity sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA== + dependencies: + err-code "^3.0.1" + is-typedarray "^1.0.0" + iso-random-stream "^2.0.0" + keypair "^1.0.1" + multiformats "^9.4.5" + node-forge "^0.10.0" + pem-jwk "^2.0.0" + protobufjs "^6.11.2" + secp256k1 "^4.0.0" + uint8arrays "^3.0.0" + ursa-optional "^0.10.1" + libphonenumber-js@^1.9.43: version "1.10.7" resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.7.tgz#4c010b7b57e824c571ea4cdbf7aea6f3c408878c" @@ -9855,6 +10968,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -10018,6 +11138,13 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + log-symbols@4.1.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -10042,6 +11169,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" + integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== + loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10148,11 +11280,32 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +markdown-it-anchor@^8.4.1: + version "8.6.5" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz#30c4bc5bbff327f15ce3c429010ec7ba75e7b5f8" + integrity sha512-PI1qEHHkTNWT+X6Ip9w+paonfIQ+QZP9sCeMYi47oqhH+EsW8CrJ8J7CzV19QVOj6il8ATGbK2nTECj22ZHGvQ== + +markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-table@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +marked@^4.0.10: + version "4.2.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.0.tgz#f1683b077626a6c53e28926b798a18184aa13a91" + integrity sha512-1qWHjHlBKwjnDfrkxd0L3Yx4LTad/WO7+d13YsXAC/ZfKj7p0xkLV3sDXJzfWgL7GfW4IBZwMAYWaz+ifyQouQ== + match-all@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" @@ -10172,6 +11325,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -10230,6 +11388,13 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -10359,6 +11524,13 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +minimatch@*, minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -10468,6 +11640,37 @@ mocha@^7.1.1: yargs-parser "13.1.2" yargs-unparser "1.6.0" +mocha@^8.3.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" + integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + mocha@^9.2.0: version "9.2.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" @@ -10562,6 +11765,27 @@ multer@1.4.4-lts.1: type-is "^1.6.4" xtend "^4.0.0" +multiaddr-to-uri@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-6.0.0.tgz#8f08a75c6eeb2370d5d24b77b8413e3f0fa9bcc0" + integrity sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A== + dependencies: + multiaddr "^8.0.0" + +multiaddr@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-8.1.2.tgz#74060ff8636ba1c01b2cf0ffd53950b852fa9b1f" + integrity sha512-r13IzW8+Sv9zab9Gt8RPMIN2WkptIPq99EpAzg4IbJ/zTELhiEwXWr9bAmEatSCI4j/LSA6ESJzvz95JZ+ZYXQ== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + dns-over-http-resolver "^1.0.0" + err-code "^2.0.3" + is-ip "^3.1.0" + multibase "^3.0.0" + uint8arrays "^1.1.0" + varint "^5.0.0" + multibase@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" @@ -10570,6 +11794,21 @@ multibase@^0.7.0: base-x "^3.0.8" buffer "^5.5.0" +multibase@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-3.1.2.tgz#59314e1e2c35d018db38e4c20bb79026827f0f2f" + integrity sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw== + dependencies: + "@multiformats/base-x" "^4.0.1" + web-encoding "^1.0.6" + +multibase@^4.0.1, multibase@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + multibase@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" @@ -10593,6 +11832,27 @@ multicodec@^1.0.0: buffer "^5.6.0" varint "^5.0.0" +multicodec@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-2.1.3.tgz#b9850635ad4e2a285a933151b55b4a2294152a5d" + integrity sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA== + dependencies: + uint8arrays "1.1.0" + varint "^6.0.0" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.2, multiformats@^9.4.5: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + multihashes@^0.4.15, multihashes@~0.4.15: version "0.4.21" resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" @@ -10602,6 +11862,27 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multihashing-async@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" + integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^3.0.0" + murmur-128@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" @@ -10611,6 +11892,11 @@ murmur-128@^0.2.1: fmix "^0.1.0" imul "^1.0.0" +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -10635,6 +11921,11 @@ nan@^2.13.2, nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== +nan@^2.14.2: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + nano-base32@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" @@ -10650,12 +11941,17 @@ nanoid@*: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.0.tgz#6e144dee117609232c3f415c34b0e550e64999a5" integrity sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg== +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + nanoid@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -nanoid@^3.0.0: +nanoid@^3.0.0, nanoid@^3.1.12, nanoid@^3.1.20: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== @@ -10665,6 +11961,16 @@ napi-build-utils@^1.0.1: resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +native-abort-controller@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.4.tgz#39920155cc0c18209ff93af5bc90be856143f251" + integrity sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ== + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -10746,6 +12052,11 @@ node-fetch@~1.7.1: encoding "^0.1.11" is-stream "^1.0.1" +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -11067,6 +12378,19 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -11192,6 +12516,11 @@ parse-cache-control@^1.0.1: resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== +parse-duration@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-0.4.4.tgz#11c0f51a689e97d06c57bd772f7fda7dc013243c" + integrity sha512-KbAJuYGUhZkB9gotDiKLnZ7Z3VTacK3fgwmDdB6ZVDtJbMBT6MfLga0WJaYpPDu0mzqT0NgHtHDt5PY4l0nidg== + parse-headers@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" @@ -11376,6 +12705,26 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +peer-id@^0.14.1: + version "0.14.8" + resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.14.8.tgz#667c6bedc8ab313c81376f6aca0baa2140266fab" + integrity sha512-GpuLpob/9FrEFvyZrKKsISEkaBYsON2u0WtiawLHj1ii6ewkoeRiSDFLyIefYhw0jGvQoeoZS05jaT52X7Bvig== + dependencies: + cids "^1.1.5" + class-is "^1.1.0" + libp2p-crypto "^0.19.0" + minimist "^1.2.5" + multihashes "^4.0.2" + protobufjs "^6.10.2" + uint8arrays "^2.0.5" + +pem-jwk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" + integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== + dependencies: + asn1.js "^5.0.1" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -11629,7 +12978,30 @@ proto3-json-serializer@^0.1.8: dependencies: protobufjs "^6.11.2" -protobufjs@6.11.3, protobufjs@^6.11.2, protobufjs@^6.11.3: +proto3-json-serializer@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz#52d9c73b24d25ff925639e1e5a01ac883460149f" + integrity sha512-SjXwUWe/vANGs/mJJTbw5++7U67nwsymg7qsoPtw6GiXqw3kUy8ByojrlEdVE2efxAdKreX8WkDafxvYW95ZQg== + dependencies: + protobufjs "^7.0.0" + +protobufjs-cli@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz#905fc49007cf4aaf3c45d5f250eb294eedeea062" + integrity sha512-cz9Pq9p/Zs7okc6avH20W7QuyjTclwJPgqXG11jNaulfS3nbVisID8rC+prfgq0gbZE0w9LBFd1OKFF03kgFzg== + dependencies: + chalk "^4.0.0" + escodegen "^1.13.0" + espree "^9.0.0" + estraverse "^5.1.0" + glob "^8.0.0" + jsdoc "^3.6.3" + minimist "^1.2.0" + semver "^7.1.2" + tmp "^0.2.1" + uglify-js "^3.7.7" + +protobufjs@6.11.3, protobufjs@^6.10.2, protobufjs@^6.11.2, protobufjs@^6.11.3: version "6.11.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== @@ -11648,6 +13020,39 @@ protobufjs@6.11.3, protobufjs@^6.11.2, protobufjs@^6.11.3: "@types/node" ">=13.7.0" long "^4.0.0" +protobufjs@7.1.2, protobufjs@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.1.2.tgz#a0cf6aeaf82f5625bffcf5a38b7cd2a7de05890c" + integrity sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protocol-buffers-schema@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" + integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== + +protons@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/protons/-/protons-2.0.3.tgz#94f45484d04b66dfedc43ad3abff1e8907994bb2" + integrity sha512-j6JikP/H7gNybNinZhAHMN07Vjr1i4lVupg598l4I9gSTjJqOvKnwjzYX2PzvBTSVf2eZ2nWv4vG+mtW8L6tpA== + dependencies: + protocol-buffers-schema "^3.3.1" + signed-varint "^2.0.1" + uint8arrays "^3.0.0" + varint "^5.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -11866,6 +13271,13 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -11873,6 +13285,13 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -12063,6 +13482,18 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requizzle@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" + integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== + dependencies: + lodash "^4.17.14" + +reset@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/reset/-/reset-0.1.0.tgz#9fc7314171995ae6cb0b7e58b06ce7522af4bafb" + integrity sha512-RF7bp2P2ODreUPA71FZ4DSK52gNLJJ8dSwA1nhOCoC0mI4KZ4D/W6zhd2nfBqX/JlR+QZ/iUqAYPjq1UQU8l0Q== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -12133,6 +13564,11 @@ resumer@~0.0.0: dependencies: through "~2.3.4" +retimer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-2.0.0.tgz#e8bd68c5e5a8ec2f49ccb5c636db84c04063bbca" + integrity sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg== + retry-request@^4.0.0, retry-request@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" @@ -12141,6 +13577,14 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" +retry-request@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" + integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== + dependencies: + debug "^4.1.1" + extend "^3.0.2" + retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -12202,6 +13646,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +run@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/run/-/run-1.4.0.tgz#e17d9e9043ab2fe17776cb299e1237f38f0b4ffa" + integrity sha512-962oBW07IjQ9SizyMHdoteVbDKt/e2nEsnTRZ0WjK/zs+jfQQICqH0qj0D5lqZNuy0JkbzfA6IOqw0Sk7C3DlQ== + dependencies: + minimatch "*" + rustbn.js@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" @@ -12329,7 +13780,7 @@ secp256k1@4.0.2: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -secp256k1@^4.0.1: +secp256k1@^4.0.0, secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== @@ -12370,6 +13821,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.2: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -12402,6 +13860,13 @@ sentence-case@^2.1.0: no-case "^2.2.0" upper-case-first "^1.1.2" +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serialize-javascript@6.0.0, serialize-javascript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -12513,6 +13978,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signed-varint@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" + integrity sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw== + dependencies: + varint "~5.0.0" + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -12740,6 +14212,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -12786,6 +14263,13 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -13114,6 +14598,11 @@ table@^6.8.0: string-width "^4.2.3" strip-ansi "^6.0.1" +taffydb@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + integrity sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA== + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -13185,6 +14674,17 @@ teeny-request@^7.1.3: stream-events "^1.0.5" uuid "^8.0.0" +teeny-request@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.2.tgz#c06a75101cf782788ba8f9a2ed5f2ac84c1c4e15" + integrity sha512-34pe0a4zASseXZCKdeTiIZqSKA8ETHb1EwItZr01PAR3CLPojeAKgSjzeNS4373gi59hNulyDrPKEbh2zO9sCg== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + stream-events "^1.0.5" + uuid "^9.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -13292,6 +14792,14 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== +timeout-abort-controller@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz#2c3c3c66f13c783237987673c276cbd7a9762f29" + integrity sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ== + dependencies: + abort-controller "^3.0.0" + retimer "^2.0.0" + title-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" @@ -13307,6 +14815,13 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -13606,16 +15121,48 @@ u2f-api@0.2.7: resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + uglify-js@^3.1.4: version "3.16.1" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.1.tgz#0e7ec928b3d0b1e1d952bce634c384fd56377317" integrity sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ== +uglify-js@^3.7.7: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + uid2@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== +uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" + integrity sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA== + dependencies: + multibase "^3.0.0" + web-encoding "^1.0.2" + +uint8arrays@^2.0.5, uint8arrays@^2.1.3: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -13631,6 +15178,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +underscore@~1.13.2: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + undici@^5.4.0: version "5.5.1" resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" @@ -13709,6 +15261,14 @@ url-to-options@^1.0.1: resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== +ursa-optional@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" + integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== + dependencies: + bindings "^1.5.0" + nan "^2.14.2" + usb@^1.6.0: version "1.9.2" resolved "https://registry.yarnpkg.com/usb/-/usb-1.9.2.tgz#fb6b36f744ecc707a196c45a6ec72442cb6f2b73" @@ -13757,6 +15317,17 @@ util@^0.12.0: safe-buffer "^5.1.2" which-typed-array "^1.1.2" +util@^0.12.3: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utils-merge@1.0.1, utils-merge@1.x.x, utils-merge@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -13819,11 +15390,16 @@ validator@^13.7.0: resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== -varint@^5.0.0: +varint@^5.0.0, varint@^5.0.2, varint@~5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -13874,6 +15450,15 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-encoding@^1.0.2, web-encoding@^1.0.6: + version "1.1.5" + resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" + integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== + dependencies: + util "^0.12.3" + optionalDependencies: + "@zxing/text-encoding" "0.9.0" + web3-bzz@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.3.tgz#e36456905ce051138f9c3ce3623cbc73da088c2b" @@ -14545,6 +16130,11 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +workerpool@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + workerpool@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" @@ -14687,6 +16277,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmlcreate@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== + xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" From 89645f12bfc1e1045a124995c07b1fd7f7a000bf Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Thu, 3 Nov 2022 16:37:51 +0100 Subject: [PATCH 2/7] chore: bump @across-protocol/contracts-v2 --- package.json | 2 +- src/modules/configuration/index.ts | 4 ++-- .../web3/services/EthProvidersService.ts | 4 ++-- .../services/MerkleDistributorEventsQuerier.ts | 4 ++-- yarn.lock | 18 +++++++++--------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 3308aa60..b7da67c3 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "db:migration:run": "yarn typeorm -- migration:run -d ormconfig.ts" }, "dependencies": { - "@across-protocol/contracts-v2": "^1.0.5", + "@across-protocol/contracts-v2": "^1.0.7", "@nestjs/axios": "^0.0.8", "@nestjs/bull": "^0.5.5", "@nestjs/cli": "^8.2.4", diff --git a/src/modules/configuration/index.ts b/src/modules/configuration/index.ts index ad07195e..8ff099a8 100644 --- a/src/modules/configuration/index.ts +++ b/src/modules/configuration/index.ts @@ -64,10 +64,10 @@ export const configValues = () => ({ }, }, merkleDistributor: { - address: process.env.MERKLE_DISTRIBUTOR_ADDRESS || "0xc64226599444cA9b6d930603B507a04d8FA61AdD", // TODO: replace with mainnet + address: process.env.MERKLE_DISTRIBUTOR_ADDRESS || "0xF633b72A4C2Fb73b77A379bf72864A825aD35b6D", // TODO: replace with mainnet chainId: Number(process.env.MERKLE_DISTRIBUTOR_CHAIN_ID || "5"), referralsStartWindowIndex: Number(process.env.REFERRALS_START_WINDOW_INDEX || "1"), - startBlockNumber: 7866869, + startBlockNumber: 7884371, }, }, acxUsdPrice: 0.1, diff --git a/src/modules/web3/services/EthProvidersService.ts b/src/modules/web3/services/EthProvidersService.ts index d2e9d010..12df415b 100644 --- a/src/modules/web3/services/EthProvidersService.ts +++ b/src/modules/web3/services/EthProvidersService.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, MerkleDistributor__factory, SpokePool__factory } from "@across-protocol/contracts-v2"; +import { ERC20__factory, AcrossMerkleDistributor__factory, SpokePool__factory } from "@across-protocol/contracts-v2"; import { Injectable } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; import { ethers } from "ethers"; @@ -133,7 +133,7 @@ export class EthProvidersService { private setMerkleDistributorEventQuerier() { const provider = this.getProvider(this.appConfig.values.web3.merkleDistributor.chainId); if (provider) { - const merkleDistributor = MerkleDistributor__factory.connect( + const merkleDistributor = AcrossMerkleDistributor__factory.connect( this.appConfig.values.web3.merkleDistributor.address, provider, ); diff --git a/src/modules/web3/services/MerkleDistributorEventsQuerier.ts b/src/modules/web3/services/MerkleDistributorEventsQuerier.ts index cf84aaa2..5ea2a994 100644 --- a/src/modules/web3/services/MerkleDistributorEventsQuerier.ts +++ b/src/modules/web3/services/MerkleDistributorEventsQuerier.ts @@ -1,10 +1,10 @@ -import { MerkleDistributor } from "@across-protocol/contracts-v2"; +import { AcrossMerkleDistributor } from "@across-protocol/contracts-v2"; import { TypedEvent } from "@across-protocol/contracts-v2/dist/typechain/common"; import { Logger } from "@nestjs/common"; import { EventsQuerier } from "./EventsQuerier"; export class MerkleDistributorEventsQuerier extends EventsQuerier { - constructor(private merkleDistributor: MerkleDistributor, blockRangeSize?: number) { + constructor(private merkleDistributor: AcrossMerkleDistributor, blockRangeSize?: number) { super(merkleDistributor, new Logger(MerkleDistributorEventsQuerier.name), blockRangeSize); } diff --git a/yarn.lock b/yarn.lock index 7e5239f3..5550c638 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@across-protocol/contracts-v2@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-1.0.5.tgz#32c4891126568b6b1556df8850ed0ea7408e3aaa" - integrity sha512-qbY4Q2pEUOSNYXuvdqIXDU3pETqohXujPx6sxjcGDoFeDPd+WgVAixWMYoGg8D7JMdocPd5nwBtbox4gXTC21A== +"@across-protocol/contracts-v2@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@across-protocol/contracts-v2/-/contracts-v2-1.0.7.tgz#d7eb5fc5a987dbed1f45867c05159d6f621d7977" + integrity sha512-e9J9ZOqT9lCMMkeDb/4oe0U/urG48Ld/HA4YbteAhBecG2+53Rvq8EC4ds7VybYX4BbUhNgc0zsuCCRE/mPaUw== dependencies: "@defi-wonderland/smock" "^2.0.7" "@eth-optimism/contracts" "^0.5.11" "@openzeppelin/contracts" "^4.7.3" "@uma/common" "^2.28.0" "@uma/contracts-node" "^0.3.18" - "@uma/core" "^2.38.0" + "@uma/core" "^2.41.0" "@uma/merkle-distributor" "^1.3.38" arb-bridge-eth "^0.7.4" arb-bridge-peripherals "^1.0.5" @@ -3554,10 +3554,10 @@ "@uniswap/v3-core" "^1.0.0-rc.2" "@uniswap/v3-periphery" "^1.0.0-beta.23" -"@uma/core@^2.38.0": - version "2.38.0" - resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.38.0.tgz#67e1d246509a663a0703b70666e78f4ec410183f" - integrity sha512-Vb1CU8YsXBS71DHoKMYnWk3/NVeU3lhoT8D/s5b1OraOLr1MOToXAJpT0IEGA+fvpchwRFpN0qY5gMUY8MhkBg== +"@uma/core@^2.41.0": + version "2.41.0" + resolved "https://registry.yarnpkg.com/@uma/core/-/core-2.41.0.tgz#1a571c354b93745ab0353ec8bc98d14b4089e31f" + integrity sha512-k/KbZZJefO17JSEa7dJ6cYP6RwBsVPuR7fonjG+EUrGBBJJl/XL/M4GeIPcKpxpuVBCcI6QcmjW3Whwsapp62A== dependencies: "@gnosis.pm/safe-contracts" "^1.3.0" "@gnosis.pm/zodiac" "1.0.3" From 07b20084d30d428517491788e1fc5cef7a91894e Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Fri, 4 Nov 2022 11:39:21 +0100 Subject: [PATCH 3/7] fix: merkle distributor block events consumer --- src/modules/scraper/service.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/modules/scraper/service.ts b/src/modules/scraper/service.ts index 961ba87d..a5a79551 100644 --- a/src/modules/scraper/service.ts +++ b/src/modules/scraper/service.ts @@ -8,7 +8,7 @@ import { AppConfig } from "../configuration/configuration.service"; import { ProcessedBlock } from "./model/ProcessedBlock.entity"; import { MerkleDistributorProcessedBlock } from "./model/MerkleDistributorProcessedBlock.entity"; import { ScraperQueuesService } from "./service/ScraperQueuesService"; -import { BlocksEventsQueueMessage, ScraperQueue } from "./adapter/messaging"; +import { BlocksEventsQueueMessage, MerkleDistributorBlockEventsQueueMessage, ScraperQueue } from "./adapter/messaging"; import { wait } from "../../utils"; @Injectable() @@ -87,6 +87,14 @@ export class ScraperService { previousProcessedBlock.latestBlock = blockRange.to; } await this.merkleDistributorProcessedBlockRepository.save(previousProcessedBlock); + + await this.scraperQueuesService.publishMessage( + ScraperQueue.MerkleDistributorBlockEvents, + { + chainId, + ...blockRange, + }, + ); } /** From 393163c947e4661b1fd5f6f3e72007fe6de1ee8c Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Fri, 4 Nov 2022 11:53:10 +0100 Subject: [PATCH 4/7] refactor: make MerkleDistributor index start block configurable --- src/modules/configuration/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/configuration/index.ts b/src/modules/configuration/index.ts index 8ff099a8..d6fb08f5 100644 --- a/src/modules/configuration/index.ts +++ b/src/modules/configuration/index.ts @@ -67,7 +67,7 @@ export const configValues = () => ({ address: process.env.MERKLE_DISTRIBUTOR_ADDRESS || "0xF633b72A4C2Fb73b77A379bf72864A825aD35b6D", // TODO: replace with mainnet chainId: Number(process.env.MERKLE_DISTRIBUTOR_CHAIN_ID || "5"), referralsStartWindowIndex: Number(process.env.REFERRALS_START_WINDOW_INDEX || "1"), - startBlockNumber: 7884371, + startBlockNumber: Number(process.env.MERKLE_DISTRIBUTOR_START_BLOCK || 7884371), }, }, acxUsdPrice: 0.1, From 3615420f22d5c35bc8d406c0adad8c7d0c286b4f Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Mon, 7 Nov 2022 16:44:39 +0700 Subject: [PATCH 5/7] refactor: split up migrations and adjust claim entity --- migrations/1667312452969-Claim.ts | 33 -------------- ...667312452969-MerkleDistributorRecipient.ts | 29 ++++++++++++ ...3310964-MerkleDistributorProcessedBlock.ts | 20 +++++++++ migrations/1667813310965-Claim.ts | 44 +++++++++++++++++++ .../merkle-distributor-recipient.entity.ts | 2 +- .../model/merkle-distributor-window.entity.ts | 4 ++ src/modules/scraper/model/claim.entity.ts | 15 ++++++- 7 files changed, 112 insertions(+), 35 deletions(-) delete mode 100644 migrations/1667312452969-Claim.ts create mode 100644 migrations/1667312452969-MerkleDistributorRecipient.ts create mode 100644 migrations/1667813310964-MerkleDistributorProcessedBlock.ts create mode 100644 migrations/1667813310965-Claim.ts diff --git a/migrations/1667312452969-Claim.ts b/migrations/1667312452969-Claim.ts deleted file mode 100644 index a4b68204..00000000 --- a/migrations/1667312452969-Claim.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { MigrationInterface, QueryRunner } from "typeorm"; - -export class Claim1667312452969 implements MigrationInterface { - name = "Claim1667312452969"; - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query( - `ALTER TABLE "merkle_distributor_recipient" DROP CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre"`, - ); - await queryRunner.query( - `CREATE TABLE "claim" ("id" SERIAL NOT NULL, "caller" character varying NOT NULL, "accountIndex" integer NOT NULL, "windowIndex" integer NOT NULL, "account" character varying NOT NULL, "rewardToken" character varying NOT NULL, "blockNumber" integer NOT NULL, "claimedAt" TIMESTAMP NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UK_claim_windowIndex_accountIndex" UNIQUE ("windowIndex", "accountIndex"), CONSTRAINT "PK_466b305cc2e591047fa1ce58f81" PRIMARY KEY ("id"))`, - ); - await queryRunner.query(`CREATE INDEX "IX_claim_account" ON "claim" ("account") `); - await queryRunner.query( - `CREATE TABLE "merkle_distributor_processed_block" ("id" SERIAL NOT NULL, "chainId" integer NOT NULL, "latestBlock" integer NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_fb2eb512abaadb453e1cfef109e" PRIMARY KEY ("id"))`, - ); - await queryRunner.query( - `ALTER TABLE "merkle_distributor_recipient" ADD CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_address" UNIQUE ("merkleDistributorWindowId", "address")`, - ); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query( - `ALTER TABLE "merkle_distributor_recipient" DROP CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_address"`, - ); - await queryRunner.query(`DROP TABLE "merkle_distributor_processed_block"`); - await queryRunner.query(`DROP INDEX "public"."IX_claim_account"`); - await queryRunner.query(`DROP TABLE "claim"`); - await queryRunner.query( - `ALTER TABLE "merkle_distributor_recipient" ADD CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre" UNIQUE ("merkleDistributorWindowId", "address")`, - ); - } -} diff --git a/migrations/1667312452969-MerkleDistributorRecipient.ts b/migrations/1667312452969-MerkleDistributorRecipient.ts new file mode 100644 index 00000000..d72c907b --- /dev/null +++ b/migrations/1667312452969-MerkleDistributorRecipient.ts @@ -0,0 +1,29 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class MerkleDistributorRecipient1667312452969 implements MigrationInterface { + name = "MerkleDistributorRecipient1667312452969"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "merkle_distributor_recipient" + DROP CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre" + `); + await queryRunner.query(` + ALTER TABLE "merkle_distributor_recipient" + ADD CONSTRAINT "UK_merkle_distributor_recipient_windowId_address" + UNIQUE ("merkleDistributorWindowId", "address") + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "merkle_distributor_recipient" + DROP CONSTRAINT "UK_merkle_distributor_recipient_windowId_address" + `); + await queryRunner.query(` + ALTER TABLE "merkle_distributor_recipient" + ADD CONSTRAINT "UK_merkle_distributor_recipient_merkleDistributorWindowId_addre" + UNIQUE ("merkleDistributorWindowId", "address") + `); + } +} diff --git a/migrations/1667813310964-MerkleDistributorProcessedBlock.ts b/migrations/1667813310964-MerkleDistributorProcessedBlock.ts new file mode 100644 index 00000000..aa225340 --- /dev/null +++ b/migrations/1667813310964-MerkleDistributorProcessedBlock.ts @@ -0,0 +1,20 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class MerkleDistributorProcessedBlock1667813310964 implements MigrationInterface { + name = "MerkleDistributorProcessedBlock1667813310964"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TABLE "merkle_distributor_processed_block" ( + "id" SERIAL NOT NULL, + "chainId" integer NOT NULL, + "latestBlock" integer NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + CONSTRAINT "PK_fb2eb512abaadb453e1cfef109e" PRIMARY KEY ("id")) + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE "merkle_distributor_processed_block"`); + } +} diff --git a/migrations/1667813310965-Claim.ts b/migrations/1667813310965-Claim.ts new file mode 100644 index 00000000..57325b66 --- /dev/null +++ b/migrations/1667813310965-Claim.ts @@ -0,0 +1,44 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class Claim1667813310965 implements MigrationInterface { + name = "Claim1667813310965"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + CREATE TABLE "claim" ( + "id" SERIAL NOT NULL, + "caller" character varying NOT NULL, + "accountIndex" integer NOT NULL, + "windowIndex" integer NOT NULL, + "account" character varying NOT NULL, + "rewardToken" character varying NOT NULL, + "blockNumber" integer NOT NULL, + "claimedAt" TIMESTAMP NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT now(), + "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), + "merkleDistributorWindowId" integer, + CONSTRAINT "UK_claim_windowIndex_accountIndex" UNIQUE ( + "windowIndex", + "accountIndex" + ), + CONSTRAINT "PK_466b305cc2e591047fa1ce58f81" PRIMARY KEY ("id")) + `); + await queryRunner.query(`CREATE INDEX "IX_claim_account" ON "claim" ("account")`); + await queryRunner.query(` + ALTER TABLE "claim" + ADD CONSTRAINT "FK_169ca2a2e031f01f62d81dbf1a0" + FOREIGN KEY ("merkleDistributorWindowId") + REFERENCES "merkle_distributor_window"("id") + ON DELETE NO ACTION ON UPDATE NO ACTION + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "claim" DROP CONSTRAINT "FK_169ca2a2e031f01f62d81dbf1a0" + `); + await queryRunner.query(`DROP TABLE "merkle_distributor_processed_block"`); + await queryRunner.query(`DROP INDEX "public"."IX_claim_account"`); + await queryRunner.query(`DROP TABLE "claim"`); + } +} diff --git a/src/modules/airdrop/model/merkle-distributor-recipient.entity.ts b/src/modules/airdrop/model/merkle-distributor-recipient.entity.ts index 634b1721..dc5d3772 100644 --- a/src/modules/airdrop/model/merkle-distributor-recipient.entity.ts +++ b/src/modules/airdrop/model/merkle-distributor-recipient.entity.ts @@ -13,7 +13,7 @@ export type MerkleDistributorRecipientPayload = { @Entity() // A recipient address can't appear twice for the same window -@Unique("UK_merkle_distributor_recipient_merkleDistributorWindowId_address", ["merkleDistributorWindowId", "address"]) +@Unique("UK_merkle_distributor_recipient_windowId_address", ["merkleDistributorWindowId", "address"]) export class MerkleDistributorRecipient { @PrimaryGeneratedColumn() id: number; diff --git a/src/modules/airdrop/model/merkle-distributor-window.entity.ts b/src/modules/airdrop/model/merkle-distributor-window.entity.ts index 7d6a3e6a..8a4364ca 100644 --- a/src/modules/airdrop/model/merkle-distributor-window.entity.ts +++ b/src/modules/airdrop/model/merkle-distributor-window.entity.ts @@ -1,5 +1,6 @@ import { Column, CreateDateColumn, Entity, OneToMany, PrimaryGeneratedColumn, Unique } from "typeorm"; import { MerkleDistributorRecipient } from "./merkle-distributor-recipient.entity"; +import { Claim } from "../../scraper/model/claim.entity"; @Entity() // Don't allow duplicates of the window index @@ -29,6 +30,9 @@ export class MerkleDistributorWindow { @OneToMany(() => MerkleDistributorRecipient, (recipient) => recipient.merkleDistributorWindow) recipients: MerkleDistributorRecipient; + @OneToMany(() => Claim, (claim) => claim.merkleDistributorWindow) + claims: Claim; + @CreateDateColumn() createdAt: Date; } diff --git a/src/modules/scraper/model/claim.entity.ts b/src/modules/scraper/model/claim.entity.ts index 356d2956..fccf3db7 100644 --- a/src/modules/scraper/model/claim.entity.ts +++ b/src/modules/scraper/model/claim.entity.ts @@ -1,4 +1,14 @@ -import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn, Unique, UpdateDateColumn } from "typeorm"; +import { + Column, + CreateDateColumn, + Entity, + Index, + PrimaryGeneratedColumn, + Unique, + UpdateDateColumn, + ManyToOne, +} from "typeorm"; +import { MerkleDistributorWindow } from "../../airdrop/model/merkle-distributor-window.entity"; @Entity() @Unique("UK_claim_windowIndex_accountIndex", ["windowIndex", "accountIndex"]) @@ -28,6 +38,9 @@ export class Claim { @Column() claimedAt: Date; + @ManyToOne(() => MerkleDistributorWindow, (window) => window.claims) + merkleDistributorWindow: MerkleDistributorWindow; + @CreateDateColumn() createdAt: Date; From 2c547f627a8d600d877a17c4dd30860d33ab9731 Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Mon, 7 Nov 2022 17:58:43 +0700 Subject: [PATCH 6/7] refactor: add guards and rename --- ...r.ts => MerkleDistributorBlocksEventsConsumer.ts} | 8 ++++---- src/modules/scraper/adapter/messaging/index.ts | 4 ++-- src/modules/scraper/entry-point/http/controller.ts | 12 +++++++++--- src/modules/scraper/module.ts | 4 ++-- src/modules/scraper/service.ts | 6 +++--- src/modules/scraper/service/ScraperQueuesService.ts | 8 ++++---- 6 files changed, 24 insertions(+), 18 deletions(-) rename src/modules/scraper/adapter/messaging/{MerkleDistributorBlockEventsConsumer.ts => MerkleDistributorBlocksEventsConsumer.ts} (87%) diff --git a/src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts b/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts similarity index 87% rename from src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts rename to src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts index 1737acc9..5fe6bb23 100644 --- a/src/modules/scraper/adapter/messaging/MerkleDistributorBlockEventsConsumer.ts +++ b/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts @@ -5,12 +5,12 @@ import { InjectRepository } from "@nestjs/typeorm"; import { Repository, QueryFailedError } from "typeorm"; import { EthProvidersService } from "../../../web3/services/EthProvidersService"; -import { MerkleDistributorBlockEventsQueueMessage, ScraperQueue } from "."; +import { MerkleDistributorBlocksEventsQueueMessage, ScraperQueue } from "."; import { ClaimedEvent } from "@across-protocol/contracts-v2/dist/typechain/MerkleDistributor"; import { Claim } from "../../model/claim.entity"; import { utils } from "ethers"; -@Processor(ScraperQueue.MerkleDistributorBlockEvents) +@Processor(ScraperQueue.MerkleDistributorBlocksEvents) export class MerkleDistributorBlocksEventsConsumer { private logger = new Logger(MerkleDistributorBlocksEventsConsumer.name); @@ -20,7 +20,7 @@ export class MerkleDistributorBlocksEventsConsumer { ) {} @Process({ concurrency: 1 }) - private async process(job: Job) { + private async process(job: Job) { const { chainId, from, to } = job.data; const claimedEvents: ClaimedEvent[] = await this.providers.getMerkleDistributorQuerier().getClaimedEvents(from, to); this.logger.log(`(${from}, ${to}) - chainId ${chainId} - found ${claimedEvents.length} ClaimedEvent`); @@ -58,6 +58,6 @@ export class MerkleDistributorBlocksEventsConsumer { @OnQueueFailed() private onQueueFailed(job: Job, error: Error) { - this.logger.error(`${ScraperQueue.MerkleDistributorBlockEvents} ${JSON.stringify(job.data)} failed: ${error}`); + this.logger.error(`${ScraperQueue.MerkleDistributorBlocksEvents} ${JSON.stringify(job.data)} failed: ${error}`); } } diff --git a/src/modules/scraper/adapter/messaging/index.ts b/src/modules/scraper/adapter/messaging/index.ts index 9b023aa4..b2580843 100644 --- a/src/modules/scraper/adapter/messaging/index.ts +++ b/src/modules/scraper/adapter/messaging/index.ts @@ -6,7 +6,7 @@ export enum ScraperQueue { DepositReferral = "DepositReferral", TokenPrice = "TokenPrice", DepositFilledDate = "DepositFilledDate", - MerkleDistributorBlockEvents = "MerkleDistributorBlockEvents", + MerkleDistributorBlocksEvents = "MerkleDistributorBlocksEvents", } export type BlocksEventsQueueMessage = { @@ -15,7 +15,7 @@ export type BlocksEventsQueueMessage = { to: number; }; -export type MerkleDistributorBlockEventsQueueMessage = { +export type MerkleDistributorBlocksEventsQueueMessage = { chainId: number; from: number; to: number; diff --git a/src/modules/scraper/entry-point/http/controller.ts b/src/modules/scraper/entry-point/http/controller.ts index 00aa7851..debbda3e 100644 --- a/src/modules/scraper/entry-point/http/controller.ts +++ b/src/modules/scraper/entry-point/http/controller.ts @@ -5,7 +5,7 @@ import { JwtAuthGuard } from "../../../auth/entry-points/http/jwt.guard"; import { Role, Roles, RolesGuard } from "../../../auth/entry-points/http/roles"; import { BlocksEventsQueueMessage, - MerkleDistributorBlockEventsQueueMessage, + MerkleDistributorBlocksEventsQueueMessage, DepositFilledDateQueueMessage, DepositReferralQueueMessage, ScraperQueue, @@ -20,6 +20,9 @@ export class ScraperController { @Post("scraper/blocks") @ApiTags("scraper") + @Roles(Role.Admin) + @UseGuards(JwtAuthGuard, RolesGuard) + @ApiBearerAuth() async processBlocks(@Req() req: Request, @Body() body: ProcessBlocksBody) { const { chainId, from, to } = body; await this.scraperQueuesService.publishMessage(ScraperQueue.BlocksEvents, { @@ -31,10 +34,13 @@ export class ScraperController { @Post("scraper/blocks/merkle-distributor") @ApiTags("scraper") + @Roles(Role.Admin) + @UseGuards(JwtAuthGuard, RolesGuard) + @ApiBearerAuth() async processMerkleDistributorBlocks(@Req() req: Request, @Body() body: ProcessBlocksBody) { const { chainId, from, to } = body; - await this.scraperQueuesService.publishMessage( - ScraperQueue.MerkleDistributorBlockEvents, + await this.scraperQueuesService.publishMessage( + ScraperQueue.MerkleDistributorBlocksEvents, { chainId, from, diff --git a/src/modules/scraper/module.ts b/src/modules/scraper/module.ts index e4a00065..875294b5 100644 --- a/src/modules/scraper/module.ts +++ b/src/modules/scraper/module.ts @@ -12,7 +12,7 @@ import { DepositFixture } from "./adapter/db/deposit-fixture"; import { ScraperQueue } from "./adapter/messaging"; import { BlockNumberConsumer } from "./adapter/messaging/BlockNumberConsumer"; import { BlocksEventsConsumer } from "./adapter/messaging/BlocksEventsConsumer"; -import { MerkleDistributorBlocksEventsConsumer } from "./adapter/messaging/MerkleDistributorBlockEventsConsumer"; +import { MerkleDistributorBlocksEventsConsumer } from "./adapter/messaging/MerkleDistributorBlocksEventsConsumer"; import { DepositFilledDateConsumer } from "./adapter/messaging/DepositFilledDateConsumer"; import { DepositReferralConsumer } from "./adapter/messaging/DepositReferralConsumer"; import { FillEventsConsumer } from "./adapter/messaging/FillEventsConsumer"; @@ -54,7 +54,7 @@ import { ScraperQueuesService } from "./service/ScraperQueuesService"; name: ScraperQueue.BlocksEvents, }), BullModule.registerQueue({ - name: ScraperQueue.MerkleDistributorBlockEvents, + name: ScraperQueue.MerkleDistributorBlocksEvents, }), BullModule.registerQueue({ name: ScraperQueue.TokenDetails, diff --git a/src/modules/scraper/service.ts b/src/modules/scraper/service.ts index a5a79551..33b90590 100644 --- a/src/modules/scraper/service.ts +++ b/src/modules/scraper/service.ts @@ -8,7 +8,7 @@ import { AppConfig } from "../configuration/configuration.service"; import { ProcessedBlock } from "./model/ProcessedBlock.entity"; import { MerkleDistributorProcessedBlock } from "./model/MerkleDistributorProcessedBlock.entity"; import { ScraperQueuesService } from "./service/ScraperQueuesService"; -import { BlocksEventsQueueMessage, MerkleDistributorBlockEventsQueueMessage, ScraperQueue } from "./adapter/messaging"; +import { BlocksEventsQueueMessage, MerkleDistributorBlocksEventsQueueMessage, ScraperQueue } from "./adapter/messaging"; import { wait } from "../../utils"; @Injectable() @@ -88,8 +88,8 @@ export class ScraperService { } await this.merkleDistributorProcessedBlockRepository.save(previousProcessedBlock); - await this.scraperQueuesService.publishMessage( - ScraperQueue.MerkleDistributorBlockEvents, + await this.scraperQueuesService.publishMessage( + ScraperQueue.MerkleDistributorBlocksEvents, { chainId, ...blockRange, diff --git a/src/modules/scraper/service/ScraperQueuesService.ts b/src/modules/scraper/service/ScraperQueuesService.ts index e75547b4..f6f6ba39 100644 --- a/src/modules/scraper/service/ScraperQueuesService.ts +++ b/src/modules/scraper/service/ScraperQueuesService.ts @@ -9,7 +9,7 @@ export class ScraperQueuesService { public constructor( @InjectQueue(ScraperQueue.BlocksEvents) private blocksEventsQueue: Queue, - @InjectQueue(ScraperQueue.MerkleDistributorBlockEvents) private merkleDistributorBlocksEventsQueue: Queue, + @InjectQueue(ScraperQueue.MerkleDistributorBlocksEvents) private merkleDistributorBlocksEventsQueue: Queue, @InjectQueue(ScraperQueue.FillEvents) private fillEventsQueue: Queue, @InjectQueue(ScraperQueue.BlockNumber) private blockNumberQueue: Queue, @InjectQueue(ScraperQueue.TokenDetails) private tokenDetailsQueue: Queue, @@ -23,7 +23,7 @@ export class ScraperQueuesService { .then((data) => this.logger.log(`${ScraperQueue.BlocksEvents} ${JSON.stringify(data)}`)); this.merkleDistributorBlocksEventsQueue .getJobCounts() - .then((data) => this.logger.log(`${ScraperQueue.MerkleDistributorBlockEvents} ${JSON.stringify(data)}`)); + .then((data) => this.logger.log(`${ScraperQueue.MerkleDistributorBlocksEvents} ${JSON.stringify(data)}`)); this.fillEventsQueue .getJobCounts() .then((data) => this.logger.log(`${ScraperQueue.FillEvents} ${JSON.stringify(data)}`)); @@ -60,7 +60,7 @@ export class ScraperQueuesService { await this.tokenPriceQueue.add(message); } else if (queue === ScraperQueue.DepositFilledDate) { await this.depositFilledDateQueue.add(message); - } else if (queue === ScraperQueue.MerkleDistributorBlockEvents) { + } else if (queue === ScraperQueue.MerkleDistributorBlocksEvents) { await this.merkleDistributorBlocksEventsQueue.add(message); } } @@ -80,7 +80,7 @@ export class ScraperQueuesService { await this.tokenPriceQueue.addBulk(messages.map((m) => ({ data: m }))); } else if (queue === ScraperQueue.DepositFilledDate) { await this.depositFilledDateQueue.addBulk(messages.map((m) => ({ data: m }))); - } else if (queue === ScraperQueue.MerkleDistributorBlockEvents) { + } else if (queue === ScraperQueue.MerkleDistributorBlocksEvents) { await this.merkleDistributorBlocksEventsQueue.addBulk(messages.map((m) => ({ data: m }))); } } From 0cb04e35fd02e4099c1bd24245b8fbbecb6a129d Mon Sep 17 00:00:00 2001 From: Dong-Ha Kim Date: Mon, 7 Nov 2022 18:06:37 +0700 Subject: [PATCH 7/7] refactor: reuse logic in scraper service for block events --- .../MerkleDistributorBlocksEventsConsumer.ts | 10 +- src/modules/scraper/service.ts | 96 +++++++++---------- 2 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts b/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts index 5fe6bb23..ec6405ad 100644 --- a/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts +++ b/src/modules/scraper/adapter/messaging/MerkleDistributorBlocksEventsConsumer.ts @@ -27,7 +27,7 @@ export class MerkleDistributorBlocksEventsConsumer { for (const event of claimedEvents) { try { - const claim = await this.fromClaimedEventToClaim(event); + const claim = await this.fromClaimedEventToClaim(event, chainId); await this.claimRepository.insert(claim); } catch (error) { if (error instanceof QueryFailedError && error.driverError?.code === "23505") { @@ -40,10 +40,10 @@ export class MerkleDistributorBlocksEventsConsumer { } } - private async fromClaimedEventToClaim(event: ClaimedEvent) { - const { blockNumber, getBlock } = event; + private async fromClaimedEventToClaim(event: ClaimedEvent, chainId: number) { + const { blockNumber } = event; const { caller, accountIndex, windowIndex, account, rewardToken } = event.args; - const blockTimestamp = (await getBlock()).timestamp; + const blockTimestamp = (await this.providers.getCachedBlock(chainId, blockNumber)).date; return this.claimRepository.create({ caller, @@ -52,7 +52,7 @@ export class MerkleDistributorBlocksEventsConsumer { account: utils.getAddress(account), rewardToken: utils.getAddress(rewardToken), blockNumber: blockNumber, - claimedAt: new Date(blockTimestamp * 1000).toISOString(), + claimedAt: blockTimestamp, }); } diff --git a/src/modules/scraper/service.ts b/src/modules/scraper/service.ts index 33b90590..565100c3 100644 --- a/src/modules/scraper/service.ts +++ b/src/modules/scraper/service.ts @@ -30,11 +30,13 @@ export class ScraperService { public async run() { while (true) { try { + const latestBlocks = await this.getLatestBlocks(); + if (this.appConfig.values.enableSpokePoolsEventsProcessing) { - await this.publishBlocks(); + await this.publishBlocks(latestBlocks); } if (this.appConfig.values.enableMerkleDistributorEventsProcessing) { - await this.publishMerkleDistributorBlocks(); + await this.publishMerkleDistributorBlocks(latestBlocks); } } catch (error) { this.logger.error(error); @@ -43,10 +45,13 @@ export class ScraperService { } } - public async publishBlocks() { - const latestBlocks = await this.getLatestBlocks(); + public async publishBlocks(latestBlocks: Record) { this.logger.log(JSON.stringify(latestBlocks)); - const blockRanges = await this.determineBlockRanges(latestBlocks); + const blockRanges = await this.determineBlockRanges( + latestBlocks, + this.appConfig.values.web3.spokePoolContracts, + this.processedBlockRepository, + ); for (const chainId of Object.keys(blockRanges)) { const { from, to } = blockRanges[chainId]; @@ -58,36 +63,22 @@ export class ScraperService { } } - public async publishMerkleDistributorBlocks() { + public async publishMerkleDistributorBlocks(latestBlocks: Record) { const chainId = this.appConfig.values.web3.merkleDistributor.chainId; const configStartBlockNumber = this.appConfig.values.web3.merkleDistributor.startBlockNumber; - const provider = this.providers.getProvider(chainId); - const latestBlock = await provider.getBlock("latest"); - let previousProcessedBlock = await this.merkleDistributorProcessedBlockRepository.findOne({ - where: { chainId }, - }); + const latestBlockNumber = latestBlocks[chainId]; - const blockRange = this.determineBlockRange( + const blockRange = await this.determineBlockRange( chainId, - latestBlock.number, + latestBlockNumber, configStartBlockNumber, - previousProcessedBlock?.latestBlock, + this.merkleDistributorProcessedBlockRepository, ); if (!blockRange) { return; } - if (!previousProcessedBlock) { - previousProcessedBlock = this.merkleDistributorProcessedBlockRepository.create({ - chainId, - latestBlock: blockRange.to, - }); - } else { - previousProcessedBlock.latestBlock = blockRange.to; - } - await this.merkleDistributorProcessedBlockRepository.save(previousProcessedBlock); - await this.scraperQueuesService.publishMessage( ScraperQueue.MerkleDistributorBlocksEvents, { @@ -117,60 +108,67 @@ export class ScraperService { * `to` is a block number up to the latest block number from chain, but capped at a max value. This way we avoid * huge block ranges to be processed. */ - public async determineBlockRanges(latestBlocks: Record) { + public async determineBlockRanges( + latestBlocks: Record, + startBlockNumbers: Record, + blockRepository: Repository, + ) { const blockRanges: Record = {}; for (const chainIdStr of Object.keys(latestBlocks)) { const chainId = parseInt(chainIdStr); - let previousProcessedBlock = await this.processedBlockRepository.findOne({ - where: { chainId }, - }); - const configStartBlockNumber = this.appConfig.values.web3.spokePoolContracts[chainId].startBlockNumber; + const configStartBlockNumber = startBlockNumbers[chainId].startBlockNumber; - const blockRange = this.determineBlockRange( + const blockRange = await this.determineBlockRange( chainId, latestBlocks[chainId], configStartBlockNumber, - previousProcessedBlock?.latestBlock, + blockRepository, ); - if (!blockRange) { - continue; + if (blockRange) { + blockRanges[chainId] = blockRange; } - - if (!previousProcessedBlock) { - previousProcessedBlock = this.processedBlockRepository.create({ - chainId, - latestBlock: blockRange.to, - }); - } else { - previousProcessedBlock.latestBlock = blockRange.to; - } - await this.processedBlockRepository.save(previousProcessedBlock); } return blockRanges; } - public determineBlockRange( + public async determineBlockRange( chainId: number, latestBlockNumber: number, configStartBlockNumber: number, - previousProcessedBlockNumber?: number, + blockRepository: Repository, ) { + let previousProcessedBlock = await blockRepository.findOne({ + where: { chainId }, + }); + let from = 1; - if (previousProcessedBlockNumber) { - from = previousProcessedBlockNumber + 1; + if (previousProcessedBlock) { + from = previousProcessedBlock.latestBlock + 1; } else if (configStartBlockNumber) { from = configStartBlockNumber; } const to = Math.min(latestBlockNumber - this.getFollowingDistance(chainId), from + this.getMinBlockRange(chainId)); - if (from < to) { - return { from, to }; + if (from >= to) { + return; + } + + if (!previousProcessedBlock) { + previousProcessedBlock = blockRepository.create({ + chainId, + latestBlock: to, + }); + } else { + previousProcessedBlock.latestBlock = to; } + await blockRepository.save(previousProcessedBlock); + + return { from, to }; } public getMinBlockRange(chainId: number) {