aboutsummaryrefslogtreecommitdiffstats
path: root/packages/0x.js
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-24 01:58:33 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-24 01:58:33 +0800
commit57c104119c409c053eb977553c92341c3ca83afd (patch)
tree7f1129fd01001604e7412e33ccef202c1ff90612 /packages/0x.js
parentcd5c73550b969fe0a87524143ce617749935427a (diff)
parent6e27324a341801e1a2d8d6989d749dfe021ae39b (diff)
downloaddexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar.gz
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar.bz2
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar.lz
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar.xz
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.tar.zst
dexon-sol-tools-57c104119c409c053eb977553c92341c3ca83afd.zip
Merge branch 'development' into feature/forwarder-helper/init
* development: (187 commits) Remove trailing slash Fix linter Stop nesting interfaces and add necessary type exports Remove duplicate type and remove nested interface Add support for rending the Tuple type Add missing keyu Remove excessive timestamp Improve doc commebnt Remove docs catch-all endpoint Fix comments Look for all TS mapped types Add catch and exit with non-zero Remove superfluous dep Fix CHANGELOG entry Fix double assignment Upgrade Typedoc to 0.12.0, which works with TS 3.x Fix prettier issues Enable dry run of release publishing and handle git tags existing update yarn.lock Missing/superfluous type exports from connect ...
Diffstat (limited to 'packages/0x.js')
-rw-r--r--packages/0x.js/CHANGELOG.json10
-rw-r--r--packages/0x.js/package.json44
-rw-r--r--packages/0x.js/src/0x.ts279
-rw-r--r--packages/0x.js/src/artifacts.ts7
-rw-r--r--packages/0x.js/src/index.ts111
-rw-r--r--packages/0x.js/src/monorepo_scripts/postpublish.ts8
-rw-r--r--packages/0x.js/src/monorepo_scripts/stage_docs.ts8
-rw-r--r--packages/0x.js/src/schemas/zero_ex_config_schema.ts5
-rw-r--r--packages/0x.js/src/schemas/zero_ex_private_network_config_schema.ts35
-rw-r--r--packages/0x.js/src/schemas/zero_ex_public_network_config_schema.ts43
-rw-r--r--packages/0x.js/src/types.ts7
-rw-r--r--packages/0x.js/src/utils/constants.ts4
-rw-r--r--packages/0x.js/test/0x.js_test.ts150
-rw-r--r--packages/0x.js/test/global_hooks.ts17
-rw-r--r--packages/0x.js/test/utils/chai_setup.ts13
-rw-r--r--packages/0x.js/test/utils/constants.ts9
-rw-r--r--packages/0x.js/test/utils/token_utils.ts9
-rw-r--r--packages/0x.js/test/utils/web3_wrapper.ts12
18 files changed, 92 insertions, 679 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..755de9e18 100644
--- a/packages/0x.js/package.json
+++ b/packages/0x.js/package.json
@@ -15,51 +15,26 @@
"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/"
- }
+ ]
}
},
"repository": {
@@ -93,7 +68,7 @@
"sinon": "^4.0.0",
"source-map-support": "^0.5.0",
"tslint": "5.11.0",
- "typedoc": "0xProject/typedoc",
+ "typedoc": "0.12.0",
"typescript": "3.0.1",
"webpack": "^3.1.0"
},
@@ -102,7 +77,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 +85,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..7058a898f 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,69 @@ export {
ERC721TokenApprovalForAllEventArgs,
ERC721TokenTransferEventArgs,
ERC721TokenEvents,
+ ERC721TokenEventArgs,
ExchangeCancelUpToEventArgs,
ExchangeAssetProxyRegisteredEventArgs,
+ ExchangeSignatureValidatorApprovalEventArgs,
ExchangeFillEventArgs,
ExchangeCancelEventArgs,
+ ExchangeEvents,
+ EventCallback,
+ DecodedLogEvent,
ExchangeEventArgs,
- ContractWrappersConfig,
- OrderInfo,
+ TransactionEncoder,
} 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 };