From 005fffab6b6c6f29cea292ffa8d55fc91fa4930d Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 13 May 2024 10:14:41 +0200 Subject: [PATCH] Add direct grants lite (#3341) * feat: add direct grants v2 Author: 0xKurt fix: donations/when application is null (#3411) * fix: donations/when application is null * remove log updated url update env fix tests remove react() plugin fix placeholder error * changed v1/v2 switch * regenerate lock * temp update switch for dg v2 * fix * rm log * recipientsCounter * fix bug * fix --------- Co-authored-by: Aditya Anand M C Co-authored-by: Jaxcoder --- package.json | 8 +- packages/builder/src/actions/rounds.ts | 1 + packages/builder/src/components/Header.tsx | 2 + .../components/application/AboutProject.tsx | 4 + .../builder/src/components/base/Toast.tsx | 7 +- .../builder/src/components/rounds/Show.tsx | 54 +- packages/builder/src/utils/components.ts | 5 +- packages/common/.env.test | 2 +- packages/common/package.json | 2 +- packages/common/src/allo/allo.ts | 18 + packages/common/src/allo/application.ts | 2 +- packages/common/src/allo/backends/allo-v1.ts | 190 ++- packages/common/src/allo/backends/allo-v2.ts | 159 +- packages/common/src/allo/common.ts | 5 + .../common/src/allo/transaction-sender.ts | 4 +- packages/common/src/index.ts | 3 + packages/common/src/types.ts | 2 +- packages/common/tsconfig.json | 2 +- packages/data-layer/src/data-layer.test.ts | 12 +- packages/data-layer/src/data-layer.ts | 17 + packages/data-layer/src/data.types.ts | 21 + packages/data-layer/src/queries.ts | 24 + packages/data-layer/src/utils.ts | 1 + packages/grant-explorer/package.json | 1 - .../grant-explorer/src/features/api/utils.ts | 10 +- .../src/features/common/ProjectCard.tsx | 1 - .../src/features/common/SearchInput.tsx | 11 +- .../common/__tests__/SearchInput.test.tsx | 2 +- .../features/discovery/RoundStrategyBadge.tsx | 1 + .../src/features/round/ViewRoundPage.tsx | 50 +- packages/grant-explorer/vitest.config.ts | 3 +- packages/round-manager/src/constants.ts | 2 +- .../BulkUpdateGrantApplicationContext.tsx | 260 +-- .../src/context/application/usePayout.ts | 128 +- .../context/program/ReadProgramContext.tsx | 1 - .../src/context/round/RoundContext.tsx | 1 - .../src/features/api/AlloWrapper.tsx | 1 - .../src/features/api/application.ts | 51 +- .../round-manager/src/features/api/program.ts | 2 +- .../round-manager/src/features/api/round.ts | 8 +- .../src/features/common/parseRoundDates.tsx | 39 +- .../features/program/CreateProgramPage.tsx | 5 +- .../src/features/program/ViewProgramPage.tsx | 150 +- .../round/ApplicationDirectPayout.tsx | 69 +- .../features/round/ApplicationsToReview.tsx | 129 +- .../src/features/round/FundContract.tsx | 2 - .../features/round/ViewApplicationPage.tsx | 14 +- .../src/features/round/ViewRoundPage.tsx | 13 +- .../src/features/round/ViewRoundSettings.tsx | 559 +++---- .../ApplicationDirectPayout.test.tsx | 95 +- .../__tests__/ApplicationsApproved.test.tsx | 80 +- .../__tests__/ApplicationsToReview.test.tsx | 24 +- .../src/features/round/usePayouts.tsx | 57 +- packages/round-manager/tsconfig.json | 4 +- pnpm-lock.yaml | 1410 ++++++++++------- 55 files changed, 2114 insertions(+), 1614 deletions(-) diff --git a/package.json b/package.json index 796c968903..a0c2ce8ee5 100644 --- a/package.json +++ b/package.json @@ -36,13 +36,13 @@ "test:data-layer": "turbo run test --filter=data-layer" }, "devDependencies": { - "@commitlint/cli": "^17.7.1", - "@commitlint/config-conventional": "^17.7.0", - "turbo": "^1.12.3" + "@commitlint/cli": "^17.8.1", + "@commitlint/config-conventional": "^17.8.1", + "turbo": "^1.13.3" }, "dependencies": { "concurrently": "^8.2.2", - "prettier": "^3.0.3" + "prettier": "^3.2.5" }, "pnpm": { "overrides": { diff --git a/packages/builder/src/actions/rounds.ts b/packages/builder/src/actions/rounds.ts index 9e120455f2..506c3d2986 100644 --- a/packages/builder/src/actions/rounds.ts +++ b/packages/builder/src/actions/rounds.ts @@ -83,6 +83,7 @@ export const loadRound = switch (v2Round.strategyName) { case "allov1.Direct": case "allov2.DirectGrantsSimpleStrategy": + case "allov2.DirectGrantsLiteStrategy": // application times == round times roundPayoutStrategy = RoundCategory.Direct; applicationsStartTime = diff --git a/packages/builder/src/components/Header.tsx b/packages/builder/src/components/Header.tsx index e5f09a0e9e..959c14f18d 100644 --- a/packages/builder/src/components/Header.tsx +++ b/packages/builder/src/components/Header.tsx @@ -37,6 +37,7 @@ export default function Header({ diff --git a/packages/builder/src/components/rounds/Show.tsx b/packages/builder/src/components/rounds/Show.tsx index adc39c6d02..d0ca2b5949 100644 --- a/packages/builder/src/components/rounds/Show.tsx +++ b/packages/builder/src/components/rounds/Show.tsx @@ -146,7 +146,16 @@ function ShowRound() { let votingHasStarted = false; let votingHasEnded = false; - // covers QF and DF application and voting periods condition evaluation + const isDirectRound: boolean = + roundState?.round?.payoutStrategy === RoundCategory.Direct; + + const roundStartTime = !isDirectRound + ? roundState?.round?.applicationsStartTime + : roundState?.round?.roundStartTime; + const roundEndTime = !isDirectRound + ? roundState?.round?.applicationsEndTime + : roundState?.round?.roundEndTime; + if ( roundState?.round && roundState?.round?.applicationsStartTime !== undefined && @@ -177,6 +186,9 @@ function ShowRound() { applicationsHaveEnded, votingHasStarted, votingHasEnded, + isDirectRound, + roundStartTime, + roundEndTime, }; }, shallowEqual); @@ -192,15 +204,22 @@ function ShowRound() { ); const renderRoundDate = () => - roundData && ( + roundData && + (props.isDirectRound ? ( <> - {formatTimeUTC(roundData.roundStartTime)} -{" "} - {isInfinite(roundData.roundEndTime) || !roundData.roundEndTime + {formatTimeUTC(props.roundStartTime as number)} -{" "} + {isInfinite(props.roundEndTime as number) || !props.roundEndTime ? "No End Date" - : formatTimeUTC(roundData.roundEndTime)} - {} + : formatTimeUTC(props.roundEndTime)} - ); + ) : ( + <> + {formatTimeUTC(Number(props.roundStartTime))} -{" "} + {isInfinite(Number(props.roundEndTime)) || !props.roundEndTime + ? "No End Date" + : formatTimeUTC(props.roundEndTime)} + + )); const [, setRoundToApply] = useLocalStorage("roundToApply", null); const [roundApplicationModal, setToggleRoundApplicationModal] = @@ -241,7 +260,7 @@ function ShowRound() { setRoundData(props.round); if (!props.round.tags.includes(alloVersion)) { - const roundVersion = props.round.tags.find((tag) => + const roundVersion = props.round.tags.find((tag: string) => tag.startsWith("allo-") ); if (roundVersion === undefined) { @@ -342,7 +361,6 @@ function ShowRound() { ); } - const isDirectRound = props.round?.payoutStrategy === RoundCategory.Direct; return (
- {/*
- Matching Funds Available: - $XXX,XXX -
*/}
{roundData?.roundMetadata.eligibility?.description}
- {!isDirectRound && ( +
+ Application Period: + {renderApplicationDate()} +
+ {!props.isDirectRound && (
- Application Period: - {renderApplicationDate()} + Round Dates: + {renderRoundDate()}
)} -
- Round Dates: - {renderRoundDate()} -
Eligibility Requirements: {roundData?.roundMetadata?.eligibility?.requirements.map( diff --git a/packages/builder/src/utils/components.ts b/packages/builder/src/utils/components.ts index 825cff6c1d..9135092b04 100644 --- a/packages/builder/src/utils/components.ts +++ b/packages/builder/src/utils/components.ts @@ -1,3 +1,4 @@ +import { isInfiniteDate } from "common"; import { getConfig } from "common/src/config"; import PinataClient from "common/src/services/pinata"; import { DefaultProjectBanner, DefaultProjectLogo } from "../assets"; @@ -67,7 +68,7 @@ export const formatTimeUTC = (ts: number) => { export const formatDateFromString = (ts: string) => new Date(ts).toLocaleDateString(); -export const isInfinite = (number: Number) => - number === Number.MAX_SAFE_INTEGER || !number; +export const isInfinite = (number: Number): boolean => + isInfiniteDate(new Date(number.toString())); export const formatDateAsNumber = (ts: string) => Date.parse(ts) / 1000; diff --git a/packages/common/.env.test b/packages/common/.env.test index 2fc419ef26..d03e29a885 100644 --- a/packages/common/.env.test +++ b/packages/common/.env.test @@ -18,7 +18,7 @@ REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/453 REACT_APP_GRANTS_STACK_SEARCH_API_BASE_URL="https://gitcoin-search-dev.fly.dev" REACT_APP_SUBGRAPH_BASE_API="https://api.studio.thegraph.com/query/45391/grants-round-base/v0.0.1" REACT_APP_SUBGRAPH_SCROLL_API="https://api.studio.thegraph.com/query/45391/grants-round-scroll/v0.0.2" -REACT_APP_ALLO_API_URL="https://indexer-staging.fly.dev/graphql" +REACT_APP_ALLO_API_URL="https://grants-stack-indexer-v2.gitcoin.co/graphql" REACT_APP_PINATA_JWT=token-test REACT_APP_PINATA_BASE_URL=http://localhost REACT_APP_SUBGRAPH_SEPOLIA_API=”https://api.thegraph.com/subgraphs/name/bhargavaparoksham/grants-round-sepolia-testnet” diff --git a/packages/common/package.json b/packages/common/package.json index aed4a9cf3f..d3f2b75bae 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -16,7 +16,7 @@ "test:watch": "vitest watch" }, "dependencies": { - "@allo-team/allo-v2-sdk": "^1.0.61", + "@allo-team/allo-v2-sdk": "1.0.67", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@gitcoinco/passport-sdk-types": "^0.2.0", diff --git a/packages/common/src/allo/allo.ts b/packages/common/src/allo/allo.ts index 28a5259407..6f923664fe 100644 --- a/packages/common/src/allo/allo.ts +++ b/packages/common/src/allo/allo.ts @@ -136,6 +136,7 @@ export interface Allo { index: number; status: ApplicationStatus; }[]; + strategy?: RoundCategory; }) => AlloOperation< Result, { @@ -213,6 +214,23 @@ export interface Allo { indexingStatus: Result; } >; + + payoutDirectGrants: (args: { + roundId: Hex | number; + token: Hex; + amount: bigint; + recipientAddress: Hex; + recipientId: Hex; + vault?: Hex; + applicationIndex?: number; + }) => AlloOperation< + Result<{ blockNumber: bigint }>, + { + transaction: Result; + transactionStatus: Result; + indexingStatus: Result; + } + >; } export { AlloOperation }; diff --git a/packages/common/src/allo/application.ts b/packages/common/src/allo/application.ts index f910307c42..aefd158d10 100644 --- a/packages/common/src/allo/application.ts +++ b/packages/common/src/allo/application.ts @@ -46,7 +46,7 @@ export function buildUpdatedRowsOfApplicationStatuses(args: { statusToNumber: (status: ApplicationStatus) => bigint; bitsPerStatus: number; }): { index: bigint; statusRow: bigint }[] { - if (args.bitsPerStatus % 2 !== 0) { + if (args.bitsPerStatus > 1 && args.bitsPerStatus % 2 !== 0) { throw new Error("bitsPerStatus must be a multiple of 2"); } diff --git a/packages/common/src/allo/backends/allo-v1.ts b/packages/common/src/allo/backends/allo-v1.ts index 74b51303d6..39a0b087fd 100644 --- a/packages/common/src/allo/backends/allo-v1.ts +++ b/packages/common/src/allo/backends/allo-v1.ts @@ -55,6 +55,8 @@ import { MRC_CONTRACTS } from "../addresses/mrc"; import Erc20ABI from "../abis/erc20"; import MerklePayoutStrategyImplementationABI from "../abis/allo-v1/MerklePayoutStrategyImplementation"; import { BigNumber } from "ethers"; +import DirectPayoutStrategyImplementation from "../abis/allo-v1/DirectPayoutStrategyImplementation"; +import { hexZeroPad } from "ethers/lib/utils.js"; function createProjectId(args: { chainId: number; @@ -72,8 +74,8 @@ function createProjectId(args: { function applicationStatusToNumber(status: ApplicationStatus) { switch (status) { case "PENDING": - case "IN_REVIEW": return 0n; + case "IN_REVIEW": case "APPROVED": return 1n; case "REJECTED": @@ -489,8 +491,8 @@ export class AlloV1 implements Allo { args.roundData.applicationsEndTime ? dateToEthereumTimestamp(args.roundData.applicationsEndTime) : args.roundData.roundEndTime - ? dateToEthereumTimestamp(args.roundData.roundEndTime) - : maxUint256, + ? dateToEthereumTimestamp(args.roundData.roundEndTime) + : maxUint256, dateToEthereumTimestamp(args.roundData.roundStartTime), args.roundData.roundEndTime ? dateToEthereumTimestamp(args.roundData.roundEndTime) @@ -675,22 +677,36 @@ export class AlloV1 implements Allo { } > { return new AlloOperation(async ({ emit }) => { - if (args.applicationsToUpdate.some((app) => app.status === "IN_REVIEW")) { - throw new AlloError("DirectGrants is not supported yet!"); - } + const isInReview = args.applicationsToUpdate.some( + (app) => app.status === "IN_REVIEW" + ); + + const conf = isInReview + ? { + bitsPerStatus: 1, + address: args.strategyAddress, + abi: DirectPayoutStrategyImplementation, + functionName: "setApplicationsInReview", + } + : { + bitsPerStatus: 2, + address: getAddress(args.roundId), + abi: RoundImplementationABI, + functionName: "setApplicationStatuses", + }; - const roundAddress = getAddress(args.roundId); const rows = buildUpdatedRowsOfApplicationStatuses({ applicationsToUpdate: args.applicationsToUpdate, currentApplications: args.currentApplications, statusToNumber: applicationStatusToNumber, - bitsPerStatus: 2, + bitsPerStatus: conf.bitsPerStatus, }); const txResult = await sendTransaction(this.transactionSender, { - address: roundAddress, - abi: RoundImplementationABI, - functionName: "setApplicationStatuses", + address: conf.address, + abi: conf.abi, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + functionName: conf.functionName as any, args: [rows], }); @@ -709,7 +725,6 @@ export class AlloV1 implements Allo { emit("transactionStatus", error(result)); return error(result); } - await this.waitUntilIndexerSynced({ chainId: this.chainId, blockNumber: receipt.blockNumber, @@ -1114,30 +1129,58 @@ export class AlloV1 implements Allo { * (and to confuse the developer). * https://github.com/allo-protocol/allo-contracts/blob/9c50f53cbdc2844fbf3cfa760df438f6fe3f0368/contracts/round/RoundImplementation.sol#L339C1-L339C1 **/ - if ( - data.roundStartTime && - data.roundEndTime && - data.applicationsStartTime && - data.applicationsEndTime - ) { - if (Date.now() > data.applicationsStartTime.getTime()) { - data.applicationsStartTime = new Date( - data.applicationsEndTime.getTime() - 1000000 - ); - } - if (Date.now() > data.roundStartTime.getTime()) { - data.roundStartTime = new Date( - data.applicationsEndTime.getTime() - 1000000 - ); - } - - transactionBuilder.add(UpdateAction.UPDATE_ROUND_START_AND_END_TIMES, [ - (data.applicationsStartTime.getTime() / 1000).toFixed(0), - (data.applicationsEndTime.getTime() / 1000).toFixed(0), - (data.roundStartTime.getTime() / 1000).toFixed(0), - (data.roundEndTime.getTime() / 1000).toFixed(0), - ]); + switch (args.strategy) { + case RoundCategory.QuadraticFunding: + if ( + data.roundStartTime && + data.roundEndTime && + data.applicationsStartTime && + data.applicationsEndTime + ) { + if (Date.now() > data.applicationsStartTime.getTime()) { + data.applicationsStartTime = new Date( + data.applicationsEndTime.getTime() - 1000000 + ); + } + if (Date.now() > data.roundStartTime.getTime()) { + data.roundStartTime = new Date( + data.applicationsEndTime.getTime() - 1000000 + ); + } + + transactionBuilder.add( + UpdateAction.UPDATE_ROUND_START_AND_END_TIMES, + [ + (data.applicationsStartTime.getTime() / 1000).toFixed(0), + (data.applicationsEndTime.getTime() / 1000).toFixed(0), + (data.roundStartTime.getTime() / 1000).toFixed(0), + (data.roundEndTime.getTime() / 1000).toFixed(0), + ] + ); + } + break; + + case RoundCategory.Direct: + if (data.roundStartTime && data.roundEndTime) { + if (Date.now() > data.roundStartTime.getTime()) { + data.roundStartTime = new Date( + data.roundEndTime.getTime() - 1000000 + ); + } + + transactionBuilder.add( + UpdateAction.UPDATE_ROUND_START_AND_END_TIMES, + [ + (data.roundStartTime.getTime() / 1000).toFixed(0), + (data.roundEndTime.getTime() / 1000).toFixed(0), + (data.roundStartTime.getTime() / 1000).toFixed(0), + (data.roundEndTime.getTime() / 1000).toFixed(0), + ] + ); + } + break; } + const transactionBody = transactionBuilder.generate(); const txResult = await sendRawTransaction(this.transactionSender, { @@ -1173,6 +1216,83 @@ export class AlloV1 implements Allo { return success(args.roundId); }); } + + payoutDirectGrants(args: { + roundId: Hex | number; // address + token: Hex; + amount: bigint; + recipientAddress: Hex; + recipientId: Hex; + vault?: Hex; + applicationIndex?: number; + }): AlloOperation< + Result<{ blockNumber: bigint }>, + { + transaction: Result; + transactionStatus: Result; + indexingStatus: Result; + } + > { + return new AlloOperation(async ({ emit }) => { + if (typeof args.roundId == "number") { + return error(new AlloError("roundId must be a Hex")); + } + + if (!args.vault) { + return error(new AlloError("vault is required")); + } + + if (typeof args.applicationIndex !== "number") { + return error(new AlloError("applicationIndex is required")); + } + + const functionArguments = { + vault: args.vault, + token: args.token, + amount: BigInt(args.amount.toString()), + grantAddress: args.recipientAddress, + projectId: args.recipientId, + applicationIndex: BigInt(args.applicationIndex), + allowanceModule: zeroAddress, + allowanceSignature: hexZeroPad("0x", 65) as `0x${string}`, + }; + + const tx = await sendTransaction(this.transactionSender, { + address: args.roundId, + abi: DirectPayoutStrategyImplementation, + functionName: "payout", + args: [functionArguments], + }); + + emit("transaction", tx); + + if (tx.type === "error") { + return tx; + } + + let receipt: TransactionReceipt; + + try { + receipt = await this.transactionSender.wait(tx.value); + emit("transactionStatus", success(receipt)); + } catch (err) { + const result = new AlloError("Failed to payout direct grants"); + emit("transactionStatus", error(result)); + return error(result); + } + + await this.waitUntilIndexerSynced({ + chainId: this.chainId, + blockNumber: receipt.blockNumber, + }); + + emit("indexingStatus", success(void 0)); + + return success({ + blockNumber: receipt.blockNumber, + }); + }); + } } // todo: move this out? diff --git a/packages/common/src/allo/backends/allo-v2.ts b/packages/common/src/allo/backends/allo-v2.ts index 1f9603081e..cea01b6cc1 100644 --- a/packages/common/src/allo/backends/allo-v2.ts +++ b/packages/common/src/allo/backends/allo-v2.ts @@ -2,8 +2,8 @@ import { AlloAbi, Allo as AlloV2Contract, CreateProfileArgs, - DirectGrantsStrategy, - DirectGrantsStrategyTypes, + DirectGrantsLiteStrategy, + DirectGrantsLiteStrategyTypes, DonationVotingMerkleDistributionDirectTransferStrategyAbi, DonationVotingMerkleDistributionStrategy, DonationVotingMerkleDistributionStrategyTypes, @@ -24,7 +24,13 @@ import { Abi, Address, Hex, PublicClient, getAddress, zeroAddress } from "viem"; import { AnyJson, ChainId } from "../.."; import { UpdateRoundParams, MatchingStatsData, VotingToken } from "../../types"; import { Allo, AlloError, AlloOperation, CreateRoundArguments } from "../allo"; -import { Result, dateToEthereumTimestamp, error, success } from "../common"; +import { + Result, + UINT64_MAX, + dateToEthereumTimestamp, + error, + success, +} from "../common"; import { WaitUntilIndexerSynced } from "../indexer"; import { IpfsUploader } from "../ipfs"; import { @@ -53,7 +59,7 @@ function getStrategyAddress(strategy: RoundCategory, chainId: ChainId): string { strategyAddresses = { [RoundCategory.QuadraticFunding]: "0x029dFAf686DfA0efdace5132ba422e9279D50b5b", - [RoundCategory.Direct]: "0x45181C4fD52d4d350380B3D42091b80065c702Ef", + [RoundCategory.Direct]: "0x0000000000000000000000000000000000000000", }; break; @@ -61,7 +67,7 @@ function getStrategyAddress(strategy: RoundCategory, chainId: ChainId): string { strategyAddresses = { [RoundCategory.QuadraticFunding]: "0x787eC93Dd71a90563979417879F5a3298389227f", - [RoundCategory.Direct]: "0x8564d522b19836b7F5B4324E7Ee8Cb41810E9F9e", + [RoundCategory.Direct]: "0x06F6e8D66435a02bcB67d54B280FDdb0C823dD7B", // todo: only on sepolia and only for testing }; break; } @@ -71,12 +77,18 @@ function getStrategyAddress(strategy: RoundCategory, chainId: ChainId): string { function applicationStatusToNumber(status: ApplicationStatus) { switch (status) { case "PENDING": - case "IN_REVIEW": return 1n; case "APPROVED": return 2n; case "REJECTED": return 3n; + case "APPEAL": + return 4n; + case "IN_REVIEW": + return 5n; + case "CANCELLED": + return 6n; + default: throw new Error(`Unknown status ${status}`); } @@ -455,23 +467,23 @@ export class AlloV2 implements Allo { token = getAddress(alloToken); } else if (args.roundData.roundCategory === RoundCategory.Direct) { - const initStrategyData: DirectGrantsStrategyTypes.InitializeParams = { - registryGating: true, + const initStrategyData: DirectGrantsLiteStrategyTypes.InitializeData = { + useRegistryAnchor: true, metadataRequired: true, - grantAmountRequired: true, registrationStartTime: dateToEthereumTimestamp( args.roundData.roundStartTime - ), // in seconds, must be in future - registrationEndTime: dateToEthereumTimestamp( - args.roundData.roundEndTime - ), // in seconds, must be after registrationStartTime + ), + registrationEndTime: args.roundData.roundEndTime + ? dateToEthereumTimestamp(args.roundData.roundEndTime) + : UINT64_MAX, // in seconds, must be after registrationStartTime }; - const strategy = new DirectGrantsStrategy({ + const strategy = new DirectGrantsLiteStrategy({ chain: this.chainId, }); - initStrategyDataEncoded = strategy.getInitializeData(initStrategyData); + initStrategyDataEncoded = + await strategy.getInitializeData(initStrategyData); } else { throw new Error( `Unsupported round type ${args.roundData.roundCategory}` @@ -608,20 +620,14 @@ export class AlloV2 implements Allo { } case RoundCategory.Direct: { - const strategyInstance = new DirectGrantsStrategy({ + const strategyInstance = new DirectGrantsLiteStrategy({ chain: this.chainId, poolId: BigInt(args.roundId), }); - const answers = metadata.application.answers; - const amountAnswer = answers.find( - (a) => a.question === "Amount requested" - ); - registerRecipientTx = strategyInstance.getRegisterRecipientData({ registryAnchor: args.projectId, recipientAddress: metadata.application.recipient, - grantAmount: BigInt((amountAnswer?.answer as string) ?? 0), metadata: { protocol: 1n, pointer: ipfsResult.value, @@ -679,6 +685,7 @@ export class AlloV2 implements Allo { index: number; status: ApplicationStatus; }[]; + strategy?: RoundCategory; }): AlloOperation< Result, { @@ -688,17 +695,37 @@ export class AlloV2 implements Allo { } > { return new AlloOperation(async ({ emit }) => { - if (args.applicationsToUpdate.some((app) => app.status === "IN_REVIEW")) { - throw new AlloError("DirectGrants is not supported yet!"); - } + let strategyInstance; - const strategyInstance = new DonationVotingMerkleDistributionStrategy({ - chain: this.chainId, - poolId: BigInt(args.roundId), - address: args.strategyAddress, - }); + switch (args.strategy) { + case RoundCategory.QuadraticFunding: { + strategyInstance = new DonationVotingMerkleDistributionStrategy({ + chain: this.chainId, + poolId: BigInt(args.roundId), + address: args.strategyAddress, + }); + break; + } - const totalApplications = await strategyInstance.recipientsCounter(); + case RoundCategory.Direct: { + strategyInstance = new DirectGrantsLiteStrategy({ + chain: this.chainId, + poolId: BigInt(args.roundId), + address: args.strategyAddress, + }); + break; + } + + default: + return error(new AlloError("Unsupported strategy")); + } + + let totalApplications = 0n; + try { + totalApplications = await strategyInstance.recipientsCounter(); + } catch (error) { + totalApplications = BigInt(args.currentApplications.length + 1); + } const rows = buildUpdatedRowsOfApplicationStatuses({ applicationsToUpdate: args.applicationsToUpdate, @@ -1052,14 +1079,14 @@ export class AlloV2 implements Allo { case RoundCategory.Direct: { // NOTE: TEST AFTER CREATION WORKS ON UI - const strategyInstance = new DirectGrantsStrategy({ + const strategyInstance = new DirectGrantsLiteStrategy({ chain: this.chainId, poolId: BigInt(args.roundId), address: args.roundAddress, }); if (data.applicationsStartTime && data.applicationsEndTime) { - updateTimestampTxn = strategyInstance.getUpdatePoolTimestampsData( + updateTimestampTxn = strategyInstance.updatePoolTimestamps( dateToEthereumTimestamp(data.applicationsStartTime), dateToEthereumTimestamp(data.applicationsEndTime) ); @@ -1200,6 +1227,72 @@ export class AlloV2 implements Allo { return success(null); }); } + + payoutDirectGrants(args: { + roundId: Hex | number; + token: Hex; + amount: bigint; + recipientAddress: Hex; + recipientId: Hex; + vault?: Hex; + applicationIndex?: number; + }): AlloOperation< + Result<{ blockNumber: bigint }>, + { + transaction: Result; + transactionStatus: Result; + indexingStatus: Result; + } + > { + return new AlloOperation(async ({ emit }) => { + const strategy = new DirectGrantsLiteStrategy({ + chain: this.chainId, + poolId: BigInt(args.roundId), + }); + + const txData = strategy.getAllocateData([ + { + token: args.token, + recipientId: args.recipientId, + amount: BigInt(args.amount.toString()), + }, + ]); + + const tx = await sendRawTransaction(this.transactionSender, { + to: txData.to, + data: txData.data, + value: BigInt(txData.value), + }); + + emit("transaction", tx); + + if (tx.type === "error") { + return tx; + } + + let receipt: TransactionReceipt; + + try { + receipt = await this.transactionSender.wait(tx.value); + emit("transactionStatus", success(receipt)); + } catch (err) { + const result = new AlloError("Failed to payout direct grants"); + emit("transactionStatus", error(result)); + return error(result); + } + + await this.waitUntilIndexerSynced({ + chainId: this.chainId, + blockNumber: receipt.blockNumber, + }); + + emit("indexingStatus", success(void 0)); + + return success({ + blockNumber: receipt.blockNumber, + }); + }); + } } export function serializeProject(project: ProjectWithMerkleProof) { diff --git a/packages/common/src/allo/common.ts b/packages/common/src/allo/common.ts index 3b47019532..d415d14122 100644 --- a/packages/common/src/allo/common.ts +++ b/packages/common/src/allo/common.ts @@ -15,4 +15,9 @@ export const dateToEthereumTimestamp = (date: Date): bigint => export const UINT64_MAX = 18446744073709551615n; +export const isInfiniteDate = (roundTime: Date): boolean => { + const UINT_64_MAX_YEAR = 2243; + return roundTime.getFullYear() >= UINT_64_MAX_YEAR; +}; + export { NATIVE } from "@allo-team/allo-v2-sdk"; diff --git a/packages/common/src/allo/transaction-sender.ts b/packages/common/src/allo/transaction-sender.ts index ac527b0b2b..45b49904a0 100644 --- a/packages/common/src/allo/transaction-sender.ts +++ b/packages/common/src/allo/transaction-sender.ts @@ -279,8 +279,8 @@ export async function sendTransaction< | { address: Address; value: bigint; data: Hex } ): Promise> { try { - let data; - let value; + let data: Hex | undefined; + let value: bigint | undefined; if ("value" in args) { value = args.value; diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 6a6f005b15..84da868fca 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -11,6 +11,7 @@ import { getAlloVersion, getConfig } from "./config"; export * from "./icons"; export * from "./markdown"; export * from "./allo/common"; +export * from "./allo/application"; export { PassportVerifierWithExpiration } from "./credentialVerifier"; export { ChainId }; @@ -303,6 +304,7 @@ export type RoundPayoutTypeNew = | "allov2.SQFSuperFluidStrategy" | "allov2.MicroGrantsGovStrategy" | "allov2.DirectGrantsSimpleStrategy" + | "allov2.DirectGrantsLiteStrategy" | ""; // This is to handle the cases where the strategyName is not set in a round, mostly spam rounds export type RoundStrategyType = "QuadraticFunding" | "DirectGrants"; @@ -322,6 +324,7 @@ export function getRoundStrategyType(name: string): RoundStrategyType { case "allov1.Direct": case "DIRECT": case "allov2.DirectGrantsSimpleStrategy": + case "allov2.DirectGrantsLiteStrategy": return "DirectGrants"; case "allov1.QF": diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index 23c63226cc..f1659df080 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -110,4 +110,4 @@ export type VotingToken = { //TODO: split PayoutTokens and VotingTokens in // 2 different types/lists and remove the following attribute canVote: boolean; -}; +}; \ No newline at end of file diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index ac687d94b9..0c6371fea9 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -1,5 +1,5 @@ { - "include": ["src/**/*"], + "include": ["src/*"], "compilerOptions": { "target": "es2020", "lib": ["dom", "dom.iterable", "esnext"], diff --git a/packages/data-layer/src/data-layer.test.ts b/packages/data-layer/src/data-layer.test.ts index cc433b0bba..60fb66af51 100644 --- a/packages/data-layer/src/data-layer.test.ts +++ b/packages/data-layer/src/data-layer.test.ts @@ -574,7 +574,9 @@ describe("v2 projects retrieval", () => { fetch: fetchMock, search: { baseUrl: "https://example.com" }, subgraph: { endpointsByChainId: {} }, - indexer: { baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql" }, + indexer: { + baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql", + }, }); const project = await dataLayer.getProjectById({ @@ -612,7 +614,9 @@ describe("v2 projects retrieval", () => { fetch: fetchMock, search: { baseUrl: "https://example.com" }, subgraph: { endpointsByChainId: {} }, - indexer: { baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql" }, + indexer: { + baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql", + }, }); const projects = await dataLayer.getProjectsByAddress({ @@ -646,7 +650,9 @@ describe("v2 projects retrieval", () => { fetch: fetchMock, search: { baseUrl: "https://example.com" }, subgraph: { endpointsByChainId: {} }, - indexer: { baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql" }, + indexer: { + baseUrl: "https://grants-stack-indexer-v2.gitcoin.co/graphql", + }, }); const applications = await dataLayer.getApplicationsByProjectIds({ diff --git a/packages/data-layer/src/data-layer.ts b/packages/data-layer/src/data-layer.ts index b47ad36d95..6d5d134b70 100644 --- a/packages/data-layer/src/data-layer.ts +++ b/packages/data-layer/src/data-layer.ts @@ -24,6 +24,8 @@ import { Contribution, RoundForExplorer, ExpandedApplicationRef, + Payout, + RoundApplicationPayout, } from "./data.types"; import { ApplicationSummary, @@ -49,6 +51,7 @@ import { getRoundsQuery, getDonationsByDonorAddress, getApplicationsForExplorer, + getPayoutsByChainIdRoundIdProjectId, } from "./queries"; import { mergeCanonicalAndLinkedProjects } from "./utils"; @@ -689,6 +692,20 @@ export class DataLayer { }); } + async getPayoutsByChainIdRoundIdProjectId(args: { + chainId: number; + roundId: string; + projectId: string; + }): Promise { + const response: { round: RoundApplicationPayout } = await request( + this.gsIndexerEndpoint, + getPayoutsByChainIdRoundIdProjectId, + args, + ); + + return response.round; + } + /** * Legacy - Allo v1 queries */ diff --git a/packages/data-layer/src/data.types.ts b/packages/data-layer/src/data.types.ts index cbf9bb80ef..2d05d302f2 100644 --- a/packages/data-layer/src/data.types.ts +++ b/packages/data-layer/src/data.types.ts @@ -5,6 +5,7 @@ export type RoundPayoutType = | "allov1.Direct" | "allov1.QF" | "allov2.DirectGrantsSimpleStrategy" + | "allov2.DirectGrantsLiteStrategy" | "allov2.DonationVotingMerkleDistributionDirectTransferStrategy" | ""; // This is to handle the cases where the strategyName is not set in a round, mostly spam rounds export type RoundVisibilityType = "public" | "private"; @@ -757,3 +758,23 @@ export type Contribution = { }; timestamp?: bigint; }; + +export type Payout = { + id: string; + tokenAddress: string; + amount: string; + amountInUsd: number; + transactionHash: string; + timestamp: string; + sender: string; +}; + +export type RoundApplicationPayout = { + id: string; + applications: [ + { + id: string; + applicationsPayoutsByChainIdAndRoundIdAndApplicationId: Payout[]; + }, + ]; +}; diff --git a/packages/data-layer/src/queries.ts b/packages/data-layer/src/queries.ts index 14517ecb8f..21229c8b18 100644 --- a/packages/data-layer/src/queries.ts +++ b/packages/data-layer/src/queries.ts @@ -645,3 +645,27 @@ export const getDonationsByDonorAddress = gql` } } `; + +export const getPayoutsByChainIdRoundIdProjectId = gql` + query getPayoutsByChainIdRoundIdRecipientId( + $chainId: Int! + $roundId: String! + $projectId: String! + ) { + round(chainId: $chainId, id: $roundId) { + id + applications(filter: { projectId: { equalTo: $projectId } }) { + id + applicationsPayoutsByChainIdAndRoundIdAndApplicationId { + id + tokenAddress + amount + amountInUsd + transactionHash + timestamp + sender + } + } + } + } +`; diff --git a/packages/data-layer/src/utils.ts b/packages/data-layer/src/utils.ts index e059780128..de4c022b1d 100644 --- a/packages/data-layer/src/utils.ts +++ b/packages/data-layer/src/utils.ts @@ -39,6 +39,7 @@ export const strategyNameToCategory = ( switch (name) { case "allov1.Direct": case "allov2.DirectGrantsSimpleStrategy": + case "allov2.DirectGrantsLiteStrategy": return RoundCategory.Direct; case "allov1.QF": diff --git a/packages/grant-explorer/package.json b/packages/grant-explorer/package.json index 277eb799ea..5a07899a6a 100644 --- a/packages/grant-explorer/package.json +++ b/packages/grant-explorer/package.json @@ -62,7 +62,6 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^13.0.1", "@testing-library/user-event": "^14.1.1", - "@vitejs/plugin-react": "^4.0.4", "@wagmi/core": "1.4.1", "@walletconnect/modal": "^2.5.9", "allo-indexer-client": "github:gitcoinco/allo-indexer-client", diff --git a/packages/grant-explorer/src/features/api/utils.ts b/packages/grant-explorer/src/features/api/utils.ts index 3c1654536b..4b4037f13c 100644 --- a/packages/grant-explorer/src/features/api/utils.ts +++ b/packages/grant-explorer/src/features/api/utils.ts @@ -1040,10 +1040,14 @@ export function getChainIds(): number[] { export const isDirectRound = (round: Round) => // @ts-expect-error support old rounds round.payoutStrategy.strategyName === ROUND_PAYOUT_DIRECT_OLD || - round.payoutStrategy.strategyName === ROUND_PAYOUT_DIRECT; + round.payoutStrategy.strategyName === ROUND_PAYOUT_DIRECT || + round.payoutStrategy.strategyName === "allov2.DirectGrantsLiteStrategy"; -export const isInfiniteDate = (roundTime: Date) => - roundTime.toString() === "Invalid Date"; +export const isInfiniteDate = (roundTime: Date) => { + return ( + roundTime.toString() === "Invalid Date" || roundTime.getFullYear() === 1970 + ); +}; type GroupedCartProjects = { [chainId: number]: { diff --git a/packages/grant-explorer/src/features/common/ProjectCard.tsx b/packages/grant-explorer/src/features/common/ProjectCard.tsx index c5a7a15a89..7b4356bca7 100644 --- a/packages/grant-explorer/src/features/common/ProjectCard.tsx +++ b/packages/grant-explorer/src/features/common/ProjectCard.tsx @@ -1,5 +1,4 @@ import { Skeleton, SkeletonCircle, SkeletonText } from "@chakra-ui/react"; - import { ReactComponent as CartCircleIcon } from "../../assets/icons/cart-circle.svg"; import { ReactComponent as CheckedCircleIcon } from "../../assets/icons/checked-circle.svg"; import { ApplicationSummary } from "data-layer"; diff --git a/packages/grant-explorer/src/features/common/SearchInput.tsx b/packages/grant-explorer/src/features/common/SearchInput.tsx index 53edf1220c..604c0c8443 100644 --- a/packages/grant-explorer/src/features/common/SearchInput.tsx +++ b/packages/grant-explorer/src/features/common/SearchInput.tsx @@ -1,4 +1,3 @@ -import { Input } from "common/src/styles"; import { Dispatch, SetStateAction } from "react"; import { ReactComponent as Search } from "../../assets/search-grey.svg"; @@ -14,9 +13,11 @@ export const SortFilterDropdown = (props: SortFilterDropdownProps) => { @@ -38,9 +39,11 @@ export const GrantRoundTypeFilterDropdown = ( ", () => { const mockOnChange = vi.fn(); render(); - fireEvent.change(screen.getByPlaceholderText("Select Filter"), { + fireEvent.change(screen.getByTestId("sort-filter-dropdown"), { target: { value: "round_desc" }, }); diff --git a/packages/grant-explorer/src/features/discovery/RoundStrategyBadge.tsx b/packages/grant-explorer/src/features/discovery/RoundStrategyBadge.tsx index c06ba4d4a9..531334baaa 100644 --- a/packages/grant-explorer/src/features/discovery/RoundStrategyBadge.tsx +++ b/packages/grant-explorer/src/features/discovery/RoundStrategyBadge.tsx @@ -21,6 +21,7 @@ const colorOptions = { ["allov2.SQFSuperFluidStrategy"]: "yellow", ["allov2.MicroGrantsGovStrategy"]: "yellow", ["allov2.DirectGrantsSimpleStrategy"]: "yellow", + ["allov2.DirectGrantsLiteStrategy"]: "yellow", [""]: "grey", } as const; diff --git a/packages/grant-explorer/src/features/round/ViewRoundPage.tsx b/packages/grant-explorer/src/features/round/ViewRoundPage.tsx index a4b142d4d9..32670e2d55 100644 --- a/packages/grant-explorer/src/features/round/ViewRoundPage.tsx +++ b/packages/grant-explorer/src/features/round/ViewRoundPage.tsx @@ -88,17 +88,34 @@ export default function ViewRound() { ); const currentTime = new Date(); - const isBeforeRoundStartDate = round && round.roundStartTime >= currentTime; - const isAfterRoundStartDate = round && round.roundStartTime <= currentTime; + const isBeforeRoundStartDate = + round && + (isDirectRound(round) + ? round.applicationsStartTime + : round.roundStartTime) >= currentTime; + const isAfterRoundStartDate = + round && + (isDirectRound(round) + ? round.applicationsStartTime + : round.roundStartTime) <= currentTime; // covers infinte dates for roundEndDate const isAfterRoundEndDate = round && - (isInfiniteDate(round.roundEndTime) + (isInfiniteDate( + isDirectRound(round) ? round.applicationsEndTime : round.roundEndTime + ) ? false - : round && round.roundEndTime <= currentTime); + : round && + (isDirectRound(round) + ? round.applicationsEndTime + : round.roundEndTime) <= currentTime); const isBeforeRoundEndDate = round && - (isInfiniteDate(round.roundEndTime) || round.roundEndTime > currentTime); + (isInfiniteDate( + isDirectRound(round) ? round.applicationsEndTime : round.roundEndTime + ) || + (isDirectRound(round) ? round.applicationsEndTime : round.roundEndTime) > + currentTime); const alloVersion = getAlloVersion(); @@ -396,6 +413,12 @@ function AfterRoundStart(props: { roundId, tokenData.symbol, ]); + const roundStart = isDirectRound(round) + ? round.applicationsStartTime + : round.roundStartTime; + const roundEnd = isDirectRound(round) + ? round.applicationsEndTime + : round.roundEndTime; return ( <> @@ -483,19 +506,19 @@ function AfterRoundStart(props: { - {formatUTCDateAsISOString(round.roundStartTime)} + {formatUTCDateAsISOString(roundStart)} - {getUTCTime(round.roundStartTime)} + {getUTCTime(roundStart)} - - {!isInfiniteDate(round.roundEndTime) ? ( + {!isInfiniteDate(roundEnd) ? ( <> - {formatUTCDateAsISOString(round.roundEndTime)} + {formatUTCDateAsISOString(roundEnd)} - {getUTCTime(round.roundEndTime)} + {getUTCTime(roundEnd)} ) : ( No End Date @@ -1187,10 +1210,9 @@ function PreRoundPage(props: { round && round.applicationsStartTime >= currentTime; // covers infinite dates for applicationsEndTime const isDuringApplicationPeriod = - round && - round.applicationsStartTime <= currentTime && - (isInfiniteDate(round.applicationsEndTime) || - round.applicationsEndTime >= currentTime); + (round && currentTime >= round.applicationsStartTime) || + currentTime <= + (isInfiniteDate(round.applicationsEndTime) || round.applicationsEndTime); const isAfterApplicationEndDateAndBeforeRoundStartDate = round && diff --git a/packages/grant-explorer/vitest.config.ts b/packages/grant-explorer/vitest.config.ts index b1ba9a32d1..9db3bde055 100644 --- a/packages/grant-explorer/vitest.config.ts +++ b/packages/grant-explorer/vitest.config.ts @@ -1,8 +1,7 @@ import { defineConfig } from "vitest/config"; -import react from "@vitejs/plugin-react"; export default defineConfig({ - plugins: [react()], + plugins: [], test: { alias: [ { diff --git a/packages/round-manager/src/constants.ts b/packages/round-manager/src/constants.ts index 917a797ea2..cf6cf4f6a7 100644 --- a/packages/round-manager/src/constants.ts +++ b/packages/round-manager/src/constants.ts @@ -1,3 +1,3 @@ export const errorModalDelayMs = 3000; export const modalDelayMs = 1000; -export const maxDateForUint256 = new Date(8640000000000000); +export const maxDateForUint256 = new Date(8640000000000); diff --git a/packages/round-manager/src/context/application/BulkUpdateGrantApplicationContext.tsx b/packages/round-manager/src/context/application/BulkUpdateGrantApplicationContext.tsx index 5085f40b01..180d12039d 100644 --- a/packages/round-manager/src/context/application/BulkUpdateGrantApplicationContext.tsx +++ b/packages/round-manager/src/context/application/BulkUpdateGrantApplicationContext.tsx @@ -1,9 +1,4 @@ -import { - AppStatus, - GrantApplication, - ProgressStatus, - StatusForDirectPayout, -} from "../../features/api/types"; +import { GrantApplication, ProgressStatus } from "../../features/api/types"; import React, { createContext, ReactNode, @@ -11,16 +6,10 @@ import React, { useContext, useState, } from "react"; -import { - updateApplicationStatuses, - updatePayoutApplicationStatuses, -} from "../../features/api/application"; import { datadogLogs } from "@datadog/browser-logs"; -import { waitForSubgraphSyncTo } from "../../features/api/subgraph"; -import { Signer } from "@ethersproject/abstract-signer"; -import { useWallet } from "../../features/common/Auth"; import { Allo, RoundStrategyType } from "common"; import { Address } from "viem"; +import { RoundCategory } from "data-layer"; export interface BulkUpdateGrantApplicationState { roundId: string; @@ -60,7 +49,6 @@ export const initialBulkUpdateGrantApplicationState: BulkUpdateGrantApplicationS }; export type BulkUpdateGrantApplicationParams = { - signer: Signer; context: BulkUpdateGrantApplicationState; roundId: string; roundStrategy: RoundStrategyType; @@ -126,51 +114,10 @@ function resetToInitialState(context: BulkUpdateGrantApplicationState) { setIndexingStatus(initialBulkUpdateGrantApplicationState.indexingStatus); } -function fetchStatusesForPayoutStrategy( - rowIndex: number, - applications: GrantApplication[] -) { - const statuses: StatusForDirectPayout[] = []; - - const startApplicationIndex = rowIndex * 256; - - for (let columnIndex = 0; columnIndex < 256; columnIndex++) { - const applicationIndex = startApplicationIndex + columnIndex; - const application = applications.find( - (app) => app.applicationIndex === applicationIndex - ); - - if (application !== undefined) { - statuses.push({ - index: columnIndex, - status: Boolean(application.inReview), - }); - } - } - return statuses; -} - -function createFullRowForPayoutStrategy(statuses: StatusForDirectPayout[]) { - let fullRow = BigInt(0); - for (const statusObj of statuses) { - const { index: columnIndex, status } = statusObj; - - if (columnIndex >= 0 && columnIndex < 256 && typeof status === "boolean") { - const statusBigInt = BigInt(status ? 1 : 0); - const shiftedStatus = statusBigInt << BigInt(columnIndex); - 1; - fullRow |= shiftedStatus; - } else { - throw new Error("Invalid index or status value"); - } - } - return fullRow.toString(); -} - async function _bulkUpdateGrantApplication({ - signer, context, roundId, + roundStrategy, roundStrategyAddress, applications, selectedApplications, @@ -178,98 +125,48 @@ async function _bulkUpdateGrantApplication({ }: BulkUpdateGrantApplicationParams) { resetToInitialState(context); try { - const containsInReview = selectedApplications.some((a) => a.inReview); - - if (!containsInReview) { - context.setContractUpdatingStatus(ProgressStatus.IN_PROGRESS); - - const result = await allo - .bulkUpdateApplicationStatus({ - roundId, - applicationsToUpdate: selectedApplications.map((a) => ({ - index: a.applicationIndex, - status: a.status, - })), - currentApplications: applications.map((a) => ({ - index: a.applicationIndex, - status: a.status, - })), - // FIXME: use getAddress when tests stop failing because of it - strategyAddress: roundStrategyAddress as Address, - }) - .on("transactionStatus", (tx) => { - if (tx.type === "success") { - context.setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); - context.setIndexingStatus(ProgressStatus.IN_PROGRESS); - } else { - context.setContractUpdatingStatus(ProgressStatus.IS_ERROR); - } - }) - .on("indexingStatus", (tx) => { - if (tx.type === "success") { - context.setIndexingStatus(ProgressStatus.IS_SUCCESS); - } else { - context.setIndexingStatus(ProgressStatus.IS_ERROR); - } - }) - .execute(); - - if (result.type === "error") { - console.error("failed to update application status", result.error); - } - - return; - } - - const updatedApplications = applications.map((application) => { - const newStatus = { - status: application.status, - inReview: application.inReview, - }; - - const selectedApplication = selectedApplications.find( - (selectedApplication) => - selectedApplication.applicationIndex === application.applicationIndex - ); - - if (selectedApplication) { - newStatus.status = selectedApplication.status; - newStatus.inReview = selectedApplication.inReview; - } - - return { ...application, ...newStatus }; - }); - - const rowsToUpdate = Array.from( - new Set( - selectedApplications.map((application) => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return Math.floor(application.applicationIndex! / 128); - }) - ) - ); - - const statusRows: AppStatus[] = []; - - for (let i = 0; i < rowsToUpdate.length; i++) { - const rowStatuses = fetchStatusesForPayoutStrategy( - rowsToUpdate[i], - updatedApplications - ); - statusRows.push({ - index: rowsToUpdate[i], - statusRow: createFullRowForPayoutStrategy(rowStatuses), - }); + context.setContractUpdatingStatus(ProgressStatus.IN_PROGRESS); + + const strategy = + roundStrategy == "DirectGrants" + ? RoundCategory.Direct + : RoundCategory.QuadraticFunding; + + const result = await allo + .bulkUpdateApplicationStatus({ + roundId, + applicationsToUpdate: selectedApplications.map((a) => ({ + index: a.applicationIndex, + status: a.status, + })), + currentApplications: applications.map((a) => ({ + index: a.applicationIndex, + status: a.status, + })), + // FIXME: use getAddress when tests stop failing because of it + strategyAddress: roundStrategyAddress as Address, + strategy: strategy, + }) + .on("transactionStatus", (tx) => { + if (tx.type === "success") { + context.setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); + context.setIndexingStatus(ProgressStatus.IN_PROGRESS); + } else { + context.setContractUpdatingStatus(ProgressStatus.IS_ERROR); + } + }) + .on("indexingStatus", (tx) => { + if (tx.type === "success") { + context.setIndexingStatus(ProgressStatus.IS_SUCCESS); + } else { + context.setIndexingStatus(ProgressStatus.IS_ERROR); + } + }) + .execute(); + + if (result.type === "error") { + console.error("failed to update application status", result.error); } - - const transactionBlockNumber = await updateContract({ - signer, - roundId, - payoutAddress: roundStrategyAddress, - statusRows, - context, - }); - await waitForSubgraphToUpdate(signer, transactionBlockNumber, context); } catch (error) { datadogLogs.logger.error(`error: _bulkUpdateGrantApplication - ${error}`); console.error("_bulkUpdateGrantApplication: ", error); @@ -286,14 +183,11 @@ export const useBulkUpdateGrantApplications = () => { ); } - const { signer } = useWallet(); - const handleBulkUpdateGrantApplications = async ( - params: Omit + params: Omit ) => { return _bulkUpdateGrantApplication({ ...params, - signer: signer as Signer, context, }); }; @@ -304,67 +198,3 @@ export const useBulkUpdateGrantApplications = () => { indexingStatus: context.indexingStatus, }; }; - -interface UpdateContractParams { - signer: Signer; - roundId: string; - payoutAddress?: string; - statusRows: AppStatus[]; - context: BulkUpdateGrantApplicationState; -} - -const updateContract = async ({ - signer, - roundId, - payoutAddress, - statusRows, - context, -}: UpdateContractParams): Promise => { - const { setContractUpdatingStatus } = context; - - try { - setContractUpdatingStatus(ProgressStatus.IN_PROGRESS); - - const { transactionBlockNumber } = payoutAddress - ? await updatePayoutApplicationStatuses(payoutAddress, signer, statusRows) - : await updateApplicationStatuses(roundId, signer, statusRows); - - setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); - - return transactionBlockNumber; - } catch (error) { - datadogLogs.logger.error(`error: updateApplicationStatuses - ${error}`); - console.error(`updateApplicationStatuses roundId: ${roundId}`, error); - setContractUpdatingStatus(ProgressStatus.IS_ERROR); - throw error; - } -}; - -async function waitForSubgraphToUpdate( - signerOrProvider: Signer, - transactionBlockNumber: number, - context: BulkUpdateGrantApplicationState -) { - const { setIndexingStatus } = context; - - try { - datadogLogs.logger.error( - `waitForSubgraphToUpdate: txnBlockNumber - ${transactionBlockNumber}` - ); - - setIndexingStatus(ProgressStatus.IN_PROGRESS); - - const chainId = await signerOrProvider.getChainId(); - - await waitForSubgraphSyncTo(chainId, transactionBlockNumber); - - setIndexingStatus(ProgressStatus.IS_SUCCESS); - } catch (error) { - datadogLogs.logger.error( - `error: waitForSubgraphToUpdate - ${error}. Data - ${transactionBlockNumber}` - ); - console.error("waitForSubgraphToUpdate", error); - setIndexingStatus(ProgressStatus.IS_ERROR); - throw error; - } -} diff --git a/packages/round-manager/src/context/application/usePayout.ts b/packages/round-manager/src/context/application/usePayout.ts index 5f509187a0..420b132ddc 100644 --- a/packages/round-manager/src/context/application/usePayout.ts +++ b/packages/round-manager/src/context/application/usePayout.ts @@ -1,12 +1,12 @@ -import { Dispatch, SetStateAction, useState } from "react"; import { ProgressStatus, ProgressStep } from "../../features/api/types"; -import { - DirectPayoutStrategy__factory, - Erc20__factory, -} from "../../types/generated/typechain"; -import { BigNumber, ethers } from "ethers"; -import { waitForSubgraphSyncTo } from "../../features/api/subgraph"; +import { Erc20__factory } from "../../types/generated/typechain"; +import { ethers } from "ethers"; import { PayoutToken } from "../../features/api/payoutTokens"; +import { Allo } from "common"; +import { Hex } from "viem"; +import { datadogRum } from "@datadog/browser-rum"; +import { datadogLogs } from "@datadog/browser-logs"; +import { useState } from "react"; export function usePayout() { const [contractApproveSpendStatus, setContractApproveSpendStatus] = @@ -43,25 +43,6 @@ export function usePayout() { }, ]; - async function waitForSubgraphToUpdate( - setIndexingStatus: Dispatch>, - signerOrProvider: ethers.Signer, - transactionBlockNumber: number - ) { - try { - setIndexingStatus(ProgressStatus.IN_PROGRESS); - - const chainId = await signerOrProvider.getChainId(); - await waitForSubgraphSyncTo(chainId, transactionBlockNumber); - - setIndexingStatus(ProgressStatus.IS_SUCCESS); - } catch (error) { - console.error("waitForSubgraphToUpdate", error); - setIndexingStatus(ProgressStatus.IS_ERROR); - throw error; - } - } - const resetStatuses = () => { setContractApproveSpendStatus(ProgressStatus.NOT_STARTED); setContractUpdatingStatus(ProgressStatus.NOT_STARTED); @@ -72,32 +53,36 @@ export function usePayout() { address: string; signer: ethers.Signer; token: PayoutToken; - projectId: string; + applicationId: Hex; applicationIndex: number; - payoutStrategyAddress: string; - payoutAmount: BigNumber; - payoutVault: string; - payoutWallet: string; - allowance: BigNumber; + roundId: Hex | number; + roundAddress: Hex; + payoutAmount: bigint; + payoutVault: Hex; + payoutWallet: Hex; + allowance: bigint; + allo: Allo; }; - const triggerPayout = async ({ + async function triggerPayout({ address, signer, token, - projectId, + applicationId, applicationIndex, - payoutStrategyAddress, + roundId, + roundAddress, payoutAmount, payoutVault, payoutWallet, allowance, - }: Args) => { + allo, + }: Args) { resetStatuses(); // if not enough allowance, check if the wallet connected is the same as the payout vault if ( - allowance.lt(payoutAmount) && + allowance < payoutAmount && address.toLowerCase() !== payoutVault.toLowerCase() ) { throw new Error( @@ -106,14 +91,11 @@ export function usePayout() { } // trigger allowance when needed - if (allowance.lt(payoutAmount)) { + if (allowance < payoutAmount) { const erc20 = Erc20__factory.connect(token.address, signer); setContractApproveSpendStatus(ProgressStatus.IN_PROGRESS); try { - const approveReceipt = await erc20.approve( - payoutStrategyAddress, - payoutAmount - ); + const approveReceipt = await erc20.approve(roundAddress, payoutAmount); await approveReceipt.wait(); setContractApproveSpendStatus(ProgressStatus.IS_SUCCESS); } catch (error) { @@ -124,35 +106,51 @@ export function usePayout() { setContractApproveSpendStatus(ProgressStatus.IS_SUCCESS); } - // Payout - const directPayout = DirectPayoutStrategy__factory.connect( - payoutStrategyAddress, - signer - ); - let txBlockNumber: number; try { setContractUpdatingStatus(ProgressStatus.IN_PROGRESS); - const payoutReceipt = await directPayout.payout({ - vault: payoutVault, - token: token.address, - amount: payoutAmount, - grantAddress: payoutWallet, - projectId: projectId, - applicationIndex: applicationIndex, - allowanceModule: ethers.constants.AddressZero, - allowanceSignature: ethers.constants.HashZero, - }); - const res = await payoutReceipt.wait(); - txBlockNumber = res.blockNumber; - setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); + + await allo + .payoutDirectGrants({ + roundId: roundId, + token: token.address, + amount: payoutAmount, + recipientAddress: payoutWallet, + recipientId: applicationId, + applicationIndex: applicationIndex, + vault: payoutVault, + }) + .on("transaction", (res) => { + if (res.type === "success") { + setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); + } else { + console.error("Transaction Error", res.error); + datadogRum.addError(res.error); + datadogLogs.logger.warn("transaction error"); + } + }) + .on("transactionStatus", (res) => { + if (res.type === "success") { + setContractUpdatingStatus(ProgressStatus.IS_SUCCESS); + setIndexingStatus(ProgressStatus.IN_PROGRESS); + } else { + setContractUpdatingStatus(ProgressStatus.IS_ERROR); + + console.error("Transaction Status Error", res.error); + datadogRum.addError(res.error); + datadogLogs.logger.warn("transaction status error"); + } + }) + .on("indexingStatus", (res) => { + if (res.type === "success") { + setIndexingStatus(ProgressStatus.IS_SUCCESS); + } + }) + .execute(); } catch (error) { setContractUpdatingStatus(ProgressStatus.IS_ERROR); throw error; } - - // Wait for subgraph to update - waitForSubgraphToUpdate(setIndexingStatus, signer, txBlockNumber); - }; + } return { triggerPayout, diff --git a/packages/round-manager/src/context/program/ReadProgramContext.tsx b/packages/round-manager/src/context/program/ReadProgramContext.tsx index 2de0355c64..eada517e20 100644 --- a/packages/round-manager/src/context/program/ReadProgramContext.tsx +++ b/packages/round-manager/src/context/program/ReadProgramContext.tsx @@ -9,7 +9,6 @@ import { getProgramById, listPrograms } from "../../features/api/program"; import { datadogLogs } from "@datadog/browser-logs"; import { Web3Provider } from "@ethersproject/providers"; import { DataLayer, useDataLayer } from "data-layer"; -import { getAlloVersion } from "common/src/config"; import { useAlloVersion } from "common/src/components/AlloVersionSwitcher"; export interface ReadProgramState { diff --git a/packages/round-manager/src/context/round/RoundContext.tsx b/packages/round-manager/src/context/round/RoundContext.tsx index 649a352baf..1e48796f58 100644 --- a/packages/round-manager/src/context/round/RoundContext.tsx +++ b/packages/round-manager/src/context/round/RoundContext.tsx @@ -4,7 +4,6 @@ import { useWallet } from "../../features/common/Auth"; import { getRoundById, listRounds } from "../../features/api/round"; import { datadogLogs } from "@datadog/browser-logs"; import { DataLayer, useDataLayer } from "data-layer"; -import { switchAlloVersionAndReloadPage } from "common/src/config"; import { useAlloVersion } from "common/src/components/AlloVersionSwitcher"; export interface RoundState { diff --git a/packages/round-manager/src/features/api/AlloWrapper.tsx b/packages/round-manager/src/features/api/AlloWrapper.tsx index 15d7177ade..f5aa8fe0dc 100644 --- a/packages/round-manager/src/features/api/AlloWrapper.tsx +++ b/packages/round-manager/src/features/api/AlloWrapper.tsx @@ -3,7 +3,6 @@ import { AlloProvider, AlloV1, AlloV2, - ChainId, createEthersTransactionSender, createPinataIpfsUploader, createWaitForIndexerSyncTo, diff --git a/packages/round-manager/src/features/api/application.ts b/packages/round-manager/src/features/api/application.ts index b80b52b000..4e932756e3 100644 --- a/packages/round-manager/src/features/api/application.ts +++ b/packages/round-manager/src/features/api/application.ts @@ -1,58 +1,9 @@ -import { AppStatus } from "./types"; -import { roundImplementationContract, ERC20Contract } from "./contracts"; +import { ERC20Contract } from "./contracts"; import { BigNumber } from "ethers"; import { ethers } from "ethers"; import { Signer } from "@ethersproject/abstract-signer"; -import { DirectPayoutStrategy__factory } from "../../types/generated/typechain"; import { PayoutToken } from "./payoutTokens"; -export const updateApplicationStatuses = async ( - roundId: string, - signer: Signer, - statuses: AppStatus[] -): Promise<{ transactionBlockNumber: number }> => { - const roundImplementation = new ethers.Contract( - roundId, - roundImplementationContract.abi, - signer - ); - - const tx = await roundImplementation.setApplicationStatuses(statuses); - - const receipt = await tx.wait(); - - console.log("✅ Transaction hash: ", tx.hash); - - const blockNumber = receipt.blockNumber; - - return { - transactionBlockNumber: blockNumber, - }; -}; - -export const updatePayoutApplicationStatuses = async ( - payoutStrategyAddress: string, - signer: Signer, - statuses: AppStatus[] -): Promise<{ transactionBlockNumber: number }> => { - const payout = DirectPayoutStrategy__factory.connect( - payoutStrategyAddress, - signer - ); - - const tx = await payout.setApplicationsInReview(statuses); - - const receipt = await tx.wait(); - - console.log("✅ Transaction hash: ", tx.hash); - - const blockNumber = receipt.blockNumber; - - return { - transactionBlockNumber: blockNumber, - }; -}; - export const fundRoundContract = async ( roundId: string, signer: Signer, diff --git a/packages/round-manager/src/features/api/program.ts b/packages/round-manager/src/features/api/program.ts index ecefce806b..96b9f83257 100644 --- a/packages/round-manager/src/features/api/program.ts +++ b/packages/round-manager/src/features/api/program.ts @@ -3,7 +3,7 @@ import { Program, Web3Instance } from "./types"; import { datadogLogs } from "@datadog/browser-logs"; import { ChainId } from "common"; import { DataLayer } from "data-layer"; -import { getAlloVersion, getConfig } from "common/src/config"; +import { getAlloVersion } from "common/src/config"; /** * Fetch a list of programs diff --git a/packages/round-manager/src/features/api/round.ts b/packages/round-manager/src/features/api/round.ts index 785c0d940c..0b54e32ebe 100644 --- a/packages/round-manager/src/features/api/round.ts +++ b/packages/round-manager/src/features/api/round.ts @@ -6,6 +6,7 @@ import { roundImplementationContract } from "./contracts"; import { Round } from "./types"; import { Signer } from "@ethersproject/abstract-signer"; import { TransactionResponse } from "@ethersproject/providers"; +import moment from "moment"; export enum UpdateAction { UPDATE_APPLICATION_META_PTR = "updateApplicationMetaPtr", @@ -88,7 +89,8 @@ function indexerV2RoundToRound(round: RoundForManager): Round { const strategyName = round.strategyName === "allov1.Direct" || - round.strategyName === "allov2.DirectGrantsSimpleStrategy" + round.strategyName === "allov2.DirectGrantsSimpleStrategy" || + round.strategyName === "allov2.DirectGrantsLiteStrategy" ? "DIRECT" : "MERKLE"; @@ -109,12 +111,12 @@ function indexerV2RoundToRound(round: RoundForManager): Round { round.applicationMetadata as unknown as Round["applicationMetadata"], applicationsStartTime: new Date(applicationsStartTime), applicationsEndTime: - applicationsEndTime === null + applicationsEndTime === null || !moment(applicationsEndTime).isValid() ? maxDateForUint256 : new Date(applicationsEndTime), roundStartTime: new Date(donationsStartTime), roundEndTime: - donationsEndTime === null + donationsEndTime === null || !moment(applicationsEndTime).isValid() ? maxDateForUint256 : new Date(donationsEndTime), token: round.matchTokenAddress, diff --git a/packages/round-manager/src/features/common/parseRoundDates.tsx b/packages/round-manager/src/features/common/parseRoundDates.tsx index 8f6715b6af..6eef266c6f 100644 --- a/packages/round-manager/src/features/common/parseRoundDates.tsx +++ b/packages/round-manager/src/features/common/parseRoundDates.tsx @@ -12,35 +12,48 @@ export type RoundDates = Pick< >; export function parseRoundDates(round: RoundDates) { - const noEndTime = 'No end date (open round)'; + const noEndTime = + 'No end date (open round)'; return { application: { iso: { start: formatUTCDateAsISOString(round.applicationsStartTime), - end: moment(round.applicationsEndTime).isSame(maxDateForUint256) - ? - : formatUTCDateAsISOString(round.applicationsEndTime), + end: + moment(round.applicationsEndTime).isSame(maxDateForUint256) || + !moment(round.applicationsEndTime).isValid() ? ( + + ) : ( + formatUTCDateAsISOString(round.applicationsEndTime) + ), }, utc: { start: getUTCTime(round.applicationsStartTime), - end: moment(round.applicationsEndTime).isSame(maxDateForUint256) - ? "" - : `(${getUTCTime(round.applicationsEndTime)})`, + end: + moment(round.applicationsEndTime).isSame(maxDateForUint256) || + !moment(round.applicationsEndTime).isValid() + ? "" + : `(${getUTCTime(round.applicationsEndTime)})`, }, }, round: { iso: { start: formatUTCDateAsISOString(round.roundStartTime), - end: moment(round.roundEndTime).isSame(maxDateForUint256) - ? - : formatUTCDateAsISOString(round.roundEndTime), + end: + moment(round.roundEndTime).isSame(maxDateForUint256) || + !moment(round.applicationsEndTime).isValid() ? ( + + ) : ( + formatUTCDateAsISOString(round.roundEndTime) + ), }, utc: { start: `(${getUTCTime(round.roundStartTime)})`, - end: moment(round.roundEndTime).isSame(maxDateForUint256) - ? "" - : `(${getUTCTime(round.roundEndTime)})`, + end: + moment(round.roundEndTime).isSame(maxDateForUint256) || + !moment(round.applicationsEndTime).isValid() + ? "" + : `(${getUTCTime(round.roundEndTime)})`, }, }, }; diff --git a/packages/round-manager/src/features/program/CreateProgramPage.tsx b/packages/round-manager/src/features/program/CreateProgramPage.tsx index 7fd21c8033..dac56412ac 100644 --- a/packages/round-manager/src/features/program/CreateProgramPage.tsx +++ b/packages/round-manager/src/features/program/CreateProgramPage.tsx @@ -18,8 +18,7 @@ import { ProgressStatus, ProgressStep } from "../api/types"; import { CreateProgramState, useCreateProgram } from "./useCreateProgram"; import ReactTooltip from "react-tooltip"; import { CHAINS } from "../api/utils"; -import { ChainId } from "common/src/chain-ids"; -import { AlloError } from "common"; +import { AlloError, ChainId} from "common"; type FormData = { name: string; @@ -253,7 +252,7 @@ export default function CreateProgram() {
- {CHAINS[chain.id as ChainId] ? ( + {CHAINS[chain.id as ChainId] ? ( <>
{getAlloVersion() === "allo-v2" && ( - - )} - {getAlloVersion() === "allo-v1" && ( -
-
-

Direct Grants

-

- Choose this type of round to directly allocate funds to - selected projects yourself. -

-
- Direct Grants - + + + + )}
diff --git a/packages/round-manager/src/features/round/ApplicationDirectPayout.tsx b/packages/round-manager/src/features/round/ApplicationDirectPayout.tsx index b7ef0d4003..d7c39af2d8 100644 --- a/packages/round-manager/src/features/round/ApplicationDirectPayout.tsx +++ b/packages/round-manager/src/features/round/ApplicationDirectPayout.tsx @@ -14,11 +14,14 @@ import { usePayout } from "../../context/application/usePayout"; import { Button, Input } from "common/src/styles"; import { BigNumber, ethers } from "ethers"; import { AnswerBlock, GrantApplication, Round } from "../api/types"; -import { formatUTCDateAsISOString, getUTCTime } from "common"; +import { formatUTCDateAsISOString, getUTCTime, useAllo } from "common"; import { useNetwork } from "wagmi"; import { errorModalDelayMs } from "../../constants"; import { getPayoutTokenOptions } from "../api/payoutTokens"; import { usePayouts } from "./usePayouts"; +import { Hex } from "viem"; +import { useDataLayer } from "data-layer"; +import { getConfig } from "common/src/config"; const schema = yup.object().shape({ amount: yup @@ -65,11 +68,14 @@ export default function ApplicationDirectPayout({ const network = useNetwork(); const allInputs = watch(); + const allo = useAllo(); + const dataLayer = useDataLayer(); const { data: payouts } = usePayouts({ chainId: chain.id, roundId: round.id, - applicationIndex: application.applicationIndex, + projectId: application.projectId as string, + dataLayer, }); // find answer with question "Payout token" @@ -146,30 +152,37 @@ export default function ApplicationDirectPayout({ throw Error("Payout wallet address not found in answers!"); } - try { - await triggerPayout({ - address, - signer, - token: tokenInfo, - projectId: application.projectId, - applicationIndex: application.applicationIndex, - payoutStrategyAddress: round.payoutStrategy.id, - payoutAmount: amountBN, - payoutVault: data.address, - payoutWallet: payoutWalletAddress, - allowance, - }); + if (allo) { + try { + const isV2 = getConfig().allo.version === "allo-v2"; - window.location.reload(); - } catch (error) { - console.error(error); - setTimeout(() => { - setIsPayoutProgressModelOpen(false); - }, errorModalDelayMs); - setPayoutError({ - message: "There was an error trying to trigger the payout.", - retry: () => onSubmit(data), - }); + await triggerPayout({ + address, + signer, + token: tokenInfo, + applicationId: (application.anchorAddress || + application.projectId) as Hex, + applicationIndex: application.applicationIndex, + roundId: isV2 ? (round.id as Hex) : (round.payoutStrategy.id as Hex), + roundAddress: round.payoutStrategy.id as Hex, + payoutAmount: BigInt(amountBN.toString()), + payoutVault: data.address as Hex, + payoutWallet: payoutWalletAddress as Hex, + allowance: BigInt(allowance.toString()), + allo, + }); + + window.location.reload(); + } catch (error) { + console.error(error); + setTimeout(() => { + setIsPayoutProgressModelOpen(false); + }, errorModalDelayMs); + setPayoutError({ + message: "There was an error trying to trigger the payout.", + retry: () => onSubmit(data), + }); + } } }; @@ -247,12 +260,10 @@ export default function ApplicationDirectPayout({ {formatUTCDateAsISOString( - new Date(Number(payout.createdAt) * 1000) + new Date(payout.createdAt) )}   - {getUTCTime( - new Date(Number(payout.createdAt) * 1000) - )} + {getUTCTime(new Date(payout.createdAt))} ))} diff --git a/packages/round-manager/src/features/round/ApplicationsToReview.tsx b/packages/round-manager/src/features/round/ApplicationsToReview.tsx index 7becc060ac..596175ec1a 100644 --- a/packages/round-manager/src/features/round/ApplicationsToReview.tsx +++ b/packages/round-manager/src/features/round/ApplicationsToReview.tsx @@ -20,6 +20,7 @@ import { GrantApplication, ProgressStatus, ProgressStep, + ProjectStatus, } from "../api/types"; import ConfirmationModal from "../common/ConfirmationModal"; import { @@ -35,7 +36,6 @@ import { errorModalDelayMs } from "../../constants"; import ErrorModal from "../common/ErrorModal"; import { getRoundStrategyType, renderToPlainText, useAllo } from "common"; import { useWallet } from "../common/Auth"; -import { roundApplicationsToCSV } from "../api/exports"; import { CheckIcon } from "@heroicons/react/solid"; import { useApplicationsByRoundId } from "../common/useApplicationsByRoundId"; import { exportAndDownloadCSV } from "./ApplicationsToApproveReject"; @@ -54,7 +54,9 @@ export default function ApplicationsToReview() { const allo = useAllo(); const filteredApplications = applications?.filter( - (a) => a.status === ApplicationStatus.PENDING.toString() && !a.inReview + (a) => + a.status === ApplicationStatus.PENDING.toString() && + !(a.status === "IN_REVIEW") ) || []; const [bulkSelect, setBulkSelect] = useState(false); @@ -104,7 +106,7 @@ export default function ApplicationsToReview() { recipient: application.recipient, projectsMetaPtr: application.projectsMetaPtr, status: application.status, - inReview: application.inReview, + inReview: application.status === "IN_REVIEW", applicationIndex: application.applicationIndex, createdAt: application.createdAt, distributionTransaction: application.distributionTransaction, @@ -132,10 +134,12 @@ export default function ApplicationsToReview() { window.location.reload(); }; - const toggleSelection = (id: string) => { + const toggleApproval = (id: string) => { const newState = selected?.map((grantApp: GrantApplication) => { if (grantApp.id === id) { - return { ...grantApp, inReview: !grantApp.inReview }; + const newStatus: ProjectStatus = + grantApp.status === "IN_REVIEW" ? "PENDING" : "IN_REVIEW"; + return { ...grantApp, status: newStatus }; } return grantApp; @@ -149,7 +153,7 @@ export default function ApplicationsToReview() { (grantApp: GrantApplication) => grantApp.id === id ); if (!selectedApplication) return false; - return Boolean(selectedApplication.inReview); + return selectedApplication.status === "IN_REVIEW"; }; const handleBulkReview = async () => { @@ -176,7 +180,7 @@ export default function ApplicationsToReview() { ), roundStrategyAddress: applications[0].payoutStrategy.id, selectedApplications: selected.filter( - (application) => application.inReview + (application) => application.status === "IN_REVIEW" ), }); setBulkSelect(false); @@ -261,7 +265,7 @@ export default function ApplicationsToReview() { toggleSelection(application.id)} + inReviewOnClick={() => toggleApproval(application.id)} application={application} /> @@ -282,60 +286,65 @@ export default function ApplicationsToReview() { )} - {selected && selected?.filter((obj) => obj.inReview).length > 0 && ( - <> -
-
-
- Boolean(selected.inReview)} - /> - setOpenModal(true)} /> + {selected && + selected?.filter((obj) => obj.status === "IN_REVIEW").length > 0 && ( + <> +
+
+
+ selected.status === "IN_REVIEW"} + /> + setOpenModal(true)} /> +
-
- -

- You have selected multiple Grant Applications to move them to - "In Review" state. -

-
-
- - - <> - - In review - - - {selected?.filter((obj) => obj.inReview).length} - - + +

+ You have selected multiple Grant Applications to move them + to "In Review" state. +

+
+
+ + + <> + + In review + + + { + selected?.filter( + (obj) => obj.status === "IN_REVIEW" + ).length + } + + +
-
- - - } - confirmButtonAction={handleBulkReview} - cancelButtonAction={() => setOpenModal(false)} - isOpen={openModal} - setIsOpen={setOpenModal} - /> - - )} + + + } + confirmButtonAction={handleBulkReview} + cancelButtonAction={() => setOpenModal(false)} + isOpen={openModal} + setIsOpen={setOpenModal} + /> + + )}
)}
- {round && strategyType === "DirectGrants" && ( - - )} - {round && } + {round && } + {round && !isDirectRound(round) && + + }
{ return ( round?.payoutStrategy?.strategyName && - getRoundStrategyType(round.payoutStrategy.strategyName) === "DirectGrants" + getRoundStrategyType(round.payoutStrategy.strategyName).includes( + "DirectGrants" + ) ); }; @@ -129,10 +131,8 @@ export default function ViewRoundPage() { {round?.tags?.includes("allo-v2") && }
- {!isDirectRound(round) && ( - - )} - + + {!isDirectRound(round) && }
@@ -661,7 +660,7 @@ export function RoundBadgeStatus({ round }: { round: Round }) { round.applicationsStartTime, round.applicationsEndTime || now )) || - (roundStrategyType === "DirectGrants" && now.isBefore(roundEnds)) + (roundStrategyType === "DirectGrants" && now.isBetween(roundEnds, now)) ) { return (
{ - if (round && isDirectRound(round)) { + if ( + round && round.applicationsEndTime && + isInfiniteDate(round.applicationsEndTime) && + isDirectRound(round) + ) { setRollingApplicationsEnabled(true); + } else { + setRollingApplicationsEnabled(false); } }, [round]); @@ -342,8 +349,8 @@ export default function ViewRoundSettings(props: { id?: string }) { const roundEndDateTime = noRoundEndDate ? "" : round.roundEndTime - ? `${getUTCDate(round.roundEndTime)} ${getUTCTime(round.roundEndTime)}` - : "..."; + ? `${getUTCDate(round.roundEndTime)} ${getUTCTime(round.roundEndTime)}` + : "..."; const hasRoundEnded = moment().isAfter(moment(round.roundEndTime)); const canEditOnlyRoundEndDate = moment().isAfter( @@ -1294,15 +1301,19 @@ function RoundApplicationPeriod(props: { return inputTime.isBefore(moment()); }; + const showApplicationPeriod = + (isV2 && isDirectRound(editedRound)) || !isDirectRound(editedRound); + const showRoundPeriod = + (!isV2 && isDirectRound(editedRound)) || !isDirectRound(editedRound); + return (
- What are the dates for the{" "} - {!isDirectRound(editedRound) ? "Applications and" : ""} Round voting - period(s)? + What are the dates for the Applications + {showApplicationPeriod ? "" : " and Round voting"} period(s)?
- {!isDirectRound(editedRound) && ( + {showApplicationPeriod && ( <>
true - : disablePastDate - } + isValidDate={isV2 ? () => true : disablePastDate} inputProps={{ id: "applicationsStartTime", placeholder: "", @@ -1432,32 +1439,41 @@ function RoundApplicationPeriod(props: {
)}
- { - setRollingApplicationsEnabled( - !rollingApplicationsEnabled - ); - props.setEditedRound({ - ...props.editedRound, - applicationsEndTime: props.editedRound.roundEndTime, - }); - props.setValue( - "applicationsEndTime", - props.editedRound.roundEndTime - ); - }} + ( + { + const isChecked = e.target.checked; + setRollingApplicationsEnabled(isChecked); + const newEndTime = isChecked + ? new Date(maxDateForUint256) + : moment(new Date()).add(1, "days").toDate(); + props.setEditedRound({ + ...props.editedRound, + applicationsEndTime: newEndTime, + }); + props.setValue("applicationsEndTime", newEndTime); + }} + /> + )} /> +
@@ -1606,235 +1622,246 @@ function RoundApplicationPeriod(props: { )} -
-
- Round -
-
- {props.editMode.canEdit && - (isV2 || - !moment(editedRound.roundStartTime).isBefore(new Date())) ? ( -
-
-

Start Date

- ( -
- { - setRoundStartDate(moment(date)); - field.onChange(moment(date).toDate()); - props.setEditedRound({ - ...props.editedRound, - roundStartTime: moment(date).toDate(), - }); - }} - utc={true} - dateFormat={"YYYY/MM/DD"} - timeFormat={"HH:mm UTC"} - isValidDate={ - isV2 ? (current: Moment) => true : disablePastDate - } - inputProps={{ - id: "roundStartTime", - placeholder: "", - className: `${ - !props.editMode.canEdit ? "bg-grey-50" : "" - } block w-full border-0 p-0 text-gray-900 placeholder-grey-400 focus:ring-0 text-sm`, - }} - /> -
- - - -
-
- )} - /> -
- {props.errors.roundStartTime && ( -

- {props.errors.roundStartTime?.message} -

- )} -
- ) : ( + {showRoundPeriod && ( + <> +
-

Start Date

- + Round
- )} -
-
-
-
-   -
-
- {props.editMode.canEdit && - !moment(editedRound.roundEndTime).isBefore(new Date()) ? ( -
-
-

End Date

- ( -
- { - field.onChange(moment(date).toDate()); - !rollingApplicationsEnabled - ? props.setEditedRound({ - ...props.editedRound, - roundEndTime: moment(date).toDate(), - }) - : props.setEditedRound({ +
+ {props.editMode.canEdit && + (isV2 || + !moment(editedRound.roundStartTime).isBefore(new Date())) ? ( +
+
+

Start Date

+ ( +
+ { + setRoundStartDate(moment(date)); + field.onChange(moment(date).toDate()); + props.setEditedRound({ ...props.editedRound, - roundEndTime: moment(date).toDate(), - applicationsEndTime: moment(date).toDate(), + roundStartTime: moment(date).toDate(), }); - }} - utc={true} - dateFormat={"YYYY/MM/DD"} - timeFormat={"HH:mm UTC"} - isValidDate={disableBeforeRoundStartDate} - inputProps={{ - id: "roundEndTime", - placeholder: "", - className: `${ - !props.editMode.canEdit - ? "bg-grey-50" - : "text-gray-900" - } block w-full border-0 p-0 placeholder-grey-400 focus:ring-0 text-sm`, - }} - /> -
- - true : disablePastDate} + inputProps={{ + id: "roundStartTime", + placeholder: "", + className: `${ + !props.editMode.canEdit ? "bg-grey-50" : "" + } block w-full border-0 p-0 text-gray-900 placeholder-grey-400 focus:ring-0 text-sm`, + }} /> - -
-
+
+ + + +
+
+ )} + /> +
+ {props.errors.roundStartTime && ( +

+ {props.errors.roundStartTime?.message} +

)} - /> -
- {props.errors.roundEndTime && ( -

+ ) : ( +

- {props.errors.roundEndTime?.message} -

+

Start Date

+ +
)}
- ) : ( +
+
-

End Date

- +  
- )} -
-
+
+ {props.editMode.canEdit && + !moment(editedRound.roundEndTime).isBefore(new Date()) ? ( +
+
+

End Date

+ ( +
+ { + field.onChange(moment(date).toDate()); + !rollingApplicationsEnabled + ? props.setEditedRound({ + ...props.editedRound, + roundEndTime: moment(date).toDate(), + }) + : props.setEditedRound({ + ...props.editedRound, + roundEndTime: moment(date).toDate(), + applicationsEndTime: + moment(date).toDate(), + }); + }} + utc={true} + dateFormat={"YYYY/MM/DD"} + timeFormat={"HH:mm UTC"} + isValidDate={disableBeforeRoundStartDate} + inputProps={{ + id: "roundEndTime", + placeholder: "", + className: `${ + !props.editMode.canEdit + ? "bg-grey-50" + : "text-gray-900" + } block w-full border-0 p-0 placeholder-grey-400 focus:ring-0 text-sm`, + }} + /> +
+ + + +
+
+ )} + /> +
+ {props.errors.roundEndTime && ( +

+ {props.errors.roundEndTime?.message} +

+ )} +
+ ) : ( +
+

End Date

+ +
+ )} +
+
+ + )}
); diff --git a/packages/round-manager/src/features/round/__tests__/ApplicationDirectPayout.test.tsx b/packages/round-manager/src/features/round/__tests__/ApplicationDirectPayout.test.tsx index d5748bfc97..3e0c00c570 100644 --- a/packages/round-manager/src/features/round/__tests__/ApplicationDirectPayout.test.tsx +++ b/packages/round-manager/src/features/round/__tests__/ApplicationDirectPayout.test.tsx @@ -9,7 +9,11 @@ import { import "@testing-library/jest-dom/extend-expect"; import ApplicationDirectPayout from "../ApplicationDirectPayout"; import { makeGrantApplicationData, makeRoundData } from "../../../test-utils"; -import { ROUND_PAYOUT_DIRECT_OLD as ROUND_PAYOUT_DIRECT } from "common"; +import { + AlloContext, + AlloV2, + ROUND_PAYOUT_DIRECT_OLD as ROUND_PAYOUT_DIRECT, +} from "common"; import { useWallet } from "../../common/Auth"; import { useDisconnect, useNetwork, useSwitchNetwork } from "wagmi"; @@ -19,6 +23,7 @@ import moment from "moment"; import { parseUnits } from "ethers/lib/utils.js"; import { usePayout } from "../../../context/application/usePayout"; import { usePayouts } from "../usePayouts"; +import { DataLayer, DataLayerContext } from "data-layer"; jest.mock("../../../types/generated/typechain"); jest.mock("../../common/Auth"); @@ -71,6 +76,38 @@ const correctAnswerBlocks = [ }, ]; +const backend = new AlloV2({ + chainId: 1, + ipfsUploader: jest.fn(), + transactionSender: { + send: jest.fn(), + wait: jest.fn(), + address: jest.fn(), + }, + waitUntilIndexerSynced: jest.fn(), +}); + +const client = new DataLayer({ + indexer: { + baseUrl: "https://mock-indexer.com", + }, + search: { + baseUrl: "https://mock-search.com", + }, + collections: { + googleSheetsUrl: "https://mock-google-sheets.com", + }, + fetch: jest.fn(), + ipfs: { + gateway: "https://mock-ipfs.com", + }, + subgraph: { + endpointsByChainId: { + 1: "https://mock-subgraph.com", + }, + }, +}); + describe("", () => { let mockAllowance: jest.Mock; let mockTriggerPayout: jest.Mock; @@ -131,7 +168,13 @@ describe("", () => { }); try { - render(); + render( + + + + + + ); } catch (error: any) { expect(error.message).toBe('"Payout token" not found in answers!'); } @@ -169,7 +212,13 @@ describe("", () => { }); try { - render(); + render( + + + + + + ); } catch (error: any) { expect(error.message).toContain("Token info not found for chain id"); } @@ -194,7 +243,13 @@ describe("", () => { data: [], }); - render(); + render( + + + + + + ); expect( screen.queryByText("Payouts have not been made yet.") @@ -240,7 +295,13 @@ describe("", () => { ], }); - render(); + render( + + + + + + ); const tbody = screen.getByTestId("direct-payout-payments-table"); const filas = within(tbody).getAllByRole("row"); @@ -272,7 +333,13 @@ describe("", () => { data: [], }); - render(); + render( + + + + + + ); const button = screen.getByTestId("trigger-payment"); fireEvent.click(button); @@ -305,7 +372,13 @@ describe("", () => { data: [], }); - render(); + render( + + + + + + ); const inputAmount = screen.getByTestId("payout-amount-input"); const inputAddress = screen.getByTestId("payout-amount-address"); @@ -347,7 +420,13 @@ describe("", () => { data: [], }); - render(); + render( + + + + + + ); const inputAmount = screen.getByTestId("payout-amount-input"); const inputAddress = screen.getByTestId("payout-amount-address"); diff --git a/packages/round-manager/src/features/round/__tests__/ApplicationsApproved.test.tsx b/packages/round-manager/src/features/round/__tests__/ApplicationsApproved.test.tsx index 8ad7fad803..82353e8ca3 100644 --- a/packages/round-manager/src/features/round/__tests__/ApplicationsApproved.test.tsx +++ b/packages/round-manager/src/features/round/__tests__/ApplicationsApproved.test.tsx @@ -18,13 +18,23 @@ import { import { ProgressStatus } from "../../api/types"; import { errorModalDelayMs } from "../../../constants"; import { useApplicationsByRoundId } from "../../common/useApplicationsByRoundId"; -import { AlloOperation, useAllo } from "common"; +import { AlloOperation, useAllo, AlloV1 } from "common"; jest.mock("common", () => ({ ...jest.requireActual("common"), useAllo: jest.fn(), })); +jest.mock("common/src/allo/backends/allo-v1"); + +const mockBulkUpdateApplicationStatus = jest.fn().mockResolvedValue({ + type: "success", +}); + +jest + .spyOn(AlloV1.prototype, "bulkUpdateApplicationStatus") + .mockImplementation(mockBulkUpdateApplicationStatus); + jest.mock("../../api/application"); jest.mock("../../api/subgraph"); jest.mock("react-router-dom", () => ({ @@ -288,46 +298,34 @@ describe("", () => { }); // TODO -- can't get this to pass -- expect(updateApplicationStatuses).toBeCalled() fails even though updateApplicationStatuses is called - // it("update round contract", async () => { - // (updateApplicationStatuses as jest.Mock).mockResolvedValue({ - // transactionBlockNumber: 99, - // }); - // (waitForSubgraphSyncTo as jest.Mock).mockResolvedValue({}); - // - // renderWithContext( - // , - // { - // applications: grantApplications, - // isLoading: false, - // }, - // { - // IPFSCurrentStatus: ProgressStatus.IS_SUCCESS, - // contractUpdatingStatus: ProgressStatus.IS_SUCCESS, - // } - // ); - // fireEvent.click( - // screen.getByRole("button", { - // name: /Select/i, - // }) - // ); - // fireEvent.click(screen.queryAllByTestId("reject-button")[0]); - // fireEvent.click( - // screen.getByRole("button", { - // name: /Continue/i, - // })! - // ); - // - // fireEvent.click(screen.getByRole("button", { name: /Confirm/i })!); - // - // await screen.findByTestId("progress-modal"); - // await screen.findByTestId("Updating-complete-icon"); - // - // expect(updateApplicationStatuses).toBeCalled(); - // const updateApplicationStatusesFirstCall = (updateApplicationStatuses as jest.Mock) - // .mock.calls[0]; - // const actualRoundId = updateApplicationStatusesFirstCall[0]; - // expect(actualRoundId).toEqual(roundIdOverride); - // }); + it("update round contract", async () => { + renderWithContext(, { + applications: grantApplications, + }); + fireEvent.click( + screen.getByRole("button", { + name: /Select/i, + }) + ); + fireEvent.click(screen.queryAllByTestId("reject-button")[0]); + fireEvent.click( + screen.getByRole("button", { + name: /Continue/i, + })! + ); + + fireEvent.click(screen.getByRole("button", { name: /Confirm/i })!); + + await screen.findByTestId("progress-modal"); + + expect(mockBulkUpdateApplicationStatus).toBeCalled(); + const updateApplicationStatusesFirstCall = ( + mockBulkUpdateApplicationStatus as jest.Mock + ).mock.calls[0][0].roundId; + + const actualRound = updateApplicationStatusesFirstCall; + expect(actualRound).toEqual(roundIdOverride); + }); it("closes confirmation when cancel is selected", async () => { setupInBulkSelectionMode(); diff --git a/packages/round-manager/src/features/round/__tests__/ApplicationsToReview.test.tsx b/packages/round-manager/src/features/round/__tests__/ApplicationsToReview.test.tsx index 6ead02cdd6..09c8d07a29 100644 --- a/packages/round-manager/src/features/round/__tests__/ApplicationsToReview.test.tsx +++ b/packages/round-manager/src/features/round/__tests__/ApplicationsToReview.test.tsx @@ -15,18 +15,27 @@ import { BulkUpdateGrantApplicationState, initialBulkUpdateGrantApplicationState, } from "../../../context/application/BulkUpdateGrantApplicationContext"; -import { updatePayoutApplicationStatuses } from "../../api/application"; import { ProgressStatus } from "../../api/types"; import { errorModalDelayMs } from "../../../constants"; import { useApplicationsByRoundId } from "../../common/useApplicationsByRoundId"; import { ROUND_PAYOUT_DIRECT_OLD as ROUND_PAYOUT_DIRECT } from "common"; -import { AlloOperation, useAllo } from "common"; +import { AlloOperation, useAllo, AlloV1 } from "common"; jest.mock("common", () => ({ ...jest.requireActual("common"), useAllo: jest.fn(), })); +jest.mock("common/src/allo/backends/allo-v1"); + +const mockBulkUpdateApplicationStatus = jest.fn().mockResolvedValue({ + type: "success", +}); + +jest + .spyOn(AlloV1.prototype, "bulkUpdateApplicationStatus") + .mockImplementation(mockBulkUpdateApplicationStatus); + jest.mock("../../api/application"); jest.mock("../../common/Auth", () => ({ useWallet: () => ({ @@ -321,7 +330,6 @@ describe("", () => { }); it("starts the bulk update process when confirm is selected", async () => { - (updatePayoutApplicationStatuses as jest.Mock).mockResolvedValue(""); setupInBulkSelectionMode(); const inReviewButton = screen.queryAllByTestId("in-review-button")[0]; @@ -339,12 +347,12 @@ describe("", () => { fireEvent.click(confirmationModalConfirmButton); await waitFor(() => { - expect(updatePayoutApplicationStatuses).toBeCalled(); + expect(mockBulkUpdateApplicationStatus).toBeCalled(); }); - expect(updatePayoutApplicationStatuses).toBeCalled(); - const calls = (updatePayoutApplicationStatuses as jest.Mock).mock.calls; - expect(calls[0][0]).toEqual(payoutStrategyId); + expect(mockBulkUpdateApplicationStatus).toBeCalled(); + const calls = (mockBulkUpdateApplicationStatus as jest.Mock).mock.calls; + expect(calls[0][0].strategyAddress).toEqual(payoutStrategyId); }); it("closes confirmation when cancel is selected", async () => { @@ -384,7 +392,7 @@ describe("", () => { describe("when processing bulk action fails", () => { beforeEach(() => { const transactionBlockNumber = 10; - (updatePayoutApplicationStatuses as jest.Mock).mockResolvedValue({ + (mockBulkUpdateApplicationStatus as jest.Mock).mockResolvedValue({ transactionBlockNumber, }); diff --git a/packages/round-manager/src/features/round/usePayouts.tsx b/packages/round-manager/src/features/round/usePayouts.tsx index d2e67364de..e86c9ba673 100644 --- a/packages/round-manager/src/features/round/usePayouts.tsx +++ b/packages/round-manager/src/features/round/usePayouts.tsx @@ -1,10 +1,11 @@ -import { graphql_fetch } from "common"; +import { DataLayer } from "data-layer"; import useSWR from "swr"; export function usePayouts(args: { chainId: number; roundId?: string; - applicationIndex?: number; + projectId: string; + dataLayer: DataLayer; }) { return useSWR< { @@ -14,35 +15,35 @@ export function usePayouts(args: { txnHash: string; }[] >( - args.roundId !== undefined && args.applicationIndex !== undefined - ? [args.chainId, args.roundId, args.applicationIndex] + args.roundId !== undefined && args.projectId !== undefined + ? [args.chainId, args.roundId, args.projectId] : null, async () => { - const res = await graphql_fetch( - ` - query GetApplicationsByRoundId($roundId: String!, $applicationIndex: Int!) { - roundApplications(where: { - round: $roundId - applicationIndex: $applicationIndex - }) { - round { - payoutStrategy { - payouts { - amount - createdAt - txnHash - applicationIndex - } - } - } - } - } - `, - args.chainId, - { roundId: args.roundId, applicationIndex: args.applicationIndex } - ); + if (args.roundId === undefined || args.projectId === undefined) { + // If roundId or recipientId is not provided, return empty array + return []; + } - return res.data.roundApplications[0].round.payoutStrategy.payouts ?? []; + const result = await args.dataLayer.getPayoutsByChainIdRoundIdProjectId({ + chainId: args.chainId, + roundId: args.roundId, + projectId: args.projectId, + }); + + const payouts = + result.applications[0] + .applicationsPayoutsByChainIdAndRoundIdAndApplicationId; + + const mappedPayouts = payouts.map((payout) => { + return { + applicationIndex: Number(result.applications[0].id), + amount: payout.amount, + createdAt: payout.timestamp, + txnHash: payout.transactionHash, + }; + }); + + return mappedPayouts; } ); } diff --git a/packages/round-manager/tsconfig.json b/packages/round-manager/tsconfig.json index bcd47413ac..6a4e8be11d 100644 --- a/packages/round-manager/tsconfig.json +++ b/packages/round-manager/tsconfig.json @@ -18,5 +18,7 @@ "types": ["@testing-library/jest-dom", "jest", "node"], "incremental": true }, - "include": ["src"] + "include": [ + "src", + ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7aa5500c90..a9d94b1ad2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,10 +11,11 @@ importers: specifier: ^8.2.2 version: 8.2.2 prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.2.5 + version: 3.2.5 devDependencies: '@commitlint/cli': +<<<<<<< HEAD specifier: ^17.7.1 version: 17.8.1 '@commitlint/config-conventional': @@ -22,6 +23,15 @@ importers: version: 17.8.1 turbo: specifier: ^1.12.3 +======= + specifier: ^17.8.1 + version: 17.8.1 + '@commitlint/config-conventional': + specifier: ^17.8.1 + version: 17.8.1 + turbo: + specifier: ^1.13.3 +>>>>>>> d44273e6 (Add direct grants lite (#3341)) version: 1.13.3 packages/builder: @@ -88,10 +98,10 @@ importers: version: 0.3.11(@rsbuild/core@0.4.1)(typescript@5.3.3) '@rsdoctor/rspack-plugin': specifier: ^0.1.1 - version: 0.1.1 + version: 0.1.1(esbuild@0.18.20) '@synthetixio/synpress': specifier: 3.7.2-beta.10 - version: 3.7.2-beta.10(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) + version: 3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.88.2)(zod@3.22.4) '@tailwindcss/line-clamp': specifier: ^0.4.2 version: 0.4.4(tailwindcss@3.3.3) @@ -163,7 +173,7 @@ importers: version: link:../common craco-esbuild: specifier: ^0.5.2 - version: 0.5.2(@craco/craco@7.1.0)(react-scripts@5.0.1) + version: 0.5.2(@craco/craco@7.1.0)(esbuild@0.18.20)(react-scripts@5.0.1)(webpack@5.88.2) crypto-browserify: specifier: ^3.12.0 version: 3.12.0 @@ -232,7 +242,7 @@ importers: version: 6.15.0(react-dom@18.2.0)(react@18.2.0) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) + version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) redux: specifier: ^4.2.1 version: 4.2.1 @@ -253,7 +263,7 @@ importers: version: 4.0.0 ts-jest: specifier: ^27.0 - version: 27.1.5(@babel/core@7.22.15)(@types/jest@27.5.2)(jest@27.5.1)(typescript@5.3.3) + version: 27.1.5(@babel/core@7.22.15)(@types/jest@27.5.2)(esbuild@0.18.20)(jest@27.5.1)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -361,6 +371,7 @@ importers: packages/common: dependencies: '@allo-team/allo-v2-sdk': +<<<<<<< HEAD specifier: ^1.0.61 <<<<<<< HEAD <<<<<<< HEAD @@ -371,6 +382,10 @@ importers: ======= version: 1.0.61(ethers@5.7.2)(typescript@5.4.5)(zod@3.22.4) >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= + specifier: 1.0.67 + version: 1.0.67(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(typechain@8.3.2)(typescript@5.4.5)(zod@3.22.4) +>>>>>>> d44273e6 (Add direct grants lite (#3341)) '@ethersproject/abstract-signer': specifier: ^5.7.0 version: 5.7.0 @@ -385,7 +400,7 @@ importers: version: 1.0.5 '@rainbow-me/rainbowkit': specifier: ^0.12.16 - version: 0.12.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(wagmi@0.12.19) + version: 0.12.16(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(wagmi@0.12.19) '@spruceid/didkit-wasm': specifier: 0.3.0-alpha0 version: 0.3.0-alpha0 @@ -412,7 +427,7 @@ importers: version: 5.7.2 framer-motion: specifier: ^10.12.7 - version: 10.16.4(react@18.2.0) + version: 10.16.4(react-dom@18.2.0)(react@18.2.0) markdown-it: specifier: ^13.0.1 version: 13.0.1 @@ -427,13 +442,13 @@ importers: version: 6.15.0(react@18.2.0) react-router-dom: specifier: ^6.11.1 - version: 6.15.0(react@18.2.0) + version: 6.15.0(react-dom@18.2.0)(react@18.2.0) swr: specifier: ^2.0.1 version: 2.2.2(react@18.2.0) tailwind-styled-components: specifier: ^2.2.0 - version: 2.2.0(react@18.2.0) + version: 2.2.0(react-dom@18.2.0)(react@18.2.0) tiny-emitter: specifier: ^2.1.0 version: 2.1.0 @@ -445,7 +460,7 @@ importers: version: 1.10.7(typescript@5.4.5)(zod@3.22.4) wagmi: specifier: 0.12.19 - version: 0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4) + version: 0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4) zod: specifier: ^3.22.4 version: 3.22.4 @@ -488,7 +503,7 @@ importers: version: 3.3.0 graphql-request: specifier: ^6.1.0 - version: 6.1.0 + version: 6.1.0(graphql@16.8.1) knuth-shuffle-seeded: specifier: ^1.0.6 version: 1.0.6 @@ -612,7 +627,7 @@ importers: version: 2.8.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.21)(framer-motion@10.16.4)(react-dom@18.2.0)(react@18.2.0) '@craco/craco': specifier: ^7.1.0 - version: 7.1.0(@types/node@17.0.45)(postcss@8.4.29)(typescript@5.2.2) + version: 7.1.0(@types/node@17.0.45)(postcss@8.4.29)(react-scripts@5.0.1)(typescript@5.2.2) '@datadog/browser-logs': specifier: ^4.19.0 version: 4.48.1(@datadog/browser-rum@4.48.1) @@ -654,7 +669,7 @@ importers: version: 0.3.11(@rsbuild/core@0.4.1)(typescript@5.2.2) '@rsdoctor/rspack-plugin': specifier: ^0.1.1 - version: 0.1.1 + version: 0.1.1(esbuild@0.18.20) '@sentry/browser': specifier: ^7.112.2 version: 7.112.2 @@ -672,7 +687,7 @@ importers: version: 1.20.1 '@synthetixio/synpress': specifier: 3.7.2-beta.10 - version: 3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(zod@3.22.4) + version: 3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2)(zod@3.22.4) '@tailwindcss/forms': specifier: ^0.5.3 version: 0.5.6(tailwindcss@3.3.3) @@ -694,9 +709,6 @@ importers: '@testing-library/user-event': specifier: ^14.1.1 version: 14.4.3(@testing-library/dom@9.3.1) - '@vitejs/plugin-react': - specifier: ^4.0.4 - version: 4.0.4(vite@4.4.9) '@wagmi/core': specifier: 1.4.1 version: 1.4.1(@types/react@18.2.21)(react@18.2.0)(typescript@5.2.2)(viem@1.10.7)(zod@3.22.4) @@ -708,7 +720,7 @@ importers: version: github.com/gitcoinco/allo-indexer-client/2f8dcdf1f1611e0efd0f48aa8aa426b78d9e8508 babel-loader: specifier: ^8.3.0 - version: 8.3.0(@babel/core@7.22.15) + version: 8.3.0(@babel/core@7.22.15)(webpack@5.88.2) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -717,7 +729,7 @@ importers: version: link:../common craco-esbuild: specifier: ^0.5.2 - version: 0.5.2(@craco/craco@7.1.0) + version: 0.5.2(@craco/craco@7.1.0)(esbuild@0.18.20)(react-scripts@5.0.1)(webpack@5.88.2) crypto-browserify: specifier: ^3.12.0 version: 3.12.0 @@ -1024,7 +1036,7 @@ importers: version: 13.4.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: ^14.1.1 - version: 14.4.3 + version: 14.4.3(@testing-library/dom@9.3.1) '@types/jest': specifier: ^27.4.1 version: 27.5.2 @@ -1132,7 +1144,7 @@ importers: version: 6.15.0(react-dom@18.2.0)(react@18.2.0) react-scripts: specifier: 5.0.1 - version: 5.0.1(react@18.2.0)(typescript@5.3.3) + version: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.50.0)(react@18.2.0)(typescript@5.3.3) react-tooltip: specifier: ^4.4.2 version: 4.5.1(react-dom@18.2.0)(react@18.2.0) @@ -1168,10 +1180,10 @@ importers: version: link:../verify-env viem: specifier: ^2.5.0 - version: 2.7.1(typescript@5.3.3) + version: 2.7.1(typescript@5.3.3)(zod@3.22.4) wagmi: specifier: 0.12.18 - version: 0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) web-vitals: specifier: ^2.1.0 version: 2.1.4 @@ -1202,16 +1214,16 @@ importers: version: 0.3.11(@rsbuild/core@0.4.1)(typescript@5.3.3) '@rsdoctor/rspack-plugin': specifier: ^0.1.1 - version: 0.1.1 + version: 0.1.1(esbuild@0.18.20) '@synthetixio/synpress': specifier: 3.7.2-beta.10 - version: 3.7.2-beta.10(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.88.2)(zod@3.22.4) '@tailwindcss/line-clamp': specifier: ^0.4.0 version: 0.4.4(tailwindcss@3.3.3) '@typechain/ethers-v5': specifier: 10.2.0 - version: 10.2.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@5.3.3) + version: 10.2.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@5.3.3) '@types/lodash': specifier: ^4.14.192 version: 4.14.198 @@ -1238,7 +1250,7 @@ importers: version: 10.4.15(postcss@8.4.29) craco-esbuild: specifier: ^0.5.2 - version: 0.5.2(@craco/craco@7.1.0)(react-scripts@5.0.1) + version: 0.5.2(@craco/craco@7.1.0)(esbuild@0.18.20)(react-scripts@5.0.1)(webpack@5.88.2) dotenv: specifier: ^16.4.1 version: 16.4.1 @@ -1297,6 +1309,7 @@ packages: resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} dev: false +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD /@allo-team/allo-v2-sdk@1.0.72(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(ts-node@10.9.1)(typechain@8.3.2)(typescript@5.4.5)(zod@3.22.4): @@ -1326,9 +1339,17 @@ packages: ======= '@typechain/hardhat': 9.1.0(ethers@5.7.2)(hardhat@2.20.1) dotenv: 16.4.1 +======= + /@allo-team/allo-v2-sdk@1.0.67(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(typechain@8.3.2)(typescript@5.4.5)(zod@3.22.4): + resolution: {integrity: sha512-q1+1AfkGFRkmYrP7lK/c0ggiVb2eOzfv05nFpJiReTgRL9aL2ubSmnLF492jSphvPcAe5nj9nNZ1peKzO3qLlA==} + engines: {node: '>=16.15.0', npm: '>=8.5.5'} + dependencies: + '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(hardhat@2.22.3)(typechain@8.3.2) + dotenv: 16.4.5 +>>>>>>> d44273e6 (Add direct grants lite (#3341)) events: 3.3.0 - hardhat: 2.20.1(typescript@5.4.5) - mocha: 10.3.0 + hardhat: 2.22.3(typescript@5.4.5) + mocha: 10.4.0 viem: 1.21.4(typescript@5.4.5)(zod@3.22.4) >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) transitivePeerDependencies: @@ -1409,7 +1430,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.22.15(@babel/core@7.22.15): + /@babel/eslint-parser@7.22.15(@babel/core@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -1418,11 +1439,11 @@ packages: dependencies: '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.48.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - dev: false - /@babel/eslint-parser@7.22.15(@babel/core@7.22.15)(eslint@8.48.0): + /@babel/eslint-parser@7.22.15(@babel/core@7.22.15)(eslint@8.50.0): resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -1431,9 +1452,10 @@ packages: dependencies: '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.48.0 + eslint: 8.50.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 + dev: false /@babel/generator@7.22.15: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} @@ -2372,6 +2394,7 @@ packages: '@babel/core': 7.22.15 '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) +<<<<<<< HEAD /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.22.15): resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} @@ -2392,6 +2415,8 @@ packages: '@babel/helper-plugin-utils': 7.24.5 dev: false +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} @@ -4290,7 +4315,7 @@ packages: chalk: 4.1.2 dev: true - /@craco/craco@7.1.0(@types/node@17.0.45)(postcss@8.4.29)(react-scripts@5.0.1)(typescript@5.3.3): + /@craco/craco@7.1.0(@types/node@17.0.45)(postcss@8.4.29)(react-scripts@5.0.1)(typescript@5.2.2): resolution: {integrity: sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==} engines: {node: '>=6'} hasBin: true @@ -4299,10 +4324,10 @@ packages: dependencies: autoprefixer: 10.4.15(postcss@8.4.29) cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.45)(typescript@5.3.3) + cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.2.2) cross-spawn: 7.0.3 lodash: 4.17.21 - react-scripts: 5.0.1(react@18.2.0)(typescript@5.3.3) + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.2.2) semver: 7.5.4 webpack-merge: 5.9.0 transitivePeerDependencies: @@ -4313,7 +4338,7 @@ packages: - typescript dev: false - /@craco/craco@7.1.0(@types/node@17.0.45)(postcss@8.4.29)(typescript@5.2.2): + /@craco/craco@7.1.0(@types/node@17.0.45)(postcss@8.4.29)(react-scripts@5.0.1)(typescript@5.3.3): resolution: {integrity: sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==} engines: {node: '>=6'} hasBin: true @@ -4322,9 +4347,10 @@ packages: dependencies: autoprefixer: 10.4.15(postcss@8.4.29) cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.45)(typescript@5.2.2) + cosmiconfig-typescript-loader: 1.0.9(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.3.3) cross-spawn: 7.0.3 lodash: 4.17.21 + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.50.0)(react@18.2.0)(typescript@5.3.3) semver: 7.5.4 webpack-merge: 5.9.0 transitivePeerDependencies: @@ -4344,10 +4370,10 @@ packages: dependencies: autoprefixer: 10.4.15(postcss@8.4.29) cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 1.0.9(@types/node@18.17.14)(typescript@5.3.3) + cosmiconfig-typescript-loader: 1.0.9(@types/node@18.17.14)(cosmiconfig@7.1.0)(typescript@5.3.3) cross-spawn: 7.0.3 lodash: 4.17.21 - react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) semver: 7.5.4 webpack-merge: 5.9.0 transitivePeerDependencies: @@ -4504,7 +4530,7 @@ packages: dependencies: postcss-selector-parser: 6.0.13 - /@cypress/code-coverage@3.12.20(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(cypress@12.17.3): + /@cypress/code-coverage@3.12.20(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(cypress@12.17.3)(webpack@5.88.2): resolution: {integrity: sha512-F1IcJZYjlNf1ylE8KX3rKDKlTTEOUMRPnweVZdlAGMQzG12wDYWlMx2QZwevdMUzsr/kCnf7fuAzcOczu0515g==} peerDependencies: '@babel/core': ^7.0.1 @@ -4515,32 +4541,8 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/preset-env': 7.22.15(@babel/core@7.22.15) - '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0) - babel-loader: 8.3.0(@babel/core@7.22.15) - chalk: 4.1.2 - cypress: 12.17.3 - dayjs: 1.11.10 - debug: 4.3.4 - execa: 4.1.0 - globby: 11.1.0 - istanbul-lib-coverage: 3.2.0 - js-yaml: 4.1.0 - nyc: 15.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@cypress/code-coverage@3.12.20(@babel/core@7.22.15)(cypress@12.17.3): - resolution: {integrity: sha512-F1IcJZYjlNf1ylE8KX3rKDKlTTEOUMRPnweVZdlAGMQzG12wDYWlMx2QZwevdMUzsr/kCnf7fuAzcOczu0515g==} - peerDependencies: - '@babel/core': ^7.0.1 - '@babel/preset-env': ^7.0.0 - babel-loader: ^8.3 || ^9 - cypress: '*' - webpack: ^4 || ^5 - dependencies: - '@babel/core': 7.22.15 - '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.22.15) + '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(webpack@5.88.2) + babel-loader: 8.3.0(@babel/core@7.22.15)(webpack@5.88.2) chalk: 4.1.2 cypress: 12.17.3 dayjs: 1.11.10 @@ -4550,6 +4552,7 @@ packages: istanbul-lib-coverage: 3.2.0 js-yaml: 4.1.0 nyc: 15.1.0 + webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - supports-color @@ -4576,18 +4579,18 @@ packages: tunnel-agent: 0.6.0 uuid: 8.3.2 - /@cypress/webpack-dev-server@3.7.4(debug@4.3.4): + /@cypress/webpack-dev-server@3.7.4(debug@4.3.4)(webpack@5.88.2): resolution: {integrity: sha512-/j6Hgq7eDKuoqa6hsnf4y01PFXMQJEjvj8cXSQB597Ufpm3kApwsRlHj4cN1kyaRckujbfPaXX/5gMHDbOTM1g==} dependencies: find-up: 6.3.0 fs-extra: 9.1.0 - html-webpack-plugin-4: /html-webpack-plugin@4.5.2 - html-webpack-plugin-5: /html-webpack-plugin@5.5.3 + html-webpack-plugin-4: /html-webpack-plugin@4.5.2(webpack@5.88.2) + html-webpack-plugin-5: /html-webpack-plugin@5.5.3(webpack@5.88.2) local-pkg: 0.4.1 semver: 7.5.4 - speed-measure-webpack-plugin: 1.4.2 + speed-measure-webpack-plugin: 1.4.2(webpack@5.88.2) tslib: 2.6.2 - webpack-dev-server: 4.15.1(debug@4.3.4) + webpack-dev-server: 4.15.1(debug@4.3.4)(webpack@5.88.2) webpack-merge: 5.9.0 transitivePeerDependencies: - bufferutil @@ -4597,22 +4600,7 @@ packages: - webpack - webpack-cli - /@cypress/webpack-preprocessor@6.0.1(@babel/core@7.22.15): - resolution: {integrity: sha512-WVNeFVSnFKxE3WZNRIriduTgqJRpevaiJIPlfqYTTzfXRD7X1Pv4woDE+G4caPV9bJqVKmVFiwzrXMRNeJxpxA==} - peerDependencies: - '@babel/core': ^7.0.1 - '@babel/preset-env': ^7.0.0 - babel-loader: ^8.3 || ^9 - webpack: ^4 || ^5 - dependencies: - '@babel/core': 7.22.15 - bluebird: 3.7.1 - debug: 4.3.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - /@cypress/webpack-preprocessor@6.0.1(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0): + /@cypress/webpack-preprocessor@6.0.1(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(webpack@5.88.2): resolution: {integrity: sha512-WVNeFVSnFKxE3WZNRIriduTgqJRpevaiJIPlfqYTTzfXRD7X1Pv4woDE+G4caPV9bJqVKmVFiwzrXMRNeJxpxA==} peerDependencies: '@babel/core': ^7.0.1 @@ -4622,13 +4610,13 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/preset-env': 7.22.15(@babel/core@7.22.15) - babel-loader: 8.3.0(@babel/core@7.22.15) + babel-loader: 8.3.0(@babel/core@7.22.15)(webpack@5.88.2) bluebird: 3.7.1 debug: 4.3.4 lodash: 4.17.21 + webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - supports-color - dev: false /@cypress/xvfb@1.2.4(supports-color@8.1.1): resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} @@ -5169,15 +5157,6 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0: - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint-visitor-keys: 3.4.3 - dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5406,34 +5385,6 @@ packages: - bufferutil - utf-8-validate - /@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: {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.1 - '@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.1 - bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: @@ -5560,6 +5511,7 @@ packages: /@gitcoinco/passport-sdk-types@0.2.0: resolution: {integrity: sha512-qS7P4atgeAEfI6VlGcoXr10E6SsKAlHiPNfSyr25HJpnNomi7J0Yy6krscUPiPsn1eCKOFQeC8uDqTdiXXMGLw==} +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): @@ -5580,6 +5532,8 @@ packages: dev: false >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: @@ -6442,11 +6396,22 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 +<<<<<<< HEAD /@nomicfoundation/edr-darwin-arm64@0.3.8: resolution: {integrity: sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw==} engines: {node: '>= 18'} +======= + /@nomicfoundation/edr-darwin-arm64@0.3.7: + resolution: {integrity: sha512-6tK9Lv/lSfyBvpEQ4nsTfgxyDT1y1Uv/x8Wa+aB+E8qGo3ToexQ1BMVjxJk6PChXCDOWxB3B4KhqaZFjdhl3Ow==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true +>>>>>>> d44273e6 (Add direct grants lite (#3341)) dev: false + optional: true +<<<<<<< HEAD /@nomicfoundation/edr-darwin-x64@0.3.8: resolution: {integrity: sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw==} engines: {node: '>= 18'} @@ -6504,6 +6469,73 @@ packages: - c-kzg - supports-color >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= + /@nomicfoundation/edr-darwin-x64@0.3.7: + resolution: {integrity: sha512-1RrQ/1JPwxrYO69e0tglFv5H+ggour5Ii3bb727+yBpBShrxtOTQ7fZyfxA5h62LCN+0Z9wYOPeQ7XFcVurMaQ==} + engines: {node: '>= 18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr-linux-arm64-gnu@0.3.7: + resolution: {integrity: sha512-ds/CKlBoVXIihjhflhgPn13EdKWed6r5bgvMs/YwRqT5wldQAQJZWAfA2+nYm0Yi2gMGh1RUpBcfkyl4pq7G+g==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr-linux-arm64-musl@0.3.7: + resolution: {integrity: sha512-e29udiRaPujhLkM3+R6ju7QISrcyOqpcaxb2FsDWBkuD7H8uU9JPZEyyUIpEp5uIY0Jh1eEJPKZKIXQmQAEAuw==} + engines: {node: '>= 18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr-linux-x64-gnu@0.3.7: + resolution: {integrity: sha512-/xkjmTyv+bbJ4akBCW0qzFKxPOV4AqLOmqurov+s9umHb16oOv72osSa3SdzJED2gHDaKmpMITT4crxbar4Axg==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr-linux-x64-musl@0.3.7: + resolution: {integrity: sha512-QwBP9xlmsbf/ldZDGLcE4QiAb8Zt46E/+WLpxHBATFhGa7MrpJh6Zse+h2VlrT/SYLPbh2cpHgSmoSlqVxWG9g==} + engines: {node: '>= 18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr-win32-x64-msvc@0.3.7: + resolution: {integrity: sha512-j/80DEnkxrF2ewdbk/gQ2EOPvgF0XSsg8D0o4+6cKhUVAW6XwtWKzIphNL6dyD2YaWEPgIrNvqiJK/aln0ww4Q==} + engines: {node: '>= 18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nomicfoundation/edr@0.3.7: + resolution: {integrity: sha512-v2JFWnFKRsnOa6PDUrD+sr8amcdhxnG/YbL7LzmgRGU1odWEyOF4/EwNeUajQr4ZNKVWrYnJ6XjydXtUge5OBQ==} + engines: {node: '>= 18'} + optionalDependencies: + '@nomicfoundation/edr-darwin-arm64': 0.3.7 + '@nomicfoundation/edr-darwin-x64': 0.3.7 + '@nomicfoundation/edr-linux-arm64-gnu': 0.3.7 + '@nomicfoundation/edr-linux-arm64-musl': 0.3.7 + '@nomicfoundation/edr-linux-x64-gnu': 0.3.7 + '@nomicfoundation/edr-linux-x64-musl': 0.3.7 + '@nomicfoundation/edr-win32-x64-msvc': 0.3.7 +>>>>>>> d44273e6 (Add direct grants lite (#3341)) dev: false /@nomicfoundation/ethereumjs-common@4.0.4: @@ -6514,6 +6546,7 @@ packages: - c-kzg dev: false +<<<<<<< HEAD <<<<<<< HEAD ======= /@nomicfoundation/ethereumjs-ethash@3.0.4: @@ -6548,12 +6581,15 @@ packages: dev: false >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@nomicfoundation/ethereumjs-rlp@5.0.4: resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} engines: {node: '>=18'} hasBin: true dev: false +<<<<<<< HEAD <<<<<<< HEAD ======= /@nomicfoundation/ethereumjs-statemanager@2.0.4(@nomicfoundation/ethereumjs-verkle@0.0.2): @@ -6593,6 +6629,8 @@ packages: dev: false >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@nomicfoundation/ethereumjs-tx@5.0.4: resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} engines: {node: '>=18'} @@ -6621,6 +6659,7 @@ packages: ethereum-cryptography: 0.1.3 dev: false +<<<<<<< HEAD <<<<<<< HEAD ======= /@nomicfoundation/ethereumjs-verkle@0.0.2: @@ -6657,6 +6696,8 @@ packages: dev: false >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} engines: {node: '>= 10'} @@ -6897,7 +6938,7 @@ packages: react-refresh: 0.11.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-dev-server: 4.15.1(webpack@5.88.2) /@polka/url@1.0.0-next.24: @@ -6950,7 +6991,7 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@0.12.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(wagmi@0.12.19): + /@rainbow-me/rainbowkit@0.12.16(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(wagmi@0.12.19): resolution: {integrity: sha512-4uuJIOJaBjPVM/8HqM1kNf2Yqb52lNYkQD1m8p8e7zcIK2K3nml6BfG5r04f4kqUWRmT3yosZOz2+AYL1zFqdA==} engines: {node: '>=12.4'} peerDependencies: @@ -6966,8 +7007,9 @@ packages: ethers: 5.7.2 qrcode: 1.5.0 react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.4(@types/react@18.2.21)(react@18.2.0) - wagmi: 0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4) + wagmi: 0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4) transitivePeerDependencies: - '@types/react' dev: false @@ -6990,7 +7032,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.4(@types/react@18.2.21)(react@18.2.0) - wagmi: 0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + wagmi: 0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) transitivePeerDependencies: - '@types/react' dev: false @@ -7310,13 +7352,13 @@ packages: /@rsdoctor/client@0.1.1: resolution: {integrity: sha512-xWaAStf0bE8Uj75CiIrYZiB7wTZ5NDbfMKDBtNcYy3zMTLiJoyY/SEsABOI8BbD91zk65bxn0Iinhn0rfAkD2A==} - /@rsdoctor/core@0.1.1: + /@rsdoctor/core@0.1.1(esbuild@0.18.20): resolution: {integrity: sha512-26HdaE+9NmvveSTMrZsQpL5+Yb3wAbTen8I02A8mwp1f1l4QaK0yFCJJWJ5jjVgqcbdOie7oo5xYPpyXFMDqTg==} dependencies: - '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/sdk': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1) + '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/sdk': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) '@rspack/core': 0.5.1 axios: 1.6.7 bytes: 3.1.2 @@ -7339,11 +7381,11 @@ packages: - utf-8-validate - webpack-cli - /@rsdoctor/graph@0.1.1(@rspack/core@0.5.1): + /@rsdoctor/graph@0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20): resolution: {integrity: sha512-6HROnYUKlXQohO80mwaIAznb0woLjwaiqBp6dcj3HDlXyi0FQ6qdhnuJlKcZwmJ2OJFDdu8Gw3Ozi+p5OYasvQ==} dependencies: - '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1) + '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) lodash: 4.17.21 socket.io: 4.7.2 source-map: 0.7.4 @@ -7357,12 +7399,12 @@ packages: - utf-8-validate - webpack-cli - /@rsdoctor/rspack-plugin@0.1.1: + /@rsdoctor/rspack-plugin@0.1.1(esbuild@0.18.20): resolution: {integrity: sha512-tW+qKp5pwLQiNIrjFNkm9htZDCBws5/ZtRLga1dxlyI4JXP4rSJO2Fxeqdcp4o6/OOUplwJPJxdb/nsb+u4LQg==} dependencies: - '@rsdoctor/core': 0.1.1 - '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/sdk': 0.1.1(@rspack/core@0.5.1) + '@rsdoctor/core': 0.1.1(esbuild@0.18.20) + '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/sdk': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) '@rspack/core': 0.5.1 loader-utils: 2.0.4 lodash: 4.17.21 @@ -7377,13 +7419,13 @@ packages: - utf-8-validate - webpack-cli - /@rsdoctor/sdk@0.1.1(@rspack/core@0.5.1): + /@rsdoctor/sdk@0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20): resolution: {integrity: sha512-Q18ZM7JlKr/HxbRdmSf+65fKQmfLbw3OcOkEPPZsNT0q7hphBzEpYc5ic6dfqBwjpfneHTPhjpV6Y/ebsATO6g==} dependencies: '@rsdoctor/client': 0.1.1 - '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1) - '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1) + '@rsdoctor/graph': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) + '@rsdoctor/utils': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) body-parser: 1.20.1 cors: 2.8.5 dayjs: 1.11.6 @@ -7404,7 +7446,7 @@ packages: - utf-8-validate - webpack-cli - /@rsdoctor/types@0.1.1(@rspack/core@0.5.1): + /@rsdoctor/types@0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20): resolution: {integrity: sha512-FAOOOG/4tWrAc+u/JO8iOV9K6sAvvNkY/HUgLJFZLftjDQBcgSN/JUbFGlWb2rA0f/S7/6FQN4N06dPkV4PLKQ==} peerDependencies: '@rspack/core': ^0.5.1 @@ -7416,7 +7458,7 @@ packages: '@types/connect': 3.4.35 '@types/estree': 1.0.0 '@types/tapable': 2.2.2 - '@types/webpack': 5.28.0 + '@types/webpack': 5.28.0(esbuild@0.18.20) source-map: 0.7.4 transitivePeerDependencies: - '@swc/core' @@ -7424,11 +7466,11 @@ packages: - uglify-js - webpack-cli - /@rsdoctor/utils@0.1.1(@rspack/core@0.5.1): + /@rsdoctor/utils@0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20): resolution: {integrity: sha512-ZPAZsxYp48sZWyt04fH9RuXVRpnTWAi8Z6EEKXTiLLZ1Of5usxo2kT09jTpzwGlGxu68Db0JIqyEkqhiMWexVg==} dependencies: '@babel/code-frame': 7.18.6 - '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1) + '@rsdoctor/types': 0.1.1(@rspack/core@0.5.1)(esbuild@0.18.20) '@types/estree': 1.0.0 acorn: 8.10.0 acorn-import-assertions: 1.8.0(acorn@8.10.0) @@ -8587,13 +8629,13 @@ packages: dependencies: tslib: 2.6.2 - /@synthetixio/synpress@3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(zod@3.22.4): + /@synthetixio/synpress@3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(webpack@5.88.2)(zod@3.22.4): resolution: {integrity: sha512-16cQmheXKvuXZ9gvGL1WzM0KUnO0hlP/IoTYb/kD+jWqEuLB3AvH+ecaiqRsiFPh7YUbZU/c8Ajnzb9qYCpXpQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@cypress/code-coverage': 3.12.20(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(cypress@12.17.3) - '@cypress/webpack-dev-server': 3.7.4(debug@4.3.4) + '@cypress/code-coverage': 3.12.20(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(cypress@12.17.3)(webpack@5.88.2) + '@cypress/webpack-dev-server': 3.7.4(debug@4.3.4)(webpack@5.88.2) '@drptbl/gremlins.js': 2.2.1 '@foundry-rs/easy-foundryup': 0.1.3 '@playwright/test': 1.41.2 @@ -8640,66 +8682,13 @@ packages: - zod dev: false - /@synthetixio/synpress@3.7.2-beta.10(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-16cQmheXKvuXZ9gvGL1WzM0KUnO0hlP/IoTYb/kD+jWqEuLB3AvH+ecaiqRsiFPh7YUbZU/c8Ajnzb9qYCpXpQ==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@cypress/code-coverage': 3.12.20(@babel/core@7.22.15)(cypress@12.17.3) - '@cypress/webpack-dev-server': 3.7.4(debug@4.3.4) - '@drptbl/gremlins.js': 2.2.1 - '@foundry-rs/easy-foundryup': 0.1.3 - '@playwright/test': 1.41.2 - '@testing-library/cypress': 9.0.0(cypress@12.17.3) - '@testing-library/react': 14.2.1(react-dom@18.2.0)(react@18.2.0) - '@types/testing-library__cypress': 5.0.13 - '@viem/anvil': 0.0.6(debug@4.3.4) - app-root-path: 3.1.0 - axios: 1.6.7(debug@4.3.4) - babel-plugin-istanbul: 6.1.1 - babel-plugin-react-generate-property: 1.1.2 - babel-plugin-react-remove-properties: 0.3.0 - babel-plugin-transform-react-qa-classes: 1.6.0 - babel-plugin-transform-react-styled-components-qa: 2.1.0 - bytes32: 0.0.3 - commander: 11.1.0 - cypress: 12.17.3 - cypress-wait-until: 2.0.1 - debug: 4.3.4 - dotenv: 16.4.1 - dotenv-parse-variables: 2.0.0 - download: 8.0.0 - ethers: 6.10.0 - etherscan-api: 10.3.0(debug@4.3.4) - find-config: 1.0.0 - get-port: 7.0.0 - node-fetch: 2.7.0 - underscore: 1.13.6 - viem: 1.21.4(typescript@5.3.3) - wait-on: 7.2.0(debug@4.3.4) - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - babel-loader - - bufferutil - - encoding - - react - - react-dom - - supports-color - - typescript - - utf-8-validate - - webpack - - webpack-cli - - zod - dev: true - - /@synthetixio/synpress@3.7.2-beta.10(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4): + /@synthetixio/synpress@3.7.2-beta.10(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.88.2)(zod@3.22.4): resolution: {integrity: sha512-16cQmheXKvuXZ9gvGL1WzM0KUnO0hlP/IoTYb/kD+jWqEuLB3AvH+ecaiqRsiFPh7YUbZU/c8Ajnzb9qYCpXpQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@cypress/code-coverage': 3.12.20(@babel/core@7.22.15)(cypress@12.17.3) - '@cypress/webpack-dev-server': 3.7.4(debug@4.3.4) + '@cypress/code-coverage': 3.12.20(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(babel-loader@8.3.0)(cypress@12.17.3)(webpack@5.88.2) + '@cypress/webpack-dev-server': 3.7.4(debug@4.3.4)(webpack@5.88.2) '@drptbl/gremlins.js': 2.2.1 '@foundry-rs/easy-foundryup': 0.1.3 '@playwright/test': 1.41.2 @@ -8744,7 +8733,6 @@ packages: - webpack - webpack-cli - zod - dev: false /@tailwindcss/forms@0.5.6(tailwindcss@3.3.3): resolution: {integrity: sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA==} @@ -8821,23 +8809,6 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /@tanstack/react-query@4.35.0(react@18.2.0): - resolution: {integrity: sha512-LLYDNnM9ewYHgjm2rzhk4KG/puN2rdoqCUD+N9+V7SwlsYwJk5ypX58rpkoZAhFyZ+KmFUJ7Iv2lIEOoUqydIg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@tanstack/query-core': 4.35.0 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - /@testing-library/cypress@9.0.0(cypress@12.17.3): resolution: {integrity: sha512-c1XiCGeHGGTWn0LAU12sFUfoX3qfId5gcSE2yHode+vsyHDWraxDPALjVnHd4/Fa3j4KBcc5k++Ccy6A9qnkMA==} engines: {node: '>=12', npm: '>=6'} @@ -8939,13 +8910,6 @@ packages: '@testing-library/dom': 9.3.1 dev: false - /@testing-library/user-event@14.4.3: - resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - dev: false - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1): resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} engines: {node: '>=12', npm: '>=6'} @@ -8983,7 +8947,7 @@ packages: resolution: {integrity: sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==} dev: true - /@typechain/ethers-v5@10.2.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@5.3.3): + /@typechain/ethers-v5@10.2.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.1)(typescript@5.3.3): resolution: {integrity: sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w==} peerDependencies: '@ethersproject/abi': ^5.0.0 @@ -8994,6 +8958,7 @@ packages: typescript: '>=4.3.0' dependencies: '@ethersproject/abi': 5.7.0 + '@ethersproject/bytes': 5.7.0 '@ethersproject/providers': 5.7.2 ethers: 5.7.2 lodash: 4.17.21 @@ -9002,8 +8967,12 @@ packages: typescript: 5.3.3 dev: true +<<<<<<< HEAD <<<<<<< HEAD /@typechain/ethers-v6@0.5.1(ethers@5.7.2)(typechain@8.3.2)(typescript@5.4.3): +======= + /@typechain/ethers-v6@0.5.1(ethers@5.7.2)(typechain@8.3.2)(typescript@5.4.5): +>>>>>>> d44273e6 (Add direct grants lite (#3341)) resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} peerDependencies: ethers: 6.x @@ -9012,6 +8981,7 @@ packages: dependencies: ethers: 5.7.2 lodash: 4.17.21 +<<<<<<< HEAD ts-essentials: 7.0.3(typescript@5.4.3) typechain: 8.3.2(typescript@5.4.3) typescript: 5.4.3 @@ -9021,6 +8991,14 @@ packages: ======= /@typechain/hardhat@9.1.0(ethers@5.7.2)(hardhat@2.20.1): >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= + ts-essentials: 7.0.3(typescript@5.4.5) + typechain: 8.3.2(typescript@5.4.5) + typescript: 5.4.5 + dev: false + + /@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(hardhat@2.22.3)(typechain@8.3.2): +>>>>>>> d44273e6 (Add direct grants lite (#3341)) resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} peerDependencies: '@typechain/ethers-v6': ^0.5.1 @@ -9028,9 +9006,11 @@ packages: hardhat: ^2.9.9 typechain: ^8.3.2 dependencies: + '@typechain/ethers-v6': 0.5.1(ethers@5.7.2)(typechain@8.3.2)(typescript@5.4.5) ethers: 5.7.2 fs-extra: 9.1.0 <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD hardhat: 2.22.4(ts-node@10.9.1)(typescript@5.4.5) typechain: 8.3.2(typescript@5.4.5) @@ -9041,7 +9021,11 @@ packages: ======= hardhat: 2.20.1(typescript@5.4.5) >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) - dev: false +======= + hardhat: 2.22.3(typescript@5.4.5) + typechain: 8.3.2(typescript@5.4.5) +>>>>>>> d44273e6 (Add direct grants lite (#3341)) + dev: false /@types/aria-query@4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} @@ -9331,12 +9315,17 @@ packages: /@types/node@18.17.14: resolution: {integrity: sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==} +<<<<<<< HEAD <<<<<<< HEAD /@types/node@20.5.1: resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} ======= /@types/node@20.4.7: resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} +======= + /@types/node@20.5.1: + resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} +>>>>>>> d44273e6 (Add direct grants lite (#3341)) dev: true >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) @@ -9356,7 +9345,7 @@ packages: /@types/papaparse@5.3.14: resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} dependencies: - '@types/node': 17.0.45 + '@types/node': 20.9.0 dev: true /@types/parse-json@4.0.0: @@ -9526,12 +9515,12 @@ packages: anymatch: 3.1.3 source-map: 0.6.1 - /@types/webpack@5.28.0: + /@types/webpack@5.28.0(esbuild@0.18.20): resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} dependencies: '@types/node': 20.9.0 tapable: 2.2.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - '@swc/core' - esbuild @@ -9574,6 +9563,34 @@ packages: '@types/node': 20.9.0 optional: true + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9601,7 +9618,7 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9613,11 +9630,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(typescript@5.3.3) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) debug: 4.3.4 + eslint: 8.50.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -9686,6 +9704,19 @@ packages: - supports-color dev: true + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9698,18 +9729,39 @@ packages: - supports-color - typescript - /@typescript-eslint/experimental-utils@5.62.0(typescript@5.3.3): + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) + eslint: 8.50.0 transitivePeerDependencies: - supports-color - typescript dev: false + /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9729,7 +9781,7 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/parser@5.62.0(typescript@5.3.3): + /@typescript-eslint/parser@5.62.0(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9743,6 +9795,7 @@ packages: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) debug: 4.3.4 + eslint: 8.50.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -9812,6 +9865,26 @@ packages: '@typescript-eslint/types': 6.7.2 '@typescript-eslint/visitor-keys': 6.7.2 + /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.48.0 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9831,7 +9904,7 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/type-utils@5.62.0(typescript@5.3.3): + /@typescript-eslint/type-utils@5.62.0(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9842,8 +9915,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) debug: 4.3.4 + eslint: 8.50.0 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -9903,6 +9977,27 @@ packages: resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9987,6 +10082,26 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.48.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -10006,18 +10121,19 @@ packages: - supports-color - typescript - /@typescript-eslint/utils@5.62.0(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.50.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -10154,6 +10270,7 @@ packages: - debug - utf-8-validate +<<<<<<< HEAD /@vitejs/plugin-react@4.0.4(vite@4.4.9): resolution: {integrity: sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -10169,6 +10286,8 @@ packages: - supports-color dev: false +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /@vitest/coverage-v8@0.34.3(vitest@0.34.3): resolution: {integrity: sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw==} peerDependencies: @@ -10320,7 +10439,7 @@ packages: typescript: 5.4.5 dev: false - /@wagmi/connectors@0.3.22(@wagmi/core@0.10.16)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3): + /@wagmi/connectors@0.3.22(@wagmi/core@0.10.16)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-1SxkKNDMhhSdVWTDaTBdwUBnT5EO89AmTe6Uqa+xtgb2LeqoRLfwkvhZk3z1/e6+f+zA3MWPtRmtIRe/LXYAIQ==} peerDependencies: '@wagmi/core': '>=0.9.x' @@ -10336,11 +10455,11 @@ packages: '@ledgerhq/connect-kit-loader': 1.1.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 - '@wagmi/core': 0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3) + '@wagmi/core': 0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) '@walletconnect/ethereum-provider': 2.8.4(@walletconnect/modal@2.6.1) '@walletconnect/legacy-provider': 2.0.0 '@walletconnect/modal': 2.6.1(react@18.2.0) - abitype: 0.3.0(typescript@5.3.3) + abitype: 0.3.0(typescript@5.3.3)(zod@3.22.4) ethers: 5.7.2 eventemitter3: 4.0.7 typescript: 5.3.3 @@ -10457,7 +10576,7 @@ packages: - zod dev: false - /@wagmi/core@0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3): + /@wagmi/core@0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-x4FxnXDSv9VpYRHT3+MMBs3cqeU02AFejHt7C+Ds1Pr1dyRF6CoTM0o1OmEk+ikKaFjX68+JhydZ9ZaIYevzRw==} peerDependencies: ethers: '>=5.5.1 <6' @@ -10467,8 +10586,8 @@ packages: optional: true dependencies: '@wagmi/chains': 0.2.22(typescript@5.3.3) - '@wagmi/connectors': 0.3.22(@wagmi/core@0.10.16)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3) - abitype: 0.3.0(typescript@5.3.3) + '@wagmi/connectors': 0.3.22(@wagmi/core@0.10.16)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) + abitype: 0.3.0(typescript@5.3.3)(zod@3.22.4) ethers: 5.7.2 eventemitter3: 4.0.7 typescript: 5.3.3 @@ -11763,19 +11882,6 @@ packages: zod: 3.22.4 dev: false - /abitype@0.3.0(typescript@5.3.3): - resolution: {integrity: sha512-0YokyAV4hKMcy97Pl+6QgZBlBdZJN2llslOs7kiFY+cu7kMlVXDBpxMExfv0krzBCQt2t7hNovpQ3y/zvEm18A==} - engines: {pnpm: '>=7'} - peerDependencies: - typescript: '>=4.9.4' - zod: '>=3.19.1' - peerDependenciesMeta: - zod: - optional: true - dependencies: - typescript: 5.3.3 - dev: false - /abitype@0.3.0(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-0YokyAV4hKMcy97Pl+6QgZBlBdZJN2llslOs7kiFY+cu7kMlVXDBpxMExfv0krzBCQt2t7hNovpQ3y/zvEm18A==} engines: {pnpm: '>=7'} @@ -11847,20 +11953,6 @@ packages: zod: 3.22.4 dev: false - /abitype@0.9.8(typescript@5.3.3): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - dependencies: - typescript: 5.3.3 - dev: true - /abitype@0.9.8(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} peerDependencies: @@ -11874,7 +11966,6 @@ packages: dependencies: typescript: 5.3.3 zod: 3.22.4 - dev: false /abitype@0.9.8(typescript@5.4.5)(zod@3.22.4): resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} @@ -11891,7 +11982,7 @@ packages: zod: 3.22.4 dev: false - /abitype@1.0.0(typescript@5.3.3): + /abitype@1.0.0(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} peerDependencies: typescript: '>=5.0.4' @@ -11903,6 +11994,7 @@ packages: optional: true dependencies: typescript: 5.3.3 + zod: 3.22.4 dev: false /abitype@1.0.0(typescript@5.4.5)(zod@3.22.4): @@ -12054,8 +12146,10 @@ packages: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} dev: false - /ajv-formats@2.1.1: + /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -12258,12 +12352,10 @@ packages: /array-back@3.1.0: resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} - dev: true /array-back@4.0.2: resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} engines: {node: '>=8'} - dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -12496,7 +12588,7 @@ packages: /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.5 transitivePeerDependencies: - debug dev: false @@ -12504,7 +12596,7 @@ packages: /axios@0.21.4(debug@4.3.4): resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.5(debug@4.3.4) transitivePeerDependencies: - debug dev: true @@ -12595,20 +12687,6 @@ packages: transitivePeerDependencies: - supports-color - /babel-loader@8.3.0(@babel/core@7.22.15): - resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.22.15 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - dev: false - /babel-loader@8.3.0(@babel/core@7.22.15)(webpack@5.88.2): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} @@ -12621,7 +12699,7 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} @@ -13708,7 +13786,6 @@ packages: find-replace: 3.0.0 lodash.camelcase: 4.3.0 typical: 4.0.0 - dev: true /command-line-usage@6.1.3: resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} @@ -13718,7 +13795,6 @@ packages: chalk: 2.4.2 table-layout: 1.0.2 typical: 5.2.0 - dev: true /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} @@ -13953,11 +14029,12 @@ packages: object-assign: 4.1.1 vary: 1.1.2 - /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.45)(typescript@5.2.2): + /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.2.2): resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' + cosmiconfig: '>=7' typescript: '>=3' dependencies: '@types/node': 17.0.45 @@ -13969,11 +14046,12 @@ packages: - '@swc/wasm' dev: false - /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.45)(typescript@5.3.3): + /cosmiconfig-typescript-loader@1.0.9(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.3.3): resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' + cosmiconfig: '>=7' typescript: '>=3' dependencies: '@types/node': 17.0.45 @@ -13985,11 +14063,12 @@ packages: - '@swc/wasm' dev: false - /cosmiconfig-typescript-loader@1.0.9(@types/node@18.17.14)(typescript@5.3.3): + /cosmiconfig-typescript-loader@1.0.9(@types/node@18.17.14)(cosmiconfig@7.1.0)(typescript@5.3.3): resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' + cosmiconfig: '>=7' typescript: '>=3' dependencies: '@types/node': 18.17.14 @@ -14082,31 +14161,16 @@ packages: typescript: 5.4.5 dev: true - /craco-esbuild@0.5.2(@craco/craco@7.1.0): - resolution: {integrity: sha512-5NCHz2gFT8MkVo36t22KOBL53JvDrw8R2PHmGxxfaTa8LFZNKmvOI6e8zCzPdY9LeKMdF3svBjMVyXG53pGO1Q==} - peerDependencies: - '@craco/craco': ^6.0.0 || ^7.0.0 || ^7.0.0-alpha - react-scripts: ^5.0.0 - dependencies: - '@craco/craco': 7.1.0(@types/node@17.0.45)(postcss@8.4.29)(typescript@5.2.2) - esbuild-jest: 0.5.0 - esbuild-loader: 2.21.0 - transitivePeerDependencies: - - esbuild - - supports-color - - webpack - dev: false - - /craco-esbuild@0.5.2(@craco/craco@7.1.0)(react-scripts@5.0.1): + /craco-esbuild@0.5.2(@craco/craco@7.1.0)(esbuild@0.18.20)(react-scripts@5.0.1)(webpack@5.88.2): resolution: {integrity: sha512-5NCHz2gFT8MkVo36t22KOBL53JvDrw8R2PHmGxxfaTa8LFZNKmvOI6e8zCzPdY9LeKMdF3svBjMVyXG53pGO1Q==} peerDependencies: '@craco/craco': ^6.0.0 || ^7.0.0 || ^7.0.0-alpha react-scripts: ^5.0.0 dependencies: '@craco/craco': 7.1.0(@types/node@18.17.14)(postcss@8.4.29)(react-scripts@5.0.1)(typescript@5.3.3) - esbuild-jest: 0.5.0 - esbuild-loader: 2.21.0 - react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) + esbuild-jest: 0.5.0(esbuild@0.18.20) + esbuild-loader: 2.21.0(webpack@5.88.2) + react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3) transitivePeerDependencies: - esbuild - supports-color @@ -14252,9 +14316,9 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.35) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) - /css-minimizer-webpack-plugin@3.4.1(webpack@5.88.2): + /css-minimizer-webpack-plugin@3.4.1(esbuild@0.18.20)(webpack@5.88.2): resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -14274,12 +14338,13 @@ packages: optional: true dependencies: cssnano: 5.1.15(postcss@8.4.35) + esbuild: 0.18.20 jest-worker: 27.5.1 postcss: 8.4.35 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /css-prefers-color-scheme@6.0.3(postcss@8.4.29): resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} @@ -14798,7 +14863,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -15538,7 +15602,7 @@ packages: engines: {node: '>=6'} dev: false - /esbuild-jest@0.5.0: + /esbuild-jest@0.5.0(esbuild@0.18.20): resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -15546,10 +15610,11 @@ packages: '@babel/core': 7.22.15 '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) babel-jest: 26.6.3(@babel/core@7.22.15) + esbuild: 0.18.20 transitivePeerDependencies: - supports-color - /esbuild-loader@2.21.0: + /esbuild-loader@2.21.0(webpack@5.88.2): resolution: {integrity: sha512-k7ijTkCT43YBSZ6+fBCW1Gin7s46RrJ0VQaM8qA7lq7W+OLsGgtLyFV8470FzYi/4TeDexniTBTPTwZUnXXR5g==} peerDependencies: webpack: ^4.40.0 || ^5.0.0 @@ -15559,6 +15624,7 @@ packages: json5: 2.2.3 loader-utils: 2.0.4 tapable: 2.2.1 + webpack: 5.88.2(esbuild@0.18.20) webpack-sources: 1.4.3 /esbuild@0.16.17: @@ -15729,6 +15795,41 @@ packages: eslint: 8.50.0 dev: true + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(jest@27.5.1)(typescript@5.2.2): + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15)(eslint@8.48.0) + '@rushstack/eslint-patch': 1.3.3 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.48.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.48.0)(jest@27.5.1)(typescript@5.2.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.33.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.48.0)(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: false + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(jest@27.5.1)(typescript@5.3.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} @@ -15763,7 +15864,7 @@ packages: - jest - supports-color - /eslint-config-react-app@7.0.1(jest@27.5.1)(typescript@5.3.3): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.50.0)(jest@27.5.1)(typescript@5.3.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -15774,19 +15875,20 @@ packages: optional: true dependencies: '@babel/core': 7.22.15 - '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15) + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.15)(eslint@8.50.0) '@rushstack/eslint-patch': 1.3.3 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(typescript@5.3.3) - '@typescript-eslint/parser': 5.62.0(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.3.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint-plugin-flowtype: 8.0.3 - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(jest@27.5.1)(typescript@5.3.3) - eslint-plugin-jsx-a11y: 6.7.1 - eslint-plugin-react: 7.33.2 - eslint-plugin-react-hooks: 4.6.0 - eslint-plugin-testing-library: 5.11.1(typescript@5.3.3) + eslint: 8.50.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.50.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.50.0)(jest@27.5.1)(typescript@5.3.3) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0) + eslint-plugin-react: 7.33.2(eslint@8.50.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.50.0)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -15815,7 +15917,7 @@ packages: transitivePeerDependencies: - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -15836,14 +15938,14 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.3.3) debug: 3.2.7 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -15864,12 +15966,13 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.48.0 + eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: false /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} @@ -15900,7 +16003,7 @@ packages: - supports-color dev: true - /eslint-plugin-flowtype@8.0.3: + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -15908,11 +16011,13 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + eslint: 8.48.0 lodash: 4.17.21 string-natural-compare: 3.0.1 - dev: false - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.50.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -15922,11 +16027,12 @@ packages: dependencies: '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) - eslint: 8.48.0 + eslint: 8.50.0 lodash: 4.17.21 string-natural-compare: 3.0.1 + dev: false - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.48.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -15936,15 +16042,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -15958,9 +16065,8 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.48.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.50.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -15970,16 +16076,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.48.0 + eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -15993,6 +16099,7 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: false /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.2)(eslint@8.50.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} @@ -16029,6 +16136,28 @@ packages: - supports-color dev: true + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.48.0)(jest@27.5.1)(typescript@5.2.2): + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + jest: 27.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.48.0)(jest@27.5.1)(typescript@5.3.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -16050,7 +16179,7 @@ packages: - supports-color - typescript - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(jest@27.5.1)(typescript@5.3.3): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.50.0)(jest@27.5.1)(typescript@5.3.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -16063,15 +16192,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(typescript@5.3.3) - '@typescript-eslint/experimental-utils': 5.62.0(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.3.3) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) + eslint: 8.50.0 jest: 27.5.1 transitivePeerDependencies: - supports-color - typescript dev: false - /eslint-plugin-jsx-a11y@6.7.1: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -16086,6 +16216,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 + eslint: 8.48.0 has: 1.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -16093,9 +16224,8 @@ packages: object.entries: 1.1.7 object.fromentries: 2.0.7 semver: 6.3.1 - dev: false - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.50.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -16110,7 +16240,7 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.48.0 + eslint: 8.50.0 has: 1.0.3 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -16118,6 +16248,7 @@ packages: object.entries: 1.1.7 object.fromentries: 2.0.7 semver: 6.3.1 + dev: false /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.48.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} @@ -16157,13 +16288,6 @@ packages: synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -16181,30 +16305,6 @@ packages: eslint: 8.50.0 dev: false - /eslint-plugin-react@7.33.2: - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.1 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.14 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.1 - string.prototype.matchall: 4.0.9 - dev: false - /eslint-plugin-react@7.33.2(eslint@8.48.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} @@ -16254,6 +16354,19 @@ packages: string.prototype.matchall: 4.0.9 dev: false + /eslint-plugin-testing-library@5.11.1(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + eslint: 8.48.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /eslint-plugin-testing-library@5.11.1(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} @@ -16266,13 +16379,14 @@ packages: - supports-color - typescript - /eslint-plugin-testing-library@5.11.1(typescript@5.3.3): + /eslint-plugin-testing-library@5.11.1(eslint@8.50.0)(typescript@5.3.3): resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.3.3) + eslint: 8.50.0 transitivePeerDependencies: - supports-color - typescript @@ -16344,9 +16458,9 @@ packages: micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) - /eslint-webpack-plugin@3.2.0(webpack@5.88.2): + /eslint-webpack-plugin@3.2.0(eslint@8.50.0)(webpack@5.88.2): resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -16354,11 +16468,12 @@ packages: webpack: ^5.0.0 dependencies: '@types/eslint': 8.44.2 + eslint: 8.50.0 jest-worker: 28.1.3 micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) dev: false /eslint@8.48.0: @@ -16981,7 +17096,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /file-selector@0.6.0: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} @@ -17110,7 +17225,6 @@ packages: engines: {node: '>=4.0.0'} dependencies: array-back: 3.1.0 - dev: true /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -17183,28 +17297,6 @@ packages: tslib: 2.6.2 dev: false - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4 - dev: true - /follow-redirects@1.15.5: resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} @@ -17252,6 +17344,38 @@ packages: /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.2.2)(webpack@5.88.2): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 8.48.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.4 + tapable: 1.1.3 + typescript: 5.2.2 + webpack: 5.88.2(esbuild@0.18.20) + dev: false + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.88.2): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} @@ -17281,9 +17405,9 @@ packages: semver: 7.5.4 tapable: 1.1.3 typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) - /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.3.3)(webpack@5.88.2): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.50.0)(typescript@5.3.3)(webpack@5.88.2): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -17303,6 +17427,7 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.3.1 + eslint: 8.50.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -17311,7 +17436,7 @@ packages: semver: 7.5.4 tapable: 1.1.3 typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) dev: false /form-data@2.3.3: @@ -17389,23 +17514,6 @@ packages: '@emotion/is-prop-valid': 0.8.8 dev: false - /framer-motion@10.16.4(react@18.2.0): - resolution: {integrity: sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - react: 18.2.0 - tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - dev: false - /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: @@ -17688,7 +17796,7 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/contracts': 5.7.0 '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2 '@ethersproject/strings': 5.7.0 '@ethersproject/units': 5.7.0 '@ethersproject/wallet': 5.7.0 @@ -17757,7 +17865,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} @@ -17903,6 +18010,7 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD ======= @@ -17918,6 +18026,8 @@ packages: dev: false >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) +======= +>>>>>>> d44273e6 (Add direct grants lite (#3341)) /graphql-request@6.1.0(graphql@16.8.1): resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} peerDependencies: @@ -18036,6 +18146,7 @@ packages: - utf-8-validate dev: true +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD /hardhat@2.22.4(ts-node@10.9.1)(typescript@5.4.5): @@ -18047,6 +18158,10 @@ packages: >>>>>>> 0463be64 (Manager changes for Passport Lite x Cluster Match MVP (#3336)) resolution: {integrity: sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==} >>>>>>> 6f02eb49 (log donation errors to sentry (#3388)) +======= + /hardhat@2.22.3(typescript@5.4.5): + resolution: {integrity: sha512-k8JV2ECWNchD6ahkg2BR5wKVxY0OiKot7fuxiIpRK0frRqyOljcR2vKwgWSLw6YIeDcNNA4xybj7Og7NSxr2hA==} +>>>>>>> d44273e6 (Add direct grants lite (#3341)) hasBin: true peerDependencies: ts-node: '*' @@ -18059,7 +18174,11 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 +<<<<<<< HEAD '@nomicfoundation/edr': 0.3.8 +======= + '@nomicfoundation/edr': 0.3.7 +>>>>>>> d44273e6 (Add direct grants lite (#3341)) '@nomicfoundation/ethereumjs-common': 4.0.4 '@nomicfoundation/ethereumjs-tx': 5.0.4 '@nomicfoundation/ethereumjs-util': 9.0.4 @@ -18330,7 +18449,7 @@ packages: lodash: 4.17.21 tapable: 2.2.1 - /html-webpack-plugin@4.5.2: + /html-webpack-plugin@4.5.2(webpack@5.88.2): resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==} engines: {node: '>=6.9'} peerDependencies: @@ -18338,25 +18457,14 @@ packages: dependencies: '@types/html-minifier-terser': 5.1.2 '@types/tapable': 1.0.12 - '@types/webpack': 4.41.38 - html-minifier-terser: 5.1.1 - loader-utils: 1.4.2 - lodash: 4.17.21 - pretty-error: 2.1.2 - tapable: 1.1.3 - util.promisify: 1.0.0 - - /html-webpack-plugin@5.5.3: - resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} - engines: {node: '>=10.13.0'} - peerDependencies: - webpack: ^5.20.0 - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 + '@types/webpack': 4.41.38 + html-minifier-terser: 5.1.1 + loader-utils: 1.4.2 lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 + pretty-error: 2.1.2 + tapable: 1.1.3 + util.promisify: 1.0.0 + webpack: 5.88.2(esbuild@0.18.20) /html-webpack-plugin@5.5.3(webpack@5.88.2): resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} @@ -18369,7 +18477,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} @@ -20110,7 +20218,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 17.0.45 + '@types/node': 20.9.0 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -21493,7 +21601,7 @@ packages: dependencies: '@ethersproject/contracts': 5.7.0 '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2 '@ethersproject/wallet': 5.7.0 '@spruceid/siwe-parser': 1.1.3 '@stablelib/random': 1.0.2 @@ -22000,7 +22108,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} @@ -23649,7 +23757,7 @@ packages: klona: 2.0.6 postcss: 8.4.29 semver: 7.5.4 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /postcss-logical@5.0.4(postcss@8.4.29): resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} @@ -24122,12 +24230,18 @@ packages: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - dev: true /prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: false /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} @@ -24531,6 +24645,48 @@ packages: react: 18.2.0 dev: false + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.2.2)(webpack@5.88.2): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + address: 1.2.2 + browserslist: 4.21.10 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.2.2)(webpack@5.88.2) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 5.2.2 + webpack: 5.88.2(esbuild@0.18.20) + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.88.2): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} @@ -24566,13 +24722,13 @@ packages: strip-ansi: 6.0.1 text-table: 0.2.0 typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - eslint - supports-color - vue-template-compiler - /react-dev-utils@12.0.1(typescript@5.3.3)(webpack@5.88.2): + /react-dev-utils@12.0.1(eslint@8.50.0)(typescript@5.3.3)(webpack@5.88.2): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -24591,7 +24747,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.3.3)(webpack@5.88.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.50.0)(typescript@5.3.3)(webpack@5.88.2) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -24607,7 +24763,7 @@ packages: strip-ansi: 6.0.1 text-table: 0.2.0 typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) transitivePeerDependencies: - eslint - supports-color @@ -24840,29 +24996,114 @@ packages: react-router: 6.15.0(react@18.2.0) dev: false - /react-router-dom@6.15.0(react@18.2.0): - resolution: {integrity: sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==} + /react-router@6.15.0(react@18.2.0): + resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' - react-dom: '>=16.8' dependencies: '@remix-run/router': 1.8.0 react: 18.2.0 - react-router: 6.15.0(react@18.2.0) dev: false - /react-router@6.15.0(react@18.2.0): - resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==} + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} + hasBin: true peerDependencies: - react: '>=16.8' + eslint: '*' + react: '>= 16' + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@remix-run/router': 1.8.0 + '@babel/core': 7.22.15 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.11.0)(webpack-dev-server@4.15.1)(webpack@5.88.2) + '@svgr/webpack': 5.5.0 + babel-jest: 27.5.1(@babel/core@7.22.15) + babel-loader: 8.3.0(@babel/core@7.22.15)(webpack@5.88.2) + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.22.15) + babel-preset-react-app: 10.0.1 + bfj: 7.1.0 + browserslist: 4.21.10 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + css-loader: 6.8.1(webpack@5.88.2) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.18.20)(webpack@5.88.2) + dotenv: 10.0.0 + dotenv-expand: 5.1.0 + eslint: 8.48.0 + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(jest@27.5.1)(typescript@5.2.2) + eslint-webpack-plugin: 3.2.0(eslint@8.48.0)(webpack@5.88.2) + file-loader: 6.2.0(webpack@5.88.2) + fs-extra: 10.1.0 + html-webpack-plugin: 5.5.3(webpack@5.88.2) + identity-obj-proxy: 3.0.0 + jest: 27.5.1 + jest-resolve: 27.5.1 + jest-watch-typeahead: 1.1.0(jest@27.5.1) + mini-css-extract-plugin: 2.7.6(webpack@5.88.2) + postcss: 8.4.29 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.29) + postcss-loader: 6.2.1(postcss@8.4.29)(webpack@5.88.2) + postcss-normalize: 10.0.1(browserslist@4.21.10)(postcss@8.4.29) + postcss-preset-env: 7.8.3(postcss@8.4.29) + prompts: 2.4.2 react: 18.2.0 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.2.2)(webpack@5.88.2) + react-refresh: 0.11.0 + resolve: 1.22.4 + resolve-url-loader: 4.0.0 + sass-loader: 12.6.0(webpack@5.88.2) + semver: 7.5.4 + source-map-loader: 3.0.2(webpack@5.88.2) + style-loader: 3.3.3(webpack@5.88.2) + tailwindcss: 3.3.3 + terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) + typescript: 5.2.2 + webpack: 5.88.2(esbuild@0.18.20) + webpack-dev-server: 4.15.1(webpack@5.88.2) + webpack-manifest-plugin: 4.1.1(webpack@5.88.2) + workbox-webpack-plugin: 6.6.0(webpack@5.88.2) + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - debug + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-notifier + - node-sass + - rework + - rework-visit + - sass + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve dev: false - /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3): + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.48.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -24886,7 +25127,7 @@ packages: camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 css-loader: 6.8.1(webpack@5.88.2) - css-minimizer-webpack-plugin: 3.4.1(webpack@5.88.2) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.18.20)(webpack@5.88.2) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 8.48.0 @@ -24917,9 +25158,9 @@ packages: source-map-loader: 3.0.2(webpack@5.88.2) style-loader: 3.3.3(webpack@5.88.2) tailwindcss: 3.3.3 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-dev-server: 4.15.1(webpack@5.88.2) webpack-manifest-plugin: 4.1.1(webpack@5.88.2) workbox-webpack-plugin: 6.6.0(webpack@5.88.2) @@ -24958,7 +25199,7 @@ packages: - webpack-hot-middleware - webpack-plugin-serve - /react-scripts@5.0.1(react@18.2.0)(typescript@5.3.3): + /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(esbuild@0.18.20)(eslint@8.50.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -24982,12 +25223,12 @@ packages: camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 css-loader: 6.8.1(webpack@5.88.2) - css-minimizer-webpack-plugin: 3.4.1(webpack@5.88.2) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.18.20)(webpack@5.88.2) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 8.50.0 - eslint-config-react-app: 7.0.1(jest@27.5.1)(typescript@5.3.3) - eslint-webpack-plugin: 3.2.0(webpack@5.88.2) + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.50.0)(jest@27.5.1)(typescript@5.3.3) + eslint-webpack-plugin: 3.2.0(eslint@8.50.0)(webpack@5.88.2) file-loader: 6.2.0(webpack@5.88.2) fs-extra: 10.1.0 html-webpack-plugin: 5.5.3(webpack@5.88.2) @@ -25004,7 +25245,7 @@ packages: prompts: 2.4.2 react: 18.2.0 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(typescript@5.3.3)(webpack@5.88.2) + react-dev-utils: 12.0.1(eslint@8.50.0)(typescript@5.3.3)(webpack@5.88.2) react-refresh: 0.11.0 resolve: 1.22.4 resolve-url-loader: 4.0.0 @@ -25013,9 +25254,9 @@ packages: source-map-loader: 3.0.2(webpack@5.88.2) style-loader: 3.3.3(webpack@5.88.2) tailwindcss: 3.3.3 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) typescript: 5.3.3 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-dev-server: 4.15.1(webpack@5.88.2) webpack-manifest-plugin: 4.1.1(webpack@5.88.2) workbox-webpack-plugin: 6.6.0(webpack@5.88.2) @@ -25173,7 +25414,6 @@ packages: /reduce-flatten@2.0.0: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} - dev: true /redux-thunk@2.4.2(redux@4.2.1): resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} @@ -25516,6 +25756,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true /rpc-websockets@7.6.0: resolution: {integrity: sha512-Jgcs8q6t8Go98dEulww1x7RysgTkzpCMelVxZW4hvuyFtOGpeUz9prpr2KjUa/usqxgFCd9Tu3+yhHEP9GVmiQ==} @@ -25664,7 +25905,7 @@ packages: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -25710,7 +25951,7 @@ packages: dependencies: '@types/json-schema': 7.0.12 ajv: 8.12.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) /scrypt-js@3.0.1: @@ -26100,7 +26341,7 @@ packages: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.0.2 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} @@ -26213,13 +26454,14 @@ packages: transitivePeerDependencies: - supports-color - /speed-measure-webpack-plugin@1.4.2: + /speed-measure-webpack-plugin@1.4.2(webpack@5.88.2): resolution: {integrity: sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==} engines: {node: '>=6.0.0'} peerDependencies: webpack: ^1 || ^2 || ^3 || ^4 || ^5 dependencies: chalk: 4.1.2 + webpack: 5.88.2(esbuild@0.18.20) /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -26372,7 +26614,6 @@ packages: /string-format@2.0.0: resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} - dev: true /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} @@ -26558,7 +26799,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /style-to-js@1.1.3: resolution: {integrity: sha512-zKI5gN/zb7LS/Vm0eUwjmjrXWw8IMtyA8aPBJZdYiQTXj4+wQ3IucOLIOnF7zCHxvW8UhIGh/uZh/t9zEHXNTQ==} @@ -26722,7 +26963,6 @@ packages: deep-extend: 0.6.0 typical: 5.2.0 wordwrapjs: 4.0.1 - dev: true /tailwind-merge@1.14.0: resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} @@ -26747,17 +26987,6 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tailwind-merge: 1.14.0 - dev: true - - /tailwind-styled-components@2.2.0(react@18.2.0): - resolution: {integrity: sha512-Ogemwk0p69aU8WE/ooJZHjqstdJgT5R6HGU6TFz2uSnveSEtvW+C6aWOjGCvCr5H/bREv0IbbQ4yODknRrLBRQ==} - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - dependencies: - react: 18.2.0 - tailwind-merge: 1.14.0 - dev: false /tailwindcss@3.3.3: resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} @@ -26829,7 +27058,7 @@ packages: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - /terser-webpack-plugin@5.3.9(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(esbuild@0.18.20)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -26846,11 +27075,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.19 + esbuild: 0.18.20 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.19.4 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) /terser@4.8.1: resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} @@ -27126,7 +27356,6 @@ packages: command-line-args: 5.2.1 command-line-usage: 6.1.3 string-format: 2.0.0 - dev: true /ts-custom-error@3.3.1: resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} @@ -27145,6 +27374,14 @@ packages: typescript: 5.3.3 dev: true + /ts-essentials@7.0.3(typescript@5.4.5): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.4.5 + dev: false + /ts-essentials@9.4.1(typescript@5.3.2): resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} peerDependencies: @@ -27163,7 +27400,7 @@ packages: resolution: {integrity: sha512-cA5MPLWGWYXvnlJb4TamUUx858HVHBsxxdy8l7jxODOLDyGYnQOllob2A2jyDghGa5iJHs2gzFNHvwGJ0ZfR8g==} dev: false - /ts-jest@27.1.5(@babel/core@7.22.15)(@types/jest@27.5.2)(jest@27.5.1)(typescript@5.3.3): + /ts-jest@27.1.5(@babel/core@7.22.15)(@types/jest@27.5.2)(esbuild@0.18.20)(jest@27.5.1)(typescript@5.3.3): resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -27187,6 +27424,7 @@ packages: '@babel/core': 7.22.15 '@types/jest': 27.5.2 bs-logger: 0.2.6 + esbuild: 0.18.20 fast-json-stable-stringify: 2.1.0 jest: 27.5.1 jest-util: 27.5.1 @@ -27372,6 +27610,16 @@ packages: resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} dev: false + /tsutils@3.21.0(typescript@5.2.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.2.2 + dev: false + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -27548,6 +27796,27 @@ packages: - supports-color dev: true + /typechain@8.3.2(typescript@5.4.5): + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + dependencies: + '@types/prettier': 2.7.3 + debug: 4.3.4 + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: false + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -27610,12 +27879,10 @@ packages: /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} - dev: true /typical@5.2.0: resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} engines: {node: '>=8'} - dev: true /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} @@ -28079,29 +28346,6 @@ packages: - zod dev: false - /viem@1.21.4(typescript@5.3.3): - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.3.3) - isows: 1.0.3(ws@8.13.0) - typescript: 5.3.3 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - dev: true - /viem@1.21.4(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} peerDependencies: @@ -28123,7 +28367,6 @@ packages: - bufferutil - utf-8-validate - zod - dev: false <<<<<<< HEAD <<<<<<< HEAD @@ -28169,7 +28412,7 @@ packages: - zod dev: false - /viem@2.7.1(typescript@5.3.3): + /viem@2.7.1(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-izAX2KedTFnI2l0ZshtnlK2ZuDvSlKeuaanWyNwC4ffDgrCGtwX1bvVXO3Krh53lZgqvjd8UGpjGaBl3WqJ4yQ==} peerDependencies: typescript: '>=5.0.4' @@ -28182,7 +28425,7 @@ packages: '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.3.3) + abitype: 1.0.0(typescript@5.3.3)(zod@3.22.4) isows: 1.0.3(ws@8.13.0) typescript: 5.3.3 ws: 8.13.0 @@ -28270,6 +28513,7 @@ packages: rollup: 3.29.0 optionalDependencies: fsevents: 2.3.3 + dev: true /vite@4.4.9(@types/node@18.17.14): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} @@ -28563,7 +28807,7 @@ packages: dependencies: xml-name-validator: 3.0.0 - /wagmi@0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /wagmi@0.12.18(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4): resolution: {integrity: sha512-Ci0cy1R6NXmwVjRF4ukjBdOor7ZH3SDBSXPZetlkm6mey9RJq5yEHEZYdcPgtLWANqRRzFD5TxXtrmZJkhhs3w==} peerDependencies: ethers: '>=5.5.1 <6' @@ -28576,8 +28820,8 @@ packages: '@tanstack/query-sync-storage-persister': 4.35.0 '@tanstack/react-query': 4.35.0(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query-persist-client': 4.35.0(@tanstack/react-query@4.35.0) - '@wagmi/core': 0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3) - abitype: 0.3.0(typescript@5.3.3) + '@wagmi/core': 0.10.16(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.3.3)(zod@3.22.4) + abitype: 0.3.0(typescript@5.3.3)(zod@3.22.4) ethers: 5.7.2 react: 18.2.0 typescript: 5.3.3 @@ -28629,7 +28873,7 @@ packages: - zod dev: false - /wagmi@0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4): + /wagmi@0.12.19(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4): resolution: {integrity: sha512-S/el9BDb/HNeQWh1v8TvntMPX/CgKLDAoJqDb8i7jifLfWPqFL7gor3vnI1Vs6ZlB8uh7m+K1Qyg+mKhbITuDQ==} peerDependencies: ethers: '>=5.5.1 <6' @@ -28640,7 +28884,7 @@ packages: optional: true dependencies: '@tanstack/query-sync-storage-persister': 4.35.0 - '@tanstack/react-query': 4.35.0(react@18.2.0) + '@tanstack/react-query': 4.35.0(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query-persist-client': 4.35.0(@tanstack/react-query@4.35.0) '@wagmi/core': 0.10.17(@types/react@18.2.21)(ethers@5.7.2)(react@18.2.0)(typescript@5.4.5)(zod@3.22.4) abitype: 0.3.0(typescript@5.4.5)(zod@3.22.4) @@ -28788,18 +29032,6 @@ packages: - bufferutil - utf-8-validate - /webpack-dev-middleware@5.3.3: - resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - /webpack-dev-middleware@5.3.3(webpack@5.88.2): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} @@ -28811,9 +29043,9 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) - /webpack-dev-server@4.15.1(debug@4.3.4): + /webpack-dev-server@4.15.1(debug@4.3.4)(webpack@5.88.2): resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} engines: {node: '>= 12.13.0'} hasBin: true @@ -28854,7 +29086,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.3 + webpack: 5.88.2(esbuild@0.18.20) + webpack-dev-middleware: 5.3.3(webpack@5.88.2) ws: 8.14.0 transitivePeerDependencies: - bufferutil @@ -28903,7 +29136,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-dev-middleware: 5.3.3(webpack@5.88.2) ws: 8.14.0 transitivePeerDependencies: @@ -28919,7 +29152,7 @@ packages: webpack: ^4.44.2 || ^5.47.0 dependencies: tapable: 2.2.1 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-sources: 2.3.1 /webpack-merge@5.9.0: @@ -28946,7 +29179,7 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - /webpack@5.88.2: + /webpack@5.88.2(esbuild@0.18.20): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -28977,7 +29210,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.18.20)(webpack@5.88.2) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -29137,7 +29370,6 @@ packages: dependencies: reduce-flatten: 2.0.0 typical: 5.2.0 - dev: true /workbox-background-sync@6.6.0: resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} @@ -29273,7 +29505,7 @@ packages: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.88.2 + webpack: 5.88.2(esbuild@0.18.20) webpack-sources: 1.4.3 workbox-build: 6.6.0 transitivePeerDependencies: @@ -29347,22 +29579,6 @@ packages: utf-8-validate: optional: true - /ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - dev: false - /ws@7.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==} engines: {node: '>=8.3.0'}