From 542255332d6dde6dda27e4b0663aa67b0a44c972 Mon Sep 17 00:00:00 2001 From: David Sun Date: Mon, 15 Jul 2019 15:29:13 -0700 Subject: [PATCH 1/3] changed market-operation type to enum from literal --- packages/asset-swapper/src/constants.ts | 2 ++ .../standard_relayer_api_order_provider.ts | 5 ++-- .../exchange_swap_quote_consumer.ts | 11 +++++---- .../forwarder_swap_quote_consumer.ts | 11 +++++---- packages/asset-swapper/src/swap_quoter.ts | 6 ++--- packages/asset-swapper/src/types.ts | 10 ++++---- packages/asset-swapper/src/utils/assert.ts | 4 ++-- .../src/utils/swap_quote_calculator.ts | 24 +++++++++---------- .../asset-swapper/test/utils/swap_quote.ts | 6 ++--- packages/order-utils/src/market_utils.ts | 10 ++++---- packages/types/src/index.ts | 5 +++- 11 files changed, 50 insertions(+), 44 deletions(-) diff --git a/packages/asset-swapper/src/constants.ts b/packages/asset-swapper/src/constants.ts index 10dd79b9d4..5bd62deebc 100644 --- a/packages/asset-swapper/src/constants.ts +++ b/packages/asset-swapper/src/constants.ts @@ -12,6 +12,7 @@ import { const NULL_ADDRESS = '0x0000000000000000000000000000000000000000'; const MAINNET_NETWORK_ID = 1; const ONE_SECOND_MS = 1000; +const DEFAULT_PER_PAGE = 1000; const DEFAULT_SWAP_QUOTER_OPTS: SwapQuoterOpts = { networkId: MAINNET_NETWORK_ID, @@ -48,4 +49,5 @@ export const constants = { DEFAULT_FORWARDER_SWAP_QUOTE_EXECUTE_OPTS, DEFAULT_SWAP_QUOTE_REQUEST_OPTS, EMPTY_ORDERS_AND_FILLABLE_AMOUNTS, + DEFAULT_PER_PAGE, }; diff --git a/packages/asset-swapper/src/order_providers/standard_relayer_api_order_provider.ts b/packages/asset-swapper/src/order_providers/standard_relayer_api_order_provider.ts index dc3ef08124..ccefc70dce 100644 --- a/packages/asset-swapper/src/order_providers/standard_relayer_api_order_provider.ts +++ b/packages/asset-swapper/src/order_providers/standard_relayer_api_order_provider.ts @@ -4,6 +4,7 @@ import { APIOrder, AssetPairsResponse, OrderbookResponse } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as _ from 'lodash'; +import { constants } from '../constants'; import { OrderProvider, OrderProviderRequest, @@ -117,9 +118,7 @@ export class StandardRelayerAPIOrderProvider implements OrderProvider { * @return An array of asset data strings that can be used to purchased makerAssetData. */ public async getAvailableTakerAssetDatasAsync(makerAssetData: string): Promise { - // Return a maximum of 1000 asset datas - const maxPerPage = 1000; - const requestOpts = { networkId: this.networkId, perPage: maxPerPage }; + const requestOpts = { networkId: this.networkId, perPage: constants.DEFAULT_PER_PAGE }; const assetPairsRequest = { assetDataA: makerAssetData }; const fullRequest = { ...requestOpts, diff --git a/packages/asset-swapper/src/quote_consumers/exchange_swap_quote_consumer.ts b/packages/asset-swapper/src/quote_consumers/exchange_swap_quote_consumer.ts index 19ec6aacb8..140d6ee856 100644 --- a/packages/asset-swapper/src/quote_consumers/exchange_swap_quote_consumer.ts +++ b/packages/asset-swapper/src/quote_consumers/exchange_swap_quote_consumer.ts @@ -1,4 +1,5 @@ import { ContractWrappers, ContractWrappersError, ForwarderWrapperError } from '@0x/contract-wrappers'; +import { MarketOperation } from '@0x/types'; import { AbiEncoder, providerUtils } from '@0x/utils'; import { SupportedProvider, ZeroExProvider } from '@0x/web3-wrapper'; import { MethodAbi } from 'ethereum-types'; @@ -50,7 +51,7 @@ export class ExchangeSwapQuoteConsumer implements SwapQuoteConsumerBase( orders, takerAssetFillAmount, - 'marketSell', + MarketOperation.Sell, opts, ) as OrdersAndRemainingTakerFillAmount; }, @@ -45,7 +45,7 @@ export const marketUtils = { return findOrdersThatCoverAssetFillAmount( orders, makerAssetFillAmount, - 'marketBuy', + MarketOperation.Buy, opts, ) as OrdersAndRemainingMakerFillAmount; }, @@ -133,14 +133,14 @@ function findOrdersThatCoverAssetFillAmount( operation: MarketOperation, opts?: FindOrdersThatCoverTakerAssetFillAmountOpts | FindOrdersThatCoverMakerAssetFillAmountOpts, ): OrdersAndRemainingTakerFillAmount | OrdersAndRemainingMakerFillAmount { - const variablePrefix = operation === 'marketBuy' ? 'Maker' : 'Taker'; + const variablePrefix = operation === MarketOperation.Buy ? 'Maker' : 'Taker'; assert.doesConformToSchema('orders', orders, schemas.ordersSchema); assert.isValidBaseUnitAmount('assetFillAmount', assetFillAmount); // try to get remainingFillableTakerAssetAmounts from opts, if it's not there, use takerAssetAmount values from orders const remainingFillableAssetAmounts = _.get( opts, `remainingFillable${variablePrefix}AssetAmounts`, - _.map(orders, order => (operation === 'marketBuy' ? order.makerAssetAmount : order.takerAssetAmount)), + _.map(orders, order => (operation === MarketOperation.Buy ? order.makerAssetAmount : order.takerAssetAmount)), ) as BigNumber[]; _.forEach(remainingFillableAssetAmounts, (amount, index) => assert.isValidBaseUnitAmount(`remainingFillable${variablePrefix}AssetAmount[${index}]`, amount), @@ -194,7 +194,7 @@ function findOrdersThatCoverAssetFillAmount( ...ordersAndRemainingFillAmount } = result; - if (operation === 'marketBuy') { + if (operation === MarketOperation.Buy) { return { ...ordersAndRemainingFillAmount, ordersRemainingFillableMakerAssetAmounts: resultOrdersRemainingFillableAssetAmounts, diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 50bc0fc338..5cf7522aeb 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -41,7 +41,10 @@ export interface SignedOrder extends Order { signature: string; } -export type MarketOperation = 'marketBuy' | 'marketSell'; +export enum MarketOperation { + Sell = 'Sell', + Buy = 'Buy', +} /** * ZeroExTransaction for use with 0x Exchange executeTransaction From 7618e63f494cadd7b046e9029a1766a4600df08a Mon Sep 17 00:00:00 2001 From: David Sun Date: Mon, 15 Jul 2019 15:53:06 -0700 Subject: [PATCH 2/3] expanded constants --- packages/asset-swapper/src/constants.ts | 6 ++++++ packages/asset-swapper/src/swap_quoter.ts | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/asset-swapper/src/constants.ts b/packages/asset-swapper/src/constants.ts index 5bd62deebc..9eb37228f3 100644 --- a/packages/asset-swapper/src/constants.ts +++ b/packages/asset-swapper/src/constants.ts @@ -4,6 +4,7 @@ import { BigNumber } from '@0x/utils'; import { ForwarderSwapQuoteExecutionOpts, ForwarderSwapQuoteGetOutputOpts, + LiquidityRequestOpts, OrdersAndFillableAmounts, SwapQuoteRequestOpts, SwapQuoterOpts, @@ -37,6 +38,10 @@ const EMPTY_ORDERS_AND_FILLABLE_AMOUNTS: OrdersAndFillableAmounts = { remainingFillableMakerAssetAmounts: [] as BigNumber[], }; +const DEFAULT_LIQUIDITY_REQUEST_OPTS: LiquidityRequestOpts = { + shouldForceOrderRefresh: false, +}; + export const constants = { ZERO_AMOUNT: new BigNumber(0), NULL_ADDRESS, @@ -50,4 +55,5 @@ export const constants = { DEFAULT_SWAP_QUOTE_REQUEST_OPTS, EMPTY_ORDERS_AND_FILLABLE_AMOUNTS, DEFAULT_PER_PAGE, + DEFAULT_LIQUIDITY_REQUEST_OPTS, }; diff --git a/packages/asset-swapper/src/swap_quoter.ts b/packages/asset-swapper/src/swap_quoter.ts index 76516bcd06..01360e272a 100644 --- a/packages/asset-swapper/src/swap_quoter.ts +++ b/packages/asset-swapper/src/swap_quoter.ts @@ -248,8 +248,11 @@ export class SwapQuoter { takerAssetData: string, options: Partial = {}, ): Promise { - const shouldForceOrderRefresh = - options.shouldForceOrderRefresh !== undefined ? options.shouldForceOrderRefresh : false; + const { shouldForceOrderRefresh } = _.merge( + {}, + constants.DEFAULT_LIQUIDITY_REQUEST_OPTS, + options, + ); assert.isString('makerAssetData', makerAssetData); assert.isString('takerAssetData', takerAssetData); assetDataUtils.decodeAssetDataOrThrow(makerAssetData); From 8974fcabe3869a74c864338afae4dbde30c5cd49 Mon Sep 17 00:00:00 2001 From: David Sun Date: Tue, 16 Jul 2019 11:03:00 -0700 Subject: [PATCH 3/3] Prettier --- packages/asset-swapper/src/swap_quoter.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/asset-swapper/src/swap_quoter.ts b/packages/asset-swapper/src/swap_quoter.ts index 01360e272a..139743ab60 100644 --- a/packages/asset-swapper/src/swap_quoter.ts +++ b/packages/asset-swapper/src/swap_quoter.ts @@ -248,11 +248,7 @@ export class SwapQuoter { takerAssetData: string, options: Partial = {}, ): Promise { - const { shouldForceOrderRefresh } = _.merge( - {}, - constants.DEFAULT_LIQUIDITY_REQUEST_OPTS, - options, - ); + const { shouldForceOrderRefresh } = _.merge({}, constants.DEFAULT_LIQUIDITY_REQUEST_OPTS, options); assert.isString('makerAssetData', makerAssetData); assert.isString('takerAssetData', takerAssetData); assetDataUtils.decodeAssetDataOrThrow(makerAssetData);