Refactor web3Wrapper to a separate package
This commit is contained in:
		@@ -16,7 +16,6 @@
 | 
			
		||||
        "lerna": "^2.5.1",
 | 
			
		||||
        "async-child-process": "^1.1.1",
 | 
			
		||||
        "semver-sort": "^0.0.4",
 | 
			
		||||
        "publish-release": "0xproject/publish-release",
 | 
			
		||||
        "es6-promisify": "^5.0.0"
 | 
			
		||||
        "publish-release": "0xproject/publish-release"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -46,8 +46,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "abi-gen": "^0.0.0",
 | 
			
		||||
    "abi-gen-templates": "^0.0.0",
 | 
			
		||||
    "@0xproject/types": "^0.0.1",
 | 
			
		||||
    "@types/bintrees": "^1.0.2",
 | 
			
		||||
    "@types/jsonschema": "^1.1.1",
 | 
			
		||||
    "@types/lodash": "^4.14.86",
 | 
			
		||||
@@ -55,6 +54,8 @@
 | 
			
		||||
    "@types/node": "^8.0.53",
 | 
			
		||||
    "@types/sinon": "^2.2.2",
 | 
			
		||||
    "@types/uuid": "^3.4.2",
 | 
			
		||||
    "abi-gen": "^0.0.1",
 | 
			
		||||
    "abi-gen-templates": "^0.0.1",
 | 
			
		||||
    "awesome-typescript-loader": "^3.1.3",
 | 
			
		||||
    "chai": "^4.0.1",
 | 
			
		||||
    "chai-as-promised": "^7.1.0",
 | 
			
		||||
@@ -88,6 +89,8 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@0xproject/assert": "^0.0.6",
 | 
			
		||||
    "@0xproject/json-schemas": "^0.6.9",
 | 
			
		||||
    "@0xproject/utils": "^0.0.1",
 | 
			
		||||
    "@0xproject/web3-wrapper": "^0.0.1",
 | 
			
		||||
    "bignumber.js": "~4.1.0",
 | 
			
		||||
    "bintrees": "^1.0.2",
 | 
			
		||||
    "bn.js": "^4.11.8",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import {schemas, SchemaValidator} from '@0xproject/json-schemas';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as ethUtil from 'ethereumjs-util';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
@@ -29,7 +30,6 @@ import {intervalUtils} from './utils/interval_utils';
 | 
			
		||||
import {OrderStateUtils} from './utils/order_state_utils';
 | 
			
		||||
import {signatureUtils} from './utils/signature_utils';
 | 
			
		||||
import {utils} from './utils/utils';
 | 
			
		||||
import {Web3Wrapper} from './web3_wrapper';
 | 
			
		||||
 | 
			
		||||
// Customize our BigNumber instances
 | 
			
		||||
bigNumberConfigs.configure();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import {Block, BlockAndLogStreamer} from 'ethereumjs-blockstream';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
@@ -19,7 +20,15 @@ import {AbiDecoder} from '../utils/abi_decoder';
 | 
			
		||||
import {constants} from '../utils/constants';
 | 
			
		||||
import {filterUtils} from '../utils/filter_utils';
 | 
			
		||||
import {intervalUtils} from '../utils/interval_utils';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
const CONTRACT_NAME_TO_NOT_FOUND_ERROR: {[contractName: string]: ZeroExError} = {
 | 
			
		||||
    ZRX: ZeroExError.ZRXContractDoesNotExist,
 | 
			
		||||
    EtherToken: ZeroExError.EtherTokenContractDoesNotExist,
 | 
			
		||||
    Token: ZeroExError.TokenContractDoesNotExist,
 | 
			
		||||
    TokenRegistry: ZeroExError.TokenRegistryContractDoesNotExist,
 | 
			
		||||
    TokenTransferProxy: ZeroExError.TokenTransferProxyContractDoesNotExist,
 | 
			
		||||
    Exchange: ZeroExError.ExchangeContractDoesNotExist,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export class ContractWrapper {
 | 
			
		||||
    protected _web3Wrapper: Web3Wrapper;
 | 
			
		||||
@@ -93,10 +102,24 @@ export class ContractWrapper {
 | 
			
		||||
    protected async _instantiateContractIfExistsAsync(
 | 
			
		||||
        artifact: Artifact, addressIfExists?: string,
 | 
			
		||||
    ): Promise<Web3.ContractInstance> {
 | 
			
		||||
        const web3ContractInstance = await this._web3Wrapper.getContractInstanceFromArtifactAsync(
 | 
			
		||||
            artifact, addressIfExists,
 | 
			
		||||
        let contractAddress: string;
 | 
			
		||||
        if (_.isUndefined(addressIfExists)) {
 | 
			
		||||
            const networkId = this._web3Wrapper.getNetworkId();
 | 
			
		||||
            if (_.isUndefined(artifact.networks[networkId])) {
 | 
			
		||||
                throw new Error(ZeroExError.ContractNotDeployedOnNetwork);
 | 
			
		||||
            }
 | 
			
		||||
            contractAddress = artifact.networks[networkId].address.toLowerCase();
 | 
			
		||||
        } else {
 | 
			
		||||
            contractAddress = addressIfExists;
 | 
			
		||||
        }
 | 
			
		||||
        const doesContractExist = await this._web3Wrapper.doesContractExistAtAddressAsync(contractAddress);
 | 
			
		||||
        if (!doesContractExist) {
 | 
			
		||||
            throw new Error(CONTRACT_NAME_TO_NOT_FOUND_ERROR[artifact.contract_name]);
 | 
			
		||||
        }
 | 
			
		||||
        const contractInstance = this._web3Wrapper.getContractInstance(
 | 
			
		||||
            artifact.abi, contractAddress,
 | 
			
		||||
        );
 | 
			
		||||
        return web3ContractInstance;
 | 
			
		||||
        return contractInstance;
 | 
			
		||||
    }
 | 
			
		||||
    protected _getContractAddress(artifact: Artifact, addressIfExists?: string): string {
 | 
			
		||||
        if (_.isUndefined(addressIfExists)) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
import {artifacts} from '../artifacts';
 | 
			
		||||
import {TransactionOpts, ZeroExError} from '../types';
 | 
			
		||||
import {assert} from '../utils/assert';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {ContractWrapper} from './contract_wrapper';
 | 
			
		||||
import {EtherTokenContract} from './generated/ether_token';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import {schemas} from '@0xproject/json-schemas';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
@@ -36,7 +37,6 @@ import {decorators} from '../utils/decorators';
 | 
			
		||||
import {ExchangeTransferSimulator} from '../utils/exchange_transfer_simulator';
 | 
			
		||||
import {OrderValidationUtils} from '../utils/order_validation_utils';
 | 
			
		||||
import {utils} from '../utils/utils';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {ContractWrapper} from './contract_wrapper';
 | 
			
		||||
import {ExchangeContract} from './generated/exchange';
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
import {artifacts} from '../artifacts';
 | 
			
		||||
import {Token, TokenMetadata, ZeroExError} from '../types';
 | 
			
		||||
import {assert} from '../utils/assert';
 | 
			
		||||
import {constants} from '../utils/constants';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {ContractWrapper} from './contract_wrapper';
 | 
			
		||||
import {TokenRegistryContract} from './generated/token_registry';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
import {artifacts} from '../artifacts';
 | 
			
		||||
import {ZeroExError} from '../types';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {ContractWrapper} from './contract_wrapper';
 | 
			
		||||
import {TokenTransferProxyContract} from './generated/token_transfer_proxy';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import {schemas} from '@0xproject/json-schemas';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
@@ -17,7 +18,6 @@ import {
 | 
			
		||||
import {AbiDecoder} from '../utils/abi_decoder';
 | 
			
		||||
import {assert} from '../utils/assert';
 | 
			
		||||
import {constants} from '../utils/constants';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {ContractWrapper} from './contract_wrapper';
 | 
			
		||||
import {TokenContract} from './generated/token';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
@@ -11,7 +12,6 @@ import {AbiDecoder} from '../utils/abi_decoder';
 | 
			
		||||
import {assert} from '../utils/assert';
 | 
			
		||||
import {intervalUtils} from '../utils/interval_utils';
 | 
			
		||||
import {utils} from '../utils/utils';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
const DEFAULT_EVENT_POLLING_INTERVAL_MS = 200;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import {schemas} from '@0xproject/json-schemas';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
 | 
			
		||||
import {ZeroEx} from '../0x';
 | 
			
		||||
@@ -31,7 +32,6 @@ import {assert} from '../utils/assert';
 | 
			
		||||
import {intervalUtils} from '../utils/interval_utils';
 | 
			
		||||
import {OrderStateUtils} from '../utils/order_state_utils';
 | 
			
		||||
import {utils} from '../utils/utils';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {EventWatcher} from './event_watcher';
 | 
			
		||||
import {ExpirationWatcher} from './expiration_watcher';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
import {assert as sharedAssert} from '@0xproject/assert';
 | 
			
		||||
import {Schema, SchemaValidator} from '@0xproject/json-schemas';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {ECSignature} from '../types';
 | 
			
		||||
import {signatureUtils} from '../utils/signature_utils';
 | 
			
		||||
import {Web3Wrapper} from '../web3_wrapper';
 | 
			
		||||
 | 
			
		||||
const HEX_REGEX = /^0x[0-9A-F]*$/i;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
@@ -12,7 +13,6 @@ import {
 | 
			
		||||
} from '../src';
 | 
			
		||||
import {EventWatcher} from '../src/order_watcher/event_watcher';
 | 
			
		||||
import {DoneCallback} from '../src/types';
 | 
			
		||||
import {Web3Wrapper} from '../src/web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {chaiSetup} from './utils/chai_setup';
 | 
			
		||||
import {constants} from './utils/constants';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
@@ -10,7 +11,6 @@ import {ExpirationWatcher} from '../src/order_watcher/expiration_watcher';
 | 
			
		||||
import {DoneCallback, Token} from '../src/types';
 | 
			
		||||
import {constants} from '../src/utils/constants';
 | 
			
		||||
import {utils} from '../src/utils/utils';
 | 
			
		||||
import {Web3Wrapper} from '../src/web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {BlockchainLifecycle} from './utils/blockchain_lifecycle';
 | 
			
		||||
import {chaiSetup} from './utils/chai_setup';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
@@ -19,7 +20,6 @@ import {
 | 
			
		||||
} from '../src';
 | 
			
		||||
import {OrderStateWatcher} from '../src/order_watcher/order_state_watcher';
 | 
			
		||||
import {DoneCallback} from '../src/types';
 | 
			
		||||
import {Web3Wrapper} from '../src/web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {BlockchainLifecycle} from './utils/blockchain_lifecycle';
 | 
			
		||||
import {chaiSetup} from './utils/chai_setup';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import 'mocha';
 | 
			
		||||
@@ -18,8 +20,6 @@ import {
 | 
			
		||||
    ZeroExError,
 | 
			
		||||
} from '../src';
 | 
			
		||||
import {BlockParamLiteral, DoneCallback} from '../src/types';
 | 
			
		||||
import {promisify} from '../src/utils/promisify';
 | 
			
		||||
import {Web3Wrapper} from '../src/web3_wrapper';
 | 
			
		||||
 | 
			
		||||
import {BlockchainLifecycle} from './utils/blockchain_lifecycle';
 | 
			
		||||
import {chaiSetup} from './utils/chai_setup';
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@
 | 
			
		||||
 * This file is auto-generated using abi-gen. Don't edit directly.
 | 
			
		||||
 * Templates can be found at https://github.com/0xProject/0x.js/tree/development/packages/abi-gen-templates.
 | 
			
		||||
 */
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {TxData, TxDataPayable} from '../../types';
 | 
			
		||||
import {classUtils} from '../../utils/class_utils';
 | 
			
		||||
import {promisify} from '../../utils/promisify';
 | 
			
		||||
 | 
			
		||||
import {BaseContract} from './base_contract';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "abi-gen-templates",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "version": "0.0.0",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "Handlebars templates to generate TS contract wrappers",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "abi-gen",
 | 
			
		||||
  "version": "0.0.0",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "Generate contract wrappers from ABI and handlebars templates",
 | 
			
		||||
  "main": "lib/index.js",
 | 
			
		||||
  "types": "lib/index.d.ts",
 | 
			
		||||
@@ -33,9 +33,9 @@
 | 
			
		||||
    "yargs": "^10.0.3"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/handlebars": "^4.0.36",
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "@types/glob": "^5.0.33",
 | 
			
		||||
    "@types/handlebars": "^4.0.36",
 | 
			
		||||
    "@types/mkdirp": "^0.5.1",
 | 
			
		||||
    "@types/node": "^8.0.53",
 | 
			
		||||
    "@types/yargs": "^8.0.2",
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,6 @@
 | 
			
		||||
  "include": [
 | 
			
		||||
    "./src/**/*",
 | 
			
		||||
    "./test/**/*",
 | 
			
		||||
    "../../node_modules/web3-typescript-typings/index.d.ts",
 | 
			
		||||
    "../../node_modules/web3-typescript-typings/index.d.ts"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
import {TxData} from '@0xproject/types';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
import * as yargs from 'yargs';
 | 
			
		||||
@@ -46,10 +48,10 @@ async function onMigrateCommand(argv: CliOptions): Promise<void> {
 | 
			
		||||
    await commands.compileAsync(compilerOpts);
 | 
			
		||||
 | 
			
		||||
    const defaults = {
 | 
			
		||||
        gasPrice: argv.gasPrice,
 | 
			
		||||
        gasPrice: new BigNumber(argv.gasPrice),
 | 
			
		||||
        from: argv.account,
 | 
			
		||||
    };
 | 
			
		||||
    const deployerOpts: DeployerOptions = {
 | 
			
		||||
    const deployerOpts = {
 | 
			
		||||
        artifactsDir: argv.artifactsDir,
 | 
			
		||||
        jsonrpcPort: argv.jsonrpcPort,
 | 
			
		||||
        networkId: networkIdIfExists,
 | 
			
		||||
@@ -72,7 +74,7 @@ async function onDeployCommand(argv: CliOptions): Promise<void> {
 | 
			
		||||
    await commands.compileAsync(compilerOpts);
 | 
			
		||||
 | 
			
		||||
    const defaults = {
 | 
			
		||||
        gasPrice: argv.gasPrice,
 | 
			
		||||
        gasPrice: new BigNumber(argv.gasPrice),
 | 
			
		||||
        from: argv.account,
 | 
			
		||||
    };
 | 
			
		||||
    const deployerOpts: DeployerOptions = {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
@@ -5,7 +6,6 @@ import * as Web3 from 'web3';
 | 
			
		||||
import {Deployer} from './../src/deployer';
 | 
			
		||||
import {constants} from './../src/utils/constants';
 | 
			
		||||
import {Token} from './../src/utils/types';
 | 
			
		||||
import {Web3Wrapper} from './../src/utils/web3_wrapper';
 | 
			
		||||
import {tokenInfo} from './config/token_info';
 | 
			
		||||
 | 
			
		||||
export const migrator = {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import * as ethUtil from 'ethereumjs-util';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,6 @@
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {TxData} from '@0xproject/types';
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
@@ -11,7 +13,6 @@ import {
 | 
			
		||||
    DeployerOptions,
 | 
			
		||||
} from './utils/types';
 | 
			
		||||
import {utils} from './utils/utils';
 | 
			
		||||
import {Web3Wrapper} from './utils/web3_wrapper';
 | 
			
		||||
 | 
			
		||||
// Gas added to gas estimate to make sure there is sufficient gas for deployment.
 | 
			
		||||
const EXTRA_GAS = 200000;
 | 
			
		||||
@@ -21,7 +22,7 @@ export class Deployer {
 | 
			
		||||
    private artifactsDir: string;
 | 
			
		||||
    private jsonrpcPort: number;
 | 
			
		||||
    private networkId: number;
 | 
			
		||||
    private defaults: Partial<Web3.TxData>;
 | 
			
		||||
    private defaults: Partial<TxData>;
 | 
			
		||||
 | 
			
		||||
    constructor(opts: DeployerOptions) {
 | 
			
		||||
        this.artifactsDir = opts.artifactsDir;
 | 
			
		||||
@@ -30,7 +31,7 @@ export class Deployer {
 | 
			
		||||
        const jsonrpcUrl = `http://localhost:${this.jsonrpcPort}`;
 | 
			
		||||
        const web3Provider = new Web3.providers.HttpProvider(jsonrpcUrl);
 | 
			
		||||
        this.defaults = opts.defaults;
 | 
			
		||||
        this.web3Wrapper = new Web3Wrapper(web3Provider, this.defaults);
 | 
			
		||||
        this.web3Wrapper = new Web3Wrapper(web3Provider, this.networkId, this.defaults);
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Loads contract artifact and deploys contract with given arguments.
 | 
			
		||||
@@ -171,7 +172,7 @@ export class Deployer {
 | 
			
		||||
        const block = await this.web3Wrapper.getBlockAsync('latest');
 | 
			
		||||
        let gas: number;
 | 
			
		||||
        try {
 | 
			
		||||
            const gasEstimate: number = await this.web3Wrapper.estimateGasAsync({data});
 | 
			
		||||
            const gasEstimate: number = await this.web3Wrapper.estimateGasAsync(data);
 | 
			
		||||
            gas = Math.min(gasEstimate + EXTRA_GAS, block.gasLimit);
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
            gas = block.gasLimit;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
import {schemas, SchemaValidator} from '@0xproject/json-schemas';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import * as fs from 'fs';
 | 
			
		||||
 | 
			
		||||
export const fsWrapper = {
 | 
			
		||||
    readdirAsync: promisify(fs.readdir),
 | 
			
		||||
    readFileAsync: promisify(fs.readFile),
 | 
			
		||||
    writeFileAsync: promisify(fs.writeFile),
 | 
			
		||||
    mkdirAsync: promisify(fs.mkdir),
 | 
			
		||||
    readdirAsync: promisify<string[]>(fs.readdir),
 | 
			
		||||
    readFileAsync: promisify<string>(fs.readFile),
 | 
			
		||||
    writeFileAsync: promisify<undefined>(fs.writeFile),
 | 
			
		||||
    mkdirAsync: promisify<undefined>(fs.mkdir),
 | 
			
		||||
    doesPathExistSync: fs.existsSync,
 | 
			
		||||
    removeFileAsync: promisify(fs.unlink),
 | 
			
		||||
    removeFileAsync: promisify<undefined>(fs.unlink),
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,14 @@
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {Web3Wrapper} from '@0xproject/web3-wrapper';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {Web3Wrapper} from './web3_wrapper';
 | 
			
		||||
 | 
			
		||||
export const network = {
 | 
			
		||||
    async getNetworkIdIfExistsAsync(port: number): Promise<number> {
 | 
			
		||||
        const url = `http://localhost:${port}`;
 | 
			
		||||
        const web3Provider = new Web3.providers.HttpProvider(url);
 | 
			
		||||
        const defaults = {};
 | 
			
		||||
        const web3Wrapper = new Web3Wrapper(web3Provider, defaults);
 | 
			
		||||
        const networkIdIfExists = await web3Wrapper.getNetworkIdIfExistsAsync();
 | 
			
		||||
        return networkIdIfExists;
 | 
			
		||||
        const web3 = new Web3(web3Provider);
 | 
			
		||||
        const networkId = _.parseInt(await promisify<string>(web3.version.getNetwork)());
 | 
			
		||||
        return networkId;
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import {TxData} from '@0xproject/types';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
export enum AbiType {
 | 
			
		||||
@@ -54,7 +55,7 @@ export interface DeployerOptions {
 | 
			
		||||
    artifactsDir: string;
 | 
			
		||||
    jsonrpcPort: number;
 | 
			
		||||
    networkId: number;
 | 
			
		||||
    defaults: Partial<Web3.TxData>;
 | 
			
		||||
    defaults: Partial<TxData>;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ContractSources {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,132 +0,0 @@
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {Contract} from './contract';
 | 
			
		||||
import {ZeroExError} from './types';
 | 
			
		||||
 | 
			
		||||
export class Web3Wrapper {
 | 
			
		||||
    private web3: Web3;
 | 
			
		||||
    private defaults: Partial<Web3.TxData>;
 | 
			
		||||
    private networkIdIfExists?: number;
 | 
			
		||||
    private jsonRpcRequestId: number;
 | 
			
		||||
    constructor(provider: Web3.Provider, defaults: Partial<Web3.TxData>) {
 | 
			
		||||
        this.web3 = new Web3();
 | 
			
		||||
        this.web3.setProvider(provider);
 | 
			
		||||
        this.defaults = defaults;
 | 
			
		||||
        this.jsonRpcRequestId = 0;
 | 
			
		||||
    }
 | 
			
		||||
    public setProvider(provider: Web3.Provider) {
 | 
			
		||||
        delete this.networkIdIfExists;
 | 
			
		||||
        this.web3.setProvider(provider);
 | 
			
		||||
    }
 | 
			
		||||
    public isAddress(address: string): boolean {
 | 
			
		||||
        return this.web3.isAddress(address);
 | 
			
		||||
    }
 | 
			
		||||
    public getContractFromAbi(abi: Web3.ContractAbi): Web3.Contract<Web3.ContractInstance> {
 | 
			
		||||
        const contract = this.web3.eth.contract(abi);
 | 
			
		||||
        return contract;
 | 
			
		||||
    }
 | 
			
		||||
    public async isSenderAddressAvailableAsync(senderAddress: string): Promise<boolean> {
 | 
			
		||||
        const addresses = await this.getAvailableAddressesAsync();
 | 
			
		||||
        return _.includes(addresses, senderAddress);
 | 
			
		||||
    }
 | 
			
		||||
    public async getNodeVersionAsync(): Promise<string> {
 | 
			
		||||
        const nodeVersion = await promisify(this.web3.version.getNode)();
 | 
			
		||||
        return nodeVersion;
 | 
			
		||||
    }
 | 
			
		||||
    public async getTransactionReceiptAsync(txHash: string): Promise<Web3.TransactionReceipt> {
 | 
			
		||||
        const transactionReceipt = await promisify(this.web3.eth.getTransactionReceipt)(txHash);
 | 
			
		||||
        return transactionReceipt;
 | 
			
		||||
    }
 | 
			
		||||
    public getCurrentProvider(): Web3.Provider {
 | 
			
		||||
        return this.web3.currentProvider;
 | 
			
		||||
    }
 | 
			
		||||
    public async getNetworkIdIfExistsAsync(): Promise<number|undefined> {
 | 
			
		||||
        if (!_.isUndefined(this.networkIdIfExists)) {
 | 
			
		||||
          return this.networkIdIfExists;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            const networkId = await this.getNetworkAsync();
 | 
			
		||||
            this.networkIdIfExists = Number(networkId);
 | 
			
		||||
            return this.networkIdIfExists;
 | 
			
		||||
        } catch (err) {
 | 
			
		||||
            return undefined;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    public toWei(ethAmount: BigNumber): BigNumber {
 | 
			
		||||
        const balanceWei = this.web3.toWei(ethAmount, 'ether');
 | 
			
		||||
        return balanceWei;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBalanceInWeiAsync(owner: string): Promise<BigNumber> {
 | 
			
		||||
        let balanceInWei = await promisify(this.web3.eth.getBalance)(owner);
 | 
			
		||||
        balanceInWei = new BigNumber(balanceInWei);
 | 
			
		||||
        return balanceInWei;
 | 
			
		||||
    }
 | 
			
		||||
    public async doesContractExistAtAddressAsync(address: string): Promise<boolean> {
 | 
			
		||||
        const code = await promisify(this.web3.eth.getCode)(address);
 | 
			
		||||
        // Regex matches 0x0, 0x00, 0x in order to accommodate poorly implemented clients
 | 
			
		||||
        const codeIsEmpty = /^0x0{0,40}$/i.test(code);
 | 
			
		||||
        return !codeIsEmpty;
 | 
			
		||||
    }
 | 
			
		||||
    public async signTransactionAsync(address: string, message: string): Promise<string> {
 | 
			
		||||
        const signData = await promisify(this.web3.eth.sign)(address, message);
 | 
			
		||||
        return signData;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBlockAsync(blockParam: string|Web3.BlockParam): Promise<Web3.BlockWithoutTransactionData> {
 | 
			
		||||
        const block = await promisify(this.web3.eth.getBlock)(blockParam);
 | 
			
		||||
        return block;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBlockTimestampAsync(blockParam: string|Web3.BlockParam): Promise<number> {
 | 
			
		||||
        const {timestamp} = await this.getBlockAsync(blockParam);
 | 
			
		||||
        return timestamp;
 | 
			
		||||
    }
 | 
			
		||||
    public async getAvailableAddressesAsync(): Promise<string[]> {
 | 
			
		||||
        const addresses: string[] = await promisify(this.web3.eth.getAccounts)();
 | 
			
		||||
        return addresses;
 | 
			
		||||
    }
 | 
			
		||||
    public async getLogsAsync(filter: Web3.FilterObject): Promise<Web3.LogEntry[]> {
 | 
			
		||||
        let fromBlock = filter.fromBlock;
 | 
			
		||||
        if (_.isNumber(fromBlock)) {
 | 
			
		||||
            fromBlock = this.web3.toHex(fromBlock);
 | 
			
		||||
        }
 | 
			
		||||
        let toBlock = filter.toBlock;
 | 
			
		||||
        if (_.isNumber(toBlock)) {
 | 
			
		||||
            toBlock = this.web3.toHex(toBlock);
 | 
			
		||||
        }
 | 
			
		||||
        const serializedFilter = {
 | 
			
		||||
            ...filter,
 | 
			
		||||
            fromBlock,
 | 
			
		||||
            toBlock,
 | 
			
		||||
        };
 | 
			
		||||
        const payload = {
 | 
			
		||||
            jsonrpc: '2.0',
 | 
			
		||||
            id: this.jsonRpcRequestId++,
 | 
			
		||||
            method: 'eth_getLogs',
 | 
			
		||||
            params: [serializedFilter],
 | 
			
		||||
        };
 | 
			
		||||
        const logs = await this.sendRawPayloadAsync(payload);
 | 
			
		||||
        return logs;
 | 
			
		||||
    }
 | 
			
		||||
    public async estimateGasAsync(callData: Web3.CallData): Promise<number> {
 | 
			
		||||
        const gasEstimate = await promisify(this.web3.eth.estimateGas)(callData);
 | 
			
		||||
        return gasEstimate;
 | 
			
		||||
    }
 | 
			
		||||
    private getContractInstance<A extends Web3.ContractInstance>(abi: Web3.ContractAbi, address: string): A {
 | 
			
		||||
        const web3ContractInstance = this.web3.eth.contract(abi).at(address);
 | 
			
		||||
        const contractInstance = new Contract(web3ContractInstance, this.defaults) as any as A;
 | 
			
		||||
        return contractInstance;
 | 
			
		||||
    }
 | 
			
		||||
    private async getNetworkAsync(): Promise<number> {
 | 
			
		||||
        const networkId = await promisify(this.web3.version.getNetwork)();
 | 
			
		||||
        return networkId;
 | 
			
		||||
    }
 | 
			
		||||
    private async sendRawPayloadAsync(payload: Web3.JSONRPCRequestPayload): Promise<any> {
 | 
			
		||||
        const sendAsync = this.web3.currentProvider.sendAsync.bind(this.web3.currentProvider);
 | 
			
		||||
        const response = await promisify(sendAsync)(payload);
 | 
			
		||||
        const result = response.result;
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -19,7 +19,7 @@ const compilerOpts: CompilerOptions = {
 | 
			
		||||
    optimizerEnabled: constants.optimizerEnabled,
 | 
			
		||||
};
 | 
			
		||||
const compiler = new Compiler(compilerOpts);
 | 
			
		||||
const deployerOpts: DeployerOptions = {
 | 
			
		||||
const deployerOpts = {
 | 
			
		||||
    artifactsDir,
 | 
			
		||||
    networkId: constants.networkId,
 | 
			
		||||
    jsonrpcPort: constants.jsonrpcPort,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,10 @@
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
 | 
			
		||||
export const constants = {
 | 
			
		||||
    networkId: 0,
 | 
			
		||||
    jsonrpcPort: 8545,
 | 
			
		||||
    optimizerEnabled: 0,
 | 
			
		||||
    gasPrice: '20000000000',
 | 
			
		||||
    gasPrice: new BigNumber(20000000000),
 | 
			
		||||
    timeoutMs: 12000,
 | 
			
		||||
    zrxTokenAddress: '0xe41d2489571d322189246dafa5ebde1f4699f498',
 | 
			
		||||
    tokenTransferProxyAddress: '0x8da0d80f5007ef1e431dd2127178d224e32c2ef4',
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								packages/contracts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								packages/contracts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -27,11 +27,6 @@ declare module 'solc' {
 | 
			
		||||
    export function setupMethods(solcBin: any): any;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare module 'es6-promisify' {
 | 
			
		||||
    function promisify(original: any, settings?: any): ((...arg: any[]) => Promise<any>);
 | 
			
		||||
    export = promisify;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
declare module 'web3-eth-abi' {
 | 
			
		||||
    export function encodeParameters(typesArray: string[], parameters: any[]): string;
 | 
			
		||||
}
 | 
			
		||||
@@ -39,4 +34,3 @@ declare module 'web3-eth-abi' {
 | 
			
		||||
// Truffle injects the following into the global scope
 | 
			
		||||
declare var artifacts: any;
 | 
			
		||||
declare var contract: any;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
    "clean": "rm -rf ./lib",
 | 
			
		||||
    "migrate:truffle": "npm run build; truffle migrate",
 | 
			
		||||
    "migrate": "npm run build; node lib/deploy/cli.js migrate",
 | 
			
		||||
    "lint": "tslint --project . 'migrations/*.ts' 'test/**/*.ts' 'util/*.ts' 'deploy/**/*.ts'",
 | 
			
		||||
    "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'",
 | 
			
		||||
    "test:deployer": "npm run build; mocha lib/deploy/test/*_test.js"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
@@ -28,6 +28,7 @@
 | 
			
		||||
  "homepage": "https://github.com/0xProject/0x.js/packages/contracts/README.md",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "@0xproject/types": "^0.0.1",
 | 
			
		||||
    "@types/bluebird": "^3.5.3",
 | 
			
		||||
    "@types/isomorphic-fetch": "^0.0.34",
 | 
			
		||||
    "@types/lodash": "^4.14.86",
 | 
			
		||||
@@ -53,11 +54,12 @@
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "0x.js": "^0.22.6",
 | 
			
		||||
    "@0xproject/web3-wrapper": "^0.0.1",
 | 
			
		||||
    "@0xproject/json-schemas": "^0.6.9",
 | 
			
		||||
    "@0xproject/utils": "^0.0.1",
 | 
			
		||||
    "bignumber.js": "~4.1.0",
 | 
			
		||||
    "bluebird": "^3.5.0",
 | 
			
		||||
    "bn.js": "^4.11.8",
 | 
			
		||||
    "es6-promisify": "^5.0.0",
 | 
			
		||||
    "ethereumjs-abi": "^0.6.4",
 | 
			
		||||
    "ethereumjs-util": "^5.1.1",
 | 
			
		||||
    "isomorphic-fetch": "^2.2.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
import {ZeroEx, ZeroExError} from '0x.js';
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import Web3 = require('web3');
 | 
			
		||||
 | 
			
		||||
import {Artifacts} from '../../util/artifacts';
 | 
			
		||||
@@ -30,9 +30,9 @@ contract('EtherToken', (accounts: string[]) => {
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const sendTransactionAsync = promisify(web3.eth.sendTransaction);
 | 
			
		||||
    const sendTransactionAsync = promisify<string>(web3.eth.sendTransaction);
 | 
			
		||||
    const getEthBalanceAsync = async (owner: string) => {
 | 
			
		||||
        const balanceStr = await promisify(web3.eth.getBalance)(owner);
 | 
			
		||||
        const balanceStr = await promisify<string>(web3.eth.getBalance)(owner);
 | 
			
		||||
        const balance = new BigNumber(balanceStr);
 | 
			
		||||
        return balance;
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import Web3 = require('web3');
 | 
			
		||||
 | 
			
		||||
import * as multiSigWalletJSON from '../../build/contracts/MultiSigWalletWithTimeLock.json';
 | 
			
		||||
@@ -64,8 +64,8 @@ contract('MultiSigWalletWithTimeLock', (accounts: string[]) => {
 | 
			
		||||
        it('should set confirmation time with enough confirmations', async () => {
 | 
			
		||||
            const res = await multiSig.confirmTransaction(txId, {from: owners[1]});
 | 
			
		||||
            expect(res.logs).to.have.length(2);
 | 
			
		||||
            const blockNum = await promisify(web3.eth.getBlockNumber)();
 | 
			
		||||
            const blockInfo = await promisify(web3.eth.getBlock)(blockNum);
 | 
			
		||||
            const blockNum = await promisify<number>(web3.eth.getBlockNumber)();
 | 
			
		||||
            const blockInfo = await promisify<Web3.BlockWithoutTransactionData>(web3.eth.getBlock)(blockNum);
 | 
			
		||||
            const timestamp = new BigNumber(blockInfo.timestamp);
 | 
			
		||||
            const confirmationTimeBigNum = new BigNumber(await multiSig.confirmationTimes.call(txId));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import ethUtil = require('ethereumjs-util');
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import Web3 = require('web3');
 | 
			
		||||
@@ -33,7 +33,7 @@ export class Order {
 | 
			
		||||
    }
 | 
			
		||||
    public async signAsync() {
 | 
			
		||||
        const orderHash = this.getOrderHash();
 | 
			
		||||
        const signature = await promisify(web3.eth.sign)(this.params.maker, orderHash);
 | 
			
		||||
        const signature = await promisify<string>(web3.eth.sign)(this.params.maker, orderHash);
 | 
			
		||||
        const {v, r, s} = ethUtil.fromRpcSig(signature);
 | 
			
		||||
        this.params = _.assign(this.params, {
 | 
			
		||||
            orderHashHex: orderHash,
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
  "main": "lib/src/index.js",
 | 
			
		||||
  "types": "lib/src/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "lint": "tslint --project . src/*.ts test/*.ts",
 | 
			
		||||
    "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'",
 | 
			
		||||
    "test": "run-s clean build run_mocha",
 | 
			
		||||
    "test:circleci": "yarn test",
 | 
			
		||||
    "run_mocha": "mocha lib/test/**/*_test.js",
 | 
			
		||||
@@ -23,12 +23,12 @@
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://github.com/0xProject/0x.js/packages/json-schemas/README.md",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "es6-promisify": "^5.0.0",
 | 
			
		||||
    "jsonschema": "^1.2.0",
 | 
			
		||||
    "lodash.values": "^4.3.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "@0xproject/utils": "^0.0.1",
 | 
			
		||||
    "@types/lodash.foreach": "^4.5.3",
 | 
			
		||||
    "@types/lodash.values": "^4.3.3",
 | 
			
		||||
    "@types/mocha": "^2.2.42",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								packages/json-schemas/src/globals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								packages/json-schemas/src/globals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,7 +1 @@
 | 
			
		||||
declare module 'dirty-chai';
 | 
			
		||||
 | 
			
		||||
// es6-promisify declarations
 | 
			
		||||
declare function promisify(original: any, settings?: any): ((...arg: any[]) => Promise<any>);
 | 
			
		||||
declare module 'es6-promisify' {
 | 
			
		||||
    export = promisify;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as chai from 'chai';
 | 
			
		||||
import * as dirtyChai from 'dirty-chai';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import forEach = require('lodash.foreach');
 | 
			
		||||
import 'mocha';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@0xproject/monorepo-scripts",
 | 
			
		||||
  "version": "0.0.0",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "description": "Helper scripts for the monorepo",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								packages/types/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								packages/types/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
Web3 wrapper
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
Wrapped version of web3 with nicer interface to be used across 0x projects and packages
 | 
			
		||||
 | 
			
		||||
## Install
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
yarn add @0xproject/web3-wrapper
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										32
									
								
								packages/types/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								packages/types/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@0xproject/types",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "0x types",
 | 
			
		||||
  "main": "lib/index.js",
 | 
			
		||||
  "types": "lib/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "tsc",
 | 
			
		||||
    "clean": "shx rm -rf lib",
 | 
			
		||||
    "lint": "tslint --project . 'src/**/*.ts'"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "Apache-2.0",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js.git"
 | 
			
		||||
  },
 | 
			
		||||
  "bugs": {
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js/issues"
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://github.com/0xProject/0x.js/packages/types/README.md",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "bignumber.js": "^5.0.0",
 | 
			
		||||
    "shx": "^0.2.2",
 | 
			
		||||
    "tslint": "5.8.0",
 | 
			
		||||
    "typescript": "~2.6.1"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "bignumber.js": "~4.1.0",
 | 
			
		||||
    "web3": "^0.20.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								packages/types/src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								packages/types/src/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
import {BigNumber} from 'bignumber.js';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
export interface TxData {
 | 
			
		||||
    from?: string;
 | 
			
		||||
    gas?: number;
 | 
			
		||||
    gasPrice?: BigNumber;
 | 
			
		||||
    nonce?: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface TransactionReceipt {
 | 
			
		||||
    blockHash: string;
 | 
			
		||||
    blockNumber: number;
 | 
			
		||||
    transactionHash: string;
 | 
			
		||||
    transactionIndex: number;
 | 
			
		||||
    from: string;
 | 
			
		||||
    to: string;
 | 
			
		||||
    status: null|0|1;
 | 
			
		||||
    cumulativeGasUsed: number;
 | 
			
		||||
    gasUsed: number;
 | 
			
		||||
    contractAddress: string|null;
 | 
			
		||||
    logs: Web3.LogEntry[];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								packages/types/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								packages/types/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "module": "commonjs",
 | 
			
		||||
    "target": "es5",
 | 
			
		||||
    "lib": [ "es2017", "dom"],
 | 
			
		||||
    "outDir": "lib",
 | 
			
		||||
    "sourceMap": true,
 | 
			
		||||
    "declaration": true,
 | 
			
		||||
    "noImplicitAny": true,
 | 
			
		||||
    "strictNullChecks": true
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "./src/**/*",
 | 
			
		||||
    "../../node_modules/web3-typescript-typings/index.d.ts"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								packages/types/tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								packages/types/tslint.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": [
 | 
			
		||||
    "@0xproject/tslint-config"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								packages/utils/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								packages/utils/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
utils
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
Utils to be shared across 0x projects and packages
 | 
			
		||||
 | 
			
		||||
## Install
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
yarn add @0xproject/utils
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										33
									
								
								packages/utils/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								packages/utils/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@0xproject/utils",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "0x TS utils",
 | 
			
		||||
  "main": "lib/index.js",
 | 
			
		||||
  "types": "lib/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "tsc",
 | 
			
		||||
    "clean": "shx rm -rf lib",
 | 
			
		||||
    "lint": "tslint --project . 'src/**/*.ts'"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "Apache-2.0",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js.git"
 | 
			
		||||
  },
 | 
			
		||||
  "bugs": {
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js/issues"
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://github.com/0xProject/0x.js/packages/utils/README.md",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "@types/lodash": "^4.14.86",
 | 
			
		||||
    "npm-run-all": "^4.1.2",
 | 
			
		||||
    "shx": "^0.2.2",
 | 
			
		||||
    "tslint": "5.8.0",
 | 
			
		||||
    "typescript": "~2.6.1"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "bignumber.js": "~4.1.0",
 | 
			
		||||
    "lodash": "^4.17.4"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								packages/utils/src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packages/utils/src/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
export {promisify} from './promisify';
 | 
			
		||||
							
								
								
									
										15
									
								
								packages/utils/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								packages/utils/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "module": "commonjs",
 | 
			
		||||
    "target": "es5",
 | 
			
		||||
    "lib": [ "es2017", "dom"],
 | 
			
		||||
    "outDir": "lib",
 | 
			
		||||
    "sourceMap": true,
 | 
			
		||||
    "declaration": true,
 | 
			
		||||
    "noImplicitAny": true,
 | 
			
		||||
    "strictNullChecks": true
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "./src/**/*"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								packages/utils/tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								packages/utils/tslint.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": [
 | 
			
		||||
    "@0xproject/tslint-config"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								packages/web3-wrapper/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								packages/web3-wrapper/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
Web3 wrapper
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
Wrapped version of web3 with nicer interface to be used across 0x projects and packages
 | 
			
		||||
 | 
			
		||||
## Install
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
yarn add @0xproject/web3-wrapper
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										37
									
								
								packages/web3-wrapper/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								packages/web3-wrapper/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@0xproject/web3-wrapper",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "Wraps around web3 and gives a nicer interface",
 | 
			
		||||
  "main": "lib/index.js",
 | 
			
		||||
  "types": "lib/index.d.ts",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "tsc",
 | 
			
		||||
    "clean": "shx rm -rf lib",
 | 
			
		||||
    "lint": "tslint --project . 'src/**/*.ts'"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "Apache-2.0",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js.git"
 | 
			
		||||
  },
 | 
			
		||||
  "bugs": {
 | 
			
		||||
    "url": "https://github.com/0xProject/0x.js/issues"
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://github.com/0xProject/0x.js/packages/web3-wrapper/README.md",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@0xproject/tslint-config": "^0.2.0",
 | 
			
		||||
    "@types/lodash": "^4.14.86",
 | 
			
		||||
    "npm-run-all": "^4.1.2",
 | 
			
		||||
    "shx": "^0.2.2",
 | 
			
		||||
    "tslint": "5.8.0",
 | 
			
		||||
    "typescript": "~2.6.1",
 | 
			
		||||
    "web3-typescript-typings": "^0.7.2"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@0xproject/utils": "^0.0.1",
 | 
			
		||||
    "@0xproject/types": "^0.0.1",
 | 
			
		||||
    "bignumber.js": "~4.1.0",
 | 
			
		||||
    "lodash": "^4.17.4",
 | 
			
		||||
    "web3": "^0.20.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
import {TransactionReceipt, TxData} from '@0xproject/types';
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
import {Artifact, ArtifactContractName, TransactionReceipt, TxData, ZeroExError} from './types';
 | 
			
		||||
import {promisify} from './utils/promisify';
 | 
			
		||||
 | 
			
		||||
interface RawLogEntry {
 | 
			
		||||
    logIndex: string|null;
 | 
			
		||||
    transactionIndex: string|null;
 | 
			
		||||
@@ -16,15 +15,6 @@ interface RawLogEntry {
 | 
			
		||||
    topics: string[];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const CONTRACT_NAME_TO_NOT_FOUND_ERROR: {[contractName: string]: ZeroExError} = {
 | 
			
		||||
    ZRX: ZeroExError.ZRXContractDoesNotExist,
 | 
			
		||||
    EtherToken: ZeroExError.EtherTokenContractDoesNotExist,
 | 
			
		||||
    Token: ZeroExError.TokenContractDoesNotExist,
 | 
			
		||||
    TokenRegistry: ZeroExError.TokenRegistryContractDoesNotExist,
 | 
			
		||||
    TokenTransferProxy: ZeroExError.TokenTransferProxyContractDoesNotExist,
 | 
			
		||||
    Exchange: ZeroExError.ExchangeContractDoesNotExist,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export class Web3Wrapper {
 | 
			
		||||
    private web3: Web3;
 | 
			
		||||
    private networkId: number;
 | 
			
		||||
@@ -74,37 +64,22 @@ export class Web3Wrapper {
 | 
			
		||||
    public getNetworkId(): number {
 | 
			
		||||
        return this.networkId;
 | 
			
		||||
    }
 | 
			
		||||
    public async getContractInstanceFromArtifactAsync(
 | 
			
		||||
        artifact: Artifact, address?: string,
 | 
			
		||||
    ): Promise<Web3.ContractInstance> {
 | 
			
		||||
        let contractAddress: string;
 | 
			
		||||
        if (_.isUndefined(address)) {
 | 
			
		||||
            const networkId = this.getNetworkId();
 | 
			
		||||
            if (_.isUndefined(artifact.networks[networkId])) {
 | 
			
		||||
                throw new Error(ZeroExError.ContractNotDeployedOnNetwork);
 | 
			
		||||
            }
 | 
			
		||||
            contractAddress = artifact.networks[networkId].address.toLowerCase();
 | 
			
		||||
        } else {
 | 
			
		||||
            contractAddress = address;
 | 
			
		||||
        }
 | 
			
		||||
        const doesContractExist = await this.doesContractExistAtAddressAsync(contractAddress);
 | 
			
		||||
        if (!doesContractExist) {
 | 
			
		||||
            throw new Error(CONTRACT_NAME_TO_NOT_FOUND_ERROR[artifact.contract_name]);
 | 
			
		||||
        }
 | 
			
		||||
        const contractInstance = this.getContractInstance(
 | 
			
		||||
            artifact.abi, contractAddress,
 | 
			
		||||
        );
 | 
			
		||||
        return contractInstance;
 | 
			
		||||
    }
 | 
			
		||||
    public toWei(ethAmount: BigNumber): BigNumber {
 | 
			
		||||
        const balanceWei = this.web3.toWei(ethAmount, 'ether');
 | 
			
		||||
        return balanceWei;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBalanceInWeiAsync(owner: string): Promise<BigNumber> {
 | 
			
		||||
        let balanceInWei = await promisify<BigNumber>(this.web3.eth.getBalance)(owner);
 | 
			
		||||
        // Rewrap in a new BigNumber
 | 
			
		||||
        balanceInWei = new BigNumber(balanceInWei);
 | 
			
		||||
        return balanceInWei;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBalanceInEthAsync(owner: string): Promise<BigNumber> {
 | 
			
		||||
        const balanceInWei = await this.getBalanceInWeiAsync(owner);
 | 
			
		||||
        const balanceEthOldBigNumber = this.web3.fromWei(balanceInWei, 'ether');
 | 
			
		||||
        const balanceEth = new BigNumber(balanceEthOldBigNumber);
 | 
			
		||||
        return balanceEth;
 | 
			
		||||
    }
 | 
			
		||||
    public async doesContractExistAtAddressAsync(address: string): Promise<boolean> {
 | 
			
		||||
        const code = await promisify<string>(this.web3.eth.getCode)(address);
 | 
			
		||||
        // Regex matches 0x0, 0x00, 0x in order to accommodate poorly implemented clients
 | 
			
		||||
@@ -155,13 +130,17 @@ export class Web3Wrapper {
 | 
			
		||||
        const formattedLogs = _.map(rawLogs, this.formatLog.bind(this));
 | 
			
		||||
        return formattedLogs;
 | 
			
		||||
    }
 | 
			
		||||
    private getContractInstance(abi: Web3.ContractAbi, address: string): Web3.ContractInstance {
 | 
			
		||||
        const web3ContractInstance = this.web3.eth.contract(abi).at(address);
 | 
			
		||||
    public getContractFromAbi(abi: Web3.ContractAbi): Web3.Contract<any> {
 | 
			
		||||
        const web3Contract = this.web3.eth.contract(abi);
 | 
			
		||||
        return web3Contract;
 | 
			
		||||
    }
 | 
			
		||||
    public getContractInstance(abi: Web3.ContractAbi, address: string): Web3.ContractInstance {
 | 
			
		||||
        const web3ContractInstance = this.getContractFromAbi(abi).at(address);
 | 
			
		||||
        return web3ContractInstance;
 | 
			
		||||
    }
 | 
			
		||||
    private async getNetworkAsync(): Promise<number> {
 | 
			
		||||
        const networkId = await promisify<number>(this.web3.version.getNetwork)();
 | 
			
		||||
        return networkId;
 | 
			
		||||
    public async estimateGasAsync(data: string): Promise<number> {
 | 
			
		||||
        const gas = await promisify<number>(this.web3.eth.estimateGas)({data});
 | 
			
		||||
        return gas;
 | 
			
		||||
    }
 | 
			
		||||
    private async sendRawPayloadAsync<A>(payload: Web3.JSONRPCRequestPayload): Promise<A> {
 | 
			
		||||
        const sendAsync = this.web3.currentProvider.sendAsync.bind(this.web3.currentProvider);
 | 
			
		||||
							
								
								
									
										16
									
								
								packages/web3-wrapper/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								packages/web3-wrapper/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "module": "commonjs",
 | 
			
		||||
    "target": "es5",
 | 
			
		||||
    "lib": [ "es2017", "dom"],
 | 
			
		||||
    "outDir": "lib",
 | 
			
		||||
    "sourceMap": true,
 | 
			
		||||
    "declaration": true,
 | 
			
		||||
    "noImplicitAny": true,
 | 
			
		||||
    "strictNullChecks": true
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "./src/**/*",
 | 
			
		||||
    "../../node_modules/web3-typescript-typings/index.d.ts"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								packages/web3-wrapper/tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								packages/web3-wrapper/tslint.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": [
 | 
			
		||||
    "@0xproject/tslint-config"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -27,7 +27,6 @@
 | 
			
		||||
    "dateformat": "^2.0.0",
 | 
			
		||||
    "deep-equal": "^1.0.1",
 | 
			
		||||
    "dharma-loan-frame": "^0.0.12",
 | 
			
		||||
    "es6-promisify": "^5.0.0",
 | 
			
		||||
    "ethereum-address": "^0.0.4",
 | 
			
		||||
    "ethereumjs-tx": "^1.3.3",
 | 
			
		||||
    "ethereumjs-util": "^5.1.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -16,9 +16,9 @@ import {
 | 
			
		||||
    ZeroEx,
 | 
			
		||||
    ZeroExError,
 | 
			
		||||
} from '0x.js';
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import compareVersions = require('compare-versions');
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import ethUtil = require('ethereumjs-util');
 | 
			
		||||
import findVersions = require('find-versions');
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
@@ -65,7 +65,7 @@ export class Blockchain {
 | 
			
		||||
    public nodeVersion: string;
 | 
			
		||||
    private zeroEx: ZeroEx;
 | 
			
		||||
    private dispatcher: Dispatcher;
 | 
			
		||||
    private web3Wrapper: Web3Wrapper;
 | 
			
		||||
    private web3Wrapper?: Web3Wrapper;
 | 
			
		||||
    private exchangeAddress: string;
 | 
			
		||||
    private tokenTransferProxy: ContractInstance;
 | 
			
		||||
    private tokenRegistry: ContractInstance;
 | 
			
		||||
@@ -624,7 +624,7 @@ export class Blockchain {
 | 
			
		||||
        let networkId: number;
 | 
			
		||||
        if (!_.isUndefined(injectedWeb3)) {
 | 
			
		||||
            try {
 | 
			
		||||
                networkId = _.parseInt(await promisify(injectedWeb3.version.getNetwork)());
 | 
			
		||||
                networkId = _.parseInt(await promisify<string>(injectedWeb3.version.getNetwork)());
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                // Ignore error and proceed with networkId undefined
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ interface LifeCycleRaisedButtonProps {
 | 
			
		||||
    labelReady: React.ReactNode|string;
 | 
			
		||||
    labelLoading: React.ReactNode|string;
 | 
			
		||||
    labelComplete: React.ReactNode|string;
 | 
			
		||||
    onClickAsyncFn: () => boolean;
 | 
			
		||||
    onClickAsyncFn: () => Promise<boolean>;
 | 
			
		||||
    backgroundColor?: string;
 | 
			
		||||
    labelColor?: string;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								packages/website/ts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								packages/website/ts/globals.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,5 @@
 | 
			
		||||
declare module 'react-tooltip';
 | 
			
		||||
declare module 'react-router-hash-link';
 | 
			
		||||
declare module 'es6-promisify';
 | 
			
		||||
declare module 'truffle-contract';
 | 
			
		||||
declare module 'ethereumjs-util';
 | 
			
		||||
declare module 'keccak';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import {JSONRPCPayload} from 'ts/types';
 | 
			
		||||
import RpcSubprovider = require('web3-provider-engine/subproviders/rpc');
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
import BigNumber from 'bignumber.js';
 | 
			
		||||
import promisify = require('es6-promisify');
 | 
			
		||||
import * as _ from 'lodash';
 | 
			
		||||
import {Dispatcher} from 'ts/redux/dispatcher';
 | 
			
		||||
import Web3 = require('web3');
 | 
			
		||||
import * as Web3 from 'web3';
 | 
			
		||||
 | 
			
		||||
export class Web3Wrapper {
 | 
			
		||||
    private dispatcher: Dispatcher;
 | 
			
		||||
@@ -28,7 +28,7 @@ export class Web3Wrapper {
 | 
			
		||||
        return this.web3.isAddress(address);
 | 
			
		||||
    }
 | 
			
		||||
    public async getAccountsAsync(): Promise<string[]> {
 | 
			
		||||
        const addresses = await promisify(this.web3.eth.getAccounts)();
 | 
			
		||||
        const addresses = await promisify<string[]>(this.web3.eth.getAccounts)();
 | 
			
		||||
        return addresses;
 | 
			
		||||
    }
 | 
			
		||||
    public async getFirstAccountIfExistsAsync() {
 | 
			
		||||
@@ -38,8 +38,8 @@ export class Web3Wrapper {
 | 
			
		||||
        }
 | 
			
		||||
        return (addresses)[0];
 | 
			
		||||
    }
 | 
			
		||||
    public async getNodeVersionAsync() {
 | 
			
		||||
        const nodeVersion = await promisify(this.web3.version.getNode)();
 | 
			
		||||
    public async getNodeVersionAsync(): Promise<string> {
 | 
			
		||||
        const nodeVersion = await promisify<string>(this.web3.version.getNode)();
 | 
			
		||||
        return nodeVersion;
 | 
			
		||||
    }
 | 
			
		||||
    public getProviderObj() {
 | 
			
		||||
@@ -54,24 +54,24 @@ export class Web3Wrapper {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    public async getBalanceInEthAsync(owner: string): Promise<BigNumber> {
 | 
			
		||||
        const balanceInWei: BigNumber = await promisify(this.web3.eth.getBalance)(owner);
 | 
			
		||||
        const balanceInWei: BigNumber = await promisify<BigNumber>(this.web3.eth.getBalance)(owner);
 | 
			
		||||
        const balanceEthOldBigNumber = this.web3.fromWei(balanceInWei, 'ether');
 | 
			
		||||
        const balanceEth = new BigNumber(balanceEthOldBigNumber);
 | 
			
		||||
        return balanceEth;
 | 
			
		||||
    }
 | 
			
		||||
    public async doesContractExistAtAddressAsync(address: string): Promise<boolean> {
 | 
			
		||||
        const code = await promisify(this.web3.eth.getCode)(address);
 | 
			
		||||
        const code = await promisify<string>(this.web3.eth.getCode)(address);
 | 
			
		||||
        // Regex matches 0x0, 0x00, 0x in order to accomodate poorly implemented clients
 | 
			
		||||
        const zeroHexAddressRegex = /^0[xX][0]*$/;
 | 
			
		||||
        const didFindCode = _.isNull(code.match(zeroHexAddressRegex));
 | 
			
		||||
        return didFindCode;
 | 
			
		||||
    }
 | 
			
		||||
    public async signTransactionAsync(address: string, message: string): Promise<string> {
 | 
			
		||||
        const signData = await promisify(this.web3.eth.sign)(address, message);
 | 
			
		||||
        const signData = await promisify<string>(this.web3.eth.sign)(address, message);
 | 
			
		||||
        return signData;
 | 
			
		||||
    }
 | 
			
		||||
    public async getBlockTimestampAsync(blockHash: string): Promise<number> {
 | 
			
		||||
        const {timestamp} = await promisify(this.web3.eth.getBlock)(blockHash);
 | 
			
		||||
        const {timestamp} = await promisify<Web3.BlockWithoutTransactionData>(this.web3.eth.getBlock)(blockHash);
 | 
			
		||||
        return timestamp;
 | 
			
		||||
    }
 | 
			
		||||
    public destroy() {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
const execAsync = require('async-child-process').execAsync;
 | 
			
		||||
const semverSort = require('semver-sort');
 | 
			
		||||
const promisify = require('es6-promisify');
 | 
			
		||||
import {promisify} from '@0xproject/utils';
 | 
			
		||||
const publishRelease = require('publish-release');
 | 
			
		||||
 | 
			
		||||
const publishReleaseAsync = promisify(publishRelease);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							@@ -102,6 +102,10 @@
 | 
			
		||||
  version "4.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/history/-/history-4.6.2.tgz#12cfaba693ba20f114ed5765467ff25fdf67ddb0"
 | 
			
		||||
 | 
			
		||||
"@types/isomorphic-fetch@^0.0.34":
 | 
			
		||||
  version "0.0.34"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz#3c3483e606c041378438e951464f00e4e60706d6"
 | 
			
		||||
 | 
			
		||||
"@types/jsonschema@^1.1.1":
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/jsonschema/-/jsonschema-1.1.1.tgz#08703dfe074010e8e829123111594af731f57b1a"
 | 
			
		||||
@@ -163,7 +167,7 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    moment "*"
 | 
			
		||||
 | 
			
		||||
"@types/node@*", "@types/node@^8.0.1":
 | 
			
		||||
"@types/node@*":
 | 
			
		||||
  version "8.0.51"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb"
 | 
			
		||||
 | 
			
		||||
@@ -1277,6 +1281,10 @@ bignumber.js@^4.0.2, bignumber.js@^4.1.0, bignumber.js@~4.1.0:
 | 
			
		||||
  version "4.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1"
 | 
			
		||||
 | 
			
		||||
bignumber.js@^5.0.0:
 | 
			
		||||
  version "5.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-5.0.0.tgz#fbce63f09776b3000a83185badcde525daf34833"
 | 
			
		||||
 | 
			
		||||
"bignumber.js@git+https://github.com/debris/bignumber.js#master":
 | 
			
		||||
  version "2.0.7"
 | 
			
		||||
  resolved "git+https://github.com/debris/bignumber.js#c7a38de919ed75e6fb6ba38051986e294b328df9"
 | 
			
		||||
@@ -5617,7 +5625,7 @@ normalize-url@^1.4.0:
 | 
			
		||||
    query-string "^4.1.0"
 | 
			
		||||
    sort-keys "^1.0.0"
 | 
			
		||||
 | 
			
		||||
npm-run-all@^4.1.2:
 | 
			
		||||
npm-run-all@^4.1.1, npm-run-all@^4.1.2:
 | 
			
		||||
  version "4.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.2.tgz#90d62d078792d20669139e718621186656cea056"
 | 
			
		||||
  dependencies:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user