update order-watcher to use new artifacts and abi-gen wrappers packages
This commit is contained in:
@@ -12,28 +12,18 @@
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "yarn pre_build && tsc -b",
|
||||
"build": "yarn tsc -b",
|
||||
"build:ci": "yarn build",
|
||||
"pre_build": "run-s update_artifacts copy_artifacts generate_contract_wrappers",
|
||||
"lint": "tslint --project . --exclude **/src/generated_contract_wrappers/**/*",
|
||||
"generate_contract_wrappers": "abi-gen --abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/generated_contract_wrappers --backend ethers",
|
||||
"lint": "tslint --project .",
|
||||
"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",
|
||||
"copy_artifacts": "copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts",
|
||||
"update_artifacts": "for i in ${npm_package_config_contracts_v2}; do copyfiles -u 4 ../migrations/artifacts/2.0.0-trimmed/$i.json src/artifacts; done;",
|
||||
"clean": "shx rm -rf _bundles lib test_temp test/artifacts src/generated_contract_wrappers generated_docs",
|
||||
"clean": "shx rm -rf _bundles lib test_temp generated_docs",
|
||||
"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",
|
||||
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
|
||||
},
|
||||
"config": {
|
||||
"contracts_v2": "AssetProxyOwner ERC20Proxy ERC20Token ERC721Proxy ERC721Token Exchange Forwarder OrderValidator WETH9 ZRXToken",
|
||||
"postpublish": {
|
||||
"assets": []
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo"
|
||||
@@ -43,7 +33,6 @@
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@0xproject/abi-gen": "^1.0.13",
|
||||
"@0xproject/dev-utils": "^1.0.12",
|
||||
"@0xproject/migrations": "^1.0.14",
|
||||
"@0xproject/tslint-config": "^1.0.8",
|
||||
@@ -55,7 +44,6 @@
|
||||
"chai": "^4.0.1",
|
||||
"chai-as-promised": "^7.1.0",
|
||||
"chai-bignumber": "^2.0.1",
|
||||
"copyfiles": "^2.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^4.1.0",
|
||||
@@ -69,8 +57,10 @@
|
||||
"typescript": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@0xproject/abi-gen-wrappers": "^1.0.0",
|
||||
"@0xproject/assert": "^1.0.13",
|
||||
"@0xproject/base-contract": "^3.0.1",
|
||||
"@0xproject/contract-artifacts": "^1.0.0",
|
||||
"@0xproject/contract-wrappers": "^2.0.2",
|
||||
"@0xproject/fill-scenarios": "^1.0.7",
|
||||
"@0xproject/json-schemas": "^1.0.7",
|
||||
|
@@ -1,13 +0,0 @@
|
||||
import { ContractArtifact } from 'ethereum-types';
|
||||
|
||||
import * as ERC20Token from './artifacts/ERC20Token.json';
|
||||
import * as ERC721Token from './artifacts/ERC721Token.json';
|
||||
import * as Exchange from './artifacts/Exchange.json';
|
||||
import * as WETH9 from './artifacts/WETH9.json';
|
||||
|
||||
export const artifacts = {
|
||||
ERC20Token: (ERC20Token as any) as ContractArtifact,
|
||||
ERC721Token: (ERC721Token as any) as ContractArtifact,
|
||||
Exchange: (Exchange as any) as ContractArtifact,
|
||||
EtherToken: (WETH9 as any) as ContractArtifact,
|
||||
};
|
6
packages/order-watcher/src/globals.d.ts
vendored
6
packages/order-watcher/src/globals.d.ts
vendored
@@ -1,6 +0,0 @@
|
||||
declare module '*.json' {
|
||||
const json: any;
|
||||
/* tslint:disable */
|
||||
export default json;
|
||||
/* tslint:enable */
|
||||
}
|
@@ -1,4 +1,5 @@
|
||||
// tslint:disable:no-unnecessary-type-assertion
|
||||
import * as artifacts from '@0xproject/contract-artifacts';
|
||||
import {
|
||||
AssetBalanceAndProxyAllowanceFetcher,
|
||||
ContractWrappers,
|
||||
@@ -30,12 +31,18 @@ import {
|
||||
orderHashUtils,
|
||||
OrderStateUtils,
|
||||
} from '@0xproject/order-utils';
|
||||
import { AssetProxyId, ExchangeContractErrs, OrderState, SignedOrder, Stats } from '@0xproject/types';
|
||||
import {
|
||||
AssetProxyId,
|
||||
ContractAddresses,
|
||||
ExchangeContractErrs,
|
||||
OrderState,
|
||||
SignedOrder,
|
||||
Stats,
|
||||
} from '@0xproject/types';
|
||||
import { errorUtils, intervalUtils } from '@0xproject/utils';
|
||||
import { BlockParamLiteral, LogEntryEvent, LogWithDecodedArgs, Provider } from 'ethereum-types';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { artifacts } from '../artifacts';
|
||||
import { orderWatcherPartialConfigSchema } from '../schemas/order_watcher_partial_config_schema';
|
||||
import { OnOrderStateChangeCallback, OrderWatcherConfig, OrderWatcherError } from '../types';
|
||||
import { assert } from '../utils/assert';
|
||||
@@ -96,6 +103,7 @@ export class OrderWatcher {
|
||||
constructor(
|
||||
provider: Provider,
|
||||
networkId: number,
|
||||
contractAddresses: ContractAddresses,
|
||||
partialConfig: Partial<OrderWatcherConfig> = DEFAULT_ORDER_WATCHER_CONFIG,
|
||||
) {
|
||||
assert.isWeb3Provider('provider', provider);
|
||||
@@ -110,9 +118,13 @@ export class OrderWatcher {
|
||||
this._collisionResistantAbiDecoder = new CollisionResistanceAbiDecoder(
|
||||
artifacts.ERC20Token.compilerOutput.abi,
|
||||
artifacts.ERC721Token.compilerOutput.abi,
|
||||
[artifacts.EtherToken.compilerOutput.abi, artifacts.Exchange.compilerOutput.abi],
|
||||
[artifacts.WETH9.compilerOutput.abi, artifacts.Exchange.compilerOutput.abi],
|
||||
);
|
||||
const contractWrappers = new ContractWrappers(provider, { networkId });
|
||||
const contractWrappers = new ContractWrappers(provider, {
|
||||
networkId,
|
||||
// TODO(albrow): Make contract addresses optional.
|
||||
contractAddresses,
|
||||
});
|
||||
this._eventWatcher = new EventWatcher(provider, config.eventPollingIntervalMs, STATE_LAYER, config.isVerbose);
|
||||
const balanceAndProxyAllowanceFetcher = new AssetBalanceAndProxyAllowanceFetcher(
|
||||
contractWrappers.erc20Token,
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import { ContractWrappers } from '@0xproject/contract-wrappers';
|
||||
import { tokenUtils } from '@0xproject/contract-wrappers/lib/test/utils/token_utils';
|
||||
import { BlockchainLifecycle, callbackErrorReporter } from '@0xproject/dev-utils';
|
||||
import { FillScenarios } from '@0xproject/fill-scenarios';
|
||||
import { getContractAddresses } from '@0xproject/migrations';
|
||||
import { assetDataUtils, orderHashUtils } from '@0xproject/order-utils';
|
||||
import { DoneCallback } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
@@ -14,7 +14,6 @@ import { ExpirationWatcher } from '../src/order_watcher/expiration_watcher';
|
||||
import { utils } from '../src/utils/utils';
|
||||
|
||||
import { chaiSetup } from './utils/chai_setup';
|
||||
import { constants } from './utils/constants';
|
||||
import { provider, web3Wrapper } from './utils/web3_wrapper';
|
||||
|
||||
chaiSetup.configure();
|
||||
@@ -23,14 +22,8 @@ const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
||||
const MILISECONDS_IN_SECOND = 1000;
|
||||
|
||||
describe('ExpirationWatcher', () => {
|
||||
const config = {
|
||||
networkId: constants.TESTRPC_NETWORK_ID,
|
||||
};
|
||||
const contractWrappers = new ContractWrappers(provider, config);
|
||||
let userAddresses: string[];
|
||||
let zrxTokenAddress: string;
|
||||
let fillScenarios: FillScenarios;
|
||||
const exchangeContractAddress = contractWrappers.exchange.getContractAddress();
|
||||
let makerAssetData: string;
|
||||
let takerAssetData: string;
|
||||
let coinbase: string;
|
||||
@@ -43,15 +36,15 @@ describe('ExpirationWatcher', () => {
|
||||
let expirationWatcher: ExpirationWatcher;
|
||||
before(async () => {
|
||||
await blockchainLifecycle.startAsync();
|
||||
const contractAddresses = getContractAddresses();
|
||||
userAddresses = await web3Wrapper.getAvailableAddressesAsync();
|
||||
zrxTokenAddress = tokenUtils.getProtocolTokenAddress();
|
||||
fillScenarios = new FillScenarios(
|
||||
provider,
|
||||
userAddresses,
|
||||
zrxTokenAddress,
|
||||
exchangeContractAddress,
|
||||
contractWrappers.erc20Proxy.getContractAddress(),
|
||||
contractWrappers.erc721Proxy.getContractAddress(),
|
||||
contractAddresses.zrxToken,
|
||||
contractAddresses.exchange,
|
||||
contractAddresses.erc20Proxy,
|
||||
contractAddresses.erc721Proxy,
|
||||
);
|
||||
[coinbase, makerAddress, takerAddress, feeRecipient] = userAddresses;
|
||||
const [makerTokenAddress, takerTokenAddress] = tokenUtils.getDummyERC20TokenAddresses();
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { devConstants } from '@0xproject/dev-utils';
|
||||
import { runV2MigrationsAsync } from '@0xproject/migrations';
|
||||
import { runMigrationsAsync } from '@0xproject/migrations';
|
||||
|
||||
import { provider } from './utils/web3_wrapper';
|
||||
|
||||
@@ -12,6 +12,5 @@ before('migrate contracts', async function(): Promise<void> {
|
||||
gas: devConstants.GAS_LIMIT,
|
||||
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
||||
};
|
||||
const artifactsDir = `src/artifacts`;
|
||||
await runV2MigrationsAsync(provider, artifactsDir, txDefaults);
|
||||
await runMigrationsAsync(provider, txDefaults);
|
||||
});
|
||||
|
@@ -3,6 +3,7 @@ import { ContractWrappers } from '@0xproject/contract-wrappers';
|
||||
import { tokenUtils } from '@0xproject/contract-wrappers/lib/test/utils/token_utils';
|
||||
import { BlockchainLifecycle, callbackErrorReporter } from '@0xproject/dev-utils';
|
||||
import { FillScenarios } from '@0xproject/fill-scenarios';
|
||||
import { getContractAddresses } from '@0xproject/migrations';
|
||||
import { assetDataUtils, orderHashUtils } from '@0xproject/order-utils';
|
||||
import {
|
||||
DoneCallback,
|
||||
@@ -36,13 +37,10 @@ const expect = chai.expect;
|
||||
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
||||
|
||||
describe('OrderWatcher', () => {
|
||||
const networkId = constants.TESTRPC_NETWORK_ID;
|
||||
const config = { networkId };
|
||||
const contractWrappers = new ContractWrappers(provider, config);
|
||||
let contractWrappers: ContractWrappers;
|
||||
let fillScenarios: FillScenarios;
|
||||
let userAddresses: string[];
|
||||
let zrxTokenAddress: string;
|
||||
let exchangeContractAddress: string;
|
||||
let makerAssetData: string;
|
||||
let takerAssetData: string;
|
||||
let makerTokenAddress: string;
|
||||
@@ -57,16 +55,22 @@ describe('OrderWatcher', () => {
|
||||
const fillableAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(5), decimals);
|
||||
before(async () => {
|
||||
await blockchainLifecycle.startAsync();
|
||||
const networkId = constants.TESTRPC_NETWORK_ID;
|
||||
const contractAddresses = getContractAddresses();
|
||||
const config = {
|
||||
networkId,
|
||||
contractAddresses,
|
||||
};
|
||||
contractWrappers = new ContractWrappers(provider, config);
|
||||
userAddresses = await web3Wrapper.getAvailableAddressesAsync();
|
||||
zrxTokenAddress = tokenUtils.getProtocolTokenAddress();
|
||||
exchangeContractAddress = contractWrappers.exchange.getContractAddress();
|
||||
zrxTokenAddress = contractAddresses.zrxToken;
|
||||
fillScenarios = new FillScenarios(
|
||||
provider,
|
||||
userAddresses,
|
||||
zrxTokenAddress,
|
||||
exchangeContractAddress,
|
||||
contractWrappers.erc20Proxy.getContractAddress(),
|
||||
contractWrappers.erc721Proxy.getContractAddress(),
|
||||
contractAddresses.exchange,
|
||||
contractAddresses.erc20Proxy,
|
||||
contractAddresses.erc721Proxy,
|
||||
);
|
||||
[coinbase, makerAddress, takerAddress, feeRecipient] = userAddresses;
|
||||
[makerTokenAddress, takerTokenAddress] = tokenUtils.getDummyERC20TokenAddresses();
|
||||
@@ -75,7 +79,7 @@ describe('OrderWatcher', () => {
|
||||
assetDataUtils.encodeERC20AssetData(takerTokenAddress),
|
||||
];
|
||||
const orderWatcherConfig = {};
|
||||
orderWatcher = new OrderWatcher(provider, networkId, orderWatcherConfig);
|
||||
orderWatcher = new OrderWatcher(provider, networkId, contractAddresses, orderWatcherConfig);
|
||||
});
|
||||
after(async () => {
|
||||
await blockchainLifecycle.revertAsync();
|
||||
|
@@ -1,34 +0,0 @@
|
||||
import { Token } from '@0xproject/types';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { InternalOrderWatcherError } from '../../src/types';
|
||||
|
||||
const PROTOCOL_TOKEN_SYMBOL = 'ZRX';
|
||||
const WETH_TOKEN_SYMBOL = 'WETH';
|
||||
|
||||
export class TokenUtils {
|
||||
private readonly _tokens: Token[];
|
||||
constructor(tokens: Token[]) {
|
||||
this._tokens = tokens;
|
||||
}
|
||||
public getProtocolTokenOrThrow(): Token {
|
||||
const zrxToken = _.find(this._tokens, { symbol: PROTOCOL_TOKEN_SYMBOL });
|
||||
if (_.isUndefined(zrxToken)) {
|
||||
throw new Error(InternalOrderWatcherError.ZrxNotInTokenRegistry);
|
||||
}
|
||||
return zrxToken;
|
||||
}
|
||||
public getWethTokenOrThrow(): Token {
|
||||
const wethToken = _.find(this._tokens, { symbol: WETH_TOKEN_SYMBOL });
|
||||
if (_.isUndefined(wethToken)) {
|
||||
throw new Error(InternalOrderWatcherError.WethNotInTokenRegistry);
|
||||
}
|
||||
return wethToken;
|
||||
}
|
||||
public getDummyTokens(): Token[] {
|
||||
const dummyTokens = _.filter(this._tokens, token => {
|
||||
return !_.includes([PROTOCOL_TOKEN_SYMBOL, WETH_TOKEN_SYMBOL], token.symbol);
|
||||
});
|
||||
return dummyTokens;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user