From 8dbb3f5a19042466202f38afbba831f8c0ec8bf5 Mon Sep 17 00:00:00 2001 From: bonustrack Date: Wed, 25 Jan 2023 02:10:01 +0700 Subject: [PATCH 01/44] Initial commit --- apps/subgraph-api/.gitignore | 14 + apps/subgraph-api/abis/Space.json | 926 ++++++++++ apps/subgraph-api/package.json | 16 + apps/subgraph-api/schema.graphql | 63 + apps/subgraph-api/src/mapping.ts | 109 ++ apps/subgraph-api/subgraph.yaml | 27 + apps/subgraph-api/tsconfig.json | 4 + apps/subgraph-api/yarn.lock | 2860 +++++++++++++++++++++++++++++ 8 files changed, 4019 insertions(+) create mode 100644 apps/subgraph-api/.gitignore create mode 100644 apps/subgraph-api/abis/Space.json create mode 100644 apps/subgraph-api/package.json create mode 100644 apps/subgraph-api/schema.graphql create mode 100644 apps/subgraph-api/src/mapping.ts create mode 100644 apps/subgraph-api/subgraph.yaml create mode 100644 apps/subgraph-api/tsconfig.json create mode 100644 apps/subgraph-api/yarn.lock diff --git a/apps/subgraph-api/.gitignore b/apps/subgraph-api/.gitignore new file mode 100644 index 000000000..25d1e0b60 --- /dev/null +++ b/apps/subgraph-api/.gitignore @@ -0,0 +1,14 @@ +.DS_Store +node_modules +dist +build +.env +coverage + +# Remove some common IDE working directories +.idea +.vscode +*.log + +# TheGraph +generated diff --git a/apps/subgraph-api/abis/Space.json b/apps/subgraph-api/abis/Space.json new file mode 100644 index 000000000..5493b1a0d --- /dev/null +++ b/apps/subgraph-api/abis/Space.json @@ -0,0 +1,926 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint32", "name": "_votingDelay", "type": "uint32" }, + { + "internalType": "uint32", + "name": "_minVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_maxVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "_proposalThreshold", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, + { + "components": [ + { "internalType": "address", "name": "addy", "type": "address" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "internalType": "struct Strategy[]", + "name": "_votingStrategies", + "type": "tuple[]" + }, + { + "internalType": "address[]", + "name": "_authenticators", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_executionStrategies", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { "internalType": "address", "name": "auth", "type": "address" } + ], + "name": "AuthenticatorNotWhitelisted", + "type": "error" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "a", "type": "uint256" }, + { "internalType": "uint256", "name": "b", "type": "uint256" } + ], + "name": "DuplicateFound", + "type": "error" + }, + { "inputs": [], "name": "EmptyArray", "type": "error" }, + { "inputs": [], "name": "ExecutionHashMismatch", "type": "error" }, + { + "inputs": [ + { "internalType": "address", "name": "strategy", "type": "address" } + ], + "name": "ExecutionStrategyNotWhitelisted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + } + ], + "name": "InvalidDuration", + "type": "error" + }, + { "inputs": [], "name": "InvalidProposal", "type": "error" }, + { "inputs": [], "name": "InvalidVotingStrategyAddress", "type": "error" }, + { + "inputs": [ + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "InvalidVotingStrategyIndex", + "type": "error" + }, + { "inputs": [], "name": "MinVotingDurationHasNotElapsed", "type": "error" }, + { + "inputs": [ + { "internalType": "address", "name": "guard_", "type": "address" } + ], + "name": "NotIERC165Compliant", + "type": "error" + }, + { "inputs": [], "name": "ProposalAlreadyExecuted", "type": "error" }, + { + "inputs": [ + { "internalType": "uint256", "name": "votingPower", "type": "uint256" } + ], + "name": "ProposalThresholdNotReached", + "type": "error" + }, + { "inputs": [], "name": "QuorumNotReachedYet", "type": "error" }, + { "inputs": [], "name": "UserHasAlreadyVoted", "type": "error" }, + { "inputs": [], "name": "UserHasNoVotingPower", "type": "error" }, + { "inputs": [], "name": "VotingPeriodHasEnded", "type": "error" }, + { "inputs": [], "name": "VotingPeriodHasNotStarted", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" + } + ], + "name": "AuthenticatorsAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" + } + ], + "name": "AuthenticatorsRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousAvatar", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAvatar", + "type": "address" + } + ], + "name": "AvatarSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "guard", + "type": "address" + } + ], + "name": "ChangedGuard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "executionStrategies", + "type": "address[]" + } + ], + "name": "ExecutionStrategiesAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "executionStrategies", + "type": "address[]" + } + ], + "name": "ExecutionStrategiesRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "previous", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "newMaxVotingDuration", + "type": "uint32" + } + ], + "name": "MaxVotingDurationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newMetadataUri", + "type": "string" + } + ], + "name": "MetadataUriUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "previous", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "newMinVotingDuration", + "type": "uint32" + } + ], + "name": "MinVotingDurationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "nextProposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposerAddress", + "type": "address" + }, + { + "components": [ + { "internalType": "uint256", "name": "quorum", "type": "uint256" }, + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "executionStrategy", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + } + ], + "indexed": false, + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + }, + { + "indexed": false, + "internalType": "string", + "name": "metadataUri", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "executionParams", + "type": "bytes" + } + ], + "name": "ProposalCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "enum ProposalOutcome", + "name": "outcome", + "type": "uint8" + } + ], + "name": "ProposalFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "previous", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newProposalThreshold", + "type": "uint256" + } + ], + "name": "ProposalThresholdUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "previous", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newQuorum", + "type": "uint256" + } + ], + "name": "QuorumUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousTarget", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "voterAddress", + "type": "address" + }, + { + "components": [ + { "internalType": "enum Choice", "name": "choice", "type": "uint8" }, + { + "internalType": "uint256", + "name": "votingPower", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct Vote", + "name": "vote", + "type": "tuple" + } + ], + "name": "VoteCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "previous", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newVotingDelay", + "type": "uint256" + } + ], + "name": "VotingDelayUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "addy", "type": "address" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "indexed": false, + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "name": "VotingStrategiesAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8[]", + "name": "indices", + "type": "uint8[]" + } + ], + "name": "VotingStrategiesRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_authenticators", + "type": "address[]" + } + ], + "name": "addAuthenticators", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_executionStrategies", + "type": "address[]" + } + ], + "name": "addExecutionStrategies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "addy", "type": "address" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "internalType": "struct Strategy[]", + "name": "_votingStrategies", + "type": "tuple[]" + } + ], + "name": "addVotingStrategies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "avatar", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, + { "internalType": "bytes", "name": "executionParams", "type": "bytes" } + ], + "name": "cancelProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, + { "internalType": "bytes", "name": "executionParams", "type": "bytes" } + ], + "name": "finalizeProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getGuard", + "outputs": [ + { "internalType": "address", "name": "_guard", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "proposalId", "type": "uint256" } + ], + "name": "getProposal", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "quorum", "type": "uint256" }, + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "executionStrategy", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + } + ], + "internalType": "struct Proposal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "proposalId", "type": "uint256" } + ], + "name": "getProposalStatus", + "outputs": [ + { "internalType": "enum ProposalStatus", "name": "", "type": "uint8" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "guard", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxVotingDuration", + "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minVotingDuration", + "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextProposalId", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proposalThreshold", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "proposerAddress", + "type": "address" + }, + { "internalType": "string", "name": "metadataUri", "type": "string" }, + { + "components": [ + { "internalType": "address", "name": "addy", "type": "address" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "internalType": "struct Strategy", + "name": "executionStrategy", + "type": "tuple" + }, + { + "components": [ + { "internalType": "uint8", "name": "index", "type": "uint8" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "internalType": "struct IndexedStrategy[]", + "name": "userVotingStrategies", + "type": "tuple[]" + } + ], + "name": "propose", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "quorum", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_authenticators", + "type": "address[]" + } + ], + "name": "removeAuthenticators", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_executionStrategies", + "type": "address[]" + } + ], + "name": "removeExecutionStrategies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8[]", + "name": "indicesToRemove", + "type": "uint8[]" + } + ], + "name": "removeVotingStrategies", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_avatar", "type": "address" } + ], + "name": "setAvatar", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_guard", "type": "address" } + ], + "name": "setGuard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_maxVotingDuration", + "type": "uint32" + } + ], + "name": "setMaxVotingDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_metadataUri", "type": "string" } + ], + "name": "setMetadataUri", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_minVotingDuration", + "type": "uint32" + } + ], + "name": "setMinVotingDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_threshold", "type": "uint256" } + ], + "name": "setProposalThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_quorum", "type": "uint256" } + ], + "name": "setQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_target", "type": "address" } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes", "name": "initializeParams", "type": "bytes" } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_votingDelay", "type": "uint32" } + ], + "name": "setVotingDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "target", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "voterAddress", "type": "address" }, + { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, + { "internalType": "enum Choice", "name": "choice", "type": "uint8" }, + { + "components": [ + { "internalType": "uint8", "name": "index", "type": "uint8" }, + { "internalType": "bytes", "name": "params", "type": "bytes" } + ], + "internalType": "struct IndexedStrategy[]", + "name": "userVotingStrategies", + "type": "tuple[]" + } + ], + "name": "vote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "votingDelay", + "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json new file mode 100644 index 000000000..b3977fb2f --- /dev/null +++ b/apps/subgraph-api/package.json @@ -0,0 +1,16 @@ +{ + "name": "sx-subgraph", + "scripts": { + "codegen": "graph codegen", + "build": "graph build", + "deploy": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", + "create-local": "graph create --node http://localhost:8020/ snapshot-labs/sx-subgraph", + "remove-local": "graph remove --node http://localhost:8020/ snapshot-labs/sx-subgraph", + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", + "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-goerli" + }, + "dependencies": { + "@graphprotocol/graph-cli": "0.26.0", + "@graphprotocol/graph-ts": "0.24.1" + } +} diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql new file mode 100644 index 000000000..0ab570624 --- /dev/null +++ b/apps/subgraph-api/schema.graphql @@ -0,0 +1,63 @@ +type Space @entity { + id: ID! + name: String + about: String + controller: Bytes + voting_delay: Int + min_voting_period: Int + max_voting_period: Int + proposal_threshold: BigDecimal + quorum: BigDecimal + strategies: [Bytes!] + strategies_params: [String!] + authenticators: [Bytes!] + executors: [Bytes!] + proposal_count: Int + vote_count: Int + created: Int + tx: Bytes +} + +type Proposal @entity { + id: ID! + proposal_id: Int + space: Space + author: User + execution_hash: String + metadata_uri: String + title: String + body: String + discussion: String + execution: Bytes + start: Int + min_end: Int + max_end: Int + snapshot: Int + strategies: [Bytes!] + strategies_params: [String!] + scores_1: BigDecimal + scores_2: BigDecimal + scores_3: BigDecimal + scores_total: BigDecimal + quorum: BigDecimal + created: Int + tx: Bytes + vote_count: Int +} + +type Vote @entity { + id: ID! + voter: User + space: Space + proposal: Int + choice: Int + vp: BigDecimal + created: Int +} + +type User @entity { + id: ID! + proposal_count: Int + vote_count: Int + created: Int +} diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts new file mode 100644 index 000000000..1bc158b04 --- /dev/null +++ b/apps/subgraph-api/src/mapping.ts @@ -0,0 +1,109 @@ +import { Address, BigDecimal } from '@graphprotocol/graph-ts' +import { ProposalCreated, VoteCreated } from '../generated/Space/Space' +import { Space, Proposal, Vote, User} from '../generated/schema' + +let SPACE = '0x95DC6f73301356c9909921e21b735601C42fc1a8' +let VANILLA_AUTH = '0xc4fb316710643f7FfBB566e5586862076198DAdB' +let VANILLA_STRATEGY = '0xc441215878B3869b2468BA239911BA6B506619F7' +let VANILLA_EXECUTION = '0x81519C29621Ba131ea398c15B17391F53e8B9A94' + +export function handleSpaceCreated(event: ProposalCreated): void { + let space = Space.load(SPACE) + if (space == null) { + space = new Space(SPACE) + space.name = 'Fellow DAO' + space.about = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' + space.controller = event.params.proposerAddress + space.voting_delay = 0 + space.min_voting_period = event.params.proposal.minEndTimestamp.toI32() + space.max_voting_period = event.params.proposal.maxEndTimestamp.toI32() + space.proposal_threshold = event.params.proposal.quorum.toBigDecimal() + space.quorum = event.params.proposal.quorum.toBigDecimal() + space.strategies = [Address.fromString(VANILLA_STRATEGY)] + space.strategies_params = ['strategies params'] + space.authenticators = [Address.fromString(VANILLA_AUTH)] + space.executors = [Address.fromString(VANILLA_EXECUTION)] + space.proposal_count = 0 + space.vote_count = 0 + space.created = event.block.timestamp.toI32() + space.tx = event.transaction.hash + space.save() + } +} + +export function handleProposalCreated(event: ProposalCreated): void { + handleSpaceCreated(event) + + let space = Space.load(SPACE) + if (space == null) { + space = new Space(SPACE) + } + + let proposal = new Proposal(`${SPACE}/${event.params.nextProposalId}`) + proposal.proposal_id = event.params.nextProposalId.toI32() + proposal.space = SPACE + proposal.author = event.params.proposerAddress.toHexString() + proposal.execution_hash = event.params.proposal.executionHash.toHexString() + proposal.metadata_uri = event.params.metadataUri + proposal.title = 'Lorem ipsum dolor sit amet, consectetur adipiscing' + proposal.body = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' + proposal.discussion = 'https://forum.balancer.fi/t/rfc-closing-year-2-funding-gap/4243' + proposal.execution = event.params.proposal.executionStrategy + proposal.start = event.params.proposal.startTimestamp.toI32() + proposal.min_end = event.params.proposal.minEndTimestamp.toI32() + proposal.max_end = event.params.proposal.maxEndTimestamp.toI32() + proposal.snapshot = event.params.proposal.snapshotTimestamp.toI32() + proposal.strategies = space.strategies + proposal.strategies_params = space.strategies_params + proposal.scores_1 = BigDecimal.fromString('0') + proposal.scores_2 = BigDecimal.fromString('0') + proposal.scores_3 = BigDecimal.fromString('0') + proposal.scores_total = BigDecimal.fromString('0') + proposal.quorum = event.params.proposal.quorum.toBigDecimal() + proposal.created = event.block.timestamp.toI32() + proposal.tx = event.transaction.hash + proposal.vote_count = 0 + proposal.save() + + space.proposal_count += 1 + space.save() + + let user = User.load(event.params.proposerAddress.toHexString()) + if (user == null) { + user = new User(event.params.proposerAddress.toHexString()) + user.proposal_count = 0 + user.vote_count = 0 + user.created = event.block.timestamp.toI32() + user.save() + } + user.proposal_count += 1 + user.save() +} + +export function handleVoteCreated(event: VoteCreated): void { + let vote = new Vote(`${SPACE}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}`) + vote.voter = event.params.voterAddress.toHexString() + vote.space = SPACE + vote.proposal = event.params.proposalId.toI32() + vote.choice = event.params.vote.choice + vote.vp = event.params.vote.votingPower.toBigDecimal() + vote.created = event.block.timestamp.toI32() + vote.save() + + let space = Space.load(SPACE) + if (space !== null) { + space.vote_count += 1 + space.save() + } + + let user = User.load(event.params.voterAddress.toHexString()) + if (user == null) { + user = new User(event.params.voterAddress.toHexString()) + user.proposal_count = 0 + user.vote_count = 0 + user.created = event.block.timestamp.toI32() + user.save() + } + user.vote_count += 1 + user.save() +} diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml new file mode 100644 index 000000000..9ba77cc23 --- /dev/null +++ b/apps/subgraph-api/subgraph.yaml @@ -0,0 +1,27 @@ +specVersion: 0.0.2 +schema: + file: ./schema.graphql +dataSources: + - kind: ethereum + name: Space + network: goerli + source: + address: "0x95DC6f73301356c9909921e21b735601C42fc1a8" + abi: Space + startBlock: 8368128 + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + entities: + - ProposalCreated + - VoteCreated + abis: + - name: Space + file: ./abis/Space.json + eventHandlers: + - event: ProposalCreated(uint256,address,(uint256,uint32,uint32,uint32,uint32,bytes32,address,uint8),string,bytes) + handler: handleProposalCreated + - event: VoteCreated(uint256,address,(uint8,uint256)) + handler: handleVoteCreated + file: ./src/mapping.ts diff --git a/apps/subgraph-api/tsconfig.json b/apps/subgraph-api/tsconfig.json new file mode 100644 index 000000000..5c5d17c92 --- /dev/null +++ b/apps/subgraph-api/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@graphprotocol/graph-ts/types/tsconfig.base.json", + "include": ["src"] +} diff --git a/apps/subgraph-api/yarn.lock b/apps/subgraph-api/yarn.lock new file mode 100644 index 000000000..b07e17f47 --- /dev/null +++ b/apps/subgraph-api/yarn.lock @@ -0,0 +1,2860 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@graphprotocol/graph-cli@0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.26.0.tgz#9bcc3533d1384d44b65e0bf7eef81221ae8a4e05" + integrity sha512-sQKKfkGy6jsfpZD6KA9KdvHRpeStd1ZH334CMVxhyJtPY006a/Wc2rr7TBqgAtwpggs7UiT0UA3s5vG0jFQB5g== + dependencies: + assemblyscript "0.19.10" + binary-install-raw "0.0.13" + chalk "^3.0.0" + chokidar "^3.0.2" + debug "^4.1.1" + docker-compose "^0.23.2" + dockerode "^2.5.8" + fs-extra "^9.0.0" + glob "^7.1.2" + gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" + graphql "^15.5.0" + immutable "^3.8.2" + ipfs-http-client "^34.0.0" + jayson "^3.0.2" + js-yaml "^3.13.1" + node-fetch "^2.3.0" + pkginfo "^0.4.1" + prettier "^1.13.5" + request "^2.88.0" + semver "7.3.5" + tmp-promise "^3.0.2" + which "2.0.2" + yaml "^1.5.1" + +"@graphprotocol/graph-ts@0.24.1": + version "0.24.1" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.24.1.tgz#50961b52b5383f9c5cf5e6e23fa039f24e729ddf" + integrity sha512-2vU4m5ZPQIqMlMce/z5vmOtGHRlRmcRhMfemS3NIwxCSxSBGVnX2zb7QBTzzdQKGwsAZdbz6V0okkOtvohELfQ== + dependencies: + assemblyscript "0.19.10" + +"@types/connect@^3.4.33": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "18.11.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" + integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +JSONStream@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + integrity sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apisauce@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" + integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== + dependencies: + axios "^0.21.2" + ramda "^0.25.0" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asmcrypto.js@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" + integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== + +asn1.js@^5.0.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assemblyscript@0.19.10: + version "0.19.10" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" + integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== + dependencies: + binaryen "101.0.0-nightly.20210723" + long "^4.0.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async@^2.6.1, async@^2.6.2, async@^2.6.3: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axios@^0.21.1, axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bignumber.js@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binary-install-raw@0.0.13: + version "0.0.13" + resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" + integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== + dependencies: + axios "^0.21.1" + rimraf "^3.0.2" + tar "^6.1.0" + +binaryen@101.0.0-nightly.20210723: + version "101.0.0-nightly.20210723" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" + integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" + integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== + dependencies: + readable-stream "^3.0.1" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.0.0, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +borc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" + integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== + dependencies: + bignumber.js "^9.0.0" + buffer "^5.5.0" + commander "^2.15.0" + ieee754 "^1.1.13" + iso-url "~0.4.7" + json-text-sequence "~0.1.0" + readable-stream "^3.6.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.6, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.0.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +cids@~0.7.0, cids@~0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cids@~0.8.0: + version "0.8.3" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" + integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== + dependencies: + buffer "^5.6.0" + class-is "^1.1.0" + multibase "^1.0.0" + multicodec "^1.0.1" + multihashes "^1.0.1" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.2.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-table3@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.15.0, commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +"concat-stream@github:hugomrdias/concat-stream#feat/smaller": + version "2.0.0" + resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" + dependencies: + inherits "^2.0.3" + readable-stream "^3.0.2" + +concat-stream@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +docker-compose@^0.23.2: + version "0.23.17" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" + integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== + dependencies: + yaml "^1.10.2" + +docker-modem@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" + integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== + dependencies: + JSONStream "1.3.2" + debug "^3.2.6" + readable-stream "~1.0.26-4" + split-ca "^1.0.0" + +dockerode@^2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" + integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== + dependencies: + concat-stream "~1.6.2" + docker-modem "^1.0.8" + tar-fs "~1.16.3" + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +elliptic@^6.5.2: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" + integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== + dependencies: + ansi-colors "^3.2.1" + +err-code@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== + +err-code@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +explain-error@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" + integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ== + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +flatmap@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" + integrity sha512-OuR+o7kHVe+x9RtIujPay7Uw3bvDZBZFSBXClEphZuSDLmZTqMdclasf4vFSsogC8baDz0eaC2NdO/2dlXHBKQ== + +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-jetpack@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" + integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== + dependencies: + minimatch "^3.0.2" + rimraf "^2.6.3" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.2, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +"gluegun@https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep": + version "4.3.1" + resolved "https://github.com/edgeandnode/gluegun#b34b9003d7bf556836da41b57ef36eb21570620a" + dependencies: + apisauce "^1.0.1" + app-module-path "^2.2.0" + cli-table3 "~0.5.0" + colors "1.3.3" + cosmiconfig "6.0.0" + cross-spawn "^7.0.0" + ejs "^2.6.1" + enquirer "2.3.4" + execa "^3.0.0" + fs-jetpack "^2.2.2" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.lowercase "^4.3.0" + lodash.lowerfirst "^4.3.1" + lodash.pad "^4.5.1" + lodash.padend "^4.6.1" + lodash.padstart "^4.6.1" + lodash.repeat "^4.1.0" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.trim "^4.5.1" + lodash.trimend "^4.5.1" + lodash.trimstart "^4.5.1" + lodash.uppercase "^4.3.0" + lodash.upperfirst "^4.3.1" + ora "^4.0.0" + pluralize "^8.0.0" + ramdasauce "^2.1.0" + semver "^7.0.0" + which "^2.0.0" + yargs-parser "^16.1.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graphql@^15.5.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hi-base32@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" + integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +immutable@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== + +import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ip-regex@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ipfs-block@~0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.8.1.tgz#05e1068832775e8f1c2da5b64106cc837fd2acb9" + integrity sha512-0FaCpmij+jZBoUYhjoB5ptjdl9QzvrdRIoBmUU5JiBnK2GA+4YM/ifklaB8ePRhA/rRzhd+KYBjvMFMAL4NrVQ== + dependencies: + cids "~0.7.0" + class-is "^1.1.0" + +ipfs-http-client@^34.0.0: + version "34.0.0" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" + integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== + dependencies: + abort-controller "^3.0.0" + async "^2.6.1" + bignumber.js "^9.0.0" + bl "^3.0.0" + bs58 "^4.0.1" + buffer "^5.4.2" + cids "~0.7.1" + concat-stream "github:hugomrdias/concat-stream#feat/smaller" + debug "^4.1.0" + detect-node "^2.0.4" + end-of-stream "^1.4.1" + err-code "^2.0.0" + explain-error "^1.0.4" + flatmap "0.0.3" + glob "^7.1.3" + ipfs-block "~0.8.1" + ipfs-utils "~0.0.3" + ipld-dag-cbor "~0.15.0" + ipld-dag-pb "~0.17.3" + ipld-raw "^4.0.0" + is-ipfs "~0.6.1" + is-pull-stream "0.0.0" + is-stream "^2.0.0" + iso-stream-http "~0.1.2" + iso-url "~0.4.6" + iterable-ndjson "^1.1.0" + just-kebab-case "^1.1.0" + just-map-keys "^1.1.0" + kind-of "^6.0.2" + ky "^0.11.2" + ky-universal "^0.2.2" + lru-cache "^5.1.1" + multiaddr "^6.0.6" + multibase "~0.6.0" + multicodec "~0.5.1" + multihashes "~0.4.14" + ndjson "github:hugomrdias/ndjson#feat/readable-stream3" + once "^1.4.0" + peer-id "~0.12.3" + peer-info "~0.15.1" + promise-nodeify "^3.0.1" + promisify-es6 "^1.0.3" + pull-defer "~0.2.3" + pull-stream "^3.6.9" + pull-to-stream "~0.1.1" + pump "^3.0.0" + qs "^6.5.2" + readable-stream "^3.1.1" + stream-to-pull-stream "^1.7.2" + tar-stream "^2.0.1" + through2 "^3.0.1" + +ipfs-utils@~0.0.3: + version "0.0.4" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-0.0.4.tgz#946114cfeb6afb4454b4ccb10d2327cd323b0cce" + integrity sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig== + dependencies: + buffer "^5.2.1" + is-buffer "^2.0.3" + is-electron "^2.2.0" + is-pull-stream "0.0.0" + is-stream "^2.0.0" + kind-of "^6.0.2" + readable-stream "^3.4.0" + +ipld-dag-cbor@~0.15.0: + version "0.15.3" + resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.15.3.tgz#283afdb81d5b07db8e4fff7a10ef5e517e87f299" + integrity sha512-m23nG7ZyoVFnkK55/bLAErc7EfiMgaEQlqHWDTGzPI+O5r6bPfp+qbL5zTVSIT8tpbHmu174dwerVtLoVgeVyA== + dependencies: + borc "^2.1.2" + buffer "^5.5.0" + cids "~0.8.0" + is-circular "^1.0.2" + multicodec "^1.0.0" + multihashing-async "~0.8.0" + +ipld-dag-pb@~0.17.3: + version "0.17.4" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.17.4.tgz#080841cfdd014d996f8da7f3a522ec8b1f6b6494" + integrity sha512-YwCxETEMuXVspOKOhjIOHJvKvB/OZfCDkpSFiYBQN2/JQjM9y/RFCYzIQGm0wg7dCFLrhvfjAZLTSaKs65jzWA== + dependencies: + cids "~0.7.0" + class-is "^1.1.0" + multicodec "~0.5.1" + multihashing-async "~0.7.0" + protons "^1.0.1" + stable "~0.1.8" + +ipld-raw@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-4.0.1.tgz#49a6f58cdfece5a4d581925b19ee19255be2a29d" + integrity sha512-WjIdtZ06jJEar8zh+BHB84tE6ZdbS/XNa7+XCArOYfmeJ/c01T9VQpeMwdJQYn5c3s5UvvCu7y4VIi3vk2g1bA== + dependencies: + cids "~0.7.0" + multicodec "^1.0.0" + multihashing-async "~0.8.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-circular@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" + integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== + +is-electron@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" + integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" + integrity sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g== + dependencies: + ip-regex "^2.0.0" + +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-ipfs@~0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.6.3.tgz#82a5350e0a42d01441c40b369f8791e91404c497" + integrity sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ== + dependencies: + bs58 "^4.0.1" + cids "~0.7.0" + mafmt "^7.0.0" + multiaddr "^7.2.1" + multibase "~0.6.0" + multihashes "~0.4.13" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-promise@~1, is-promise@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" + integrity sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg== + +is-pull-stream@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" + integrity sha512-NWLwqCc95I6m8FZDYLAmVJc9Xgk8O+8pPOoDKFTC293FH4S7FBcbLCw3WWPCdiT8uUSdzPy47VM08WPDMJJrag== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iso-random-stream@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-1.1.2.tgz#c703da2c518db573277c5678cc43c5298283d64c" + integrity sha512-7y0tsBBgQs544iTYjyrMp5xvgrbYR8b+plQq1Bryp+03p0LssrxC9C1M0oHv4QESDt7d95c74XvMk/yawKqX+A== + dependencies: + buffer "^6.0.3" + readable-stream "^3.4.0" + +iso-stream-http@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/iso-stream-http/-/iso-stream-http-0.1.2.tgz#b3dfea4c9f23ff26d078d40c539cfc0dfebacd37" + integrity sha512-oHEDNOysIMTNypbg2f1SlydqRBvjl4ZbSE9+0awVxnkx3K2stGTFwB/kpVqnB6UEfF8QD36kAjDwZvqyXBLMnQ== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^3.1.1" + +iso-url@~0.4.6, iso-url@~0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" + integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +iterable-ndjson@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" + integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== + dependencies: + string_decoder "^1.2.0" + +jayson@^3.0.2: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" + integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + uuid "^8.3.2" + ws "^7.4.5" + +js-sha3@^0.8.0, js-sha3@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json-text-sequence@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== + dependencies: + delimit-stream "0.1.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +just-kebab-case@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-kebab-case/-/just-kebab-case-1.1.0.tgz#ebe854fde84b0afa4e597fcd870b12eb3c026755" + integrity sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA== + +just-map-keys@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.2.1.tgz#ef6e16133b7d34329962dfae9101d581abb1b143" + integrity sha512-Dmyz1Cy2SWM+PpqDPB1kdDglyexdzMthnAsvOIE9w4OPj8NDRuY1mh20x/JfG5w6fCGw9F0WmcofJhYZ4MiuyA== + +keypair@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" + integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +ky-universal@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.2.2.tgz#7a36e1a75641a98f878157463513965f799f5bfe" + integrity sha512-fb32o/fKy/ux2ALWa9HU2hvGtfOq7/vn2nH0FpVE+jwNzyTeORlAbj3Fiw+WLMbUlmVqZIWupnLZ2USHvqwZHw== + dependencies: + abort-controller "^3.0.0" + node-fetch "^2.3.0" + +ky@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/ky/-/ky-0.11.2.tgz#4ffe6621d9d9ab61bf0f5500542e3a96d1ba0815" + integrity sha512-5Aou5BWue5/mkPqIRqzSWW+0Hkl403pr/2AIrCKYw7cVl/Xoe8Xe4KLBO0PRjbz7GnRe1/8wW1KhqQNFFE7/GQ== + +libp2p-crypto-secp256k1@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.3.1.tgz#4cbeb857f5cfe5fefb1253e6b2994420c0ca166e" + integrity sha512-evrfK/CeUSd/lcELUdDruyPBvxDmLairth75S32OLl3H+++2m2fV24JEtxzdFS9JH3xEFw0h6JFO8DBa1bP9dA== + dependencies: + async "^2.6.2" + bs58 "^4.0.1" + multihashing-async "~0.6.0" + nodeify "^1.0.1" + safe-buffer "^5.1.2" + secp256k1 "^3.6.2" + +libp2p-crypto@~0.16.1: + version "0.16.4" + resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.16.4.tgz#fb1a4ba39d56789303947784b5b0d6cefce12fdc" + integrity sha512-II8HxKc9jbmQp34pprlluNxsBCWJDjHRPYJzuRy7ragztNip9Zb7uJ4lCje6gGzz4DNAcHkAUn+GqCIK1592iA== + dependencies: + asmcrypto.js "^2.3.2" + asn1.js "^5.0.1" + async "^2.6.1" + bn.js "^4.11.8" + browserify-aes "^1.2.0" + bs58 "^4.0.1" + iso-random-stream "^1.1.0" + keypair "^1.0.1" + libp2p-crypto-secp256k1 "~0.3.0" + multihashing-async "~0.5.1" + node-forge "^0.10.0" + pem-jwk "^2.0.0" + protons "^1.0.1" + rsa-pem-to-jwk "^1.1.3" + tweetnacl "^1.0.0" + ursa-optional "~0.10.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.lowercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" + integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== + +lodash.lowerfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" + integrity sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w== + +lodash.pad@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== + +lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== + +lodash.repeat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" + integrity sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + +lodash.trim@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" + integrity sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg== + +lodash.trimend@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" + integrity sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA== + +lodash.trimstart@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" + integrity sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ== + +lodash.uppercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" + integrity sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA== + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + +lodash@^4.17.14, lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" + integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +mafmt@^6.0.2: + version "6.0.10" + resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-6.0.10.tgz#3ad251c78f14f8164e66f70fd3265662da41113a" + integrity sha512-FjHDnew6dW9lUu3eYwP0FvvJl9uvNbqfoJM+c1WJcSyutNEIlyu6v3f/rlPnD1cnmue38IjuHlhBdIh3btAiyw== + dependencies: + multiaddr "^6.1.0" + +mafmt@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" + integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== + dependencies: + multiaddr "^7.3.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b" + integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multiaddr@^6.0.3, multiaddr@^6.0.6, multiaddr@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-6.1.1.tgz#9aae57b3e399089b9896d9455afa8f6b117dff06" + integrity sha512-Q1Ika0F9MNhMtCs62Ue+GWIJtRFEhZ3Xz8wH7/MZDVZTWhil1/H2bEGN02kUees3hkI3q1oHSjmXYDM0gxaFjQ== + dependencies: + bs58 "^4.0.1" + class-is "^1.1.0" + hi-base32 "~0.5.0" + ip "^1.1.5" + is-ip "^2.0.0" + varint "^5.0.0" + +multiaddr@^7.2.1, multiaddr@^7.3.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" + integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== + dependencies: + buffer "^5.5.0" + cids "~0.8.0" + class-is "^1.1.0" + is-ip "^3.1.0" + multibase "^0.7.0" + varint "^5.0.0" + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@^1.0.0, multibase@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" + integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^1.0.0, multicodec@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multicodec@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multihashes@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" + integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== + dependencies: + buffer "^5.6.0" + multibase "^1.0.1" + varint "^5.0.0" + +multihashes@~0.4.13, multihashes@~0.4.14, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +multihashing-async@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.5.2.tgz#4af40e0dde2f1dbb12a7c6b265181437ac26b9de" + integrity sha512-mmyG6M/FKxrpBh9xQDUvuJ7BbqT93ZeEeH5X6LeMYKoYshYLr9BDdCsvDtZvn+Egf+/Xi+aOznrWL4vp3s+p0Q== + dependencies: + blakejs "^1.1.0" + js-sha3 "~0.8.0" + multihashes "~0.4.13" + murmurhash3js "^3.0.1" + nodeify "^1.0.1" + +multihashing-async@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.6.0.tgz#c1fc6696a624b9bf39b160b0c4c4e7ba3f394453" + integrity sha512-Qv8pgg99Lewc191A5nlXy0bSd2amfqlafNJZmarU6Sj7MZVjpR94SCxQjf4DwPtgWZkiLqsjUQBXA2RSq+hYyA== + dependencies: + blakejs "^1.1.0" + js-sha3 "~0.8.0" + multihashes "~0.4.13" + murmurhash3js "^3.0.1" + nodeify "^1.0.1" + +multihashing-async@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.7.0.tgz#3234fb98295be84386b85bfd20377d3e5be20d6b" + integrity sha512-SCbfl3f+DzJh+/5piukga9ofIOxwfT05t8R4jfzZIJ88YE9zU9+l3K2X+XB19MYyxqvyK9UJRNWbmQpZqQlbRA== + dependencies: + blakejs "^1.1.0" + buffer "^5.2.1" + err-code "^1.1.2" + js-sha3 "~0.8.0" + multihashes "~0.4.13" + murmurhash3js-revisited "^3.0.0" + +multihashing-async@~0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.8.2.tgz#3d5da05df27d83be923f6d04143a0954ff87f27f" + integrity sha512-2lKa1autuCy8x7KIEj9aVNbAb3aIMRFYIwN7mq/zD4pxgNIVgGlm+f6GKY4880EOF2Y3GktHYssRy7TAJQ2DyQ== + dependencies: + blakejs "^1.1.0" + buffer "^5.4.3" + err-code "^2.0.0" + js-sha3 "^0.8.0" + multihashes "^1.0.1" + murmurhash3js-revisited "^3.0.0" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +murmurhash3js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" + integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.14.0, nan@^2.14.2: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +"ndjson@github:hugomrdias/ndjson#feat/readable-stream3": + version "1.5.0" + resolved "https://codeload.github.com/hugomrdias/ndjson/tar.gz/4db16da6b42e5b39bf300c3a7cde62abb3fa3a11" + dependencies: + json-stringify-safe "^5.0.1" + minimist "^1.2.0" + split2 "^3.1.0" + through2 "^3.0.0" + +node-fetch@^2.3.0: + version "2.6.8" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" + integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +nodeify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" + integrity sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw== + dependencies: + is-promise "~1.0.0" + promise "~1.3.0" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optimist@~0.3.5: + version "0.3.7" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" + integrity sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ== + dependencies: + wordwrap "~0.0.2" + +ora@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" + integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +peer-id@~0.12.2, peer-id@~0.12.3: + version "0.12.5" + resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" + integrity sha512-3xVWrtIvNm9/OPzaQBgXDrfWNx63AftgFQkvqO6YSZy7sP3Fuadwwbn54F/VO9AnpyW/26i0WRQz9FScivXrmw== + dependencies: + async "^2.6.3" + class-is "^1.1.0" + libp2p-crypto "~0.16.1" + multihashes "~0.4.15" + +peer-info@~0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.15.1.tgz#21254a7c516d0dd046b150120b9aaf1b9ad02146" + integrity sha512-Y91Q2tZRC0CpSTPd1UebhGqniOrOAk/aj60uYUcWJXCoLTAnGu+4LJGoiay8ayudS6ice7l3SKhgL/cS62QacA== + dependencies: + mafmt "^6.0.2" + multiaddr "^6.0.3" + peer-id "~0.12.2" + unique-by "^1.0.0" + +pem-jwk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" + integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== + dependencies: + asn1.js "^5.0.1" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkginfo@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" + integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +prettier@^1.13.5: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-nodeify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" + integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== + +promise@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" + integrity sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA== + dependencies: + is-promise "~1" + +promisify-es6@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" + integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== + +protocol-buffers-schema@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" + integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== + +protons@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/protons/-/protons-1.2.1.tgz#5f1e0db8b2139469cd1c3b4e332a4c2d95d0a218" + integrity sha512-2oqDyc/SN+tNcJf8XxrXhYL7sQn2/OMl8mSdD7NVGsWjMEmAbks4eDVnCyf0vAoRbBWyWTEXWk4D8XfuKVl3zg== + dependencies: + buffer "^5.5.0" + protocol-buffers-schema "^3.3.1" + signed-varint "^2.0.1" + varint "^5.0.0" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pull-defer@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" + integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== + +pull-stream@^3.2.3, pull-stream@^3.6.9: + version "3.7.0" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.7.0.tgz#85de0e44ff38a4d2ad08cc43fc458e1922f9bf0b" + integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== + +pull-to-stream@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pull-to-stream/-/pull-to-stream-0.1.1.tgz#fa2058528528e3542b81d6f17cbc42288508ff37" + integrity sha512-thZkMv6F9PILt9zdvpI2gxs19mkDrlixYKX6cOBxAW16i1NZH+yLAmF4r8QfJ69zuQh27e01JZP9y27tsH021w== + dependencies: + readable-stream "^3.1.1" + +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@^6.5.2: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +ramda@^0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" + integrity sha512-HEm619G8PaZMfkqCa23qiOe7r3R0brPu7ZgOsgKUsnvLhd0qhc/vTjkUovomgPWa5ECBa08fJZixth9LaoBo5w== + +ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== + +ramdasauce@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" + integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== + dependencies: + ramda "^0.24.1" + +"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsa-pem-to-jwk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" + integrity sha512-ZlVavEvTnD8Rzh/pdB8NH4VF5GNEtF6biGQcTtC4GKFMsbZR08oHtOYefbhCN+JnJIuMItiCDCMycdcMrw6blA== + dependencies: + object-assign "^2.0.0" + rsa-unpack "0.0.6" + +rsa-unpack@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" + integrity sha512-HRrl8GHjjPziPFRDJPq/v5OxZ3IPdksV5h3cime/oHgcgM1k1toO5OdtzClgBqRf5dF6IgptOB0g/zFb0w5zQw== + dependencies: + optimist "~0.3.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +secp256k1@^3.6.2: + version "3.8.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + +semver@7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^7.0.0: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signed-varint@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" + integrity sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw== + dependencies: + varint "~5.0.0" + +split-ca@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" + integrity sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ== + +split2@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@~0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stream-to-pull-stream@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" + integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== + dependencies: + looper "^3.0.0" + pull-stream "^3.2.3" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.1.1, string_decoder@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tar-fs@~1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-stream@^1.1.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@^6.1.0: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +through2@^3.0.0, through2@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +unique-by@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" + integrity sha512-rJRXK5V0zL6TiSzhoGNpJp5dr+TZBLoPJFC06rLn17Ug++7Aa0Qnve5v+skXeQxx6/sI7rBsSesa6MAcmFi8Ew== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +ursa-optional@~0.10.0: + version "0.10.2" + resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" + integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== + dependencies: + bindings "^1.5.0" + nan "^2.14.2" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +varint@^5.0.0, varint@~5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@2.0.2, which@^2.0.0, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.4.5: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2, yaml@^1.5.1, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" From dfa15563d956a9c882b42c75b29c2b134b15f6f0 Mon Sep 17 00:00:00 2001 From: bonustrack Date: Wed, 25 Jan 2023 22:11:10 +0700 Subject: [PATCH 02/44] feat: update proposal scores fields on vote --- apps/subgraph-api/schema.graphql | 96 ++++++++++++++++---------------- apps/subgraph-api/src/mapping.ts | 18 +++++- 2 files changed, 64 insertions(+), 50 deletions(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 0ab570624..3f370f28b 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -1,63 +1,63 @@ type Space @entity { id: ID! - name: String - about: String - controller: Bytes - voting_delay: Int - min_voting_period: Int - max_voting_period: Int - proposal_threshold: BigDecimal - quorum: BigDecimal - strategies: [Bytes!] - strategies_params: [String!] - authenticators: [Bytes!] - executors: [Bytes!] - proposal_count: Int - vote_count: Int - created: Int - tx: Bytes + name: String! + about: String! + controller: Bytes! + voting_delay: Int! + min_voting_period: Int! + max_voting_period: Int! + proposal_threshold: BigDecimal! + quorum: BigDecimal! + strategies: [Bytes!]! + strategies_params: [String!]! + authenticators: [Bytes!]! + executors: [Bytes!]! + proposal_count: Int! + vote_count: Int! + created: Int! + tx: Bytes! } type Proposal @entity { id: ID! - proposal_id: Int - space: Space - author: User - execution_hash: String - metadata_uri: String - title: String - body: String - discussion: String - execution: Bytes - start: Int - min_end: Int - max_end: Int - snapshot: Int - strategies: [Bytes!] - strategies_params: [String!] - scores_1: BigDecimal - scores_2: BigDecimal - scores_3: BigDecimal - scores_total: BigDecimal - quorum: BigDecimal - created: Int - tx: Bytes - vote_count: Int + proposal_id: Int! + space: Space! + author: User! + execution_hash: String! + metadata_uri: String! + title: String! + body: String! + discussion: String! + execution: Bytes! + start: Int! + min_end: Int! + max_end: Int! + snapshot: Int! + strategies: [Bytes!]! + strategies_params: [String!]! + scores_1: BigDecimal! + scores_2: BigDecimal! + scores_3: BigDecimal! + scores_total: BigDecimal! + quorum: BigDecimal! + created: Int! + tx: Bytes! + vote_count: Int! } type Vote @entity { id: ID! - voter: User - space: Space - proposal: Int - choice: Int - vp: BigDecimal - created: Int + voter: User! + space: Space! + proposal: Int! + choice: Int! + vp: BigDecimal! + created: Int! } type User @entity { id: ID! - proposal_count: Int - vote_count: Int - created: Int + proposal_count: Int! + vote_count: Int! + created: Int! } diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 1bc158b04..75e3b9a03 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -81,12 +81,15 @@ export function handleProposalCreated(event: ProposalCreated): void { } export function handleVoteCreated(event: VoteCreated): void { + let choice = event.params.vote.choice + 1 + let vp = event.params.vote.votingPower.toBigDecimal() + let vote = new Vote(`${SPACE}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}`) vote.voter = event.params.voterAddress.toHexString() vote.space = SPACE vote.proposal = event.params.proposalId.toI32() - vote.choice = event.params.vote.choice - vote.vp = event.params.vote.votingPower.toBigDecimal() + vote.choice = choice + vote.vp = vp vote.created = event.block.timestamp.toI32() vote.save() @@ -96,6 +99,17 @@ export function handleVoteCreated(event: VoteCreated): void { space.save() } + let proposal = Proposal.load(`${SPACE}/${event.params.proposalId}`) + if (proposal !== null) { + proposal.setBigDecimal( + `scores_${choice.toString()}`, + proposal.getBigDecimal(`scores_${choice.toString()}`).plus(vp) + ) + proposal.scores_total = proposal.scores_total.plus(vp) + proposal.vote_count += 1 + proposal.save() + } + let user = User.load(event.params.voterAddress.toHexString()) if (user == null) { user = new User(event.params.voterAddress.toHexString()) From 3d10896e33498ef1ca46baeef3a7788d7e6902b1 Mon Sep 17 00:00:00 2001 From: bonustrack Date: Wed, 25 Jan 2023 22:32:06 +0700 Subject: [PATCH 03/44] feat: load metadata from IPFS --- apps/subgraph-api/schema.graphql | 2 +- apps/subgraph-api/src/mapping.ts | 32 ++++++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 3f370f28b..e9410ceaa 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -28,7 +28,7 @@ type Proposal @entity { title: String! body: String! discussion: String! - execution: Bytes! + execution: String! start: Int! min_end: Int! max_end: Int! diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 75e3b9a03..998f2028b 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,4 +1,4 @@ -import { Address, BigDecimal } from '@graphprotocol/graph-ts' +import { Address, BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' import { ProposalCreated, VoteCreated } from '../generated/Space/Space' import { Space, Proposal, Vote, User} from '../generated/schema' @@ -32,6 +32,8 @@ export function handleSpaceCreated(event: ProposalCreated): void { } export function handleProposalCreated(event: ProposalCreated): void { + let metadataUri = event.params.metadataUri + handleSpaceCreated(event) let space = Space.load(SPACE) @@ -44,11 +46,11 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.space = SPACE proposal.author = event.params.proposerAddress.toHexString() proposal.execution_hash = event.params.proposal.executionHash.toHexString() - proposal.metadata_uri = event.params.metadataUri - proposal.title = 'Lorem ipsum dolor sit amet, consectetur adipiscing' - proposal.body = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' - proposal.discussion = 'https://forum.balancer.fi/t/rfc-closing-year-2-funding-gap/4243' - proposal.execution = event.params.proposal.executionStrategy + proposal.metadata_uri = metadataUri + proposal.title = '' + proposal.body = '' + proposal.discussion = '' + proposal.execution = '' proposal.start = event.params.proposal.startTimestamp.toI32() proposal.min_end = event.params.proposal.minEndTimestamp.toI32() proposal.max_end = event.params.proposal.maxEndTimestamp.toI32() @@ -63,6 +65,24 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.created = event.block.timestamp.toI32() proposal.tx = event.transaction.hash proposal.vote_count = 0 + + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + if (data !== null) { + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let title = obj.get('title') + let body = obj.get('body') + let discussion = obj.get('discussion') + + if (title) proposal.title = title.toString() + if (body) proposal.body = body.toString() + if (discussion) proposal.discussion = discussion.toString() + } + } + proposal.save() space.proposal_count += 1 From aae9381d26d06e074f16b64de3bb6ef23cc1a279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Mon, 30 Jan 2023 12:00:01 +0100 Subject: [PATCH 04/44] feat: add handleMetadataUriUpdated (https://github.com/snapshot-labs/sx-subgraph/pull/1) --- apps/subgraph-api/src/mapping.ts | 28 +++++++++++++++++++++++++++- apps/subgraph-api/subgraph.yaml | 3 +++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 998f2028b..82a7f305c 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,5 +1,5 @@ import { Address, BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' -import { ProposalCreated, VoteCreated } from '../generated/Space/Space' +import { ProposalCreated, VoteCreated, MetadataUriUpdated } from '../generated/Space/Space' import { Space, Proposal, Vote, User} from '../generated/schema' let SPACE = '0x95DC6f73301356c9909921e21b735601C42fc1a8' @@ -141,3 +141,29 @@ export function handleVoteCreated(event: VoteCreated): void { user.vote_count += 1 user.save() } + +export function handleMetadataUriUpdated(event: MetadataUriUpdated): void { + let metadataUri = event.params.newMetadataUri + + let space = Space.load(SPACE) + if (space == null) { + space = new Space(SPACE) + } + + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + if (data !== null) { + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let title = obj.get('name') + let description = obj.get('description') + + if (title) space.name = title.toString() + if (description) space.about = description.toString() + } + } + + space.save() +} diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 9ba77cc23..9981f9d71 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -16,6 +16,7 @@ dataSources: entities: - ProposalCreated - VoteCreated + - MetadataUriUpdated abis: - name: Space file: ./abis/Space.json @@ -24,4 +25,6 @@ dataSources: handler: handleProposalCreated - event: VoteCreated(uint256,address,(uint8,uint256)) handler: handleVoteCreated + - event: MetadataUriUpdated(string) + handler: handleMetadataUriUpdated file: ./src/mapping.ts From 1ebf696f3acb44cd0888f8c2f666e85bd6a2afc8 Mon Sep 17 00:00:00 2001 From: Fabien Date: Wed, 1 Feb 2023 22:19:18 +0700 Subject: [PATCH 05/44] hotfix: add metadata JSON string as execution (https://github.com/snapshot-labs/sx-subgraph/pull/3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * hotfix: add metadata JSON string as execution * feat: use assemblyscript-json * chore: remove semicolon --------- Co-authored-by: Wiktor TkaczyƄski --- apps/subgraph-api/package.json | 3 ++- apps/subgraph-api/src/mapping.ts | 10 +++++++++- apps/subgraph-api/yarn.lock | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index b3977fb2f..4cebed55d 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@graphprotocol/graph-cli": "0.26.0", - "@graphprotocol/graph-ts": "0.24.1" + "@graphprotocol/graph-ts": "0.24.1", + "assemblyscript-json": "^1.1.0" } } diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 82a7f305c..2b52f99a2 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,6 +1,7 @@ import { Address, BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { JSON } from 'assemblyscript-json' import { ProposalCreated, VoteCreated, MetadataUriUpdated } from '../generated/Space/Space' -import { Space, Proposal, Vote, User} from '../generated/schema' +import { Space, Proposal, Vote, User } from '../generated/schema' let SPACE = '0x95DC6f73301356c9909921e21b735601C42fc1a8' let VANILLA_AUTH = '0xc4fb316710643f7FfBB566e5586862076198DAdB' @@ -80,6 +81,13 @@ export function handleProposalCreated(event: ProposalCreated): void { if (title) proposal.title = title.toString() if (body) proposal.body = body.toString() if (discussion) proposal.discussion = discussion.toString() + + // Using different parser for execution to overcome limitations in graph-ts + let jsonObj: JSON.Obj = (JSON.parse(data.toString())) + let execution = jsonObj.getArr('execution') + if (execution) { + proposal.execution = execution.toString() + } } } diff --git a/apps/subgraph-api/yarn.lock b/apps/subgraph-api/yarn.lock index b07e17f47..621492bdb 100644 --- a/apps/subgraph-api/yarn.lock +++ b/apps/subgraph-api/yarn.lock @@ -200,6 +200,11 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" +assemblyscript-json@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assemblyscript-json/-/assemblyscript-json-1.1.0.tgz#49d38bc21f1ac36f2887528a35de6cf7d59c17be" + integrity sha512-UbE8ts8csTWQgd5TnSPN7MRV9NveuHv1bVnKmDLoo/tzjqxkmsZb3lu59Uk8H7SGoqdkDSEE049alx/nHnSdFw== + assemblyscript@0.19.10: version "0.19.10" resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" From 5b732dbc6ab0f4ca5ccdd156dabcbe1b4c2f89c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 16 Feb 2023 15:56:05 +0100 Subject: [PATCH 06/44] feat: track SpaceFactory (https://github.com/snapshot-labs/sx-subgraph/pull/5) --- apps/subgraph-api/abis/SpaceFactory.json | 156 +++++++++++++++++++++++ apps/subgraph-api/src/mapping.ts | 96 +++++++------- apps/subgraph-api/subgraph.yaml | 23 +++- 3 files changed, 225 insertions(+), 50 deletions(-) create mode 100644 apps/subgraph-api/abis/SpaceFactory.json diff --git a/apps/subgraph-api/abis/SpaceFactory.json b/apps/subgraph-api/abis/SpaceFactory.json new file mode 100644 index 000000000..961698b54 --- /dev/null +++ b/apps/subgraph-api/abis/SpaceFactory.json @@ -0,0 +1,156 @@ +[ + { + "inputs": [], + "name": "SpaceCreationFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proposalThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "executionStrategiesAddresses", + "type": "address[]" + } + ], + "name": "SpaceCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "proposalThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + }, + { + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executionStrategies", + "type": "address[]" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "createSpace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 2b52f99a2..c4bb02043 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,50 +1,46 @@ -import { Address, BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' +import { SpaceCreated } from '../generated/SpaceFactory/SpaceFactory' import { ProposalCreated, VoteCreated, MetadataUriUpdated } from '../generated/Space/Space' +import { Space as SpaceTemplate } from '../generated/templates' import { Space, Proposal, Vote, User } from '../generated/schema' -let SPACE = '0x95DC6f73301356c9909921e21b735601C42fc1a8' -let VANILLA_AUTH = '0xc4fb316710643f7FfBB566e5586862076198DAdB' -let VANILLA_STRATEGY = '0xc441215878B3869b2468BA239911BA6B506619F7' -let VANILLA_EXECUTION = '0x81519C29621Ba131ea398c15B17391F53e8B9A94' +export function handleSpaceCreated(event: SpaceCreated): void { + let space = new Space(event.params.space.toHexString()) + space.name = 'Fellow DAO ' + event.params.space.toHexString().slice(0, 6) + space.about = '' + space.controller = event.params.owner + space.voting_delay = event.params.votingDelay.toI32() + space.min_voting_period = event.params.minVotingDuration.toI32() + space.max_voting_period = event.params.maxVotingDuration.toI32() + space.proposal_threshold = event.params.proposalThreshold.toBigDecimal() + space.quorum = event.params.quorum.toBigDecimal() + space.strategies = event.params.votingStrategies.map((strategy) => strategy.addy) + space.strategies_params = event.params.votingStrategies.map((strategy) => + strategy.params.toHexString() + ) + space.authenticators = event.params.authenticators.map((address) => address) + space.executors = event.params.executionStrategiesAddresses.map((address) => address) + space.proposal_count = 0 + space.vote_count = 0 + space.created = event.block.timestamp.toI32() + space.tx = event.transaction.hash + space.save() -export function handleSpaceCreated(event: ProposalCreated): void { - let space = Space.load(SPACE) - if (space == null) { - space = new Space(SPACE) - space.name = 'Fellow DAO' - space.about = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' - space.controller = event.params.proposerAddress - space.voting_delay = 0 - space.min_voting_period = event.params.proposal.minEndTimestamp.toI32() - space.max_voting_period = event.params.proposal.maxEndTimestamp.toI32() - space.proposal_threshold = event.params.proposal.quorum.toBigDecimal() - space.quorum = event.params.proposal.quorum.toBigDecimal() - space.strategies = [Address.fromString(VANILLA_STRATEGY)] - space.strategies_params = ['strategies params'] - space.authenticators = [Address.fromString(VANILLA_AUTH)] - space.executors = [Address.fromString(VANILLA_EXECUTION)] - space.proposal_count = 0 - space.vote_count = 0 - space.created = event.block.timestamp.toI32() - space.tx = event.transaction.hash - space.save() - } + SpaceTemplate.create(event.params.space) } export function handleProposalCreated(event: ProposalCreated): void { - let metadataUri = event.params.metadataUri - - handleSpaceCreated(event) - - let space = Space.load(SPACE) + let space = Space.load(event.address.toHexString()) if (space == null) { - space = new Space(SPACE) + return } - let proposal = new Proposal(`${SPACE}/${event.params.nextProposalId}`) + let metadataUri = event.params.metadataUri + + let proposal = new Proposal(`${space.id}/${event.params.nextProposalId}`) proposal.proposal_id = event.params.nextProposalId.toI32() - proposal.space = SPACE + proposal.space = space.id proposal.author = event.params.proposerAddress.toHexString() proposal.execution_hash = event.params.proposal.executionHash.toHexString() proposal.metadata_uri = metadataUri @@ -83,7 +79,7 @@ export function handleProposalCreated(event: ProposalCreated): void { if (discussion) proposal.discussion = discussion.toString() // Using different parser for execution to overcome limitations in graph-ts - let jsonObj: JSON.Obj = (JSON.parse(data.toString())) + let jsonObj: JSON.Obj = JSON.parse(data.toString()) let execution = jsonObj.getArr('execution') if (execution) { proposal.execution = execution.toString() @@ -109,25 +105,29 @@ export function handleProposalCreated(event: ProposalCreated): void { } export function handleVoteCreated(event: VoteCreated): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + let choice = event.params.vote.choice + 1 let vp = event.params.vote.votingPower.toBigDecimal() - let vote = new Vote(`${SPACE}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}`) + let vote = new Vote( + `${space.id}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}` + ) vote.voter = event.params.voterAddress.toHexString() - vote.space = SPACE + vote.space = space.id vote.proposal = event.params.proposalId.toI32() vote.choice = choice vote.vp = vp vote.created = event.block.timestamp.toI32() vote.save() - let space = Space.load(SPACE) - if (space !== null) { - space.vote_count += 1 - space.save() - } + space.vote_count += 1 + space.save() - let proposal = Proposal.load(`${SPACE}/${event.params.proposalId}`) + let proposal = Proposal.load(`${space.id}/${event.params.proposalId}`) if (proposal !== null) { proposal.setBigDecimal( `scores_${choice.toString()}`, @@ -151,13 +151,13 @@ export function handleVoteCreated(event: VoteCreated): void { } export function handleMetadataUriUpdated(event: MetadataUriUpdated): void { - let metadataUri = event.params.newMetadataUri - - let space = Space.load(SPACE) + let space = Space.load(event.address.toHexString()) if (space == null) { - space = new Space(SPACE) + return } + let metadataUri = event.params.newMetadataUri + if (metadataUri.startsWith('ipfs://')) { let hash = metadataUri.slice(7) let data = ipfs.cat(hash) diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 9981f9d71..c7e059951 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -2,13 +2,32 @@ specVersion: 0.0.2 schema: file: ./schema.graphql dataSources: + - kind: ethereum + name: SpaceFactory + network: goerli + source: + address: '0xf8d933026b7bD549314A31E6c5b2616c631A9E87' + abi: SpaceFactory + startBlock: 8501860 + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + entities: + - SpaceCreated + abis: + - name: SpaceFactory + file: ./abis/SpaceFactory.json + eventHandlers: + - event: SpaceCreated(address,address,uint32,uint32,uint32,uint256,uint256,(address,bytes)[],address[],address[]) + handler: handleSpaceCreated + file: ./src/mapping.ts +templates: - kind: ethereum name: Space network: goerli source: - address: "0x95DC6f73301356c9909921e21b735601C42fc1a8" abi: Space - startBlock: 8368128 mapping: kind: ethereum/events apiVersion: 0.0.5 From c9e77cb22e6c456cb6850128316351f4a114873b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Tue, 28 Feb 2023 19:35:15 +0100 Subject: [PATCH 07/44] feat: add extra metadata properties to schema (https://github.com/snapshot-labs/sx-subgraph/pull/6) * feat: add extra metadata properties to schema * chore: revert about -> description rename * feat: update properties --- apps/subgraph-api/schema.graphql | 5 +++++ apps/subgraph-api/src/mapping.ts | 21 +++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index e9410ceaa..09cf1349a 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -2,6 +2,11 @@ type Space @entity { id: ID! name: String! about: String! + external_url: String! + github: String! + twitter: String! + discord: String! + wallet: String! controller: Bytes! voting_delay: Int! min_voting_period: Int! diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index c4bb02043..0f46fa3c2 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -165,11 +165,28 @@ export function handleMetadataUriUpdated(event: MetadataUriUpdated): void { if (data !== null) { let value = json.try_fromBytes(data as Bytes) let obj = value.value.toObject() - let title = obj.get('name') + let name = obj.get('name') let description = obj.get('description') + let externalUrl = obj.get('external_url') + let properties = obj.get('properties') - if (title) space.name = title.toString() + if (name) space.name = name.toString() if (description) space.about = description.toString() + if (externalUrl) space.external_url = externalUrl.toString() + + if (properties) { + const propertiesObj = properties.toObject() + + let github = propertiesObj.get('github') + let twitter = propertiesObj.get('twitter') + let discord = propertiesObj.get('discord') + let wallets = propertiesObj.get('wallets') + + if (github) space.github = github.toString() + if (twitter) space.twitter = twitter.toString() + if (discord) space.discord = discord.toString() + if (wallets && wallets.toArray().length > 0) space.wallet = wallets.toArray()[0].toString() + } } } From 34da7fc01f723b71785519e7540090964cc97847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 1 Mar 2023 20:48:28 +0100 Subject: [PATCH 08/44] feat: upgrade to latest deployment (https://github.com/snapshot-labs/sx-subgraph/pull/7) --- .../subgraph-api/abis/IExecutionStrategy.json | 335 ++++++++ apps/subgraph-api/abis/Space.json | 774 +++++++++++++----- apps/subgraph-api/abis/SpaceFactory.json | 57 +- apps/subgraph-api/schema.graphql | 2 + apps/subgraph-api/src/mapping.ts | 127 ++- apps/subgraph-api/subgraph.yaml | 14 +- 6 files changed, 1033 insertions(+), 276 deletions(-) create mode 100644 apps/subgraph-api/abis/IExecutionStrategy.json diff --git a/apps/subgraph-api/abis/IExecutionStrategy.json b/apps/subgraph-api/abis/IExecutionStrategy.json new file mode 100644 index 000000000..6dc9ec039 --- /dev/null +++ b/apps/subgraph-api/abis/IExecutionStrategy.json @@ -0,0 +1,335 @@ +[ + { + "inputs": [], + "name": "ExecutionFailed", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPayload", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum ProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidProposalStatus", + "type": "error" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "votesFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAgainst", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAbstain", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "votesFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAgainst", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAbstain", + "type": "uint256" + } + ], + "name": "getProposalStatus", + "outputs": [ + { + "internalType": "enum ProposalStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + } + ], + "name": "getQuorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStrategyType", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/apps/subgraph-api/abis/Space.json b/apps/subgraph-api/abis/Space.json index 5493b1a0d..8564c8e44 100644 --- a/apps/subgraph-api/abis/Space.json +++ b/apps/subgraph-api/abis/Space.json @@ -1,8 +1,16 @@ [ { "inputs": [ - { "internalType": "address", "name": "_owner", "type": "address" }, - { "internalType": "uint32", "name": "_votingDelay", "type": "uint32" }, + { + "internalType": "address", + "name": "_controller", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_votingDelay", + "type": "uint32" + }, { "internalType": "uint32", "name": "_minVotingDuration", @@ -18,25 +26,49 @@ "name": "_proposalThreshold", "type": "uint256" }, - { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "components": [ - { "internalType": "address", "name": "addy", "type": "address" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], "internalType": "struct Strategy[]", "name": "_votingStrategies", "type": "tuple[]" }, + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + }, { "internalType": "address[]", "name": "_authenticators", "type": "address[]" }, { - "internalType": "address[]", + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", "name": "_executionStrategies", - "type": "address[]" + "type": "tuple[]" } ], "stateMutability": "nonpayable", @@ -44,28 +76,41 @@ }, { "inputs": [ - { "internalType": "address", "name": "auth", "type": "address" } + { + "internalType": "address", + "name": "auth", + "type": "address" + } ], "name": "AuthenticatorNotWhitelisted", "type": "error" }, { "inputs": [ - { "internalType": "uint256", "name": "a", "type": "uint256" }, - { "internalType": "uint256", "name": "b", "type": "uint256" } + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + } ], "name": "DuplicateFound", "type": "error" }, - { "inputs": [], "name": "EmptyArray", "type": "error" }, - { "inputs": [], "name": "ExecutionHashMismatch", "type": "error" }, { - "inputs": [ - { "internalType": "address", "name": "strategy", "type": "address" } - ], + "inputs": [], + "name": "EmptyArray", + "type": "error" + }, + { + "inputs": [], "name": "ExecutionStrategyNotWhitelisted", "type": "error" }, + { + "inputs": [], + "name": "InvalidCaller", + "type": "error" + }, { "inputs": [ { @@ -82,36 +127,94 @@ "name": "InvalidDuration", "type": "error" }, - { "inputs": [], "name": "InvalidProposal", "type": "error" }, - { "inputs": [], "name": "InvalidVotingStrategyAddress", "type": "error" }, { "inputs": [ - { "internalType": "uint256", "name": "index", "type": "uint256" } + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } ], - "name": "InvalidVotingStrategyIndex", + "name": "InvalidExecutionStrategyIndex", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidProposal", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStrategyAddress", "type": "error" }, - { "inputs": [], "name": "MinVotingDurationHasNotElapsed", "type": "error" }, { "inputs": [ - { "internalType": "address", "name": "guard_", "type": "address" } + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } ], - "name": "NotIERC165Compliant", + "name": "InvalidVotingStrategyIndex", + "type": "error" + }, + { + "inputs": [], + "name": "MinVotingDurationHasNotElapsed", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalAlreadyFinalized", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalFinalized", "type": "error" }, - { "inputs": [], "name": "ProposalAlreadyExecuted", "type": "error" }, { "inputs": [ - { "internalType": "uint256", "name": "votingPower", "type": "uint256" } + { + "internalType": "uint256", + "name": "votingPower", + "type": "uint256" + } ], "name": "ProposalThresholdNotReached", "type": "error" }, - { "inputs": [], "name": "QuorumNotReachedYet", "type": "error" }, - { "inputs": [], "name": "UserHasAlreadyVoted", "type": "error" }, - { "inputs": [], "name": "UserHasNoVotingPower", "type": "error" }, - { "inputs": [], "name": "VotingPeriodHasEnded", "type": "error" }, - { "inputs": [], "name": "VotingPeriodHasNotStarted", "type": "error" }, + { + "inputs": [], + "name": "QuorumNotReachedYet", + "type": "error" + }, + { + "inputs": [], + "name": "UserHasAlreadyVoted", + "type": "error" + }, + { + "inputs": [], + "name": "UserHasNoVotingPower", + "type": "error" + }, + { + "inputs": [], + "name": "VotingDelayHasPassed", + "type": "error" + }, + { + "inputs": [], + "name": "VotingPeriodHasEnded", + "type": "error" + }, + { + "inputs": [], + "name": "VotingPeriodHasNotStarted", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -138,46 +241,39 @@ "name": "AuthenticatorsRemoved", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", - "name": "guard", + "name": "newController", "type": "address" } ], - "name": "ChangedGuard", + "name": "ControllerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], "indexed": false, - "internalType": "address[]", + "internalType": "struct Strategy[]", "name": "executionStrategies", - "type": "address[]" + "type": "tuple[]" } ], "name": "ExecutionStrategiesAdded", @@ -188,36 +284,17 @@ "inputs": [ { "indexed": false, - "internalType": "address[]", + "internalType": "uint8[]", "name": "executionStrategies", - "type": "address[]" + "type": "uint8[]" } ], "name": "ExecutionStrategiesRemoved", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "previous", - "type": "uint32" - }, { "indexed": false, "internalType": "uint32", @@ -244,12 +321,6 @@ { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "previous", - "type": "uint32" - }, { "indexed": false, "internalType": "uint32", @@ -279,6 +350,19 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "ProposalCancelled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -291,12 +375,11 @@ { "indexed": false, "internalType": "address", - "name": "proposerAddress", + "name": "author", "type": "address" }, { "components": [ - { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint32", "name": "snapshotTimestamp", @@ -319,18 +402,52 @@ }, { "internalType": "bytes32", - "name": "executionHash", + "name": "executionPayloadHash", "type": "bytes32" }, { - "internalType": "address", + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "address", + "name": "author", "type": "address" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" } ], "indexed": false, @@ -347,7 +464,7 @@ { "indexed": false, "internalType": "bytes", - "name": "executionParams", + "name": "payload", "type": "bytes" } ], @@ -362,26 +479,14 @@ "internalType": "uint256", "name": "proposalId", "type": "uint256" - }, - { - "indexed": false, - "internalType": "enum ProposalOutcome", - "name": "outcome", - "type": "uint8" } ], - "name": "ProposalFinalized", + "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "previous", - "type": "uint256" - }, { "indexed": false, "internalType": "uint256", @@ -398,36 +503,48 @@ { "indexed": false, "internalType": "uint256", - "name": "previous", + "name": "proposalId", "type": "uint256" }, + { + "components": [ + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IndexedStrategy", + "name": "newStrategy", + "type": "tuple" + }, { "indexed": false, - "internalType": "uint256", - "name": "newQuorum", - "type": "uint256" + "internalType": "string", + "name": "newMetadataUri", + "type": "string" } ], - "name": "QuorumUpdated", + "name": "ProposalUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "newQuorum", + "type": "uint256" } ], - "name": "TargetSet", + "name": "QuorumUpdated", "type": "event" }, { @@ -447,7 +564,11 @@ }, { "components": [ - { "internalType": "enum Choice", "name": "choice", "type": "uint8" }, + { + "internalType": "enum Choice", + "name": "choice", + "type": "uint8" + }, { "internalType": "uint256", "name": "votingPower", @@ -458,6 +579,12 @@ "internalType": "struct Vote", "name": "vote", "type": "tuple" + }, + { + "indexed": false, + "internalType": "string", + "name": "voteMetadataUri", + "type": "string" } ], "name": "VoteCreated", @@ -466,12 +593,6 @@ { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "previous", - "type": "uint256" - }, { "indexed": false, "internalType": "uint256", @@ -487,13 +608,27 @@ "inputs": [ { "components": [ - { "internalType": "address", "name": "addy", "type": "address" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], "indexed": false, "internalType": "struct Strategy[]", "name": "votingStrategies", "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" } ], "name": "VotingStrategiesAdded", @@ -528,9 +663,21 @@ { "inputs": [ { - "internalType": "address[]", + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", "name": "_executionStrategies", - "type": "address[]" + "type": "tuple[]" } ], "name": "addExecutionStrategies", @@ -542,12 +689,25 @@ "inputs": [ { "components": [ - { "internalType": "address", "name": "addy", "type": "address" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], "internalType": "struct Strategy[]", "name": "_votingStrategies", "type": "tuple[]" + }, + { + "internalType": "bytes[]", + "name": "votingStrategyMetadata", + "type": "bytes[]" } ], "name": "addVotingStrategies", @@ -555,51 +715,62 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "avatar", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ - { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, - { "internalType": "bytes", "name": "executionParams", "type": "bytes" } + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } ], - "name": "cancelProposal", + "name": "cancel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, - { "internalType": "bytes", "name": "executionParams", "type": "bytes" } + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "executionPayload", + "type": "bytes" + } ], - "name": "finalizeProposal", + "name": "execute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "getGuard", + "name": "getController", "outputs": [ - { "internalType": "address", "name": "_guard", "type": "address" } + { + "internalType": "address", + "name": "", + "type": "address" + } ], "stateMutability": "view", "type": "function" }, { "inputs": [ - { "internalType": "uint256", "name": "proposalId", "type": "uint256" } + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } ], "name": "getProposal", "outputs": [ { "components": [ - { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint32", "name": "snapshotTimestamp", @@ -622,18 +793,52 @@ }, { "internalType": "bytes32", - "name": "executionHash", + "name": "executionPayloadHash", "type": "bytes32" }, { - "internalType": "address", + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "address", + "name": "author", "type": "address" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" } ], "internalType": "struct Proposal", @@ -646,54 +851,109 @@ }, { "inputs": [ - { "internalType": "uint256", "name": "proposalId", "type": "uint256" } + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } ], "name": "getProposalStatus", "outputs": [ - { "internalType": "enum ProposalStatus", "name": "", "type": "uint8" } + { + "internalType": "enum ProposalStatus", + "name": "", + "type": "uint8" + } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "guard", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "voter", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxVotingDuration", - "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minVotingDuration", - "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextProposalId", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proposalThreshold", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "stateMutability": "view", "type": "function" }, @@ -701,23 +961,43 @@ "inputs": [ { "internalType": "address", - "name": "proposerAddress", + "name": "author", "type": "address" }, - { "internalType": "string", "name": "metadataUri", "type": "string" }, + { + "internalType": "string", + "name": "metadataUri", + "type": "string" + }, { "components": [ - { "internalType": "address", "name": "addy", "type": "address" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], - "internalType": "struct Strategy", + "internalType": "struct IndexedStrategy", "name": "executionStrategy", "type": "tuple" }, { "components": [ - { "internalType": "uint8", "name": "index", "type": "uint8" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], "internalType": "struct IndexedStrategy[]", "name": "userVotingStrategies", @@ -730,9 +1010,21 @@ "type": "function" }, { - "inputs": [], + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], "name": "quorum", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], "stateMutability": "view", "type": "function" }, @@ -752,9 +1044,9 @@ { "inputs": [ { - "internalType": "address[]", + "internalType": "uint8[]", "name": "_executionStrategies", - "type": "address[]" + "type": "uint8[]" } ], "name": "removeExecutionStrategies", @@ -766,7 +1058,7 @@ "inputs": [ { "internalType": "uint8[]", - "name": "indicesToRemove", + "name": "_votingStrategyIndices", "type": "uint8[]" } ], @@ -784,18 +1076,13 @@ }, { "inputs": [ - { "internalType": "address", "name": "_avatar", "type": "address" } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_guard", "type": "address" } + { + "internalType": "address", + "name": "_controller", + "type": "address" + } ], - "name": "setGuard", + "name": "setController", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -815,7 +1102,11 @@ }, { "inputs": [ - { "internalType": "string", "name": "_metadataUri", "type": "string" } + { + "internalType": "string", + "name": "_metadataUri", + "type": "string" + } ], "name": "setMetadataUri", "outputs": [], @@ -837,7 +1128,11 @@ }, { "inputs": [ - { "internalType": "uint256", "name": "_threshold", "type": "uint256" } + { + "internalType": "uint256", + "name": "_proposalThreshold", + "type": "uint256" + } ], "name": "setProposalThreshold", "outputs": [], @@ -846,69 +1141,108 @@ }, { "inputs": [ - { "internalType": "uint256", "name": "_quorum", "type": "uint256" } - ], - "name": "setQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_target", "type": "address" } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes", "name": "initializeParams", "type": "bytes" } + { + "internalType": "uint32", + "name": "_votingDelay", + "type": "uint32" + } ], - "name": "setUp", + "name": "setVotingDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { "internalType": "uint32", "name": "_votingDelay", "type": "uint32" } + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } ], - "name": "setVotingDelay", + "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "target", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ - { "internalType": "address", "name": "newOwner", "type": "address" } + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct IndexedStrategy", + "name": "executionStrategy", + "type": "tuple" + }, + { + "internalType": "string", + "name": "metadataUri", + "type": "string" + } ], - "name": "transferOwnership", + "name": "updateProposal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { "internalType": "address", "name": "voterAddress", "type": "address" }, - { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, - { "internalType": "enum Choice", "name": "choice", "type": "uint8" }, + { + "internalType": "address", + "name": "voterAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "enum Choice", + "name": "choice", + "type": "uint8" + }, { "components": [ - { "internalType": "uint8", "name": "index", "type": "uint8" }, - { "internalType": "bytes", "name": "params", "type": "bytes" } + { + "internalType": "uint8", + "name": "index", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } ], "internalType": "struct IndexedStrategy[]", "name": "userVotingStrategies", "type": "tuple[]" + }, + { + "internalType": "string", + "name": "voteMetadataUri", + "type": "string" } ], "name": "vote", @@ -919,7 +1253,13 @@ { "inputs": [], "name": "votingDelay", - "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], "stateMutability": "view", "type": "function" } diff --git a/apps/subgraph-api/abis/SpaceFactory.json b/apps/subgraph-api/abis/SpaceFactory.json index 961698b54..9e2707421 100644 --- a/apps/subgraph-api/abis/SpaceFactory.json +++ b/apps/subgraph-api/abis/SpaceFactory.json @@ -45,9 +45,9 @@ }, { "indexed": false, - "internalType": "uint256", - "name": "quorum", - "type": "uint256" + "internalType": "string", + "name": "metadataUri", + "type": "string" }, { "components": [ @@ -67,6 +67,12 @@ "name": "votingStrategies", "type": "tuple[]" }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "votingStrategyMetadata", + "type": "bytes[]" + }, { "indexed": false, "internalType": "address[]", @@ -74,10 +80,22 @@ "type": "address[]" }, { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], "indexed": false, - "internalType": "address[]", - "name": "executionStrategiesAddresses", - "type": "address[]" + "internalType": "struct Strategy[]", + "name": "executionStrategies", + "type": "tuple[]" } ], "name": "SpaceCreated", @@ -111,9 +129,9 @@ "type": "uint256" }, { - "internalType": "uint256", - "name": "quorum", - "type": "uint256" + "internalType": "string", + "name": "metadataUri", + "type": "string" }, { "components": [ @@ -132,15 +150,32 @@ "name": "votingStrategies", "type": "tuple[]" }, + { + "internalType": "bytes[]", + "name": "votingStrategyMetadata", + "type": "bytes[]" + }, { "internalType": "address[]", "name": "authenticators", "type": "address[]" }, { - "internalType": "address[]", + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", "name": "executionStrategies", - "type": "address[]" + "type": "tuple[]" }, { "internalType": "bytes32", diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 09cf1349a..10e457881 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -17,6 +17,7 @@ type Space @entity { strategies_params: [String!]! authenticators: [Bytes!]! executors: [Bytes!]! + executors_types: [String!]! proposal_count: Int! vote_count: Int! created: Int! @@ -48,6 +49,7 @@ type Proposal @entity { created: Int! tx: Bytes! vote_count: Int! + executed: Boolean! } type Vote @entity { diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 0f46fa3c2..5d8930a13 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,10 +1,49 @@ -import { BigDecimal, Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { Address, BigDecimal, BigInt, Bytes, ipfs, json } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' import { SpaceCreated } from '../generated/SpaceFactory/SpaceFactory' -import { ProposalCreated, VoteCreated, MetadataUriUpdated } from '../generated/Space/Space' +import { IExecutionStrategy } from '../generated/SpaceFactory/IExecutionStrategy' +import { + Space as SpaceContract, + ProposalCreated, + ProposalExecuted, + VoteCreated, + MetadataUriUpdated, +} from '../generated/templates/Space/Space' import { Space as SpaceTemplate } from '../generated/templates' import { Space, Proposal, Vote, User } from '../generated/schema' +function updateSpaceMetadata(space: Space, metadataUri: string): void { + if (!metadataUri.startsWith('ipfs://')) return + + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let name = obj.get('name') + let description = obj.get('description') + let externalUrl = obj.get('external_url') + let properties = obj.get('properties') + + if (name) space.name = name.toString() + if (description) space.about = description.toString() + if (externalUrl) space.external_url = externalUrl.toString() + + if (properties) { + const propertiesObj = properties.toObject() + + let github = propertiesObj.get('github') + let twitter = propertiesObj.get('twitter') + let discord = propertiesObj.get('discord') + let wallets = propertiesObj.get('wallets') + + if (github) space.github = github.toString() + if (twitter) space.twitter = twitter.toString() + if (discord) space.discord = discord.toString() + if (wallets && wallets.toArray().length > 0) space.wallet = wallets.toArray()[0].toString() + } +} + export function handleSpaceCreated(event: SpaceCreated): void { let space = new Space(event.params.space.toHexString()) space.name = 'Fellow DAO ' + event.params.space.toHexString().slice(0, 6) @@ -14,17 +53,30 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.min_voting_period = event.params.minVotingDuration.toI32() space.max_voting_period = event.params.maxVotingDuration.toI32() space.proposal_threshold = event.params.proposalThreshold.toBigDecimal() - space.quorum = event.params.quorum.toBigDecimal() + space.quorum = new BigDecimal(new BigInt(0)) space.strategies = event.params.votingStrategies.map((strategy) => strategy.addy) space.strategies_params = event.params.votingStrategies.map((strategy) => strategy.params.toHexString() ) space.authenticators = event.params.authenticators.map((address) => address) - space.executors = event.params.executionStrategiesAddresses.map((address) => address) + space.executors = event.params.executionStrategies.map((strategy) => strategy.addy) space.proposal_count = 0 space.vote_count = 0 space.created = event.block.timestamp.toI32() space.tx = event.transaction.hash + + space.executors_types = event.params.executionStrategies.map((strategy) => { + let executionStrategyContract = IExecutionStrategy.bind( + Address.fromString(strategy.addy.toHexString()) + ) + + let typeResult = executionStrategyContract.try_getStrategyType() + if (typeResult.reverted) return '' + return typeResult.value + }) + + updateSpaceMetadata(space, event.params.metadataUri) + space.save() SpaceTemplate.create(event.params.space) @@ -41,8 +93,8 @@ export function handleProposalCreated(event: ProposalCreated): void { let proposal = new Proposal(`${space.id}/${event.params.nextProposalId}`) proposal.proposal_id = event.params.nextProposalId.toI32() proposal.space = space.id - proposal.author = event.params.proposerAddress.toHexString() - proposal.execution_hash = event.params.proposal.executionHash.toHexString() + proposal.author = event.params.author.toHexString() + proposal.execution_hash = event.params.proposal.executionPayloadHash.toHexString() proposal.metadata_uri = metadataUri proposal.title = '' proposal.body = '' @@ -58,11 +110,16 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.scores_2 = BigDecimal.fromString('0') proposal.scores_3 = BigDecimal.fromString('0') proposal.scores_total = BigDecimal.fromString('0') - proposal.quorum = event.params.proposal.quorum.toBigDecimal() proposal.created = event.block.timestamp.toI32() proposal.tx = event.transaction.hash proposal.vote_count = 0 + let spaceContract = SpaceContract.bind(Address.fromString(space.id)) + let quorumResult = spaceContract.try_quorum(event.params.nextProposalId) + if (!quorumResult.reverted) { + proposal.quorum = new BigDecimal(quorumResult.value) + } + if (metadataUri.startsWith('ipfs://')) { let hash = metadataUri.slice(7) let data = ipfs.cat(hash) @@ -92,9 +149,9 @@ export function handleProposalCreated(event: ProposalCreated): void { space.proposal_count += 1 space.save() - let user = User.load(event.params.proposerAddress.toHexString()) + let user = User.load(event.params.author.toHexString()) if (user == null) { - user = new User(event.params.proposerAddress.toHexString()) + user = new User(event.params.author.toHexString()) user.proposal_count = 0 user.vote_count = 0 user.created = event.block.timestamp.toI32() @@ -104,13 +161,29 @@ export function handleProposalCreated(event: ProposalCreated): void { user.save() } +export function handleProposalExecuted(event: ProposalExecuted): void { + let proposal = Proposal.load(`${event.address.toHexString()}/${event.params.proposalId}`) + if (proposal == null) { + return + } + + proposal.executed = true + + proposal.save() +} + export function handleVoteCreated(event: VoteCreated): void { let space = Space.load(event.address.toHexString()) if (space == null) { return } - let choice = event.params.vote.choice + 1 + // Swap For/Against + let choice = event.params.vote.choice + if (event.params.vote.choice === 0) choice = 2 + if (event.params.vote.choice === 1) choice = 1 + if (event.params.vote.choice === 2) choice = 3 + let vp = event.params.vote.votingPower.toBigDecimal() let vote = new Vote( @@ -156,39 +229,7 @@ export function handleMetadataUriUpdated(event: MetadataUriUpdated): void { return } - let metadataUri = event.params.newMetadataUri - - if (metadataUri.startsWith('ipfs://')) { - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - if (data !== null) { - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let name = obj.get('name') - let description = obj.get('description') - let externalUrl = obj.get('external_url') - let properties = obj.get('properties') - - if (name) space.name = name.toString() - if (description) space.about = description.toString() - if (externalUrl) space.external_url = externalUrl.toString() - - if (properties) { - const propertiesObj = properties.toObject() - - let github = propertiesObj.get('github') - let twitter = propertiesObj.get('twitter') - let discord = propertiesObj.get('discord') - let wallets = propertiesObj.get('wallets') - - if (github) space.github = github.toString() - if (twitter) space.twitter = twitter.toString() - if (discord) space.discord = discord.toString() - if (wallets && wallets.toArray().length > 0) space.wallet = wallets.toArray()[0].toString() - } - } - } + updateSpaceMetadata(space, event.params.newMetadataUri) space.save() } diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index c7e059951..9bf12d6d5 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -6,9 +6,9 @@ dataSources: name: SpaceFactory network: goerli source: - address: '0xf8d933026b7bD549314A31E6c5b2616c631A9E87' + address: '0xfC38E50eA8fc64Fb68B9fece13b16404B8D43864' abi: SpaceFactory - startBlock: 8501860 + startBlock: 8577681 mapping: kind: ethereum/events apiVersion: 0.0.5 @@ -18,8 +18,10 @@ dataSources: abis: - name: SpaceFactory file: ./abis/SpaceFactory.json + - name: IExecutionStrategy + file: ./abis/IExecutionStrategy.json eventHandlers: - - event: SpaceCreated(address,address,uint32,uint32,uint32,uint256,uint256,(address,bytes)[],address[],address[]) + - event: SpaceCreated(address,address,uint32,uint32,uint32,uint256,string,(address,bytes)[],bytes[],address[],(address,bytes)[]) handler: handleSpaceCreated file: ./src/mapping.ts templates: @@ -40,9 +42,11 @@ templates: - name: Space file: ./abis/Space.json eventHandlers: - - event: ProposalCreated(uint256,address,(uint256,uint32,uint32,uint32,uint32,bytes32,address,uint8),string,bytes) + - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,(address,bytes),address,uint8,(address,bytes)[]),string,bytes) handler: handleProposalCreated - - event: VoteCreated(uint256,address,(uint8,uint256)) + - event: ProposalExecuted(uint256) + handler: handleProposalExecuted + - event: VoteCreated(uint256,address,(uint8,uint256),string) handler: handleVoteCreated - event: MetadataUriUpdated(string) handler: handleMetadataUriUpdated From 2aa646f16cfce631cc4f8b70a8b38c392aad9e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 9 Mar 2023 11:34:19 +0100 Subject: [PATCH 09/44] feat: index strategies_metadata (https://github.com/snapshot-labs/sx-subgraph/pull/9) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 10e457881..1516cc358 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -15,6 +15,7 @@ type Space @entity { quorum: BigDecimal! strategies: [Bytes!]! strategies_params: [String!]! + strategies_metadata: [String!]! authenticators: [Bytes!]! executors: [Bytes!]! executors_types: [String!]! diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 5d8930a13..773956538 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -58,6 +58,9 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.strategies_params = event.params.votingStrategies.map((strategy) => strategy.params.toHexString() ) + space.strategies_metadata = event.params.votingStrategyMetadata.map((metadata) => + metadata.toHexString() + ) space.authenticators = event.params.authenticators.map((address) => address) space.executors = event.params.executionStrategies.map((strategy) => strategy.addy) space.proposal_count = 0 From 8e6d496d28d15b512a40b1196c861a5fb7cf1f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 9 Mar 2023 11:34:31 +0100 Subject: [PATCH 10/44] feat: clear properties if it's missing in metadata file (https://github.com/snapshot-labs/sx-subgraph/pull/10) --- apps/subgraph-api/src/mapping.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 773956538..d6492ed7c 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -26,8 +26,8 @@ function updateSpaceMetadata(space: Space, metadataUri: string): void { let properties = obj.get('properties') if (name) space.name = name.toString() - if (description) space.about = description.toString() - if (externalUrl) space.external_url = externalUrl.toString() + space.about = description ? description.toString() : '' + space.external_url = externalUrl ? externalUrl.toString() : '' if (properties) { const propertiesObj = properties.toObject() @@ -37,10 +37,15 @@ function updateSpaceMetadata(space: Space, metadataUri: string): void { let discord = propertiesObj.get('discord') let wallets = propertiesObj.get('wallets') - if (github) space.github = github.toString() - if (twitter) space.twitter = twitter.toString() - if (discord) space.discord = discord.toString() - if (wallets && wallets.toArray().length > 0) space.wallet = wallets.toArray()[0].toString() + space.github = github ? github.toString() : '' + space.twitter = twitter ? twitter.toString() : '' + space.discord = discord ? discord.toString() : '' + space.wallet = wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' + } else { + space.github = '' + space.twitter = '' + space.discord = '' + space.wallet = '' } } From 7bd05696830e53b1bf0797407dd8097738ad9795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 22 Mar 2023 18:24:10 +0100 Subject: [PATCH 11/44] feat: add v0.4.0 compatibility (https://github.com/snapshot-labs/sx-subgraph/pull/11) * feat: add v0.4.0 compatibility * refactor: use contract to read quorum --- ...tegy.json => AvatarExecutionStrategy.json} | 355 ++++++--- apps/subgraph-api/abis/ProxyFactory.json | 83 +++ apps/subgraph-api/abis/Space.json | 700 +++++++++++------- apps/subgraph-api/abis/SpaceFactory.json | 191 ----- apps/subgraph-api/schema.graphql | 8 + apps/subgraph-api/src/helpers.ts | 57 ++ apps/subgraph-api/src/mapping.ts | 115 ++- apps/subgraph-api/subgraph.yaml | 28 +- 8 files changed, 883 insertions(+), 654 deletions(-) rename apps/subgraph-api/abis/{IExecutionStrategy.json => AvatarExecutionStrategy.json} (52%) create mode 100644 apps/subgraph-api/abis/ProxyFactory.json delete mode 100644 apps/subgraph-api/abis/SpaceFactory.json create mode 100644 apps/subgraph-api/src/helpers.ts diff --git a/apps/subgraph-api/abis/IExecutionStrategy.json b/apps/subgraph-api/abis/AvatarExecutionStrategy.json similarity index 52% rename from apps/subgraph-api/abis/IExecutionStrategy.json rename to apps/subgraph-api/abis/AvatarExecutionStrategy.json index 6dc9ec039..795089ebb 100644 --- a/apps/subgraph-api/abis/IExecutionStrategy.json +++ b/apps/subgraph-api/abis/AvatarExecutionStrategy.json @@ -1,4 +1,30 @@ [ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_spaces", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "_quorum", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, { "inputs": [], "name": "ExecutionFailed", @@ -20,6 +46,133 @@ "name": "InvalidProposalStatus", "type": "error" }, + { + "inputs": [], + "name": "InvalidSpace", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_spaces", + "type": "address[]" + } + ], + "name": "AvatarExecutionStrategySetUp", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "SpaceDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "SpaceEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newTarget", + "type": "address" + } + ], + "name": "TargetSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "disableSpace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "enableSpace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -50,21 +203,9 @@ "type": "bytes32" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", + "internalType": "contract IExecutionStrategy", "name": "executionStrategy", - "type": "tuple" + "type": "address" }, { "internalType": "address", @@ -154,21 +295,9 @@ "type": "bytes32" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", + "internalType": "contract IExecutionStrategy", "name": "executionStrategy", - "type": "tuple" + "type": "address" }, { "internalType": "address", @@ -229,86 +358,54 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getStrategyType", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { - "components": [ - { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "startTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "maxEndTimestamp", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", - "name": "executionStrategy", - "type": "tuple" - }, - { - "internalType": "address", - "name": "author", - "type": "address" - }, - { - "internalType": "enum FinalizationStatus", - "name": "finalizationStatus", - "type": "uint8" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" - } - ], - "internalType": "struct Proposal", - "name": "proposal", - "type": "tuple" + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "isSpaceEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "getQuorum", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quorum", "outputs": [ { "internalType": "uint256", @@ -321,15 +418,61 @@ }, { "inputs": [], - "name": "getStrategyType", + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "setTarget", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initParams", + "type": "bytes" + } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "target", "outputs": [ { - "internalType": "string", + "internalType": "address", "name": "", - "type": "string" + "type": "address" } ], "stateMutability": "view", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] diff --git a/apps/subgraph-api/abis/ProxyFactory.json b/apps/subgraph-api/abis/ProxyFactory.json new file mode 100644 index 000000000..8189145a3 --- /dev/null +++ b/apps/subgraph-api/abis/ProxyFactory.json @@ -0,0 +1,83 @@ +[ + { + "inputs": [], + "name": "FailedInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "SaltAlreadyUsed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "proxy", + "type": "address" + } + ], + "name": "ProxyDeployed", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initializer", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "deployProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "predictProxyAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/apps/subgraph-api/abis/Space.json b/apps/subgraph-api/abis/Space.json index 8564c8e44..6d82c91e6 100644 --- a/apps/subgraph-api/abis/Space.json +++ b/apps/subgraph-api/abis/Space.json @@ -1,79 +1,4 @@ [ - { - "inputs": [ - { - "internalType": "address", - "name": "_controller", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_votingDelay", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_minVotingDuration", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_maxVotingDuration", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "_proposalThreshold", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "_votingStrategies", - "type": "tuple[]" - }, - { - "internalType": "bytes[]", - "name": "", - "type": "bytes[]" - }, - { - "internalType": "address[]", - "name": "_authenticators", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "_executionStrategies", - "type": "tuple[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, { "inputs": [ { @@ -106,6 +31,11 @@ "name": "ExecutionStrategyNotWhitelisted", "type": "error" }, + { + "inputs": [], + "name": "FailedToPassProposalValidation", + "type": "error" + }, { "inputs": [], "name": "InvalidCaller", @@ -156,7 +86,7 @@ "type": "uint256" } ], - "name": "InvalidVotingStrategyIndex", + "name": "InvalidStrategyIndex", "type": "error" }, { @@ -174,17 +104,6 @@ "name": "ProposalFinalized", "type": "error" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "votingPower", - "type": "uint256" - } - ], - "name": "ProposalThresholdNotReached", - "type": "error" - }, { "inputs": [], "name": "QuorumNotReachedYet", @@ -215,13 +134,32 @@ "name": "VotingPeriodHasNotStarted", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", - "name": "authenticators", + "name": "newAuthenticators", "type": "address[]" } ], @@ -245,13 +183,13 @@ "anonymous": false, "inputs": [ { - "indexed": false, + "indexed": true, "internalType": "address", - "name": "newController", + "name": "beacon", "type": "address" } ], - "name": "ControllerUpdated", + "name": "BeaconUpgraded", "type": "event" }, { @@ -272,8 +210,14 @@ ], "indexed": false, "internalType": "struct Strategy[]", - "name": "executionStrategies", + "name": "newExecutionStrategies", "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "newExecutionStrategyMetadataURIs", + "type": "string[]" } ], "name": "ExecutionStrategiesAdded", @@ -285,13 +229,26 @@ { "indexed": false, "internalType": "uint8[]", - "name": "executionStrategies", + "name": "executionStrategyIndices", "type": "uint8[]" } ], "name": "ExecutionStrategiesRemoved", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -311,11 +268,11 @@ { "indexed": false, "internalType": "string", - "name": "newMetadataUri", + "name": "newMetadataURI", "type": "string" } ], - "name": "MetadataUriUpdated", + "name": "MetadataURIUpdated", "type": "event" }, { @@ -406,21 +363,9 @@ "type": "bytes32" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", + "internalType": "contract IExecutionStrategy", "name": "executionStrategy", - "type": "tuple" + "type": "address" }, { "internalType": "address", @@ -490,11 +435,60 @@ { "indexed": false, "internalType": "uint256", - "name": "newProposalThreshold", + "name": "proposalId", "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct Strategy", + "name": "newExecutionStrategy", + "type": "tuple" + }, + { + "indexed": false, + "internalType": "string", + "name": "newMetadataURI", + "type": "string" + } + ], + "name": "ProposalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct Strategy", + "name": "newProposalValidationStrategy", + "type": "tuple" } ], - "name": "ProposalThresholdUpdated", + "name": "ProposalValidationStrategyUpdated", "type": "event" }, { @@ -503,15 +497,52 @@ { "indexed": false, "internalType": "uint256", - "name": "proposalId", + "name": "newQuorum", "type": "uint256" + } + ], + "name": "QuorumUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" }, { "components": [ { - "internalType": "uint8", - "name": "index", - "type": "uint8" + "internalType": "address", + "name": "addy", + "type": "address" }, { "internalType": "bytes", @@ -520,18 +551,61 @@ } ], "indexed": false, - "internalType": "struct IndexedStrategy", - "name": "newStrategy", + "internalType": "struct Strategy", + "name": "proposalValidationStrategy", "type": "tuple" }, { "indexed": false, "internalType": "string", - "name": "newMetadataUri", + "name": "metadataURI", "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "string[]", + "name": "votingStrategyMetadataURIs", + "type": "string[]" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" } ], - "name": "ProposalUpdated", + "name": "SpaceCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", "type": "event" }, { @@ -540,11 +614,29 @@ { "indexed": false, "internalType": "uint256", - "name": "newQuorum", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "voterAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "enum Choice", + "name": "choice", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "votingPower", "type": "uint256" } ], - "name": "QuorumUpdated", + "name": "VoteCast", "type": "event" }, { @@ -563,31 +655,25 @@ "type": "address" }, { - "components": [ - { - "internalType": "enum Choice", - "name": "choice", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "votingPower", - "type": "uint256" - } - ], "indexed": false, - "internalType": "struct Vote", - "name": "vote", - "type": "tuple" + "internalType": "enum Choice", + "name": "choice", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "votingPower", + "type": "uint256" }, { "indexed": false, "internalType": "string", - "name": "voteMetadataUri", + "name": "metadataUri", "type": "string" } ], - "name": "VoteCreated", + "name": "VoteCastWithMetadata", "type": "event" }, { @@ -621,14 +707,14 @@ ], "indexed": false, "internalType": "struct Strategy[]", - "name": "votingStrategies", + "name": "newVotingStrategies", "type": "tuple[]" }, { "indexed": false, - "internalType": "bytes[]", - "name": "data", - "type": "bytes[]" + "internalType": "string[]", + "name": "newVotingStrategyMetadataURIs", + "type": "string[]" } ], "name": "VotingStrategiesAdded", @@ -640,47 +726,22 @@ { "indexed": false, "internalType": "uint8[]", - "name": "indices", + "name": "votingStrategyIndices", "type": "uint8[]" } - ], - "name": "VotingStrategiesRemoved", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_authenticators", - "type": "address[]" - } - ], - "name": "addAuthenticators", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + ], + "name": "VotingStrategiesRemoved", + "type": "event" }, { "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "_executionStrategies", - "type": "tuple[]" + "internalType": "address[]", + "name": "_authenticators", + "type": "address[]" } ], - "name": "addExecutionStrategies", + "name": "addAuthenticators", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -705,9 +766,9 @@ "type": "tuple[]" }, { - "internalType": "bytes[]", - "name": "votingStrategyMetadata", - "type": "bytes[]" + "internalType": "string[]", + "name": "votingStrategyMetadataURIs", + "type": "string[]" } ], "name": "addVotingStrategies", @@ -746,19 +807,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "getController", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -797,21 +845,9 @@ "type": "bytes32" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", + "internalType": "contract IExecutionStrategy", "name": "executionStrategy", - "type": "tuple" + "type": "address" }, { "internalType": "address", @@ -892,6 +928,83 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_votingDelay", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_minVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "_maxVotingDuration", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "_proposalValidationStrategy", + "type": "tuple" + }, + { + "internalType": "string", + "name": "_metadataURI", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "_votingStrategies", + "type": "tuple[]" + }, + { + "internalType": "string[]", + "name": "_votingStrategyMetadataURIs", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "_authenticators", + "type": "address[]" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "maxVotingDuration", @@ -957,6 +1070,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "proposalValidationStrategy", + "outputs": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -966,15 +1097,15 @@ }, { "internalType": "string", - "name": "metadataUri", + "name": "metadataURI", "type": "string" }, { "components": [ { - "internalType": "uint8", - "name": "index", - "type": "uint8" + "internalType": "address", + "name": "addy", + "type": "address" }, { "internalType": "bytes", @@ -982,26 +1113,14 @@ "type": "bytes" } ], - "internalType": "struct IndexedStrategy", + "internalType": "struct Strategy", "name": "executionStrategy", "type": "tuple" }, { - "components": [ - { - "internalType": "uint8", - "name": "index", - "type": "uint8" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct IndexedStrategy[]", - "name": "userVotingStrategies", - "type": "tuple[]" + "internalType": "bytes", + "name": "userParams", + "type": "bytes" } ], "name": "propose", @@ -1010,19 +1129,13 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "quorum", + "inputs": [], + "name": "proxiableUUID", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ], "stateMutability": "view", @@ -1041,19 +1154,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint8[]", - "name": "_executionStrategies", - "type": "uint8[]" - } - ], - "name": "removeExecutionStrategies", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1074,19 +1174,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_controller", - "type": "address" - } - ], - "name": "setController", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1104,11 +1191,11 @@ "inputs": [ { "internalType": "string", - "name": "_metadataUri", + "name": "_metadataURI", "type": "string" } ], - "name": "setMetadataUri", + "name": "setMetadataURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1129,12 +1216,24 @@ { "inputs": [ { - "internalType": "uint256", - "name": "_proposalThreshold", - "type": "uint256" + "components": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "_proposalValidationStrategy", + "type": "tuple" } ], - "name": "setProposalThreshold", + "name": "setProposalValidationStrategy", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1180,9 +1279,9 @@ { "components": [ { - "internalType": "uint8", - "name": "index", - "type": "uint8" + "internalType": "address", + "name": "addy", + "type": "address" }, { "internalType": "bytes", @@ -1190,13 +1289,13 @@ "type": "bytes" } ], - "internalType": "struct IndexedStrategy", + "internalType": "struct Strategy", "name": "executionStrategy", "type": "tuple" }, { "internalType": "string", - "name": "metadataUri", + "name": "metadataURI", "type": "string" } ], @@ -1205,6 +1304,37 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, { "inputs": [ { @@ -1241,7 +1371,7 @@ }, { "internalType": "string", - "name": "voteMetadataUri", + "name": "metadataUri", "type": "string" } ], @@ -1262,5 +1392,29 @@ ], "stateMutability": "view", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "votingStrategies", + "outputs": [ + { + "internalType": "address", + "name": "addy", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" } ] diff --git a/apps/subgraph-api/abis/SpaceFactory.json b/apps/subgraph-api/abis/SpaceFactory.json deleted file mode 100644 index 9e2707421..000000000 --- a/apps/subgraph-api/abis/SpaceFactory.json +++ /dev/null @@ -1,191 +0,0 @@ -[ - { - "inputs": [], - "name": "SpaceCreationFailed", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "space", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "votingDelay", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "minVotingDuration", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "maxVotingDuration", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "proposalThreshold", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "metadataUri", - "type": "string" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "votingStrategyMetadata", - "type": "bytes[]" - }, - { - "indexed": false, - "internalType": "address[]", - "name": "authenticators", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Strategy[]", - "name": "executionStrategies", - "type": "tuple[]" - } - ], - "name": "SpaceCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "controller", - "type": "address" - }, - { - "internalType": "uint32", - "name": "votingDelay", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "minVotingDuration", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "maxVotingDuration", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "proposalThreshold", - "type": "uint256" - }, - { - "internalType": "string", - "name": "metadataUri", - "type": "string" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" - }, - { - "internalType": "bytes[]", - "name": "votingStrategyMetadata", - "type": "bytes[]" - }, - { - "internalType": "address[]", - "name": "authenticators", - "type": "address[]" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "executionStrategies", - "type": "tuple[]" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "createSpace", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 1516cc358..963cddfe4 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -17,6 +17,8 @@ type Space @entity { strategies_params: [String!]! strategies_metadata: [String!]! authenticators: [Bytes!]! + validation_strategy: Bytes! + validation_strategy_params: String! executors: [Bytes!]! executors_types: [String!]! proposal_count: Int! @@ -25,6 +27,12 @@ type Space @entity { tx: Bytes! } +type ExecutionStrategy @entity { + id: ID! + type: String! + quorum: BigDecimal! +} + type Proposal @entity { id: ID! proposal_id: Int! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts new file mode 100644 index 000000000..2ab2f5f21 --- /dev/null +++ b/apps/subgraph-api/src/helpers.ts @@ -0,0 +1,57 @@ +import { Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { Space, ExecutionStrategy } from '../generated/schema' + +export function updateSpaceMetadata(space: Space, metadataUri: string): void { + if (!metadataUri.startsWith('ipfs://')) return + + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let name = obj.get('name') + let description = obj.get('description') + let externalUrl = obj.get('external_url') + let properties = obj.get('properties') + + if (name) space.name = name.toString() + space.about = description ? description.toString() : '' + space.external_url = externalUrl ? externalUrl.toString() : '' + + if (properties) { + const propertiesObj = properties.toObject() + + let github = propertiesObj.get('github') + let twitter = propertiesObj.get('twitter') + let discord = propertiesObj.get('discord') + let wallets = propertiesObj.get('wallets') + let executionStrategies = propertiesObj.get('executionStrategies') + + space.github = github ? github.toString() : '' + space.twitter = twitter ? twitter.toString() : '' + space.discord = discord ? discord.toString() : '' + space.wallet = wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' + + if (executionStrategies) { + space.executors = executionStrategies + .toArray() + .map((strategy) => Bytes.fromByteArray(Bytes.fromHexString(strategy.toString()))) + space.executors_types = space.executors.map((executor) => { + let executionStrategy = ExecutionStrategy.load(executor.toHexString()) + if (executionStrategy === null) return 'unknown' + + return executionStrategy.type + }) + } else { + space.executors = [] + space.executors_types = [] + } + } else { + space.github = '' + space.twitter = '' + space.discord = '' + space.wallet = '' + space.executors = [] + space.executors_types = [] + } +} diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index d6492ed7c..c58a180f9 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,51 +1,34 @@ import { Address, BigDecimal, BigInt, Bytes, ipfs, json } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' -import { SpaceCreated } from '../generated/SpaceFactory/SpaceFactory' -import { IExecutionStrategy } from '../generated/SpaceFactory/IExecutionStrategy' +import { ProxyDeployed } from '../generated/ProxyFactory/ProxyFactory' +import { AvatarExecutionStrategy } from '../generated/ProxyFactory/AvatarExecutionStrategy' import { - Space as SpaceContract, + SpaceCreated, ProposalCreated, ProposalExecuted, - VoteCreated, - MetadataUriUpdated, + VoteCast, + MetadataURIUpdated, } from '../generated/templates/Space/Space' import { Space as SpaceTemplate } from '../generated/templates' -import { Space, Proposal, Vote, User } from '../generated/schema' - -function updateSpaceMetadata(space: Space, metadataUri: string): void { - if (!metadataUri.startsWith('ipfs://')) return - - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let name = obj.get('name') - let description = obj.get('description') - let externalUrl = obj.get('external_url') - let properties = obj.get('properties') - - if (name) space.name = name.toString() - space.about = description ? description.toString() : '' - space.external_url = externalUrl ? externalUrl.toString() : '' - - if (properties) { - const propertiesObj = properties.toObject() - - let github = propertiesObj.get('github') - let twitter = propertiesObj.get('twitter') - let discord = propertiesObj.get('discord') - let wallets = propertiesObj.get('wallets') - - space.github = github ? github.toString() : '' - space.twitter = twitter ? twitter.toString() : '' - space.discord = discord ? discord.toString() : '' - space.wallet = wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' - } else { - space.github = '' - space.twitter = '' - space.discord = '' - space.wallet = '' +import { Space, ExecutionStrategy, Proposal, Vote, User } from '../generated/schema' +import { updateSpaceMetadata } from './helpers' + +const MASTER_SPACE = Address.fromString('0xB5E5c8a9A999Da1AABb2b45DC9F72F2be042e204') +const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x6F12C67cAd3e566B60A6AE0146761110F1Ea6Eb2') + +export function handleProxyDeployed(event: ProxyDeployed): void { + if (event.params.implementation.equals(MASTER_SPACE)) { + SpaceTemplate.create(event.params.proxy) + } else if (event.params.implementation.equals(MASTER_SIMPLE_QUORUM_AVATAR)) { + let executionStrategyContract = AvatarExecutionStrategy.bind(event.params.proxy) + let typeResult = executionStrategyContract.try_getStrategyType() + let quorumResult = executionStrategyContract.try_quorum() + if (typeResult.reverted || quorumResult.reverted) return + + let executionStrategy = new ExecutionStrategy(event.params.proxy.toHexString()) + executionStrategy.type = typeResult.value + executionStrategy.quorum = new BigDecimal(quorumResult.value) + executionStrategy.save() } } @@ -57,37 +40,26 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.voting_delay = event.params.votingDelay.toI32() space.min_voting_period = event.params.minVotingDuration.toI32() space.max_voting_period = event.params.maxVotingDuration.toI32() - space.proposal_threshold = event.params.proposalThreshold.toBigDecimal() + space.proposal_threshold = new BigDecimal(new BigInt(0)) space.quorum = new BigDecimal(new BigInt(0)) space.strategies = event.params.votingStrategies.map((strategy) => strategy.addy) space.strategies_params = event.params.votingStrategies.map((strategy) => strategy.params.toHexString() ) - space.strategies_metadata = event.params.votingStrategyMetadata.map((metadata) => - metadata.toHexString() - ) + space.validation_strategy = event.params.proposalValidationStrategy.addy + space.validation_strategy_params = event.params.proposalValidationStrategy.params.toHexString() + + // NOTE: for now we are still using it as raw data, instead of URI + space.strategies_metadata = event.params.votingStrategyMetadataURIs space.authenticators = event.params.authenticators.map((address) => address) - space.executors = event.params.executionStrategies.map((strategy) => strategy.addy) space.proposal_count = 0 space.vote_count = 0 space.created = event.block.timestamp.toI32() space.tx = event.transaction.hash - space.executors_types = event.params.executionStrategies.map((strategy) => { - let executionStrategyContract = IExecutionStrategy.bind( - Address.fromString(strategy.addy.toHexString()) - ) - - let typeResult = executionStrategyContract.try_getStrategyType() - if (typeResult.reverted) return '' - return typeResult.value - }) - - updateSpaceMetadata(space, event.params.metadataUri) + updateSpaceMetadata(space, event.params.metadataURI) space.save() - - SpaceTemplate.create(event.params.space) } export function handleProposalCreated(event: ProposalCreated): void { @@ -122,10 +94,11 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.tx = event.transaction.hash proposal.vote_count = 0 - let spaceContract = SpaceContract.bind(Address.fromString(space.id)) - let quorumResult = spaceContract.try_quorum(event.params.nextProposalId) - if (!quorumResult.reverted) { - proposal.quorum = new BigDecimal(quorumResult.value) + let executionStrategy = ExecutionStrategy.load( + event.params.proposal.executionStrategy.toHexString() + ) + if (executionStrategy !== null) { + proposal.quorum = executionStrategy.quorum } if (metadataUri.startsWith('ipfs://')) { @@ -180,19 +153,19 @@ export function handleProposalExecuted(event: ProposalExecuted): void { proposal.save() } -export function handleVoteCreated(event: VoteCreated): void { +export function handleVoteCreated(event: VoteCast): void { let space = Space.load(event.address.toHexString()) if (space == null) { return } // Swap For/Against - let choice = event.params.vote.choice - if (event.params.vote.choice === 0) choice = 2 - if (event.params.vote.choice === 1) choice = 1 - if (event.params.vote.choice === 2) choice = 3 + let choice = event.params.choice + if (event.params.choice === 0) choice = 2 + if (event.params.choice === 1) choice = 1 + if (event.params.choice === 2) choice = 3 - let vp = event.params.vote.votingPower.toBigDecimal() + let vp = event.params.votingPower.toBigDecimal() let vote = new Vote( `${space.id}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}` @@ -231,13 +204,13 @@ export function handleVoteCreated(event: VoteCreated): void { user.save() } -export function handleMetadataUriUpdated(event: MetadataUriUpdated): void { +export function handleMetadataUriUpdated(event: MetadataURIUpdated): void { let space = Space.load(event.address.toHexString()) if (space == null) { return } - updateSpaceMetadata(space, event.params.newMetadataUri) + updateSpaceMetadata(space, event.params.newMetadataURI) space.save() } diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 9bf12d6d5..74a4bed29 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -3,12 +3,12 @@ schema: file: ./schema.graphql dataSources: - kind: ethereum - name: SpaceFactory + name: ProxyFactory network: goerli source: - address: '0xfC38E50eA8fc64Fb68B9fece13b16404B8D43864' - abi: SpaceFactory - startBlock: 8577681 + address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' + abi: ProxyFactory + startBlock: 8698550 mapping: kind: ethereum/events apiVersion: 0.0.5 @@ -16,13 +16,13 @@ dataSources: entities: - SpaceCreated abis: - - name: SpaceFactory - file: ./abis/SpaceFactory.json - - name: IExecutionStrategy - file: ./abis/IExecutionStrategy.json + - name: ProxyFactory + file: ./abis/ProxyFactory.json + - name: AvatarExecutionStrategy + file: ./abis/AvatarExecutionStrategy.json eventHandlers: - - event: SpaceCreated(address,address,uint32,uint32,uint32,uint256,string,(address,bytes)[],bytes[],address[],(address,bytes)[]) - handler: handleSpaceCreated + - event: ProxyDeployed(address,address) + handler: handleProxyDeployed file: ./src/mapping.ts templates: - kind: ethereum @@ -42,12 +42,14 @@ templates: - name: Space file: ./abis/Space.json eventHandlers: - - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,(address,bytes),address,uint8,(address,bytes)[]),string,bytes) + - event: SpaceCreated(address,address,uint32,uint32,uint32,(address,bytes),string,(address,bytes)[],string[],address[]) + handler: handleSpaceCreated + - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,address,address,uint8,(address,bytes)[]),string,bytes) handler: handleProposalCreated - event: ProposalExecuted(uint256) handler: handleProposalExecuted - - event: VoteCreated(uint256,address,(uint8,uint256),string) + - event: VoteCast(uint256,address,uint8,uint256) handler: handleVoteCreated - - event: MetadataUriUpdated(string) + - event: MetadataURIUpdated(string) handler: handleMetadataUriUpdated file: ./src/mapping.ts From 32750130376ee9e9ca37b37da382eea3e3cdf841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Fri, 24 Mar 2023 15:01:51 +0100 Subject: [PATCH 12/44] feat: index VP proposal validation strategy details (https://github.com/snapshot-labs/sx-subgraph/pull/12) --- apps/subgraph-api/schema.graphql | 2 ++ apps/subgraph-api/src/helpers.ts | 31 ++++++++++++++++++++++++++++++- apps/subgraph-api/src/mapping.ts | 29 +++++++++++++++++++++++++++-- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 963cddfe4..c2505789e 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -19,6 +19,8 @@ type Space @entity { authenticators: [Bytes!]! validation_strategy: Bytes! validation_strategy_params: String! + voting_power_validation_strategy_strategies: [Bytes!]! + voting_power_validation_strategy_strategies_params: [String!]! executors: [Bytes!]! executors_types: [String!]! proposal_count: Int! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index 2ab2f5f21..f33bf3de0 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,6 +1,35 @@ -import { Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { Bytes, BigInt, ipfs, json, ethereum, Address } from '@graphprotocol/graph-ts' import { Space, ExecutionStrategy } from '../generated/schema' +const TUPLE_PREFIX = '0x0000000000000000000000000000000000000000000000000000000000000020' +const VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE = '(uint256, (address,bytes)[])' + +export function decodeProposalValidationParams(params: Bytes): ethereum.Value | null { + let paramsBytes = Bytes.fromByteArray( + Bytes.fromHexString(TUPLE_PREFIX + params.toHexString().slice(2)) + ) + + return ethereum.decode(VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE, paramsBytes) +} + +export function getProposalValidationThreshold(params: ethereum.Value): BigInt { + let paramsTuple = params.toTuple() + + return paramsTuple[0].toBigInt() +} + +export function getProposalValidationStrategies(params: ethereum.Value): Address[] { + let paramsTuple = params.toTuple() + + return paramsTuple[1].toArray().map
((strategy) => strategy.toTuple()[0].toAddress()) +} + +export function getProposalValidationStrategiesParams(params: ethereum.Value): Bytes[] { + let paramsTuple = params.toTuple() + + return paramsTuple[1].toArray().map((strategy) => strategy.toTuple()[1].toBytes()) +} + export function updateSpaceMetadata(space: Space, metadataUri: string): void { if (!metadataUri.startsWith('ipfs://')) return diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index c58a180f9..ce4e011f0 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -11,10 +11,19 @@ import { } from '../generated/templates/Space/Space' import { Space as SpaceTemplate } from '../generated/templates' import { Space, ExecutionStrategy, Proposal, Vote, User } from '../generated/schema' -import { updateSpaceMetadata } from './helpers' +import { + decodeProposalValidationParams, + getProposalValidationThreshold, + getProposalValidationStrategies, + getProposalValidationStrategiesParams, + updateSpaceMetadata, +} from './helpers' const MASTER_SPACE = Address.fromString('0xB5E5c8a9A999Da1AABb2b45DC9F72F2be042e204') const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x6F12C67cAd3e566B60A6AE0146761110F1Ea6Eb2') +const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( + '0x03d512E0165d6B53ED2753Df2f3184fBd2b52E48' +) export function handleProxyDeployed(event: ProxyDeployed): void { if (event.params.implementation.equals(MASTER_SPACE)) { @@ -40,7 +49,6 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.voting_delay = event.params.votingDelay.toI32() space.min_voting_period = event.params.minVotingDuration.toI32() space.max_voting_period = event.params.maxVotingDuration.toI32() - space.proposal_threshold = new BigDecimal(new BigInt(0)) space.quorum = new BigDecimal(new BigInt(0)) space.strategies = event.params.votingStrategies.map((strategy) => strategy.addy) space.strategies_params = event.params.votingStrategies.map((strategy) => @@ -49,6 +57,23 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.validation_strategy = event.params.proposalValidationStrategy.addy space.validation_strategy_params = event.params.proposalValidationStrategy.params.toHexString() + if (space.validation_strategy.equals(VOTING_POWER_VALIDATION_STRATEGY)) { + let params = decodeProposalValidationParams(event.params.proposalValidationStrategy.params) + + if (params) { + space.proposal_threshold = new BigDecimal(getProposalValidationThreshold(params)) + space.voting_power_validation_strategy_strategies = getProposalValidationStrategies( + params + ).map((strategy) => strategy) + space.voting_power_validation_strategy_strategies_params = getProposalValidationStrategiesParams( + params + ).map((params) => params.toHexString()) + } else { + space.proposal_threshold = new BigDecimal(new BigInt(0)) + space.voting_power_validation_strategy_strategies = [] + } + } + // NOTE: for now we are still using it as raw data, instead of URI space.strategies_metadata = event.params.votingStrategyMetadataURIs space.authenticators = event.params.authenticators.map((address) => address) From b1cfb161a5909f9c9ad5dddb452d43294dfc0edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 29 Mar 2023 11:01:56 +0200 Subject: [PATCH 13/44] feat: add TimelockExecutionStrategy support (https://github.com/snapshot-labs/sx-subgraph/pull/13) --- .../abis/TimelockExecutionStrategy.json | 666 ++++++++++++++++++ apps/subgraph-api/schema.graphql | 11 + apps/subgraph-api/src/mapping.ts | 68 +- apps/subgraph-api/subgraph.yaml | 20 + 4 files changed, 761 insertions(+), 4 deletions(-) create mode 100644 apps/subgraph-api/abis/TimelockExecutionStrategy.json diff --git a/apps/subgraph-api/abis/TimelockExecutionStrategy.json b/apps/subgraph-api/abis/TimelockExecutionStrategy.json new file mode 100644 index 000000000..58bb59de2 --- /dev/null +++ b/apps/subgraph-api/abis/TimelockExecutionStrategy.json @@ -0,0 +1,666 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_spaces", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "_timelockDelay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_quorum", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "DuplicateExecutionPayloadHash", + "type": "error" + }, + { + "inputs": [], + "name": "ExecutionFailed", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPayload", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "enum ProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidProposalStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSpace", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyVetoGuardian", + "type": "error" + }, + { + "inputs": [], + "name": "ProposalNotQueued", + "type": "error" + }, + { + "inputs": [], + "name": "TimelockDelayNotMet", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + } + ], + "name": "ProposalExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + } + ], + "name": "ProposalQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + } + ], + "name": "ProposalVetoed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "SpaceDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "SpaceEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "salt", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct MetaTransaction", + "name": "transaction", + "type": "tuple" + } + ], + "name": "TransactionExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "salt", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct MetaTransaction", + "name": "transaction", + "type": "tuple" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "executionTime", + "type": "uint256" + } + ], + "name": "TransactionQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "vetoGuardian", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newVetoGuardian", + "type": "address" + } + ], + "name": "VetoGuardianSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "disableSpace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "enableSpace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "votesFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAgainst", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAbstain", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + } + ], + "name": "executeQueuedProposal", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + } + ], + "internalType": "struct Proposal", + "name": "proposal", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "votesFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAgainst", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votesAbstain", + "type": "uint256" + } + ], + "name": "getProposalStatus", + "outputs": [ + { + "internalType": "enum ProposalStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStrategyType", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "space", + "type": "address" + } + ], + "name": "isSpaceEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "proposalExecutionTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quorum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initializeParams", + "type": "bytes" + } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newVetoGuardian", + "type": "address" + } + ], + "name": "setVetoGuardian", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "timelockDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + } + ], + "name": "veto", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vetoGuardian", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index c2505789e..6476c2ae4 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -33,6 +33,13 @@ type ExecutionStrategy @entity { id: ID! type: String! quorum: BigDecimal! + timelock_delay: BigInt! +} + +type ExecutionHash @entity { + id: ID! + execution_hash: String! + proposal_id: ID! } type Proposal @entity { @@ -50,6 +57,9 @@ type Proposal @entity { min_end: Int! max_end: Int! snapshot: Int! + execution_time: Int! + execution_strategy: Bytes! + timelock_delay: BigInt! strategies: [Bytes!]! strategies_params: [String!]! scores_1: BigDecimal! @@ -61,6 +71,7 @@ type Proposal @entity { tx: Bytes! vote_count: Int! executed: Boolean! + completed: Boolean! } type Vote @entity { diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index ce4e011f0..3bce68d36 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,7 +1,8 @@ -import { Address, BigDecimal, BigInt, Bytes, ipfs, json } from '@graphprotocol/graph-ts' +import { Address, BigDecimal, BigInt, Bytes, ipfs, json, log } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' import { ProxyDeployed } from '../generated/ProxyFactory/ProxyFactory' import { AvatarExecutionStrategy } from '../generated/ProxyFactory/AvatarExecutionStrategy' +import { TimelockExecutionStrategy } from '../generated/ProxyFactory/TimelockExecutionStrategy' import { SpaceCreated, ProposalCreated, @@ -9,8 +10,12 @@ import { VoteCast, MetadataURIUpdated, } from '../generated/templates/Space/Space' -import { Space as SpaceTemplate } from '../generated/templates' -import { Space, ExecutionStrategy, Proposal, Vote, User } from '../generated/schema' +import { ProposalExecuted as TimelockProposalExecuted } from '../generated/templates/TimelockExecutionStrategy/TimelockExecutionStrategy' +import { + Space as SpaceTemplate, + TimelockExecutionStrategy as TimelockExecutionStrategyTemplate, +} from '../generated/templates' +import { Space, ExecutionStrategy, ExecutionHash, Proposal, Vote, User } from '../generated/schema' import { decodeProposalValidationParams, getProposalValidationThreshold, @@ -21,6 +26,9 @@ import { const MASTER_SPACE = Address.fromString('0xB5E5c8a9A999Da1AABb2b45DC9F72F2be042e204') const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x6F12C67cAd3e566B60A6AE0146761110F1Ea6Eb2') +const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( + '0x36b8D5bC9271060643200F11D8C9e90eCf0ee5A3' +) const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( '0x03d512E0165d6B53ED2753Df2f3184fBd2b52E48' ) @@ -38,6 +46,20 @@ export function handleProxyDeployed(event: ProxyDeployed): void { executionStrategy.type = typeResult.value executionStrategy.quorum = new BigDecimal(quorumResult.value) executionStrategy.save() + } else if (event.params.implementation.equals(MASTER_SIMPLE_QUORUM_TIMELOCK)) { + let executionStrategyContract = TimelockExecutionStrategy.bind(event.params.proxy) + let typeResult = executionStrategyContract.try_getStrategyType() + let quorumResult = executionStrategyContract.try_quorum() + let timelockDelayResult = executionStrategyContract.try_timelockDelay() + if (typeResult.reverted || quorumResult.reverted || timelockDelayResult.reverted) return + + let executionStrategy = new ExecutionStrategy(event.params.proxy.toHexString()) + executionStrategy.type = typeResult.value + executionStrategy.quorum = new BigDecimal(quorumResult.value) + executionStrategy.timelock_delay = timelockDelayResult.value + executionStrategy.save() + + TimelockExecutionStrategyTemplate.create(event.params.proxy) } } @@ -95,7 +117,8 @@ export function handleProposalCreated(event: ProposalCreated): void { let metadataUri = event.params.metadataUri - let proposal = new Proposal(`${space.id}/${event.params.nextProposalId}`) + let proposalId = `${space.id}/${event.params.nextProposalId}` + let proposal = new Proposal(proposalId) proposal.proposal_id = event.params.nextProposalId.toI32() proposal.space = space.id proposal.author = event.params.author.toHexString() @@ -118,14 +141,20 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.created = event.block.timestamp.toI32() proposal.tx = event.transaction.hash proposal.vote_count = 0 + proposal.execution_strategy = event.params.proposal.executionStrategy let executionStrategy = ExecutionStrategy.load( event.params.proposal.executionStrategy.toHexString() ) if (executionStrategy !== null) { proposal.quorum = executionStrategy.quorum + proposal.timelock_delay = executionStrategy.timelock_delay } + let executionHash = new ExecutionHash(proposal.execution_hash) + executionHash.proposal_id = proposalId + executionHash.save() + if (metadataUri.startsWith('ipfs://')) { let hash = metadataUri.slice(7) let data = ipfs.cat(hash) @@ -175,6 +204,22 @@ export function handleProposalExecuted(event: ProposalExecuted): void { proposal.executed = true + let executionStrategy = ExecutionStrategy.load(proposal.execution_strategy.toHexString()) + + if (executionStrategy !== null) { + if ( + executionStrategy.type == 'SimpleQuorumVanilla' || + executionStrategy.type == 'SimpleQuorumAvatar' + ) { + proposal.completed = true + } + + if (executionStrategy.type == 'SimpleQuorumTimelock') { + proposal.execution_time = + event.block.timestamp.toI32() + executionStrategy.timelock_delay.toI32() + } + } + proposal.save() } @@ -239,3 +284,18 @@ export function handleMetadataUriUpdated(event: MetadataURIUpdated): void { space.save() } + +export function handleTimelockProposalExecuted(event: TimelockProposalExecuted): void { + let executionHash = ExecutionHash.load(event.params.executionPayloadHash.toHexString()) + if (executionHash === null) { + return + } + + let proposal = Proposal.load(executionHash.proposal_id) + if (proposal === null) { + return + } + + proposal.completed = true + proposal.save() +} diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 74a4bed29..1e822801e 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -20,6 +20,8 @@ dataSources: file: ./abis/ProxyFactory.json - name: AvatarExecutionStrategy file: ./abis/AvatarExecutionStrategy.json + - name: TimelockExecutionStrategy + file: ./abis/TimelockExecutionStrategy.json eventHandlers: - event: ProxyDeployed(address,address) handler: handleProxyDeployed @@ -53,3 +55,21 @@ templates: - event: MetadataURIUpdated(string) handler: handleMetadataUriUpdated file: ./src/mapping.ts + - kind: ethereum + name: TimelockExecutionStrategy + network: goerli + source: + abi: TimelockExecutionStrategy + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + entities: + - ProposalExecuted + abis: + - name: TimelockExecutionStrategy + file: ./abis/TimelockExecutionStrategy.json + eventHandlers: + - event: ProposalExecuted(bytes32) + handler: handleTimelockProposalExecuted + file: ./src/mapping.ts From 68dc9e66da02ce9c5dcd4e0a6ba9d17ad5273ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 29 Mar 2023 11:10:31 +0200 Subject: [PATCH 14/44] feat: add execution_tx (https://github.com/snapshot-labs/sx-subgraph/pull/14) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 6476c2ae4..67e942c77 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -69,6 +69,7 @@ type Proposal @entity { quorum: BigDecimal! created: Int! tx: Bytes! + execution_tx: Bytes vote_count: Int! executed: Boolean! completed: Boolean! diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 3bce68d36..15948745a 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -212,6 +212,7 @@ export function handleProposalExecuted(event: ProposalExecuted): void { executionStrategy.type == 'SimpleQuorumAvatar' ) { proposal.completed = true + proposal.execution_tx = event.transaction.hash } if (executionStrategy.type == 'SimpleQuorumTimelock') { @@ -297,5 +298,6 @@ export function handleTimelockProposalExecuted(event: TimelockProposalExecuted): } proposal.completed = true + proposal.execution_tx = event.transaction.hash proposal.save() } From 028c3e30a15b3d9ed2a0d115ac0238d5a94d22a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Tue, 4 Apr 2023 23:54:59 +0200 Subject: [PATCH 15/44] feat: parse symbol for spaces and voting strategies (https://github.com/snapshot-labs/sx-subgraph/pull/15) * feat: parse voting strategies metadata * feat: index voting_power_symbol * chore: remove unused const --- apps/subgraph-api/schema.graphql | 13 +++++++++ apps/subgraph-api/src/helpers.ts | 49 +++++++++++++++++++++++++++++++- apps/subgraph-api/src/mapping.ts | 3 +- apps/subgraph-api/subgraph.yaml | 2 +- 4 files changed, 64 insertions(+), 3 deletions(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 67e942c77..4b53c455f 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -6,6 +6,7 @@ type Space @entity { github: String! twitter: String! discord: String! + voting_power_symbol: String! wallet: String! controller: Bytes! voting_delay: Int! @@ -16,6 +17,7 @@ type Space @entity { strategies: [Bytes!]! strategies_params: [String!]! strategies_metadata: [String!]! + strategies_parsed_metadata: [StrategiesParsedMetadata!]! @derivedFrom(field: "space") authenticators: [Bytes!]! validation_strategy: Bytes! validation_strategy_params: String! @@ -29,6 +31,17 @@ type Space @entity { tx: Bytes! } +type StrategiesParsedMetadata @entity { + id: ID! + space: Space! + index: Int! + name: String! + description: String! + decimals: Int! + symbol: String! + token: String +} + type ExecutionStrategy @entity { id: ID! type: String! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index f33bf3de0..ccc4e6a50 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,5 +1,5 @@ import { Bytes, BigInt, ipfs, json, ethereum, Address } from '@graphprotocol/graph-ts' -import { Space, ExecutionStrategy } from '../generated/schema' +import { Space, ExecutionStrategy, StrategiesParsedMetadata } from '../generated/schema' const TUPLE_PREFIX = '0x0000000000000000000000000000000000000000000000000000000000000020' const VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE = '(uint256, (address,bytes)[])' @@ -53,12 +53,14 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { let github = propertiesObj.get('github') let twitter = propertiesObj.get('twitter') let discord = propertiesObj.get('discord') + let votingPowerSymbol = propertiesObj.get('voting_power_symbol') let wallets = propertiesObj.get('wallets') let executionStrategies = propertiesObj.get('executionStrategies') space.github = github ? github.toString() : '' space.twitter = twitter ? twitter.toString() : '' space.discord = discord ? discord.toString() : '' + space.voting_power_symbol = votingPowerSymbol ? votingPowerSymbol.toString() : 'VP' space.wallet = wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' if (executionStrategies) { @@ -84,3 +86,48 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { space.executors_types = [] } } + +export function updateStrategiesParsedMetadata(spaceId: string, metadataUris: string[]): void { + for (let i = 0; i < metadataUris.length; i++) { + let metadataUri = metadataUris[i] + + let strategyParsedMetadata = new StrategiesParsedMetadata(`${spaceId}/${i}`) + strategyParsedMetadata.space = spaceId + strategyParsedMetadata.index = i + + if (!metadataUri.startsWith('ipfs://')) { + strategyParsedMetadata.save() + continue + } + + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + if (data !== null) { + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let name = obj.get('name') + let description = obj.get('description') + let properties = obj.get('properties') + + strategyParsedMetadata.name = name ? name.toString() : '' + strategyParsedMetadata.description = description ? description.toString() : '' + + if (properties) { + let propertiesObj = properties.toObject() + + let decimals = propertiesObj.get('decimals') + let symbol = propertiesObj.get('symbol') + let token = propertiesObj.get('token') + + strategyParsedMetadata.decimals = decimals ? decimals.toBigInt().toI32() : 0 + strategyParsedMetadata.symbol = symbol ? symbol.toString() : '' + if (token) { + strategyParsedMetadata.token = token.toString() + } + } + + strategyParsedMetadata.save() + } + } +} diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 15948745a..3db29d3bb 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -22,6 +22,7 @@ import { getProposalValidationStrategies, getProposalValidationStrategiesParams, updateSpaceMetadata, + updateStrategiesParsedMetadata, } from './helpers' const MASTER_SPACE = Address.fromString('0xB5E5c8a9A999Da1AABb2b45DC9F72F2be042e204') @@ -96,7 +97,6 @@ export function handleSpaceCreated(event: SpaceCreated): void { } } - // NOTE: for now we are still using it as raw data, instead of URI space.strategies_metadata = event.params.votingStrategyMetadataURIs space.authenticators = event.params.authenticators.map((address) => address) space.proposal_count = 0 @@ -105,6 +105,7 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.tx = event.transaction.hash updateSpaceMetadata(space, event.params.metadataURI) + updateStrategiesParsedMetadata(space.id, space.strategies_metadata) space.save() } diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 1e822801e..fbae4fcf3 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -8,7 +8,7 @@ dataSources: source: address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' abi: ProxyFactory - startBlock: 8698550 + startBlock: 8768047 mapping: kind: ethereum/events apiVersion: 0.0.5 From 7d1bc188b7e7d37d4bcf2f2ed886d300718fdd97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 19 Apr 2023 12:36:54 +0200 Subject: [PATCH 16/44] feat: add avatar property (https://github.com/snapshot-labs/sx-subgraph/pull/16) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/helpers.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 4b53c455f..f4b99c3cc 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -2,6 +2,7 @@ type Space @entity { id: ID! name: String! about: String! + avatar: String! external_url: String! github: String! twitter: String! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index ccc4e6a50..1c01d57d1 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -40,11 +40,13 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { let obj = value.value.toObject() let name = obj.get('name') let description = obj.get('description') + let avatar = obj.get('avatar') let externalUrl = obj.get('external_url') let properties = obj.get('properties') if (name) space.name = name.toString() space.about = description ? description.toString() : '' + space.avatar = avatar ? avatar.toString() : '' space.external_url = externalUrl ? externalUrl.toString() : '' if (properties) { From df7de80345b9b555ec4a18fb78c96dbf4b16468f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Fri, 21 Apr 2023 20:02:35 +0200 Subject: [PATCH 17/44] feat: index space setting changes (https://github.com/snapshot-labs/sx-subgraph/pull/18) * feat: index space setting changes * feat: handle ownership change --- apps/subgraph-api/src/mapping.ts | 44 ++++++++++++++++++++++++++++++++ apps/subgraph-api/subgraph.yaml | 8 ++++++ 2 files changed, 52 insertions(+) diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 3db29d3bb..546e0152c 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -9,6 +9,10 @@ import { ProposalExecuted, VoteCast, MetadataURIUpdated, + VotingDelayUpdated, + MinVotingDurationUpdated, + MaxVotingDurationUpdated, + OwnershipTransferred, } from '../generated/templates/Space/Space' import { ProposalExecuted as TimelockProposalExecuted } from '../generated/templates/TimelockExecutionStrategy/TimelockExecutionStrategy' import { @@ -287,6 +291,46 @@ export function handleMetadataUriUpdated(event: MetadataURIUpdated): void { space.save() } +export function handleVotingDelayUpdated(event: VotingDelayUpdated): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + space.voting_delay = event.params.newVotingDelay.toI32() + space.save() +} + +export function handleMinVotingDurationUpdated(event: MinVotingDurationUpdated): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + space.min_voting_period = event.params.newMinVotingDuration.toI32() + space.save() +} + +export function handleMaxVotingDurationUpdated(event: MaxVotingDurationUpdated): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + space.max_voting_period = event.params.newMaxVotingDuration.toI32() + space.save() +} + +export function handleOwnershipTransferred(event: OwnershipTransferred): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + space.controller = event.params.newOwner + space.save() +} + export function handleTimelockProposalExecuted(event: TimelockProposalExecuted): void { let executionHash = ExecutionHash.load(event.params.executionPayloadHash.toHexString()) if (executionHash === null) { diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index fbae4fcf3..f289b3780 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -54,6 +54,14 @@ templates: handler: handleVoteCreated - event: MetadataURIUpdated(string) handler: handleMetadataUriUpdated + - event: VotingDelayUpdated(uint256) + handler: handleVotingDelayUpdated + - event: MinVotingDurationUpdated(uint32) + handler: handleMinVotingDurationUpdated + - event: MaxVotingDurationUpdated(uint32) + handler: handleMaxVotingDurationUpdated + - event: OwnershipTransferred(indexed address,indexed address) + handler: handleOwnershipTransferred file: ./src/mapping.ts - kind: ethereum name: TimelockExecutionStrategy From 8a06616b13ff3391e19743868d80bb2c639c836f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Tue, 25 Apr 2023 17:58:05 +0200 Subject: [PATCH 18/44] feat: handle ProposalUpdated event (https://github.com/snapshot-labs/sx-subgraph/pull/19) --- apps/subgraph-api/src/helpers.ts | 29 ++++++++++++++++- apps/subgraph-api/src/mapping.ts | 54 ++++++++++++++++++-------------- apps/subgraph-api/subgraph.yaml | 2 ++ 3 files changed, 61 insertions(+), 24 deletions(-) diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index 1c01d57d1..5aa1dac6d 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,5 +1,6 @@ import { Bytes, BigInt, ipfs, json, ethereum, Address } from '@graphprotocol/graph-ts' -import { Space, ExecutionStrategy, StrategiesParsedMetadata } from '../generated/schema' +import { JSON } from 'assemblyscript-json' +import { Space, Proposal, ExecutionStrategy, StrategiesParsedMetadata } from '../generated/schema' const TUPLE_PREFIX = '0x0000000000000000000000000000000000000000000000000000000000000020' const VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE = '(uint256, (address,bytes)[])' @@ -89,6 +90,32 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { } } +export function updateProposalMetadata(proposal: Proposal, metadataUri: string): void { + if (!metadataUri.startsWith('ipfs://')) return + + let hash = metadataUri.slice(7) + let data = ipfs.cat(hash) + + if (!data) return + + let value = json.try_fromBytes(data as Bytes) + let obj = value.value.toObject() + let title = obj.get('title') + let body = obj.get('body') + let discussion = obj.get('discussion') + + if (title) proposal.title = title.toString() + if (body) proposal.body = body.toString() + if (discussion) proposal.discussion = discussion.toString() + + // Using different parser for execution to overcome limitations in graph-ts + let jsonObj: JSON.Obj = JSON.parse(data.toString()) + let execution = jsonObj.getArr('execution') + if (execution) { + proposal.execution = execution.toString() + } +} + export function updateStrategiesParsedMetadata(spaceId: string, metadataUris: string[]): void { for (let i = 0; i < metadataUris.length; i++) { let metadataUri = metadataUris[i] diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 546e0152c..97976a877 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -6,6 +6,7 @@ import { TimelockExecutionStrategy } from '../generated/ProxyFactory/TimelockExe import { SpaceCreated, ProposalCreated, + ProposalUpdated, ProposalExecuted, VoteCast, MetadataURIUpdated, @@ -26,6 +27,7 @@ import { getProposalValidationStrategies, getProposalValidationStrategiesParams, updateSpaceMetadata, + updateProposalMetadata, updateStrategiesParsedMetadata, } from './helpers' @@ -160,29 +162,7 @@ export function handleProposalCreated(event: ProposalCreated): void { executionHash.proposal_id = proposalId executionHash.save() - if (metadataUri.startsWith('ipfs://')) { - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - if (data !== null) { - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let title = obj.get('title') - let body = obj.get('body') - let discussion = obj.get('discussion') - - if (title) proposal.title = title.toString() - if (body) proposal.body = body.toString() - if (discussion) proposal.discussion = discussion.toString() - - // Using different parser for execution to overcome limitations in graph-ts - let jsonObj: JSON.Obj = JSON.parse(data.toString()) - let execution = jsonObj.getArr('execution') - if (execution) { - proposal.execution = execution.toString() - } - } - } + updateProposalMetadata(proposal, metadataUri) proposal.save() @@ -201,6 +181,34 @@ export function handleProposalCreated(event: ProposalCreated): void { user.save() } +export function handleProposalUpdated(event: ProposalUpdated): void { + let proposalId = `${event.address.toHexString()}/${event.params.proposalId}` + + let proposal = Proposal.load(proposalId) + if (proposal == null) { + return + } + + proposal.execution_strategy = event.params.newExecutionStrategy.addy + proposal.execution_hash = event.params.newExecutionStrategy.params.toHexString() + + let executionStrategy = ExecutionStrategy.load( + event.params.newExecutionStrategy.addy.toHexString() + ) + if (executionStrategy !== null) { + proposal.quorum = executionStrategy.quorum + proposal.timelock_delay = executionStrategy.timelock_delay + } + + let executionHash = new ExecutionHash(proposal.execution_hash) + executionHash.proposal_id = proposalId + executionHash.save() + + updateProposalMetadata(proposal, event.params.newMetadataURI) + + proposal.save() +} + export function handleProposalExecuted(event: ProposalExecuted): void { let proposal = Proposal.load(`${event.address.toHexString()}/${event.params.proposalId}`) if (proposal == null) { diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index f289b3780..ea135d871 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -48,6 +48,8 @@ templates: handler: handleSpaceCreated - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,address,address,uint8,(address,bytes)[]),string,bytes) handler: handleProposalCreated + - event: ProposalUpdated(uint256,(address,bytes),string) + handler: handleProposalUpdated - event: ProposalExecuted(uint256) handler: handleProposalExecuted - event: VoteCast(uint256,address,uint8,uint256) From ab0562487dcb5866d462bc1acf316af36abfa5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 4 May 2023 18:49:51 +0200 Subject: [PATCH 19/44] feat: expose execution_strategy_type on Proposal (https://github.com/snapshot-labs/sx-subgraph/pull/20) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index f4b99c3cc..4ccb31001 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -73,6 +73,7 @@ type Proposal @entity { snapshot: Int! execution_time: Int! execution_strategy: Bytes! + execution_strategy_type: String! timelock_delay: BigInt! strategies: [Bytes!]! strategies_params: [String!]! diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 97976a877..a5a11c60d 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -156,6 +156,7 @@ export function handleProposalCreated(event: ProposalCreated): void { if (executionStrategy !== null) { proposal.quorum = executionStrategy.quorum proposal.timelock_delay = executionStrategy.timelock_delay + proposal.execution_strategy_type = executionStrategy.type } let executionHash = new ExecutionHash(proposal.execution_hash) @@ -198,6 +199,7 @@ export function handleProposalUpdated(event: ProposalUpdated): void { if (executionStrategy !== null) { proposal.quorum = executionStrategy.quorum proposal.timelock_delay = executionStrategy.timelock_delay + proposal.execution_strategy_type = executionStrategy.type } let executionHash = new ExecutionHash(proposal.execution_hash) From cefc8a67e80640f47a5e5608d7322075b81eddfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 10 May 2023 13:30:11 +0200 Subject: [PATCH 20/44] feat: handle missing execution (https://github.com/snapshot-labs/sx-subgraph/pull/21) --- apps/subgraph-api/src/mapping.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index a5a11c60d..8e2616c8c 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -157,6 +157,10 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.quorum = executionStrategy.quorum proposal.timelock_delay = executionStrategy.timelock_delay proposal.execution_strategy_type = executionStrategy.type + } else { + proposal.quorum = new BigDecimal(new BigInt(0)) + proposal.timelock_delay = new BigInt(0) + proposal.execution_strategy_type = 'none' } let executionHash = new ExecutionHash(proposal.execution_hash) @@ -200,6 +204,10 @@ export function handleProposalUpdated(event: ProposalUpdated): void { proposal.quorum = executionStrategy.quorum proposal.timelock_delay = executionStrategy.timelock_delay proposal.execution_strategy_type = executionStrategy.type + } else { + proposal.quorum = new BigDecimal(new BigInt(0)) + proposal.timelock_delay = new BigInt(0) + proposal.execution_strategy_type = 'none' } let executionHash = new ExecutionHash(proposal.execution_hash) From 449a2005b0746ee9ab6dcca26e0ae284b0d3c41c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 10 May 2023 13:30:44 +0200 Subject: [PATCH 21/44] feat: index delecation_api_url (https://github.com/snapshot-labs/sx-subgraph/pull/22) * feat: handle missing execution * feat: index delecation_api_url * feat: index delegation api type --- apps/subgraph-api/schema.graphql | 2 ++ apps/subgraph-api/src/helpers.ts | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 4ccb31001..5e7e4072b 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -4,6 +4,8 @@ type Space @entity { about: String! avatar: String! external_url: String! + delegation_api_type: String + delegation_api_url: String github: String! twitter: String! discord: String! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index 5aa1dac6d..d53b6ae86 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,4 +1,4 @@ -import { Bytes, BigInt, ipfs, json, ethereum, Address } from '@graphprotocol/graph-ts' +import { Bytes, BigInt, ipfs, json, ethereum, Address, log } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' import { Space, Proposal, ExecutionStrategy, StrategiesParsedMetadata } from '../generated/schema' @@ -53,6 +53,8 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { if (properties) { const propertiesObj = properties.toObject() + let delegation_api_type = propertiesObj.get('delegation_api_type') + let delegation_api_url = propertiesObj.get('delegation_api_url') let github = propertiesObj.get('github') let twitter = propertiesObj.get('twitter') let discord = propertiesObj.get('discord') @@ -60,6 +62,19 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { let wallets = propertiesObj.get('wallets') let executionStrategies = propertiesObj.get('executionStrategies') + let delegation_api_type_value = + delegation_api_type && !delegation_api_type.isNull() ? delegation_api_type.toString() : null + let delegation_api_url_value = + delegation_api_url && !delegation_api_url.isNull() ? delegation_api_url.toString() : null + + if (delegation_api_type_value == 'governor-subgraph' && delegation_api_url_value) { + space.delegation_api_type = delegation_api_type_value + space.delegation_api_url = delegation_api_url_value + } else { + space.delegation_api_type = null + space.delegation_api_url = null + } + space.github = github ? github.toString() : '' space.twitter = twitter ? twitter.toString() : '' space.discord = discord ? discord.toString() : '' @@ -81,6 +96,8 @@ export function updateSpaceMetadata(space: Space, metadataUri: string): void { space.executors_types = [] } } else { + space.delegation_api_type = null + space.delegation_api_url = null space.github = '' space.twitter = '' space.discord = '' From 82eb979a0cbcda7cb72b95351d4a140a110387f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 25 May 2023 17:00:13 +0200 Subject: [PATCH 22/44] feat: add hosted service v0.5.0 compatibility (https://github.com/snapshot-labs/sx-subgraph/pull/26) We have some issues with latency on IPFS and need to wait for Graph team to investigate. For the time being just adding v0.5.0 compatibility to current setup. --- .../abis/AvatarExecutionStrategy.json | 36 +- apps/subgraph-api/abis/Space.json | 677 ++++++++---------- .../abis/TimelockExecutionStrategy.json | 213 +++++- apps/subgraph-api/src/mapping.ts | 26 +- apps/subgraph-api/subgraph.yaml | 8 +- 5 files changed, 518 insertions(+), 442 deletions(-) diff --git a/apps/subgraph-api/abis/AvatarExecutionStrategy.json b/apps/subgraph-api/abis/AvatarExecutionStrategy.json index 795089ebb..45670cece 100644 --- a/apps/subgraph-api/abis/AvatarExecutionStrategy.json +++ b/apps/subgraph-api/abis/AvatarExecutionStrategy.json @@ -218,21 +218,9 @@ "type": "uint8" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" } ], "internalType": "struct Proposal", @@ -310,21 +298,9 @@ "type": "uint8" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" } ], "internalType": "struct Proposal", diff --git a/apps/subgraph-api/abis/Space.json b/apps/subgraph-api/abis/Space.json index 6d82c91e6..c3fd07d6c 100644 --- a/apps/subgraph-api/abis/Space.json +++ b/apps/subgraph-api/abis/Space.json @@ -1,12 +1,11 @@ [ { - "inputs": [ - { - "internalType": "address", - "name": "auth", - "type": "address" - } - ], + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], "name": "AuthenticatorNotWhitelisted", "type": "error" }, @@ -28,7 +27,7 @@ }, { "inputs": [], - "name": "ExecutionStrategyNotWhitelisted", + "name": "ExceedsStrategyLimit", "type": "error" }, { @@ -57,27 +56,11 @@ "name": "InvalidDuration", "type": "error" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "InvalidExecutionStrategyIndex", - "type": "error" - }, { "inputs": [], "name": "InvalidProposal", "type": "error" }, - { - "inputs": [], - "name": "InvalidStrategyAddress", - "type": "error" - }, { "inputs": [ { @@ -91,12 +74,7 @@ }, { "inputs": [], - "name": "MinVotingDurationHasNotElapsed", - "type": "error" - }, - { - "inputs": [], - "name": "ProposalAlreadyFinalized", + "name": "NoActiveVotingStrategies", "type": "error" }, { @@ -106,12 +84,7 @@ }, { "inputs": [], - "name": "QuorumNotReachedYet", - "type": "error" - }, - { - "inputs": [], - "name": "UserHasAlreadyVoted", + "name": "UserAlreadyVoted", "type": "error" }, { @@ -134,6 +107,11 @@ "name": "VotingPeriodHasNotStarted", "type": "error" }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -192,48 +170,17 @@ "name": "BeaconUpgraded", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Strategy[]", - "name": "newExecutionStrategies", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "string[]", - "name": "newExecutionStrategyMetadataURIs", - "type": "string[]" - } - ], - "name": "ExecutionStrategiesAdded", - "type": "event" - }, { "anonymous": false, "inputs": [ { "indexed": false, - "internalType": "uint8[]", - "name": "executionStrategyIndices", - "type": "uint8[]" + "internalType": "string", + "name": "newDaoURI", + "type": "string" } ], - "name": "ExecutionStrategiesRemoved", + "name": "DaoURIUpdated", "type": "event" }, { @@ -326,7 +273,7 @@ { "indexed": false, "internalType": "uint256", - "name": "nextProposalId", + "name": "proposalId", "type": "uint256" }, { @@ -378,21 +325,9 @@ "type": "uint8" }, { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" } ], "indexed": false, @@ -442,7 +377,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -473,7 +408,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -486,22 +421,15 @@ "internalType": "struct Strategy", "name": "newProposalValidationStrategy", "type": "tuple" - } - ], - "name": "ProposalValidationStrategyUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + }, { "indexed": false, - "internalType": "uint256", - "name": "newQuorum", - "type": "uint256" + "internalType": "string", + "name": "newProposalValidationStrategyMetadataURI", + "type": "string" } ], - "name": "QuorumUpdated", + "name": "ProposalValidationStrategyUpdated", "type": "event" }, { @@ -541,7 +469,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -555,6 +483,18 @@ "name": "proposalValidationStrategy", "type": "tuple" }, + { + "indexed": false, + "internalType": "string", + "name": "proposalValidationStrategyMetadataURI", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "daoURI", + "type": "string" + }, { "indexed": false, "internalType": "string", @@ -565,7 +505,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -620,7 +560,7 @@ { "indexed": false, "internalType": "address", - "name": "voterAddress", + "name": "voter", "type": "address" }, { @@ -651,7 +591,7 @@ { "indexed": false, "internalType": "address", - "name": "voterAddress", + "name": "voter", "type": "address" }, { @@ -681,9 +621,9 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", + "internalType": "uint32", "name": "newVotingDelay", - "type": "uint256" + "type": "uint32" } ], "name": "VotingDelayUpdated", @@ -696,7 +636,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -734,46 +674,35 @@ "type": "event" }, { - "inputs": [ + "inputs": [], + "name": "activeVotingStrategies", + "outputs": [ { - "internalType": "address[]", - "name": "_authenticators", - "type": "address[]" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "addAuthenticators", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "_votingStrategies", - "type": "tuple[]" - }, + "internalType": "address", + "name": "auth", + "type": "address" + } + ], + "name": "authenticators", + "outputs": [ { - "internalType": "string[]", - "name": "votingStrategyMetadataURIs", - "type": "string[]" + "internalType": "bool", + "name": "allowed", + "type": "bool" } ], - "name": "addVotingStrategies", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -789,6 +718,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "daoURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -807,84 +749,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "getProposal", - "outputs": [ - { - "components": [ - { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "startTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "maxEndTimestamp", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" - }, - { - "internalType": "enum FinalizationStatus", - "name": "finalizationStatus", - "type": "uint8" - }, - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" - } - ], - "internalType": "struct Proposal", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -906,35 +770,11 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, { "internalType": "address", - "name": "voter", + "name": "_owner", "type": "address" - } - ], - "name": "hasVoted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, + }, { "internalType": "uint32", "name": "_votingDelay", @@ -954,7 +794,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -967,6 +807,16 @@ "name": "_proposalValidationStrategy", "type": "tuple" }, + { + "internalType": "string", + "name": "_proposalValidationStrategyMetadataURI", + "type": "string" + }, + { + "internalType": "string", + "name": "_daoURI", + "type": "string" + }, { "internalType": "string", "name": "_metadataURI", @@ -976,7 +826,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -1046,12 +896,12 @@ }, { "inputs": [], - "name": "owner", + "name": "nextVotingStrategyIndex", "outputs": [ { - "internalType": "address", + "internalType": "uint8", "name": "", - "type": "address" + "type": "uint8" } ], "stateMutability": "view", @@ -1059,12 +909,12 @@ }, { "inputs": [], - "name": "proposalThreshold", + "name": "owner", "outputs": [ { - "internalType": "uint256", + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "stateMutability": "view", @@ -1076,7 +926,7 @@ "outputs": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -1088,6 +938,65 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + } + ], + "name": "proposals", + "outputs": [ + { + "internalType": "uint32", + "name": "snapshotTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minEndTimestamp", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxEndTimestamp", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, + { + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" + }, + { + "internalType": "address", + "name": "author", + "type": "address" + }, + { + "internalType": "enum FinalizationStatus", + "name": "finalizationStatus", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1104,7 +1013,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -1119,7 +1028,7 @@ }, { "internalType": "bytes", - "name": "userParams", + "name": "userProposalValidationParams", "type": "bytes" } ], @@ -1141,32 +1050,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "_authenticators", - "type": "address[]" - } - ], - "name": "removeAuthenticators", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8[]", - "name": "_votingStrategyIndices", - "type": "uint8[]" - } - ], - "name": "removeVotingStrategies", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "renounceOwnership", @@ -1174,83 +1057,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_maxVotingDuration", - "type": "uint32" - } - ], - "name": "setMaxVotingDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_metadataURI", - "type": "string" - } - ], - "name": "setMetadataURI", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_minVotingDuration", - "type": "uint32" - } - ], - "name": "setMinVotingDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "addy", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", - "name": "_proposalValidationStrategy", - "type": "tuple" - } - ], - "name": "setProposalValidationStrategy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_votingDelay", - "type": "uint32" - } - ], - "name": "setVotingDelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1280,7 +1086,7 @@ "components": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { @@ -1304,6 +1110,105 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, + { + "internalType": "string", + "name": "metadataURI", + "type": "string" + }, + { + "internalType": "string", + "name": "daoURI", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "proposalValidationStrategy", + "type": "tuple" + }, + { + "internalType": "string", + "name": "proposalValidationStrategyMetadataURI", + "type": "string" + }, + { + "internalType": "address[]", + "name": "authenticatorsToAdd", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "authenticatorsToRemove", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategiesToAdd", + "type": "tuple[]" + }, + { + "internalType": "string[]", + "name": "votingStrategyMetadataURIsToAdd", + "type": "string[]" + }, + { + "internalType": "uint8[]", + "name": "votingStrategiesToRemove", + "type": "uint8[]" + } + ], + "internalType": "struct UpdateSettingsInput", + "name": "input", + "type": "tuple" + } + ], + "name": "updateSettings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1339,7 +1244,7 @@ "inputs": [ { "internalType": "address", - "name": "voterAddress", + "name": "voter", "type": "address" }, { @@ -1371,7 +1276,7 @@ }, { "internalType": "string", - "name": "metadataUri", + "name": "metadataURI", "type": "string" } ], @@ -1380,6 +1285,54 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "enum Choice", + "name": "choice", + "type": "uint8" + } + ], + "name": "votePower", + "outputs": [ + { + "internalType": "uint256", + "name": "votePower", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "voter", + "type": "address" + } + ], + "name": "voteRegistry", + "outputs": [ + { + "internalType": "bool", + "name": "hasVoted", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "votingDelay", @@ -1396,16 +1349,16 @@ { "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "uint8", + "name": "strategyIndex", + "type": "uint8" } ], "name": "votingStrategies", "outputs": [ { "internalType": "address", - "name": "addy", + "name": "addr", "type": "address" }, { diff --git a/apps/subgraph-api/abis/TimelockExecutionStrategy.json b/apps/subgraph-api/abis/TimelockExecutionStrategy.json index 58bb59de2..ba31cd3d7 100644 --- a/apps/subgraph-api/abis/TimelockExecutionStrategy.json +++ b/apps/subgraph-api/abis/TimelockExecutionStrategy.json @@ -6,6 +6,11 @@ "name": "_owner", "type": "address" }, + { + "internalType": "address", + "name": "_vetoGuardian", + "type": "address" + }, { "internalType": "address[]", "name": "_spaces", @@ -168,6 +173,43 @@ "name": "SpaceEnabled", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "vetoGuardian", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "spaces", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quorum", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timelockDelay", + "type": "uint256" + } + ], + "name": "TimelockExecutionStrategySetUp", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -344,21 +386,9 @@ "type": "uint8" }, { - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" } ], "internalType": "struct Proposal", @@ -401,7 +431,7 @@ ], "name": "executeQueuedProposal", "outputs": [], - "stateMutability": "payable", + "stateMutability": "nonpayable", "type": "function" }, { @@ -449,21 +479,9 @@ "type": "uint8" }, { - "components": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" + "internalType": "uint256", + "name": "activeVotingStrategies", + "type": "uint256" } ], "internalType": "struct Proposal", @@ -529,6 +547,118 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -585,7 +715,7 @@ "inputs": [ { "internalType": "bytes", - "name": "initializeParams", + "name": "initParams", "type": "bytes" } ], @@ -607,6 +737,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "timelockDelay", diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 8e2616c8c..9382f89b5 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -31,10 +31,10 @@ import { updateStrategiesParsedMetadata, } from './helpers' -const MASTER_SPACE = Address.fromString('0xB5E5c8a9A999Da1AABb2b45DC9F72F2be042e204') +const MASTER_SPACE = Address.fromString('0x7cC62f8E9BF2b44ce704D2cdCd4aa8021d5A6f4B') const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x6F12C67cAd3e566B60A6AE0146761110F1Ea6Eb2') const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( - '0x36b8D5bC9271060643200F11D8C9e90eCf0ee5A3' + '0xdb86512e7E3a2d0B93b74b8FE3fFE8AD780791BE' ) const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( '0x03d512E0165d6B53ED2753Df2f3184fBd2b52E48' @@ -79,11 +79,11 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.min_voting_period = event.params.minVotingDuration.toI32() space.max_voting_period = event.params.maxVotingDuration.toI32() space.quorum = new BigDecimal(new BigInt(0)) - space.strategies = event.params.votingStrategies.map((strategy) => strategy.addy) + space.strategies = event.params.votingStrategies.map((strategy) => strategy.addr) space.strategies_params = event.params.votingStrategies.map((strategy) => strategy.params.toHexString() ) - space.validation_strategy = event.params.proposalValidationStrategy.addy + space.validation_strategy = event.params.proposalValidationStrategy.addr space.validation_strategy_params = event.params.proposalValidationStrategy.params.toHexString() if (space.validation_strategy.equals(VOTING_POWER_VALIDATION_STRATEGY)) { @@ -124,9 +124,9 @@ export function handleProposalCreated(event: ProposalCreated): void { let metadataUri = event.params.metadataUri - let proposalId = `${space.id}/${event.params.nextProposalId}` + let proposalId = `${space.id}/${event.params.proposalId}` let proposal = new Proposal(proposalId) - proposal.proposal_id = event.params.nextProposalId.toI32() + proposal.proposal_id = event.params.proposalId.toI32() proposal.space = space.id proposal.author = event.params.author.toHexString() proposal.execution_hash = event.params.proposal.executionPayloadHash.toHexString() @@ -194,11 +194,11 @@ export function handleProposalUpdated(event: ProposalUpdated): void { return } - proposal.execution_strategy = event.params.newExecutionStrategy.addy + proposal.execution_strategy = event.params.newExecutionStrategy.addr proposal.execution_hash = event.params.newExecutionStrategy.params.toHexString() let executionStrategy = ExecutionStrategy.load( - event.params.newExecutionStrategy.addy.toHexString() + event.params.newExecutionStrategy.addr.toHexString() ) if (executionStrategy !== null) { proposal.quorum = executionStrategy.quorum @@ -261,10 +261,8 @@ export function handleVoteCreated(event: VoteCast): void { let vp = event.params.votingPower.toBigDecimal() - let vote = new Vote( - `${space.id}/${event.params.proposalId}/${event.params.voterAddress.toHexString()}` - ) - vote.voter = event.params.voterAddress.toHexString() + let vote = new Vote(`${space.id}/${event.params.proposalId}/${event.params.voter.toHexString()}`) + vote.voter = event.params.voter.toHexString() vote.space = space.id vote.proposal = event.params.proposalId.toI32() vote.choice = choice @@ -286,9 +284,9 @@ export function handleVoteCreated(event: VoteCast): void { proposal.save() } - let user = User.load(event.params.voterAddress.toHexString()) + let user = User.load(event.params.voter.toHexString()) if (user == null) { - user = new User(event.params.voterAddress.toHexString()) + user = new User(event.params.voter.toHexString()) user.proposal_count = 0 user.vote_count = 0 user.created = event.block.timestamp.toI32() diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index ea135d871..176620a29 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -8,7 +8,7 @@ dataSources: source: address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' abi: ProxyFactory - startBlock: 8768047 + startBlock: 9049740 mapping: kind: ethereum/events apiVersion: 0.0.5 @@ -44,9 +44,9 @@ templates: - name: Space file: ./abis/Space.json eventHandlers: - - event: SpaceCreated(address,address,uint32,uint32,uint32,(address,bytes),string,(address,bytes)[],string[],address[]) + - event: SpaceCreated(address,address,uint32,uint32,uint32,(address,bytes),string,string,string,(address,bytes)[],string[],address[]) handler: handleSpaceCreated - - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,address,address,uint8,(address,bytes)[]),string,bytes) + - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,address,address,uint8,uint256),string,bytes) handler: handleProposalCreated - event: ProposalUpdated(uint256,(address,bytes),string) handler: handleProposalUpdated @@ -56,7 +56,7 @@ templates: handler: handleVoteCreated - event: MetadataURIUpdated(string) handler: handleMetadataUriUpdated - - event: VotingDelayUpdated(uint256) + - event: VotingDelayUpdated(uint32) handler: handleVotingDelayUpdated - event: MinVotingDurationUpdated(uint32) handler: handleMinVotingDurationUpdated From 42d99b60c542c6cd7bf6962a41c9f6f11b975de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 31 May 2023 12:49:01 +0200 Subject: [PATCH 23/44] feat: migrate to file data source API (https://github.com/snapshot-labs/sx-subgraph/pull/23) * feat: migrate to file data source Replacing ipfs module with file data sources make it compatible with Studio. This however forced us to make some schema changes that will result in necessary conversions on UI level. Deployed to https://thegraph.com/hosted-service/subgraph/sekhmet/sx-subgraph-dev * chore: bump @graphprotocol/graph-cli to 0.50.1 * chore: deploy to sx-goerli graph * chore: revert formatting changes * feat: take executor types from metadata It's currently not possible to read other entities or make ETH calls in IPFS handlers so we have to make those hardcoded in metadata. --- apps/subgraph-api/package.json | 7 +- apps/subgraph-api/schema.graphql | 51 +- apps/subgraph-api/src/helpers.ts | 145 +- apps/subgraph-api/src/ipfs.ts | 133 ++ apps/subgraph-api/src/mapping.ts | 52 +- apps/subgraph-api/subgraph.yaml | 46 +- apps/subgraph-api/yarn.lock | 3397 ++++++++++++++++++------------ 7 files changed, 2354 insertions(+), 1477 deletions(-) create mode 100644 apps/subgraph-api/src/ipfs.ts diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 4cebed55d..671d9a8d3 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -7,11 +7,12 @@ "create-local": "graph create --node http://localhost:8020/ snapshot-labs/sx-subgraph", "remove-local": "graph remove --node http://localhost:8020/ snapshot-labs/sx-subgraph", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", - "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-goerli" + "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", + "deploy-studio": "graph deploy --studio sx-goerli" }, "dependencies": { - "@graphprotocol/graph-cli": "0.26.0", - "@graphprotocol/graph-ts": "0.24.1", + "@graphprotocol/graph-cli": "0.50.1", + "@graphprotocol/graph-ts": "0.29.1", "assemblyscript-json": "^1.1.0" } } diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 5e7e4072b..2a26f26f1 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -1,16 +1,6 @@ type Space @entity { id: ID! - name: String! - about: String! - avatar: String! - external_url: String! - delegation_api_type: String - delegation_api_url: String - github: String! - twitter: String! - discord: String! - voting_power_symbol: String! - wallet: String! + metadata: SpaceMetadata controller: Bytes! voting_delay: Int! min_voting_period: Int! @@ -26,18 +16,38 @@ type Space @entity { validation_strategy_params: String! voting_power_validation_strategy_strategies: [Bytes!]! voting_power_validation_strategy_strategies_params: [String!]! - executors: [Bytes!]! - executors_types: [String!]! proposal_count: Int! vote_count: Int! created: Int! tx: Bytes! } +type SpaceMetadata @entity { + id: ID! + name: String! + about: String! + avatar: String! + external_url: String! + delegation_api_type: String + delegation_api_url: String + github: String! + twitter: String! + discord: String! + voting_power_symbol: String! + wallet: String! + executors: [Bytes!]! + executors_types: [String!]! +} + type StrategiesParsedMetadata @entity { id: ID! space: Space! index: Int! + data: StrategiesParsedMetadataData +} + +type StrategiesParsedMetadataData @entity { + id: ID! name: String! description: String! decimals: Int! @@ -54,7 +64,6 @@ type ExecutionStrategy @entity { type ExecutionHash @entity { id: ID! - execution_hash: String! proposal_id: ID! } @@ -64,11 +73,7 @@ type Proposal @entity { space: Space! author: User! execution_hash: String! - metadata_uri: String! - title: String! - body: String! - discussion: String! - execution: String! + metadata: ProposalMetadata start: Int! min_end: Int! max_end: Int! @@ -92,6 +97,14 @@ type Proposal @entity { completed: Boolean! } +type ProposalMetadata @entity { + id: ID! + title: String! + body: String! + discussion: String! + execution: String! +} + type Vote @entity { id: ID! voter: User! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index d53b6ae86..8daf58f5a 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,6 +1,6 @@ -import { Bytes, BigInt, ipfs, json, ethereum, Address, log } from '@graphprotocol/graph-ts' -import { JSON } from 'assemblyscript-json' -import { Space, Proposal, ExecutionStrategy, StrategiesParsedMetadata } from '../generated/schema' +import { Bytes, BigInt, ethereum, Address } from '@graphprotocol/graph-ts' +import { StrategiesParsedMetadataData as StrategiesParsedMetadataDataTemplate } from '../generated/templates' +import { StrategiesParsedMetadata } from '../generated/schema' const TUPLE_PREFIX = '0x0000000000000000000000000000000000000000000000000000000000000020' const VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE = '(uint256, (address,bytes)[])' @@ -31,108 +31,6 @@ export function getProposalValidationStrategiesParams(params: ethereum.Value): B return paramsTuple[1].toArray().map((strategy) => strategy.toTuple()[1].toBytes()) } -export function updateSpaceMetadata(space: Space, metadataUri: string): void { - if (!metadataUri.startsWith('ipfs://')) return - - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let name = obj.get('name') - let description = obj.get('description') - let avatar = obj.get('avatar') - let externalUrl = obj.get('external_url') - let properties = obj.get('properties') - - if (name) space.name = name.toString() - space.about = description ? description.toString() : '' - space.avatar = avatar ? avatar.toString() : '' - space.external_url = externalUrl ? externalUrl.toString() : '' - - if (properties) { - const propertiesObj = properties.toObject() - - let delegation_api_type = propertiesObj.get('delegation_api_type') - let delegation_api_url = propertiesObj.get('delegation_api_url') - let github = propertiesObj.get('github') - let twitter = propertiesObj.get('twitter') - let discord = propertiesObj.get('discord') - let votingPowerSymbol = propertiesObj.get('voting_power_symbol') - let wallets = propertiesObj.get('wallets') - let executionStrategies = propertiesObj.get('executionStrategies') - - let delegation_api_type_value = - delegation_api_type && !delegation_api_type.isNull() ? delegation_api_type.toString() : null - let delegation_api_url_value = - delegation_api_url && !delegation_api_url.isNull() ? delegation_api_url.toString() : null - - if (delegation_api_type_value == 'governor-subgraph' && delegation_api_url_value) { - space.delegation_api_type = delegation_api_type_value - space.delegation_api_url = delegation_api_url_value - } else { - space.delegation_api_type = null - space.delegation_api_url = null - } - - space.github = github ? github.toString() : '' - space.twitter = twitter ? twitter.toString() : '' - space.discord = discord ? discord.toString() : '' - space.voting_power_symbol = votingPowerSymbol ? votingPowerSymbol.toString() : 'VP' - space.wallet = wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' - - if (executionStrategies) { - space.executors = executionStrategies - .toArray() - .map((strategy) => Bytes.fromByteArray(Bytes.fromHexString(strategy.toString()))) - space.executors_types = space.executors.map((executor) => { - let executionStrategy = ExecutionStrategy.load(executor.toHexString()) - if (executionStrategy === null) return 'unknown' - - return executionStrategy.type - }) - } else { - space.executors = [] - space.executors_types = [] - } - } else { - space.delegation_api_type = null - space.delegation_api_url = null - space.github = '' - space.twitter = '' - space.discord = '' - space.wallet = '' - space.executors = [] - space.executors_types = [] - } -} - -export function updateProposalMetadata(proposal: Proposal, metadataUri: string): void { - if (!metadataUri.startsWith('ipfs://')) return - - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - if (!data) return - - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let title = obj.get('title') - let body = obj.get('body') - let discussion = obj.get('discussion') - - if (title) proposal.title = title.toString() - if (body) proposal.body = body.toString() - if (discussion) proposal.discussion = discussion.toString() - - // Using different parser for execution to overcome limitations in graph-ts - let jsonObj: JSON.Obj = JSON.parse(data.toString()) - let execution = jsonObj.getArr('execution') - if (execution) { - proposal.execution = execution.toString() - } -} - export function updateStrategiesParsedMetadata(spaceId: string, metadataUris: string[]): void { for (let i = 0; i < metadataUris.length; i++) { let metadataUri = metadataUris[i] @@ -141,39 +39,12 @@ export function updateStrategiesParsedMetadata(spaceId: string, metadataUris: st strategyParsedMetadata.space = spaceId strategyParsedMetadata.index = i - if (!metadataUri.startsWith('ipfs://')) { - strategyParsedMetadata.save() - continue + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + strategyParsedMetadata.data = hash + StrategiesParsedMetadataDataTemplate.create(hash) } - let hash = metadataUri.slice(7) - let data = ipfs.cat(hash) - - if (data !== null) { - let value = json.try_fromBytes(data as Bytes) - let obj = value.value.toObject() - let name = obj.get('name') - let description = obj.get('description') - let properties = obj.get('properties') - - strategyParsedMetadata.name = name ? name.toString() : '' - strategyParsedMetadata.description = description ? description.toString() : '' - - if (properties) { - let propertiesObj = properties.toObject() - - let decimals = propertiesObj.get('decimals') - let symbol = propertiesObj.get('symbol') - let token = propertiesObj.get('token') - - strategyParsedMetadata.decimals = decimals ? decimals.toBigInt().toI32() : 0 - strategyParsedMetadata.symbol = symbol ? symbol.toString() : '' - if (token) { - strategyParsedMetadata.token = token.toString() - } - } - - strategyParsedMetadata.save() - } + strategyParsedMetadata.save() } } diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts new file mode 100644 index 000000000..7f9189108 --- /dev/null +++ b/apps/subgraph-api/src/ipfs.ts @@ -0,0 +1,133 @@ +import { Bytes, dataSource, json } from '@graphprotocol/graph-ts' +import { JSON } from 'assemblyscript-json' +import { SpaceMetadata, ProposalMetadata, StrategiesParsedMetadataData } from '../generated/schema' + +export function handleSpaceMetadata(content: Bytes): void { + let spaceMetadata = new SpaceMetadata(dataSource.stringParam()) + + let value = json.fromBytes(content) + let obj = value.toObject() + let name = obj.get('name') + let description = obj.get('description') + let avatar = obj.get('avatar') + let externalUrl = obj.get('external_url') + let properties = obj.get('properties') + + spaceMetadata.name = name ? name.toString() : '' + spaceMetadata.about = description ? description.toString() : '' + spaceMetadata.avatar = avatar ? avatar.toString() : '' + spaceMetadata.external_url = externalUrl ? externalUrl.toString() : '' + + if (properties) { + const propertiesObj = properties.toObject() + + let delegation_api_type = propertiesObj.get('delegation_api_type') + let delegation_api_url = propertiesObj.get('delegation_api_url') + let github = propertiesObj.get('github') + let twitter = propertiesObj.get('twitter') + let discord = propertiesObj.get('discord') + let votingPowerSymbol = propertiesObj.get('voting_power_symbol') + let wallets = propertiesObj.get('wallets') + let executionStrategies = propertiesObj.get('execution_strategies') + let executionStrategiesTypes = propertiesObj.get('execution_strategies_types') + + let delegation_api_type_value = + delegation_api_type && !delegation_api_type.isNull() ? delegation_api_type.toString() : null + let delegation_api_url_value = + delegation_api_url && !delegation_api_url.isNull() ? delegation_api_url.toString() : null + + if (delegation_api_type_value == 'governor-subgraph' && delegation_api_url_value) { + spaceMetadata.delegation_api_type = delegation_api_type_value + spaceMetadata.delegation_api_url = delegation_api_url_value + } else { + spaceMetadata.delegation_api_type = null + spaceMetadata.delegation_api_url = null + } + + spaceMetadata.github = github ? github.toString() : '' + spaceMetadata.twitter = twitter ? twitter.toString() : '' + spaceMetadata.discord = discord ? discord.toString() : '' + spaceMetadata.voting_power_symbol = votingPowerSymbol ? votingPowerSymbol.toString() : 'VP' + spaceMetadata.wallet = + wallets && wallets.toArray().length > 0 ? wallets.toArray()[0].toString() : '' + + if (executionStrategies && executionStrategiesTypes) { + spaceMetadata.executors = executionStrategies + .toArray() + .map((strategy) => Bytes.fromByteArray(Bytes.fromHexString(strategy.toString()))) + spaceMetadata.executors_types = executionStrategiesTypes + .toArray() + .map((type) => type.toString()) + } else { + spaceMetadata.executors = [] + spaceMetadata.executors_types = [] + } + } else { + spaceMetadata.delegation_api_type = null + spaceMetadata.delegation_api_url = null + spaceMetadata.github = '' + spaceMetadata.twitter = '' + spaceMetadata.discord = '' + spaceMetadata.wallet = '' + spaceMetadata.executors = [] + spaceMetadata.executors_types = [] + } + + spaceMetadata.save() +} + +export function handleProposalMetadata(content: Bytes): void { + let proposalMetadata = new ProposalMetadata(dataSource.stringParam()) + + let value = json.fromBytes(content) + let obj = value.toObject() + let title = obj.get('title') + let body = obj.get('body') + let discussion = obj.get('discussion') + + proposalMetadata.title = title ? title.toString() : '' + proposalMetadata.body = body ? body.toString() : '' + proposalMetadata.discussion = discussion ? discussion.toString() : '' + proposalMetadata.execution = '' + + // Using different parser for execution to overcome limitations in graph-ts + let jsonObj: JSON.Obj = JSON.parse(content) + let execution = jsonObj.getArr('execution') + if (execution) { + proposalMetadata.execution = execution.toString() + } + + proposalMetadata.save() +} + +export function handleStrategiesParsedMetadataData(content: Bytes): void { + let strategiesParsedMetadataData = new StrategiesParsedMetadataData(dataSource.stringParam()) + + strategiesParsedMetadataData.name = '' + strategiesParsedMetadataData.description = '' + strategiesParsedMetadataData.decimals = 0 + strategiesParsedMetadataData.symbol = '' + + let value = json.fromBytes(content) + let obj = value.toObject() + let name = obj.get('name') + let description = obj.get('description') + let properties = obj.get('properties') + + if (name) strategiesParsedMetadataData.name = name.toString() + if (description) strategiesParsedMetadataData.description = description.toString() + + if (properties) { + let propertiesObj = properties.toObject() + + let decimals = propertiesObj.get('decimals') + let symbol = propertiesObj.get('symbol') + let token = propertiesObj.get('token') + + if (decimals) strategiesParsedMetadataData.decimals = decimals.toBigInt().toI32() + if (symbol) strategiesParsedMetadataData.symbol = symbol.toString() + if (token) strategiesParsedMetadataData.token = token.toString() + } + + strategiesParsedMetadataData.save() +} diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 9382f89b5..cab927941 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,5 +1,4 @@ -import { Address, BigDecimal, BigInt, Bytes, ipfs, json, log } from '@graphprotocol/graph-ts' -import { JSON } from 'assemblyscript-json' +import { Address, BigDecimal, BigInt, Bytes } from '@graphprotocol/graph-ts' import { ProxyDeployed } from '../generated/ProxyFactory/ProxyFactory' import { AvatarExecutionStrategy } from '../generated/ProxyFactory/AvatarExecutionStrategy' import { TimelockExecutionStrategy } from '../generated/ProxyFactory/TimelockExecutionStrategy' @@ -19,6 +18,8 @@ import { ProposalExecuted as TimelockProposalExecuted } from '../generated/templ import { Space as SpaceTemplate, TimelockExecutionStrategy as TimelockExecutionStrategyTemplate, + SpaceMetadata as SpaceMetadataTemplate, + ProposalMetadata as ProposalMetadataTemplate, } from '../generated/templates' import { Space, ExecutionStrategy, ExecutionHash, Proposal, Vote, User } from '../generated/schema' import { @@ -26,8 +27,6 @@ import { getProposalValidationThreshold, getProposalValidationStrategies, getProposalValidationStrategiesParams, - updateSpaceMetadata, - updateProposalMetadata, updateStrategiesParsedMetadata, } from './helpers' @@ -52,6 +51,7 @@ export function handleProxyDeployed(event: ProxyDeployed): void { let executionStrategy = new ExecutionStrategy(event.params.proxy.toHexString()) executionStrategy.type = typeResult.value executionStrategy.quorum = new BigDecimal(quorumResult.value) + executionStrategy.timelock_delay = new BigInt(0) executionStrategy.save() } else if (event.params.implementation.equals(MASTER_SIMPLE_QUORUM_TIMELOCK)) { let executionStrategyContract = TimelockExecutionStrategy.bind(event.params.proxy) @@ -72,8 +72,6 @@ export function handleProxyDeployed(event: ProxyDeployed): void { export function handleSpaceCreated(event: SpaceCreated): void { let space = new Space(event.params.space.toHexString()) - space.name = 'Fellow DAO ' + event.params.space.toHexString().slice(0, 6) - space.about = '' space.controller = event.params.owner space.voting_delay = event.params.votingDelay.toI32() space.min_voting_period = event.params.minVotingDuration.toI32() @@ -100,7 +98,12 @@ export function handleSpaceCreated(event: SpaceCreated): void { } else { space.proposal_threshold = new BigDecimal(new BigInt(0)) space.voting_power_validation_strategy_strategies = [] + space.voting_power_validation_strategy_strategies_params = [] } + } else { + space.proposal_threshold = new BigDecimal(new BigInt(0)) + space.voting_power_validation_strategy_strategies = [] + space.voting_power_validation_strategy_strategies_params = [] } space.strategies_metadata = event.params.votingStrategyMetadataURIs @@ -110,7 +113,12 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.created = event.block.timestamp.toI32() space.tx = event.transaction.hash - updateSpaceMetadata(space, event.params.metadataURI) + if (event.params.metadataURI.startsWith('ipfs://')) { + let hash = event.params.metadataURI.slice(7) + space.metadata = hash + SpaceMetadataTemplate.create(hash) + } + updateStrategiesParsedMetadata(space.id, space.strategies_metadata) space.save() @@ -122,19 +130,12 @@ export function handleProposalCreated(event: ProposalCreated): void { return } - let metadataUri = event.params.metadataUri - let proposalId = `${space.id}/${event.params.proposalId}` let proposal = new Proposal(proposalId) proposal.proposal_id = event.params.proposalId.toI32() proposal.space = space.id proposal.author = event.params.author.toHexString() proposal.execution_hash = event.params.proposal.executionPayloadHash.toHexString() - proposal.metadata_uri = metadataUri - proposal.title = '' - proposal.body = '' - proposal.discussion = '' - proposal.execution = '' proposal.start = event.params.proposal.startTimestamp.toI32() proposal.min_end = event.params.proposal.minEndTimestamp.toI32() proposal.max_end = event.params.proposal.maxEndTimestamp.toI32() @@ -149,6 +150,9 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.tx = event.transaction.hash proposal.vote_count = 0 proposal.execution_strategy = event.params.proposal.executionStrategy + proposal.execution_time = 0 + proposal.executed = false + proposal.completed = false let executionStrategy = ExecutionStrategy.load( event.params.proposal.executionStrategy.toHexString() @@ -167,7 +171,12 @@ export function handleProposalCreated(event: ProposalCreated): void { executionHash.proposal_id = proposalId executionHash.save() - updateProposalMetadata(proposal, metadataUri) + let metadataUri = event.params.metadataUri + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + proposal.metadata = hash + ProposalMetadataTemplate.create(hash) + } proposal.save() @@ -214,7 +223,12 @@ export function handleProposalUpdated(event: ProposalUpdated): void { executionHash.proposal_id = proposalId executionHash.save() - updateProposalMetadata(proposal, event.params.newMetadataURI) + let metadataUri = event.params.newMetadataURI + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + proposal.metadata = hash + ProposalMetadataTemplate.create(hash) + } proposal.save() } @@ -302,7 +316,11 @@ export function handleMetadataUriUpdated(event: MetadataURIUpdated): void { return } - updateSpaceMetadata(space, event.params.newMetadataURI) + if (event.params.newMetadataURI.startsWith('ipfs://')) { + let hash = event.params.newMetadataURI.slice(7) + space.metadata = hash + SpaceMetadataTemplate.create(hash) + } space.save() } diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 176620a29..dad8f06a6 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -1,4 +1,4 @@ -specVersion: 0.0.2 +specVersion: 0.0.4 schema: file: ./schema.graphql dataSources: @@ -6,12 +6,12 @@ dataSources: name: ProxyFactory network: goerli source: - address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' + address: "0x12A1FfFFfd70677939D61d641eA043bc9060c718" abi: ProxyFactory startBlock: 9049740 mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.7 language: wasm/assemblyscript entities: - SpaceCreated @@ -34,7 +34,7 @@ templates: abi: Space mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.7 language: wasm/assemblyscript entities: - ProposalCreated @@ -72,7 +72,7 @@ templates: abi: TimelockExecutionStrategy mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.7 language: wasm/assemblyscript entities: - ProposalExecuted @@ -83,3 +83,39 @@ templates: - event: ProposalExecuted(bytes32) handler: handleTimelockProposalExecuted file: ./src/mapping.ts + - name: SpaceMetadata + kind: file/ipfs + mapping: + apiVersion: 0.0.7 + language: wasm/assemblyscript + file: ./src/ipfs.ts + handler: handleSpaceMetadata + entities: + - SpaceMetadata + abis: + - name: Space + file: ./abis/Space.json + - name: ProposalMetadata + kind: file/ipfs + mapping: + apiVersion: 0.0.7 + language: wasm/assemblyscript + file: ./src/ipfs.ts + handler: handleProposalMetadata + entities: + - ProposalMetadata + abis: + - name: Space + file: ./abis/Space.json + - name: StrategiesParsedMetadataData + kind: file/ipfs + mapping: + apiVersion: 0.0.7 + language: wasm/assemblyscript + file: ./src/ipfs.ts + handler: handleStrategiesParsedMetadataData + entities: + - StrategiesParsedMetadataData + abis: + - name: Space + file: ./abis/Space.json diff --git a/apps/subgraph-api/yarn.lock b/apps/subgraph-api/yarn.lock index 621492bdb..b71a3ef71 100644 --- a/apps/subgraph-api/yarn.lock +++ b/apps/subgraph-api/yarn.lock @@ -3,94 +3,592 @@ "@babel/code-frame@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + version "7.21.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" "@babel/helper-validator-identifier@^7.18.6": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@graphprotocol/graph-cli@0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.26.0.tgz#9bcc3533d1384d44b65e0bf7eef81221ae8a4e05" - integrity sha512-sQKKfkGy6jsfpZD6KA9KdvHRpeStd1ZH334CMVxhyJtPY006a/Wc2rr7TBqgAtwpggs7UiT0UA3s5vG0jFQB5g== - dependencies: - assemblyscript "0.19.10" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.0.4": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@float-capital/float-subgraph-uncrashable@^0.0.0-alpha.4": + version "0.0.0-internal-testing.5" + resolved "https://registry.npmjs.org/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz" + integrity sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA== + dependencies: + "@rescript/std" "9.0.0" + graphql "^16.6.0" + graphql-import-node "^0.0.5" + js-yaml "^4.1.0" + +"@graphprotocol/graph-cli@0.50.1": + version "0.50.1" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.50.1.tgz#ca44138761e4d111e27c3645dd6bb6ea6e07753e" + integrity sha512-tk3e5NYBwXRuRD1y5+UKTRDv+Hwf3a78qmcpGOpIMjMgIpvDnepApRbqMqxt3Ma/RCRkACp0Kmkt3O5Ey4xlkQ== + dependencies: + "@float-capital/float-subgraph-uncrashable" "^0.0.0-alpha.4" + "@oclif/core" "2.8.4" + "@whatwg-node/fetch" "^0.8.4" + assemblyscript "0.19.23" binary-install-raw "0.0.13" - chalk "^3.0.0" - chokidar "^3.0.2" - debug "^4.1.1" - docker-compose "^0.23.2" - dockerode "^2.5.8" - fs-extra "^9.0.0" - glob "^7.1.2" - gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" - graphql "^15.5.0" - immutable "^3.8.2" - ipfs-http-client "^34.0.0" - jayson "^3.0.2" - js-yaml "^3.13.1" - node-fetch "^2.3.0" - pkginfo "^0.4.1" - prettier "^1.13.5" - request "^2.88.0" - semver "7.3.5" - tmp-promise "^3.0.2" + chalk "3.0.0" + chokidar "3.5.3" + debug "4.3.4" + docker-compose "0.23.19" + dockerode "2.5.8" + fs-extra "9.1.0" + glob "9.3.5" + gluegun "5.1.2" + graphql "15.5.0" + immutable "4.2.1" + ipfs-http-client "55.0.0" + jayson "4.0.0" + js-yaml "3.14.1" + prettier "1.19.1" + request "2.88.2" + semver "7.4.0" + sync-request "6.1.0" + tmp-promise "3.0.3" + web3-eth-abi "1.7.0" which "2.0.2" - yaml "^1.5.1" + yaml "1.10.2" -"@graphprotocol/graph-ts@0.24.1": - version "0.24.1" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.24.1.tgz#50961b52b5383f9c5cf5e6e23fa039f24e729ddf" - integrity sha512-2vU4m5ZPQIqMlMce/z5vmOtGHRlRmcRhMfemS3NIwxCSxSBGVnX2zb7QBTzzdQKGwsAZdbz6V0okkOtvohELfQ== +"@graphprotocol/graph-ts@0.29.1": + version "0.29.1" + resolved "https://registry.npmjs.org/@graphprotocol/graph-ts/-/graph-ts-0.29.1.tgz" + integrity sha512-GhAP2ijk3cTM0xBjoAFxEmdZbYl1BueCYqAGw5G7UyBX3EV8FWkvD5DMam6IkLGqXasBmelCFrROK3B5t6zVdg== dependencies: assemblyscript "0.19.10" +"@ipld/dag-cbor@^7.0.0": + version "7.0.3" + resolved "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== + dependencies: + cborg "^1.6.0" + multiformats "^9.5.4" + +"@ipld/dag-json@^8.0.1": + version "8.0.11" + resolved "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.11.tgz" + integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-pb@^2.1.3": + version "2.1.18" + resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== + dependencies: + multiformats "^9.5.4" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@oclif/core@2.8.4": + version "2.8.4" + resolved "https://registry.npmjs.org/@oclif/core/-/core-2.8.4.tgz" + integrity sha512-VlFDhoAJ1RDwcpDF46wAlciWTIryapMUViACttY9GwX6Ci6Lud1awe/pC3k4jad5472XshnPQV4bHAl4a/yxpA== + dependencies: + "@types/cli-progress" "^3.11.0" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.12.0" + debug "^4.3.4" + ejs "^3.1.8" + fs-extra "^9.1.0" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + semver "^7.3.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + ts-node "^10.9.1" + tslib "^2.5.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + +"@peculiar/asn1-schema@^2.3.6": + version "2.3.6" + resolved "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz" + integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.4.3" + resolved "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.3.tgz" + integrity sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.2" + tslib "^2.5.0" + webcrypto-core "^1.7.7" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@rescript/std@9.0.0": + version "9.0.0" + resolved "https://registry.npmjs.org/@rescript/std/-/std-9.0.0.tgz" + integrity sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/cli-progress@^3.11.0": + version "3.11.0" + resolved "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.0.tgz" + integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg== + dependencies: + "@types/node" "*" + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + "@types/connect@^3.4.33": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/minimatch@^3.0.4": + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + "@types/node@*": version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" + resolved "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@>=13.7.0": + version "20.2.3" + resolved "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz" + integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + "@types/node@^12.12.54": version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/qs@^6.2.31": + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + "@types/ws@^7.4.4": version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== dependencies: "@types/node" "*" +"@whatwg-node/events@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz" + integrity sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA== + +"@whatwg-node/fetch@^0.8.4": + version "0.8.8" + resolved "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz" + integrity sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@whatwg-node/node-fetch" "^0.3.6" + busboy "^1.6.0" + urlpattern-polyfill "^8.0.0" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/node-fetch@^0.3.6": + version "0.3.6" + resolved "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz" + integrity sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA== + dependencies: + "@whatwg-node/events" "^0.0.3" + busboy "^1.6.0" + fast-querystring "^1.1.1" + fast-url-parser "^1.1.3" + tslib "^2.3.1" + JSONStream@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz" integrity sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA== dependencies: jsonparse "^1.2.0" @@ -98,7 +596,7 @@ JSONStream@1.3.2: JSONStream@^1.3.5: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -106,14 +604,24 @@ JSONStream@^1.3.5: abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + ajv@^6.12.3: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -121,174 +629,219 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +any-signal@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + +any-signal@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -apisauce@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" - integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== +apisauce@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.6.tgz#94887f335bf3d735305fc895c8a191c9c2608a7f" + integrity sha512-MdxR391op/FucS2YQRfB/NMRyCnHEPDd4h17LRIuVYi0BpGmMhpxc0shbOpfs5ahABuBEffNCGal5EcsydbBWg== dependencies: - axios "^0.21.2" - ramda "^0.25.0" + axios "^0.21.4" app-module-path@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + resolved "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz" integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" -asmcrypto.js@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" - integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -asn1.js@^5.0.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + assemblyscript-json@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assemblyscript-json/-/assemblyscript-json-1.1.0.tgz#49d38bc21f1ac36f2887528a35de6cf7d59c17be" + resolved "https://registry.npmjs.org/assemblyscript-json/-/assemblyscript-json-1.1.0.tgz" integrity sha512-UbE8ts8csTWQgd5TnSPN7MRV9NveuHv1bVnKmDLoo/tzjqxkmsZb3lu59Uk8H7SGoqdkDSEE049alx/nHnSdFw== assemblyscript@0.19.10: version "0.19.10" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" + resolved "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.10.tgz" integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== dependencies: binaryen "101.0.0-nightly.20210723" long "^4.0.0" +assemblyscript@0.19.23: + version "0.19.23" + resolved "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.19.23.tgz" + integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== + dependencies: + binaryen "102.0.0-nightly.20211028" + long "^5.2.0" + source-map-support "^0.5.20" + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -async@^2.6.1, async@^2.6.2, async@^2.6.3: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axios@^0.21.1, axios@^0.21.2: +axios@^0.21.1, axios@^0.21.4: version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: follow-redirects "^1.14.0" balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2, base-x@^3.0.8: +base-x@^3.0.2: version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" -bignumber.js@^9.0.0: - version "9.1.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" - integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== - binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary-install-raw@0.0.13: version "0.0.13" - resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" + resolved "https://registry.npmjs.org/binary-install-raw/-/binary-install-raw-0.0.13.tgz" integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== dependencies: axios "^0.21.1" @@ -297,93 +850,84 @@ binary-install-raw@0.0.13: binaryen@101.0.0-nightly.20210723: version "101.0.0-nightly.20210723" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" + resolved "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz" integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== - dependencies: - safe-buffer "^5.0.1" +binaryen@102.0.0-nightly.20211028: + version "102.0.0-nightly.20211028" + resolved "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz" + integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== bl@^1.0.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bl@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" - integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== - dependencies: - readable-stream "^3.0.1" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blakejs@^1.1.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== -bn.js@^4.0.0, bn.js@^4.11.8, bn.js@^4.11.9: +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@~3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browserify-aes@^1.0.6, browserify-aes@^1.2.0: +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + +browserify-aes@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -393,21 +937,30 @@ browserify-aes@^1.0.6, browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -bs58@^4.0.1: +bs58@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" @@ -415,43 +968,37 @@ buffer-alloc@^1.2.0: buffer-fill@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -buffer@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: +buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" call-bind@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -459,39 +1006,55 @@ call-bind@^1.0.0: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" + integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" -caseless@~0.12.0: +caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +cborg@^1.5.4, cborg@^1.6.0: + version "1.10.2" + resolved "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.0.2, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@^3.0.2: +chokidar@3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -506,137 +1069,117 @@ chokidar@^3.0.2: chownr@^1.0.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -cids@~0.7.0, cids@~0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cids@~0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" - integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== - dependencies: - buffer "^5.6.0" - class-is "^1.1.0" - multibase "^1.0.0" - multicodec "^1.0.1" - multihashes "^1.0.1" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== +clean-stack@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz" + integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== + dependencies: + escape-string-regexp "4.0.0" cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + cli-spinners@^2.2.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.9.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== -cli-table3@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== +cli-table3@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== dependencies: object-assign "^4.1.0" - string-width "^2.1.1" + string-width "^4.2.0" optionalDependencies: colors "^1.1.2" clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colors@^1.1.2: +colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== +colors@^1.1.2: + version "1.3.3" + resolved "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^2.15.0, commander@^2.20.3: +commander@^2.20.3: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -"concat-stream@github:hugomrdias/concat-stream#feat/smaller": - version "2.0.0" - resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" - dependencies: - inherits "^2.0.3" - readable-stream "^3.0.2" - -concat-stream@~1.6.2: +concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -646,28 +1189,28 @@ concat-stream@~1.6.2: core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" + yaml "^1.10.0" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -676,9 +1219,9 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.4: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -688,7 +1231,12 @@ create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^7.0.0: +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@7.0.3, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -697,69 +1245,86 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: +debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" delay@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" -docker-compose@^0.23.2: - version "0.23.17" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" - integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== +dns-over-http-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + +docker-compose@0.23.19: + version "0.23.19" + resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.19.tgz" + integrity sha512-v5vNLIdUqwj4my80wxFDkNH+4S85zsRuH29SO7dCWVWPCMt/ohZBsGN6g6KXWifT0pzQ7uOxqEKCYCDPJ8Vz4g== dependencies: yaml "^1.10.2" docker-modem@^1.0.8: version "1.0.9" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" + resolved "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.9.tgz" integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== dependencies: JSONStream "1.3.2" @@ -767,40 +1332,47 @@ docker-modem@^1.0.8: readable-stream "~1.0.26-4" split-ca "^1.0.0" -dockerode@^2.5.8: +dockerode@2.5.8: version "2.5.8" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" + resolved "https://registry.npmjs.org/dockerode/-/dockerode-2.5.8.tgz" integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== dependencies: concat-stream "~1.6.2" docker-modem "^1.0.8" tar-fs "~1.16.3" -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== +ejs@3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + dependencies: + jake "^10.6.1" + +ejs@^3.1.8: + version "3.1.9" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" -elliptic@^6.5.2: +elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -811,153 +1383,254 @@ elliptic@^6.5.2: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enquirer@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" - integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== +enquirer@2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - ansi-colors "^3.2.1" - -err-code@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== + ansi-colors "^4.1.1" -err-code@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== +err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es6-promise@^4.0.3: version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -esprima@^4.0.0: +esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-util@^7.1.0: + version "7.1.5" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== +execa@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" -explain-error@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" - integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ== - extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== eyes@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-fifo@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz" + integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +fast-querystring@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.1.tgz" + integrity sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q== + dependencies: + fast-decode-uri-component "^1.0.1" + +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -flatmap@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" - integrity sha512-OuR+o7kHVe+x9RtIujPay7Uw3bvDZBZFSBXClEphZuSDLmZTqMdclasf4vFSsogC8baDz0eaC2NdO/2dlXHBKQ== - follow-redirects@^1.14.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -966,12 +1639,12 @@ form-data@~2.3.2: fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^9.0.0: +fs-extra@9.1.0, fs-extra@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -979,24 +1652,24 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-jetpack@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" - integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== +fs-jetpack@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-4.3.1.tgz#cdfd4b64e6bfdec7c7dc55c76b39efaa7853bb20" + integrity sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ== dependencies: minimatch "^3.0.2" rimraf "^2.6.3" fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: @@ -1006,42 +1679,65 @@ fsevents@~2.3.2: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== get-intrinsic@^1.0.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.3" -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.1.2, glob@^7.1.3: +glob@9.3.5: + version "9.3.5" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + +glob@^7.1.3: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -1051,20 +1747,33 @@ glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -"gluegun@https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep": - version "4.3.1" - resolved "https://github.com/edgeandnode/gluegun#b34b9003d7bf556836da41b57ef36eb21570620a" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - apisauce "^1.0.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gluegun@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/gluegun/-/gluegun-5.1.2.tgz#ffa0beda0fb6bbc089a867157b08602beae2c8cf" + integrity sha512-Cwx/8S8Z4YQg07a6AFsaGnnnmd8mN17414NcPS3OoDtZRwxgsvwRNJNg69niD6fDa8oNwslCG0xH7rEpRNNE/g== + dependencies: + apisauce "^2.1.5" app-module-path "^2.2.0" - cli-table3 "~0.5.0" - colors "1.3.3" - cosmiconfig "6.0.0" - cross-spawn "^7.0.0" - ejs "^2.6.1" - enquirer "2.3.4" - execa "^3.0.0" - fs-jetpack "^2.2.2" + cli-table3 "0.6.0" + colors "1.4.0" + cosmiconfig "7.0.1" + cross-spawn "7.0.3" + ejs "3.1.6" + enquirer "2.3.6" + execa "5.1.1" + fs-jetpack "4.3.1" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.lowercase "^4.3.0" @@ -1080,31 +1789,40 @@ glob@^7.1.2, glob@^7.1.3: lodash.trimstart "^4.5.1" lodash.uppercase "^4.3.0" lodash.upperfirst "^4.3.1" - ora "^4.0.0" + ora "4.0.2" pluralize "^8.0.0" - ramdasauce "^2.1.0" - semver "^7.0.0" - which "^2.0.0" - yargs-parser "^16.1.0" + semver "7.3.5" + which "2.0.2" + yargs-parser "^21.0.0" graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graphql@^15.5.0: - version "15.8.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" - integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== +graphql-import-node@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/graphql-import-node/-/graphql-import-node-0.0.5.tgz" + integrity sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q== + +graphql@15.5.0: + version "15.5.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz" + integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== + +graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" @@ -1112,82 +1830,111 @@ har-validator@~5.1.3: has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hi-base32@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" - integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== - hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ieee754@^1.1.13, ieee754@^1.2.1: +hyperlinker@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz" + integrity sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ== -import-fresh@^3.1.0: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -1195,9 +1942,14 @@ import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -1205,293 +1957,290 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ip-regex@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== +interface-datastore@^6.0.2: + version "6.1.1" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== + dependencies: + interface-store "^2.0.2" + nanoid "^3.0.2" + uint8arrays "^3.0.0" + +interface-store@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz" + integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== ip-regex@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -ipfs-block@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.8.1.tgz#05e1068832775e8f1c2da5b64106cc837fd2acb9" - integrity sha512-0FaCpmij+jZBoUYhjoB5ptjdl9QzvrdRIoBmUU5JiBnK2GA+4YM/ifklaB8ePRhA/rRzhd+KYBjvMFMAL4NrVQ== +ipfs-core-types@^0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.9.0.tgz" + integrity sha512-VJ8vJSHvI1Zm7/SxsZo03T+zzpsg8pkgiIi5hfwSJlsrJ1E2v68QPlnLshGHUSYw89Oxq0IbETYl2pGTFHTWfg== dependencies: - cids "~0.7.0" - class-is "^1.1.0" + interface-datastore "^6.0.2" + multiaddr "^10.0.0" + multiformats "^9.4.13" -ipfs-http-client@^34.0.0: - version "34.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" - integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== +ipfs-core-utils@^0.13.0: + version "0.13.0" + resolved "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.13.0.tgz" + integrity sha512-HP5EafxU4/dLW3U13CFsgqVO5Ika8N4sRSIb/dTg16NjLOozMH31TXV0Grtu2ZWo1T10ahTzMvrfT5f4mhioXw== dependencies: + any-signal "^2.1.2" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.9.0" + ipfs-unixfs "^6.0.3" + ipfs-utils "^9.0.2" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.2" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiaddr-to-uri "^8.0.0" + multiformats "^9.4.13" + nanoid "^3.1.23" + parse-duration "^1.0.0" + timeout-abort-controller "^2.0.0" + uint8arrays "^3.0.0" + +ipfs-http-client@55.0.0: + version "55.0.0" + resolved "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-55.0.0.tgz" + integrity sha512-GpvEs7C7WL9M6fN/kZbjeh4Y8YN7rY8b18tVWZnKxRsVwM25cIFrRI8CwNt3Ugin9yShieI3i9sPyzYGMrLNnQ== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@ipld/dag-json" "^8.0.1" + "@ipld/dag-pb" "^2.1.3" abort-controller "^3.0.0" - async "^2.6.1" - bignumber.js "^9.0.0" - bl "^3.0.0" - bs58 "^4.0.1" - buffer "^5.4.2" - cids "~0.7.1" - concat-stream "github:hugomrdias/concat-stream#feat/smaller" - debug "^4.1.0" - detect-node "^2.0.4" - end-of-stream "^1.4.1" - err-code "^2.0.0" - explain-error "^1.0.4" - flatmap "0.0.3" - glob "^7.1.3" - ipfs-block "~0.8.1" - ipfs-utils "~0.0.3" - ipld-dag-cbor "~0.15.0" - ipld-dag-pb "~0.17.3" - ipld-raw "^4.0.0" - is-ipfs "~0.6.1" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - iso-stream-http "~0.1.2" - iso-url "~0.4.6" - iterable-ndjson "^1.1.0" - just-kebab-case "^1.1.0" - just-map-keys "^1.1.0" - kind-of "^6.0.2" - ky "^0.11.2" - ky-universal "^0.2.2" - lru-cache "^5.1.1" - multiaddr "^6.0.6" - multibase "~0.6.0" - multicodec "~0.5.1" - multihashes "~0.4.14" - ndjson "github:hugomrdias/ndjson#feat/readable-stream3" - once "^1.4.0" - peer-id "~0.12.3" - peer-info "~0.15.1" - promise-nodeify "^3.0.1" - promisify-es6 "^1.0.3" - pull-defer "~0.2.3" - pull-stream "^3.6.9" - pull-to-stream "~0.1.1" - pump "^3.0.0" - qs "^6.5.2" - readable-stream "^3.1.1" - stream-to-pull-stream "^1.7.2" - tar-stream "^2.0.1" - through2 "^3.0.1" - -ipfs-utils@~0.0.3: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-0.0.4.tgz#946114cfeb6afb4454b4ccb10d2327cd323b0cce" - integrity sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig== - dependencies: - buffer "^5.2.1" - is-buffer "^2.0.3" + any-signal "^2.1.2" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.9.0" + ipfs-core-utils "^0.13.0" + ipfs-utils "^9.0.2" + it-first "^1.0.6" + it-last "^1.0.4" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiformats "^9.4.13" + native-abort-controller "^1.0.3" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^3.0.0" + +ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-utils@^9.0.2: + version "9.0.14" + resolved "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.14.tgz" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" is-electron "^2.2.0" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - kind-of "^6.0.2" - readable-stream "^3.4.0" - -ipld-dag-cbor@~0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.15.3.tgz#283afdb81d5b07db8e4fff7a10ef5e517e87f299" - integrity sha512-m23nG7ZyoVFnkK55/bLAErc7EfiMgaEQlqHWDTGzPI+O5r6bPfp+qbL5zTVSIT8tpbHmu174dwerVtLoVgeVyA== - dependencies: - borc "^2.1.2" - buffer "^5.5.0" - cids "~0.8.0" - is-circular "^1.0.2" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -ipld-dag-pb@~0.17.3: - version "0.17.4" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.17.4.tgz#080841cfdd014d996f8da7f3a522ec8b1f6b6494" - integrity sha512-YwCxETEMuXVspOKOhjIOHJvKvB/OZfCDkpSFiYBQN2/JQjM9y/RFCYzIQGm0wg7dCFLrhvfjAZLTSaKs65jzWA== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - multicodec "~0.5.1" - multihashing-async "~0.7.0" - protons "^1.0.1" - stable "~0.1.8" - -ipld-raw@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-4.0.1.tgz#49a6f58cdfece5a4d581925b19ee19255be2a29d" - integrity sha512-WjIdtZ06jJEar8zh+BHB84tE6ZdbS/XNa7+XCArOYfmeJ/c01T9VQpeMwdJQYn5c3s5UvvCu7y4VIi3vk2g1bA== - dependencies: - cids "~0.7.0" - multicodec "^1.0.0" - multihashing-async "~0.8.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-buffer@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-electron@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz" integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" - integrity sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g== - dependencies: - ip-regex "^2.0.0" - is-ip@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + resolved "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz" integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== dependencies: ip-regex "^4.0.0" -is-ipfs@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.6.3.tgz#82a5350e0a42d01441c40b369f8791e91404c497" - integrity sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ== - dependencies: - bs58 "^4.0.1" - cids "~0.7.0" - mafmt "^7.0.0" - multiaddr "^7.2.1" - multibase "~0.6.0" - multihashes "~0.4.13" - is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - integrity sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg== - -is-pull-stream@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" - integrity sha512-NWLwqCc95I6m8FZDYLAmVJc9Xgk8O+8pPOoDKFTC293FH4S7FBcbLCw3WWPCdiT8uUSdzPy47VM08WPDMJJrag== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iso-random-stream@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-1.1.2.tgz#c703da2c518db573277c5678cc43c5298283d64c" - integrity sha512-7y0tsBBgQs544iTYjyrMp5xvgrbYR8b+plQq1Bryp+03p0LssrxC9C1M0oHv4QESDt7d95c74XvMk/yawKqX+A== - dependencies: - buffer "^6.0.3" - readable-stream "^3.4.0" - -iso-stream-http@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/iso-stream-http/-/iso-stream-http-0.1.2.tgz#b3dfea4c9f23ff26d078d40c539cfc0dfebacd37" - integrity sha512-oHEDNOysIMTNypbg2f1SlydqRBvjl4ZbSE9+0awVxnkx3K2stGTFwB/kpVqnB6UEfF8QD36kAjDwZvqyXBLMnQ== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^3.1.1" - -iso-url@~0.4.6, iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== +iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== isomorphic-ws@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -iterable-ndjson@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" - integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== dependencies: - string_decoder "^1.2.0" + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== -jayson@^3.0.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" - integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-peekable@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +jake@^10.6.1, jake@^10.8.5: + version "10.8.6" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.6.tgz" + integrity sha512-G43Ub9IYEFfu72sua6rzooi8V8Gz2lkfk48rW20vEWCGizeaEPlKB1Kh8JIA84yQbiAEfqlPmSpGgCKKxH3rDA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jayson@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jayson/-/jayson-4.0.0.tgz" + integrity sha512-v2RNpDCMu45fnLzSk47vx7I+QUaOsox6f5X0CUlabAFwxoP+8MfAY0NQRFwOEYXIxm8Ih5y6OaEa5KYiQMkyAA== dependencies: "@types/connect" "^3.4.33" "@types/node" "^12.12.54" @@ -1503,63 +2252,62 @@ jayson@^3.0.2: eyes "^0.1.8" isomorphic-ws "^4.0.1" json-stringify-safe "^5.0.1" - lodash "^4.17.20" uuid "^8.3.2" ws "^7.4.5" -js-sha3@^0.8.0, js-sha3@~0.8.0: +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@3.14.1, js-yaml@^3.14.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== - dependencies: - delimit-stream "0.1.0" - jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -1568,12 +2316,12 @@ jsonfile@^6.0.1: jsonparse@^1.2.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" @@ -1581,273 +2329,243 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -just-kebab-case@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/just-kebab-case/-/just-kebab-case-1.1.0.tgz#ebe854fde84b0afa4e597fcd870b12eb3c026755" - integrity sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA== - -just-map-keys@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.2.1.tgz#ef6e16133b7d34329962dfae9101d581abb1b143" - integrity sha512-Dmyz1Cy2SWM+PpqDPB1kdDglyexdzMthnAsvOIE9w4OPj8NDRuY1mh20x/JfG5w6fCGw9F0WmcofJhYZ4MiuyA== - -keypair@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" - integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -ky-universal@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.2.2.tgz#7a36e1a75641a98f878157463513965f799f5bfe" - integrity sha512-fb32o/fKy/ux2ALWa9HU2hvGtfOq7/vn2nH0FpVE+jwNzyTeORlAbj3Fiw+WLMbUlmVqZIWupnLZ2USHvqwZHw== - dependencies: - abort-controller "^3.0.0" - node-fetch "^2.3.0" - -ky@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/ky/-/ky-0.11.2.tgz#4ffe6621d9d9ab61bf0f5500542e3a96d1ba0815" - integrity sha512-5Aou5BWue5/mkPqIRqzSWW+0Hkl403pr/2AIrCKYw7cVl/Xoe8Xe4KLBO0PRjbz7GnRe1/8wW1KhqQNFFE7/GQ== - -libp2p-crypto-secp256k1@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.3.1.tgz#4cbeb857f5cfe5fefb1253e6b2994420c0ca166e" - integrity sha512-evrfK/CeUSd/lcELUdDruyPBvxDmLairth75S32OLl3H+++2m2fV24JEtxzdFS9JH3xEFw0h6JFO8DBa1bP9dA== - dependencies: - async "^2.6.2" - bs58 "^4.0.1" - multihashing-async "~0.6.0" - nodeify "^1.0.1" - safe-buffer "^5.1.2" - secp256k1 "^3.6.2" - -libp2p-crypto@~0.16.1: - version "0.16.4" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.16.4.tgz#fb1a4ba39d56789303947784b5b0d6cefce12fdc" - integrity sha512-II8HxKc9jbmQp34pprlluNxsBCWJDjHRPYJzuRy7ragztNip9Zb7uJ4lCje6gGzz4DNAcHkAUn+GqCIK1592iA== +keccak@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== dependencies: - asmcrypto.js "^2.3.2" - asn1.js "^5.0.1" - async "^2.6.1" - bn.js "^4.11.8" - browserify-aes "^1.2.0" - bs58 "^4.0.1" - iso-random-stream "^1.1.0" - keypair "^1.0.1" - libp2p-crypto-secp256k1 "~0.3.0" - multihashing-async "~0.5.1" - node-forge "^0.10.0" - pem-jwk "^2.0.0" - protons "^1.0.1" - rsa-pem-to-jwk "^1.1.3" - tweetnacl "^1.0.0" - ursa-optional "~0.10.0" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.kebabcase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz" integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.lowercase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" + resolved "https://registry.npmjs.org/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz" integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== lodash.lowerfirst@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" + resolved "https://registry.npmjs.org/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz" integrity sha512-UUKX7VhP1/JL54NXg2aq/E1Sfnjjes8fNYTNkPU8ZmsaVeBvPHKdbNaN79Re5XRL01u6wbq3j0cbYZj71Fcu5w== lodash.pad@^4.5.1: version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + resolved "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz" integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== lodash.padend@^4.6.1: version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + resolved "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz" integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== lodash.padstart@^4.6.1: version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + resolved "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz" integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== lodash.repeat@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" + resolved "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz" integrity sha512-eWsgQW89IewS95ZOcr15HHCX6FVDxq3f2PNUIng3fyzsPev9imFQxIYdFZ6crl8L56UR6ZlGDLcEb3RZsCSSqw== lodash.snakecase@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== lodash.startcase@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== lodash.trim@^4.5.1: version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" + resolved "https://registry.npmjs.org/lodash.trim/-/lodash.trim-4.5.1.tgz" integrity sha512-nJAlRl/K+eiOehWKDzoBVrSMhK0K3A3YQsUNXHQa5yIrKBAhsZgSu3KoAFoFT+mEgiyBHddZ0pRk1ITpIp90Wg== lodash.trimend@^4.5.1: version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" + resolved "https://registry.npmjs.org/lodash.trimend/-/lodash.trimend-4.5.1.tgz" integrity sha512-lsD+k73XztDsMBKPKvzHXRKFNMohTjoTKIIo4ADLn5dA65LZ1BqlAvSXhR2rPEC3BgAUQnzMnorqDtqn2z4IHA== lodash.trimstart@^4.5.1: version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" + resolved "https://registry.npmjs.org/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz" integrity sha512-b/+D6La8tU76L/61/aN0jULWHkT0EeJCmVstPBn/K9MtD2qBW83AsBNrr63dKuWYwVMO7ucv13QNO/Ek/2RKaQ== lodash.uppercase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" + resolved "https://registry.npmjs.org/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz" integrity sha512-+Nbnxkj7s8K5U8z6KnEYPGUOGp3woZbB7Ecs7v3LkkjLQSm2kP9SKIILitN1ktn2mB/tmM9oSlku06I+/lH7QA== lodash.upperfirst@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.17.14, lodash@^4.17.20: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - log-symbols@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: chalk "^2.4.2" long@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== + resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" +long@^5.2.0: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -mafmt@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-6.0.10.tgz#3ad251c78f14f8164e66f70fd3265662da41113a" - integrity sha512-FjHDnew6dW9lUu3eYwP0FvvJl9uvNbqfoJM+c1WJcSyutNEIlyu6v3f/rlPnD1cnmue38IjuHlhBdIh3btAiyw== - dependencies: - multiaddr "^6.1.0" +lru-cache@^9.1.1: + version "9.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz" + integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== -mafmt@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" - integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== - dependencies: - multiaddr "^7.3.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" inherits "^2.0.1" safe-buffer "^5.1.2" +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.2, minimatch@^3.1.1: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.6: +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== minipass@^3.0.0: version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz" integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== dependencies: yallist "^4.0.0" +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +"minipass@^5.0.0 || ^6.0.2": + version "6.0.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz" + integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== + minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -1855,284 +2573,192 @@ minizlib@^2.1.1: mkdirp@^0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiaddr@^6.0.3, multiaddr@^6.0.6, multiaddr@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-6.1.1.tgz#9aae57b3e399089b9896d9455afa8f6b117dff06" - integrity sha512-Q1Ika0F9MNhMtCs62Ue+GWIJtRFEhZ3Xz8wH7/MZDVZTWhil1/H2bEGN02kUees3hkI3q1oHSjmXYDM0gxaFjQ== - dependencies: - bs58 "^4.0.1" - class-is "^1.1.0" - hi-base32 "~0.5.0" - ip "^1.1.5" - is-ip "^2.0.0" - varint "^5.0.0" - -multiaddr@^7.2.1, multiaddr@^7.3.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" - integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== - dependencies: - buffer "^5.5.0" - cids "~0.8.0" - class-is "^1.1.0" - is-ip "^3.1.0" - multibase "^0.7.0" - varint "^5.0.0" - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@^1.0.0, multibase@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" - integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^1.0.0, multicodec@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multicodec@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multihashes@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" - integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== - dependencies: - buffer "^5.6.0" - multibase "^1.0.1" - varint "^5.0.0" - -multihashes@~0.4.13, multihashes@~0.4.14, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== +multiaddr-to-uri@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz" + integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" + multiaddr "^10.0.0" -multihashing-async@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.5.2.tgz#4af40e0dde2f1dbb12a7c6b265181437ac26b9de" - integrity sha512-mmyG6M/FKxrpBh9xQDUvuJ7BbqT93ZeEeH5X6LeMYKoYshYLr9BDdCsvDtZvn+Egf+/Xi+aOznrWL4vp3s+p0Q== +multiaddr@^10.0.0: + version "10.0.1" + resolved "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz" + integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" + dns-over-http-resolver "^1.2.3" + err-code "^3.0.1" + is-ip "^3.1.0" + multiformats "^9.4.5" + uint8arrays "^3.0.0" + varint "^6.0.0" -multihashing-async@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.6.0.tgz#c1fc6696a624b9bf39b160b0c4c4e7ba3f394453" - integrity sha512-Qv8pgg99Lewc191A5nlXy0bSd2amfqlafNJZmarU6Sj7MZVjpR94SCxQjf4DwPtgWZkiLqsjUQBXA2RSq+hYyA== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" +multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.4: + version "9.9.0" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== -multihashing-async@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.7.0.tgz#3234fb98295be84386b85bfd20377d3e5be20d6b" - integrity sha512-SCbfl3f+DzJh+/5piukga9ofIOxwfT05t8R4jfzZIJ88YE9zU9+l3K2X+XB19MYyxqvyK9UJRNWbmQpZqQlbRA== - dependencies: - blakejs "^1.1.0" - buffer "^5.2.1" - err-code "^1.1.2" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js-revisited "^3.0.0" +nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -multihashing-async@~0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.8.2.tgz#3d5da05df27d83be923f6d04143a0954ff87f27f" - integrity sha512-2lKa1autuCy8x7KIEj9aVNbAb3aIMRFYIwN7mq/zD4pxgNIVgGlm+f6GKY4880EOF2Y3GktHYssRy7TAJQ2DyQ== - dependencies: - blakejs "^1.1.0" - buffer "^5.4.3" - err-code "^2.0.0" - js-sha3 "^0.8.0" - multihashes "^1.0.1" - murmurhash3js-revisited "^3.0.0" +native-abort-controller@^1.0.3, native-abort-controller@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz" + integrity sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ== -murmurhash3js-revisited@^3.0.0: +native-fetch@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== + resolved "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +natural-orderby@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz" + integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== -nan@^2.14.0, nan@^2.14.2: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -"ndjson@github:hugomrdias/ndjson#feat/readable-stream3": - version "1.5.0" - resolved "https://codeload.github.com/hugomrdias/ndjson/tar.gz/4db16da6b42e5b39bf300c3a7cde62abb3fa3a11" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^3.1.0" - through2 "^3.0.0" +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-fetch@^2.3.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" - integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== +node-fetch@^2.6.8: + version "2.6.11" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== dependencies: whatwg-url "^5.0.0" -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - integrity sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw== - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" +node-gyp-build@^4.2.0: + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^4.0.0: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g== - object-assign@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.9.0: version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-treeify@^1.1.33: + version "1.1.33" + resolved "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz" + integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - integrity sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ== - dependencies: - wordwrap "~0.0.2" - -ora@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== +ora@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.2.tgz#0e1e68fd45b135d28648b27cf08081fa6e8a297d" + integrity sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig== dependencies: - chalk "^3.0.0" + chalk "^2.4.2" cli-cursor "^3.1.0" cli-spinners "^2.2.0" is-interactive "^1.0.0" log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" + strip-ansi "^5.2.0" wcwidth "^1.0.1" -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-duration@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.3.tgz" + integrity sha512-o6NAh12na5VvR6nFejkU0gpQ8jmOY9Y9sTU2ke3L3G/d/3z8jqmbBbeyBGHU73P4JLXfc7tJARygIK3WGIkloA== + parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -2140,194 +2766,173 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +password-prompt@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-scurry@^1.6.1: + version "1.9.2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz" + integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== + dependencies: + lru-cache "^9.1.1" + minipass "^5.0.0 || ^6.0.2" + path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -peer-id@~0.12.2, peer-id@~0.12.3: - version "0.12.5" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" - integrity sha512-3xVWrtIvNm9/OPzaQBgXDrfWNx63AftgFQkvqO6YSZy7sP3Fuadwwbn54F/VO9AnpyW/26i0WRQz9FScivXrmw== - dependencies: - async "^2.6.3" - class-is "^1.1.0" - libp2p-crypto "~0.16.1" - multihashes "~0.4.15" - -peer-info@~0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.15.1.tgz#21254a7c516d0dd046b150120b9aaf1b9ad02146" - integrity sha512-Y91Q2tZRC0CpSTPd1UebhGqniOrOAk/aj60uYUcWJXCoLTAnGu+4LJGoiay8ayudS6ice7l3SKhgL/cS62QacA== - dependencies: - mafmt "^6.0.2" - multiaddr "^6.0.3" - peer-id "~0.12.2" - unique-by "^1.0.0" - -pem-jwk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" - integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: - asn1.js "^5.0.1" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pkginfo@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== - pluralize@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -prettier@^1.13.5: +prettier@1.19.1: version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise-nodeify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" - integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== - -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - integrity sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA== - dependencies: - is-promise "~1" - -promisify-es6@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" - integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== - -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -protons@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/protons/-/protons-1.2.1.tgz#5f1e0db8b2139469cd1c3b4e332a4c2d95d0a218" - integrity sha512-2oqDyc/SN+tNcJf8XxrXhYL7sQn2/OMl8mSdD7NVGsWjMEmAbks4eDVnCyf0vAoRbBWyWTEXWk4D8XfuKVl3zg== - dependencies: - buffer "^5.5.0" - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - varint "^5.0.0" +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +protobufjs@^6.10.2: + version "6.11.3" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" psl@^1.1.28: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -pull-defer@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-stream@^3.2.3, pull-stream@^3.6.9: - version "3.7.0" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.7.0.tgz#85de0e44ff38a4d2ad08cc43fc458e1922f9bf0b" - integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== - -pull-to-stream@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pull-to-stream/-/pull-to-stream-0.1.1.tgz#fa2058528528e3542b81d6f17cbc42288508ff37" - integrity sha512-thZkMv6F9PILt9zdvpI2gxs19mkDrlixYKX6cOBxAW16i1NZH+yLAmF4r8QfJ69zuQh27e01JZP9y27tsH021w== - dependencies: - readable-stream "^3.1.1" - pump@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + resolved "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz" integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -qs@^6.5.2: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== +pvtsutils@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz" + integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== + dependencies: + tslib "^2.4.0" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -ramda@^0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" - integrity sha512-HEm619G8PaZMfkqCa23qiOe7r3R0brPu7ZgOsgKUsnvLhd0qhc/vTjkUovomgPWa5ECBa08fJZixth9LaoBo5w== - -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -ramdasauce@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" - integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - ramda "^0.24.1" + safe-buffer "^5.1.0" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + p-defer "^3.0.0" readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -2338,9 +2943,18 @@ readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~1.0.26-4: version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" @@ -2350,14 +2964,28 @@ readable-stream@~1.0.26-4: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -request@^2.88.0: +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz" + integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== + dependencies: + esprima "~4.0.0" + +request@2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -2383,82 +3011,91 @@ request@^2.88.0: resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@^2.6.3: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" -rsa-pem-to-jwk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" - integrity sha512-ZlVavEvTnD8Rzh/pdB8NH4VF5GNEtF6biGQcTtC4GKFMsbZR08oHtOYefbhCN+JnJIuMItiCDCMycdcMrw6blA== +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: - object-assign "^2.0.0" - rsa-unpack "0.0.6" + bn.js "^5.2.0" -rsa-unpack@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" - integrity sha512-HRrl8GHjjPziPFRDJPq/v5OxZ3IPdksV5h3cime/oHgcgM1k1toO5OdtzClgBqRf5dF6IgptOB0g/zFb0w5zQw== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - optimist "~0.3.5" + queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -secp256k1@^3.6.2: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== +scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" semver@7.3.5: version "7.3.5" @@ -2467,74 +3104,107 @@ semver@7.3.5: dependencies: lru-cache "^6.0.0" -semver@^7.0.0: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@7.4.0: + version "7.4.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz" + integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== + dependencies: + lru-cache "^6.0.0" + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.3.7: + version "7.5.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2: +signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signed-varint@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - integrity sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@^0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - varint "~5.0.0" + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== split-ca@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" + resolved "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz" integrity sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ== -split2@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.7.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" @@ -2547,82 +3217,120 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stable@~0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stream-to-pull-stream@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" + get-iterator "^1.0.2" -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string_decoder@^1.1.1, string_decoder@^1.2.0: +string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - ansi-regex "^3.0.0" + ansi-regex "^4.1.0" -strip-ansi@^6.0.0: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +sync-request@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + tar-fs@~1.16.3: version "1.16.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz" integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== dependencies: chownr "^1.0.1" @@ -2632,7 +3340,7 @@ tar-fs@~1.16.3: tar-stream@^1.1.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== dependencies: bl "^1.0.0" @@ -2643,20 +3351,9 @@ tar-stream@^1.1.2: to-buffer "^1.1.1" xtend "^4.0.0" -tar-stream@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tar@^6.1.0: version "6.1.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz" integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== dependencies: chownr "^2.0.0" @@ -2666,48 +3363,66 @@ tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" -through2@^3.0.0, through2@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" "through@>=2.2.7 <3": version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tmp-promise@^3.0.2: +timeout-abort-controller@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-2.0.0.tgz" + integrity sha512-2FAPXfzTPYEgw27bQGTHc0SzrbmnU2eso4qo172zMLZzaGqeu09PFa5B2FCUHM1tflgRqPgn5KQgp6+Vex4uNA== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.4" + retimer "^3.0.0" + +tmp-promise@3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz" integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" tmp@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" to-buffer@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" @@ -2715,79 +3430,112 @@ tough-cookie@~2.5.0: tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: + version "2.5.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== + tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -tweetnacl@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -unique-by@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" - integrity sha512-rJRXK5V0zL6TiSzhoGNpJp5dr+TZBLoPJFC06rLn17Ug++7Aa0Qnve5v+skXeQxx6/sI7rBsSesa6MAcmFi8Ew== +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" -ursa-optional@~0.10.0: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" - integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== - dependencies: - bindings "^1.5.0" - nan "^2.14.2" +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -varint@^5.0.0, varint@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" @@ -2796,70 +3544,127 @@ verror@1.10.0: wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" +web-streams-polyfill@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +web3-eth-abi@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz" + integrity sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg== + dependencies: + "@ethersproject/abi" "5.0.7" + web3-utils "1.7.0" + +web3-utils@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.0.tgz" + integrity sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webcrypto-core@^1.7.7: + version "1.7.7" + resolved "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.7.tgz" + integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.2" + tslib "^2.4.0" + webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@2.0.2, which@^2.0.0, which@^2.0.1: +which@2.0.2, which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw== +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^7.4.5: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2, yaml@^1.5.1, yaml@^1.7.2: +yaml@1.10.2, yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From e808fb26cb0ec752679c42d03bafb95d99c8b5af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 31 May 2023 13:01:42 +0200 Subject: [PATCH 24/44] feat: add sepolia support (https://github.com/snapshot-labs/sx-subgraph/pull/25) * feat: add sepolia support * chore: update start blocks * chore: add network suffix to goerli deploy script --- apps/subgraph-api/networks.json | 14 ++++++++++++++ apps/subgraph-api/package.json | 3 ++- apps/subgraph-api/subgraph.yaml | 7 +++++-- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 apps/subgraph-api/networks.json diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json new file mode 100644 index 000000000..097910866 --- /dev/null +++ b/apps/subgraph-api/networks.json @@ -0,0 +1,14 @@ +{ + "goerli": { + "ProxyFactory": { + "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", + "startBlock": 9091182 + } + }, + "sepolia": { + "ProxyFactory": { + "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", + "startBlock": 3589272 + } + } +} diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 671d9a8d3..3067337c6 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -8,7 +8,8 @@ "remove-local": "graph remove --node http://localhost:8020/ snapshot-labs/sx-subgraph", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", - "deploy-studio": "graph deploy --studio sx-goerli" + "deploy-studio-goerli": "graph deploy --network goerli --studio sx-goerli", + "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia" }, "dependencies": { "@graphprotocol/graph-cli": "0.50.1", diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index dad8f06a6..5a718294b 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -6,9 +6,9 @@ dataSources: name: ProxyFactory network: goerli source: - address: "0x12A1FfFFfd70677939D61d641eA043bc9060c718" abi: ProxyFactory - startBlock: 9049740 + address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' + startBlock: 9091182 mapping: kind: ethereum/events apiVersion: 0.0.7 @@ -95,6 +95,7 @@ templates: abis: - name: Space file: ./abis/Space.json + network: goerli - name: ProposalMetadata kind: file/ipfs mapping: @@ -107,6 +108,7 @@ templates: abis: - name: Space file: ./abis/Space.json + network: goerli - name: StrategiesParsedMetadataData kind: file/ipfs mapping: @@ -119,3 +121,4 @@ templates: abis: - name: Space file: ./abis/Space.json + network: goerli From aba84a40775b4350a132e64caa03eb1854f30bf1 Mon Sep 17 00:00:00 2001 From: less Date: Wed, 7 Jun 2023 14:28:02 +0700 Subject: [PATCH 25/44] feat: add linea-testnet support --- apps/subgraph-api/networks.json | 6 ++++++ apps/subgraph-api/package.json | 1 + 2 files changed, 7 insertions(+) diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json index 097910866..c640c2107 100644 --- a/apps/subgraph-api/networks.json +++ b/apps/subgraph-api/networks.json @@ -10,5 +10,11 @@ "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", "startBlock": 3589272 } + }, + "linea-testnet": { + "ProxyFactory": { + "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", + "startBlock": 858097 + } } } diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 3067337c6..3a236a133 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -8,6 +8,7 @@ "remove-local": "graph remove --node http://localhost:8020/ snapshot-labs/sx-subgraph", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", + "deploy-linea-testnet": "graph deploy --network linea-testnet --studio sx-linea-testnet", "deploy-studio-goerli": "graph deploy --network goerli --studio sx-goerli", "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia" }, From 56fbf99836ea1550fd81289b8d4f066de9d86c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Sat, 10 Jun 2023 11:10:08 +0200 Subject: [PATCH 26/44] feat: add cancelled property to Proposal (https://github.com/snapshot-labs/sx-subgraph/pull/27) * feat: add cancelled property to Proposal * feat: clear proposal/vote counts on cancel --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 18 ++++++++++++++++++ apps/subgraph-api/subgraph.yaml | 2 ++ 3 files changed, 21 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 2a26f26f1..3d0f9160c 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -95,6 +95,7 @@ type Proposal @entity { vote_count: Int! executed: Boolean! completed: Boolean! + cancelled: Boolean! } type ProposalMetadata @entity { diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index cab927941..92152259f 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -7,6 +7,7 @@ import { ProposalCreated, ProposalUpdated, ProposalExecuted, + ProposalCancelled, VoteCast, MetadataURIUpdated, VotingDelayUpdated, @@ -153,6 +154,7 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.execution_time = 0 proposal.executed = false proposal.completed = false + proposal.cancelled = false let executionStrategy = ExecutionStrategy.load( event.params.proposal.executionStrategy.toHexString() @@ -261,6 +263,22 @@ export function handleProposalExecuted(event: ProposalExecuted): void { proposal.save() } +export function handleProposalCancelled(event: ProposalCancelled): void { + let proposal = Proposal.load(`${event.address.toHexString()}/${event.params.proposalId}`) + let space = Space.load(event.address.toHexString()) + + if (space == null || proposal == null) { + return + } + + space.proposal_count -= 1 + space.vote_count = -proposal.vote_count + space.save() + + proposal.cancelled = true + proposal.save() +} + export function handleVoteCreated(event: VoteCast): void { let space = Space.load(event.address.toHexString()) if (space == null) { diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 5a718294b..fcbba3e82 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -52,6 +52,8 @@ templates: handler: handleProposalUpdated - event: ProposalExecuted(uint256) handler: handleProposalExecuted + - event: ProposalCancelled(uint256) + handler: handleProposalCancelled - event: VoteCast(uint256,address,uint8,uint256) handler: handleVoteCreated - event: MetadataURIUpdated(string) From 88098e6254bdcfd2d602c46322d709ec4339b53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Sat, 10 Jun 2023 13:43:35 +0200 Subject: [PATCH 27/44] fix: subtract space votes (https://github.com/snapshot-labs/sx-subgraph/pull/28) --- apps/subgraph-api/src/mapping.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 92152259f..f7eb036b2 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -272,7 +272,7 @@ export function handleProposalCancelled(event: ProposalCancelled): void { } space.proposal_count -= 1 - space.vote_count = -proposal.vote_count + space.vote_count -= proposal.vote_count space.save() proposal.cancelled = true From 501aadd1f073e772616d9ecbc1774e59acb6f3bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 15 Jun 2023 00:28:39 +0200 Subject: [PATCH 28/44] feat: index cover image (https://github.com/snapshot-labs/sx-subgraph/pull/29) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/ipfs.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 3d0f9160c..0b7940884 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -27,6 +27,7 @@ type SpaceMetadata @entity { name: String! about: String! avatar: String! + cover: String! external_url: String! delegation_api_type: String delegation_api_url: String diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts index 7f9189108..78921e789 100644 --- a/apps/subgraph-api/src/ipfs.ts +++ b/apps/subgraph-api/src/ipfs.ts @@ -23,6 +23,7 @@ export function handleSpaceMetadata(content: Bytes): void { let delegation_api_type = propertiesObj.get('delegation_api_type') let delegation_api_url = propertiesObj.get('delegation_api_url') + let cover = propertiesObj.get('cover') let github = propertiesObj.get('github') let twitter = propertiesObj.get('twitter') let discord = propertiesObj.get('discord') @@ -44,6 +45,7 @@ export function handleSpaceMetadata(content: Bytes): void { spaceMetadata.delegation_api_url = null } + spaceMetadata.cover = cover ? cover.toString() : '' spaceMetadata.github = github ? github.toString() : '' spaceMetadata.twitter = twitter ? twitter.toString() : '' spaceMetadata.discord = discord ? discord.toString() : '' @@ -65,6 +67,7 @@ export function handleSpaceMetadata(content: Bytes): void { } else { spaceMetadata.delegation_api_type = null spaceMetadata.delegation_api_url = null + spaceMetadata.cover = '' spaceMetadata.github = '' spaceMetadata.twitter = '' spaceMetadata.discord = '' From a1f78363a9eca101a9ab75cf4ee144cf6597a2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Tue, 20 Jun 2023 20:38:47 +0200 Subject: [PATCH 29/44] feat: add veto tracking (https://github.com/snapshot-labs/sx-subgraph/pull/30) --- apps/subgraph-api/.prettierrc | 7 +++++++ apps/subgraph-api/schema.graphql | 4 ++++ apps/subgraph-api/src/mapping.ts | 36 ++++++++++++++++++++++++++++++-- apps/subgraph-api/subgraph.yaml | 2 ++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 apps/subgraph-api/.prettierrc diff --git a/apps/subgraph-api/.prettierrc b/apps/subgraph-api/.prettierrc new file mode 100644 index 000000000..0464a0cc0 --- /dev/null +++ b/apps/subgraph-api/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 100, + "arrowParens": "always", + "trailingComma": "es5" +} diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 0b7940884..4f6b3503c 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -60,6 +60,7 @@ type ExecutionStrategy @entity { id: ID! type: String! quorum: BigDecimal! + timelock_veto_guardian: Bytes timelock_delay: BigInt! } @@ -82,6 +83,7 @@ type Proposal @entity { execution_time: Int! execution_strategy: Bytes! execution_strategy_type: String! + timelock_veto_guardian: Bytes timelock_delay: BigInt! strategies: [Bytes!]! strategies_params: [String!]! @@ -93,8 +95,10 @@ type Proposal @entity { created: Int! tx: Bytes! execution_tx: Bytes + veto_tx: Bytes vote_count: Int! executed: Boolean! + vetoed: Boolean! completed: Boolean! cancelled: Boolean! } diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index f7eb036b2..f57ca1baa 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -15,7 +15,10 @@ import { MaxVotingDurationUpdated, OwnershipTransferred, } from '../generated/templates/Space/Space' -import { ProposalExecuted as TimelockProposalExecuted } from '../generated/templates/TimelockExecutionStrategy/TimelockExecutionStrategy' +import { + ProposalExecuted as TimelockProposalExecuted, + ProposalVetoed as TimelockProposalVetoed, +} from '../generated/templates/TimelockExecutionStrategy/TimelockExecutionStrategy' import { Space as SpaceTemplate, TimelockExecutionStrategy as TimelockExecutionStrategyTemplate, @@ -58,12 +61,21 @@ export function handleProxyDeployed(event: ProxyDeployed): void { let executionStrategyContract = TimelockExecutionStrategy.bind(event.params.proxy) let typeResult = executionStrategyContract.try_getStrategyType() let quorumResult = executionStrategyContract.try_quorum() + let timelockVetoGuardianResult = executionStrategyContract.try_vetoGuardian() let timelockDelayResult = executionStrategyContract.try_timelockDelay() - if (typeResult.reverted || quorumResult.reverted || timelockDelayResult.reverted) return + if ( + typeResult.reverted || + quorumResult.reverted || + timelockVetoGuardianResult.reverted || + timelockDelayResult.reverted + ) { + return + } let executionStrategy = new ExecutionStrategy(event.params.proxy.toHexString()) executionStrategy.type = typeResult.value executionStrategy.quorum = new BigDecimal(quorumResult.value) + executionStrategy.timelock_veto_guardian = timelockVetoGuardianResult.value executionStrategy.timelock_delay = timelockDelayResult.value executionStrategy.save() @@ -153,6 +165,7 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.execution_strategy = event.params.proposal.executionStrategy proposal.execution_time = 0 proposal.executed = false + proposal.vetoed = false proposal.completed = false proposal.cancelled = false @@ -161,10 +174,12 @@ export function handleProposalCreated(event: ProposalCreated): void { ) if (executionStrategy !== null) { proposal.quorum = executionStrategy.quorum + proposal.timelock_veto_guardian = executionStrategy.timelock_veto_guardian proposal.timelock_delay = executionStrategy.timelock_delay proposal.execution_strategy_type = executionStrategy.type } else { proposal.quorum = new BigDecimal(new BigInt(0)) + proposal.timelock_veto_guardian = null proposal.timelock_delay = new BigInt(0) proposal.execution_strategy_type = 'none' } @@ -398,3 +413,20 @@ export function handleTimelockProposalExecuted(event: TimelockProposalExecuted): proposal.execution_tx = event.transaction.hash proposal.save() } + +export function handleTimelockProposalVetoed(event: TimelockProposalVetoed): void { + let executionHash = ExecutionHash.load(event.params.executionPayloadHash.toHexString()) + if (executionHash === null) { + return + } + + let proposal = Proposal.load(executionHash.proposal_id) + if (proposal === null) { + return + } + + proposal.completed = true + proposal.vetoed = true + proposal.veto_tx = event.transaction.hash + proposal.save() +} diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index fcbba3e82..9686671ae 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -84,6 +84,8 @@ templates: eventHandlers: - event: ProposalExecuted(bytes32) handler: handleTimelockProposalExecuted + - event: ProposalVetoed(bytes32) + handler: handleTimelockProposalVetoed file: ./src/mapping.ts - name: SpaceMetadata kind: file/ipfs From a3df29faa069393bc0b30af54a3b56edb36b353c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Mon, 26 Jun 2023 18:14:41 +0200 Subject: [PATCH 30/44] feat: track edited timestamp (https://github.com/snapshot-labs/sx-subgraph/pull/31) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 4f6b3503c..289ce1c54 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -93,6 +93,7 @@ type Proposal @entity { scores_total: BigDecimal! quorum: BigDecimal! created: Int! + edited: Int tx: Bytes! execution_tx: Bytes veto_tx: Bytes diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index f57ca1baa..adbecded1 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -220,6 +220,7 @@ export function handleProposalUpdated(event: ProposalUpdated): void { return } + proposal.edited = event.block.timestamp.toI32() proposal.execution_strategy = event.params.newExecutionStrategy.addr proposal.execution_hash = event.params.newExecutionStrategy.params.toHexString() From fe69b73c6c76e8b7dac86b5306c3c65f0fee6a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Sat, 29 Jul 2023 16:36:52 +0200 Subject: [PATCH 31/44] feat: add sx-evm v1 compatibility (https://github.com/snapshot-labs/sx-subgraph/pull/32) * feat: add sx-evm v1 compatibility * chore: update factory address --- .../abis/AvatarExecutionStrategy.json | 115 +++--- apps/subgraph-api/abis/ProxyFactory.json | 6 +- apps/subgraph-api/abis/Space.json | 377 +++++++++--------- .../abis/TimelockExecutionStrategy.json | 169 ++++---- apps/subgraph-api/networks.json | 8 +- apps/subgraph-api/src/mapping.ts | 44 +- apps/subgraph-api/subgraph.yaml | 20 +- 7 files changed, 387 insertions(+), 352 deletions(-) diff --git a/apps/subgraph-api/abis/AvatarExecutionStrategy.json b/apps/subgraph-api/abis/AvatarExecutionStrategy.json index 45670cece..6f0670a9b 100644 --- a/apps/subgraph-api/abis/AvatarExecutionStrategy.json +++ b/apps/subgraph-api/abis/AvatarExecutionStrategy.json @@ -30,11 +30,6 @@ "name": "ExecutionFailed", "type": "error" }, - { - "inputs": [], - "name": "InvalidPayload", - "type": "error" - }, { "inputs": [ { @@ -71,6 +66,12 @@ "internalType": "address[]", "name": "_spaces", "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_quorum", + "type": "uint256" } ], "name": "AvatarExecutionStrategySetUp", @@ -108,6 +109,19 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "newQuorum", + "type": "uint256" + } + ], + "name": "QuorumUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -178,45 +192,40 @@ { "components": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -258,45 +267,40 @@ { "components": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -358,9 +362,9 @@ "name": "isSpaceEnabled", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", @@ -399,6 +403,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_quorum", + "type": "uint256" + } + ], + "name": "setQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/apps/subgraph-api/abis/ProxyFactory.json b/apps/subgraph-api/abis/ProxyFactory.json index 8189145a3..8b651f126 100644 --- a/apps/subgraph-api/abis/ProxyFactory.json +++ b/apps/subgraph-api/abis/ProxyFactory.json @@ -46,9 +46,9 @@ "type": "bytes" }, { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" + "internalType": "uint256", + "name": "saltNonce", + "type": "uint256" } ], "name": "deployProxy", diff --git a/apps/subgraph-api/abis/Space.json b/apps/subgraph-api/abis/Space.json index c3fd07d6c..57851493b 100644 --- a/apps/subgraph-api/abis/Space.json +++ b/apps/subgraph-api/abis/Space.json @@ -56,6 +56,11 @@ "name": "InvalidDuration", "type": "error" }, + { + "inputs": [], + "name": "InvalidPayload", + "type": "error" + }, { "inputs": [], "name": "InvalidProposal", @@ -285,45 +290,40 @@ { "components": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -441,95 +441,92 @@ "name": "space", "type": "address" }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "votingDelay", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "minVotingDuration", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "maxVotingDuration", - "type": "uint32" - }, { "components": [ { "internalType": "address", - "name": "addr", + "name": "owner", "type": "address" }, { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Strategy", - "name": "proposalValidationStrategy", - "type": "tuple" - }, - { - "indexed": false, - "internalType": "string", - "name": "proposalValidationStrategyMetadataURI", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "daoURI", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "metadataURI", - "type": "string" - }, - { - "components": [ + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, { - "internalType": "address", - "name": "addr", - "type": "address" + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" }, { - "internalType": "bytes", - "name": "params", - "type": "bytes" + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "proposalValidationStrategy", + "type": "tuple" + }, + { + "internalType": "string", + "name": "proposalValidationStrategyMetadataURI", + "type": "string" + }, + { + "internalType": "string", + "name": "daoURI", + "type": "string" + }, + { + "internalType": "string", + "name": "metadataURI", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + }, + { + "internalType": "string[]", + "name": "votingStrategyMetadataURIs", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" } ], "indexed": false, - "internalType": "struct Strategy[]", - "name": "votingStrategies", - "type": "tuple[]" - }, - { - "indexed": false, - "internalType": "string[]", - "name": "votingStrategyMetadataURIs", - "type": "string[]" - }, - { - "indexed": false, - "internalType": "address[]", - "name": "authenticators", - "type": "address[]" + "internalType": "struct InitializeCalldata", + "name": "input", + "type": "tuple" } ], "name": "SpaceCreated", @@ -697,9 +694,9 @@ "name": "authenticators", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "allowed", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", @@ -770,84 +767,91 @@ }, { "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_votingDelay", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_minVotingDuration", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_maxVotingDuration", - "type": "uint32" - }, { "components": [ { "internalType": "address", - "name": "addr", + "name": "owner", "type": "address" }, { - "internalType": "bytes", - "name": "params", - "type": "bytes" - } - ], - "internalType": "struct Strategy", - "name": "_proposalValidationStrategy", - "type": "tuple" - }, - { - "internalType": "string", - "name": "_proposalValidationStrategyMetadataURI", - "type": "string" - }, - { - "internalType": "string", - "name": "_daoURI", - "type": "string" - }, - { - "internalType": "string", - "name": "_metadataURI", - "type": "string" - }, - { - "components": [ + "internalType": "uint32", + "name": "votingDelay", + "type": "uint32" + }, { - "internalType": "address", - "name": "addr", - "type": "address" + "internalType": "uint32", + "name": "minVotingDuration", + "type": "uint32" }, { - "internalType": "bytes", - "name": "params", - "type": "bytes" + "internalType": "uint32", + "name": "maxVotingDuration", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy", + "name": "proposalValidationStrategy", + "type": "tuple" + }, + { + "internalType": "string", + "name": "proposalValidationStrategyMetadataURI", + "type": "string" + }, + { + "internalType": "string", + "name": "daoURI", + "type": "string" + }, + { + "internalType": "string", + "name": "metadataURI", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct Strategy[]", + "name": "votingStrategies", + "type": "tuple[]" + }, + { + "internalType": "string[]", + "name": "votingStrategyMetadataURIs", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "authenticators", + "type": "address[]" } ], - "internalType": "struct Strategy[]", - "name": "_votingStrategies", - "type": "tuple[]" - }, - { - "internalType": "string[]", - "name": "_votingStrategyMetadataURIs", - "type": "string[]" - }, - { - "internalType": "address[]", - "name": "_authenticators", - "type": "address[]" + "internalType": "struct InitializeCalldata", + "name": "input", + "type": "tuple" } ], "name": "initialize", @@ -949,45 +953,40 @@ "name": "proposals", "outputs": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -1199,7 +1198,7 @@ "type": "uint8[]" } ], - "internalType": "struct UpdateSettingsInput", + "internalType": "struct UpdateSettingsCalldata", "name": "input", "type": "tuple" } @@ -1325,9 +1324,9 @@ "name": "voteRegistry", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "hasVoted", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", diff --git a/apps/subgraph-api/abis/TimelockExecutionStrategy.json b/apps/subgraph-api/abis/TimelockExecutionStrategy.json index ba31cd3d7..ec0eb0378 100644 --- a/apps/subgraph-api/abis/TimelockExecutionStrategy.json +++ b/apps/subgraph-api/abis/TimelockExecutionStrategy.json @@ -1,32 +1,6 @@ [ { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_vetoGuardian", - "type": "address" - }, - { - "internalType": "address[]", - "name": "_spaces", - "type": "address[]" - }, - { - "internalType": "uint256", - "name": "_timelockDelay", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_quorum", - "type": "uint256" - } - ], + "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, @@ -40,11 +14,6 @@ "name": "ExecutionFailed", "type": "error" }, - { - "inputs": [], - "name": "InvalidPayload", - "type": "error" - }, { "inputs": [ { @@ -147,6 +116,19 @@ "name": "ProposalVetoed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "newQuorum", + "type": "uint256" + } + ], + "name": "QuorumUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -173,6 +155,25 @@ "name": "SpaceEnabled", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "timelockDelay", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTimelockDelay", + "type": "uint256" + } + ], + "name": "TimelockDelaySet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -346,45 +347,40 @@ { "components": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -439,45 +435,40 @@ { "components": [ { - "internalType": "uint32", - "name": "snapshotTimestamp", - "type": "uint32" + "internalType": "address", + "name": "author", + "type": "address" }, { "internalType": "uint32", - "name": "startTimestamp", + "name": "startBlockNumber", "type": "uint32" }, { - "internalType": "uint32", - "name": "minEndTimestamp", - "type": "uint32" + "internalType": "contract IExecutionStrategy", + "name": "executionStrategy", + "type": "address" }, { "internalType": "uint32", - "name": "maxEndTimestamp", + "name": "minEndBlockNumber", "type": "uint32" }, { - "internalType": "bytes32", - "name": "executionPayloadHash", - "type": "bytes32" - }, - { - "internalType": "contract IExecutionStrategy", - "name": "executionStrategy", - "type": "address" - }, - { - "internalType": "address", - "name": "author", - "type": "address" + "internalType": "uint32", + "name": "maxEndBlockNumber", + "type": "uint32" }, { "internalType": "enum FinalizationStatus", "name": "finalizationStatus", "type": "uint8" }, + { + "internalType": "bytes32", + "name": "executionPayloadHash", + "type": "bytes32" + }, { "internalType": "uint256", "name": "activeVotingStrategies", @@ -539,9 +530,9 @@ "name": "isSpaceEnabled", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", @@ -711,6 +702,32 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_quorum", + "type": "uint256" + } + ], + "name": "setQuorum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newTimelockDelay", + "type": "uint256" + } + ], + "name": "setTimelockDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json index c640c2107..c21ad0563 100644 --- a/apps/subgraph-api/networks.json +++ b/apps/subgraph-api/networks.json @@ -1,14 +1,14 @@ { "goerli": { "ProxyFactory": { - "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", - "startBlock": 9091182 + "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", + "startBlock": 9405311 } }, "sepolia": { "ProxyFactory": { - "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", - "startBlock": 3589272 + "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", + "startBlock": 3961351 } }, "linea-testnet": { diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index adbecded1..00fbcb046 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -34,13 +34,13 @@ import { updateStrategiesParsedMetadata, } from './helpers' -const MASTER_SPACE = Address.fromString('0x7cC62f8E9BF2b44ce704D2cdCd4aa8021d5A6f4B') -const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x6F12C67cAd3e566B60A6AE0146761110F1Ea6Eb2') +const MASTER_SPACE = Address.fromString('0xd9c46d5420434355d0E5Ca3e3cCb20cE7A533964') +const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( - '0xdb86512e7E3a2d0B93b74b8FE3fFE8AD780791BE' + '0x00C5E67e6F7FDf80d7bCA249E38C355FbE62Ba34' ) const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( - '0x03d512E0165d6B53ED2753Df2f3184fBd2b52E48' + '0x6D9d6D08EF6b26348Bd18F1FC8D953696b7cf311' ) export function handleProxyDeployed(event: ProxyDeployed): void { @@ -85,20 +85,22 @@ export function handleProxyDeployed(event: ProxyDeployed): void { export function handleSpaceCreated(event: SpaceCreated): void { let space = new Space(event.params.space.toHexString()) - space.controller = event.params.owner - space.voting_delay = event.params.votingDelay.toI32() - space.min_voting_period = event.params.minVotingDuration.toI32() - space.max_voting_period = event.params.maxVotingDuration.toI32() + space.controller = event.params.input.owner + space.voting_delay = event.params.input.votingDelay.toI32() + space.min_voting_period = event.params.input.minVotingDuration.toI32() + space.max_voting_period = event.params.input.maxVotingDuration.toI32() space.quorum = new BigDecimal(new BigInt(0)) - space.strategies = event.params.votingStrategies.map((strategy) => strategy.addr) - space.strategies_params = event.params.votingStrategies.map((strategy) => + space.strategies = event.params.input.votingStrategies.map((strategy) => strategy.addr) + space.strategies_params = event.params.input.votingStrategies.map((strategy) => strategy.params.toHexString() ) - space.validation_strategy = event.params.proposalValidationStrategy.addr - space.validation_strategy_params = event.params.proposalValidationStrategy.params.toHexString() + space.validation_strategy = event.params.input.proposalValidationStrategy.addr + space.validation_strategy_params = event.params.input.proposalValidationStrategy.params.toHexString() if (space.validation_strategy.equals(VOTING_POWER_VALIDATION_STRATEGY)) { - let params = decodeProposalValidationParams(event.params.proposalValidationStrategy.params) + let params = decodeProposalValidationParams( + event.params.input.proposalValidationStrategy.params + ) if (params) { space.proposal_threshold = new BigDecimal(getProposalValidationThreshold(params)) @@ -119,15 +121,15 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.voting_power_validation_strategy_strategies_params = [] } - space.strategies_metadata = event.params.votingStrategyMetadataURIs - space.authenticators = event.params.authenticators.map((address) => address) + space.strategies_metadata = event.params.input.votingStrategyMetadataURIs + space.authenticators = event.params.input.authenticators.map((address) => address) space.proposal_count = 0 space.vote_count = 0 space.created = event.block.timestamp.toI32() space.tx = event.transaction.hash - if (event.params.metadataURI.startsWith('ipfs://')) { - let hash = event.params.metadataURI.slice(7) + if (event.params.input.metadataURI.startsWith('ipfs://')) { + let hash = event.params.input.metadataURI.slice(7) space.metadata = hash SpaceMetadataTemplate.create(hash) } @@ -149,10 +151,10 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.space = space.id proposal.author = event.params.author.toHexString() proposal.execution_hash = event.params.proposal.executionPayloadHash.toHexString() - proposal.start = event.params.proposal.startTimestamp.toI32() - proposal.min_end = event.params.proposal.minEndTimestamp.toI32() - proposal.max_end = event.params.proposal.maxEndTimestamp.toI32() - proposal.snapshot = event.params.proposal.snapshotTimestamp.toI32() + proposal.start = event.params.proposal.startBlockNumber.toI32() + proposal.min_end = event.params.proposal.minEndBlockNumber.toI32() + proposal.max_end = event.params.proposal.maxEndBlockNumber.toI32() + proposal.snapshot = event.params.proposal.startBlockNumber.toI32() proposal.strategies = space.strategies proposal.strategies_params = space.strategies_params proposal.scores_1 = BigDecimal.fromString('0') diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index 9686671ae..ff0bf257f 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -4,11 +4,11 @@ schema: dataSources: - kind: ethereum name: ProxyFactory - network: goerli + network: sepolia source: abi: ProxyFactory - address: '0x12A1FfFFfd70677939D61d641eA043bc9060c718' - startBlock: 9091182 + address: "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c" + startBlock: 3961351 mapping: kind: ethereum/events apiVersion: 0.0.7 @@ -29,7 +29,7 @@ dataSources: templates: - kind: ethereum name: Space - network: goerli + network: sepolia source: abi: Space mapping: @@ -44,9 +44,9 @@ templates: - name: Space file: ./abis/Space.json eventHandlers: - - event: SpaceCreated(address,address,uint32,uint32,uint32,(address,bytes),string,string,string,(address,bytes)[],string[],address[]) + - event: SpaceCreated(address,(address,uint32,uint32,uint32,(address,bytes),string,string,string,(address,bytes)[],string[],address[])) handler: handleSpaceCreated - - event: ProposalCreated(uint256,address,(uint32,uint32,uint32,uint32,bytes32,address,address,uint8,uint256),string,bytes) + - event: ProposalCreated(uint256,address,(address,uint32,address,uint32,uint32,uint8,bytes32,uint256),string,bytes) handler: handleProposalCreated - event: ProposalUpdated(uint256,(address,bytes),string) handler: handleProposalUpdated @@ -69,7 +69,7 @@ templates: file: ./src/mapping.ts - kind: ethereum name: TimelockExecutionStrategy - network: goerli + network: sepolia source: abi: TimelockExecutionStrategy mapping: @@ -99,7 +99,7 @@ templates: abis: - name: Space file: ./abis/Space.json - network: goerli + network: sepolia - name: ProposalMetadata kind: file/ipfs mapping: @@ -112,7 +112,7 @@ templates: abis: - name: Space file: ./abis/Space.json - network: goerli + network: sepolia - name: StrategiesParsedMetadataData kind: file/ipfs mapping: @@ -125,4 +125,4 @@ templates: abis: - name: Space file: ./abis/Space.json - network: goerli + network: sepolia From 7a55fbbcc882af45374ba395e2130e50d8e8fec4 Mon Sep 17 00:00:00 2001 From: Less Date: Mon, 31 Jul 2023 20:27:23 +0700 Subject: [PATCH 32/44] feat: support Polygon and Arbitrum (https://github.com/snapshot-labs/sx-subgraph/pull/33) --- apps/subgraph-api/networks.json | 12 ++++++++++++ apps/subgraph-api/package.json | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json index c21ad0563..112e7de42 100644 --- a/apps/subgraph-api/networks.json +++ b/apps/subgraph-api/networks.json @@ -11,6 +11,18 @@ "startBlock": 3961351 } }, + "matic": { + "ProxyFactory": { + "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", + "startBlock": 45499032 + } + }, + "arbitrum-one": { + "ProxyFactory": { + "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", + "startBlock": 114776723 + } + }, "linea-testnet": { "ProxyFactory": { "address": "0x12A1FfFFfd70677939D61d641eA043bc9060c718", diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 3a236a133..0ab117b01 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -10,7 +10,9 @@ "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", "deploy-linea-testnet": "graph deploy --network linea-testnet --studio sx-linea-testnet", "deploy-studio-goerli": "graph deploy --network goerli --studio sx-goerli", - "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia" + "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia", + "deploy-studio-polygon": "graph deploy --network matic --studio sx-polygon", + "deploy-studio-arbitrum": "graph deploy --network arbitrum-one --studio sx-arbitrum" }, "dependencies": { "@graphprotocol/graph-cli": "0.50.1", From fbcf11c0ac782df997f7e2d804ef5a5ab0336c0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 21 Sep 2023 19:56:59 +0200 Subject: [PATCH 33/44] feat: add delegation_contract to metadata (https://github.com/snapshot-labs/sx-subgraph/pull/35) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/ipfs.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 289ce1c54..f7210cf44 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -31,6 +31,7 @@ type SpaceMetadata @entity { external_url: String! delegation_api_type: String delegation_api_url: String + delegation_contract: String github: String! twitter: String! discord: String! diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts index 78921e789..fac0b16e9 100644 --- a/apps/subgraph-api/src/ipfs.ts +++ b/apps/subgraph-api/src/ipfs.ts @@ -23,6 +23,7 @@ export function handleSpaceMetadata(content: Bytes): void { let delegation_api_type = propertiesObj.get('delegation_api_type') let delegation_api_url = propertiesObj.get('delegation_api_url') + let delegation_contract = propertiesObj.get('delegation_contract') let cover = propertiesObj.get('cover') let github = propertiesObj.get('github') let twitter = propertiesObj.get('twitter') @@ -45,6 +46,9 @@ export function handleSpaceMetadata(content: Bytes): void { spaceMetadata.delegation_api_url = null } + spaceMetadata.delegation_contract = + delegation_contract && !delegation_contract.isNull() ? delegation_contract.toString() : null + spaceMetadata.cover = cover ? cover.toString() : '' spaceMetadata.github = github ? github.toString() : '' spaceMetadata.twitter = twitter ? twitter.toString() : '' From fb9846ba24a3be1014e2bf10e69d3d0a8565fc1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 28 Sep 2023 02:25:17 +0200 Subject: [PATCH 34/44] feat: add payload to strategies parsed metadata (https://github.com/snapshot-labs/sx-subgraph/pull/36) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/ipfs.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index f7210cf44..04221abe8 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -55,6 +55,7 @@ type StrategiesParsedMetadataData @entity { decimals: Int! symbol: String! token: String + payload: String } type ExecutionStrategy @entity { diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts index fac0b16e9..96ca34e68 100644 --- a/apps/subgraph-api/src/ipfs.ts +++ b/apps/subgraph-api/src/ipfs.ts @@ -130,10 +130,12 @@ export function handleStrategiesParsedMetadataData(content: Bytes): void { let decimals = propertiesObj.get('decimals') let symbol = propertiesObj.get('symbol') let token = propertiesObj.get('token') + let payload = propertiesObj.get('payload') if (decimals) strategiesParsedMetadataData.decimals = decimals.toBigInt().toI32() if (symbol) strategiesParsedMetadataData.symbol = symbol.toString() if (token) strategiesParsedMetadataData.token = token.toString() + if (payload) strategiesParsedMetadataData.payload = payload.toString() } strategiesParsedMetadataData.save() From cebb6e2b7b9823046075f3a1a4f5f0c338b3a4a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 28 Sep 2023 14:29:46 +0200 Subject: [PATCH 35/44] feat: add dummy voting_power_validation_strategies_parsed_metadata (https://github.com/snapshot-labs/sx-subgraph/pull/37) --- apps/subgraph-api/schema.graphql | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index 04221abe8..fecab47b0 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -16,6 +16,8 @@ type Space @entity { validation_strategy_params: String! voting_power_validation_strategy_strategies: [Bytes!]! voting_power_validation_strategy_strategies_params: [String!]! + voting_power_validation_strategies_parsed_metadata: [VotingPowerValidationStrategiesParsedMetadata!]! + @derivedFrom(field: "space") proposal_count: Int! vote_count: Int! created: Int! @@ -48,6 +50,13 @@ type StrategiesParsedMetadata @entity { data: StrategiesParsedMetadataData } +type VotingPowerValidationStrategiesParsedMetadata @entity { + id: ID! + space: Space! + index: Int! + data: StrategiesParsedMetadataData +} + type StrategiesParsedMetadataData @entity { id: ID! name: String! From ec3ae8918d1dfab971ff9542b2cd28dab1b1f5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 4 Oct 2023 01:04:45 +0200 Subject: [PATCH 36/44] feat: index vote tx (https://github.com/snapshot-labs/sx-subgraph/pull/38) --- apps/subgraph-api/schema.graphql | 1 + apps/subgraph-api/src/mapping.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index fecab47b0..fa963a56c 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -131,6 +131,7 @@ type Vote @entity { choice: Int! vp: BigDecimal! created: Int! + tx: Bytes! } type User @entity { diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 00fbcb046..e82ed1b62 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -318,6 +318,7 @@ export function handleVoteCreated(event: VoteCast): void { vote.choice = choice vote.vp = vp vote.created = event.block.timestamp.toI32() + vote.tx = event.transaction.hash vote.save() space.vote_count += 1 From 7606962938cd9a8fec4fc8c03c3f9e380c979579 Mon Sep 17 00:00:00 2001 From: less Date: Thu, 5 Oct 2023 05:13:01 +0700 Subject: [PATCH 37/44] chore: add pkg version --- apps/subgraph-api/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 0ab117b01..0e94c4b42 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,5 +1,6 @@ { "name": "sx-subgraph", + "version": "0.0.13", "scripts": { "codegen": "graph codegen", "build": "graph build", From 8c157882737134d099e8994fc2ac714337fd4273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Mon, 23 Oct 2023 14:23:59 +0200 Subject: [PATCH 38/44] feat: index settings changes (https://github.com/snapshot-labs/sx-subgraph/pull/39) * feat: index settings changes * chore: bump version to 0.0.14 * fix: make StrategyMetadata objects unique * chore: bump version to 0.0.15 --- apps/subgraph-api/package.json | 2 +- apps/subgraph-api/schema.graphql | 4 + apps/subgraph-api/src/helpers.ts | 125 ++++++++++++++++++-- apps/subgraph-api/src/ipfs.ts | 20 ++++ apps/subgraph-api/src/mapping.ts | 195 +++++++++++++++++++++++++------ apps/subgraph-api/subgraph.yaml | 23 ++++ 6 files changed, 320 insertions(+), 49 deletions(-) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 0e94c4b42..cb5e82fe6 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,6 +1,6 @@ { "name": "sx-subgraph", - "version": "0.0.13", + "version": "0.0.15", "scripts": { "codegen": "graph codegen", "build": "graph build", diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index fa963a56c..f985c11eb 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -7,6 +7,8 @@ type Space @entity { max_voting_period: Int! proposal_threshold: BigDecimal! quorum: BigDecimal! + next_strategy_index: Int! + strategies_indicies: [Int]! strategies: [Bytes!]! strategies_params: [String!]! strategies_metadata: [String!]! @@ -16,6 +18,7 @@ type Space @entity { validation_strategy_params: String! voting_power_validation_strategy_strategies: [Bytes!]! voting_power_validation_strategy_strategies_params: [String!]! + voting_power_validation_strategy_metadata: String! voting_power_validation_strategies_parsed_metadata: [VotingPowerValidationStrategiesParsedMetadata!]! @derivedFrom(field: "space") proposal_count: Int! @@ -96,6 +99,7 @@ type Proposal @entity { execution_strategy_type: String! timelock_veto_guardian: Bytes timelock_delay: BigInt! + strategies_indicies: [Int]! strategies: [Bytes!]! strategies_params: [String!]! scores_1: BigDecimal! diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index 8daf58f5a..ee3f39e2f 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -1,8 +1,25 @@ -import { Bytes, BigInt, ethereum, Address } from '@graphprotocol/graph-ts' -import { StrategiesParsedMetadataData as StrategiesParsedMetadataDataTemplate } from '../generated/templates' -import { StrategiesParsedMetadata } from '../generated/schema' +import { + Bytes, + BigInt, + ethereum, + Address, + DataSourceContext, + BigDecimal, +} from '@graphprotocol/graph-ts' +import { + StrategiesParsedMetadataData as StrategiesParsedMetadataDataTemplate, + VotingPowerValidationStrategyMetadata as VotingPowerValidationStrategyMetadataTemplate, +} from '../generated/templates' +import { + Space, + StrategiesParsedMetadata, + VotingPowerValidationStrategiesParsedMetadata, +} from '../generated/schema' const TUPLE_PREFIX = '0x0000000000000000000000000000000000000000000000000000000000000020' +const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( + '0x6D9d6D08EF6b26348Bd18F1FC8D953696b7cf311' +) const VOTING_POWER_VALIDATION_STRATEGY_PARAMS_SIGNATURE = '(uint256, (address,bytes)[])' export function decodeProposalValidationParams(params: Bytes): ethereum.Value | null { @@ -31,20 +48,104 @@ export function getProposalValidationStrategiesParams(params: ethereum.Value): B return paramsTuple[1].toArray().map((strategy) => strategy.toTuple()[1].toBytes()) } -export function updateStrategiesParsedMetadata(spaceId: string, metadataUris: string[]): void { +export function updateProposalValidationStrategy( + space: Space, + validationStrategyAddress: Address, + validationStrategyParams: Bytes, + metadataUri: string, + blockNumber: BigInt +): void { + space.validation_strategy = validationStrategyAddress + space.validation_strategy_params = validationStrategyParams.toHexString() + + if (space.validation_strategy.equals(VOTING_POWER_VALIDATION_STRATEGY)) { + space.voting_power_validation_strategy_metadata = metadataUri + + let params = decodeProposalValidationParams(validationStrategyParams) + + if (params) { + space.proposal_threshold = new BigDecimal(getProposalValidationThreshold(params)) + space.voting_power_validation_strategy_strategies = getProposalValidationStrategies( + params + ).map((strategy) => strategy) + space.voting_power_validation_strategy_strategies_params = getProposalValidationStrategiesParams( + params + ).map((params) => params.toHexString()) + } else { + space.proposal_threshold = new BigDecimal(new BigInt(0)) + space.voting_power_validation_strategy_strategies = [] + space.voting_power_validation_strategy_strategies_params = [] + } + + handleVotingPowerValidationMetadata( + space.id, + space.voting_power_validation_strategy_metadata, + blockNumber + ) + } else { + space.proposal_threshold = new BigDecimal(new BigInt(0)) + space.voting_power_validation_strategy_strategies = [] + space.voting_power_validation_strategy_strategies_params = [] + } +} + +export function updateStrategiesParsedMetadata( + spaceId: string, + metadataUris: string[], + startingIndex: i32, + blockNumber: BigInt, + typeName: string = 'StrategiesParsedMetadata' +): void { for (let i = 0; i < metadataUris.length; i++) { let metadataUri = metadataUris[i] - let strategyParsedMetadata = new StrategiesParsedMetadata(`${spaceId}/${i}`) - strategyParsedMetadata.space = spaceId - strategyParsedMetadata.index = i + let index = startingIndex + i - if (metadataUri.startsWith('ipfs://')) { - let hash = metadataUri.slice(7) - strategyParsedMetadata.data = hash - StrategiesParsedMetadataDataTemplate.create(hash) + // blockNumber is required because sometimes it's called from IPFS handler so checking + // for existing entity is not accurate + // we need to do mapping based on index on UI to handle this + let uniqueId = `${spaceId}/${blockNumber}/${index}/${metadataUri}` + + // duplication becase AssemblyScript doesn't support unions and union types + if (typeName == 'StrategiesParsedMetadata') { + let item = new StrategiesParsedMetadata(uniqueId) + item.space = spaceId + item.index = index + + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + item.data = hash + StrategiesParsedMetadataDataTemplate.create(hash) + } + + item.save() + } else if (typeName == 'VotingPowerValidationStrategiesParsedMetadata') { + let item = new VotingPowerValidationStrategiesParsedMetadata(uniqueId) + item.space = spaceId + item.index = index + + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) + item.data = hash + StrategiesParsedMetadataDataTemplate.create(hash) + } + + item.save() } + } +} + +export function handleVotingPowerValidationMetadata( + spaceId: string, + metadataUri: string, + blockNumber: BigInt +): void { + if (metadataUri.startsWith('ipfs://')) { + let hash = metadataUri.slice(7) - strategyParsedMetadata.save() + let context = new DataSourceContext() + context.setString('spaceId', spaceId) + context.setBigInt('blockNumber', blockNumber) + VotingPowerValidationStrategyMetadataTemplate.createWithContext(hash, context) } } diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts index 96ca34e68..3877ec540 100644 --- a/apps/subgraph-api/src/ipfs.ts +++ b/apps/subgraph-api/src/ipfs.ts @@ -1,6 +1,7 @@ import { Bytes, dataSource, json } from '@graphprotocol/graph-ts' import { JSON } from 'assemblyscript-json' import { SpaceMetadata, ProposalMetadata, StrategiesParsedMetadataData } from '../generated/schema' +import { updateStrategiesParsedMetadata } from './helpers' export function handleSpaceMetadata(content: Bytes): void { let spaceMetadata = new SpaceMetadata(dataSource.stringParam()) @@ -140,3 +141,22 @@ export function handleStrategiesParsedMetadataData(content: Bytes): void { strategiesParsedMetadataData.save() } + +export function handleVotingPowerValidationStrategyMetadata(content: Bytes): void { + let spaceId = dataSource.context().getString('spaceId') + let blockNumber = dataSource.context().getBigInt('blockNumber') + + let value = json.fromBytes(content) + let obj = value.toObject() + let strategies_metadata = obj.get('strategies_metadata') + + if (!strategies_metadata) return + + updateStrategiesParsedMetadata( + spaceId, + strategies_metadata.toArray().map((metadata) => metadata.toString()), + 0, + blockNumber, + 'VotingPowerValidationStrategiesParsedMetadata' + ) +} diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index e82ed1b62..c4aab7fc8 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -14,6 +14,11 @@ import { MinVotingDurationUpdated, MaxVotingDurationUpdated, OwnershipTransferred, + AuthenticatorsAdded, + AuthenticatorsRemoved, + VotingStrategiesAdded, + VotingStrategiesRemoved, + ProposalValidationStrategyUpdated, } from '../generated/templates/Space/Space' import { ProposalExecuted as TimelockProposalExecuted, @@ -26,22 +31,13 @@ import { ProposalMetadata as ProposalMetadataTemplate, } from '../generated/templates' import { Space, ExecutionStrategy, ExecutionHash, Proposal, Vote, User } from '../generated/schema' -import { - decodeProposalValidationParams, - getProposalValidationThreshold, - getProposalValidationStrategies, - getProposalValidationStrategiesParams, - updateStrategiesParsedMetadata, -} from './helpers' +import { updateStrategiesParsedMetadata, updateProposalValidationStrategy } from './helpers' const MASTER_SPACE = Address.fromString('0xd9c46d5420434355d0E5Ca3e3cCb20cE7A533964') const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( '0x00C5E67e6F7FDf80d7bCA249E38C355FbE62Ba34' ) -const VOTING_POWER_VALIDATION_STRATEGY = Address.fromString( - '0x6D9d6D08EF6b26348Bd18F1FC8D953696b7cf311' -) export function handleProxyDeployed(event: ProxyDeployed): void { if (event.params.implementation.equals(MASTER_SPACE)) { @@ -90,36 +86,20 @@ export function handleSpaceCreated(event: SpaceCreated): void { space.min_voting_period = event.params.input.minVotingDuration.toI32() space.max_voting_period = event.params.input.maxVotingDuration.toI32() space.quorum = new BigDecimal(new BigInt(0)) + space.strategies_indicies = event.params.input.votingStrategies.map((_, i) => i32(i)) + space.next_strategy_index = event.params.input.votingStrategies.length space.strategies = event.params.input.votingStrategies.map((strategy) => strategy.addr) space.strategies_params = event.params.input.votingStrategies.map((strategy) => strategy.params.toHexString() ) - space.validation_strategy = event.params.input.proposalValidationStrategy.addr - space.validation_strategy_params = event.params.input.proposalValidationStrategy.params.toHexString() - if (space.validation_strategy.equals(VOTING_POWER_VALIDATION_STRATEGY)) { - let params = decodeProposalValidationParams( - event.params.input.proposalValidationStrategy.params - ) - - if (params) { - space.proposal_threshold = new BigDecimal(getProposalValidationThreshold(params)) - space.voting_power_validation_strategy_strategies = getProposalValidationStrategies( - params - ).map((strategy) => strategy) - space.voting_power_validation_strategy_strategies_params = getProposalValidationStrategiesParams( - params - ).map((params) => params.toHexString()) - } else { - space.proposal_threshold = new BigDecimal(new BigInt(0)) - space.voting_power_validation_strategy_strategies = [] - space.voting_power_validation_strategy_strategies_params = [] - } - } else { - space.proposal_threshold = new BigDecimal(new BigInt(0)) - space.voting_power_validation_strategy_strategies = [] - space.voting_power_validation_strategy_strategies_params = [] - } + updateProposalValidationStrategy( + space, + event.params.input.proposalValidationStrategy.addr, + event.params.input.proposalValidationStrategy.params, + event.params.input.proposalValidationStrategyMetadataURI, + event.block.number + ) space.strategies_metadata = event.params.input.votingStrategyMetadataURIs space.authenticators = event.params.input.authenticators.map((address) => address) @@ -134,7 +114,13 @@ export function handleSpaceCreated(event: SpaceCreated): void { SpaceMetadataTemplate.create(hash) } - updateStrategiesParsedMetadata(space.id, space.strategies_metadata) + updateStrategiesParsedMetadata( + space.id, + space.strategies_metadata, + 0, + event.block.number, + 'StrategiesParsedMetadata' + ) space.save() } @@ -155,6 +141,7 @@ export function handleProposalCreated(event: ProposalCreated): void { proposal.min_end = event.params.proposal.minEndBlockNumber.toI32() proposal.max_end = event.params.proposal.maxEndBlockNumber.toI32() proposal.snapshot = event.params.proposal.startBlockNumber.toI32() + proposal.strategies_indicies = space.strategies_indicies proposal.strategies = space.strategies proposal.strategies_params = space.strategies_params proposal.scores_1 = BigDecimal.fromString('0') @@ -402,6 +389,142 @@ export function handleOwnershipTransferred(event: OwnershipTransferred): void { space.save() } +export function handleAuthenticatorsAdded(event: AuthenticatorsAdded): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + let newAuthenticators = space.authenticators + for (let i = 0; i < event.params.newAuthenticators.length; i++) { + if (!newAuthenticators.includes(event.params.newAuthenticators[i])) { + newAuthenticators.push(event.params.newAuthenticators[i]) + } + } + + space.authenticators = newAuthenticators + space.save() +} + +export function handleAuthenticatorsRemoved(event: AuthenticatorsRemoved): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + let newAuthenticators = space.authenticators + for (let i = 0; i < event.params.authenticators.length; i++) { + if (newAuthenticators.includes(event.params.authenticators[i])) { + newAuthenticators.splice(newAuthenticators.indexOf(event.params.authenticators[i]), 1) + } + } + + space.authenticators = newAuthenticators + space.save() +} + +export function handleVotingStrategiesAdded(event: VotingStrategiesAdded): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + let initialNextStrategy = space.next_strategy_index + + let strategies = event.params.newVotingStrategies.map((strategy) => strategy.addr) + let strategiesParams = event.params.newVotingStrategies.map((strategy) => + strategy.params.toHexString() + ) + let strategiesMetadataUris = event.params.newVotingStrategyMetadataURIs + + let newIndicies = [] as i32[] + for (let i = 0; i < strategies.length; i++) { + newIndicies.push(i32(initialNextStrategy + i)) + } + + let newStrategies = space.strategies + for (let i = 0; i < strategies.length; i++) { + newStrategies.push(strategies[i]) + } + + let newStrategiesParams = space.strategies_params + for (let i = 0; i < strategiesParams.length; i++) { + newStrategiesParams.push(strategiesParams[i]) + } + + let newStrategiesMetadata = space.strategies_metadata + for (let i = 0; i < strategiesMetadataUris.length; i++) { + newStrategiesMetadata.push(strategiesMetadataUris[i]) + } + + space.next_strategy_index += strategies.length + space.strategies_indicies = space.strategies_indicies.concat(newIndicies) + space.strategies = newStrategies + space.strategies_params = newStrategiesParams + space.strategies_metadata = newStrategiesMetadata + + updateStrategiesParsedMetadata( + space.id, + strategiesMetadataUris, + initialNextStrategy, + event.block.number, + 'StrategiesParsedMetadata' + ) + + space.save() +} + +export function handleVotingStrategiesRemoved(event: VotingStrategiesRemoved): void { + let space = Space.load(event.address.toHexString()) + if (space == null) { + return + } + + let indiciesToRemove = [] as i32[] + for (let i = 0; i < event.params.votingStrategyIndices.length; i++) { + indiciesToRemove.push(space.strategies_indicies.indexOf(event.params.votingStrategyIndices[i])) + } + + let newIndicies = [] as i32[] + let newStrategies = [] as Bytes[] + let newStrategiesParams = [] as string[] + let newStrategiesMetadata = [] as string[] + for (let i = 0; i < space.strategies_indicies.length; i++) { + if (!indiciesToRemove.includes(i)) { + newIndicies.push(space.strategies_indicies[i]) + newStrategies.push(space.strategies[i]) + newStrategiesParams.push(space.strategies_params[i]) + newStrategiesMetadata.push(space.strategies_metadata[i]) + } + } + + space.strategies_indicies = newIndicies + space.strategies = newStrategies + space.strategies_params = newStrategiesParams + space.strategies_metadata = newStrategiesMetadata + + space.save() +} + +export function handleProposalValidationStrategyUpdated( + event: ProposalValidationStrategyUpdated +): void { + let space = Space.load(event.address.toHexString()) + if (!space) { + return + } + + updateProposalValidationStrategy( + space, + event.params.newProposalValidationStrategy.addr, + event.params.newProposalValidationStrategy.params, + event.params.newProposalValidationStrategyMetadataURI, + event.block.number + ) + + space.save() +} + export function handleTimelockProposalExecuted(event: TimelockProposalExecuted): void { let executionHash = ExecutionHash.load(event.params.executionPayloadHash.toHexString()) if (executionHash === null) { diff --git a/apps/subgraph-api/subgraph.yaml b/apps/subgraph-api/subgraph.yaml index ff0bf257f..fa3783650 100644 --- a/apps/subgraph-api/subgraph.yaml +++ b/apps/subgraph-api/subgraph.yaml @@ -66,6 +66,16 @@ templates: handler: handleMaxVotingDurationUpdated - event: OwnershipTransferred(indexed address,indexed address) handler: handleOwnershipTransferred + - event: AuthenticatorsAdded(address[]) + handler: handleAuthenticatorsAdded + - event: AuthenticatorsRemoved(address[]) + handler: handleAuthenticatorsRemoved + - event: VotingStrategiesAdded((address,bytes)[],string[]) + handler: handleVotingStrategiesAdded + - event: VotingStrategiesRemoved(uint8[]) + handler: handleVotingStrategiesRemoved + - event: ProposalValidationStrategyUpdated((address,bytes),string) + handler: handleProposalValidationStrategyUpdated file: ./src/mapping.ts - kind: ethereum name: TimelockExecutionStrategy @@ -126,3 +136,16 @@ templates: - name: Space file: ./abis/Space.json network: sepolia + - name: VotingPowerValidationStrategyMetadata + kind: file/ipfs + mapping: + apiVersion: 0.0.7 + language: wasm/assemblyscript + file: ./src/ipfs.ts + handler: handleVotingPowerValidationStrategyMetadata + entities: + - VotingPowerValidationStrategiesParsedMetadata + abis: + - name: Space + file: ./abis/Space.json + network: sepolia From 9ab6a5e7f88ffba12215cbdcca20d287b5e27043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Mon, 13 Nov 2023 18:42:44 +0100 Subject: [PATCH 39/44] chore: add mainnet support (https://github.com/snapshot-labs/sx-subgraph/pull/40) --- apps/subgraph-api/networks.json | 6 ++++++ apps/subgraph-api/package.json | 1 + 2 files changed, 7 insertions(+) diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json index 112e7de42..8d08491ee 100644 --- a/apps/subgraph-api/networks.json +++ b/apps/subgraph-api/networks.json @@ -1,4 +1,10 @@ { + "mainnet": { + "ProxyFactory": { + "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", + "startBlock": 18426159 + } + }, "goerli": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index cb5e82fe6..8f6345651 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -10,6 +10,7 @@ "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", "deploy-linea-testnet": "graph deploy --network linea-testnet --studio sx-linea-testnet", + "deploy-studio-mainnet": "graph deploy --network mainnet --studio sx", "deploy-studio-goerli": "graph deploy --network goerli --studio sx-goerli", "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia", "deploy-studio-polygon": "graph deploy --network matic --studio sx-polygon", From 8a73a927a8a52db6cd842b99734132ffc70215f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 15 Nov 2023 17:43:20 +0100 Subject: [PATCH 40/44] feat: automatically label subgraph with version (https://github.com/snapshot-labs/sx-subgraph/pull/41) --- apps/subgraph-api/package.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 8f6345651..3e23a44b9 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -10,11 +10,12 @@ "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 snapshot-labs/sx-subgraph", "deploy-goerli": "graph deploy --node https://api.thegraph.com/deploy/ snapshot-labs/sx-subgraph", "deploy-linea-testnet": "graph deploy --network linea-testnet --studio sx-linea-testnet", - "deploy-studio-mainnet": "graph deploy --network mainnet --studio sx", - "deploy-studio-goerli": "graph deploy --network goerli --studio sx-goerli", - "deploy-studio-sepolia": "graph deploy --network sepolia --studio sx-sepolia", - "deploy-studio-polygon": "graph deploy --network matic --studio sx-polygon", - "deploy-studio-arbitrum": "graph deploy --network arbitrum-one --studio sx-arbitrum" + "deploy-studio": "graph deploy --studio -l v${npm_package_version}", + "deploy-studio-mainnet": "yarn deploy-studio --network mainnet sx", + "deploy-studio-goerli": "yarn deploy-studio --network goerli sx-goerli", + "deploy-studio-sepolia": "yarn deploy-studio --network sepolia sx-sepolia", + "deploy-studio-polygon": "yarn deploy-studio --network matic sx-polygon", + "deploy-studio-arbitrum": "yarn deploy-studio --network arbitrum-one sx-arbitrum" }, "dependencies": { "@graphprotocol/graph-cli": "0.50.1", From 188c47df276f67f969b29135600b81cce2505640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Fri, 1 Dec 2023 12:57:27 +0100 Subject: [PATCH 41/44] fix: always set voting_power_validation_strategy_metadata (https://github.com/snapshot-labs/sx-subgraph/pull/42) --- apps/subgraph-api/package.json | 2 +- apps/subgraph-api/src/helpers.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 3e23a44b9..dc11e74bb 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,6 +1,6 @@ { "name": "sx-subgraph", - "version": "0.0.15", + "version": "0.0.16", "scripts": { "codegen": "graph codegen", "build": "graph build", diff --git a/apps/subgraph-api/src/helpers.ts b/apps/subgraph-api/src/helpers.ts index ee3f39e2f..2d4ba6c4a 100644 --- a/apps/subgraph-api/src/helpers.ts +++ b/apps/subgraph-api/src/helpers.ts @@ -86,6 +86,7 @@ export function updateProposalValidationStrategy( space.proposal_threshold = new BigDecimal(new BigInt(0)) space.voting_power_validation_strategy_strategies = [] space.voting_power_validation_strategy_strategies_params = [] + space.voting_power_validation_strategy_metadata = '' } } From 2a4d5c47885d2c3dc1b3038556e29b0f4c70bf02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Wed, 13 Dec 2023 17:42:03 +0100 Subject: [PATCH 42/44] feat: index multiple delegations (https://github.com/snapshot-labs/sx-subgraph/pull/43) * feat: index multiple delegations * chore: bump version to 0.0.17 --- apps/subgraph-api/package.json | 2 +- apps/subgraph-api/schema.graphql | 4 +--- apps/subgraph-api/src/ipfs.ts | 32 +++++++++++++------------------- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index dc11e74bb..0a16f6b38 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,6 +1,6 @@ { "name": "sx-subgraph", - "version": "0.0.16", + "version": "0.0.17", "scripts": { "codegen": "graph codegen", "build": "graph build", diff --git a/apps/subgraph-api/schema.graphql b/apps/subgraph-api/schema.graphql index f985c11eb..67d6a8e32 100644 --- a/apps/subgraph-api/schema.graphql +++ b/apps/subgraph-api/schema.graphql @@ -34,9 +34,7 @@ type SpaceMetadata @entity { avatar: String! cover: String! external_url: String! - delegation_api_type: String - delegation_api_url: String - delegation_contract: String + delegations: [String!]! github: String! twitter: String! discord: String! diff --git a/apps/subgraph-api/src/ipfs.ts b/apps/subgraph-api/src/ipfs.ts index 3877ec540..51969e5b5 100644 --- a/apps/subgraph-api/src/ipfs.ts +++ b/apps/subgraph-api/src/ipfs.ts @@ -18,13 +18,12 @@ export function handleSpaceMetadata(content: Bytes): void { spaceMetadata.about = description ? description.toString() : '' spaceMetadata.avatar = avatar ? avatar.toString() : '' spaceMetadata.external_url = externalUrl ? externalUrl.toString() : '' + spaceMetadata.delegations = [] if (properties) { const propertiesObj = properties.toObject() - let delegation_api_type = propertiesObj.get('delegation_api_type') - let delegation_api_url = propertiesObj.get('delegation_api_url') - let delegation_contract = propertiesObj.get('delegation_contract') + let delegations = propertiesObj.get('delegations') let cover = propertiesObj.get('cover') let github = propertiesObj.get('github') let twitter = propertiesObj.get('twitter') @@ -34,22 +33,19 @@ export function handleSpaceMetadata(content: Bytes): void { let executionStrategies = propertiesObj.get('execution_strategies') let executionStrategiesTypes = propertiesObj.get('execution_strategies_types') - let delegation_api_type_value = - delegation_api_type && !delegation_api_type.isNull() ? delegation_api_type.toString() : null - let delegation_api_url_value = - delegation_api_url && !delegation_api_url.isNull() ? delegation_api_url.toString() : null - - if (delegation_api_type_value == 'governor-subgraph' && delegation_api_url_value) { - spaceMetadata.delegation_api_type = delegation_api_type_value - spaceMetadata.delegation_api_url = delegation_api_url_value - } else { - spaceMetadata.delegation_api_type = null - spaceMetadata.delegation_api_url = null + if (delegations) { + let jsonObj: JSON.Obj = JSON.parse(content) + let jsonPropertiesObj = jsonObj.getObj('properties') + if (jsonPropertiesObj) { + let jsonDelegationsArr = jsonPropertiesObj.getArr('delegations') + if (jsonDelegationsArr) { + spaceMetadata.delegations = jsonDelegationsArr._arr.map((delegation) => + delegation.toString() + ) + } + } } - spaceMetadata.delegation_contract = - delegation_contract && !delegation_contract.isNull() ? delegation_contract.toString() : null - spaceMetadata.cover = cover ? cover.toString() : '' spaceMetadata.github = github ? github.toString() : '' spaceMetadata.twitter = twitter ? twitter.toString() : '' @@ -70,8 +66,6 @@ export function handleSpaceMetadata(content: Bytes): void { spaceMetadata.executors_types = [] } } else { - spaceMetadata.delegation_api_type = null - spaceMetadata.delegation_api_url = null spaceMetadata.cover = '' spaceMetadata.github = '' spaceMetadata.twitter = '' From 99161eb4413956a60408454abdb67886a4f42118 Mon Sep 17 00:00:00 2001 From: Less Date: Thu, 14 Dec 2023 01:36:31 +0700 Subject: [PATCH 43/44] chore: update to v1.0.3 (https://github.com/snapshot-labs/sx-subgraph/pull/44) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: index multiple delegations * chore: bump version to 0.0.17 * chore: update to v1.0.3 * chore: update contract addresses * chore: update to v0.0.18 * chore: update to v0.0.19 * chore: add mainnet specific contracts * chore: update version to v0.0.20 --------- Co-authored-by: Wiktor TkaczyƄski --- .../abis/AvatarExecutionStrategy.json | 5 +++++ .../abis/TimelockExecutionStrategy.json | 5 +++++ apps/subgraph-api/package.json | 2 +- apps/subgraph-api/src/mapping.ts | 16 ++++++++++------ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/apps/subgraph-api/abis/AvatarExecutionStrategy.json b/apps/subgraph-api/abis/AvatarExecutionStrategy.json index 6f0670a9b..af3dfe06a 100644 --- a/apps/subgraph-api/abis/AvatarExecutionStrategy.json +++ b/apps/subgraph-api/abis/AvatarExecutionStrategy.json @@ -189,6 +189,11 @@ }, { "inputs": [ + { + "name": "proposalId", + "type": "uint256", + "internalType": "uint256" + }, { "components": [ { diff --git a/apps/subgraph-api/abis/TimelockExecutionStrategy.json b/apps/subgraph-api/abis/TimelockExecutionStrategy.json index ec0eb0378..476f526b2 100644 --- a/apps/subgraph-api/abis/TimelockExecutionStrategy.json +++ b/apps/subgraph-api/abis/TimelockExecutionStrategy.json @@ -344,6 +344,11 @@ }, { "inputs": [ + { + "name": "proposalId", + "type": "uint256", + "internalType": "uint256" + }, { "components": [ { diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 0a16f6b38..1cac4cac3 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,6 +1,6 @@ { "name": "sx-subgraph", - "version": "0.0.17", + "version": "0.0.20", "scripts": { "codegen": "graph codegen", "build": "graph build", diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index c4aab7fc8..88689a126 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,4 +1,4 @@ -import { Address, BigDecimal, BigInt, Bytes } from '@graphprotocol/graph-ts' +import {Address, BigDecimal, BigInt, Bytes, dataSource } from '@graphprotocol/graph-ts' import { ProxyDeployed } from '../generated/ProxyFactory/ProxyFactory' import { AvatarExecutionStrategy } from '../generated/ProxyFactory/AvatarExecutionStrategy' import { TimelockExecutionStrategy } from '../generated/ProxyFactory/TimelockExecutionStrategy' @@ -33,11 +33,15 @@ import { import { Space, ExecutionStrategy, ExecutionHash, Proposal, Vote, User } from '../generated/schema' import { updateStrategiesParsedMetadata, updateProposalValidationStrategy } from './helpers' -const MASTER_SPACE = Address.fromString('0xd9c46d5420434355d0E5Ca3e3cCb20cE7A533964') -const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') -const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( - '0x00C5E67e6F7FDf80d7bCA249E38C355FbE62Ba34' -) +let MASTER_SPACE = Address.fromString('0xC3031A7d3326E47D49BfF9D374d74f364B29CE4D') +let MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0xecE4f6b01a2d7FF5A9765cA44162D453fC455e42') +let MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString('0xf2A1C2f2098161af98b2Cc7E382AB7F3ba86Ebc4') + +if (dataSource.network() == 'mainnet') { + MASTER_SPACE = Address.fromString('0xd9c46d5420434355d0E5Ca3e3cCb20cE7A533964') + MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') + MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') +} export function handleProxyDeployed(event: ProxyDeployed): void { if (event.params.implementation.equals(MASTER_SPACE)) { From 70bc9a275a8aafab9f8b50a6e813ca852b11f928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 11 Jan 2024 13:40:31 +0100 Subject: [PATCH 44/44] chore: update mainnet to use v1.0.3 deployment (https://github.com/snapshot-labs/sx-subgraph/pull/45) * chore: update mainnet to use v1.0.3 deployment Also rewinded start blocks so we don't rescan blocks that won't have spaces with new master space created (new start blocks are blocks at which master space contract was deployed). * chore: bump version to 0.0.21 --- apps/subgraph-api/networks.json | 10 +++++----- apps/subgraph-api/package.json | 2 +- apps/subgraph-api/src/mapping.ts | 16 ++++++---------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/apps/subgraph-api/networks.json b/apps/subgraph-api/networks.json index 8d08491ee..8da649c93 100644 --- a/apps/subgraph-api/networks.json +++ b/apps/subgraph-api/networks.json @@ -2,31 +2,31 @@ "mainnet": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", - "startBlock": 18426159 + "startBlock": 18962278 } }, "goerli": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", - "startBlock": 9405311 + "startBlock": 9893638 } }, "sepolia": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", - "startBlock": 3961351 + "startBlock": 4519171 } }, "matic": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", - "startBlock": 45499032 + "startBlock": 50858232 } }, "arbitrum-one": { "ProxyFactory": { "address": "0x4b4f7f64be813ccc66aefc3bfce2baa01188631c", - "startBlock": 114776723 + "startBlock": 157825417 } }, "linea-testnet": { diff --git a/apps/subgraph-api/package.json b/apps/subgraph-api/package.json index 1cac4cac3..00192add7 100644 --- a/apps/subgraph-api/package.json +++ b/apps/subgraph-api/package.json @@ -1,6 +1,6 @@ { "name": "sx-subgraph", - "version": "0.0.20", + "version": "0.0.21", "scripts": { "codegen": "graph codegen", "build": "graph build", diff --git a/apps/subgraph-api/src/mapping.ts b/apps/subgraph-api/src/mapping.ts index 88689a126..14f16f731 100644 --- a/apps/subgraph-api/src/mapping.ts +++ b/apps/subgraph-api/src/mapping.ts @@ -1,4 +1,4 @@ -import {Address, BigDecimal, BigInt, Bytes, dataSource } from '@graphprotocol/graph-ts' +import { Address, BigDecimal, BigInt, Bytes, dataSource } from '@graphprotocol/graph-ts' import { ProxyDeployed } from '../generated/ProxyFactory/ProxyFactory' import { AvatarExecutionStrategy } from '../generated/ProxyFactory/AvatarExecutionStrategy' import { TimelockExecutionStrategy } from '../generated/ProxyFactory/TimelockExecutionStrategy' @@ -33,15 +33,11 @@ import { import { Space, ExecutionStrategy, ExecutionHash, Proposal, Vote, User } from '../generated/schema' import { updateStrategiesParsedMetadata, updateProposalValidationStrategy } from './helpers' -let MASTER_SPACE = Address.fromString('0xC3031A7d3326E47D49BfF9D374d74f364B29CE4D') -let MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0xecE4f6b01a2d7FF5A9765cA44162D453fC455e42') -let MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString('0xf2A1C2f2098161af98b2Cc7E382AB7F3ba86Ebc4') - -if (dataSource.network() == 'mainnet') { - MASTER_SPACE = Address.fromString('0xd9c46d5420434355d0E5Ca3e3cCb20cE7A533964') - MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') - MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString('0x3813f3d97Aa2F80e3aF625605A31206e067FB2e5') -} +const MASTER_SPACE = Address.fromString('0xC3031A7d3326E47D49BfF9D374d74f364B29CE4D') +const MASTER_SIMPLE_QUORUM_AVATAR = Address.fromString('0xecE4f6b01a2d7FF5A9765cA44162D453fC455e42') +const MASTER_SIMPLE_QUORUM_TIMELOCK = Address.fromString( + '0xf2A1C2f2098161af98b2Cc7E382AB7F3ba86Ebc4' +) export function handleProxyDeployed(event: ProxyDeployed): void { if (event.params.implementation.equals(MASTER_SPACE)) {