diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 75cf442b..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: 2 -jobs: - build: - docker: - - image: cimg/node:14.16.1 - working_directory: ~/balancer - steps: - - checkout - - restore_cache: - keys: - - dependency-cache-{{ checksum "package.json" }} - - run: - name: Install Dependencies - command: yarn install --quiet - - save_cache: - key: dependency-cache-{{ checksum "package.json" }} - paths: - - node_modules - - save_cache: - key: balancer-{{ .Environment.CIRCLE_SHA1 }} - paths: - - ~/balancer - - run: - name: Run Lint - command: yarn lint - - run: - name: Run build - command: yarn build - - run: - name: Run tests - command: yarn test - - run: - name: Coveralls coverage - command: yarn coverage diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml new file mode 100644 index 00000000..34ed53ec --- /dev/null +++ b/.github/workflows/checks.yaml @@ -0,0 +1,70 @@ +name: Checks + +on: + - pull_request + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install node + uses: actions/setup-node@v3 + with: + node-version: 14.16.1 + - name: Cache + uses: actions/cache@v2 + id: cache + with: + path: '**/node_modules' + key: yarn-v1-${{ hashFiles('**/yarn.lock') }} + - name: Install + run: yarn --immutable + if: steps.cache.outputs.cache-hit != 'true' + - name: Lint + run: yarn lint + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install node + uses: actions/setup-node@v3 + with: + node-version: 14.16.1 + - name: Cache + uses: actions/cache@v2 + id: cache + with: + path: '**/node_modules' + key: yarn-v1-${{ hashFiles('**/yarn.lock') }} + - name: Install + run: yarn --immutable + if: steps.cache.outputs.cache-hit != 'true' + - name: Build + run: yarn build + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install node + uses: actions/setup-node@v3 + with: + node-version: 14.16.1 + - name: Cache + uses: actions/cache@v2 + id: cache + with: + path: '**/node_modules' + key: yarn-v1-${{ hashFiles('**/yarn.lock') }} + - name: Install + run: yarn --immutable + if: steps.cache.outputs.cache-hit != 'true' + - name: Compile + run: yarn build + - name: Test + run: yarn test +env: + CI: true + INFURA: ${{ secrets.INFURA }} diff --git a/README.md b/README.md index f39088f1..05e63a83 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,4 @@

- - - - - - diff --git a/package.json b/package.json index 98fde988..7177535e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@balancer-labs/sor", - "version": "4.0.1-beta.18", + "version": "4.1.0-beta.0", "license": "GPL-3.0-only", "main": "dist/index.js", "module": "dist/index.esm.js", @@ -9,7 +9,6 @@ "build": "rollup -c", "prepack": "yarn build", "test": "TS_NODE_PROJECT='tsconfig.testing.json' nyc mocha -r ts-node/register test/*.spec.ts --timeout 20000", - "coverage": "nyc report --reporter=text-lcov | coveralls", "lint": "eslint ./src ./test --ext .ts --max-warnings 0", "node": "npx hardhat node --tsconfig tsconfig.testing.json --fork $(grep ALCHEMY_URL .env | cut -d '=' -f2) --fork-block-number 14828550" }, @@ -48,7 +47,6 @@ "@typescript-eslint/parser": "^4.29.2", "bignumber.js": "^9.0.1", "chai": "^4.2.0", - "coveralls": "^3.0.9", "dotenv": "^8.2.0", "eslint": "^7.32.0", "eslint-plugin-mocha-no-only": "^1.1.1", diff --git a/src/routeProposal/filtering.ts b/src/routeProposal/filtering.ts index 3702f2df..da507f71 100644 --- a/src/routeProposal/filtering.ts +++ b/src/routeProposal/filtering.ts @@ -17,6 +17,16 @@ import { Zero } from '@ethersproject/constants'; const BOOSTED_PATHS_MAX_LENGTH = 7; +interface edgeDict { + [node: string]: [string, string, string][]; +} + +interface treeEdge { + edge: [string, string, string]; + parentIndices: [number, number]; + visitedNodes: string[]; +} + export const filterPoolsByType = ( pools: SubgraphPoolBase[], poolTypeFilter: PoolFilter @@ -166,17 +176,20 @@ export function producePaths( // We build this tree by adding at each step all the possible continuations for // each branch. When a branch reaches tokenOut, we write down the corresponding path. // We only allow paths up to length BOOSTED_PATHS_MAX_LENGTH = 7 - export function getBoostedGraph( tokenIn: string, tokenOut: string, poolsAllDict: PoolDictionary, config: SorConfig ): edgeDict { - const wethAddress: string = config.weth.toLowerCase(); const graphPoolsSet: Set = new Set(); const linearPools: PoolBase[] = []; const phantomPools: PoolBase[] = []; + const connectingTokens = config.connectingTokens + ? config.connectingTokens.map( + (connectingToken) => connectingToken.address + ) + : []; // Here we add all linear pools, take note of phantom pools, // add LBP pools with tokenIn or tokenOut and their corresponding // highest liquidity WETH connections @@ -194,73 +207,34 @@ export function getBoostedGraph( if (tokensList.includes(pool.address)) { phantomPools.push(pool); } - if (config.lbpRaisingTokens) { - const raisingTokens = config.lbpRaisingTokens.map((address) => - address.toLowerCase() + if (config.lbpRaisingTokens && pool.isLBP) { + handleLBPCase( + graphPoolsSet, + config.lbpRaisingTokens, + pool, + tokenIn, + tokenOut, + connectingTokens, + poolsAllDict ); - if (pool.isLBP) { - const raisingTokenIn: string | undefined = getRaisingToken( - pool, - raisingTokens, - tokenIn - ); - if (raisingTokenIn) { - graphPoolsSet.add(pool); - if (raisingTokenIn !== wethAddress) { - const bestRaisingTokenInToWeth = - getHighestLiquidityPool( - raisingTokenIn, - wethAddress, - poolsAllDict - ); - if (bestRaisingTokenInToWeth) { - graphPoolsSet.add( - poolsAllDict[bestRaisingTokenInToWeth] - ); - } - } - } - const raisingTokenOut: string | undefined = getRaisingToken( - pool, - raisingTokens, - tokenOut - ); - if (raisingTokenOut) { - graphPoolsSet.add(pool); - if (raisingTokenOut !== wethAddress) { - const bestWethToRaisingTokenOut = - getHighestLiquidityPool( - wethAddress, - raisingTokenOut, - poolsAllDict - ); - if (bestWethToRaisingTokenOut) { - graphPoolsSet.add( - poolsAllDict[bestWethToRaisingTokenOut] - ); - } - } - } - } } } } - // add highest liquidity pools with tokenIn and weth or tokenOut and weth - const bestTokenInToWeth = getHighestLiquidityPool( - tokenIn, - wethAddress, - poolsAllDict - ); - if (bestTokenInToWeth) { - graphPoolsSet.add(poolsAllDict[bestTokenInToWeth]); - } - const bestWethToTokenOut = getHighestLiquidityPool( - wethAddress, - tokenOut, - poolsAllDict - ); - if (bestWethToTokenOut) { - graphPoolsSet.add(poolsAllDict[bestWethToTokenOut]); + // add best pools tokenIn -> connectingToken and connectingToken -> tokenOut + // these can be part of a longer path so do not rely on being directly connected + for (const connectingToken of connectingTokens) { + addMostLiquidPoolToSet( + tokenIn, + connectingToken, + poolsAllDict, + graphPoolsSet + ); + addMostLiquidPoolToSet( + connectingToken, + tokenOut, + poolsAllDict, + graphPoolsSet + ); } if (linearPools.length == 0) return {}; const linearPoolsAddresses = linearPools.map((pool) => pool.address); @@ -294,10 +268,6 @@ export function getBoostedGraph( return edgeDict; } -interface edgeDict { - [node: string]: [string, string, string][]; -} - function getNodesAndEdges(pools: PoolBase[]): edgeDict { const edgesFromNode: edgeDict = {}; for (const pool of pools) { @@ -319,12 +289,6 @@ function getNodesAndEdges(pools: PoolBase[]): edgeDict { return edgesFromNode; } -interface treeEdge { - edge: [string, string, string]; - parentIndices: [number, number]; - visitedNodes: string[]; -} - export function getBoostedPaths( tokenIn: string, tokenOut: string, @@ -645,3 +609,68 @@ function getRaisingToken( } return theOtherToken; } + +function handleLBPCase( + graphPoolsSet: Set, + lbpRaisingTokens: string[], + poolLbp: PoolBase, + tokenIn: string, + tokenOut: string, + connectingTokens: string[], + poolsAllDict: PoolDictionary +) { + // Tokens that will be used as LBP Base Token, e.g. USDC/DAI/WETH + const raisingTokens = lbpRaisingTokens.map((address) => + address.toLowerCase() + ); + + if (raisingTokens.length === 0) return; + + // Assuming tokenIn is the lbpToken find the corresponding base token if it exists + const raisingTokenIn: string | undefined = getRaisingToken( + poolLbp, + raisingTokens, + tokenIn + ); + const raisingTokenOut: string | undefined = getRaisingToken( + poolLbp, + raisingTokens, + tokenOut + ); + if (!raisingTokenIn && !raisingTokenOut) return; + + // Add the LBP pool to the graph + graphPoolsSet.add(poolLbp); + + // For each connecting token add most liquid pools with raisingToken and raisingTokenOut + for (const connectingToken of connectingTokens) { + if (raisingTokenIn && raisingTokenIn !== connectingToken) { + // raisingToken>[Pool]>connectingToken + addMostLiquidPoolToSet( + raisingTokenIn, + connectingToken, + poolsAllDict, + graphPoolsSet + ); + } + if (raisingTokenOut && raisingTokenOut !== connectingToken) { + // connectingToken>[Pool]>raisingToken + addMostLiquidPoolToSet( + connectingToken, + raisingTokenOut, + poolsAllDict, + graphPoolsSet + ); + } + } +} + +function addMostLiquidPoolToSet( + tokenIn: string, + tokenOut: string, + pools: PoolDictionary, + graphPools: Set +): void { + const pool = getHighestLiquidityPool(tokenIn, tokenOut, pools); + if (pool) graphPools.add(pools[pool]); +} diff --git a/src/types.ts b/src/types.ts index c79a85f2..71564943 100644 --- a/src/types.ts +++ b/src/types.ts @@ -5,6 +5,7 @@ export interface SorConfig { chainId: number; vault: string; weth: string; + connectingTokens?: { symbol: string; address: string }[]; staBal3Pool?: { id: string; address: string }; usdcConnectingPool?: { id: string; usdc: string }; wETHwstETH?: { id: string; address: string }; diff --git a/test/boostedPaths.spec.ts b/test/boostedPaths.spec.ts index 60623f9e..7eeab324 100644 --- a/test/boostedPaths.spec.ts +++ b/test/boostedPaths.spec.ts @@ -441,6 +441,32 @@ describe('generic boosted pools, path creation test', () => { assert.equal(paths.length, 4); }); }); + context('using an alternative connecting token', () => { + const USDC = '0xe22da380ee6b445bb8273c81944adeb6e8450422'; // USDC + const GOLD = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbb'; + it('USDC to GOLD', () => { + const [, , boostedPaths] = getPaths( + USDC, + GOLD, + SwapTypes.SwapExactIn, + genericBoostedPools.pools, + maxPools, + sorConfigTest + ); + assert.equal(boostedPaths.length, 2); + }); + it('GOLD to USDC', () => { + const [, , boostedPaths] = getPaths( + GOLD, + USDC, + SwapTypes.SwapExactIn, + genericBoostedPools.pools, + maxPools, + sorConfigTest + ); + assert.equal(boostedPaths.length, 2); + }); + }); }); describe('generic boosted pools with wstETH, path creation test', () => { diff --git a/test/candidatePaths.spec.ts b/test/candidatePaths.spec.ts index 4e82a8e8..d49fee68 100644 --- a/test/candidatePaths.spec.ts +++ b/test/candidatePaths.spec.ts @@ -298,6 +298,12 @@ describe('Tests pools filtering and path processing', () => { chainId: 1, vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + connectingTokens: [ + { + symbol: 'weth', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + ], bbausd: { id: '0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb20000000000000000000000fe', address: '0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2', diff --git a/test/composableStablePool.spec.ts b/test/composableStablePool.spec.ts index 8f575005..52b5818a 100644 --- a/test/composableStablePool.spec.ts +++ b/test/composableStablePool.spec.ts @@ -19,8 +19,8 @@ describe('composable stable pool', () => { // parsePoolPairData contains pool's allBalances and allBalancesScaled // both already multiplied by the price rates. const poolPairData = composableStablePool.parsePoolPairData( - ADDRESSES[Network.MAINNET].bbausdt2.address, - ADDRESSES[Network.MAINNET].bbausd2.address + ADDRESSES[Network.MAINNET].bbausdt.address, + ADDRESSES[Network.MAINNET].bbausd.address ); it('token -> BPT spot price with no rate', () => { // spot prices diff --git a/test/lib/constants.ts b/test/lib/constants.ts index f02f68bb..cc958ff0 100644 --- a/test/lib/constants.ts +++ b/test/lib/constants.ts @@ -11,6 +11,16 @@ export const sorConfigTest: SorConfig = { chainId: 99, weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', vault: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', + connectingTokens: [ + { + symbol: 'weth', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + { + symbol: 'conn', + address: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', + }, + ], wETHwstETH: { id: 'wETH-wstETH', address: '0x0000000000000000000000000000000000222222', @@ -25,6 +35,12 @@ export const sorConfigTestStaBal = { chainId: 99, weth: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', vault: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', + connectingTokens: [ + { + symbol: 'weth', + address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + }, + ], usdcConnectingPool: { id: 'usdcConnecting', usdc: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', @@ -38,18 +54,40 @@ export const sorConfigTestStaBal = { export const sorConfigEth: SorConfig = { chainId: 1, weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + connectingTokens: [ + { + symbol: 'wstEth', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + { + symbol: 'wEth', + address: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', + }, + ], vault: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', }; export const sorConfigKovan: SorConfig = { chainId: 42, weth: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + connectingTokens: [ + { + symbol: 'weth', + address: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + }, + ], vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', }; export const sorConfigFullKovan: SorConfig = { chainId: 42, weth: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + connectingTokens: [ + { + symbol: 'weth', + address: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + }, + ], vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', lbpRaisingTokens: [ '0xdfcea9088c8a88a76ff74892c1457c17dfeef9c1', diff --git a/test/linear.spec.ts b/test/linear.spec.ts index 5b5e8b4b..04b3af1d 100644 --- a/test/linear.spec.ts +++ b/test/linear.spec.ts @@ -198,6 +198,12 @@ describe('linear pool tests', () => { const config = { chainId: 99, weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + connectingTokens: [ + { + symbol: 'weth', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + ], vault: '0xeefba1e63905ef1d7acba5a8513c70307c1ce441', }; it('getPathsUsingLinearPool return empty paths', () => { diff --git a/test/testData/boostedPools/genericBoosted.json b/test/testData/boostedPools/genericBoosted.json index fa3c39cb..59391e40 100644 --- a/test/testData/boostedPools/genericBoosted.json +++ b/test/testData/boostedPools/genericBoosted.json @@ -709,6 +709,70 @@ "totalShares": "14473.092928301396719020", "totalWeight": "0", "wrappedIndex": 0 + }, + { + "address": "0x000000000000000000000000000000000000aaaa", + "id": "weightedConn-BBausd", + "poolType": "Weighted", + "publicSwap": true, + "swapFee": "0.01", + "swapEnabled": true, + "tokens": [ + { + "address": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "balance": "100000.000000", + "decimals": 18, + "weight": "50", + "symbol": "CONN", + "priceRate": "1" + }, + { + "address": "0x8fd162f338b770f7e879030830cde9173367f301", + "balance": "20000000.78213445", + "decimals": 18, + "weight": "50", + "symbol": "bbaUSD", + "priceRate": "1" + } + ], + "tokensList": [ + "0x8fd162f338b770f7e879030830cde9173367f301", + "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ], + "totalWeight": "100", + "totalShares": "10000" + }, + { + "address": "0x000000000000000000000000000000000000aaaa", + "id": "weightedConn-GOLD", + "poolType": "Weighted", + "publicSwap": true, + "swapFee": "0.01", + "swapEnabled": true, + "tokens": [ + { + "address": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "balance": "100000.000000", + "decimals": 18, + "weight": "50", + "symbol": "CONN", + "priceRate": "1" + }, + { + "address": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbb", + "balance": "20000000.78213445", + "decimals": 18, + "weight": "50", + "symbol": "GOLD", + "priceRate": "1" + } + ], + "tokensList": [ + "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbb", + "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ], + "totalWeight": "100", + "totalShares": "10000" } ] } diff --git a/test/testScripts/constants.ts b/test/testScripts/constants.ts index fdb59f0f..6345a3fe 100644 --- a/test/testScripts/constants.ts +++ b/test/testScripts/constants.ts @@ -14,6 +14,16 @@ export const SOR_CONFIG: Record = { chainId: Network.MAINNET, //1 vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + connectingTokens: [ + { + symbol: 'weth', + address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + }, + { + symbol: 'DOLA', + address: '0x865377367054516e17014CcdED1e7d814EDC9ce4', + }, + ], wETHwstETH: { id: '0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080', address: '0x32296969ef14eb0c6d29669c550d4a0449130230', @@ -23,6 +33,12 @@ export const SOR_CONFIG: Record = { chainId: Network.KOVAN, //42 vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', weth: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + connectingTokens: [ + { + symbol: 'weth', + address: '0xdFCeA9088c8A88A76FF74892C1457C17dfeef9C1', + }, + ], staBal3Pool: { id: '0x8fd162f338b770f7e879030830cde9173367f3010000000000000000000004d8', address: '0x8fd162f338b770f7e879030830cde9173367f301', @@ -32,16 +48,38 @@ export const SOR_CONFIG: Record = { chainId: Network.GOERLI, //5 vault: '0x65748E8287Ce4B9E6D83EE853431958851550311', weth: '0x9A1000D492d40bfccbc03f413A48F5B6516Ec0Fd', + connectingTokens: [ + { + symbol: 'weth', + address: '0x9A1000D492d40bfccbc03f413A48F5B6516Ec0Fd', + }, + ], }, [Network.POLYGON]: { chainId: Network.POLYGON, //137 vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', weth: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + connectingTokens: [ + { + symbol: 'weth', + address: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', + }, + { + symbol: 'bbrz2', + address: '0xe22483774bd8611be2ad2f4194078dac9159f4ba', + }, // Joins Stables<>BRZ via https://app.balancer.fi/#/polygon/pool/0x4a0b73f0d13ff6d43e304a174697e3d5cfd310a400020000000000000000091c + ], }, [Network.ARBITRUM]: { chainId: Network.ARBITRUM, //42161 vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + connectingTokens: [ + { + symbol: 'weth', + address: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + }, + ], }, }; @@ -124,16 +162,21 @@ export const ADDRESSES = { decimals: 18, symbol: 'wSTETH', }, - bbausd: { + bbausdOld: { address: '0x7b50775383d3d6f0215a8f290f2c9e2eebbeceb2', decimals: 18, symbol: 'bbausd', }, - bbausdc: { + bbausdcOld: { address: '0x9210F1204b5a24742Eba12f710636D76240dF3d0', decimals: 18, symbol: 'bbausdc', }, + bbausdc: { + address: '0x82698aecc9e28e9bb27608bd52cf57f704bd1b83', + decimals: 18, + symbol: 'bbausdc', + }, bbadai: { address: '0x804cdb9116a10bb78768d3252355a1b18067bf8f', decimals: 18, @@ -149,20 +192,20 @@ export const ADDRESSES = { decimals: 6, symbol: 'waUSDC', }, - bbausd2: { + bbausd: { address: '0xA13a9247ea42D743238089903570127DdA72fE44', decimals: 18, - symbol: 'bbausd2', + symbol: 'bbausd', }, bbadai2: { address: '0xae37d54ae477268b9997d4161b96b8200755935c', decimals: 18, symbol: 'bb-a-dai2', }, - bbausdt2: { + bbausdt: { address: '0x2F4eb100552ef93840d5aDC30560E5513DFfFACb', decimals: 18, - symbol: 'bb-a-usdt2', + symbol: 'bb-a-usdt', }, RPL: { address: '0xD33526068D116cE69F19A9ee46F0bd304F21A51f', @@ -189,11 +232,16 @@ export const ADDRESSES = { decimals: 6, symbol: 'USDT', }, - bbausdt: { + bbausdtOld: { address: '0x2f4eb100552ef93840d5adc30560e5513dfffacb', decimals: 18, symbol: 'bbaUSDT', }, + DBR: { + address: '0xAD038Eb671c44b853887A7E32528FaB35dC5D710', + decimals: 18, + symbol: 'DBR', + }, }, [Network.KOVAN]: { // Visit https://balancer-faucet.on.fleek.co/#/faucet for test tokens @@ -372,6 +420,11 @@ export const ADDRESSES = { decimals: 18, symbol: 'bb-am-usd', }, + brz: { + address: '0x491a4eb4f1fc3bff8e1d2fc856a6a46663ad556f', + decimals: 4, + symbol: 'BRZ', + }, }, [Network.ARBITRUM]: { WETH: { diff --git a/test/testScripts/swapExample.ts b/test/testScripts/swapExample.ts index a95f81b7..7a3b0c40 100644 --- a/test/testScripts/swapExample.ts +++ b/test/testScripts/swapExample.ts @@ -58,17 +58,17 @@ function setUp(networkId: Network, provider: JsonRpcProvider): SOR { } export async function swap(): Promise { - const networkId = Network.MAINNET; + const networkId = Network.POLYGON; const provider = new JsonRpcProvider(PROVIDER_URLS[networkId]); // gasPrice is used by SOR as a factor to determine how many pools to swap against. // i.e. higher cost means more costly to trade against lots of different pools. const gasPrice = BigNumber.from('14000000000'); // This determines the max no of pools the SOR will use to swap. const maxPools = 4; - const tokenIn = ADDRESSES[networkId].USDT; - const tokenOut = ADDRESSES[networkId].bbausdt; + const tokenIn = ADDRESSES[networkId].USDC; + const tokenOut = ADDRESSES[networkId].brz; const swapType: SwapTypes = SwapTypes.SwapExactIn; - const swapAmount = parseFixed('10', 6); + const swapAmount = parseFixed('200', 6); const sor = setUp(networkId, provider); diff --git a/yarn.lock b/yarn.lock index c6ffc6c8..98fd9b0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1591,16 +1591,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== - 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" - ajv@^8.0.1: version "8.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" @@ -1710,18 +1700,6 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.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 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" @@ -1751,16 +1729,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1778,13 +1746,6 @@ base64-js@^1.3.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 sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -1936,11 +1897,6 @@ camelcase@^6.0.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.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" @@ -2082,7 +2038,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2131,11 +2087,6 @@ core-js-pure@^3.0.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.3.tgz#bcd02d3d8ec68ad871ef50d5ccbb248ddb54f401" integrity sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA== -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 sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -2147,17 +2098,6 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -coveralls@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.9.tgz#8cfc5a5525f84884e2948a0bf0f1c0e90aac0420" - integrity sha512-nNBg3B1+4iDox5A5zqHKzUTiwl2ey4k2o0NEcVZYvl+GOSJdKBj4AJGKLv6h3SvWch7tABHePAQOSZWM9E2hMg== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.0" - request "^2.88.0" - crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -2216,13 +2156,6 @@ cross-spawn@^7.0.2: 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 sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - debug@4, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2339,14 +2272,6 @@ dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -2710,26 +2635,11 @@ execa@^2.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -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== - extract-files@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" @@ -2864,11 +2774,6 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -2878,15 +2783,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" 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" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -2983,13 +2879,6 @@ get-stream@^5.0.0: 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 sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3074,19 +2963,6 @@ growl@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" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - hardhat@^2.9.9: version "2.9.9" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" @@ -3218,15 +3094,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "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 sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -3412,7 +3279,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3440,11 +3307,6 @@ isomorphic-fetch@^2.2.1: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -3547,11 +3409,6 @@ js-yaml@^3.13.1: 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 sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3572,21 +3429,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -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 sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -3606,16 +3453,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - keccak@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" @@ -3632,11 +3469,6 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= - level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -3786,11 +3618,6 @@ lodash@^4.17.13: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - log-symbols@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -3918,11 +3745,6 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - mime-db@1.50.0: version "1.50.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" @@ -3935,13 +3757,6 @@ mime-types@^2.1.12: dependencies: mime-db "1.50.0" -mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3971,11 +3786,6 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -4160,11 +3970,6 @@ nyc@^15.0.0: test-exclude "^6.0.0" yargs "^15.0.2" -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-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -4374,11 +4179,6 @@ perf_hooks@^0.0.1: resolved "https://registry.yarnpkg.com/perf_hooks/-/perf_hooks-0.0.1.tgz#253e7e18b71fcc0390fd3afb2cd7cf1685df040c" integrity sha512-qG/D9iA4KDme+KF4vCObJy6Bouu3BlQnmJ8jPydVPm32NJBD9ZK1ZNgXSYaZKHkVC1sKSqUiLgFvAZPUiIEnBw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picomatch@^2.0.4: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -4449,11 +4249,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -psl@^1.1.28: - version "1.7.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" - integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -4462,7 +4257,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -4474,11 +4269,6 @@ qs@^6.7.0: 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== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -4541,32 +4331,6 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.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" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4696,7 +4460,7 @@ 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": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -4887,21 +4651,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - 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" - stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -5068,14 +4817,6 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -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" - "true-case-path@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" @@ -5114,23 +4855,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== -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 sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" @@ -5207,7 +4936,7 @@ util-deprecate@^1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -5222,15 +4951,6 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"