From f8dbf57582189315566704ca64e36e9c5d07014f Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 17 Jul 2018 15:26:55 +0200 Subject: Rename assetProxyUtils to assetDataUtils --- packages/order-utils/src/asset_data_utils.ts | 131 ++++++++++++++++++ packages/order-utils/src/asset_proxy_utils.ts | 150 --------------------- packages/order-utils/src/index.ts | 2 +- .../test/exchange_transfer_simulator_test.ts | 4 +- 4 files changed, 134 insertions(+), 153 deletions(-) create mode 100644 packages/order-utils/src/asset_data_utils.ts delete mode 100644 packages/order-utils/src/asset_proxy_utils.ts (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts new file mode 100644 index 000000000..81e34218f --- /dev/null +++ b/packages/order-utils/src/asset_data_utils.ts @@ -0,0 +1,131 @@ +import { AssetProxyId, ERC20AssetData, ERC721AssetData } from '@0xproject/types'; +import { BigNumber } from '@0xproject/utils'; +import BN = require('bn.js'); +import ethUtil = require('ethereumjs-util'); + +import { constants } from './constants'; + +// TODO: Push upstream to DefinitelyTyped +interface EthAbi { + simpleEncode(signature: string, ...args: any[]): Buffer; + rawDecode(signature: string[], data: Buffer): any[]; +} +// tslint:disable:no-var-requires +const ethAbi = require('ethereumjs-abi') as EthAbi; + +export const assetDataUtils = { + encodeUint256(value: BigNumber): Buffer { + const base = 10; + const formattedValue = new BN(value.toString(base)); + const encodedValue = ethUtil.toBuffer(formattedValue); + // tslint:disable-next-line:custom-no-magic-numbers + const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH); + return paddedValue; + }, + decodeUint256(encodedValue: Buffer): BigNumber { + const formattedValue = ethUtil.bufferToHex(encodedValue); + const value = new BigNumber(formattedValue, constants.BASE_16); + return value; + }, + encodeERC20AssetData(tokenAddress: string): string { + return ethUtil.bufferToHex(ethAbi.simpleEncode('ERC20Token(address)', tokenAddress)); + }, + decodeERC20AssetData(assetData: string): ERC20AssetData { + const data = ethUtil.toBuffer(assetData); + if (data.byteLength < constants.ERC20_ASSET_DATA_BYTE_LENGTH) { + throw new Error( + `Could not decode ERC20 Proxy Data. Expected length of encoded data to be at least ${ + constants.ERC20_ASSET_DATA_BYTE_LENGTH + }. Got ${data.byteLength}`, + ); + } + const assetProxyId = ethUtil.bufferToHex(data.slice(0, constants.SELECTOR_LENGTH)); + if (assetProxyId !== AssetProxyId.ERC20) { + throw new Error( + `Could not decode ERC20 Proxy Data. Expected Asset Proxy Id to be ERC20 (${ + AssetProxyId.ERC20 + }), but got ${assetProxyId}`, + ); + } + const [tokenAddress] = ethAbi.rawDecode(['address'], data.slice(constants.SELECTOR_LENGTH)); + return { + assetProxyId, + tokenAddress: ethUtil.addHexPrefix(tokenAddress), + }; + }, + encodeERC721AssetData(tokenAddress: string, tokenId: BigNumber, receiverData?: string): string { + // TODO: Pass `tokendId` as a BigNumber. + return ethUtil.bufferToHex( + ethAbi.simpleEncode( + 'ERC721Token(address,uint256,bytes)', + tokenAddress, + `0x${tokenId.toString(constants.BASE_16)}`, + ethUtil.toBuffer(receiverData || '0x'), + ), + ); + }, + decodeERC721AssetData(assetData: string): ERC721AssetData { + const data = ethUtil.toBuffer(assetData); + if (data.byteLength < constants.ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH) { + throw new Error( + `Could not decode ERC721 Asset Data. Expected length of encoded data to be at least ${ + constants.ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH + }. Got ${data.byteLength}`, + ); + } + const assetProxyId = ethUtil.bufferToHex(data.slice(0, constants.SELECTOR_LENGTH)); + if (assetProxyId !== AssetProxyId.ERC721) { + throw new Error( + `Could not decode ERC721 Asset Data. Expected Asset Proxy Id to be ERC721 (${ + AssetProxyId.ERC721 + }), but got ${assetProxyId}`, + ); + } + const [tokenAddress, tokenId, receiverData] = ethAbi.rawDecode( + ['address', 'uint256', 'bytes'], + data.slice(constants.SELECTOR_LENGTH), + ); + return { + assetProxyId, + tokenAddress: ethUtil.addHexPrefix(tokenAddress), + tokenId: new BigNumber(tokenId.toString()), + receiverData: ethUtil.bufferToHex(receiverData), + }; + }, + decodeAssetDataId(assetData: string): AssetProxyId { + const encodedAssetData = ethUtil.toBuffer(assetData); + if (encodedAssetData.byteLength < constants.SELECTOR_LENGTH) { + throw new Error( + `Could not decode Proxy Data. Expected length of encoded data to be at least 4. Got ${ + encodedAssetData.byteLength + }`, + ); + } + const encodedAssetProxyId = encodedAssetData.slice(0, constants.SELECTOR_LENGTH); + const assetProxyId = assetDataUtils._decodeAssetProxyId(encodedAssetProxyId); + return assetProxyId; + }, + decodeAssetData(assetData: string): ERC20AssetData | ERC721AssetData { + const assetProxyId = assetDataUtils.decodeAssetDataId(assetData); + switch (assetProxyId) { + case AssetProxyId.ERC20: + const erc20AssetData = assetDataUtils.decodeERC20AssetData(assetData); + return erc20AssetData; + case AssetProxyId.ERC721: + const erc721AssetData = assetDataUtils.decodeERC721AssetData(assetData); + return erc721AssetData; + default: + throw new Error(`Unrecognized asset proxy id: ${assetProxyId}`); + } + }, + _decodeAssetProxyId(encodedAssetProxyId: Buffer): AssetProxyId { + const hexString = ethUtil.bufferToHex(encodedAssetProxyId); + if (hexString === AssetProxyId.ERC20) { + return AssetProxyId.ERC20; + } + if (hexString === AssetProxyId.ERC721) { + return AssetProxyId.ERC721; + } + throw new Error(`Invalid ProxyId: ${hexString}`); + }, +}; diff --git a/packages/order-utils/src/asset_proxy_utils.ts b/packages/order-utils/src/asset_proxy_utils.ts deleted file mode 100644 index 8140ad89d..000000000 --- a/packages/order-utils/src/asset_proxy_utils.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { AssetProxyId, ERC20AssetData, ERC721AssetData } from '@0xproject/types'; -import { BigNumber } from '@0xproject/utils'; -import BN = require('bn.js'); -import ethUtil = require('ethereumjs-util'); - -import { constants } from './constants'; - -// TODO: Push upstream to DefinitelyTyped -interface EthAbi { - simpleEncode(signature: string, ...args: any[]): Buffer; - rawDecode(signature: string[], data: Buffer): any[]; -} -// tslint:disable:no-var-requires -const ethAbi = require('ethereumjs-abi') as EthAbi; - -export const assetProxyUtils = { - encodeAssetProxyId(assetProxyId: AssetProxyId): Buffer { - return ethUtil.toBuffer(assetProxyId); - }, - decodeAssetProxyId(encodedAssetProxyId: Buffer): AssetProxyId { - const hexString = ethUtil.bufferToHex(encodedAssetProxyId); - if (hexString === AssetProxyId.ERC20) { - return AssetProxyId.ERC20; - } - if (hexString === AssetProxyId.ERC721) { - return AssetProxyId.ERC721; - } - throw new Error(`Invalid ProxyId: ${hexString}`); - }, - encodeAddress(address: string): Buffer { - if (!ethUtil.isValidAddress(address)) { - throw new Error(`Invalid Address: ${address}`); - } - const encodedAddress = ethUtil.toBuffer(address); - const padded = ethUtil.setLengthLeft(encodedAddress, constants.WORD_LENGTH); - return padded; - }, - decodeAddress(encodedAddress: Buffer): string { - const unpadded = ethUtil.setLengthLeft(encodedAddress, constants.ADDRESS_LENGTH); - const address = ethUtil.bufferToHex(unpadded); - if (!ethUtil.isValidAddress(address)) { - throw new Error(`Invalid Address: ${address}`); - } - return address; - }, - encodeUint256(value: BigNumber): Buffer { - const base = 10; - const formattedValue = new BN(value.toString(base)); - const encodedValue = ethUtil.toBuffer(formattedValue); - // tslint:disable-next-line:custom-no-magic-numbers - const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH); - return paddedValue; - }, - decodeUint256(encodedValue: Buffer): BigNumber { - const formattedValue = ethUtil.bufferToHex(encodedValue); - const value = new BigNumber(formattedValue, constants.BASE_16); - return value; - }, - encodeERC20AssetData(tokenAddress: string): string { - return ethUtil.bufferToHex(ethAbi.simpleEncode('ERC20Token(address)', tokenAddress)); - }, - decodeERC20AssetData(assetData: string): ERC20AssetData { - const data = ethUtil.toBuffer(assetData); - if (data.byteLength < constants.ERC20_ASSET_DATA_BYTE_LENGTH) { - throw new Error( - `Could not decode ERC20 Proxy Data. Expected length of encoded data to be at least ${ - constants.ERC20_ASSET_DATA_BYTE_LENGTH - }. Got ${data.byteLength}`, - ); - } - const assetProxyId = ethUtil.bufferToHex(data.slice(0, constants.SELECTOR_LENGTH)); - if (assetProxyId !== AssetProxyId.ERC20) { - throw new Error( - `Could not decode ERC20 Proxy Data. Expected Asset Proxy Id to be ERC20 (${ - AssetProxyId.ERC20 - }), but got ${assetProxyId}`, - ); - } - const [tokenAddress] = ethAbi.rawDecode(['address'], data.slice(constants.SELECTOR_LENGTH)); - return { - assetProxyId, - tokenAddress: ethUtil.addHexPrefix(tokenAddress), - }; - }, - encodeERC721AssetData(tokenAddress: string, tokenId: BigNumber, receiverData?: string): string { - // TODO: Pass `tokendId` as a BigNumber. - return ethUtil.bufferToHex( - ethAbi.simpleEncode( - 'ERC721Token(address,uint256,bytes)', - tokenAddress, - `0x${tokenId.toString(constants.BASE_16)}`, - ethUtil.toBuffer(receiverData || '0x'), - ), - ); - }, - decodeERC721AssetData(assetData: string): ERC721AssetData { - const data = ethUtil.toBuffer(assetData); - if (data.byteLength < constants.ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH) { - throw new Error( - `Could not decode ERC721 Asset Data. Expected length of encoded data to be at least ${ - constants.ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH - }. Got ${data.byteLength}`, - ); - } - const assetProxyId = ethUtil.bufferToHex(data.slice(0, constants.SELECTOR_LENGTH)); - if (assetProxyId !== AssetProxyId.ERC721) { - throw new Error( - `Could not decode ERC721 Asset Data. Expected Asset Proxy Id to be ERC721 (${ - AssetProxyId.ERC721 - }), but got ${assetProxyId}`, - ); - } - const [tokenAddress, tokenId, receiverData] = ethAbi.rawDecode( - ['address', 'uint256', 'bytes'], - data.slice(constants.SELECTOR_LENGTH), - ); - return { - assetProxyId, - tokenAddress: ethUtil.addHexPrefix(tokenAddress), - tokenId: new BigNumber(tokenId.toString()), - receiverData: ethUtil.bufferToHex(receiverData), - }; - }, - decodeAssetDataId(assetData: string): AssetProxyId { - const encodedAssetData = ethUtil.toBuffer(assetData); - if (encodedAssetData.byteLength < constants.SELECTOR_LENGTH) { - throw new Error( - `Could not decode Proxy Data. Expected length of encoded data to be at least 4. Got ${ - encodedAssetData.byteLength - }`, - ); - } - const encodedAssetProxyId = encodedAssetData.slice(0, constants.SELECTOR_LENGTH); - const assetProxyId = assetProxyUtils.decodeAssetProxyId(encodedAssetProxyId); - return assetProxyId; - }, - decodeAssetData(assetData: string): ERC20AssetData | ERC721AssetData { - const assetProxyId = assetProxyUtils.decodeAssetDataId(assetData); - switch (assetProxyId) { - case AssetProxyId.ERC20: - const erc20AssetData = assetProxyUtils.decodeERC20AssetData(assetData); - return erc20AssetData; - case AssetProxyId.ERC721: - const erc721AssetData = assetProxyUtils.decodeERC721AssetData(assetData); - return erc721AssetData; - default: - throw new Error(`Unrecognized asset proxy id: ${assetProxyId}`); - } - }, -}; diff --git a/packages/order-utils/src/index.ts b/packages/order-utils/src/index.ts index b4a7a6b67..8d748a2dc 100644 --- a/packages/order-utils/src/index.ts +++ b/packages/order-utils/src/index.ts @@ -19,7 +19,7 @@ export { AbstractOrderFilledCancelledFetcher } from './abstract/abstract_order_f export { BalanceAndProxyAllowanceLazyStore } from './store/balance_and_proxy_allowance_lazy_store'; export { RemainingFillableCalculator } from './remaining_fillable_calculator'; export { OrderStateUtils } from './order_state_utils'; -export { assetProxyUtils } from './asset_proxy_utils'; +export { assetDataUtils } from './asset_data_utils'; export { EIP712Utils } from './eip712_utils'; export { OrderValidationUtils } from './order_validation_utils'; export { ExchangeTransferSimulator } from './exchange_transfer_simulator'; diff --git a/packages/order-utils/test/exchange_transfer_simulator_test.ts b/packages/order-utils/test/exchange_transfer_simulator_test.ts index 37b2bd712..17903669a 100644 --- a/packages/order-utils/test/exchange_transfer_simulator_test.ts +++ b/packages/order-utils/test/exchange_transfer_simulator_test.ts @@ -4,7 +4,7 @@ import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import { artifacts } from '../src/artifacts'; -import { assetProxyUtils } from '../src/asset_proxy_utils'; +import { assetDataUtils } from '../src/asset_data_utils'; import { constants } from '../src/constants'; import { ExchangeTransferSimulator } from '../src/exchange_transfer_simulator'; import { DummyERC20TokenContract } from '../src/generated_contract_wrappers/dummy_erc20_token'; @@ -66,7 +66,7 @@ describe('ExchangeTransferSimulator', async () => { totalSupply, ); - exampleAssetData = assetProxyUtils.encodeERC20AssetData(dummyERC20Token.address); + exampleAssetData = assetDataUtils.encodeERC20AssetData(dummyERC20Token.address); }); beforeEach(async () => { await blockchainLifecycle.startAsync(); -- cgit v1.2.3 From 83f3ba21b8543788b9405801da465fcda8f05f79 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 17 Jul 2018 16:01:01 +0200 Subject: Move type decl. to typescript-typings --- packages/order-utils/src/asset_data_utils.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index 81e34218f..6a4e7600d 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -1,18 +1,11 @@ import { AssetProxyId, ERC20AssetData, ERC721AssetData } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; import BN = require('bn.js'); +import ethAbi = require('ethereumjs-abi'); import ethUtil = require('ethereumjs-util'); import { constants } from './constants'; -// TODO: Push upstream to DefinitelyTyped -interface EthAbi { - simpleEncode(signature: string, ...args: any[]): Buffer; - rawDecode(signature: string[], data: Buffer): any[]; -} -// tslint:disable:no-var-requires -const ethAbi = require('ethereumjs-abi') as EthAbi; - export const assetDataUtils = { encodeUint256(value: BigNumber): Buffer { const base = 10; -- cgit v1.2.3 From 698de932ed7d0ac8fe367d086e61c3b2a0d545b0 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 17 Jul 2018 16:27:59 +0200 Subject: Remove unused dep --- packages/order-utils/package.json | 1 - 1 file changed, 1 deletion(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 8f5041609..612347488 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -54,7 +54,6 @@ "@0xproject/dev-utils": "^0.4.5", "@0xproject/monorepo-scripts": "^0.2.2", "@0xproject/tslint-config": "^0.4.21", - "@types/ethereumjs-abi": "^0.6.0", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", "chai": "^4.0.1", -- cgit v1.2.3 From 25160d7344f9e1616654dfe09a24d8fc69fa8036 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 18 Jul 2018 11:32:01 +0200 Subject: Move encodeUint256 & decodeUint256 out of assetDataUtils since we don't want them exported --- packages/order-utils/src/asset_data_utils.ts | 36 ++++++++++------------------ packages/order-utils/src/constants.ts | 1 - 2 files changed, 12 insertions(+), 25 deletions(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index 6a4e7600d..ae4da4bb0 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -7,19 +7,6 @@ import ethUtil = require('ethereumjs-util'); import { constants } from './constants'; export const assetDataUtils = { - encodeUint256(value: BigNumber): Buffer { - const base = 10; - const formattedValue = new BN(value.toString(base)); - const encodedValue = ethUtil.toBuffer(formattedValue); - // tslint:disable-next-line:custom-no-magic-numbers - const paddedValue = ethUtil.setLengthLeft(encodedValue, constants.WORD_LENGTH); - return paddedValue; - }, - decodeUint256(encodedValue: Buffer): BigNumber { - const formattedValue = ethUtil.bufferToHex(encodedValue); - const value = new BigNumber(formattedValue, constants.BASE_16); - return value; - }, encodeERC20AssetData(tokenAddress: string): string { return ethUtil.bufferToHex(ethAbi.simpleEncode('ERC20Token(address)', tokenAddress)); }, @@ -95,7 +82,7 @@ export const assetDataUtils = { ); } const encodedAssetProxyId = encodedAssetData.slice(0, constants.SELECTOR_LENGTH); - const assetProxyId = assetDataUtils._decodeAssetProxyId(encodedAssetProxyId); + const assetProxyId = decodeAssetProxyId(encodedAssetProxyId); return assetProxyId; }, decodeAssetData(assetData: string): ERC20AssetData | ERC721AssetData { @@ -111,14 +98,15 @@ export const assetDataUtils = { throw new Error(`Unrecognized asset proxy id: ${assetProxyId}`); } }, - _decodeAssetProxyId(encodedAssetProxyId: Buffer): AssetProxyId { - const hexString = ethUtil.bufferToHex(encodedAssetProxyId); - if (hexString === AssetProxyId.ERC20) { - return AssetProxyId.ERC20; - } - if (hexString === AssetProxyId.ERC721) { - return AssetProxyId.ERC721; - } - throw new Error(`Invalid ProxyId: ${hexString}`); - }, }; + +function decodeAssetProxyId(encodedAssetProxyId: Buffer): AssetProxyId { + const hexString = ethUtil.bufferToHex(encodedAssetProxyId); + if (hexString === AssetProxyId.ERC20) { + return AssetProxyId.ERC20; + } + if (hexString === AssetProxyId.ERC721) { + return AssetProxyId.ERC721; + } + throw new Error(`Invalid ProxyId: ${hexString}`); +} diff --git a/packages/order-utils/src/constants.ts b/packages/order-utils/src/constants.ts index 383a657b8..bb7482184 100644 --- a/packages/order-utils/src/constants.ts +++ b/packages/order-utils/src/constants.ts @@ -6,7 +6,6 @@ export const constants = { UNLIMITED_ALLOWANCE_IN_BASE_UNITS: new BigNumber(2).pow(256).minus(1), TESTRPC_NETWORK_ID: 50, ADDRESS_LENGTH: 20, - WORD_LENGTH: 32, ERC20_ASSET_DATA_BYTE_LENGTH: 36, ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH: 53, SELECTOR_LENGTH: 4, -- cgit v1.2.3 From 89313883098b545c2afe9c4d84bc02b8bc8fd370 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 18 Jul 2018 11:47:42 +0200 Subject: Add java doc comments to assetDataUtils --- packages/order-utils/src/asset_data_utils.ts | 35 +++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index ae4da4bb0..732849f6f 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -7,9 +7,20 @@ import ethUtil = require('ethereumjs-util'); import { constants } from './constants'; export const assetDataUtils = { + /** + * Encodes an ERC20 token address into a hex encoded assetData string, usable in the makerAssetData or + * takerAssetData fields in a 0x order. + * @param tokenAddress The ERC20 token address to encode + * @return The hex encoded assetData string + */ encodeERC20AssetData(tokenAddress: string): string { return ethUtil.bufferToHex(ethAbi.simpleEncode('ERC20Token(address)', tokenAddress)); }, + /** + * Decodes an ERC20 assetData hex string into it's corresponding ERC20 tokenAddress & assetProxyId + * @param assetData Hex encoded assetData string to decode + * @return An object containing the decoded tokenAddress & assetProxyId + */ decodeERC20AssetData(assetData: string): ERC20AssetData { const data = ethUtil.toBuffer(assetData); if (data.byteLength < constants.ERC20_ASSET_DATA_BYTE_LENGTH) { @@ -33,6 +44,13 @@ export const assetDataUtils = { tokenAddress: ethUtil.addHexPrefix(tokenAddress), }; }, + /** + * Encodes an ERC721 token address into a hex encoded assetData string, usable in the makerAssetData or + * takerAssetData fields in a 0x order. + * @param tokenAddress The ERC721 token address to encode + * @param tokenId The ERC721 tokenId to encode + * @return The hex encoded assetData string + */ encodeERC721AssetData(tokenAddress: string, tokenId: BigNumber, receiverData?: string): string { // TODO: Pass `tokendId` as a BigNumber. return ethUtil.bufferToHex( @@ -44,6 +62,11 @@ export const assetDataUtils = { ), ); }, + /** + * Decodes an ERC721 assetData hex string into it's corresponding ERC721 tokenAddress, tokenId & assetProxyId + * @param assetData Hex encoded assetData string to decode + * @return An object containing the decoded tokenAddress, tokenId & assetProxyId + */ decodeERC721AssetData(assetData: string): ERC721AssetData { const data = ethUtil.toBuffer(assetData); if (data.byteLength < constants.ERC721_ASSET_DATA_MINIMUM_BYTE_LENGTH) { @@ -72,11 +95,16 @@ export const assetDataUtils = { receiverData: ethUtil.bufferToHex(receiverData), }; }, + /** + * Decode and return the assetProxyId from the assetData + * @param assetData Hex encoded assetData string to decode + * @return The assetProxyId + */ decodeAssetDataId(assetData: string): AssetProxyId { const encodedAssetData = ethUtil.toBuffer(assetData); if (encodedAssetData.byteLength < constants.SELECTOR_LENGTH) { throw new Error( - `Could not decode Proxy Data. Expected length of encoded data to be at least 4. Got ${ + `Could not decode assetData. Expected length of encoded data to be at least 4. Got ${ encodedAssetData.byteLength }`, ); @@ -85,6 +113,11 @@ export const assetDataUtils = { const assetProxyId = decodeAssetProxyId(encodedAssetProxyId); return assetProxyId; }, + /** + * Decode any assetData into it's corresponding assetData object + * @param assetData Hex encoded assetData string to decode + * @return Either a ERC20 or ERC721 assetData object + */ decodeAssetData(assetData: string): ERC20AssetData | ERC721AssetData { const assetProxyId = assetDataUtils.decodeAssetDataId(assetData); switch (assetProxyId) { -- cgit v1.2.3 From 12f02b98143513d8309a9df7d4dcab46d60352da Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 18 Jul 2018 11:49:30 +0200 Subject: Rename decodeAssetDataId to decodeAssetProxyId for consistency --- packages/order-utils/src/asset_data_utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index 732849f6f..68ce129ba 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -100,7 +100,7 @@ export const assetDataUtils = { * @param assetData Hex encoded assetData string to decode * @return The assetProxyId */ - decodeAssetDataId(assetData: string): AssetProxyId { + decodeAssetProxyId(assetData: string): AssetProxyId { const encodedAssetData = ethUtil.toBuffer(assetData); if (encodedAssetData.byteLength < constants.SELECTOR_LENGTH) { throw new Error( @@ -119,7 +119,7 @@ export const assetDataUtils = { * @return Either a ERC20 or ERC721 assetData object */ decodeAssetData(assetData: string): ERC20AssetData | ERC721AssetData { - const assetProxyId = assetDataUtils.decodeAssetDataId(assetData); + const assetProxyId = assetDataUtils.decodeAssetProxyId(assetData); switch (assetProxyId) { case AssetProxyId.ERC20: const erc20AssetData = assetDataUtils.decodeERC20AssetData(assetData); -- cgit v1.2.3 From 83747934ad5801e1abcf16a8788d54b50f0a20da Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 18 Jul 2018 12:11:11 +0200 Subject: Fix linter --- packages/order-utils/src/asset_data_utils.ts | 1 - 1 file changed, 1 deletion(-) (limited to 'packages/order-utils') diff --git a/packages/order-utils/src/asset_data_utils.ts b/packages/order-utils/src/asset_data_utils.ts index 68ce129ba..cb02d7d42 100644 --- a/packages/order-utils/src/asset_data_utils.ts +++ b/packages/order-utils/src/asset_data_utils.ts @@ -1,6 +1,5 @@ import { AssetProxyId, ERC20AssetData, ERC721AssetData } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; -import BN = require('bn.js'); import ethAbi = require('ethereumjs-abi'); import ethUtil = require('ethereumjs-util'); -- cgit v1.2.3