aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-06 04:51:53 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-06 04:54:35 +0800
commit47673ba4bb2932051cb810bd0012c208665eb277 (patch)
treeb00a2ec6a46b99a0303db89a5046d576551569c4
parent3865a081a0f8ea48be736adebb8dcdb4b7d80b04 (diff)
downloaddexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.tar.gz
dexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.tar.zst
dexon-0x-contracts-47673ba4bb2932051cb810bd0012c208665eb277.zip
Update createFactory to accept one createOrderOpts param to encompass all optional params
-rw-r--r--packages/fill-scenarios/CHANGELOG.json3
-rw-r--r--packages/fill-scenarios/src/fill_scenarios.ts24
-rw-r--r--packages/order-utils/CHANGELOG.json3
-rw-r--r--packages/order-utils/src/order_factory.ts70
4 files changed, 59 insertions, 41 deletions
diff --git a/packages/fill-scenarios/CHANGELOG.json b/packages/fill-scenarios/CHANGELOG.json
index af1f79cf9..04e076203 100644
--- a/packages/fill-scenarios/CHANGELOG.json
+++ b/packages/fill-scenarios/CHANGELOG.json
@@ -3,7 +3,8 @@
"version": "1.0.1-rc.3",
"changes": [
{
- "note": "Updated to use latest orderFactory interface",
+ "note":
+ "Updated to use latest orderFactory interface, fixed `feeRecipient` spelling error in public interface",
"pr": 936
}
]
diff --git a/packages/fill-scenarios/src/fill_scenarios.ts b/packages/fill-scenarios/src/fill_scenarios.ts
index f35094560..1a1adb326 100644
--- a/packages/fill-scenarios/src/fill_scenarios.ts
+++ b/packages/fill-scenarios/src/fill_scenarios.ts
@@ -61,7 +61,7 @@ export class FillScenarios {
makerAddress: string,
takerAddress: string,
fillableAmount: BigNumber,
- feeRecepientAddress: string,
+ feeRecipientAddress: string,
expirationTimeSeconds?: BigNumber,
): Promise<SignedOrder> {
return this._createAsymmetricFillableSignedOrderWithFeesAsync(
@@ -73,7 +73,7 @@ export class FillScenarios {
takerAddress,
fillableAmount,
fillableAmount,
- feeRecepientAddress,
+ feeRecipientAddress,
expirationTimeSeconds,
);
}
@@ -88,7 +88,7 @@ export class FillScenarios {
): Promise<SignedOrder> {
const makerFee = new BigNumber(0);
const takerFee = new BigNumber(0);
- const feeRecepientAddress = constants.NULL_ADDRESS;
+ const feeRecipientAddress = constants.NULL_ADDRESS;
return this._createAsymmetricFillableSignedOrderWithFeesAsync(
makerAssetData,
takerAssetData,
@@ -98,7 +98,7 @@ export class FillScenarios {
takerAddress,
makerFillableAmount,
takerFillableAmount,
- feeRecepientAddress,
+ feeRecipientAddress,
expirationTimeSeconds,
);
}
@@ -148,7 +148,7 @@ export class FillScenarios {
takerAddress: string,
makerFillableAmount: BigNumber,
takerFillableAmount: BigNumber,
- feeRecepientAddress: string,
+ feeRecipientAddress: string,
expirationTimeSeconds?: BigNumber,
): Promise<SignedOrder> {
const decodedMakerAssetData = assetDataUtils.decodeAssetDataOrThrow(makerAssetData);
@@ -199,12 +199,14 @@ export class FillScenarios {
takerFillableAmount,
takerAssetData,
this._exchangeAddress,
- takerAddress,
- senderAddress,
- makerFee,
- takerFee,
- feeRecepientAddress,
- expirationTimeSeconds,
+ {
+ takerAddress,
+ senderAddress,
+ makerFee,
+ takerFee,
+ feeRecipientAddress,
+ expirationTimeSeconds,
+ },
);
return signedOrder;
}
diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json
index cac29bf6b..70a75854a 100644
--- a/packages/order-utils/CHANGELOG.json
+++ b/packages/order-utils/CHANGELOG.json
@@ -3,7 +3,8 @@
"version": "1.0.1-rc.3",
"changes": [
{
- "note": "Added a synchronous `createOrder` method in `orderFactory`",
+ "note":
+ "Added a synchronous `createOrder` method in `orderFactory`, updated public interfaces to support some optional parameters",
"pr": 936
}
]
diff --git a/packages/order-utils/src/order_factory.ts b/packages/order-utils/src/order_factory.ts
index 444e5a0b2..5901d38c3 100644
--- a/packages/order-utils/src/order_factory.ts
+++ b/packages/order-utils/src/order_factory.ts
@@ -10,6 +10,16 @@ import { generatePseudoRandomSalt } from './salt';
import { ecSignOrderHashAsync } from './signature_utils';
import { MessagePrefixType } from './types';
+export interface CreateOrderOpts {
+ takerAddress?: string;
+ senderAddress?: string;
+ makerFee?: BigNumber;
+ takerFee?: BigNumber;
+ feeRecipientAddress?: string;
+ salt?: BigNumber;
+ expirationTimeSeconds?: BigNumber;
+}
+
export const orderFactory = {
createOrder(
makerAddress: string,
@@ -18,28 +28,24 @@ export const orderFactory = {
takerAssetAmount: BigNumber,
takerAssetData: string,
exchangeAddress: string,
- takerAddress: string = constants.NULL_ADDRESS,
- senderAddress: string = constants.NULL_ADDRESS,
- makerFee: BigNumber = constants.ZERO_AMOUNT,
- takerFee: BigNumber = constants.ZERO_AMOUNT,
- feeRecipientAddress: string = constants.NULL_ADDRESS,
- salt: BigNumber = generatePseudoRandomSalt(),
- expirationTimeSeconds: BigNumber = constants.INFINITE_TIMESTAMP_SEC,
+ createOrderOpts: CreateOrderOpts = generateDefaultCreateOrderOpts(),
): Order {
+ const defaultCreateOrderOpts = generateDefaultCreateOrderOpts();
const order = {
makerAddress,
- takerAddress,
- senderAddress,
- makerFee,
- takerFee,
makerAssetAmount,
takerAssetAmount,
makerAssetData,
takerAssetData,
- salt,
exchangeAddress,
- feeRecipientAddress,
- expirationTimeSeconds,
+ takerAddress: createOrderOpts.takerAddress || defaultCreateOrderOpts.takerAddress,
+ senderAddress: createOrderOpts.senderAddress || defaultCreateOrderOpts.senderAddress,
+ makerFee: createOrderOpts.makerFee || defaultCreateOrderOpts.makerFee,
+ takerFee: createOrderOpts.takerFee || defaultCreateOrderOpts.takerFee,
+ feeRecipientAddress: createOrderOpts.feeRecipientAddress || defaultCreateOrderOpts.feeRecipientAddress,
+ salt: createOrderOpts.salt || defaultCreateOrderOpts.salt,
+ expirationTimeSeconds:
+ createOrderOpts.expirationTimeSeconds || defaultCreateOrderOpts.expirationTimeSeconds,
};
return order;
},
@@ -51,13 +57,7 @@ export const orderFactory = {
takerAssetAmount: BigNumber,
takerAssetData: string,
exchangeAddress: string,
- takerAddress?: string,
- senderAddress?: string,
- makerFee?: BigNumber,
- takerFee?: BigNumber,
- feeRecipientAddress?: string,
- salt?: BigNumber,
- expirationTimeSeconds?: BigNumber,
+ createOrderOpts?: CreateOrderOpts,
): Promise<SignedOrder> {
const order = orderFactory.createOrder(
makerAddress,
@@ -66,13 +66,7 @@ export const orderFactory = {
takerAssetAmount,
takerAssetData,
exchangeAddress,
- takerAddress,
- senderAddress,
- makerFee,
- takerFee,
- feeRecipientAddress,
- salt,
- expirationTimeSeconds,
+ createOrderOpts,
);
const orderHash = orderHashUtils.getOrderHashHex(order);
const messagePrefixOpts = {
@@ -86,6 +80,26 @@ export const orderFactory = {
},
};
+function generateDefaultCreateOrderOpts(): {
+ takerAddress: string;
+ senderAddress: string;
+ makerFee: BigNumber;
+ takerFee: BigNumber;
+ feeRecipientAddress: string;
+ salt: BigNumber;
+ expirationTimeSeconds: BigNumber;
+} {
+ return {
+ takerAddress: constants.NULL_ADDRESS,
+ senderAddress: constants.NULL_ADDRESS,
+ makerFee: constants.ZERO_AMOUNT,
+ takerFee: constants.ZERO_AMOUNT,
+ feeRecipientAddress: constants.NULL_ADDRESS,
+ salt: generatePseudoRandomSalt(),
+ expirationTimeSeconds: constants.INFINITE_TIMESTAMP_SEC,
+ };
+}
+
function getVRSHexString(ecSignature: ECSignature): string {
const ETH_SIGN_SIGNATURE_TYPE = '03';
const vrs = `${intToHex(ecSignature.v)}${ethUtil.stripHexPrefix(ecSignature.r)}${ethUtil.stripHexPrefix(