diff options
Diffstat (limited to 'packages/0x.js')
-rw-r--r-- | packages/0x.js/CHANGELOG.json | 10 | ||||
-rw-r--r-- | packages/0x.js/package.json | 41 | ||||
-rw-r--r-- | packages/0x.js/src/0x.ts | 279 | ||||
-rw-r--r-- | packages/0x.js/src/artifacts.ts | 7 | ||||
-rw-r--r-- | packages/0x.js/src/index.ts | 110 | ||||
-rw-r--r-- | packages/0x.js/src/monorepo_scripts/postpublish.ts | 8 | ||||
-rw-r--r-- | packages/0x.js/src/monorepo_scripts/stage_docs.ts | 8 | ||||
-rw-r--r-- | packages/0x.js/src/schemas/zero_ex_config_schema.ts | 5 | ||||
-rw-r--r-- | packages/0x.js/src/schemas/zero_ex_private_network_config_schema.ts | 35 | ||||
-rw-r--r-- | packages/0x.js/src/schemas/zero_ex_public_network_config_schema.ts | 43 | ||||
-rw-r--r-- | packages/0x.js/src/types.ts | 7 | ||||
-rw-r--r-- | packages/0x.js/src/utils/constants.ts | 4 | ||||
-rw-r--r-- | packages/0x.js/test/0x.js_test.ts | 150 | ||||
-rw-r--r-- | packages/0x.js/test/global_hooks.ts | 17 | ||||
-rw-r--r-- | packages/0x.js/test/utils/chai_setup.ts | 13 | ||||
-rw-r--r-- | packages/0x.js/test/utils/constants.ts | 9 | ||||
-rw-r--r-- | packages/0x.js/test/utils/token_utils.ts | 9 | ||||
-rw-r--r-- | packages/0x.js/test/utils/web3_wrapper.ts | 12 |
18 files changed, 90 insertions, 677 deletions
diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index e96fda9af..0f5a10e43 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -1,5 +1,15 @@ [ { + "version": "1.0.1-rc.4", + "changes": [ + { + "note": + "Re-organize the exported interface of 0x.js. Remove the `ZeroEx` class, and instead export the same exports as `0x.js`'s sub-packages: `@0xproject/contract-wrappers`, `@0xproject/order-utils` and `@0xproject/order-watcher`", + "pr": 963 + } + ] + }, + { "version": "1.0.1-rc.3", "changes": [ { diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 4005ef452..5911125ed 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -15,51 +15,27 @@ "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "scripts": { - "watch_without_deps": "yarn pre_build && tsc -w", - "build": "yarn pre_build && yarn build:all && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", + "watch_without_deps": "tsc -w", + "build": "yarn build:all", "build:all": "run-p build:umd:prod build:commonjs; exit 0;", - "pre_build": "run-s update_artifacts generate_contract_wrappers", - "copy_artifacts": "copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts", - "update_artifacts": "for i in ${npm_package_config_contracts}; do copyfiles -u 4 ../migrations/artifacts/2.0.0-beta-testnet/$i.json src/artifacts; done;", - "generate_contract_wrappers": "abi-gen --abis 'src/artifacts/@(ZRXToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/generated_contract_wrappers --backend ethers", "lint": "tslint --project . --exclude **/src/generated_contract_wrappers/**/*", "test:circleci": "run-s test:coverage", "test": "yarn run_mocha", "rebuild_and_test": "run-s build test", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", - "clean": "shx rm -rf _bundles lib test_temp scripts src/generated_contract_wrappers", + "clean": "shx rm -rf _bundles lib test_temp src/generated_contract_wrappers generated_docs", "build:umd:prod": "NODE_ENV=production webpack", - "build:commonjs": "tsc && yarn copy_artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", - "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js lib/test/global_hooks.js --timeout 10000 --bail --exit", - "manual:postpublish": "yarn build; node ./scripts/postpublish.js", - "docs:stage": "node scripts/stage_docs.js", - "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_FILES", - "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json" + "build:commonjs": "tsc", + "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_FILES" }, "config": { - "contracts": "ZRXToken AssetProxyOwner DummyERC20Token DummyERC721Token ERC20Proxy ERC721Proxy Exchange Forwarder OrderValidator WETH9", "postpublish": { "assets": [ "packages/0x.js/_bundles/index.js", "packages/0x.js/_bundles/index.min.js" ], - "docPublishConfigs": { - "extraFileIncludes": [ - "../types/src/index.ts", - "../ethereum-types/src/index.ts", - "../contract-wrappers/src/types.ts", - "../contract-wrappers/src/contract_wrappers/ether_token_wrapper.ts", - "../contract-wrappers/src/contract_wrappers/exchange_wrapper.ts", - "../contract-wrappers/src/contract_wrappers/erc20_proxy_wrapper.ts", - "../contract-wrappers/src/contract_wrappers/erc721_proxy_wrapper.ts", - "../contract-wrappers/src/contract_wrappers/erc20_token_wrapper.ts", - "../contract-wrappers/src/contract_wrappers/erc721_token_wrapper.ts", - "../order-watcher/src/order_watcher/order_watcher.ts" - ], - "s3BucketPath": "s3://doc-jsons/0x.js/", - "s3StagingBucketPath": "s3://staging-doc-jsons/0x.js/" - } + "shouldPublishDocs": true } }, "repository": { @@ -102,7 +78,7 @@ "@0xproject/base-contract": "^2.0.0-rc.1", "@0xproject/contract-wrappers": "^1.0.1-rc.3", "@0xproject/order-utils": "^1.0.1-rc.3", - "@0xproject/sol-compiler": "^1.0.5", + "@0xproject/order-watcher": "1.0.1-rc.3", "@0xproject/subproviders": "^1.0.5", "@0xproject/types": "^1.0.1-rc.4", "@0xproject/typescript-typings": "^1.0.4", @@ -110,7 +86,8 @@ "@0xproject/web3-wrapper": "^1.2.0", "ethereum-types": "^1.0.4", "ethers": "3.0.22", - "lodash": "^4.17.5" + "lodash": "^4.17.5", + "web3-provider-engine": "14.0.6" }, "publishConfig": { "access": "public" diff --git a/packages/0x.js/src/0x.ts b/packages/0x.js/src/0x.ts deleted file mode 100644 index 48d00c1ac..000000000 --- a/packages/0x.js/src/0x.ts +++ /dev/null @@ -1,279 +0,0 @@ -import { assert } from '@0xproject/assert'; -import { - ContractWrappers, - ContractWrappersConfig, - ERC20ProxyWrapper, - ERC20TokenWrapper, - ERC721ProxyWrapper, - ERC721TokenWrapper, - EtherTokenWrapper, - ExchangeWrapper, -} from '@0xproject/contract-wrappers'; -import { - assetDataUtils, - ecSignOrderHashAsync, - generatePseudoRandomSalt, - isValidSignatureAsync, - orderHashUtils, -} from '@0xproject/order-utils'; -// HACK: Since we export assetDataUtils from ZeroEx and it has AssetProxyId, ERC20AssetData and ERC721AssetData -// in it's public interface, we need to import these types here. -// tslint:disable-next-line:no-unused-variable -import { AssetProxyId, ERC20AssetData, ERC721AssetData, Order, SignedOrder, SignerType } from '@0xproject/types'; -import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import { Provider, TransactionReceiptWithDecodedLogs } from 'ethereum-types'; - -import { constants } from './utils/constants'; - -/** - * The ZeroEx class is the single entry-point into the 0x.js library. It contains all of the library's functionality - * and all calls to the library should be made through a ZeroEx instance. - */ -export class ZeroEx { - /** - * When creating an order without a specified taker or feeRecipient you must supply the Solidity - * address null type (as opposed to Javascripts `null`, `undefined` or empty string). We expose - * this constant for your convenience. - */ - public static NULL_ADDRESS = constants.NULL_ADDRESS; - /** - * An instance of the ExchangeWrapper class containing methods for interacting with the 0x Exchange smart contract. - */ - public exchange: ExchangeWrapper; - /** - * An instance of the ERC20TokenWrapper class containing methods for interacting with any ERC20 token smart contract. - */ - public erc20Token: ERC20TokenWrapper; - /** - * An instance of the ERC721TokenWrapper class containing methods for interacting with any ERC721 token smart contract. - */ - public erc721Token: ERC721TokenWrapper; - /** - * An instance of the EtherTokenWrapper class containing methods for interacting with the - * wrapped ETH ERC20 token smart contract. - */ - public etherToken: EtherTokenWrapper; - /** - * An instance of the ERC20ProxyWrapper class containing methods for interacting with the - * ERC20 proxy smart contract. - */ - public erc20Proxy: ERC20ProxyWrapper; - /** - * An instance of the ERC721ProxyWrapper class containing methods for interacting with the - * ERC721 proxy smart contract. - */ - public erc721Proxy: ERC721ProxyWrapper; - private readonly _contractWrappers: ContractWrappers; - /** - * Generates a pseudo-random 256-bit salt. - * The salt can be included in a 0x order, ensuring that the order generates a unique orderHash - * and will not collide with other outstanding orders that are identical in all other parameters. - * @return A pseudo-random 256-bit number that can be used as a salt. - */ - public static generatePseudoRandomSalt(): BigNumber { - return generatePseudoRandomSalt(); - } - /** - * Computes the orderHash for a supplied order. - * @param order An object that conforms to the Order or SignedOrder interface definitions. - * @return The resulting orderHash from hashing the supplied order. - */ - public static getOrderHashHex(order: Order | SignedOrder): string { - return orderHashUtils.getOrderHashHex(order); - } - /** - * Checks if the supplied hex encoded order hash is valid. - * Note: Valid means it has the expected format, not that an order with the orderHash exists. - * Use this method when processing orderHashes submitted as user input. - * @param orderHash Hex encoded orderHash. - * @return Whether the supplied orderHash has the expected format. - */ - public static isValidOrderHash(orderHash: string): boolean { - return orderHashUtils.isValidOrderHash(orderHash); - } - /** - * A unit amount is defined as the amount of a token above the specified decimal places (integer part). - * E.g: If a currency has 18 decimal places, 1e18 or one quintillion of the currency is equivalent - * to 1 unit. - * @param amount The amount in baseUnits that you would like converted to units. - * @param decimals The number of decimal places the unit amount has. - * @return The amount in units. - */ - public static toUnitAmount(amount: BigNumber, decimals: number): BigNumber { - assert.isValidBaseUnitAmount('amount', amount); - assert.isNumber('decimals', decimals); - const unitAmount = Web3Wrapper.toUnitAmount(amount, decimals); - return unitAmount; - } - /** - * A baseUnit is defined as the smallest denomination of a token. An amount expressed in baseUnits - * is the amount expressed in the smallest denomination. - * E.g: 1 unit of a token with 18 decimal places is expressed in baseUnits as 1000000000000000000 - * @param amount The amount of units that you would like converted to baseUnits. - * @param decimals The number of decimal places the unit amount has. - * @return The amount in baseUnits. - */ - public static toBaseUnitAmount(amount: BigNumber, decimals: number): BigNumber { - assert.isBigNumber('amount', amount); - assert.isNumber('decimals', decimals); - const baseUnitAmount = Web3Wrapper.toBaseUnitAmount(amount, decimals); - return baseUnitAmount; - } - /** - * 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 - */ - public static encodeERC20AssetData(tokenAddress: string): string { - return assetDataUtils.encodeERC20AssetData(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 - */ - public static decodeERC20AssetData(assetData: string): ERC20AssetData { - return assetDataUtils.decodeERC20AssetData(assetData); - } - /** - * 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 - */ - public static encodeERC721AssetData(tokenAddress: string, tokenId: BigNumber): string { - return assetDataUtils.encodeERC721AssetData(tokenAddress, tokenId); - } - /** - * 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 - */ - public static decodeERC721AssetData(assetData: string): ERC721AssetData { - return assetDataUtils.decodeERC721AssetData(assetData); - } - /** - * Decode and return the assetProxyId from the assetData - * @param assetData Hex encoded assetData string to decode - * @return The assetProxyId - */ - public static decodeAssetProxyId(assetData: string): AssetProxyId { - return assetDataUtils.decodeAssetProxyId(assetData); - } - /** - * 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 - */ - public static decodeAssetDataOrThrow(assetData: string): ERC20AssetData | ERC721AssetData { - return assetDataUtils.decodeAssetDataOrThrow(assetData); - } - /** - * Instantiates a new ZeroEx instance that provides the public interface to the 0x.js library. - * @param provider The Provider instance you would like the 0x.js library to use for interacting with - * the Ethereum network. - * @param config The configuration object. Look up the type for the description. - * @return An instance of the 0x.js ZeroEx class. - */ - constructor(provider: Provider, config: ContractWrappersConfig) { - assert.isWeb3Provider('provider', provider); - this._contractWrappers = new ContractWrappers(provider, config); - - this.erc20Proxy = this._contractWrappers.erc20Proxy; - this.erc721Proxy = this._contractWrappers.erc721Proxy; - this.erc20Token = this._contractWrappers.erc20Token; - this.erc721Token = this._contractWrappers.erc721Token; - this.exchange = this._contractWrappers.exchange; - this.etherToken = this._contractWrappers.etherToken; - } - /** - * Verifies that the provided signature is valid according to the 0x Protocol smart contracts - * @param data The hex encoded data signed by the supplied signature. - * @param signature The hex encoded signature. - * @param signerAddress The hex encoded address that signed the data, producing the supplied signature. - * @return Whether the signature is valid for the supplied signerAddress and data. - */ - public async isValidSignatureAsync(data: string, signature: string, signerAddress: string): Promise<boolean> { - const isValid = await isValidSignatureAsync( - this._contractWrappers.getProvider(), - data, - signature, - signerAddress, - ); - return isValid; - } - /** - * Sets a new web3 provider for 0x.js. Updating the provider will stop all - * subscriptions so you will need to re-subscribe to all events relevant to your app after this call. - * @param provider The Web3Provider you would like the 0x.js library to use from now on. - * @param networkId The id of the network your provider is connected to - */ - public setProvider(provider: Provider, networkId: number): void { - this._contractWrappers.setProvider(provider, networkId); - } - /** - * Get the provider instance currently used by 0x.js - * @return Web3 provider instance - */ - public getProvider(): Provider { - return this._contractWrappers.getProvider(); - } - /** - * Get user Ethereum addresses available through the supplied web3 provider available for sending transactions. - * @return An array of available user Ethereum addresses. - */ - public async getAvailableAddressesAsync(): Promise<string[]> { - // Hack: Get Web3Wrapper from ContractWrappers - const web3Wrapper: Web3Wrapper = (this._contractWrappers as any)._web3Wrapper; - const availableAddresses = await web3Wrapper.getAvailableAddressesAsync(); - return availableAddresses; - } - /** - * Signs an orderHash and returns it's elliptic curve signature. - * This method currently supports TestRPC, Geth and Parity above and below V1.6.6 - * @param orderHash Hex encoded orderHash to sign. - * @param signerAddress The hex encoded Ethereum address you wish to sign it with. This address - * must be available via the Provider supplied to 0x.js. - * @param signerType the signer type that will perform the `eth_sign` operation. E.g Default, Metamask, Ledger or Trezor. - * Some implementations exhibit different behaviour. Default will assume a spec compliant eth_sign implementation. - * This parameter is defaulted to `SignerType.Default`. - * @return A hex encoded string of the Elliptic curve signature parameters generated by signing the orderHash and signature type. - */ - public async ecSignOrderHashAsync( - orderHash: string, - signerAddress: string, - signerType: SignerType = SignerType.Default, - ): Promise<string> { - const signature = await ecSignOrderHashAsync( - this._contractWrappers.getProvider(), - orderHash, - signerAddress, - signerType, - ); - return signature; - } - /** - * Waits for a transaction to be mined and returns the transaction receipt. - * @param txHash Transaction hash - * @param pollingIntervalMs How often (in ms) should we check if the transaction is mined. - * @param timeoutMs How long (in ms) to poll for transaction mined until aborting. - * @return Transaction receipt with decoded log args. - */ - public async awaitTransactionMinedAsync( - txHash: string, - pollingIntervalMs: number = 1000, - timeoutMs?: number, - ): Promise<TransactionReceiptWithDecodedLogs> { - // Hack: Get Web3Wrapper from ContractWrappers - const web3Wrapper: Web3Wrapper = (this._contractWrappers as any)._web3Wrapper; - const transactionReceiptWithDecodedLogs = await web3Wrapper.awaitTransactionMinedAsync( - txHash, - pollingIntervalMs, - timeoutMs, - ); - return transactionReceiptWithDecodedLogs; - } -} diff --git a/packages/0x.js/src/artifacts.ts b/packages/0x.js/src/artifacts.ts deleted file mode 100644 index f68969d28..000000000 --- a/packages/0x.js/src/artifacts.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ContractArtifact } from '@0xproject/sol-compiler'; - -import * as ZRXToken from './artifacts/ZRXToken.json'; - -export const artifacts = { - ZRXToken: (ZRXToken as any) as ContractArtifact, -}; diff --git a/packages/0x.js/src/index.ts b/packages/0x.js/src/index.ts index 2ba60e730..a37333bad 100644 --- a/packages/0x.js/src/index.ts +++ b/packages/0x.js/src/index.ts @@ -1,47 +1,22 @@ -export { ZeroEx } from './0x'; - -export { Web3ProviderEngine, RPCSubprovider } from '@0xproject/subproviders'; - -export { - ExchangeContractErrs, - Order, - SignedOrder, - SignerType, - ECSignature, - OrderStateValid, - OrderStateInvalid, - OrderState, - Token, - ERC20AssetData, - ERC721AssetData, - AssetProxyId, -} from '@0xproject/types'; +export { assetDataUtils, signatureUtils, generatePseudoRandomSalt, orderHashUtils } from '@0xproject/order-utils'; export { - BlockParamLiteral, - FilterObject, - BlockParam, - LogWithDecodedArgs, - ContractEventArg, - Provider, - TransactionReceipt, - TransactionReceiptWithDecodedLogs, -} from 'ethereum-types'; - -export { - EventCallback, - ContractEvent, + ContractWrappers, + ERC20TokenWrapper, + ERC721TokenWrapper, + EtherTokenWrapper, + ExchangeWrapper, + ERC20ProxyWrapper, + ERC721ProxyWrapper, + ForwarderWrapper, IndexedFilterValues, BlockRange, - OrderFillRequest, - ContractEventArgs, + ContractWrappersConfig, MethodOpts, OrderTransactionOpts, TransactionOpts, - LogEvent, - DecodedLogEvent, - OnOrderStateChangeCallback, - ContractWrappersError, + OrderStatus, + OrderInfo, WETH9Events, WETH9WithdrawalEventArgs, WETH9ApprovalEventArgs, @@ -56,11 +31,68 @@ export { ERC721TokenApprovalForAllEventArgs, ERC721TokenTransferEventArgs, ERC721TokenEvents, + ERC721TokenEventArgs, ExchangeCancelUpToEventArgs, ExchangeAssetProxyRegisteredEventArgs, + ExchangeSignatureValidatorApprovalEventArgs, ExchangeFillEventArgs, ExchangeCancelEventArgs, + ExchangeEvents, + EventCallback, + DecodedLogEvent, ExchangeEventArgs, - ContractWrappersConfig, - OrderInfo, } from '@0xproject/contract-wrappers'; + +export { OrderWatcher, OnOrderStateChangeCallback, OrderWatcherConfig } from '@0xproject/order-watcher'; + +export import Web3ProviderEngine = require('web3-provider-engine'); + +export { RPCSubprovider, Callback, JSONRPCRequestPayloadWithMethod, ErrorCallback } from '@0xproject/subproviders'; + +export { AbiDecoder } from '@0xproject/utils'; + +export { BigNumber } from '@0xproject/utils'; + +export { + ExchangeContractErrs, + Order, + SignedOrder, + ECSignature, + OrderStateValid, + OrderStateInvalid, + OrderState, + AssetProxyId, + SignerType, + ERC20AssetData, + ERC721AssetData, + SignatureType, + OrderRelevantState, +} from '@0xproject/types'; + +export { + BlockParamLiteral, + ContractAbi, + BlockParam, + LogWithDecodedArgs, + ContractEventArg, + Provider, + JSONRPCRequestPayload, + JSONRPCResponsePayload, + JSONRPCErrorCallback, + LogEntry, + DecodedLogArgs, + LogEntryEvent, + DecodedLogEntry, + DecodedLogEntryEvent, + RawLog, + AbiDefinition, + FunctionAbi, + EventAbi, + EventParameter, + MethodAbi, + ConstructorAbi, + FallbackAbi, + DataItem, + ConstructorStateMutability, + StateMutability, +} from 'ethereum-types'; diff --git a/packages/0x.js/src/monorepo_scripts/postpublish.ts b/packages/0x.js/src/monorepo_scripts/postpublish.ts deleted file mode 100644 index dcb99d0f7..000000000 --- a/packages/0x.js/src/monorepo_scripts/postpublish.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { postpublishUtils } from '@0xproject/monorepo-scripts'; - -import * as packageJSON from '../package.json'; -import * as tsConfigJSON from '../tsconfig.json'; - -const cwd = `${__dirname}/..`; -// tslint:disable-next-line:no-floating-promises -postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd); diff --git a/packages/0x.js/src/monorepo_scripts/stage_docs.ts b/packages/0x.js/src/monorepo_scripts/stage_docs.ts deleted file mode 100644 index e732ac8eb..000000000 --- a/packages/0x.js/src/monorepo_scripts/stage_docs.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { postpublishUtils } from '@0xproject/monorepo-scripts'; - -import * as packageJSON from '../package.json'; -import * as tsConfigJSON from '../tsconfig.json'; - -const cwd = `${__dirname}/..`; -// tslint:disable-next-line:no-floating-promises -postpublishUtils.publishDocsToStagingAsync(packageJSON, tsConfigJSON, cwd); diff --git a/packages/0x.js/src/schemas/zero_ex_config_schema.ts b/packages/0x.js/src/schemas/zero_ex_config_schema.ts deleted file mode 100644 index a9c3c64fc..000000000 --- a/packages/0x.js/src/schemas/zero_ex_config_schema.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const zeroExConfigSchema = { - id: '/ZeroExConfig', - oneOf: [{ $ref: '/ZeroExPrivateNetworkConfig' }, { $ref: '/ZeroExPublicNetworkConfig' }], - type: 'object', -}; diff --git a/packages/0x.js/src/schemas/zero_ex_private_network_config_schema.ts b/packages/0x.js/src/schemas/zero_ex_private_network_config_schema.ts deleted file mode 100644 index 378b86e77..000000000 --- a/packages/0x.js/src/schemas/zero_ex_private_network_config_schema.ts +++ /dev/null @@ -1,35 +0,0 @@ -export const zeroExPrivateNetworkConfigSchema = { - id: '/ZeroExPrivateNetworkConfig', - properties: { - networkId: { - type: 'number', - minimum: 1, - }, - gasPrice: { $ref: '/Number' }, - zrxContractAddress: { $ref: '/Address' }, - exchangeContractAddress: { $ref: '/Address' }, - erc20ProxyContractAddress: { $ref: '/Address' }, - erc721ProxyContractAddress: { $ref: '/Address' }, - orderWatcherConfig: { - type: 'object', - properties: { - pollingIntervalMs: { - type: 'number', - minimum: 0, - }, - numConfirmations: { - type: 'number', - minimum: 0, - }, - }, - }, - }, - type: 'object', - required: [ - 'networkId', - 'zrxContractAddress', - 'exchangeContractAddress', - 'erc20ProxyContractAddress', - 'erc721ProxyContractAddress', - ], -}; diff --git a/packages/0x.js/src/schemas/zero_ex_public_network_config_schema.ts b/packages/0x.js/src/schemas/zero_ex_public_network_config_schema.ts deleted file mode 100644 index f2a9a4d56..000000000 --- a/packages/0x.js/src/schemas/zero_ex_public_network_config_schema.ts +++ /dev/null @@ -1,43 +0,0 @@ -const networkNameToId: { [networkName: string]: number } = { - mainnet: 1, - ropsten: 3, - rinkeby: 4, - kovan: 42, - ganache: 50, -}; - -export const zeroExPublicNetworkConfigSchema = { - id: '/ZeroExPublicNetworkConfig', - properties: { - networkId: { - type: 'number', - enum: [ - networkNameToId.mainnet, - networkNameToId.ropsten, - networkNameToId.rinkeby, - networkNameToId.kovan, - networkNameToId.ganache, - ], - }, - gasPrice: { $ref: '/Number' }, - zrxContractAddress: { $ref: '/Address' }, - exchangeContractAddress: { $ref: '/Address' }, - erc20ProxyContractAddress: { $ref: '/Address' }, - erc721ProxyContractAddress: { $ref: '/Address' }, - orderWatcherConfig: { - type: 'object', - properties: { - pollingIntervalMs: { - type: 'number', - minimum: 0, - }, - numConfirmations: { - type: 'number', - minimum: 0, - }, - }, - }, - }, - type: 'object', - required: ['networkId'], -}; diff --git a/packages/0x.js/src/types.ts b/packages/0x.js/src/types.ts deleted file mode 100644 index 651b15abd..000000000 --- a/packages/0x.js/src/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -export enum InternalZeroExError { - NoAbiDecoder = 'NO_ABI_DECODER', - ZrxNotInTokenRegistry = 'ZRX_NOT_IN_TOKEN_REGISTRY', - WethNotInTokenRegistry = 'WETH_NOT_IN_TOKEN_REGISTRY', -} - -// tslint:disable:max-file-line-count diff --git a/packages/0x.js/src/utils/constants.ts b/packages/0x.js/src/utils/constants.ts deleted file mode 100644 index 5a5ba0e0a..000000000 --- a/packages/0x.js/src/utils/constants.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const constants = { - NULL_ADDRESS: '0x0000000000000000000000000000000000000000', - TESTRPC_NETWORK_ID: 50, -}; diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts deleted file mode 100644 index be2a94482..000000000 --- a/packages/0x.js/test/0x.js_test.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { ContractWrappers } from '@0xproject/contract-wrappers'; -import { BlockchainLifecycle } from '@0xproject/dev-utils'; -import { BigNumber } from '@0xproject/utils'; -import * as chai from 'chai'; -import 'mocha'; - -import { ERC20TokenApprovalEventArgs, ERC20TokenEvents, LogWithDecodedArgs, ZeroEx } from '../src'; - -import { chaiSetup } from './utils/chai_setup'; -import { constants } from './utils/constants'; -import { tokenUtils } from './utils/token_utils'; -import { provider, web3Wrapper } from './utils/web3_wrapper'; - -const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); -chaiSetup.configure(); -const expect = chai.expect; - -describe('ZeroEx library', () => { - let zeroEx: ZeroEx; - before(async () => { - const config = { - networkId: constants.TESTRPC_NETWORK_ID, - }; - zeroEx = new ZeroEx(provider, config); - }); - describe('#setProvider', () => { - it('overrides provider in nested web3s and invalidates contractInstances', async () => { - // Instantiate the contract instances with the current provider - await (zeroEx.exchange as any)._getExchangeContractAsync(); - expect((zeroEx.exchange as any)._exchangeContractIfExists).to.not.be.undefined(); - - // Add property to newProvider so that we can differentiate it from old provider - (provider as any).zeroExTestId = 1; - zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID); - - // Check that contractInstances with old provider are removed after provider update - expect((zeroEx.exchange as any)._exchangeContractIfExists).to.be.undefined(); - - // Check that all nested zeroExContract/web3Wrapper instances return the updated provider - const nestedWeb3WrapperProvider = ((zeroEx as any)._contractWrappers as ContractWrappers).getProvider(); - expect((nestedWeb3WrapperProvider as any).zeroExTestId).to.be.a('number'); - const exchangeWeb3WrapperProvider = (zeroEx.exchange as any)._web3Wrapper.getProvider(); - expect(exchangeWeb3WrapperProvider.zeroExTestId).to.be.a('number'); - }); - }); - describe('#isValidSignature', () => { - const dataHex = '0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b0'; - const ethSignSignature = - '0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace225403'; - const address = '0x5409ed021d9299bf6814279a6a1411a7e866a631'; - const bytes32Zeros = '0x0000000000000000000000000000000000000000000000000000000000000000'; - it("should return false if the data doesn't pertain to the signature & address", async () => { - return expect( - (zeroEx.exchange as any).isValidSignatureAsync(bytes32Zeros, address, ethSignSignature), - ).to.become(false); - }); - it("should return false if the address doesn't pertain to the signature & data", async () => { - const validUnrelatedAddress = '0x8b0292b11a196601ed2ce54b665cafeca0347d42'; - return expect( - (zeroEx.exchange as any).isValidSignatureAsync(dataHex, validUnrelatedAddress, ethSignSignature), - ).to.become(false); - }); - it("should return false if the signature doesn't pertain to the dataHex & address", async () => { - const signatureArray = ethSignSignature.split(''); - // tslint:disable-next-line:custom-no-magic-numbers - signatureArray[5] = 'C'; // V = 28, instead of 27 - const wrongSignature = signatureArray.join(''); - return expect((zeroEx.exchange as any).isValidSignatureAsync(dataHex, address, wrongSignature)).to.become( - false, - ); - }); - it('should return true if the signature does pertain to the dataHex & address', async () => { - return expect((zeroEx.exchange as any).isValidSignatureAsync(dataHex, address, ethSignSignature)).to.become( - true, - ); - }); - }); - describe('#toUnitAmount', () => { - it('should throw if invalid baseUnit amount supplied as argument', () => { - const invalidBaseUnitAmount = new BigNumber(1000000000.4); - const decimals = 6; - expect(() => ZeroEx.toUnitAmount(invalidBaseUnitAmount, decimals)).to.throw( - 'amount should be in baseUnits (no decimals), found value: 1000000000.4', - ); - }); - it('Should return the expected unit amount for the decimals passed in', () => { - const baseUnitAmount = new BigNumber(1000000000); - const decimals = 6; - const unitAmount = ZeroEx.toUnitAmount(baseUnitAmount, decimals); - const expectedUnitAmount = new BigNumber(1000); - expect(unitAmount).to.be.bignumber.equal(expectedUnitAmount); - }); - }); - describe('#toBaseUnitAmount', () => { - it('Should return the expected base unit amount for the decimals passed in', () => { - const unitAmount = new BigNumber(1000); - const decimals = 6; - const baseUnitAmount = ZeroEx.toBaseUnitAmount(unitAmount, decimals); - const expectedUnitAmount = new BigNumber(1000000000); - expect(baseUnitAmount).to.be.bignumber.equal(expectedUnitAmount); - }); - it('should throw if unitAmount has more decimals then specified as the max decimal precision', () => { - const unitAmount = new BigNumber(0.823091); - const decimals = 5; - expect(() => ZeroEx.toBaseUnitAmount(unitAmount, decimals)).to.throw( - 'Invalid unit amount: 0.823091 - Too many decimal places', - ); - }); - }); - describe('#awaitTransactionMinedAsync', () => { - beforeEach(async () => { - await blockchainLifecycle.startAsync(); - }); - afterEach(async () => { - await blockchainLifecycle.revertAsync(); - }); - it('returns transaction receipt with decoded logs', async () => { - const availableAddresses = await zeroEx.getAvailableAddressesAsync(); - const coinbase = availableAddresses[0]; - const zrxTokenAddress = tokenUtils.getProtocolTokenAddress(); - const erc20ProxyAddress = zeroEx.erc20Proxy.getContractAddress(); - const txHash = await zeroEx.erc20Token.setUnlimitedProxyAllowanceAsync(zrxTokenAddress, coinbase); - const txReceiptWithDecodedLogs = await zeroEx.awaitTransactionMinedAsync(txHash); - // tslint:disable-next-line:no-unnecessary-type-assertion - const log = txReceiptWithDecodedLogs.logs[0] as LogWithDecodedArgs<ERC20TokenApprovalEventArgs>; - expect(log.event).to.be.equal(ERC20TokenEvents.Approval); - expect(log.args._owner).to.be.equal(coinbase); - expect(log.args._spender).to.be.equal(erc20ProxyAddress); - expect(log.args._value).to.be.bignumber.equal(zeroEx.erc20Token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS); - }); - }); - describe('#config', () => { - it('allows to specify exchange contract address', async () => { - const zeroExConfig = { - exchangeContractAddress: ZeroEx.NULL_ADDRESS, - networkId: constants.TESTRPC_NETWORK_ID, - }; - const zeroExWithWrongExchangeAddress = new ZeroEx(provider, zeroExConfig); - expect(zeroExWithWrongExchangeAddress.exchange.getContractAddress()).to.be.equal(ZeroEx.NULL_ADDRESS); - }); - it('allows to specify erc20Proxy contract address', async () => { - const zeroExConfig = { - erc20ProxyContractAddress: ZeroEx.NULL_ADDRESS, - networkId: constants.TESTRPC_NETWORK_ID, - }; - const zeroExWithWrongERC20ProxyAddress = new ZeroEx(provider, zeroExConfig); - expect(zeroExWithWrongERC20ProxyAddress.erc20Proxy.getContractAddress()).to.be.equal(ZeroEx.NULL_ADDRESS); - }); - }); -}); diff --git a/packages/0x.js/test/global_hooks.ts b/packages/0x.js/test/global_hooks.ts deleted file mode 100644 index 7fd853008..000000000 --- a/packages/0x.js/test/global_hooks.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { devConstants } from '@0xproject/dev-utils'; -import { runV2MigrationsAsync } from '@0xproject/migrations'; - -import { provider } from './utils/web3_wrapper'; - -before('migrate contracts', async function(): Promise<void> { - // HACK: Since the migrations take longer then our global mocha timeout limit - // we manually increase it for this before hook. - const mochaTestTimeoutMs = 20000; - this.timeout(mochaTestTimeoutMs); // tslint:disable-line:no-invalid-this - const txDefaults = { - gas: devConstants.GAS_LIMIT, - from: devConstants.TESTRPC_FIRST_ADDRESS, - }; - const artifactsDir = `src/artifacts`; - await runV2MigrationsAsync(provider, artifactsDir, txDefaults); -}); diff --git a/packages/0x.js/test/utils/chai_setup.ts b/packages/0x.js/test/utils/chai_setup.ts deleted file mode 100644 index 1a8733093..000000000 --- a/packages/0x.js/test/utils/chai_setup.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as chai from 'chai'; -import chaiAsPromised = require('chai-as-promised'); -import ChaiBigNumber = require('chai-bignumber'); -import * as dirtyChai from 'dirty-chai'; - -export const chaiSetup = { - configure(): void { - chai.config.includeStack = true; - chai.use(ChaiBigNumber()); - chai.use(dirtyChai); - chai.use(chaiAsPromised); - }, -}; diff --git a/packages/0x.js/test/utils/constants.ts b/packages/0x.js/test/utils/constants.ts deleted file mode 100644 index cf030259c..000000000 --- a/packages/0x.js/test/utils/constants.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const constants = { - NULL_ADDRESS: '0x0000000000000000000000000000000000000000', - ROPSTEN_NETWORK_ID: 3, - KOVAN_NETWORK_ID: 42, - TESTRPC_NETWORK_ID: 50, - KOVAN_RPC_URL: 'https://kovan.infura.io/', - ROPSTEN_RPC_URL: 'https://ropsten.infura.io/', - ZRX_DECIMALS: 18, -}; diff --git a/packages/0x.js/test/utils/token_utils.ts b/packages/0x.js/test/utils/token_utils.ts deleted file mode 100644 index a439c464d..000000000 --- a/packages/0x.js/test/utils/token_utils.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { artifacts } from '../../src/artifacts'; - -import { constants } from './constants'; - -export const tokenUtils = { - getProtocolTokenAddress(): string { - return artifacts.ZRXToken.networks[constants.TESTRPC_NETWORK_ID].address; - }, -}; diff --git a/packages/0x.js/test/utils/web3_wrapper.ts b/packages/0x.js/test/utils/web3_wrapper.ts deleted file mode 100644 index 02c8c5918..000000000 --- a/packages/0x.js/test/utils/web3_wrapper.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { devConstants, web3Factory } from '@0xproject/dev-utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import { Provider } from 'ethereum-types'; - -const txDefaults = { - from: devConstants.TESTRPC_FIRST_ADDRESS, - gas: devConstants.GAS_LIMIT, -}; -const provider: Provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); -const web3Wrapper = new Web3Wrapper(provider); - -export { provider, web3Wrapper, txDefaults }; |