From 455f4db8b9c6e53f210bc8f7ad5c7fe06fc481f6 Mon Sep 17 00:00:00 2001 From: shubham-kanodia Date: Fri, 25 Jun 2021 23:15:57 +0530 Subject: [PATCH 1/5] Adding end to end test for subgraph --- .gitignore | 2 + package.json | 9 ++- subgraph.yaml | 2 +- test/Dockerfile | 14 +++++ test/docker-compose.yml | 45 ++++++++++++++ test/scripts/deploy/staker/staker.js | 23 +++++++ test/scripts/deploy/v3core/pool.js | 32 ++++++++++ test/scripts/events/incentive.js | 65 +++++++++++++++++++ test/setup-contracts/Token.sol | 22 +++++++ test/setup-env.sh | 29 +++++++++ test/test.js | 93 ++++++++++++++++++++++++++++ test/test.sh | 26 ++++++++ 12 files changed, 359 insertions(+), 3 deletions(-) create mode 100644 test/Dockerfile create mode 100644 test/docker-compose.yml create mode 100644 test/scripts/deploy/staker/staker.js create mode 100644 test/scripts/deploy/v3core/pool.js create mode 100644 test/scripts/events/incentive.js create mode 100644 test/setup-contracts/Token.sol create mode 100755 test/setup-env.sh create mode 100644 test/test.js create mode 100755 test/test.sh diff --git a/.gitignore b/.gitignore index cccf85a..06acdc4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ src/types/ .DS_STORE .idea yarn-error.log +test/data +todo \ No newline at end of file diff --git a/package.json b/package.json index 0f455a2..cc72f81 100644 --- a/package.json +++ b/package.json @@ -7,16 +7,21 @@ "deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ codingnirvana/uniswap-v3-subgraph", "create-local": "graph create --node http://localhost:8020/ codingnirvana/uniswap-v3-subgraph", "remove-local": "graph remove --node http://localhost:8020/ codingnirvana/uniswap-v3-subgraph", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 codingnirvana/uniswap-v3-subgraph" + "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 codingnirvana/uniswap-v3-subgraph", + "test": "cd test && ./test.sh" }, "dependencies": { "@graphprotocol/graph-cli": "0.20.1", "@graphprotocol/graph-ts": "git://github.com/graphprotocol/graph-ts#2f628dfbce14adc40bab35d66604c4c7a2e6b46c", "@typescript-eslint/eslint-plugin": "^2.0.0", "@typescript-eslint/parser": "^2.0.0", + "apollo-fetch": "^0.7.0", "eslint": "^6.2.2", "eslint-config-prettier": "^6.1.0", "prettier": "^1.18.2", - "typescript": "^3.5.2" + "typescript": "^3.5.2" + }, + "devDependencies": { + "mocha": "^9.0.1" } } diff --git a/subgraph.yaml b/subgraph.yaml index 6917352..72195dc 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -6,7 +6,7 @@ dataSources: name: UniswapV3Staker network: mainnet source: - address: "0x1F98431c8aD98523631AE4a59f267346ea31F984" + address: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" abi: UniswapV3Staker mapping: kind: ethereum/events diff --git a/test/Dockerfile b/test/Dockerfile new file mode 100644 index 0000000..643cf32 --- /dev/null +++ b/test/Dockerfile @@ -0,0 +1,14 @@ +FROM node:14 + +COPY ./scripts /app/scripts +COPY ./setup-contracts /app/setup-contracts +COPY ./setup-env.sh /app/ + +WORKDIR /app/ +RUN git clone "https://github.com/Uniswap/uniswap-v3-staker.git" + +WORKDIR uniswap-v3-staker +RUN yarn install +RUN yarn add uniswap-v3-deploy-plugin + +CMD /app/setup-env.sh \ No newline at end of file diff --git a/test/docker-compose.yml b/test/docker-compose.yml new file mode 100644 index 0000000..9512c78 --- /dev/null +++ b/test/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3' +services: + subgraphtest: + container_name: uniswap-staker-deployment + build: + context: . + dockerfile: Dockerfile + ports: + - "8545:8545" + graph-node: + image: graphprotocol/graph-node + ports: + - '8000:8000' + - '8001:8001' + - '8020:8020' + - '8030:8030' + - '8040:8040' + depends_on: + - ipfs + - postgres + environment: + postgres_host: postgres + postgres_user: graph-node + postgres_pass: let-me-in + postgres_db: graph-node + ipfs: 'ipfs:5001' + ethereum: 'mainnet:http://docker.for.mac.localhost:8545' + GRAPH_LOG: info + ipfs: + image: ipfs/go-ipfs:v0.4.23 + ports: + - '5001:5001' + volumes: + - ./data/ipfs:/data/ipfs + postgres: + image: postgres + ports: + - '5432:5432' + command: ["postgres", "-cshared_preload_libraries=pg_stat_statements"] + environment: + POSTGRES_USER: graph-node + POSTGRES_PASSWORD: let-me-in + POSTGRES_DB: graph-node + volumes: + - ./data/postgres:/var/lib/postgresql/data \ No newline at end of file diff --git a/test/scripts/deploy/staker/staker.js b/test/scripts/deploy/staker/staker.js new file mode 100644 index 0000000..5d02cd2 --- /dev/null +++ b/test/scripts/deploy/staker/staker.js @@ -0,0 +1,23 @@ +async function main() { + const [deployer] = await ethers.getSigners(); + console.log(`Deploying contracts with account address: ${deployer.address}`); + + const factoryContractAddress = process.env.FACTORY_CONTRACT_ADDR + const positionManagerContractAddress = process.env.POSITION_MANAGER_CONTRACT_ADDR + + const UniswapV3Staker = await ethers.getContractFactory("UniswapV3Staker"); + const uniswapV3Staker = await UniswapV3Staker.deploy( + factoryContractAddress, + positionManagerContractAddress, + 1000, + 110000 + ); + + console.log(`UniswapV3Staker Address: ${uniswapV3Staker.address}`); +} + +main() +.then(() => console.log("Exited Properly")) +.catch(error => { + console.log(error); +}); \ No newline at end of file diff --git a/test/scripts/deploy/v3core/pool.js b/test/scripts/deploy/v3core/pool.js new file mode 100644 index 0000000..20aedd6 --- /dev/null +++ b/test/scripts/deploy/v3core/pool.js @@ -0,0 +1,32 @@ +async function main() { + const [deployer] = await ethers.getSigners(); + const factoryContractAddress = process.env.FACTORY_CONTRACT_ADDR + console.log(`Factory Contract Address - ${factoryContractAddress}`) + + const uniswapV3FactoryContractInstance = await ethers.getContractAt("IUniswapV3Factory", factoryContractAddress); + console.log(`Contract Address: ${factoryContractAddress}`); + + const Token = await ethers.getContractFactory("Token"); + const token1 = await Token.deploy("Token1", "TK1"); + const token2 = await Token.deploy("Token2", "TK2"); + + console.log(`Token1 Contract Address: ${token1.address}`); + console.log(`Token2 Contract Address: ${token2.address}`); + + const fees = 500; + + const tx = await uniswapV3FactoryContractInstance.createPool( + token1.address, + token2.address, + fees + ); + + const receipt = await tx.wait(); + const event = receipt.events?.filter((x) => {return x.event == "PoolCreated"})[0]; + + console.log(`Pool address: ${event.args.pool}`); +} + +main() + .then(() => console.log("Successfull")) + .catch(error => console.log(error)); \ No newline at end of file diff --git a/test/scripts/events/incentive.js b/test/scripts/events/incentive.js new file mode 100644 index 0000000..3b40710 --- /dev/null +++ b/test/scripts/events/incentive.js @@ -0,0 +1,65 @@ +async function fireIncentiveCreated(uniswapContract, incentiveKey) { + const txn = await uniswapContract.createIncentive( + incentiveKey, + 1000 + ); + const receipt = await txn.wait(); + const event = receipt.events?.filter((x) => { return x.event == "IncentiveCreated" })[0]; + + return event; +} + +async function fireIncentiveEnded(uniswapContract, incentiveKey) { + const txn = await uniswapContract.endIncentive( + incentiveKey + ); + const receipt = await txn.wait(); + const event = receipt.events?.filter((x) => { return x.event == "IncentiveEnded" })[0]; + + return event; +} + +async function main() { + const delay = ms => new Promise(res => setTimeout(res, ms)); + + const [deployer] = await ethers.getSigners(); + + const uniswapStakerAddress = process.env.STAKER_CONTRACT_ADDR; + const uniswapContract = await ethers.getContractAt("IUniswapV3Staker", uniswapStakerAddress); + + const Token = await ethers.getContractFactory("Token"); + const rewardToken = await Token.deploy("Token3", "RT"); + console.log(`Reward Token Address: ${rewardToken.address}`); + + const poolAddress = process.env.POOL_CONTRACT_ADDR; + + const block = await ethers.provider.getBlock('latest'); + + const startTime = block.timestamp + 1; + const endTime = startTime + 2; + + const incentiveKey = [ + rewardToken.address, + poolAddress, + startTime, + endTime, + deployer.address + ]; + + const txn = await uniswapContract.createIncentive( + incentiveKey, + 1000 + ); + const receipt = await txn.wait(); + const event = receipt.events?.filter((x) => { return x.event == "IncentiveCreated" })[0]; + console.log("IncentiveCreated Event Fired"); + + await delay(5000); + + const incentiveEndedEvent = await fireIncentiveEnded(uniswapContract, incentiveKey); + console.log("IncentiveEnded Event Fired"); +} + +main() + .then(() => process.exit(0)) + .catch(error => console.log(error)); diff --git a/test/setup-contracts/Token.sol b/test/setup-contracts/Token.sol new file mode 100644 index 0000000..8243ecf --- /dev/null +++ b/test/setup-contracts/Token.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.7.6; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract Token is ERC20 { + constructor (string memory name, string memory symbol) ERC20(name, symbol) { + _mint(msg.sender, 100 * 10 ** uint(decimals())); + } + + function transferFrom( + address sender, + address recipient, + uint256 amount + ) public virtual override returns (bool) { + return true; + } + + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + return true; + } +} diff --git a/test/setup-env.sh b/test/setup-env.sh new file mode 100755 index 0000000..252bdf3 --- /dev/null +++ b/test/setup-env.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +cp -r ../scripts ./ +cp -r ../setup-contracts ./contracts + +sed -i '1s/^/import "uniswap-v3-deploy-plugin";\n/' hardhat.config.ts + +npx hardhat node & +sleep 15 + +UNISWAP_CONTRACT_ADDRS=`npx hardhat deploy-uniswap --network localhost | grep "factory\|positionManager" | awk '{print $4}'` +export FACTORY_CONTRACT_ADDR=`echo $UNISWAP_CONTRACT_ADDRS | awk '{split($0,a," "); print a[1]}'` +export POSITION_MANAGER_CONTRACT_ADDR=`echo $UNISWAP_CONTRACT_ADDRS | awk '{split($0,a," "); print a[2]}'` + +export POOL_CONTRACT_ADDR=`npx hardhat run scripts/deploy/v3core/pool.js --network localhost | grep 'Pool address' | awk '{print $3}'` +export STAKER_CONTRACT_ADDR=`npx hardhat run scripts/deploy/staker/staker.js --network localhost | grep 'UniswapV3Staker Address' | awk '{print $3}'` + +echo "Uniswap Staker Address: $STAKER_CONTRACT_ADDR" +npx hardhat run scripts/events/incentive.js --network localhost + +while sleep 60; do + ps aux |grep node |grep -q -v grep + PROCESS_1_STATUS=$? + + if [ $PROCESS_1_STATUS -ne 0 ]; then + echo "Process has already exited." + exit 1 + fi +done \ No newline at end of file diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..f0f9872 --- /dev/null +++ b/test/test.js @@ -0,0 +1,93 @@ +const { createApolloFetch } = require("apollo-fetch"); +var assert = require('assert'); +const path = require("path"); + +const srcDir = path.join(__dirname, ".."); +let graphNodeIP = "127.0.0.1"; + +const fetchSubgraph = createApolloFetch({ + uri: `http://${graphNodeIP}:8000/subgraphs/name/codingnirvana/uniswap-v3-subgraph`, +}); + +const poolAddr = "0x1fa8dda81477a5b6fa1b2e149e93ed9c7928992f" +const refundeeAddr = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" +const rewardTokenAddr = "0x610178da211fef7d417bc0e6fed39f05609ad788" +const reward = 1000; + +describe("Check records", function () { + it("should equal number of events fired", async function () { + let subgraphData = await fetchSubgraph({ + query: `{ + incentives { + id + } + }`, + }); + + assert.equal(subgraphData.data.incentives.length, 1); + }); + + it("should have matching reward token address used while creation", async function () { + let subgraphData = await fetchSubgraph({ + query: `{ + incentives { + id + rewardToken + } + }`, + }); + + + for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { + assert.equal(subgraphData.data.incentives[idx].rewardToken, rewardTokenAddr); + } + }); + + it("should have matching pool address used while creation", async function () { + let subgraphData = await fetchSubgraph({ + query: `{ + incentives { + id + pool + } + }`, + }); + + + for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { + assert.equal(subgraphData.data.incentives[idx].pool, poolAddr); + } + }); + + it("should have matching refundee address used while creation", async function () { + let subgraphData = await fetchSubgraph({ + query: `{ + incentives { + id + refundee + } + }`, + }); + + + for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { + assert.equal(subgraphData.data.incentives[idx].refundee, refundeeAddr); + } + }); + + it("should have matching reward used while creation", async function () { + let subgraphData = await fetchSubgraph({ + query: `{ + incentives { + id + reward + } + }`, + }); + + + for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { + assert.equal(subgraphData.data.incentives[idx].reward, reward); + } + }); +}); diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..5ed5ec0 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +DIRECTORY=$(cd `dirname $0` && pwd) + +__cleanup () +{ + docker-compose -f $DIRECTORY/docker-compose.yml stop + rm -r -f $DIRECTORY/data +} + +trap __cleanup EXIT + +docker-compose -f $DIRECTORY/docker-compose.yml up --build -d + +sleep 60 +echo "Servers are up" + +yarn codegen +yarn build +yarn create-local +yarn deploy-local + +echo "Running tests" +sleep 20 + +yarn mocha \ No newline at end of file From 3b2ce8f282e8f82de82aeefaf87b80d5c2324508 Mon Sep 17 00:00:00 2001 From: shubham-kanodia Date: Fri, 25 Jun 2021 23:26:38 +0530 Subject: [PATCH 2/5] Adding test to workflow --- .github/workflows/CI.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0a2d257..4ed2a90 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - subgraph-additions pull_request: jobs: @@ -31,4 +32,5 @@ jobs: - run: yarn - run: yarn codegen - - run: yarn build \ No newline at end of file + - run: yarn build + - run: yarn test \ No newline at end of file From 55f63d8346cfc6c2d32366ac114206d84af279ff Mon Sep 17 00:00:00 2001 From: shubham-kanodia Date: Fri, 25 Jun 2021 23:36:21 +0530 Subject: [PATCH 3/5] Fixing host ip issue in docker-compose --- test/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 9512c78..2861995 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -24,7 +24,7 @@ services: postgres_pass: let-me-in postgres_db: graph-node ipfs: 'ipfs:5001' - ethereum: 'mainnet:http://docker.for.mac.localhost:8545' + ethereum: 'mainnet:http://host.docker.internal:8545' GRAPH_LOG: info ipfs: image: ipfs/go-ipfs:v0.4.23 From ef7fdee1b501991d3b6625c33b53f729a088f906 Mon Sep 17 00:00:00 2001 From: shubham-kanodia Date: Sat, 26 Jun 2021 19:30:41 +0530 Subject: [PATCH 4/5] Making changes for fixing host ip issue for linux --- test/setup-host.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ test/test.sh | 6 ++++++ 2 files changed, 49 insertions(+) create mode 100755 test/setup-host.sh diff --git a/test/setup-host.sh b/test/setup-host.sh new file mode 100755 index 0000000..d84d299 --- /dev/null +++ b/test/setup-host.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +DIRECTORY=$(cd `dirname $0` && pwd) + +set -e + +if ! which docker 2>&1 > /dev/null; then + echo "Please install 'docker' first" + exit 1 +fi + +if ! which docker-compose 2>&1 > /dev/null; then + echo "Please install 'docker-compose' first" + exit 1 +fi + +if ! which jq 2>&1 > /dev/null; then + echo "Please install 'jq' first" + exit 1 +fi + +# Create the graph-node container +docker-compose up --no-start graph-node + +# Start graph-node so we can inspect it +docker-compose start graph-node + +# Identify the container ID +CONTAINER_ID=$(docker container ls | grep graph-node | cut -d' ' -f1) + +# Inspect the container to identify the host IP address +HOST_IP=$(docker inspect "$CONTAINER_ID" | jq -r .[0].NetworkSettings.Networks[].Gateway) + +echo "Host IP: $HOST_IP" + +# Inject the host IP into docker-compose.yml +sed -i -e "s/host.docker.internal/$HOST_IP/g" $DIRECTORY/docker-compose.yml + +function stop_graph_node { + # Ensure graph-node is stopped + docker-compose stop graph-node +} + +trap stop_graph_node EXIT \ No newline at end of file diff --git a/test/test.sh b/test/test.sh index 5ed5ec0..9ff3a7b 100755 --- a/test/test.sh +++ b/test/test.sh @@ -5,11 +5,17 @@ DIRECTORY=$(cd `dirname $0` && pwd) __cleanup () { docker-compose -f $DIRECTORY/docker-compose.yml stop + + rm docker-compose.yml + mv docker-compose.yml-e docker-compose.yml + + # Commenting this out due to failing pipeline rm -r -f $DIRECTORY/data } trap __cleanup EXIT +./setup-host.sh docker-compose -f $DIRECTORY/docker-compose.yml up --build -d sleep 60 From 30f8a59b7abce5f0b1f26ab38d6ff521bdb4a9ce Mon Sep 17 00:00:00 2001 From: shubham-kanodia Date: Sun, 27 Jun 2021 15:14:10 +0530 Subject: [PATCH 5/5] Refactoring tests --- package.json | 8 +- ....js => IncentiveEvent.integration.spec.ts} | 17 +- test/{ => runner}/Dockerfile | 0 test/{ => runner}/docker-compose.yml | 0 .../scripts/deploy/staker/staker.js | 0 .../scripts/deploy/v3core/pool.js | 0 test/{ => runner}/scripts/events/incentive.js | 0 test/{ => runner}/setup-contracts/Token.sol | 0 test/{ => runner}/setup-env.sh | 0 test/{ => runner}/setup-host.sh | 6 +- test/{ => runner}/test.sh | 9 +- tsconfig.json | 4 +- yarn.lock | 495 ++++++++++++++++-- 13 files changed, 474 insertions(+), 65 deletions(-) rename test/{test.js => IncentiveEvent.integration.spec.ts} (79%) rename test/{ => runner}/Dockerfile (100%) rename test/{ => runner}/docker-compose.yml (100%) rename test/{ => runner}/scripts/deploy/staker/staker.js (100%) rename test/{ => runner}/scripts/deploy/v3core/pool.js (100%) rename test/{ => runner}/scripts/events/incentive.js (100%) rename test/{ => runner}/setup-contracts/Token.sol (100%) rename test/{ => runner}/setup-env.sh (100%) rename test/{ => runner}/setup-host.sh (81%) rename test/{ => runner}/test.sh (70%) diff --git a/package.json b/package.json index cc72f81..ae21e7b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "create-local": "graph create --node http://localhost:8020/ codingnirvana/uniswap-v3-subgraph", "remove-local": "graph remove --node http://localhost:8020/ codingnirvana/uniswap-v3-subgraph", "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 codingnirvana/uniswap-v3-subgraph", - "test": "cd test && ./test.sh" + "test": "./test/runner/test.sh" }, "dependencies": { "@graphprotocol/graph-cli": "0.20.1", @@ -22,6 +22,10 @@ "typescript": "^3.5.2" }, "devDependencies": { - "mocha": "^9.0.1" + "@types/chai": "^4.2.19", + "@types/mocha": "^8.2.2", + "chai": "^4.3.4", + "mocha": "^9.0.1", + "ts-mocha": "^8.0.0" } } diff --git a/test/test.js b/test/IncentiveEvent.integration.spec.ts similarity index 79% rename from test/test.js rename to test/IncentiveEvent.integration.spec.ts index f0f9872..9f4905d 100644 --- a/test/test.js +++ b/test/IncentiveEvent.integration.spec.ts @@ -1,10 +1,7 @@ -const { createApolloFetch } = require("apollo-fetch"); -var assert = require('assert'); -const path = require("path"); +import { createApolloFetch } from "apollo-fetch"; +import { expect } from "chai"; -const srcDir = path.join(__dirname, ".."); let graphNodeIP = "127.0.0.1"; - const fetchSubgraph = createApolloFetch({ uri: `http://${graphNodeIP}:8000/subgraphs/name/codingnirvana/uniswap-v3-subgraph`, }); @@ -24,7 +21,7 @@ describe("Check records", function () { }`, }); - assert.equal(subgraphData.data.incentives.length, 1); + expect(subgraphData.data.incentives.length).to.eq(1); }); it("should have matching reward token address used while creation", async function () { @@ -39,7 +36,7 @@ describe("Check records", function () { for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { - assert.equal(subgraphData.data.incentives[idx].rewardToken, rewardTokenAddr); + expect(subgraphData.data.incentives[idx].rewardToken).to.eq(rewardTokenAddr); } }); @@ -55,7 +52,7 @@ describe("Check records", function () { for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { - assert.equal(subgraphData.data.incentives[idx].pool, poolAddr); + expect(subgraphData.data.incentives[idx].pool).to.eq(poolAddr); } }); @@ -71,7 +68,7 @@ describe("Check records", function () { for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { - assert.equal(subgraphData.data.incentives[idx].refundee, refundeeAddr); + expect(subgraphData.data.incentives[idx].refundee).to.eq(refundeeAddr); } }); @@ -87,7 +84,7 @@ describe("Check records", function () { for (let idx = 0; idx < subgraphData.data.incentives.length; idx++) { - assert.equal(subgraphData.data.incentives[idx].reward, reward); + expect(subgraphData.data.incentives[idx].reward).equal(reward.toString()); } }); }); diff --git a/test/Dockerfile b/test/runner/Dockerfile similarity index 100% rename from test/Dockerfile rename to test/runner/Dockerfile diff --git a/test/docker-compose.yml b/test/runner/docker-compose.yml similarity index 100% rename from test/docker-compose.yml rename to test/runner/docker-compose.yml diff --git a/test/scripts/deploy/staker/staker.js b/test/runner/scripts/deploy/staker/staker.js similarity index 100% rename from test/scripts/deploy/staker/staker.js rename to test/runner/scripts/deploy/staker/staker.js diff --git a/test/scripts/deploy/v3core/pool.js b/test/runner/scripts/deploy/v3core/pool.js similarity index 100% rename from test/scripts/deploy/v3core/pool.js rename to test/runner/scripts/deploy/v3core/pool.js diff --git a/test/scripts/events/incentive.js b/test/runner/scripts/events/incentive.js similarity index 100% rename from test/scripts/events/incentive.js rename to test/runner/scripts/events/incentive.js diff --git a/test/setup-contracts/Token.sol b/test/runner/setup-contracts/Token.sol similarity index 100% rename from test/setup-contracts/Token.sol rename to test/runner/setup-contracts/Token.sol diff --git a/test/setup-env.sh b/test/runner/setup-env.sh similarity index 100% rename from test/setup-env.sh rename to test/runner/setup-env.sh diff --git a/test/setup-host.sh b/test/runner/setup-host.sh similarity index 81% rename from test/setup-host.sh rename to test/runner/setup-host.sh index d84d299..4092fb7 100755 --- a/test/setup-host.sh +++ b/test/runner/setup-host.sh @@ -19,10 +19,10 @@ if ! which jq 2>&1 > /dev/null; then fi # Create the graph-node container -docker-compose up --no-start graph-node +docker-compose -f $DIRECTORY/docker-compose.yml up --no-start graph-node # Start graph-node so we can inspect it -docker-compose start graph-node +docker-compose -f $DIRECTORY/docker-compose.yml start graph-node # Identify the container ID CONTAINER_ID=$(docker container ls | grep graph-node | cut -d' ' -f1) @@ -37,7 +37,7 @@ sed -i -e "s/host.docker.internal/$HOST_IP/g" $DIRECTORY/docker-compose.yml function stop_graph_node { # Ensure graph-node is stopped - docker-compose stop graph-node + docker-compose -f $DIRECTORY/docker-compose.yml stop graph-node } trap stop_graph_node EXIT \ No newline at end of file diff --git a/test/test.sh b/test/runner/test.sh similarity index 70% rename from test/test.sh rename to test/runner/test.sh index 9ff3a7b..9e5ed38 100755 --- a/test/test.sh +++ b/test/runner/test.sh @@ -6,16 +6,13 @@ __cleanup () { docker-compose -f $DIRECTORY/docker-compose.yml stop - rm docker-compose.yml - mv docker-compose.yml-e docker-compose.yml - - # Commenting this out due to failing pipeline + mv $DIRECTORY/docker-compose.yml-e $DIRECTORY/docker-compose.yml rm -r -f $DIRECTORY/data } trap __cleanup EXIT -./setup-host.sh +$DIRECTORY/setup-host.sh docker-compose -f $DIRECTORY/docker-compose.yml up --build -d sleep 60 @@ -29,4 +26,4 @@ yarn deploy-local echo "Running tests" sleep 20 -yarn mocha \ No newline at end of file +yarn ts-mocha $DIRECTORY/../*.ts \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 6566461..c6a1910 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { - "extends": "./node_modules/@graphprotocol/graph-ts/tsconfig.json", + "extend": "./node_modules/@graphprotocol/graph-ts/tsconfig.json", "compilerOptions": { - "types": ["@graphprotocol/graph-ts"] + "types": ["@graphprotocol/graph-ts", "mocha"] } } diff --git a/yarn.lock b/yarn.lock index 1020c90..643a434 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51,18 +51,22 @@ optionalDependencies: keytar "^7.4.0" -"@graphprotocol/graph-ts@0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.20.0.tgz#ed31ffd59a6aa9703a1ec5079f137a81220443cb" - integrity sha512-+R0Tu/MD4Fiq0Fo+v1l+xznz+ZrciQKWlzMtXjDrhM70vlMNVL9wDmf90MVFYpslgqIfw024hT6XwlmyNyOWbQ== +"@graphprotocol/graph-ts@git://github.com/graphprotocol/graph-ts#2f628dfbce14adc40bab35d66604c4c7a2e6b46c": + version "0.20.1" + resolved "git://github.com/graphprotocol/graph-ts#2f628dfbce14adc40bab35d66604c4c7a2e6b46c" dependencies: - assemblyscript "https://github.com/AssemblyScript/assemblyscript#36040d5b5312f19a025782b5e36663823494c2f3" + assemblyscript "git+https://github.com/AssemblyScript/assemblyscript.git#v0.6" "@protobufjs/utf8@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@types/chai@^4.2.19": + version "4.2.19" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.19.tgz#80f286b515897413c7a35bdda069cc80f2344233" + integrity sha512-jRJgpRBuY+7izT7/WNXP/LsMO9YonsstuL+xuvycDyESpoDoIAsMd7suwpB4h9oEWB+ZlPTqJJ8EHomzNhwTPQ== + "@types/connect@^3.4.33": version "3.4.34" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" @@ -89,11 +93,21 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/lodash@^4.14.159": version "4.14.170" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== +"@types/mocha@^8.2.2": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.2.tgz#91daa226eb8c2ff261e6a8cbf8c7304641e095e0" + integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw== + "@types/node@*": version "15.12.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" @@ -162,6 +176,11 @@ semver "^7.3.2" tsutils "^3.17.1" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + JSONStream@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" @@ -205,6 +224,11 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-colors@^3.2.1: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" @@ -244,7 +268,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.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== @@ -267,6 +291,13 @@ apisauce@^2.0.1: axios "^0.21.1" ramda "^0.25.0" +apollo-fetch@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/apollo-fetch/-/apollo-fetch-0.7.0.tgz#63c255a0ccb1b4c473524d8f9b536d72438bd3e7" + integrity sha512-0oHsDW3Zxx+Of1wuqcOXruNj4Kv55WN69tkIjwkCQDEIrgCpgA2scjChFsgflSVMy/1mkTKCY1Mc0TYJhNRzmw== + dependencies: + cross-fetch "^1.0.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" @@ -292,6 +323,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + asmcrypto.js@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" @@ -325,22 +366,16 @@ asn1@~0.2.3: opencollective-postinstall "^2.0.0" source-map-support "^0.5.11" -"assemblyscript@https://github.com/AssemblyScript/assemblyscript#36040d5b5312f19a025782b5e36663823494c2f3": - version "0.6.0" - resolved "https://github.com/AssemblyScript/assemblyscript#36040d5b5312f19a025782b5e36663823494c2f3" - dependencies: - "@protobufjs/utf8" "^1.1.0" - binaryen "77.0.0-nightly.20190407" - glob "^7.1.3" - long "^4.0.0" - opencollective-postinstall "^2.0.0" - source-map-support "^0.5.11" - 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 sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -500,6 +535,11 @@ brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + 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" @@ -537,7 +577,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -586,11 +626,28 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chai@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.1" + type-detect "^4.0.5" + chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -621,7 +678,12 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.0.2: +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +chokidar@3.5.1, chokidar@^3.0.2: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -703,6 +765,15 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -820,6 +891,14 @@ create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-1.1.1.tgz#dede6865ae30f37eae62ac90ebb7bdac002b05a0" + integrity sha512-+VJE04+UfxxmBfcnmAu/lKor53RUCx/1ilOti4p+JgrnLQ4AZZIRoe2OEd76VaHyWQmQxqKnV+TaqjHC4r0HWw== + dependencies: + node-fetch "1.7.3" + whatwg-fetch "2.0.3" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -847,6 +926,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -854,18 +940,16 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decompress-response@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" @@ -873,6 +957,13 @@ decompress-response@^4.2.0: dependencies: mimic-response "^2.0.0" +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -915,6 +1006,16 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^3.1.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + docker-compose@^0.23.2: version "0.23.12" resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.12.tgz#fa883b98be08f6926143d06bf9e522ef7ed3210c" @@ -993,6 +1094,13 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + 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" @@ -1036,6 +1144,16 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + 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" @@ -1270,6 +1388,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -1279,6 +1405,11 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatmap@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" @@ -1365,6 +1496,16 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -1405,7 +1546,7 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: +glob@7.1.7, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -1471,6 +1612,11 @@ graphql@^15.5.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -1528,6 +1674,11 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hi-base32@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" @@ -1563,6 +1714,13 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -1846,6 +2004,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + 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" @@ -1856,6 +2019,11 @@ is-pull-stream@0.0.0: resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" integrity sha1-o7w9HG0wVRUcRr3m85nv7SFEDKk= +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" @@ -1866,6 +2034,11 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -1942,6 +2115,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -1987,6 +2167,13 @@ json-text-sequence@~0.1.0: dependencies: delimit-stream "0.1.0" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -2099,6 +2286,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -2179,6 +2373,14 @@ lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -2224,6 +2426,11 @@ mafmt@^7.0.0: dependencies: multiaddr "^7.3.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + 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" @@ -2270,7 +2477,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2294,12 +2501,43 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.5" +mocha@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.1.tgz#01e66b7af0012330c0a38c4b6eaa6d92b8a81bf9" + integrity sha512-9zwsavlRO+5csZu6iRtl3GHImAbhERoDsZwdRkdJ/bE+eVplmoxNKE901ZJ9LdSchYBjSCPbjKc5XvcAri2ylw== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.23" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.4" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + 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: +ms@2.1.3, 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== @@ -2451,6 +2689,11 @@ nan@^2.14.0, nan@^2.14.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nanoid@3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -2487,6 +2730,14 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== +node-fetch@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-fetch@^2.3.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -2614,6 +2865,20 @@ p-finally@^2.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2631,6 +2896,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + 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" @@ -2651,6 +2921,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + 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" @@ -2841,6 +3116,13 @@ ramdasauce@^2.1.0: dependencies: ramda "^0.24.1" +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -2926,6 +3208,11 @@ request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2988,7 +3275,7 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -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" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2998,7 +3285,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "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" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3034,6 +3321,13 @@ semver@^7.0.0, semver@^7.3.2: dependencies: lru-cache "^6.0.0" +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3115,7 +3409,7 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -source-map-support@^0.5.11: +source-map-support@^0.5.11, source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -3199,7 +3493,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== @@ -3255,12 +3549,17 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + 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== -strip-json-comments@^3.0.1: +strip-json-comments@3.1.1, strip-json-comments@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3270,6 +3569,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.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" @@ -3390,6 +3696,39 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +ts-mocha@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ts-mocha/-/ts-mocha-8.0.0.tgz#962d0fa12eeb6468aa1a6b594bb3bbc818da3ef0" + integrity sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA== + dependencies: + ts-node "7.0.1" + optionalDependencies: + tsconfig-paths "^3.5.0" + +ts-node@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== + dependencies: + arrify "^1.0.0" + buffer-from "^1.1.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.6" + yn "^2.0.0" + +tsconfig-paths@^3.5.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -3426,6 +3765,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -3507,21 +3851,26 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" +whatwg-fetch@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + integrity sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ= -which@^2.0.0, which@^2.0.1: +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" -wide-align@^1.1.0: +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -3538,6 +3887,20 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +workerpool@6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.4.tgz#6a972b6df82e38d50248ee2820aa98e2d0ad3090" + integrity sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + 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" @@ -3555,6 +3918,11 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -3570,6 +3938,11 @@ yaml@^1.10.2, yaml@^1.5.1, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + yargs-parser@^16.1.0: version "16.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" @@ -3577,3 +3950,41 @@ yargs-parser@^16.1.0: dependencies: camelcase "^5.0.0" decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==