diff --git a/.circleci/config.yml b/.circleci/config.yml index 1bdc10923..d1559c856 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,6 +9,8 @@ jobs: - image: circleci/node:11.14-browsers - image: circleci/postgres:9.6.5-alpine-ram - image: 0xorg/ganache-cli:6.0.0 + environment: + VERSION: 6.2.4-110e1afa8 - image: 0xorg/mesh:9.2.1 environment: ETHEREUM_RPC_URL: http://0.0.0.0:8545 diff --git a/docker-compose.yml b/docker-compose.yml index b44add56e..6fcc0932e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,8 @@ services: image: "0xorg/ganache-cli:6.0.0" ports: - "8545:8545" + environment: + VERSION: 6.2.4-110e1afa8 postgres: image: postgres:9.6 environment: diff --git a/package.json b/package.json index d87f489da..ce79dfaa7 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,12 @@ "author": "Francesco Agosti ", "license": "Apache-2.0", "scripts": { - "clean": "shx rm -rf lib 0x_mesh/db", + "install": "sed -ie 's!import { Provider as Web3Provider } from \"web3/providers\";!import { Web3EthereumProvider as Web3Provider } from \"web3-providers\";!' node_modules/ganache-core/typings/index.d.ts # see https://github.com/trufflesuite/ganache-core/issues/465#issuecomment-610005598", + "clean": "yarn clean:ts && yarn clean:docker", + "clean:ts": "shx rm -rf lib", + "clean:docker": "shx rm -rf 0x_mesh/db", "build": "tsc -p tsconfig.json", - "test": "ETHEREUM_RPC_URL=http://localhost:8545 mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --timeout 100000 --exit", + "test": "ETHEREUM_RPC_URL=http://localhost:8545 CHAIN_ID=1337 RFQT_API_KEY_WHITELIST='koolApiKey1,koolApikey2' RFQT_MAKER_ENDPOINTS='https://mock-rfqt1.club' mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --timeout 100000 --exit", "dev": "nodemon -r dotenv/config src/index.ts | pino-pretty", "dev:service:http": "nodemon -r dotenv/config src/runners/http_service_runner.ts | pino-pretty", "dev:service:sra_http": "nodemon -r dotenv/config src/runners/http_sra_service_runner.ts | pino-pretty", @@ -16,23 +19,25 @@ "dev:service:swap_http": "nodemon -r dotenv/config src/runners/http_swap_service_runner.ts | pino-pretty", "dev:service:order_watcher": "nodemon -r dotenv/config src/runners/order_watcher_service_runner.ts | pino-pretty", "watch": "tsc -w", - "prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc", - "prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}' --config .prettierrc", + "prettier": "prettier --write ${npm_package_config_prettier_target} --config .prettierrc", + "prettier:ci": "prettier --list-different ${npm_package_config_prettier_target} --config .prettierrc", "start": "node -r dotenv/config lib/src/index.js", "start:service:http": "node -r dotenv/config lib/src/runners/http_service_runner.js", "start:service:sra_http": "node -r dotenv/config lib/src/runners/http_sra_service_runner.js", "start:service:staking_http": "node -r dotenv/config lib/src/runners/http_staking_service_runner.js", "start:service:swap_http": "node -r dotenv/config lib/src/runners/http_swap_service_runner.js", "start:service:order_watcher": "node -r dotenv/config lib/src/runners/order_watcher_service_runner.js", - "lint": "tslint --project . --format stylish" + "lint": "tslint --project . --format stylish && yarn prettier:ci" + }, + "config": { + "prettier_target": "{.,test/**,src/**}/*.{ts,tsx,json,md}" }, "resolutions": { - "@0x/contract-addresses": "0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-0e196a59d", + "@0x/contract-addresses": "0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-110e1afa8", "@0x/contract-wrappers": "0xProject/gitpkg-registry#0x-contract-wrappers-v13.6.3-0e196a59d" }, "devDependencies": { "@0x/dev-utils": "^3.1.1", - "@0x/migrations": "^5.0.2", "@0x/tslint-config": "^4.0.0", "@0x/types": "^3.1.1", "@0x/typescript-typings": "^5.0.1", @@ -48,6 +53,7 @@ "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "dirty-chai": "^2.0.1", + "make-promises-safe": "^5.1.0", "mocha": "^6.2.2", "nodemon": "^1.19.4", "pino-pretty": "^3.2.2", @@ -60,9 +66,9 @@ }, "dependencies": { "@0x/assert": "^3.0.4", - "@0x/asset-swapper": "0xProject/gitpkg-registry#0x-asset-swapper-v4.4.0-0e196a59d", + "@0x/asset-swapper": "0xProject/gitpkg-registry#0x-asset-swapper-v4.4.0-110e1afa8", "@0x/connect": "^6.0.4", - "@0x/contract-addresses": "0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-0e196a59d", + "@0x/contract-addresses": "0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-110e1afa8", "@0x/contract-wrappers": "0xProject/gitpkg-registry#0x-contract-wrappers-v13.6.3-0e196a59d", "@0x/json-schemas": "^5.0.4", "@0x/mesh-rpc-client": "^9.2.1", diff --git a/src/config.ts b/src/config.ts index bdd852711..bfc520287 100644 --- a/src/config.ts +++ b/src/config.ts @@ -135,6 +135,12 @@ export const LIQUIDITY_POOL_REGISTRY_ADDRESS: string | undefined = _.isEmpty( EnvVarType.ETHAddressHex, ); +export const RFQT_API_KEY_WHITELIST: string[] = + process.env.RFQT_API_KEY_WHITELIST === undefined ? [] : process.env.RFQT_API_KEY_WHITELIST.split(','); + +export const RFQT_MAKER_ENDPOINTS: string[] = + process.env.RFQT_MAKER_ENDPOINTS === undefined ? [] : process.env.RFQT_MAKER_ENDPOINTS.split(','); + // Max number of entities per page export const MAX_PER_PAGE = 1000; // Default ERC20 token precision diff --git a/src/handlers/swap_handlers.ts b/src/handlers/swap_handlers.ts index 9112ea8aa..ed62be526 100644 --- a/src/handlers/swap_handlers.ts +++ b/src/handlers/swap_handlers.ts @@ -41,6 +41,9 @@ export class SwapHandlers { gasPrice, excludedSources, affiliateAddress, + rfqt, + // tslint:disable-next-line:boolean-naming + skipValidation, } = parseGetSwapQuoteRequestParams(req); const isETHSell = isETHSymbol(sellToken); @@ -83,6 +86,14 @@ export class SwapHandlers { gasPrice, excludedSources, affiliateAddress, + apiKey: req.header('0x-api-key'), + rfqt: + rfqt === undefined + ? undefined + : { + intentOnFilling: rfqt.intentOnFilling, + }, + skipValidation, }; try { @@ -200,6 +211,10 @@ const parseGetSwapQuoteRequestParams = (req: express.Request): GetSwapQuoteReque ? undefined : parseStringArrForERC20BridgeSources(req.query.excludedSources.split(',')); const affiliateAddress = req.query.affiliateAddress; + const rfqt = + req.query.intentOnFilling === undefined ? undefined : { intentOnFilling: req.query.intentOnFilling === 'true' }; + // tslint:disable-next-line:boolean-naming + const skipValidation = req.query.skipValidation === undefined ? false : req.query.skipValidation === 'true'; return { takerAddress, sellToken, @@ -210,5 +225,7 @@ const parseGetSwapQuoteRequestParams = (req: express.Request): GetSwapQuoteReque gasPrice, excludedSources, affiliateAddress, + rfqt, + skipValidation, }; }; diff --git a/src/schemas/swap_quote_request_schema.json b/src/schemas/swap_quote_request_schema.json index 015e36385..1cbc43a2a 100644 --- a/src/schemas/swap_quote_request_schema.json +++ b/src/schemas/swap_quote_request_schema.json @@ -21,6 +21,17 @@ }, "excludedSources": { "type": "string" + }, + "apiKey": { + "type": "string" + }, + "intentOnFilling": { + "type": "string", + "enum": ["true", "false"] + }, + "skipValidation": { + "type": "string", + "enum": ["true", "false"] } }, "required": ["sellToken", "buyToken"], diff --git a/src/services/swap_service.ts b/src/services/swap_service.ts index 7775db015..711831082 100644 --- a/src/services/swap_service.ts +++ b/src/services/swap_service.ts @@ -23,10 +23,13 @@ import { CHAIN_ID, FEE_RECIPIENT_ADDRESS, LIQUIDITY_POOL_REGISTRY_ADDRESS, + RFQT_API_KEY_WHITELIST, + RFQT_MAKER_ENDPOINTS, } from '../config'; import { DEFAULT_TOKEN_DECIMALS, GAS_LIMIT_BUFFER_PERCENTAGE, + NULL_ADDRESS, ONE, ONE_SECOND_MS, PERCENTAGE_SIG_DIGITS, @@ -62,6 +65,10 @@ export class SwapService { chainId: CHAIN_ID, expiryBufferMs: QUOTE_ORDER_EXPIRATION_BUFFER_MS, liquidityProviderRegistryAddress: LIQUIDITY_POOL_REGISTRY_ADDRESS, + rfqt: { + takerApiKeyWhitelist: RFQT_API_KEY_WHITELIST, + makerEndpoints: RFQT_MAKER_ENDPOINTS, + }, }; this._swapQuoter = new SwapQuoter(this._provider, orderbook, swapQuoterOpts); this._swapQuoteConsumer = new SwapQuoteConsumer(this._provider, swapQuoterOpts); @@ -85,6 +92,10 @@ export class SwapService { from, excludedSources, affiliateAddress, + apiKey, + rfqt, + // tslint:disable-next-line:boolean-naming + skipValidation, } = params; const assetSwapperOpts = { ...ASSET_SWAPPER_MARKET_ORDERS_OPTS, @@ -92,6 +103,17 @@ export class SwapService { bridgeSlippage: slippagePercentage, gasPrice: providedGasPrice, excludedSources, // TODO(dave4506): overrides the excluded sources selected by chainId + apiKey, + rfqt: + rfqt === undefined || from === undefined || from === NULL_ADDRESS + ? undefined + : { + ...rfqt, + // If this is a forwarder transaction, then we want to request quotes with the taker as the + // forwarder contract. If it's not, then we want to request quotes with the taker set to the + // API's takerAddress query parameter, which in this context is known as `from`. + takerAddress: isETHSell ? getContractAddressesForChainOrThrow(CHAIN_ID).forwarder : from, + }, }; if (sellAmount !== undefined) { swapQuote = await this._swapQuoter.getMarketSellSwapQuoteAsync( @@ -136,7 +158,7 @@ export class SwapService { const affiliatedData = this._attributeCallData(data, affiliateAddress); let suggestedGasEstimate = new BigNumber(gas); - if (from) { + if (!skipValidation && from) { // Force a revert error if the takerAddress does not have enough ETH. const txDataValue = extensionContractType === ExtensionContractType.Forwarder diff --git a/src/token_metadatas_for_networks.ts b/src/token_metadatas_for_networks.ts index 73694ebcd..5a975931f 100644 --- a/src/token_metadatas_for_networks.ts +++ b/src/token_metadatas_for_networks.ts @@ -637,4 +637,24 @@ export const TokenMetadatasForChains: TokenMetadataAndChainAddresses[] = [ [ChainId.Ganache]: NULL_ADDRESS, }, }, + { + symbol: 'ZWETH', + name: 'Custom Kovan Wrapped Ether', + decimals: 18, + tokenAddresses: { + [ChainId.Mainnet]: NULL_ADDRESS, + [ChainId.Kovan]: '0x1FcAf05ABa8c7062D6F08E25c77Bf3746fCe5433', + [ChainId.Ganache]: NULL_ADDRESS, + }, + }, + { + symbol: 'ZUSDC', + name: 'Custom Kovan USD Coin', + decimals: 6, + tokenAddresses: { + [ChainId.Mainnet]: NULL_ADDRESS, + [ChainId.Kovan]: '0x5a719Cf3E02c17c876F6d294aDb5CB7C6eB47e2F', + [ChainId.Ganache]: NULL_ADDRESS, + }, + }, ]; diff --git a/src/types.ts b/src/types.ts index a030dd086..0368073e3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -359,6 +359,10 @@ export interface GetSwapQuoteRequestParams { gasPrice?: BigNumber; excludedSources?: ERC20BridgeSource[]; affiliateAddress?: string; + rfqt?: { + intentOnFilling: boolean; + }; + skipValidation: boolean; } export interface CalculateSwapQuoteParams { @@ -372,6 +376,11 @@ export interface CalculateSwapQuoteParams { gasPrice?: BigNumber; excludedSources?: ERC20BridgeSource[]; affiliateAddress?: string; + apiKey?: string; + rfqt?: { + intentOnFilling: boolean; + }; + skipValidation: boolean; } export interface GetSwapQuoteResponseLiquiditySource { diff --git a/test/app_test.ts b/test/app_test.ts index 2c93962f7..7bc2d0b3c 100644 --- a/test/app_test.ts +++ b/test/app_test.ts @@ -1,6 +1,9 @@ +import { rfqtMocker } from '@0x/asset-swapper'; +import { ContractAddresses, getContractAddressesForChainOrThrow } from '@0x/contract-addresses'; +import { ERC20TokenContract, WETH9Contract } from '@0x/contract-wrappers'; import { BlockchainLifecycle, web3Factory } from '@0x/dev-utils'; -import { runMigrationsOnceAsync } from '@0x/migrations'; import { Web3ProviderEngine } from '@0x/subproviders'; +import { BigNumber } from '@0x/utils'; import { Web3Wrapper } from '@0x/web3-wrapper'; import * as HttpStatus from 'http-status-codes'; import 'mocha'; @@ -8,11 +11,12 @@ import * as request from 'supertest'; import { AppDependencies, getAppAsync, getDefaultAppDependenciesAsync } from '../src/app'; import * as config from '../src/config'; -import { DEFAULT_PAGE, DEFAULT_PER_PAGE, SRA_PATH } from '../src/constants'; +import { DEFAULT_PAGE, DEFAULT_PER_PAGE, SRA_PATH, SWAP_PATH } from '../src/constants'; import { SignedOrderEntity } from '../src/entities'; import * as orderFixture from './fixtures/order.json'; import { expect } from './utils/expect'; +import { ganacheZrxWethOrder1 } from './utils/mocks'; let app: Express.Application; @@ -22,6 +26,10 @@ let accounts: string[]; let blockchainLifecycle: BlockchainLifecycle; let dependencies: AppDependencies; + +// tslint:disable-next-line:custom-no-magic-numbers +const MAX_UINT256 = new BigNumber(2).pow(256).minus(1); + describe('app test', () => { before(async () => { // connect to ganache and run contract migrations @@ -35,10 +43,9 @@ describe('app test', () => { blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); await blockchainLifecycle.startAsync(); accounts = await web3Wrapper.getAvailableAddressesAsync(); - const owner = accounts[0]; - await runMigrationsOnceAsync(provider, { from: owner }); dependencies = await getDefaultAppDependenciesAsync(provider, config); + // start the 0x-api app app = await getAppAsync({ ...dependencies }, config); }); @@ -81,7 +88,269 @@ describe('app test', () => { expect(response.body.total).to.equal(1); expect(response.body.records[0].order).to.deep.equal(apiOrderResponse); }); - await dependencies.connection.manager.remove(orderModel); }); + describe('should respond to GET /swap/quote', () => { + it("with INSUFFICIENT_ASSET_LIQUIDITY when there's no liquidity (empty orderbook, sampling excluded, no RFQ)", async () => { + await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=DAI&sellToken=WETH&buyAmount=100000000000000000&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider`, + ) + .expect(HttpStatus.BAD_REQUEST) + .expect('Content-Type', /json/) + .then(response => { + const responseJson = JSON.parse(response.text); + expect(responseJson.reason).to.equal('Validation Failed'); + expect(responseJson.validationErrors.length).to.equal(1); + expect(responseJson.validationErrors[0].field).to.equal('buyAmount'); + expect(responseJson.validationErrors[0].reason).to.equal('INSUFFICIENT_ASSET_LIQUIDITY'); + }); + }); + }); + describe('should hit RFQ-T when apropriate', async () => { + let contractAddresses: ContractAddresses; + let makerAddress: string; + let takerAddress: string; + + beforeEach(() => { + contractAddresses = getContractAddressesForChainOrThrow(parseInt(process.env.CHAIN_ID || '1337', 10)); + [makerAddress, takerAddress] = accounts; + }); + + context('with maker allowances set', async () => { + beforeEach(async () => { + const zrxToken = new ERC20TokenContract(contractAddresses.zrxToken, provider); + await zrxToken + .approve(contractAddresses.erc20Proxy, MAX_UINT256) + .sendTransactionAsync({ from: makerAddress }); + }); + + context('getting a quote from an RFQ-T provider', async () => { + it('should succeed when taker has balances and amounts', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const wethContract = new WETH9Contract(contractAddresses.etherToken, provider); + await wethContract.deposit().sendTransactionAsync({ value: sellAmount, from: takerAddress }); + await wethContract + .approve(contractAddresses.erc20Proxy, sellAmount) + .sendTransactionAsync({ from: takerAddress }); + + const mockedApiParams = { + sellToken: contractAddresses.etherToken, + buyToken: contractAddresses.zrxToken, + sellAmount: sellAmount.toString(), + buyAmount: undefined, + takerAddress, + }; + return rfqtMocker.withMockedRfqtFirmQuotes( + [ + { + endpoint: 'https://mock-rfqt1.club', + responseData: ganacheZrxWethOrder1, + responseCode: 200, + requestApiKey: 'koolApiKey1', + requestParams: mockedApiParams, + }, + ], + async () => { + const appResponse = await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&takerAddress=${takerAddress}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider`, + ) + .set('0x-api-key', 'koolApiKey1') + .expect(HttpStatus.OK) + .expect('Content-Type', /json/); + + const responseJson = JSON.parse(appResponse.text); + expect(responseJson.orders.length).to.equal(1); + expect(responseJson.orders[0]).to.eql(ganacheZrxWethOrder1); + }, + ); + }); + it('should fail when taker address is not supplied', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const appResponse = await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider`, + ) + .set('0x-api-key', 'koolApiKey1') + .expect(HttpStatus.BAD_REQUEST) + .expect('Content-Type', /json/); + + const validationErrors = appResponse.body.validationErrors; + expect(validationErrors.length).to.eql(1); + expect(validationErrors[0].reason).to.eql('INSUFFICIENT_ASSET_LIQUIDITY'); + }); + it('should succeed when taker can not actually fill but we skip validation', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const wethContract = new WETH9Contract(contractAddresses.etherToken, provider); + await wethContract + .approve(contractAddresses.erc20Proxy, new BigNumber(0)) + .sendTransactionAsync({ from: takerAddress }); + + const mockedApiParams = { + sellToken: contractAddresses.etherToken, + buyToken: contractAddresses.zrxToken, + sellAmount: sellAmount.toString(), + buyAmount: undefined, + takerAddress, + }; + return rfqtMocker.withMockedRfqtFirmQuotes( + [ + { + endpoint: 'https://mock-rfqt1.club', + responseData: ganacheZrxWethOrder1, + responseCode: 200, + requestApiKey: 'koolApiKey1', + requestParams: mockedApiParams, + }, + ], + async () => { + const appResponse = await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&takerAddress=${takerAddress}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider&skipValidation=true`, + ) + .set('0x-api-key', 'koolApiKey1') + .expect(HttpStatus.OK) + .expect('Content-Type', /json/); + const responseJson = JSON.parse(appResponse.text); + expect(responseJson.orders.length).to.equal(1); + expect(responseJson.orders[0]).to.eql(ganacheZrxWethOrder1); + }, + ); + }); + it('should fail when bad api key used', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const wethContract = new WETH9Contract(contractAddresses.etherToken, provider); + await wethContract.deposit().sendTransactionAsync({ value: sellAmount, from: takerAddress }); + await wethContract + .approve(contractAddresses.erc20Proxy, new BigNumber(0)) + .sendTransactionAsync({ from: takerAddress }); + + // this RFQ-T mock should never actually get hit b/c of the bad api key + // but in the case in which the bad api key was _not_ blocked + // this would cause the API to respond with RFQ-T liquidity + const mockedApiParams = { + sellToken: contractAddresses.etherToken, + buyToken: contractAddresses.zrxToken, + sellAmount: sellAmount.toString(), + buyAmount: undefined, + takerAddress, + }; + return rfqtMocker.withMockedRfqtFirmQuotes( + [ + { + endpoint: 'https://mock-rfqt1.club', + responseData: ganacheZrxWethOrder1, + responseCode: 200, + requestApiKey: 'badApiKey', + requestParams: mockedApiParams, + }, + ], + async () => { + const appResponse = await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&takerAddress=${takerAddress}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider&skipValidation=true`, + ) + .set('0x-api-key', 'badApiKey') + .expect(HttpStatus.BAD_REQUEST) + .expect('Content-Type', /json/); + const validationErrors = appResponse.body.validationErrors; + expect(validationErrors.length).to.eql(1); + expect(validationErrors[0].reason).to.eql('INSUFFICIENT_ASSET_LIQUIDITY'); + }, + ); + }); + it('should fail validation when taker can not actually fill', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const wethContract = new WETH9Contract(contractAddresses.etherToken, provider); + await wethContract + .approve(contractAddresses.erc20Proxy, new BigNumber(0)) + .sendTransactionAsync({ from: takerAddress }); + + const mockedApiParams = { + sellToken: contractAddresses.etherToken, + buyToken: contractAddresses.zrxToken, + sellAmount: sellAmount.toString(), + buyAmount: undefined, + takerAddress, + }; + return rfqtMocker.withMockedRfqtFirmQuotes( + [ + { + endpoint: 'https://mock-rfqt1.club', + responseData: ganacheZrxWethOrder1, + responseCode: 200, + requestApiKey: 'koolApiKey1', + requestParams: mockedApiParams, + }, + ], + async () => { + await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&takerAddress=${takerAddress}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider`, + ) + .set('0x-api-key', 'koolApiKey1') + .expect(HttpStatus.BAD_REQUEST) + .expect('Content-Type', /json/); + }, + ); + }); + }); + }); + + context('without maker allowances set', async () => { + beforeEach(async () => { + const zrxToken = new ERC20TokenContract(contractAddresses.zrxToken, provider); + await zrxToken + .approve(contractAddresses.erc20Proxy, new BigNumber(0)) + .sendTransactionAsync({ from: makerAddress }); + }); + + it('should not return order if maker allowances are not set', async () => { + const sellAmount = new BigNumber(100000000000000000); + + const wethContract = new WETH9Contract(contractAddresses.etherToken, provider); + await wethContract + .approve(contractAddresses.erc20Proxy, new BigNumber(0)) + .sendTransactionAsync({ from: takerAddress }); + + const mockedApiParams = { + sellToken: contractAddresses.etherToken, + buyToken: contractAddresses.zrxToken, + sellAmount: sellAmount.toString(), + buyAmount: undefined, + takerAddress, + }; + return rfqtMocker.withMockedRfqtFirmQuotes( + [ + { + endpoint: 'https://mock-rfqt1.club', + responseData: ganacheZrxWethOrder1, + responseCode: 200, + requestApiKey: 'koolApiKey1', + requestParams: mockedApiParams, + }, + ], + async () => { + const appResponse = await request(app) + .get( + `${SWAP_PATH}/quote?buyToken=ZRX&sellToken=WETH&sellAmount=${sellAmount.toString()}&takerAddress=${takerAddress}&intentOnFilling=true&excludedSources=Uniswap,Eth2Dai,Kyber,LiquidityProvider&skipValidation=true`, + ) + .set('0x-api-key', 'koolApiKey1') + .expect(HttpStatus.BAD_REQUEST) + .expect('Content-Type', /json/); + + const validationErrors = appResponse.body.validationErrors; + expect(validationErrors.length).to.eql(1); + expect(validationErrors[0].reason).to.eql('INSUFFICIENT_ASSET_LIQUIDITY'); + }, + ); + }); + }); + }); }); diff --git a/test/utils/mocks.ts b/test/utils/mocks.ts new file mode 100644 index 000000000..c428a9174 --- /dev/null +++ b/test/utils/mocks.ts @@ -0,0 +1,20 @@ +export const ganacheZrxWethOrder1 = { + chainId: 1337, + exchangeAddress: '0x48bacb9266a570d521063ef5dd96e61686dbe788', + makerAddress: '0x5409ED021D9299bf6814279A6A1411A7e866A631', + takerAddress: '0x6ecbe1db9ef729cbe972c83fb886247691fb6beb', + feeRecipientAddress: '0x1000000000000000000000000000000000000011', + senderAddress: '0x0000000000000000000000000000000000000000', + makerAssetAmount: '100000000000000000', + takerAssetAmount: '100000000000000000', + makerFee: '0', + takerFee: '0', + expirationTimeSeconds: '33122559973', + salt: '1586559973114', + makerAssetData: '0xf47261b0000000000000000000000000871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c', + takerAssetData: '0xf47261b00000000000000000000000000b1ba0af832d7c05fd64161e0db78e85978e8082', + makerFeeAssetData: '0x', + takerFeeAssetData: '0x', + signature: + '0x1b3ac5f86ffd9b243ed27b8964ecee82988893e740e976b700557c83c03a38275517ae18fecdc5979bd0db950f87c76f3a6f548af35b7226a76ff675ae8f6eee5502', +}; diff --git a/tsconfig.json b/tsconfig.json index a23222924..f2599f60b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,7 @@ "noUnusedLocals": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "sourceMap": false, + "sourceMap": true, "typeRoots": ["./node_modules/@0x/typescript-typings/types", "./node_modules/@types"], "noUnusedParameters": true, "resolveJsonModule": true diff --git a/yarn.lock b/yarn.lock index d4425f87f..3f95ad5bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,17 +12,7 @@ lodash "^4.17.11" valid-url "^1.0.9" -"@0x/assert@^3.0.2": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-3.0.3.tgz#18f92aa4e5d87824259b3ddd1cc1882b59f29e8e" - dependencies: - "@0x/json-schemas" "^5.0.3" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.2" - lodash "^4.17.11" - valid-url "^1.0.9" - -"@0x/assert@^3.0.3", "@0x/assert@^3.0.4": +"@0x/assert@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-3.0.4.tgz#640bcd42d0b6286d45ee622e5622f71325ec63b4" dependencies: @@ -42,9 +32,9 @@ lodash "^4.17.11" valid-url "^1.0.9" -"@0x/asset-swapper@0xProject/gitpkg-registry#0x-asset-swapper-v4.4.0-0e196a59d": +"@0x/asset-swapper@0xProject/gitpkg-registry#0x-asset-swapper-v4.4.0-110e1afa8": version "4.4.0" - resolved "https://codeload.github.com/0xProject/gitpkg-registry/tar.gz/9638449b075d747499ed617bf8740ed2a0f6c9ad" + resolved "https://codeload.github.com/0xProject/gitpkg-registry/tar.gz/210a8bc61dda466b8f364d621d45a33fb1416360" dependencies: "@0x/assert" "^3.0.7" "@0x/contract-addresses" "^4.9.0" @@ -54,25 +44,11 @@ "@0x/orderbook" "^2.2.5" "@0x/utils" "^5.4.1" "@0x/web3-wrapper" "^7.0.7" + axios "^0.19.2" + axios-mock-adapter "^1.18.1" heartbeats "^5.0.1" lodash "^4.17.11" -"@0x/base-contract@^6.0.2": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@0x/base-contract/-/base-contract-6.0.3.tgz#47bff672b0f9f7190bd96feb3303a1d5a29ec64c" - dependencies: - "@0x/assert" "^3.0.3" - "@0x/json-schemas" "^5.0.3" - "@0x/utils" "^5.1.2" - "@0x/web3-wrapper" "^7.0.3" - ethereumjs-account "^3.0.0" - ethereumjs-blockstream "^7.0.0" - ethereumjs-util "^5.1.1" - ethereumjs-vm "^4.0.0" - ethers "~4.0.4" - js-sha3 "^0.7.0" - uuid "^3.3.2" - "@0x/base-contract@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@0x/base-contract/-/base-contract-6.2.1.tgz#8d3bc64fd1fb7d791306d3dd2faf73b3dfe8bdd4" @@ -119,15 +95,11 @@ uuid "^3.3.2" websocket "^1.0.26" -"@0x/contract-addresses@0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-0e196a59d", "@0x/contract-addresses@^4.1.0", "@0x/contract-addresses@^4.9.0": +"@0x/contract-addresses@0xProject/gitpkg-registry#0x-contract-addresses-v4.9.0-110e1afa8", "@0x/contract-addresses@^4.9.0": version "4.9.0" - resolved "https://codeload.github.com/0xProject/gitpkg-registry/tar.gz/d3ac2d5e4afed6518a0066e19e0d522f5ed0be58" - -"@0x/contract-artifacts@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@0x/contract-artifacts/-/contract-artifacts-3.2.0.tgz#a013ab50862f6c4d16fbbaa2bfc2299c630379d8" + resolved "https://codeload.github.com/0xProject/gitpkg-registry/tar.gz/93578492c2db18a5fb88709156fe50aa00b086aa" -"@0x/contract-wrappers@0xProject/gitpkg-registry#0x-contract-wrappers-v13.6.3-0e196a59d", "@0x/contract-wrappers@^13.3.0", "@0x/contract-wrappers@^13.4.0", "@0x/contract-wrappers@^13.6.3": +"@0x/contract-wrappers@0xProject/gitpkg-registry#0x-contract-wrappers-v13.6.3-0e196a59d", "@0x/contract-wrappers@^13.4.0", "@0x/contract-wrappers@^13.6.3": version "13.6.3" resolved "https://codeload.github.com/0xProject/gitpkg-registry/tar.gz/8bc7a7ffe50b0c4c345d49aa979af9a6f8738b4c" dependencies: @@ -141,197 +113,12 @@ ethereum-types "^3.1.0" ethers "~4.0.4" -"@0x/contracts-asset-proxy@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-asset-proxy/-/contracts-asset-proxy-3.0.2.tgz#7b3301c34e3de24d570751833806d3c824481e26" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-dev-utils" "^1.0.2" - "@0x/contracts-erc1155" "^2.0.2" - "@0x/contracts-erc20" "^3.0.2" - "@0x/contracts-erc721" "^3.0.2" - "@0x/contracts-exchange-libs" "^4.0.2" - "@0x/order-utils" "^10.0.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - ethereum-types "^3.0.0" - lodash "^4.17.11" - -"@0x/contracts-coordinator@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-coordinator/-/contracts-coordinator-3.0.2.tgz#b70307a484ac51a1ad0c197a834a8f85b28ff2b4" - dependencies: - "@0x/assert" "^3.0.2" - "@0x/base-contract" "^6.0.2" - "@0x/contract-addresses" "^4.1.0" - "@0x/contracts-utils" "^4.0.2" - "@0x/json-schemas" "^5.0.2" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - ethereum-types "^3.0.0" - http-status-codes "^1.3.2" - -"@0x/contracts-dev-utils@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-dev-utils/-/contracts-dev-utils-1.0.2.tgz#3803acf86ff0ea22120e1aca29d339994a7c0689" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-dev-utils@^1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@0x/contracts-dev-utils/-/contracts-dev-utils-1.3.3.tgz#3bb8e34662d0e9432dbd1b0417c7c9f6a9668dd9" dependencies: "@0x/base-contract" "^6.2.1" -"@0x/contracts-erc1155@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-erc1155/-/contracts-erc1155-2.0.2.tgz#60041d753c2fc76b6da43c914f0296cdae3e9c7c" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-test-utils" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - lodash "^4.17.11" - -"@0x/contracts-erc20@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-erc20/-/contracts-erc20-3.0.2.tgz#46f977997e833ff34e590f51f66784f4e62e0359" - dependencies: - "@0x/base-contract" "^6.0.2" - -"@0x/contracts-erc721@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-erc721/-/contracts-erc721-3.0.2.tgz#269ccb866230380fc0b0fd861ba7357fd1f1ea18" - dependencies: - "@0x/base-contract" "^6.0.2" - -"@0x/contracts-exchange-forwarder@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-exchange-forwarder/-/contracts-exchange-forwarder-4.0.2.tgz#5fda4c313e6d5e2a3867e8e9d3b7e56485ef00a7" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - ethereum-types "^3.0.0" - -"@0x/contracts-exchange-libs@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-exchange-libs/-/contracts-exchange-libs-4.0.2.tgz#d37f4e2e80bb42489b1ec3534e40894efa1f35f2" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-utils" "^4.0.2" - "@0x/order-utils" "^10.0.1" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - ethereum-types "^3.0.0" - -"@0x/contracts-exchange@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-exchange/-/contracts-exchange-3.0.2.tgz#f2696d07242e6cd7ad36e6c84a8fef306cd13958" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-dev-utils" "^1.0.2" - "@0x/contracts-erc1155" "^2.0.2" - "@0x/contracts-erc20" "^3.0.2" - "@0x/contracts-erc721" "^3.0.2" - "@0x/order-utils" "^10.0.1" - "@0x/utils" "^5.1.1" - lodash "^4.17.11" - -"@0x/contracts-extensions@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@0x/contracts-extensions/-/contracts-extensions-5.1.1.tgz#6367cade6edaecad7844924f3d28ba90d90c9fcf" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - ethereum-types "^3.0.0" - -"@0x/contracts-multisig@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-multisig/-/contracts-multisig-4.0.2.tgz#fa997c1615d8be92b684a1a2c10b34af4fa02c11" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - ethereum-types "^3.0.0" - -"@0x/contracts-staking@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-staking/-/contracts-staking-2.0.2.tgz#611dd85eba377a5476534ee4acd54fe0600b2581" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contracts-test-utils" "^5.0.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - -"@0x/contracts-test-utils@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@0x/contracts-test-utils/-/contracts-test-utils-5.0.1.tgz#d61cf2fceefe2931110276f87acf5fa5c26ec0b3" - dependencies: - "@0x/assert" "^3.0.2" - "@0x/base-contract" "^6.0.2" - "@0x/contract-addresses" "^4.1.0" - "@0x/dev-utils" "^3.0.2" - "@0x/json-schemas" "^5.0.2" - "@0x/order-utils" "^10.0.1" - "@0x/sol-coverage" "^4.0.2" - "@0x/sol-profiler" "^4.0.2" - "@0x/sol-trace" "^3.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@types/bn.js" "^4.11.0" - "@types/js-combinatorics" "^0.5.29" - "@types/lodash" "4.14.104" - "@types/mocha" "^5.2.7" - "@types/node" "*" - bn.js "^4.11.8" - chai "^4.0.1" - chai-as-promised "^7.1.0" - chai-bignumber "^3.0.0" - decimal.js "^10.2.0" - dirty-chai "^2.0.1" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - js-combinatorics "^0.5.3" - lodash "^4.17.11" - make-promises-safe "^1.1.0" - mocha "^6.2.0" - -"@0x/contracts-utils@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/contracts-utils/-/contracts-utils-4.0.2.tgz#74eb02ee0bf248592639c14f3fc87f8fd5f2bc9e" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - bn.js "^4.11.8" - ethereum-types "^3.0.0" - -"@0x/dev-utils@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.0.2.tgz#23aef789cb24cc4488078b400bea84a53a5befb3" - dependencies: - "@0x/subproviders" "^6.0.2" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@types/web3-provider-engine" "^14.0.0" - chai "^4.0.1" - chai-as-promised "^7.1.0" - chai-bignumber "^3.0.0" - dirty-chai "^2.0.1" - ethereum-types "^3.0.0" - lodash "^4.17.11" - web3-provider-engine "14.0.6" - "@0x/dev-utils@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.1.1.tgz#dd9a32384ec585969f518863b94201ba3aa1f006" @@ -359,16 +146,7 @@ jsonschema "^1.2.0" lodash.values "^4.3.0" -"@0x/json-schemas@^5.0.2": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.3.tgz#8804d20eb13f2551146c399b83cb5e1597205bee" - dependencies: - "@0x/typescript-typings" "^5.0.1" - "@types/node" "*" - jsonschema "^1.2.0" - lodash.values "^4.3.0" - -"@0x/json-schemas@^5.0.3", "@0x/json-schemas@^5.0.4": +"@0x/json-schemas@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.4.tgz#c2963b59e72a12362a43c8cfc3c572abd9d567ad" dependencies: @@ -402,6 +180,7 @@ "@0x/mesh-rpc-client@^9.2.1": version "9.2.1" resolved "https://registry.yarnpkg.com/@0x/mesh-rpc-client/-/mesh-rpc-client-9.2.1.tgz#52540e2492e8c3a5c54127532e80f7ffb622fbea" + integrity sha512-VuAt8J1RpY4s2nCyfLIpPLTTLiYX0Wg0R7b+OT0B1p4JahrEcbfklHAyJM8YOT78wIllWeeTWDZ7/PL9EYPpTA== dependencies: "@0x/assert" "^3.0.6" "@0x/types" "^3.1.2" @@ -411,51 +190,6 @@ web3-providers "^2.0.0-alpha.1" websocket "^1.0.29" -"@0x/migrations@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@0x/migrations/-/migrations-5.0.2.tgz#187ec6f2796138330046a25495cdc6e019f1f2ad" - dependencies: - "@0x/base-contract" "^6.0.2" - "@0x/contract-addresses" "^4.1.0" - "@0x/contract-artifacts" "^3.2.0" - "@0x/contracts-asset-proxy" "^3.0.2" - "@0x/contracts-coordinator" "^3.0.2" - "@0x/contracts-dev-utils" "^1.0.2" - "@0x/contracts-erc1155" "^2.0.2" - "@0x/contracts-erc20" "^3.0.2" - "@0x/contracts-erc721" "^3.0.2" - "@0x/contracts-exchange" "^3.0.2" - "@0x/contracts-exchange-forwarder" "^4.0.2" - "@0x/contracts-extensions" "^5.1.1" - "@0x/contracts-multisig" "^4.0.2" - "@0x/contracts-staking" "^2.0.2" - "@0x/contracts-utils" "^4.0.2" - "@0x/sol-compiler" "^4.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@ledgerhq/hw-app-eth" "^4.3.0" - "@types/web3-provider-engine" "^14.0.0" - ethereum-types "^3.0.0" - ethers "~4.0.4" - lodash "^4.17.11" - optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "^4.3.0" - -"@0x/order-utils@^10.0.1": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@0x/order-utils/-/order-utils-10.1.0.tgz#97c813e02781d4b10d98deb9bd529668ada572df" - dependencies: - "@0x/assert" "^3.0.3" - "@0x/contract-wrappers" "^13.3.0" - "@0x/json-schemas" "^5.0.3" - "@0x/utils" "^5.1.2" - "@0x/web3-wrapper" "^7.0.3" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - lodash "^4.17.11" - "@0x/order-utils@^10.1.1": version "10.1.1" resolved "https://registry.yarnpkg.com/@0x/order-utils/-/order-utils-10.1.1.tgz#748aae79f2f8d8eaea391fb0c2a3a548a0a98a4a" @@ -493,133 +227,6 @@ "@0x/order-utils" "^10.2.4" "@0x/utils" "^5.4.1" -"@0x/sol-compiler@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.0.2.tgz#187268fdf1140f4f4613996663f349e7abe62cd3" - dependencies: - "@0x/assert" "^3.0.2" - "@0x/json-schemas" "^5.0.2" - "@0x/sol-resolver" "^3.0.2" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@types/yargs" "^11.0.0" - chalk "^2.3.0" - chokidar "^3.0.2" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - lodash "^4.17.11" - mkdirp "^0.5.1" - pluralize "^7.0.0" - require-from-string "^2.0.1" - semver "5.5.0" - solc "^0.5.5" - source-map-support "^0.5.0" - web3-eth-abi "^1.0.0-beta.24" - yargs "^10.0.3" - -"@0x/sol-coverage@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-coverage/-/sol-coverage-4.0.2.tgz#c1465abb8e7d3a9000ed2c49f77a1f3aa0604ba1" - dependencies: - "@0x/sol-tracing-utils" "^7.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - "@types/minimatch" "^3.0.3" - ethereum-types "^3.0.0" - lodash "^4.17.11" - minimatch "^3.0.4" - web3-provider-engine "14.0.6" - -"@0x/sol-profiler@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-profiler/-/sol-profiler-4.0.2.tgz#58f7dcc9d45efc3408bc982f5faf19b0d88cdebc" - dependencies: - "@0x/sol-tracing-utils" "^7.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - lodash "^4.17.11" - web3-provider-engine "14.0.6" - -"@0x/sol-resolver@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.0.2.tgz#2f89df2f049d5ea8501ee1fc2a1d0866a0b3c761" - dependencies: - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - lodash "^4.17.11" - -"@0x/sol-trace@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-trace/-/sol-trace-3.0.2.tgz#a2c29201a6991f272a125422f82fd97a8f3164e1" - dependencies: - "@0x/sol-tracing-utils" "^7.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - chalk "^2.3.0" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - lodash "^4.17.11" - loglevel "^1.6.1" - web3-provider-engine "14.0.6" - -"@0x/sol-tracing-utils@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.0.2.tgz#12f008b2b680586cd44f2d6b5f993a57604fbca3" - dependencies: - "@0x/dev-utils" "^3.0.2" - "@0x/sol-compiler" "^4.0.2" - "@0x/sol-resolver" "^3.0.2" - "@0x/subproviders" "^6.0.2" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@types/solidity-parser-antlr" "^0.2.3" - chalk "^2.3.0" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - glob "^7.1.2" - istanbul "^0.4.5" - lodash "^4.17.11" - loglevel "^1.6.1" - mkdirp "^0.5.1" - rimraf "^2.6.2" - semaphore-async-await "^1.5.1" - solc "^0.5.5" - solidity-parser-antlr "^0.4.2" - -"@0x/subproviders@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.2.tgz#2d00a62d0db81d865dedd0ae43d7594c061e033e" - dependencies: - "@0x/assert" "^3.0.2" - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - "@0x/web3-wrapper" "^7.0.2" - "@ledgerhq/hw-app-eth" "^4.3.0" - "@ledgerhq/hw-transport-u2f" "4.24.0" - "@types/hdkey" "^0.7.0" - "@types/web3-provider-engine" "^14.0.0" - bip39 "^2.5.0" - bn.js "^4.11.8" - ethereum-types "^3.0.0" - ethereumjs-tx "^1.3.5" - ethereumjs-util "^5.1.1" - ganache-core "^2.6.0" - hdkey "^0.7.1" - json-rpc-error "2.0.0" - lodash "^4.17.11" - semaphore-async-await "^1.5.1" - web3-provider-engine "14.0.6" - optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "^4.3.0" - "@0x/subproviders@^6.0.4": version "6.0.4" resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.4.tgz#36631f14dcb0705aa10cbcefd81672a80debcaca" @@ -729,25 +336,7 @@ js-sha3 "^0.7.0" lodash "^4.17.11" -"@0x/utils@^5.1.1": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.1.2.tgz#defc545a42343729c9bf7252f0b7413d7ba47694" - dependencies: - "@0x/types" "^3.1.1" - "@0x/typescript-typings" "^5.0.1" - "@types/node" "*" - abortcontroller-polyfill "^1.1.9" - bignumber.js "~9.0.0" - chalk "^2.3.0" - detect-node "2.0.3" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - isomorphic-fetch "2.2.1" - js-sha3 "^0.7.0" - lodash "^4.17.11" - -"@0x/utils@^5.1.2", "@0x/utils@^5.2.0": +"@0x/utils@^5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.2.0.tgz#313c0fcf18d9614bf7a227fde3a084bdfbc459d4" dependencies: @@ -799,32 +388,6 @@ websocket "^1.0.28" xhr2-cookies "1.1.0" -"@0x/web3-wrapper@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.2.tgz#afdd12a3c2518207d56372397ae91e4a90634f46" - dependencies: - "@0x/assert" "^3.0.2" - "@0x/json-schemas" "^5.0.2" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.1" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - lodash "^4.17.11" - -"@0x/web3-wrapper@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.3.tgz#b6015a820909b36e00115047ca1c0c693d56fff8" - dependencies: - "@0x/assert" "^3.0.3" - "@0x/json-schemas" "^5.0.3" - "@0x/typescript-typings" "^5.0.1" - "@0x/utils" "^5.1.2" - ethereum-types "^3.0.0" - ethereumjs-util "^5.1.1" - ethers "~4.0.4" - lodash "^4.17.11" - "@0x/web3-wrapper@^7.0.4": version "7.0.4" resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.4.tgz#f07cb154bc43d0ba5b7137200aa216ba49ca033c" @@ -1051,14 +614,6 @@ dependencies: "@types/node" "*" -"@types/js-combinatorics@^0.5.29": - version "0.5.31" - resolved "https://registry.yarnpkg.com/@types/js-combinatorics/-/js-combinatorics-0.5.31.tgz#a61a3f625009e2e693492c158ac8afb243efecad" - -"@types/lodash@4.14.104": - version "4.14.104" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.104.tgz#53ee2357fa2e6e68379341d92eb2ecea4b11bb80" - "@types/lodash@^4.14.137": version "4.14.137" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.137.tgz#8a4804937dc6462274ffcc088df8f14fc1b368e2" @@ -1067,10 +622,6 @@ version "2.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" -"@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - "@types/mocha@^5.2.7": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" @@ -1125,10 +676,6 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/solidity-parser-antlr@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz#bb2d9c6511bf483afe4fc3e2714da8a924e59e3f" - "@types/sonic-boom@*": version "0.7.0" resolved "https://registry.npmjs.org/@types/sonic-boom/-/sonic-boom-0.7.0.tgz#38337036293992a1df65dd3161abddf8fb9b7176" @@ -1171,10 +718,6 @@ dependencies: "@types/node" "*" -"@types/yargs@^11.0.0": - version "11.1.3" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.3.tgz#33c8ebf05f78f1edeb249c1cde1a42ae57f5664e" - "@web3-js/scrypt-shim@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" @@ -1196,10 +739,6 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - abortcontroller-polyfill@^1.1.9: version "1.4.0" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.4.0.tgz#0d5eb58e522a461774af8086414f68e1dda7a6c4" @@ -1252,10 +791,6 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1315,13 +850,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - app-root-path@^2.0.1: version "2.2.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" @@ -1486,16 +1014,16 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@1.x, async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - async@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" dependencies: lodash "^4.17.11" +async@^1.4.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1518,6 +1046,14 @@ aws4@^1.8.0: version "1.9.1" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" +axios-mock-adapter@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.18.1.tgz#a2ba2638ef513d954793f96bde3e26bd4a1b7940" + integrity sha512-kFBZsG1Ma5yxjRGHq5KuuL55mPb7WzFULhypquEhzPg8SH5CXICb+qwC2CCA5u+GQVpiqGPwKSRkd3mBCs6gdw== + dependencies: + fast-deep-equal "^3.1.1" + is-buffer "^2.0.3" + axios@^0.19.2: version "0.19.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" @@ -2053,10 +1589,6 @@ binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - bindings@^1.2.1, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -2163,12 +1695,6 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - dependencies: - fill-range "^7.0.1" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2371,7 +1897,7 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -camelcase@^4.0.0, camelcase@^4.1.0: +camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -2458,20 +1984,6 @@ chokidar@^2.0.0, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.3.0" - optionalDependencies: - fsevents "~2.1.2" - chownr@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" @@ -2518,14 +2030,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2606,22 +2110,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -command-exists@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" - -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - commander@^2.12.1: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" -commander@~2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - commander@~2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -2836,10 +2328,6 @@ decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2925,10 +2413,6 @@ deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -3251,29 +2735,10 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" @@ -3884,10 +3349,6 @@ fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - fast-redact@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-2.0.0.tgz#17bb8f5e1f56ecf4a38c8455985e5eab4c478431" @@ -3937,12 +3398,6 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - dependencies: - to-regex-range "^5.0.1" - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -3968,12 +3423,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -4091,16 +3540,6 @@ fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -4133,10 +3572,6 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4145,7 +3580,7 @@ functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -ganache-core@^2.6.0, ganache-core@^2.9.0-istanbul.0: +ganache-core@^2.9.0-istanbul.0: version "2.9.2" resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.9.2.tgz#1c7516f785669f35edac9ffaa40c3ece2749bf50" dependencies: @@ -4247,12 +3682,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - dependencies: - is-glob "^4.0.1" - glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -4290,16 +3719,6 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.0, glob@^7.1.2: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -4414,7 +3833,7 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -4464,16 +3883,6 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.0.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -4491,10 +3900,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4773,19 +4178,14 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - dependencies: - binary-extensions "^2.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" -is-buffer@~2.0.3: +is-buffer@^2.0.3, is-buffer@~2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" @@ -4873,7 +4273,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" dependencies: @@ -4912,10 +4312,6 @@ is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - is-obj@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -5025,25 +4421,6 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" @@ -5055,18 +4432,10 @@ jmespath@^0.15.0: version "0.15.0" resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" -js-combinatorics@^0.5.3: - version "0.5.4" - resolved "https://registry.yarnpkg.com/js-combinatorics/-/js-combinatorics-0.5.4.tgz#c92916b8f8171b64ecd7c4435b72cfabc803c756" - js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - js-sha3@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" @@ -5075,6 +4444,10 @@ js-sha3@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a" +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5083,7 +4456,7 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.13.1, js-yaml@^3.7.0: +js-yaml@3.13.1, js-yaml@^3.13.1, js-yaml@^3.7.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" dependencies: @@ -5153,12 +4526,6 @@ json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -5241,12 +4608,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - last-run@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" @@ -5396,13 +4757,6 @@ leven@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - liftoff@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" @@ -5426,13 +4780,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5462,10 +4809,6 @@ log-symbols@2.2.0: dependencies: chalk "^2.0.1" -loglevel@^1.6.1: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - lolex@^2.2.0: version "2.7.5" resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" @@ -5541,9 +4884,10 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" -make-promises-safe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/make-promises-safe/-/make-promises-safe-1.1.0.tgz#b4d28c61ef8ad5502f38dbb3a0ee89627f76ad61" +make-promises-safe@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/make-promises-safe/-/make-promises-safe-5.1.0.tgz#dd9d311f555bcaa144f12e225b3d37785f0aa8f2" + integrity sha512-AfdZ49rtyhQR/6cqVKGoH7y4ql7XkS5HJI1lZm0/5N6CQosy1eYbBJ/qbhkKHzo17UH7M918Bysf6XB9f3kS1g== map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -5576,12 +4920,6 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" @@ -5604,10 +4942,6 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -5668,10 +5002,6 @@ mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -5694,7 +5024,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -5708,10 +5038,6 @@ minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -5738,13 +5064,13 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@*, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mocha@^6.2.0, mocha@^6.2.2: +mocha@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" dependencies: @@ -5840,10 +5166,6 @@ negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -5909,12 +5231,6 @@ noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -5936,7 +5252,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6071,30 +5387,12 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -6111,15 +5409,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -6135,24 +5425,12 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -6165,10 +5443,6 @@ p-timeout@^1.1.1: dependencies: p-finally "^1.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -6359,10 +5633,6 @@ pgpass@1.x: dependencies: split "^1.0.0" -picomatch@^2.0.4, picomatch@^2.0.7: - version "2.1.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" - pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -6410,10 +5680,6 @@ pino@^5.13.5: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - popper.js@1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" @@ -6464,10 +5730,6 @@ precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -6752,12 +6014,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - dependencies: - picomatch "^2.0.7" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -6907,10 +6163,6 @@ require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" -require-from-string@^2.0.0, require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -6940,10 +6192,6 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: version "1.15.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" @@ -6981,8 +6229,9 @@ ret@~0.1.10: retry-axios@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-2.1.2.tgz#78a8041bc34047a205aa4098af23f943ec58abd2" + integrity sha512-MVNOizOgcM+dXK/kJCMnHPCGjp2Z0o3Ngznh7SfJkIVrqemHmDcgUEAbEHs3RyR3lbJtSyamq9k3gmgGSaow1g== -rimraf@^2.2.8, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" dependencies: @@ -7124,7 +6373,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -7132,10 +6381,6 @@ semver@4.3.2: version "4.3.2" resolved "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -7316,23 +6561,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -solc@^0.5.5: - version "0.5.15" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.15.tgz#f674ce93d4d04a86b65a4393657edf03b2f26028" - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - -solidity-parser-antlr@^0.4.2: - version "0.4.11" - resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" - sonic-boom@^0.7.5: version "0.7.6" resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.6.tgz#c42df6df884a6a3d54fa7a45b11e4e2196818d45" @@ -7369,13 +6597,6 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.6: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -7391,16 +6612,10 @@ source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" @@ -7642,12 +6857,6 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7785,12 +6994,6 @@ timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" -tmp@0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - tmp@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" @@ -7829,12 +7032,6 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - dependencies: - is-number "^7.0.0" - to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -7974,12 +7171,6 @@ tweetnacl@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.2.tgz#39fba8d1f7a34706a3fc1fd8c04afcad7bb9e689" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8, 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" @@ -8050,13 +7241,6 @@ u2f-api@0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" -uglify-js@^3.1.4: - version "3.7.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.2.tgz#cb1a601e67536e9ed094a92dd1e333459643d3f9" - dependencies: - commander "~2.20.3" - source-map "~0.6.1" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -8482,7 +7666,7 @@ web3-core@2.0.0-alpha.1: web3-providers "2.0.0-alpha.1" web3-utils "2.0.0-alpha.1" -web3-eth-abi@1.2.4, web3-eth-abi@^1.0.0-beta.24: +web3-eth-abi@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" dependencies: @@ -8815,7 +7999,7 @@ which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" -which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9: +which@1.3.1, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: @@ -8833,18 +8017,6 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -8995,12 +8167,6 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - dependencies: - camelcase "^4.1.0" - yargs-unparser@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" @@ -9024,23 +8190,6 @@ yargs@13.3.0, yargs@^13.0.0, yargs@^13.2.1, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"