aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2019-02-07 19:23:00 +0800
committerGitHub <noreply@github.com>2019-02-07 19:23:00 +0800
commit7e19c944b91f573bb026ca3a916cd4e4b9169a9e (patch)
tree252302871a01eee80ae64966ed72dc82b6eda1aa
parent2a344e26cc51fa41a9df3535b625b8609dfc167e (diff)
parentfd4d3cff880e9131d55a4e534c17289db5f72b6b (diff)
downloaddexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar.gz
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar.bz2
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar.lz
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar.xz
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.tar.zst
dexon-0x-contracts-7e19c944b91f573bb026ca3a916cd4e4b9169a9e.zip
Merge pull request #1575 from 0xProject/feature/contracts-gen
Contracts generator
-rw-r--r--.github/autolabeler.yml1
-rw-r--r--contracts/asset-proxy/compiler.json24
-rw-r--r--contracts/asset-proxy/package.json7
-rw-r--r--contracts/asset-proxy/src/artifacts.ts33
-rw-r--r--contracts/asset-proxy/src/artifacts/index.ts19
-rw-r--r--contracts/asset-proxy/src/wrappers.ts17
-rw-r--r--contracts/asset-proxy/src/wrappers/index.ts7
-rw-r--r--contracts/asset-proxy/test/proxies.ts28
-rw-r--r--contracts/asset-proxy/test/utils/erc20_wrapper.ts6
-rw-r--r--contracts/asset-proxy/test/utils/erc721_wrapper.ts6
-rw-r--r--contracts/asset-proxy/tsconfig.json25
-rw-r--r--contracts/erc20/compiler.json27
-rw-r--r--contracts/erc20/package.json7
-rw-r--r--contracts/erc20/src/artifacts.ts31
-rw-r--r--contracts/erc20/src/artifacts/index.ts30
-rw-r--r--contracts/erc20/src/wrappers.ts16
-rw-r--r--contracts/erc20/src/wrappers/index.ts11
-rw-r--r--contracts/erc20/tsconfig.json28
-rw-r--r--contracts/erc721/compiler.json19
-rw-r--r--contracts/erc721/package.json7
-rw-r--r--contracts/erc721/src/artifacts.ts23
-rw-r--r--contracts/erc721/src/artifacts/index.ts20
-rw-r--r--contracts/erc721/src/wrappers.ts12
-rw-r--r--contracts/erc721/src/wrappers/index.ts7
-rw-r--r--contracts/erc721/tsconfig.json20
-rw-r--r--contracts/exchange-forwarder/compiler.json13
-rw-r--r--contracts/exchange-forwarder/package.json7
-rw-r--r--contracts/exchange-forwarder/src/artifacts.ts19
-rw-r--r--contracts/exchange-forwarder/src/artifacts/index.ts7
-rw-r--r--contracts/exchange-forwarder/src/wrappers.ts10
-rw-r--r--contracts/exchange-forwarder/src/wrappers/index.ts1
-rw-r--r--contracts/exchange-forwarder/test/forwarder.ts20
-rw-r--r--contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts10
-rw-r--r--contracts/exchange-forwarder/tsconfig.json14
-rw-r--r--contracts/exchange-libs/compiler.json21
-rw-r--r--contracts/exchange-libs/package.json7
-rw-r--r--contracts/exchange-libs/src/artifacts.ts25
-rw-r--r--contracts/exchange-libs/src/artifacts/index.ts17
-rw-r--r--contracts/exchange-libs/src/wrappers.ts13
-rw-r--r--contracts/exchange-libs/src/wrappers/index.ts6
-rw-r--r--contracts/exchange-libs/tsconfig.json20
-rw-r--r--contracts/exchange/compiler.json49
-rw-r--r--contracts/exchange/package.json7
-rw-r--r--contracts/exchange/src/artifacts.ts61
-rw-r--r--contracts/exchange/src/artifacts/index.ts41
-rw-r--r--contracts/exchange/src/wrappers.ts31
-rw-r--r--contracts/exchange/src/wrappers/index.ts18
-rw-r--r--contracts/exchange/test/core.ts31
-rw-r--r--contracts/exchange/test/dispatcher.ts14
-rw-r--r--contracts/exchange/test/match_orders.ts19
-rw-r--r--contracts/exchange/test/signature_validator.ts3
-rw-r--r--contracts/exchange/test/utils/exchange_wrapper.ts4
-rw-r--r--contracts/exchange/test/utils/fill_order_combinatorial_utils.ts9
-rw-r--r--contracts/exchange/test/wrapper.ts17
-rw-r--r--contracts/exchange/tsconfig.json50
-rw-r--r--contracts/extensions/compiler.json19
-rw-r--r--contracts/extensions/package.json7
-rw-r--r--contracts/extensions/src/artifacts.ts31
-rw-r--r--contracts/extensions/src/artifacts/index.ts13
-rw-r--r--contracts/extensions/src/wrappers.ts16
-rw-r--r--contracts/extensions/src/wrappers/index.ts4
-rw-r--r--contracts/extensions/test/balance_threshold_filter.ts6
-rw-r--r--contracts/extensions/test/dutch_auction.ts18
-rw-r--r--contracts/extensions/test/order_matcher.ts47
-rw-r--r--contracts/extensions/test/order_validator.ts18
-rw-r--r--contracts/extensions/test/utils/balance_threshold_wrapper.ts15
-rw-r--r--contracts/extensions/test/utils/dutch_auction_test_wrapper.ts10
-rw-r--r--contracts/extensions/tsconfig.json21
-rw-r--r--contracts/multisig/compiler.json16
-rw-r--r--contracts/multisig/package.json7
-rw-r--r--contracts/multisig/src/artifacts.ts21
-rw-r--r--contracts/multisig/src/artifacts/index.ts15
-rw-r--r--contracts/multisig/src/wrappers.ts11
-rw-r--r--contracts/multisig/src/wrappers/index.ts5
-rw-r--r--contracts/multisig/test/asset_proxy_owner.ts6
-rw-r--r--contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts4
-rw-r--r--contracts/multisig/tsconfig.json17
-rw-r--r--contracts/test-utils/package.json2
-rw-r--r--contracts/utils/compiler.json15
-rw-r--r--contracts/utils/package.json7
-rw-r--r--contracts/utils/src/artifacts.ts23
-rw-r--r--contracts/utils/src/artifacts/index.ts19
-rw-r--r--contracts/utils/src/wrappers.ts12
-rw-r--r--contracts/utils/src/wrappers/index.ts2
-rw-r--r--contracts/utils/tsconfig.json20
-rw-r--r--package.json5
-rw-r--r--packages/contracts-gen/.npmignore6
-rw-r--r--packages/contracts-gen/CHANGELOG.json1
-rw-r--r--packages/contracts-gen/README.md76
-rwxr-xr-xpackages/contracts-gen/bin/contracts-gen.js2
-rw-r--r--packages/contracts-gen/package.json49
-rw-r--r--packages/contracts-gen/src/contracts-gen.ts175
-rw-r--r--packages/contracts-gen/src/index.ts6
-rw-r--r--packages/contracts-gen/tsconfig.json8
-rw-r--r--packages/contracts-gen/tslint.json3
-rw-r--r--packages/metacoin/package.json3
-rw-r--r--packages/monorepo-scripts/package.json1
-rw-r--r--packages/monorepo-scripts/src/deps_versions.ts16
-rw-r--r--packages/monorepo-scripts/src/publish.ts8
-rw-r--r--packages/monorepo-scripts/src/test_installation.ts4
-rw-r--r--packages/monorepo-scripts/src/types.ts17
-rw-r--r--packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts3
-rw-r--r--packages/monorepo-scripts/src/utils/utils.ts14
-rw-r--r--packages/pipeline/package.json2
-rw-r--r--packages/sol-compiler/CHANGELOG.json9
-rw-r--r--packages/sol-compiler/src/compiler.ts16
-rw-r--r--packages/sol-compiler/src/utils/compiler.ts5
-rw-r--r--packages/types/src/index.ts24
-rw-r--r--packages/website/package.json2
-rw-r--r--tsconfig.json1
-rw-r--r--yarn.lock86
111 files changed, 1286 insertions, 678 deletions
diff --git a/.github/autolabeler.yml b/.github/autolabeler.yml
index 321ec18a4..fb5b00aa4 100644
--- a/.github/autolabeler.yml
+++ b/.github/autolabeler.yml
@@ -2,6 +2,7 @@ python: ['python-packages']
contracts: ['contracts']
sol-doc: ['packages/sol-doc']
sol-resolver: ['packages/sol-resolver']
+contracts-gen: ['packages/contracts-gen']
sra-spec: ['packages/sra-spec']
subproviders: ['packages/subproviders']
contract-addresses: ['packages/contract-addresses']
diff --git a/contracts/asset-proxy/compiler.json b/contracts/asset-proxy/compiler.json
index 70d4c6b20..aab143bad 100644
--- a/contracts/asset-proxy/compiler.json
+++ b/contracts/asset-proxy/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,12 +17,17 @@
}
},
"contracts": [
- "IAssetData",
- "IAssetProxy",
- "IAuthorizable",
- "ERC20Proxy",
- "ERC721Proxy",
- "MixinAuthorizable",
- "MultiAssetProxy"
+ "@0x/contracts-erc20/contracts/test/DummyERC20Token.sol",
+ "@0x/contracts-erc20/contracts/test/DummyMultipleReturnERC20Token.sol",
+ "@0x/contracts-erc20/contracts/test/DummyNoReturnERC20Token.sol",
+ "@0x/contracts-erc721/contracts/test/DummyERC721Receiver.sol",
+ "@0x/contracts-erc721/contracts/test/DummyERC721Token.sol",
+ "src/ERC20Proxy.sol",
+ "src/ERC721Proxy.sol",
+ "src/MixinAuthorizable.sol",
+ "src/MultiAssetProxy.sol",
+ "src/interfaces/IAssetData.sol",
+ "src/interfaces/IAssetProxy.sol",
+ "src/interfaces/IAuthorizable.sol"
]
}
diff --git a/contracts/asset-proxy/package.json b/contracts/asset-proxy/package.json
index 8398249cd..51d26b0ac 100644
--- a/contracts/asset-proxy/package.json
+++ b/contracts/asset-proxy/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(ERC20Proxy|ERC721Proxy|IAssetData|IAssetProxy|IAuthorizable|MixinAuthorizable|MultiAssetProxy).json"
+ "abis": "./generated-artifacts/@(DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|ERC20Proxy|ERC721Proxy|IAssetData|IAssetProxy|IAuthorizable|MixinAuthorizable|MultiAssetProxy).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/dev-utils": "^2.0.1",
"@0x/sol-compiler": "^3.0.1",
@@ -74,7 +77,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/asset-proxy/src/artifacts.ts b/contracts/asset-proxy/src/artifacts.ts
new file mode 100644
index 000000000..d82c0537e
--- /dev/null
+++ b/contracts/asset-proxy/src/artifacts.ts
@@ -0,0 +1,33 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
+import * as DummyERC721Receiver from '../generated-artifacts/DummyERC721Receiver.json';
+import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
+import * as DummyMultipleReturnERC20Token from '../generated-artifacts/DummyMultipleReturnERC20Token.json';
+import * as DummyNoReturnERC20Token from '../generated-artifacts/DummyNoReturnERC20Token.json';
+import * as ERC20Proxy from '../generated-artifacts/ERC20Proxy.json';
+import * as ERC721Proxy from '../generated-artifacts/ERC721Proxy.json';
+import * as IAssetData from '../generated-artifacts/IAssetData.json';
+import * as IAssetProxy from '../generated-artifacts/IAssetProxy.json';
+import * as IAuthorizable from '../generated-artifacts/IAuthorizable.json';
+import * as MixinAuthorizable from '../generated-artifacts/MixinAuthorizable.json';
+import * as MultiAssetProxy from '../generated-artifacts/MultiAssetProxy.json';
+export const artifacts = {
+ DummyERC20Token: DummyERC20Token as ContractArtifact,
+ DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
+ DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
+ DummyERC721Receiver: DummyERC721Receiver as ContractArtifact,
+ DummyERC721Token: DummyERC721Token as ContractArtifact,
+ ERC20Proxy: ERC20Proxy as ContractArtifact,
+ ERC721Proxy: ERC721Proxy as ContractArtifact,
+ MixinAuthorizable: MixinAuthorizable as ContractArtifact,
+ MultiAssetProxy: MultiAssetProxy as ContractArtifact,
+ IAssetData: IAssetData as ContractArtifact,
+ IAssetProxy: IAssetProxy as ContractArtifact,
+ IAuthorizable: IAuthorizable as ContractArtifact,
+};
diff --git a/contracts/asset-proxy/src/artifacts/index.ts b/contracts/asset-proxy/src/artifacts/index.ts
deleted file mode 100644
index 7f3060815..000000000
--- a/contracts/asset-proxy/src/artifacts/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as ERC20Proxy from '../../generated-artifacts/ERC20Proxy.json';
-import * as ERC721Proxy from '../../generated-artifacts/ERC721Proxy.json';
-import * as IAssetData from '../../generated-artifacts/IAssetData.json';
-import * as IAssetProxy from '../../generated-artifacts/IAssetProxy.json';
-import * as IAuthorizable from '../../generated-artifacts/IAuthorizable.json';
-import * as MixinAuthorizable from '../../generated-artifacts/MixinAuthorizable.json';
-import * as MultiAssetProxy from '../../generated-artifacts/MultiAssetProxy.json';
-
-export const artifacts = {
- IAuthorizable: IAuthorizable as ContractArtifact,
- IAssetData: IAssetData as ContractArtifact,
- IAssetProxy: IAssetProxy as ContractArtifact,
- ERC20Proxy: ERC20Proxy as ContractArtifact,
- ERC721Proxy: ERC721Proxy as ContractArtifact,
- MixinAuthorizable: MixinAuthorizable as ContractArtifact,
- MultiAssetProxy: MultiAssetProxy as ContractArtifact,
-};
diff --git a/contracts/asset-proxy/src/wrappers.ts b/contracts/asset-proxy/src/wrappers.ts
new file mode 100644
index 000000000..f8cd342c0
--- /dev/null
+++ b/contracts/asset-proxy/src/wrappers.ts
@@ -0,0 +1,17 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/dummy_erc20_token';
+export * from '../generated-wrappers/dummy_erc721_receiver';
+export * from '../generated-wrappers/dummy_erc721_token';
+export * from '../generated-wrappers/dummy_multiple_return_erc20_token';
+export * from '../generated-wrappers/dummy_no_return_erc20_token';
+export * from '../generated-wrappers/erc20_proxy';
+export * from '../generated-wrappers/erc721_proxy';
+export * from '../generated-wrappers/i_asset_data';
+export * from '../generated-wrappers/i_asset_proxy';
+export * from '../generated-wrappers/i_authorizable';
+export * from '../generated-wrappers/mixin_authorizable';
+export * from '../generated-wrappers/multi_asset_proxy';
diff --git a/contracts/asset-proxy/src/wrappers/index.ts b/contracts/asset-proxy/src/wrappers/index.ts
deleted file mode 100644
index 6aecbc086..000000000
--- a/contracts/asset-proxy/src/wrappers/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export * from '../../generated-wrappers/i_asset_data';
-export * from '../../generated-wrappers/i_asset_proxy';
-export * from '../../generated-wrappers/erc20_proxy';
-export * from '../../generated-wrappers/erc721_proxy';
-export * from '../../generated-wrappers/mixin_authorizable';
-export * from '../../generated-wrappers/multi_asset_proxy';
-export * from '../../generated-wrappers/i_authorizable';
diff --git a/contracts/asset-proxy/test/proxies.ts b/contracts/asset-proxy/test/proxies.ts
index 797787135..c2f9653aa 100644
--- a/contracts/asset-proxy/test/proxies.ts
+++ b/contracts/asset-proxy/test/proxies.ts
@@ -1,16 +1,4 @@
import {
- artifacts as erc20Artifacts,
- DummyERC20TokenContract,
- DummyERC20TokenTransferEventArgs,
- DummyMultipleReturnERC20TokenContract,
- DummyNoReturnERC20TokenContract,
-} from '@0x/contracts-erc20';
-import {
- artifacts as erc721Artifacts,
- DummyERC721ReceiverContract,
- DummyERC721TokenContract,
-} from '@0x/contracts-erc721';
-import {
chaiSetup,
constants,
expectTransactionFailedAsync,
@@ -30,6 +18,12 @@ import * as _ from 'lodash';
import {
artifacts,
+ DummyERC20TokenContract,
+ DummyERC20TokenTransferEventArgs,
+ DummyERC721ReceiverContract,
+ DummyERC721TokenContract,
+ DummyMultipleReturnERC20TokenContract,
+ DummyNoReturnERC20TokenContract,
ERC20ProxyContract,
ERC20Wrapper,
ERC721ProxyContract,
@@ -154,7 +148,7 @@ describe('Asset Transfer Proxies', () => {
constants.DUMMY_TOKEN_DECIMALS,
);
noReturnErc20Token = await DummyNoReturnERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.DummyNoReturnERC20Token,
+ artifacts.DummyNoReturnERC20Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -163,7 +157,7 @@ describe('Asset Transfer Proxies', () => {
constants.DUMMY_TOKEN_TOTAL_SUPPLY,
);
multipleReturnErc20Token = await DummyMultipleReturnERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.DummyMultipleReturnERC20Token,
+ artifacts.DummyMultipleReturnERC20Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -204,7 +198,7 @@ describe('Asset Transfer Proxies', () => {
// Deploy and configure ERC721 tokens and receiver
[erc721TokenA, erc721TokenB] = await erc721Wrapper.deployDummyTokensAsync();
erc721Receiver = await DummyERC721ReceiverContract.deployFrom0xArtifactAsync(
- erc721Artifacts.DummyERC721Receiver,
+ artifacts.DummyERC721Receiver,
provider,
txDefaults,
);
@@ -568,7 +562,7 @@ describe('Asset Transfer Proxies', () => {
erc721Receiver.address,
amount,
);
- const logDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...erc721Artifacts });
+ const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const tx = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
to: erc721Proxy.address,
@@ -760,7 +754,7 @@ describe('Asset Transfer Proxies', () => {
inputAmount,
);
const erc20Balances = await erc20Wrapper.getBalancesAsync();
- const logDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...erc20Artifacts });
+ const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const tx = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
to: multiAssetProxy.address,
diff --git a/contracts/asset-proxy/test/utils/erc20_wrapper.ts b/contracts/asset-proxy/test/utils/erc20_wrapper.ts
index 12cd06ece..09607e776 100644
--- a/contracts/asset-proxy/test/utils/erc20_wrapper.ts
+++ b/contracts/asset-proxy/test/utils/erc20_wrapper.ts
@@ -1,4 +1,3 @@
-import { artifacts as tokensArtifacts, DummyERC20TokenContract } from '@0x/contracts-erc20';
import { constants, ERC20BalancesByOwner, txDefaults } from '@0x/contracts-test-utils';
import { assetDataUtils } from '@0x/order-utils';
import { BigNumber } from '@0x/utils';
@@ -6,8 +5,7 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider } from 'ethereum-types';
import * as _ from 'lodash';
-import { ERC20ProxyContract } from '../../generated-wrappers/erc20_proxy';
-import { artifacts } from '../../src/artifacts';
+import { artifacts, DummyERC20TokenContract, ERC20ProxyContract } from '../../src';
export class ERC20Wrapper {
private readonly _tokenOwnerAddresses: string[];
@@ -38,7 +36,7 @@ export class ERC20Wrapper {
for (let i = 0; i < numberToDeploy; i++) {
this._dummyTokenContracts.push(
await DummyERC20TokenContract.deployFrom0xArtifactAsync(
- tokensArtifacts.DummyERC20Token,
+ artifacts.DummyERC20Token,
this._provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
diff --git a/contracts/asset-proxy/test/utils/erc721_wrapper.ts b/contracts/asset-proxy/test/utils/erc721_wrapper.ts
index fc43d8c52..92d1398a7 100644
--- a/contracts/asset-proxy/test/utils/erc721_wrapper.ts
+++ b/contracts/asset-proxy/test/utils/erc721_wrapper.ts
@@ -1,4 +1,3 @@
-import { artifacts as tokensArtifacts, DummyERC721TokenContract } from '@0x/contracts-erc721';
import { constants, ERC721TokenIdsByOwner, txDefaults } from '@0x/contracts-test-utils';
import { generatePseudoRandomSalt } from '@0x/order-utils';
import { BigNumber } from '@0x/utils';
@@ -6,8 +5,7 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider } from 'ethereum-types';
import * as _ from 'lodash';
-import { ERC721ProxyContract } from '../../generated-wrappers/erc721_proxy';
-import { artifacts } from '../../src/artifacts';
+import { artifacts, DummyERC721TokenContract, ERC721ProxyContract } from '../../src';
export class ERC721Wrapper {
private readonly _tokenOwnerAddresses: string[];
@@ -30,7 +28,7 @@ export class ERC721Wrapper {
for (const i of _.times(constants.NUM_DUMMY_ERC721_TO_DEPLOY)) {
this._dummyTokenContracts.push(
await DummyERC721TokenContract.deployFrom0xArtifactAsync(
- tokensArtifacts.DummyERC721Token,
+ artifacts.DummyERC721Token,
this._provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
diff --git a/contracts/asset-proxy/tsconfig.json b/contracts/asset-proxy/tsconfig.json
index 7baa48cbe..526be2c64 100644
--- a/contracts/asset-proxy/tsconfig.json
+++ b/contracts/asset-proxy/tsconfig.json
@@ -1,19 +1,20 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/IAssetData.json",
- "./generated-artifacts/IAssetProxy.json",
- "./generated-artifacts/IAuthorizable.json",
- "./generated-artifacts/ERC20Proxy.json",
- "./generated-artifacts/ERC721Proxy.json",
- "./generated-artifacts/MixinAuthorizable.json",
- "./generated-artifacts/MultiAssetProxy.json"
+ "generated-artifacts/DummyERC20Token.json",
+ "generated-artifacts/DummyERC721Receiver.json",
+ "generated-artifacts/DummyERC721Token.json",
+ "generated-artifacts/DummyMultipleReturnERC20Token.json",
+ "generated-artifacts/DummyNoReturnERC20Token.json",
+ "generated-artifacts/ERC20Proxy.json",
+ "generated-artifacts/ERC721Proxy.json",
+ "generated-artifacts/IAssetData.json",
+ "generated-artifacts/IAssetProxy.json",
+ "generated-artifacts/IAuthorizable.json",
+ "generated-artifacts/MixinAuthorizable.json",
+ "generated-artifacts/MultiAssetProxy.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/erc20/compiler.json b/contracts/erc20/compiler.json
index 264f6231a..033917d22 100644
--- a/contracts/erc20/compiler.json
+++ b/contracts/erc20/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,16 +17,16 @@
}
},
"contracts": [
- "DummyERC20Token",
- "DummyMultipleReturnERC20Token",
- "DummyNoReturnERC20Token",
- "ReentrantERC20Token",
- "ERC20Token",
- "IERC20Token",
- "MintableERC20Token",
- "UnlimitedAllowanceERC20Token",
- "IEtherToken",
- "WETH9",
- "ZRXToken"
+ "src/ERC20Token.sol",
+ "src/MintableERC20Token.sol",
+ "src/UnlimitedAllowanceERC20Token.sol",
+ "src/WETH9.sol",
+ "src/ZRXToken.sol",
+ "src/interfaces/IERC20Token.sol",
+ "src/interfaces/IEtherToken.sol",
+ "test/DummyERC20Token.sol",
+ "test/DummyMultipleReturnERC20Token.sol",
+ "test/DummyNoReturnERC20Token.sol",
+ "test/ReentrantERC20Token.sol"
]
}
diff --git a/contracts/erc20/package.json b/contracts/erc20/package.json
index 937198f2f..b3517a8c0 100644
--- a/contracts/erc20/package.json
+++ b/contracts/erc20/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(DummyERC20Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|ReentrantERC20Token|ERC20Token|IERC20Token|MintableERC20Token|UnlimitedAllowanceERC20Token|IEtherToken|WETH9|ZRXToken).json"
+ "abis": "./generated-artifacts/@(DummyERC20Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|ERC20Token|IERC20Token|IEtherToken|MintableERC20Token|ReentrantERC20Token|UnlimitedAllowanceERC20Token|WETH9|ZRXToken).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contracts-test-utils": "^3.0.2",
"@0x/dev-utils": "^2.0.1",
@@ -72,7 +75,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/erc20/src/artifacts.ts b/contracts/erc20/src/artifacts.ts
new file mode 100644
index 000000000..c97a73195
--- /dev/null
+++ b/contracts/erc20/src/artifacts.ts
@@ -0,0 +1,31 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
+import * as DummyMultipleReturnERC20Token from '../generated-artifacts/DummyMultipleReturnERC20Token.json';
+import * as DummyNoReturnERC20Token from '../generated-artifacts/DummyNoReturnERC20Token.json';
+import * as ERC20Token from '../generated-artifacts/ERC20Token.json';
+import * as IERC20Token from '../generated-artifacts/IERC20Token.json';
+import * as IEtherToken from '../generated-artifacts/IEtherToken.json';
+import * as MintableERC20Token from '../generated-artifacts/MintableERC20Token.json';
+import * as ReentrantERC20Token from '../generated-artifacts/ReentrantERC20Token.json';
+import * as UnlimitedAllowanceERC20Token from '../generated-artifacts/UnlimitedAllowanceERC20Token.json';
+import * as WETH9 from '../generated-artifacts/WETH9.json';
+import * as ZRXToken from '../generated-artifacts/ZRXToken.json';
+export const artifacts = {
+ ERC20Token: ERC20Token as ContractArtifact,
+ MintableERC20Token: MintableERC20Token as ContractArtifact,
+ UnlimitedAllowanceERC20Token: UnlimitedAllowanceERC20Token as ContractArtifact,
+ WETH9: WETH9 as ContractArtifact,
+ ZRXToken: (ZRXToken as any) as ContractArtifact,
+ IERC20Token: IERC20Token as ContractArtifact,
+ IEtherToken: IEtherToken as ContractArtifact,
+ DummyERC20Token: DummyERC20Token as ContractArtifact,
+ DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
+ DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
+ ReentrantERC20Token: ReentrantERC20Token as ContractArtifact,
+};
diff --git a/contracts/erc20/src/artifacts/index.ts b/contracts/erc20/src/artifacts/index.ts
deleted file mode 100644
index ce1ae06ac..000000000
--- a/contracts/erc20/src/artifacts/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as DummyERC20Token from '../../generated-artifacts/DummyERC20Token.json';
-import * as DummyMultipleReturnERC20Token from '../../generated-artifacts/DummyMultipleReturnERC20Token.json';
-import * as DummyNoReturnERC20Token from '../../generated-artifacts/DummyNoReturnERC20Token.json';
-import * as ERC20Token from '../../generated-artifacts/ERC20Token.json';
-import * as IERC20Token from '../../generated-artifacts/IERC20Token.json';
-import * as IEtherToken from '../../generated-artifacts/IEtherToken.json';
-import * as MintableERC20Token from '../../generated-artifacts/MintableERC20Token.json';
-import * as ReentrantERC20Token from '../../generated-artifacts/ReentrantERC20Token.json';
-import * as UnlimitedAllowanceERC20Token from '../../generated-artifacts/UnlimitedAllowanceERC20Token.json';
-import * as WETH9 from '../../generated-artifacts/WETH9.json';
-import * as ZRXToken from '../../generated-artifacts/ZRXToken.json';
-
-// tslint:disable:no-unnecessary-type-assertion
-export const artifacts = {
- DummyERC20Token: DummyERC20Token as ContractArtifact,
- DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
- DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
- ReentrantERC20Token: ReentrantERC20Token as ContractArtifact,
- ERC20Token: ERC20Token as ContractArtifact,
- IERC20Token: IERC20Token as ContractArtifact,
- MintableERC20Token: MintableERC20Token as ContractArtifact,
- UnlimitedAllowanceERC20Token: UnlimitedAllowanceERC20Token as ContractArtifact,
- IEtherToken: IEtherToken as ContractArtifact,
- WETH9: WETH9 as ContractArtifact,
- // Note(albrow): "as any" hack still required here because ZRXToken does not
- // conform to the v2 artifact type.
- ZRXToken: (ZRXToken as any) as ContractArtifact,
-};
diff --git a/contracts/erc20/src/wrappers.ts b/contracts/erc20/src/wrappers.ts
new file mode 100644
index 000000000..40193e7d8
--- /dev/null
+++ b/contracts/erc20/src/wrappers.ts
@@ -0,0 +1,16 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/dummy_erc20_token';
+export * from '../generated-wrappers/dummy_multiple_return_erc20_token';
+export * from '../generated-wrappers/dummy_no_return_erc20_token';
+export * from '../generated-wrappers/erc20_token';
+export * from '../generated-wrappers/i_erc20_token';
+export * from '../generated-wrappers/i_ether_token';
+export * from '../generated-wrappers/mintable_erc20_token';
+export * from '../generated-wrappers/reentrant_erc20_token';
+export * from '../generated-wrappers/unlimited_allowance_erc20_token';
+export * from '../generated-wrappers/weth9';
+export * from '../generated-wrappers/zrx_token';
diff --git a/contracts/erc20/src/wrappers/index.ts b/contracts/erc20/src/wrappers/index.ts
deleted file mode 100644
index b4e4ef969..000000000
--- a/contracts/erc20/src/wrappers/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export * from '../../generated-wrappers/zrx_token';
-export * from '../../generated-wrappers/weth9';
-export * from '../../generated-wrappers/unlimited_allowance_erc20_token';
-export * from '../../generated-wrappers/reentrant_erc20_token';
-export * from '../../generated-wrappers/mintable_erc20_token';
-export * from '../../generated-wrappers/i_ether_token';
-export * from '../../generated-wrappers/i_erc20_token';
-export * from '../../generated-wrappers/erc20_token';
-export * from '../../generated-wrappers/dummy_no_return_erc20_token';
-export * from '../../generated-wrappers/dummy_multiple_return_erc20_token';
-export * from '../../generated-wrappers/dummy_erc20_token';
diff --git a/contracts/erc20/tsconfig.json b/contracts/erc20/tsconfig.json
index 4df7424be..74419260a 100644
--- a/contracts/erc20/tsconfig.json
+++ b/contracts/erc20/tsconfig.json
@@ -1,23 +1,19 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/DummyERC20Token.json",
- "./generated-artifacts/DummyMultipleReturnERC20Token.json",
- "./generated-artifacts/DummyNoReturnERC20Token.json",
- "./generated-artifacts/ReentrantERC20Token.json",
- "./generated-artifacts/ERC20Token.json",
- "./generated-artifacts/IERC20Token.json",
- "./generated-artifacts/MintableERC20Token.json",
- "./generated-artifacts/UnlimitedAllowanceERC20Token.json",
- "./generated-artifacts/IEtherToken.json",
- "./generated-artifacts/WETH9.json",
- "./generated-artifacts/ZRXToken.json"
+ "generated-artifacts/DummyERC20Token.json",
+ "generated-artifacts/DummyMultipleReturnERC20Token.json",
+ "generated-artifacts/DummyNoReturnERC20Token.json",
+ "generated-artifacts/ERC20Token.json",
+ "generated-artifacts/IERC20Token.json",
+ "generated-artifacts/IEtherToken.json",
+ "generated-artifacts/MintableERC20Token.json",
+ "generated-artifacts/ReentrantERC20Token.json",
+ "generated-artifacts/UnlimitedAllowanceERC20Token.json",
+ "generated-artifacts/WETH9.json",
+ "generated-artifacts/ZRXToken.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/erc721/compiler.json b/contracts/erc721/compiler.json
index db8589016..09d79ba28 100644
--- a/contracts/erc721/compiler.json
+++ b/contracts/erc721/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,12 +17,12 @@
}
},
"contracts": [
- "DummyERC721Receiver",
- "InvalidERC721Receiver",
- "DummyERC721Token",
- "ERC721Token",
- "IERC721Receiver",
- "IERC721Token",
- "MintableERC721Token"
+ "src/ERC721Token.sol",
+ "src/MintableERC721Token.sol",
+ "src/interfaces/IERC721Receiver.sol",
+ "src/interfaces/IERC721Token.sol",
+ "test/DummyERC721Receiver.sol",
+ "test/DummyERC721Token.sol",
+ "test/InvalidERC721Receiver.sol"
]
}
diff --git a/contracts/erc721/package.json b/contracts/erc721/package.json
index 4d2c79c46..a8cf7016f 100644
--- a/contracts/erc721/package.json
+++ b/contracts/erc721/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(DummyERC721Receiver|InvalidERC721Receiver|DummyERC721Token|ERC721Token|IERC721Receiver|IERC721Token|MintableERC721Token).json"
+ "abis": "./generated-artifacts/@(DummyERC721Receiver|DummyERC721Token|ERC721Token|IERC721Receiver|IERC721Token|InvalidERC721Receiver|MintableERC721Token).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contracts-test-utils": "^3.0.2",
"@0x/dev-utils": "^2.0.1",
@@ -71,7 +74,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/erc721/src/artifacts.ts b/contracts/erc721/src/artifacts.ts
new file mode 100644
index 000000000..79a76e21b
--- /dev/null
+++ b/contracts/erc721/src/artifacts.ts
@@ -0,0 +1,23 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as DummyERC721Receiver from '../generated-artifacts/DummyERC721Receiver.json';
+import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
+import * as ERC721Token from '../generated-artifacts/ERC721Token.json';
+import * as IERC721Receiver from '../generated-artifacts/IERC721Receiver.json';
+import * as IERC721Token from '../generated-artifacts/IERC721Token.json';
+import * as InvalidERC721Receiver from '../generated-artifacts/InvalidERC721Receiver.json';
+import * as MintableERC721Token from '../generated-artifacts/MintableERC721Token.json';
+export const artifacts = {
+ ERC721Token: ERC721Token as ContractArtifact,
+ MintableERC721Token: MintableERC721Token as ContractArtifact,
+ IERC721Receiver: IERC721Receiver as ContractArtifact,
+ IERC721Token: IERC721Token as ContractArtifact,
+ DummyERC721Receiver: DummyERC721Receiver as ContractArtifact,
+ DummyERC721Token: DummyERC721Token as ContractArtifact,
+ InvalidERC721Receiver: InvalidERC721Receiver as ContractArtifact,
+};
diff --git a/contracts/erc721/src/artifacts/index.ts b/contracts/erc721/src/artifacts/index.ts
deleted file mode 100644
index 8d5ec8a46..000000000
--- a/contracts/erc721/src/artifacts/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as DummyERC721Receiver from '../../generated-artifacts/DummyERC721Receiver.json';
-import * as DummyERC721Token from '../../generated-artifacts/DummyERC721Token.json';
-import * as ERC721Token from '../../generated-artifacts/ERC721Token.json';
-import * as IERC721Receiver from '../../generated-artifacts/IERC721Receiver.json';
-import * as IERC721Token from '../../generated-artifacts/IERC721Token.json';
-import * as InvalidERC721Receiver from '../../generated-artifacts/InvalidERC721Receiver.json';
-import * as MintableERC721Token from '../../generated-artifacts/MintableERC721Token.json';
-
-// tslint:disable:no-unnecessary-type-assertion
-export const artifacts = {
- DummyERC721Receiver: DummyERC721Receiver as ContractArtifact,
- InvalidERC721Receiver: InvalidERC721Receiver as ContractArtifact,
- DummyERC721Token: DummyERC721Token as ContractArtifact,
- ERC721Token: ERC721Token as ContractArtifact,
- IERC721Receiver: IERC721Receiver as ContractArtifact,
- IERC721Token: IERC721Token as ContractArtifact,
- MintableERC721Token: MintableERC721Token as ContractArtifact,
-};
diff --git a/contracts/erc721/src/wrappers.ts b/contracts/erc721/src/wrappers.ts
new file mode 100644
index 000000000..716f6cca4
--- /dev/null
+++ b/contracts/erc721/src/wrappers.ts
@@ -0,0 +1,12 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/dummy_erc721_receiver';
+export * from '../generated-wrappers/dummy_erc721_token';
+export * from '../generated-wrappers/erc721_token';
+export * from '../generated-wrappers/i_erc721_receiver';
+export * from '../generated-wrappers/i_erc721_token';
+export * from '../generated-wrappers/invalid_erc721_receiver';
+export * from '../generated-wrappers/mintable_erc721_token';
diff --git a/contracts/erc721/src/wrappers/index.ts b/contracts/erc721/src/wrappers/index.ts
deleted file mode 100644
index ba6c51885..000000000
--- a/contracts/erc721/src/wrappers/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export * from '../../generated-wrappers/mintable_erc721_token';
-export * from '../../generated-wrappers/invalid_erc721_receiver';
-export * from '../../generated-wrappers/i_erc721_token';
-export * from '../../generated-wrappers/i_erc721_receiver';
-export * from '../../generated-wrappers/erc721_token';
-export * from '../../generated-wrappers/dummy_erc721_token';
-export * from '../../generated-wrappers/dummy_erc721_receiver';
diff --git a/contracts/erc721/tsconfig.json b/contracts/erc721/tsconfig.json
index 098c3a7f3..3b218affe 100644
--- a/contracts/erc721/tsconfig.json
+++ b/contracts/erc721/tsconfig.json
@@ -1,19 +1,15 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/DummyERC721Receiver.json",
- "./generated-artifacts/InvalidERC721Receiver.json",
- "./generated-artifacts/DummyERC721Token.json",
- "./generated-artifacts/ERC721Token.json",
- "./generated-artifacts/IERC721Receiver.json",
- "./generated-artifacts/IERC721Token.json",
- "./generated-artifacts/MintableERC721Token.json"
+ "generated-artifacts/DummyERC721Receiver.json",
+ "generated-artifacts/DummyERC721Token.json",
+ "generated-artifacts/ERC721Token.json",
+ "generated-artifacts/IERC721Receiver.json",
+ "generated-artifacts/IERC721Token.json",
+ "generated-artifacts/InvalidERC721Receiver.json",
+ "generated-artifacts/MintableERC721Token.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/exchange-forwarder/compiler.json b/contracts/exchange-forwarder/compiler.json
index e93eb4bdd..051e81de5 100644
--- a/contracts/exchange-forwarder/compiler.json
+++ b/contracts/exchange-forwarder/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -19,5 +16,11 @@
}
}
},
- "contracts": ["Forwarder"]
+ "contracts": [
+ "@0x/contracts-erc20/contracts/src/WETH9.sol",
+ "@0x/contracts-erc20/contracts/test/DummyERC20Token.sol",
+ "@0x/contracts-erc721/contracts/test/DummyERC721Token.sol",
+ "@0x/contracts-exchange/contracts/src/Exchange.sol",
+ "src/Forwarder.sol"
+ ]
}
diff --git a/contracts/exchange-forwarder/package.json b/contracts/exchange-forwarder/package.json
index 8e7a0c5e0..1ed3bee3a 100644
--- a/contracts/exchange-forwarder/package.json
+++ b/contracts/exchange-forwarder/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(Forwarder).json"
+ "abis": "./generated-artifacts/@(DummyERC20Token|DummyERC721Token|Exchange|Forwarder|WETH9).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contract-wrappers": "^7.0.1",
"@0x/contracts-test-utils": "^3.0.2",
@@ -78,7 +81,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/exchange-forwarder/src/artifacts.ts b/contracts/exchange-forwarder/src/artifacts.ts
new file mode 100644
index 000000000..94bcdf84a
--- /dev/null
+++ b/contracts/exchange-forwarder/src/artifacts.ts
@@ -0,0 +1,19 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
+import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
+import * as Exchange from '../generated-artifacts/Exchange.json';
+import * as Forwarder from '../generated-artifacts/Forwarder.json';
+import * as WETH9 from '../generated-artifacts/WETH9.json';
+export const artifacts = {
+ WETH9: WETH9 as ContractArtifact,
+ DummyERC20Token: DummyERC20Token as ContractArtifact,
+ DummyERC721Token: DummyERC721Token as ContractArtifact,
+ Exchange: Exchange as ContractArtifact,
+ Forwarder: Forwarder as ContractArtifact,
+};
diff --git a/contracts/exchange-forwarder/src/artifacts/index.ts b/contracts/exchange-forwarder/src/artifacts/index.ts
deleted file mode 100644
index f15dac49a..000000000
--- a/contracts/exchange-forwarder/src/artifacts/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as Forwarder from '../../generated-artifacts/Forwarder.json';
-
-export const artifacts = {
- Forwarder: Forwarder as ContractArtifact,
-};
diff --git a/contracts/exchange-forwarder/src/wrappers.ts b/contracts/exchange-forwarder/src/wrappers.ts
new file mode 100644
index 000000000..cbe72c5cf
--- /dev/null
+++ b/contracts/exchange-forwarder/src/wrappers.ts
@@ -0,0 +1,10 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/dummy_erc20_token';
+export * from '../generated-wrappers/dummy_erc721_token';
+export * from '../generated-wrappers/exchange';
+export * from '../generated-wrappers/forwarder';
+export * from '../generated-wrappers/weth9';
diff --git a/contracts/exchange-forwarder/src/wrappers/index.ts b/contracts/exchange-forwarder/src/wrappers/index.ts
deleted file mode 100644
index 89dff9e74..000000000
--- a/contracts/exchange-forwarder/src/wrappers/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from '../../generated-wrappers/forwarder';
diff --git a/contracts/exchange-forwarder/test/forwarder.ts b/contracts/exchange-forwarder/test/forwarder.ts
index 24c219563..5acf113dd 100644
--- a/contracts/exchange-forwarder/test/forwarder.ts
+++ b/contracts/exchange-forwarder/test/forwarder.ts
@@ -1,7 +1,5 @@
import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts, DummyERC20TokenContract, WETH9Contract } from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts, ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange';
+import { ExchangeWrapper } from '@0x/contracts-exchange';
import {
chaiSetup,
constants,
@@ -23,7 +21,15 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import * as chai from 'chai';
import { TransactionReceiptWithDecodedLogs } from 'ethereum-types';
-import { artifacts, ForwarderContract, ForwarderWrapper } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ ExchangeContract,
+ ForwarderContract,
+ ForwarderWrapper,
+ WETH9Contract,
+} from '../src';
chaiSetup.configure();
const expect = chai.expect;
@@ -88,14 +94,14 @@ describe(ContractName.Forwarder, () => {
const erc721Balances = await erc721Wrapper.getBalancesAsync();
erc721MakerAssetIds = erc721Balances[makerAddress][erc721Token.address];
- wethContract = await WETH9Contract.deployFrom0xArtifactAsync(erc20Artifacts.WETH9, provider, txDefaults);
+ wethContract = await WETH9Contract.deployFrom0xArtifactAsync(artifacts.WETH9, provider, txDefaults);
weth = new DummyERC20TokenContract(wethContract.abi, wethContract.address, provider);
erc20Wrapper.addDummyTokenContract(weth);
wethAssetData = assetDataUtils.encodeERC20AssetData(wethContract.address);
zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address);
const exchangeInstance = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
zrxAssetData,
@@ -166,7 +172,7 @@ describe(ContractName.Forwarder, () => {
describe('constructor', () => {
it('should revert if assetProxy is unregistered', async () => {
const exchangeInstance = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
zrxAssetData,
diff --git a/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts b/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts
index 207106852..4f9f6110a 100644
--- a/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts
+++ b/contracts/exchange-forwarder/test/utils/forwarder_wrapper.ts
@@ -1,6 +1,3 @@
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
-import { artifacts as erc721Artifacts } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts } from '@0x/contracts-exchange';
import { constants, formatters, LogDecoder, MarketSellOrders } from '@0x/contracts-test-utils';
import { SignedOrder } from '@0x/types';
import { BigNumber } from '@0x/utils';
@@ -61,12 +58,7 @@ export class ForwarderWrapper {
constructor(contractInstance: ForwarderContract, provider: Provider) {
this._forwarderContract = contractInstance;
this._web3Wrapper = new Web3Wrapper(provider);
- this._logDecoder = new LogDecoder(this._web3Wrapper, {
- ...artifacts,
- ...erc20Artifacts,
- ...erc721Artifacts,
- ...exchangeArtifacts,
- });
+ this._logDecoder = new LogDecoder(this._web3Wrapper, artifacts);
}
public async marketSellOrdersWithEthAsync(
orders: SignedOrder[],
diff --git a/contracts/exchange-forwarder/tsconfig.json b/contracts/exchange-forwarder/tsconfig.json
index cd80b5a5f..92c3a0475 100644
--- a/contracts/exchange-forwarder/tsconfig.json
+++ b/contracts/exchange-forwarder/tsconfig.json
@@ -1,11 +1,13 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
- "files": ["./generated-artifacts/Forwarder.json"],
+ "files": [
+ "generated-artifacts/DummyERC20Token.json",
+ "generated-artifacts/DummyERC721Token.json",
+ "generated-artifacts/Exchange.json",
+ "generated-artifacts/Forwarder.json",
+ "generated-artifacts/WETH9.json"
+ ],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/exchange-libs/compiler.json b/contracts/exchange-libs/compiler.json
index c4f0c6bd9..2a69896e6 100644
--- a/contracts/exchange-libs/compiler.json
+++ b/contracts/exchange-libs/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,13 +17,13 @@
}
},
"contracts": [
- "TestLibs",
- "LibOrder",
- "LibMath",
- "LibFillResults",
- "LibAbiEncoder",
- "LibEIP712",
- "LibAssetProxyErrors",
- "LibConstants"
+ "src/LibAbiEncoder.sol",
+ "src/LibAssetProxyErrors.sol",
+ "src/LibConstants.sol",
+ "src/LibEIP712.sol",
+ "src/LibFillResults.sol",
+ "src/LibMath.sol",
+ "src/LibOrder.sol",
+ "test/TestLibs.sol"
]
}
diff --git a/contracts/exchange-libs/package.json b/contracts/exchange-libs/package.json
index 6bf8267be..2b7a1c404 100644
--- a/contracts/exchange-libs/package.json
+++ b/contracts/exchange-libs/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(LibMath|LibOrder|LibFillResults|LibAbiEncoder|TestLibs|LibEIP712).json"
+ "abis": "./generated-artifacts/@(LibAbiEncoder|LibAssetProxyErrors|LibConstants|LibEIP712|LibFillResults|LibMath|LibOrder|TestLibs).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/libs/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contracts-test-utils": "^3.0.2",
"@0x/dev-utils": "^2.0.1",
@@ -72,7 +75,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/exchange-libs/src/artifacts.ts b/contracts/exchange-libs/src/artifacts.ts
new file mode 100644
index 000000000..861d6f3d2
--- /dev/null
+++ b/contracts/exchange-libs/src/artifacts.ts
@@ -0,0 +1,25 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as LibAbiEncoder from '../generated-artifacts/LibAbiEncoder.json';
+import * as LibAssetProxyErrors from '../generated-artifacts/LibAssetProxyErrors.json';
+import * as LibConstants from '../generated-artifacts/LibConstants.json';
+import * as LibEIP712 from '../generated-artifacts/LibEIP712.json';
+import * as LibFillResults from '../generated-artifacts/LibFillResults.json';
+import * as LibMath from '../generated-artifacts/LibMath.json';
+import * as LibOrder from '../generated-artifacts/LibOrder.json';
+import * as TestLibs from '../generated-artifacts/TestLibs.json';
+export const artifacts = {
+ LibAbiEncoder: LibAbiEncoder as ContractArtifact,
+ LibAssetProxyErrors: LibAssetProxyErrors as ContractArtifact,
+ LibConstants: LibConstants as ContractArtifact,
+ LibEIP712: LibEIP712 as ContractArtifact,
+ LibFillResults: LibFillResults as ContractArtifact,
+ LibMath: LibMath as ContractArtifact,
+ LibOrder: LibOrder as ContractArtifact,
+ TestLibs: TestLibs as ContractArtifact,
+};
diff --git a/contracts/exchange-libs/src/artifacts/index.ts b/contracts/exchange-libs/src/artifacts/index.ts
deleted file mode 100644
index 3955bbe2b..000000000
--- a/contracts/exchange-libs/src/artifacts/index.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as LibAbiEncoder from '../../generated-artifacts/LibAbiEncoder.json';
-import * as LibEIP721 from '../../generated-artifacts/LibEIP712.json';
-import * as LibFillResults from '../../generated-artifacts/LibFillResults.json';
-import * as LibMath from '../../generated-artifacts/LibMath.json';
-import * as LibOrder from '../../generated-artifacts/LibOrder.json';
-import * as TestLibs from '../../generated-artifacts/TestLibs.json';
-
-export const artifacts = {
- TestLibs: TestLibs as ContractArtifact,
- LibAbiEncoder: LibAbiEncoder as ContractArtifact,
- LibFillResults: LibFillResults as ContractArtifact,
- LibMath: LibMath as ContractArtifact,
- LibOrder: LibOrder as ContractArtifact,
- LibEIP721: LibEIP721 as ContractArtifact,
-};
diff --git a/contracts/exchange-libs/src/wrappers.ts b/contracts/exchange-libs/src/wrappers.ts
new file mode 100644
index 000000000..05244d87b
--- /dev/null
+++ b/contracts/exchange-libs/src/wrappers.ts
@@ -0,0 +1,13 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/lib_abi_encoder';
+export * from '../generated-wrappers/lib_asset_proxy_errors';
+export * from '../generated-wrappers/lib_constants';
+export * from '../generated-wrappers/lib_e_i_p712';
+export * from '../generated-wrappers/lib_fill_results';
+export * from '../generated-wrappers/lib_math';
+export * from '../generated-wrappers/lib_order';
+export * from '../generated-wrappers/test_libs';
diff --git a/contracts/exchange-libs/src/wrappers/index.ts b/contracts/exchange-libs/src/wrappers/index.ts
deleted file mode 100644
index baaae6e34..000000000
--- a/contracts/exchange-libs/src/wrappers/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from '../../generated-wrappers/test_libs';
-export * from '../../generated-wrappers/lib_abi_encoder';
-export * from '../../generated-wrappers/lib_fill_results';
-export * from '../../generated-wrappers/lib_math';
-export * from '../../generated-wrappers/lib_order';
-export * from '../../generated-wrappers/lib_e_i_p712';
diff --git a/contracts/exchange-libs/tsconfig.json b/contracts/exchange-libs/tsconfig.json
index 27ca35085..1b5d54175 100644
--- a/contracts/exchange-libs/tsconfig.json
+++ b/contracts/exchange-libs/tsconfig.json
@@ -1,18 +1,16 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/TestLibs.json",
- "./generated-artifacts/LibOrder.json",
- "./generated-artifacts/LibFillResults.json",
- "./generated-artifacts/LibAbiEncoder.json",
- "./generated-artifacts/LibEIP712.json",
- "./generated-artifacts/LibMath.json"
+ "generated-artifacts/LibAbiEncoder.json",
+ "generated-artifacts/LibAssetProxyErrors.json",
+ "generated-artifacts/LibConstants.json",
+ "generated-artifacts/LibEIP712.json",
+ "generated-artifacts/LibFillResults.json",
+ "generated-artifacts/LibMath.json",
+ "generated-artifacts/LibOrder.json",
+ "generated-artifacts/TestLibs.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/exchange/compiler.json b/contracts/exchange/compiler.json
index 6a5f666d1..b7a94cd13 100644
--- a/contracts/exchange/compiler.json
+++ b/contracts/exchange/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,23 +17,31 @@
}
},
"contracts": [
- "Exchange",
- "IAssetProxyDispatcher",
- "IExchange",
- "IExchangeCore",
- "IMatchOrders",
- "ISignatureValidator",
- "ITransactions",
- "IValidator",
- "IWallet",
- "IWrapperFunctions",
- "TestAssetProxyDispatcher",
- "TestExchangeInternals",
- "TestSignatureValidator",
- "TestStaticCallReceiver",
- "ExchangeWrapper",
- "Validator",
- "Wallet",
- "Whitelist"
+ "@0x/contracts-asset-proxy/contracts/src/ERC20Proxy.sol",
+ "@0x/contracts-asset-proxy/contracts/src/ERC721Proxy.sol",
+ "@0x/contracts-asset-proxy/contracts/src/MultiAssetProxy.sol",
+ "@0x/contracts-erc20/contracts/test/DummyERC20Token.sol",
+ "@0x/contracts-erc20/contracts/test/DummyNoReturnERC20Token.sol",
+ "@0x/contracts-erc20/contracts/test/ReentrantERC20Token.sol",
+ "@0x/contracts-erc721/contracts/test/DummyERC721Token.sol",
+ "@0x/contracts-exchange-libs/contracts/test/TestLibs.sol",
+ "examples/ExchangeWrapper.sol",
+ "examples/Validator.sol",
+ "examples/Wallet.sol",
+ "examples/Whitelist.sol",
+ "src/Exchange.sol",
+ "src/interfaces/IAssetProxyDispatcher.sol",
+ "src/interfaces/IExchange.sol",
+ "src/interfaces/IExchangeCore.sol",
+ "src/interfaces/IMatchOrders.sol",
+ "src/interfaces/ISignatureValidator.sol",
+ "src/interfaces/ITransactions.sol",
+ "src/interfaces/IValidator.sol",
+ "src/interfaces/IWallet.sol",
+ "src/interfaces/IWrapperFunctions.sol",
+ "test/TestAssetProxyDispatcher.sol",
+ "test/TestExchangeInternals.sol",
+ "test/TestSignatureValidator.sol",
+ "test/TestStaticCallReceiver.sol"
]
}
diff --git a/contracts/exchange/package.json b/contracts/exchange/package.json
index ca4b1fd00..6c3781b54 100644
--- a/contracts/exchange/package.json
+++ b/contracts/exchange/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(ERC20Proxy|ERC721Proxy|Exchange|IAssetProxyDispatcher|IExchange|IExchangeCore|IMatchOrders|ISignatureValidator|ITransactions|IWrapperFunctions|IValidator|IWallet|MixinAuthorizable|MultiAssetProxy|TestSignatureValidator|TestAssetProxyDispatcher|TestExchangeInternals|TestStaticCallReceiver|ExchangeWrapper|Validator|Wallet|Whitelist).json"
+ "abis": "./generated-artifacts/@(DummyERC20Token|DummyERC721Token|DummyNoReturnERC20Token|ERC20Proxy|ERC721Proxy|Exchange|ExchangeWrapper|IAssetProxyDispatcher|IExchange|IExchangeCore|IMatchOrders|ISignatureValidator|ITransactions|IValidator|IWallet|IWrapperFunctions|MultiAssetProxy|ReentrantERC20Token|TestAssetProxyDispatcher|TestExchangeInternals|TestLibs|TestSignatureValidator|TestStaticCallReceiver|Validator|Wallet|Whitelist).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/protocol/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/dev-utils": "^2.0.1",
"@0x/sol-compiler": "^3.0.1",
@@ -77,7 +80,7 @@
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
"ethereumjs-util": "^5.1.1",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/exchange/src/artifacts.ts b/contracts/exchange/src/artifacts.ts
new file mode 100644
index 000000000..efdacd376
--- /dev/null
+++ b/contracts/exchange/src/artifacts.ts
@@ -0,0 +1,61 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
+import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
+import * as DummyNoReturnERC20Token from '../generated-artifacts/DummyNoReturnERC20Token.json';
+import * as ERC20Proxy from '../generated-artifacts/ERC20Proxy.json';
+import * as ERC721Proxy from '../generated-artifacts/ERC721Proxy.json';
+import * as Exchange from '../generated-artifacts/Exchange.json';
+import * as ExchangeWrapper from '../generated-artifacts/ExchangeWrapper.json';
+import * as IAssetProxyDispatcher from '../generated-artifacts/IAssetProxyDispatcher.json';
+import * as IExchange from '../generated-artifacts/IExchange.json';
+import * as IExchangeCore from '../generated-artifacts/IExchangeCore.json';
+import * as IMatchOrders from '../generated-artifacts/IMatchOrders.json';
+import * as ISignatureValidator from '../generated-artifacts/ISignatureValidator.json';
+import * as ITransactions from '../generated-artifacts/ITransactions.json';
+import * as IValidator from '../generated-artifacts/IValidator.json';
+import * as IWallet from '../generated-artifacts/IWallet.json';
+import * as IWrapperFunctions from '../generated-artifacts/IWrapperFunctions.json';
+import * as MultiAssetProxy from '../generated-artifacts/MultiAssetProxy.json';
+import * as ReentrantERC20Token from '../generated-artifacts/ReentrantERC20Token.json';
+import * as TestAssetProxyDispatcher from '../generated-artifacts/TestAssetProxyDispatcher.json';
+import * as TestExchangeInternals from '../generated-artifacts/TestExchangeInternals.json';
+import * as TestLibs from '../generated-artifacts/TestLibs.json';
+import * as TestSignatureValidator from '../generated-artifacts/TestSignatureValidator.json';
+import * as TestStaticCallReceiver from '../generated-artifacts/TestStaticCallReceiver.json';
+import * as Validator from '../generated-artifacts/Validator.json';
+import * as Wallet from '../generated-artifacts/Wallet.json';
+import * as Whitelist from '../generated-artifacts/Whitelist.json';
+export const artifacts = {
+ ERC20Proxy: ERC20Proxy as ContractArtifact,
+ ERC721Proxy: ERC721Proxy as ContractArtifact,
+ MultiAssetProxy: MultiAssetProxy as ContractArtifact,
+ DummyERC20Token: DummyERC20Token as ContractArtifact,
+ DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
+ ReentrantERC20Token: ReentrantERC20Token as ContractArtifact,
+ DummyERC721Token: DummyERC721Token as ContractArtifact,
+ TestLibs: TestLibs as ContractArtifact,
+ ExchangeWrapper: ExchangeWrapper as ContractArtifact,
+ Validator: Validator as ContractArtifact,
+ Wallet: Wallet as ContractArtifact,
+ Whitelist: Whitelist as ContractArtifact,
+ Exchange: Exchange as ContractArtifact,
+ IAssetProxyDispatcher: IAssetProxyDispatcher as ContractArtifact,
+ IExchange: IExchange as ContractArtifact,
+ IExchangeCore: IExchangeCore as ContractArtifact,
+ IMatchOrders: IMatchOrders as ContractArtifact,
+ ISignatureValidator: ISignatureValidator as ContractArtifact,
+ ITransactions: ITransactions as ContractArtifact,
+ IValidator: IValidator as ContractArtifact,
+ IWallet: IWallet as ContractArtifact,
+ IWrapperFunctions: IWrapperFunctions as ContractArtifact,
+ TestAssetProxyDispatcher: TestAssetProxyDispatcher as ContractArtifact,
+ TestExchangeInternals: TestExchangeInternals as ContractArtifact,
+ TestSignatureValidator: TestSignatureValidator as ContractArtifact,
+ TestStaticCallReceiver: TestStaticCallReceiver as ContractArtifact,
+};
diff --git a/contracts/exchange/src/artifacts/index.ts b/contracts/exchange/src/artifacts/index.ts
deleted file mode 100644
index 798ff17ab..000000000
--- a/contracts/exchange/src/artifacts/index.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as Exchange from '../../generated-artifacts/Exchange.json';
-import * as ExchangeWrapper from '../../generated-artifacts/ExchangeWrapper.json';
-import * as IAssetProxyDispatcher from '../../generated-artifacts/IAssetProxyDispatcher.json';
-import * as IExchange from '../../generated-artifacts/IExchange.json';
-import * as IExchangeCore from '../../generated-artifacts/IExchangeCore.json';
-import * as IMatchOrders from '../../generated-artifacts/IMatchOrders.json';
-import * as ISignatureValidator from '../../generated-artifacts/ISignatureValidator.json';
-import * as ITransactions from '../../generated-artifacts/ITransactions.json';
-import * as IValidator from '../../generated-artifacts/IValidator.json';
-import * as IWallet from '../../generated-artifacts/IWallet.json';
-import * as IWrapperFunctions from '../../generated-artifacts/IWrapperFunctions.json';
-import * as TestAssetProxyDispatcher from '../../generated-artifacts/TestAssetProxyDispatcher.json';
-import * as TestExchangeInternals from '../../generated-artifacts/TestExchangeInternals.json';
-import * as TestSignatureValidator from '../../generated-artifacts/TestSignatureValidator.json';
-import * as TestStaticCallReceiver from '../../generated-artifacts/TestStaticCallReceiver.json';
-import * as Validator from '../../generated-artifacts/Validator.json';
-import * as Wallet from '../../generated-artifacts/Wallet.json';
-import * as Whitelist from '../../generated-artifacts/Whitelist.json';
-
-export const artifacts = {
- Exchange: Exchange as ContractArtifact,
- TestAssetProxyDispatcher: TestAssetProxyDispatcher as ContractArtifact,
- TestExchangeInternals: TestExchangeInternals as ContractArtifact,
- TestSignatureValidator: TestSignatureValidator as ContractArtifact,
- TestStaticCallReceiver: TestStaticCallReceiver as ContractArtifact,
- IExchange: IExchange as ContractArtifact,
- IExchangeCore: IExchangeCore as ContractArtifact,
- IMatchOrders: IMatchOrders as ContractArtifact,
- ISignatureValidator: ISignatureValidator as ContractArtifact,
- ITransactions: ITransactions as ContractArtifact,
- IWrapperFunctions: IWrapperFunctions as ContractArtifact,
- IAssetProxyDispatcher: IAssetProxyDispatcher as ContractArtifact,
- IValidator: IValidator as ContractArtifact,
- IWallet: IWallet as ContractArtifact,
- ExchangeWrapper: ExchangeWrapper as ContractArtifact,
- Validator: Validator as ContractArtifact,
- Wallet: Wallet as ContractArtifact,
- Whitelist: Whitelist as ContractArtifact,
-};
diff --git a/contracts/exchange/src/wrappers.ts b/contracts/exchange/src/wrappers.ts
new file mode 100644
index 000000000..1c1d7fdb4
--- /dev/null
+++ b/contracts/exchange/src/wrappers.ts
@@ -0,0 +1,31 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/dummy_erc20_token';
+export * from '../generated-wrappers/dummy_erc721_token';
+export * from '../generated-wrappers/dummy_no_return_erc20_token';
+export * from '../generated-wrappers/erc20_proxy';
+export * from '../generated-wrappers/erc721_proxy';
+export * from '../generated-wrappers/exchange';
+export * from '../generated-wrappers/exchange_wrapper';
+export * from '../generated-wrappers/i_asset_proxy_dispatcher';
+export * from '../generated-wrappers/i_exchange';
+export * from '../generated-wrappers/i_exchange_core';
+export * from '../generated-wrappers/i_match_orders';
+export * from '../generated-wrappers/i_signature_validator';
+export * from '../generated-wrappers/i_transactions';
+export * from '../generated-wrappers/i_validator';
+export * from '../generated-wrappers/i_wallet';
+export * from '../generated-wrappers/i_wrapper_functions';
+export * from '../generated-wrappers/multi_asset_proxy';
+export * from '../generated-wrappers/reentrant_erc20_token';
+export * from '../generated-wrappers/test_asset_proxy_dispatcher';
+export * from '../generated-wrappers/test_exchange_internals';
+export * from '../generated-wrappers/test_libs';
+export * from '../generated-wrappers/test_signature_validator';
+export * from '../generated-wrappers/test_static_call_receiver';
+export * from '../generated-wrappers/validator';
+export * from '../generated-wrappers/wallet';
+export * from '../generated-wrappers/whitelist';
diff --git a/contracts/exchange/src/wrappers/index.ts b/contracts/exchange/src/wrappers/index.ts
deleted file mode 100644
index 86e939b56..000000000
--- a/contracts/exchange/src/wrappers/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export * from '../../generated-wrappers/exchange';
-export * from '../../generated-wrappers/test_asset_proxy_dispatcher';
-export * from '../../generated-wrappers/test_exchange_internals';
-export * from '../../generated-wrappers/test_signature_validator';
-export * from '../../generated-wrappers/test_static_call_receiver';
-export * from '../../generated-wrappers/i_asset_proxy_dispatcher';
-export * from '../../generated-wrappers/i_exchange';
-export * from '../../generated-wrappers/i_exchange_core';
-export * from '../../generated-wrappers/i_match_orders';
-export * from '../../generated-wrappers/i_signature_validator';
-export * from '../../generated-wrappers/i_transactions';
-export * from '../../generated-wrappers/i_wrapper_functions';
-export * from '../../generated-wrappers/i_validator';
-export * from '../../generated-wrappers/i_wallet';
-export * from '../../generated-wrappers/exchange_wrapper';
-export * from '../../generated-wrappers/validator';
-export * from '../../generated-wrappers/wallet';
-export * from '../../generated-wrappers/whitelist';
diff --git a/contracts/exchange/test/core.ts b/contracts/exchange/test/core.ts
index 74161cc73..7e61ef7ac 100644
--- a/contracts/exchange/test/core.ts
+++ b/contracts/exchange/test/core.ts
@@ -1,19 +1,4 @@
-import {
- artifacts as proxyArtifacts,
- ERC20ProxyContract,
- ERC20Wrapper,
- ERC721ProxyContract,
- ERC721Wrapper,
- MultiAssetProxyContract,
-} from '@0x/contracts-asset-proxy';
-import {
- artifacts as erc20Artifacts,
- DummyERC20TokenContract,
- DummyERC20TokenTransferEventArgs,
- DummyNoReturnERC20TokenContract,
- ReentrantERC20TokenContract,
-} from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
+import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
import {
chaiSetup,
constants,
@@ -39,9 +24,17 @@ import * as _ from 'lodash';
import {
artifacts,
+ DummyERC20TokenContract,
+ DummyERC20TokenTransferEventArgs,
+ DummyERC721TokenContract,
+ DummyNoReturnERC20TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
ExchangeCancelEventArgs,
ExchangeContract,
ExchangeWrapper,
+ MultiAssetProxyContract,
+ ReentrantERC20TokenContract,
TestStaticCallReceiverContract,
} from '../src';
@@ -98,7 +91,7 @@ describe('Exchange core', () => {
erc20Proxy = await erc20Wrapper.deployProxyAsync();
erc721Proxy = await erc721Wrapper.deployProxyAsync();
multiAssetProxy = await MultiAssetProxyContract.deployFrom0xArtifactAsync(
- proxyArtifacts.MultiAssetProxy,
+ artifacts.MultiAssetProxy,
provider,
txDefaults,
);
@@ -120,7 +113,7 @@ describe('Exchange core', () => {
txDefaults,
);
reentrantErc20Token = await ReentrantERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.ReentrantERC20Token,
+ artifacts.ReentrantERC20Token,
provider,
txDefaults,
exchange.address,
@@ -345,7 +338,7 @@ describe('Exchange core', () => {
describe('Testing exchange of ERC20 tokens with no return values', () => {
before(async () => {
noReturnErc20Token = await DummyNoReturnERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.DummyNoReturnERC20Token,
+ artifacts.DummyNoReturnERC20Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
diff --git a/contracts/exchange/test/dispatcher.ts b/contracts/exchange/test/dispatcher.ts
index a25755936..8263b0402 100644
--- a/contracts/exchange/test/dispatcher.ts
+++ b/contracts/exchange/test/dispatcher.ts
@@ -1,11 +1,4 @@
-import {
- artifacts as proxyArtifacts,
- ERC20ProxyContract,
- ERC20Wrapper,
- ERC721ProxyContract,
- ERC721Wrapper,
-} from '@0x/contracts-asset-proxy';
-import { DummyERC20TokenContract } from '@0x/contracts-erc20';
+import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
import {
chaiSetup,
constants,
@@ -25,6 +18,9 @@ import * as _ from 'lodash';
import {
artifacts,
+ DummyERC20TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
TestAssetProxyDispatcherAssetProxyRegisteredEventArgs,
TestAssetProxyDispatcherContract,
} from '../src';
@@ -131,7 +127,7 @@ describe('AssetProxyDispatcher', () => {
expect(proxyAddress).to.be.equal(erc20Proxy.address);
// Deploy a new version of the ERC20 Transfer Proxy contract
const newErc20TransferProxy = await ERC20ProxyContract.deployFrom0xArtifactAsync(
- proxyArtifacts.ERC20Proxy,
+ artifacts.ERC20Proxy,
provider,
txDefaults,
);
diff --git a/contracts/exchange/test/match_orders.ts b/contracts/exchange/test/match_orders.ts
index d17025ddd..98fea67ea 100644
--- a/contracts/exchange/test/match_orders.ts
+++ b/contracts/exchange/test/match_orders.ts
@@ -1,6 +1,4 @@
-import { ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts, DummyERC20TokenContract, ReentrantERC20TokenContract } from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
+import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
import {
chaiSetup,
constants,
@@ -20,7 +18,18 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import * as chai from 'chai';
import * as _ from 'lodash';
-import { artifacts, ExchangeContract, ExchangeWrapper, MatchOrderTester, TestExchangeInternalsContract } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
+ ExchangeContract,
+ ExchangeWrapper,
+ MatchOrderTester,
+ ReentrantERC20TokenContract,
+ TestExchangeInternalsContract,
+} from '../src';
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
chaiSetup.configure();
@@ -131,7 +140,7 @@ describe('matchOrders', () => {
);
reentrantErc20Token = await ReentrantERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.ReentrantERC20Token,
+ artifacts.ReentrantERC20Token,
provider,
txDefaults,
exchange.address,
diff --git a/contracts/exchange/test/signature_validator.ts b/contracts/exchange/test/signature_validator.ts
index 89eac4ddb..33510e50c 100644
--- a/contracts/exchange/test/signature_validator.ts
+++ b/contracts/exchange/test/signature_validator.ts
@@ -1,4 +1,3 @@
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
import {
addressUtils,
chaiSetup,
@@ -78,7 +77,7 @@ describe('MixinSignatureValidator', () => {
provider,
txDefaults,
);
- signatureValidatorLogDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...erc20Artifacts });
+ signatureValidatorLogDecoder = new LogDecoder(web3Wrapper, artifacts);
await web3Wrapper.awaitTransactionSuccessAsync(
await signatureValidator.setSignatureValidatorApproval.sendTransactionAsync(testValidator.address, true, {
from: signerAddress,
diff --git a/contracts/exchange/test/utils/exchange_wrapper.ts b/contracts/exchange/test/utils/exchange_wrapper.ts
index 03c37c4a9..535e3bcf2 100644
--- a/contracts/exchange/test/utils/exchange_wrapper.ts
+++ b/contracts/exchange/test/utils/exchange_wrapper.ts
@@ -1,5 +1,3 @@
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
-import { artifacts as erc721Artifacts } from '@0x/contracts-erc721';
import { FillResults, formatters, LogDecoder, OrderInfo, orderUtils } from '@0x/contracts-test-utils';
import { SignedOrder, SignedZeroExTransaction } from '@0x/types';
import { AbiEncoder, BigNumber } from '@0x/utils';
@@ -18,7 +16,7 @@ export class ExchangeWrapper {
constructor(exchangeContract: ExchangeContract, provider: Provider) {
this._exchange = exchangeContract;
this._web3Wrapper = new Web3Wrapper(provider);
- this._logDecoder = new LogDecoder(this._web3Wrapper, { ...artifacts, ...erc20Artifacts, ...erc721Artifacts });
+ this._logDecoder = new LogDecoder(this._web3Wrapper, artifacts);
}
public async fillOrderAsync(
signedOrder: SignedOrder,
diff --git a/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts b/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts
index 26b168909..00ca8a9fc 100644
--- a/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts
+++ b/contracts/exchange/test/utils/fill_order_combinatorial_utils.ts
@@ -1,5 +1,4 @@
import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { artifacts as libsArtifacts, TestLibsContract } from '@0x/contracts-exchange-libs';
import {
AllowanceAmountScenario,
AssetDataScenario,
@@ -33,7 +32,7 @@ import { LogWithDecodedArgs, Provider, TxData } from 'ethereum-types';
import * as _ from 'lodash';
import 'make-promises-safe';
-import { artifacts, ExchangeContract, ExchangeFillEventArgs } from '../../src';
+import { artifacts, ExchangeContract, ExchangeFillEventArgs, TestLibsContract } from '../../src';
import { AssetWrapper } from './asset_wrapper';
import { ExchangeWrapper } from './exchange_wrapper';
@@ -129,11 +128,7 @@ export async function fillOrderCombinatorialUtilsFactoryAsync(
exchangeContract.address,
);
- const testLibsContract = await TestLibsContract.deployFrom0xArtifactAsync(
- libsArtifacts.TestLibs,
- provider,
- txDefaults,
- );
+ const testLibsContract = await TestLibsContract.deployFrom0xArtifactAsync(artifacts.TestLibs, provider, txDefaults);
const fillOrderCombinatorialUtils = new FillOrderCombinatorialUtils(
orderFactory,
diff --git a/contracts/exchange/test/wrapper.ts b/contracts/exchange/test/wrapper.ts
index 62a0d426f..5476ac99d 100644
--- a/contracts/exchange/test/wrapper.ts
+++ b/contracts/exchange/test/wrapper.ts
@@ -1,6 +1,4 @@
-import { ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts, DummyERC20TokenContract, ReentrantERC20TokenContract } from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
+import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
import {
chaiSetup,
constants,
@@ -22,7 +20,16 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import * as chai from 'chai';
import * as _ from 'lodash';
-import { artifacts, ExchangeContract, ExchangeWrapper } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
+ ExchangeContract,
+ ExchangeWrapper,
+ ReentrantERC20TokenContract,
+} from '../src';
chaiSetup.configure();
const expect = chai.expect;
@@ -107,7 +114,7 @@ describe('Exchange wrappers', () => {
);
reentrantErc20Token = await ReentrantERC20TokenContract.deployFrom0xArtifactAsync(
- erc20Artifacts.ReentrantERC20Token,
+ artifacts.ReentrantERC20Token,
provider,
txDefaults,
exchange.address,
diff --git a/contracts/exchange/tsconfig.json b/contracts/exchange/tsconfig.json
index b0fcd1771..35ca3d933 100644
--- a/contracts/exchange/tsconfig.json
+++ b/contracts/exchange/tsconfig.json
@@ -1,30 +1,34 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/IAssetProxyDispatcher.json",
- "./generated-artifacts/IExchange.json",
- "./generated-artifacts/IExchangeCore.json",
- "./generated-artifacts/IMatchOrders.json",
- "./generated-artifacts/ISignatureValidator.json",
- "./generated-artifacts/ITransactions.json",
- "./generated-artifacts/IValidator.json",
- "./generated-artifacts/IWallet.json",
- "./generated-artifacts/IWrapperFunctions.json",
- "./generated-artifacts/Exchange.json",
- "./generated-artifacts/TestAssetProxyDispatcher.json",
- "./generated-artifacts/TestExchangeInternals.json",
- "./generated-artifacts/TestSignatureValidator.json",
- "./generated-artifacts/TestStaticCallReceiver.json",
- "./generated-artifacts/ExchangeWrapper.json",
- "./generated-artifacts/Validator.json",
- "./generated-artifacts/Wallet.json",
- "./generated-artifacts/Whitelist.json"
+ "generated-artifacts/DummyERC20Token.json",
+ "generated-artifacts/DummyERC721Token.json",
+ "generated-artifacts/DummyNoReturnERC20Token.json",
+ "generated-artifacts/ERC20Proxy.json",
+ "generated-artifacts/ERC721Proxy.json",
+ "generated-artifacts/Exchange.json",
+ "generated-artifacts/ExchangeWrapper.json",
+ "generated-artifacts/IAssetProxyDispatcher.json",
+ "generated-artifacts/IExchange.json",
+ "generated-artifacts/IExchangeCore.json",
+ "generated-artifacts/IMatchOrders.json",
+ "generated-artifacts/ISignatureValidator.json",
+ "generated-artifacts/ITransactions.json",
+ "generated-artifacts/IValidator.json",
+ "generated-artifacts/IWallet.json",
+ "generated-artifacts/IWrapperFunctions.json",
+ "generated-artifacts/MultiAssetProxy.json",
+ "generated-artifacts/ReentrantERC20Token.json",
+ "generated-artifacts/TestAssetProxyDispatcher.json",
+ "generated-artifacts/TestExchangeInternals.json",
+ "generated-artifacts/TestLibs.json",
+ "generated-artifacts/TestSignatureValidator.json",
+ "generated-artifacts/TestStaticCallReceiver.json",
+ "generated-artifacts/Validator.json",
+ "generated-artifacts/Wallet.json",
+ "generated-artifacts/Whitelist.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/extensions/compiler.json b/contracts/extensions/compiler.json
index 91e0bd429..41fd582ad 100644
--- a/contracts/extensions/compiler.json
+++ b/contracts/extensions/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -19,5 +16,17 @@
}
}
},
- "contracts": ["BalanceThresholdFilter", "DutchAuction", "OrderMatcher", "OrderValidator"]
+ "contracts": [
+ "@0x/contracts-asset-proxy/contracts/src/ERC20Proxy.sol",
+ "@0x/contracts-asset-proxy/contracts/src/ERC721Proxy.sol",
+ "@0x/contracts-erc20/contracts/src/WETH9.sol",
+ "@0x/contracts-erc20/contracts/test/DummyERC20Token.sol",
+ "@0x/contracts-erc721/contracts/test/DummyERC721Token.sol",
+ "@0x/contracts-exchange/contracts/examples/ExchangeWrapper.sol",
+ "@0x/contracts-exchange/contracts/src/Exchange.sol",
+ "src/BalanceThresholdFilter/BalanceThresholdFilter.sol",
+ "src/DutchAuction/DutchAuction.sol",
+ "src/OrderMatcher/OrderMatcher.sol",
+ "src/OrderValidator/OrderValidator.sol"
+ ]
}
diff --git a/contracts/extensions/package.json b/contracts/extensions/package.json
index 0a8cf7fc0..118926eb5 100644
--- a/contracts/extensions/package.json
+++ b/contracts/extensions/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(BalanceThresholdFilter|DutchAuction|OrderMatcher|OrderValidator).json"
+ "abis": "./generated-artifacts/@(BalanceThresholdFilter|DummyERC20Token|DummyERC721Token|DutchAuction|ERC20Proxy|ERC721Proxy|Exchange|ExchangeWrapper|OrderMatcher|OrderValidator|WETH9).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contract-wrappers": "^7.0.1",
"@0x/contracts-test-utils": "^3.0.2",
@@ -78,7 +81,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/extensions/src/artifacts.ts b/contracts/extensions/src/artifacts.ts
new file mode 100644
index 000000000..efa5c859c
--- /dev/null
+++ b/contracts/extensions/src/artifacts.ts
@@ -0,0 +1,31 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as BalanceThresholdFilter from '../generated-artifacts/BalanceThresholdFilter.json';
+import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
+import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
+import * as DutchAuction from '../generated-artifacts/DutchAuction.json';
+import * as ERC20Proxy from '../generated-artifacts/ERC20Proxy.json';
+import * as ERC721Proxy from '../generated-artifacts/ERC721Proxy.json';
+import * as Exchange from '../generated-artifacts/Exchange.json';
+import * as ExchangeWrapper from '../generated-artifacts/ExchangeWrapper.json';
+import * as OrderMatcher from '../generated-artifacts/OrderMatcher.json';
+import * as OrderValidator from '../generated-artifacts/OrderValidator.json';
+import * as WETH9 from '../generated-artifacts/WETH9.json';
+export const artifacts = {
+ ERC20Proxy: ERC20Proxy as ContractArtifact,
+ ERC721Proxy: ERC721Proxy as ContractArtifact,
+ WETH9: WETH9 as ContractArtifact,
+ DummyERC20Token: DummyERC20Token as ContractArtifact,
+ DummyERC721Token: DummyERC721Token as ContractArtifact,
+ ExchangeWrapper: ExchangeWrapper as ContractArtifact,
+ Exchange: Exchange as ContractArtifact,
+ BalanceThresholdFilter: BalanceThresholdFilter as ContractArtifact,
+ DutchAuction: DutchAuction as ContractArtifact,
+ OrderMatcher: OrderMatcher as ContractArtifact,
+ OrderValidator: OrderValidator as ContractArtifact,
+};
diff --git a/contracts/extensions/src/artifacts/index.ts b/contracts/extensions/src/artifacts/index.ts
deleted file mode 100644
index f2aee4908..000000000
--- a/contracts/extensions/src/artifacts/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as BalanceThresholdFilter from '../../generated-artifacts/BalanceThresholdFilter.json';
-import * as DutchAuction from '../../generated-artifacts/DutchAuction.json';
-import * as OrderMatcher from '../../generated-artifacts/OrderMatcher.json';
-import * as OrderValidator from '../../generated-artifacts/OrderValidator.json';
-
-export const artifacts = {
- BalanceThresholdFilter: BalanceThresholdFilter as ContractArtifact,
- DutchAuction: DutchAuction as ContractArtifact,
- OrderMatcher: OrderMatcher as ContractArtifact,
- OrderValidator: OrderValidator as ContractArtifact,
-};
diff --git a/contracts/extensions/src/wrappers.ts b/contracts/extensions/src/wrappers.ts
new file mode 100644
index 000000000..1a67d2ee3
--- /dev/null
+++ b/contracts/extensions/src/wrappers.ts
@@ -0,0 +1,16 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/balance_threshold_filter';
+export * from '../generated-wrappers/dummy_erc20_token';
+export * from '../generated-wrappers/dummy_erc721_token';
+export * from '../generated-wrappers/dutch_auction';
+export * from '../generated-wrappers/erc20_proxy';
+export * from '../generated-wrappers/erc721_proxy';
+export * from '../generated-wrappers/exchange';
+export * from '../generated-wrappers/exchange_wrapper';
+export * from '../generated-wrappers/order_matcher';
+export * from '../generated-wrappers/order_validator';
+export * from '../generated-wrappers/weth9';
diff --git a/contracts/extensions/src/wrappers/index.ts b/contracts/extensions/src/wrappers/index.ts
deleted file mode 100644
index eed198524..000000000
--- a/contracts/extensions/src/wrappers/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from '../../generated-wrappers/balance_threshold_filter';
-export * from '../../generated-wrappers/dutch_auction';
-export * from '../../generated-wrappers/order_matcher';
-export * from '../../generated-wrappers/order_validator';
diff --git a/contracts/extensions/test/balance_threshold_filter.ts b/contracts/extensions/test/balance_threshold_filter.ts
index c79a72f5a..34eb319de 100644
--- a/contracts/extensions/test/balance_threshold_filter.ts
+++ b/contracts/extensions/test/balance_threshold_filter.ts
@@ -1,3 +1,4 @@
+import { ExchangeWrapper } from '@0x/contracts-exchange';
import { BlockchainLifecycle } from '@0x/dev-utils';
import { assetDataUtils } from '@0x/order-utils';
import { Order, RevertReason, SignedOrder } from '@0x/types';
@@ -9,7 +10,6 @@ import * as _ from 'lodash';
import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
import { DummyERC20TokenContract } from '@0x/contracts-erc20';
-import { artifacts as exchangeArtifacts, ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange';
import {
chaiSetup,
constants,
@@ -24,7 +24,7 @@ import {
web3Wrapper,
} from '@0x/contracts-test-utils';
-import { artifacts, BalanceThresholdFilterContract, BalanceThresholdWrapper } from '../src';
+import { artifacts, BalanceThresholdFilterContract, BalanceThresholdWrapper, ExchangeContract } from '../src';
chaiSetup.configure();
const expect = chai.expect;
@@ -127,7 +127,7 @@ describe(ContractName.BalanceThresholdFilter, () => {
await erc20Wrapper.setBalancesAndAllowancesAsync();
// Deploy Exchange contract
exchangeInstance = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
zrxAssetData,
diff --git a/contracts/extensions/test/dutch_auction.ts b/contracts/extensions/test/dutch_auction.ts
index 34ff25c3d..efe813ffc 100644
--- a/contracts/extensions/test/dutch_auction.ts
+++ b/contracts/extensions/test/dutch_auction.ts
@@ -1,8 +1,6 @@
import { DutchAuctionWrapper } from '@0x/contract-wrappers';
import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts, DummyERC20TokenContract, WETH9Contract } from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts, ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange';
+import { ExchangeWrapper } from '@0x/contracts-exchange';
import {
chaiSetup,
constants,
@@ -23,7 +21,15 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import * as chai from 'chai';
import * as _ from 'lodash';
-import { artifacts, DutchAuctionContract, DutchAuctionTestWrapper } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ DutchAuctionContract,
+ DutchAuctionTestWrapper,
+ ExchangeContract,
+ WETH9Contract,
+} from '../src';
chaiSetup.configure();
const expect = chai.expect;
@@ -82,12 +88,12 @@ describe(ContractName.DutchAuction, () => {
const erc721Balances = await erc721Wrapper.getBalancesAsync();
erc721MakerAssetIds = erc721Balances[makerAddress][erc721Token.address];
- wethContract = await WETH9Contract.deployFrom0xArtifactAsync(erc20Artifacts.WETH9, provider, txDefaults);
+ wethContract = await WETH9Contract.deployFrom0xArtifactAsync(artifacts.WETH9, provider, txDefaults);
erc20Wrapper.addDummyTokenContract(wethContract as any);
const zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address);
const exchangeInstance = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
zrxAssetData,
diff --git a/contracts/extensions/test/order_matcher.ts b/contracts/extensions/test/order_matcher.ts
index 0b2f9ddbb..d726de8e0 100644
--- a/contracts/extensions/test/order_matcher.ts
+++ b/contracts/extensions/test/order_matcher.ts
@@ -1,17 +1,5 @@
-import {
- artifacts as proxyArtifacts,
- ERC20ProxyContract,
- ERC20Wrapper,
- ERC721ProxyContract,
-} from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts, DummyERC20TokenContract } from '@0x/contracts-erc20';
-import { artifacts as erc721Artifacts, DummyERC721TokenContract } from '@0x/contracts-erc721';
-import {
- artifacts as exchangeArtifacts,
- ExchangeContract,
- ExchangeFillEventArgs,
- ExchangeWrapper,
-} from '@0x/contracts-exchange';
+import { ERC20Wrapper } from '@0x/contracts-asset-proxy';
+import { ExchangeWrapper } from '@0x/contracts-exchange';
import {
chaiSetup,
constants,
@@ -34,7 +22,16 @@ import * as chai from 'chai';
import { LogWithDecodedArgs } from 'ethereum-types';
import * as _ from 'lodash';
-import { artifacts, OrderMatcherContract } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
+ ExchangeContract,
+ ExchangeFillEventArgs,
+ OrderMatcherContract,
+} from '../src';
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
chaiSetup.configure();
@@ -104,14 +101,10 @@ describe('OrderMatcher', () => {
erc20Proxy = await erc20Wrapper.deployProxyAsync();
await erc20Wrapper.setBalancesAndAllowancesAsync();
// Deploy ERC721 proxy
- erc721Proxy = await ERC721ProxyContract.deployFrom0xArtifactAsync(
- proxyArtifacts.ERC721Proxy,
- provider,
- txDefaults,
- );
+ erc721Proxy = await ERC721ProxyContract.deployFrom0xArtifactAsync(artifacts.ERC721Proxy, provider, txDefaults);
// Depoy exchange
exchange = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
assetDataUtils.encodeERC20AssetData(zrxToken.address),
@@ -200,7 +193,7 @@ describe('OrderMatcher', () => {
describe('constructor', () => {
it('should revert if assetProxy is unregistered', async () => {
const exchangeInstance = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
constants.NULL_BYTES,
@@ -454,7 +447,7 @@ describe('OrderMatcher', () => {
signedOrderLeft.signature,
signedOrderRight.signature,
);
- const logDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...erc20Artifacts, ...exchangeArtifacts });
+ const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const txReceipt = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
data,
@@ -492,7 +485,7 @@ describe('OrderMatcher', () => {
signedOrderLeft.signature,
signedOrderRight.signature,
);
- const logDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...erc20Artifacts, ...exchangeArtifacts });
+ const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const txReceipt = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
data,
@@ -729,7 +722,7 @@ describe('OrderMatcher', () => {
});
it('should allow owner to withdraw ERC721 tokens', async () => {
const erc721Token = await DummyERC721TokenContract.deployFrom0xArtifactAsync(
- erc721Artifacts.DummyERC721Token,
+ artifacts.DummyERC721Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -774,7 +767,7 @@ describe('OrderMatcher', () => {
});
it('should be able to approve an ERC721 token by passing in allowance = 1', async () => {
const erc721Token = await DummyERC721TokenContract.deployFrom0xArtifactAsync(
- erc721Artifacts.DummyERC721Token,
+ artifacts.DummyERC721Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -791,7 +784,7 @@ describe('OrderMatcher', () => {
});
it('should be able to approve an ERC721 token by passing in allowance > 1', async () => {
const erc721Token = await DummyERC721TokenContract.deployFrom0xArtifactAsync(
- erc721Artifacts.DummyERC721Token,
+ artifacts.DummyERC721Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
diff --git a/contracts/extensions/test/order_validator.ts b/contracts/extensions/test/order_validator.ts
index 88dae14fb..ec31cafbc 100644
--- a/contracts/extensions/test/order_validator.ts
+++ b/contracts/extensions/test/order_validator.ts
@@ -1,7 +1,5 @@
-import { ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, ERC721Wrapper } from '@0x/contracts-asset-proxy';
-import { DummyERC20TokenContract } from '@0x/contracts-erc20';
-import { DummyERC721TokenContract } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts, ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange';
+import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
+import { ExchangeWrapper } from '@0x/contracts-exchange';
import {
chaiSetup,
constants,
@@ -18,7 +16,15 @@ import { BigNumber } from '@0x/utils';
import * as chai from 'chai';
import * as _ from 'lodash';
-import { artifacts, OrderValidatorContract } from '../src';
+import {
+ artifacts,
+ DummyERC20TokenContract,
+ DummyERC721TokenContract,
+ ERC20ProxyContract,
+ ERC721ProxyContract,
+ ExchangeContract,
+ OrderValidatorContract,
+} from '../src';
chaiSetup.configure();
const expect = chai.expect;
@@ -74,7 +80,7 @@ describe('OrderValidator', () => {
const zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address);
exchange = await ExchangeContract.deployFrom0xArtifactAsync(
- exchangeArtifacts.Exchange,
+ artifacts.Exchange,
provider,
txDefaults,
zrxAssetData,
diff --git a/contracts/extensions/test/utils/balance_threshold_wrapper.ts b/contracts/extensions/test/utils/balance_threshold_wrapper.ts
index 3178d992e..ab59c5688 100644
--- a/contracts/extensions/test/utils/balance_threshold_wrapper.ts
+++ b/contracts/extensions/test/utils/balance_threshold_wrapper.ts
@@ -1,6 +1,3 @@
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
-import { artifacts as erc721Artifacts } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts, ExchangeContract } from '@0x/contracts-exchange';
import {
FillResults,
formatters,
@@ -15,8 +12,7 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider, TransactionReceiptWithDecodedLogs } from 'ethereum-types';
import * as _ from 'lodash';
-import { BalanceThresholdFilterContract } from '../../generated-wrappers/balance_threshold_filter';
-import { artifacts } from '../../src/artifacts';
+import { artifacts, BalanceThresholdFilterContract, ExchangeContract } from '../../src';
export class BalanceThresholdWrapper {
private readonly _balanceThresholdFilter: BalanceThresholdFilterContract;
@@ -34,12 +30,7 @@ export class BalanceThresholdWrapper {
this._exchange = exchangeContract;
this._signerTransactionFactory = signerTransactionFactory;
this._web3Wrapper = new Web3Wrapper(provider);
- this._logDecoder = new LogDecoder(this._web3Wrapper, {
- ...artifacts,
- ...erc20Artifacts,
- ...erc721Artifacts,
- ...exchangeArtifacts,
- });
+ this._logDecoder = new LogDecoder(this._web3Wrapper, artifacts);
}
public async fillOrderAsync(
signedOrder: SignedOrder,
@@ -227,7 +218,7 @@ export class BalanceThresholdWrapper {
from: string,
): Promise<TransactionReceiptWithDecodedLogs> {
const params = orderUtils.createMatchOrders(signedOrderLeft, signedOrderRight);
- const data = await this._exchange.matchOrders.getABIEncodedTransactionData(
+ const data = this._exchange.matchOrders.getABIEncodedTransactionData(
params.left,
params.right,
params.leftSignature,
diff --git a/contracts/extensions/test/utils/dutch_auction_test_wrapper.ts b/contracts/extensions/test/utils/dutch_auction_test_wrapper.ts
index 5899ffcac..06cdc21d5 100644
--- a/contracts/extensions/test/utils/dutch_auction_test_wrapper.ts
+++ b/contracts/extensions/test/utils/dutch_auction_test_wrapper.ts
@@ -1,6 +1,3 @@
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
-import { artifacts as erc721Artifacts } from '@0x/contracts-erc721';
-import { artifacts as exchangeArtifacts } from '@0x/contracts-exchange';
import { LogDecoder } from '@0x/contracts-test-utils';
import { DutchAuctionDetails, SignedOrder } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
@@ -18,12 +15,7 @@ export class DutchAuctionTestWrapper {
constructor(contractInstance: DutchAuctionContract, provider: Provider) {
this._dutchAuctionContract = contractInstance;
this._web3Wrapper = new Web3Wrapper(provider);
- this._logDecoder = new LogDecoder(this._web3Wrapper, {
- ...artifacts,
- ...erc20Artifacts,
- ...erc721Artifacts,
- ...exchangeArtifacts,
- });
+ this._logDecoder = new LogDecoder(this._web3Wrapper, artifacts);
}
/**
* Matches the buy and sell orders at an amount given the following: the current block time, the auction
diff --git a/contracts/extensions/tsconfig.json b/contracts/extensions/tsconfig.json
index 0c06c6902..b424bfa04 100644
--- a/contracts/extensions/tsconfig.json
+++ b/contracts/extensions/tsconfig.json
@@ -1,16 +1,19 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/BalanceThresholdFilter.json",
- "./generated-artifacts/DutchAuction.json",
- "./generated-artifacts/OrderMatcher.json",
- "./generated-artifacts/OrderValidator.json"
+ "generated-artifacts/BalanceThresholdFilter.json",
+ "generated-artifacts/DummyERC20Token.json",
+ "generated-artifacts/DummyERC721Token.json",
+ "generated-artifacts/DutchAuction.json",
+ "generated-artifacts/ERC20Proxy.json",
+ "generated-artifacts/ERC721Proxy.json",
+ "generated-artifacts/Exchange.json",
+ "generated-artifacts/ExchangeWrapper.json",
+ "generated-artifacts/OrderMatcher.json",
+ "generated-artifacts/OrderValidator.json",
+ "generated-artifacts/WETH9.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/multisig/compiler.json b/contracts/multisig/compiler.json
index ae3905238..336a9ed7b 100644
--- a/contracts/multisig/compiler.json
+++ b/contracts/multisig/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -20,10 +17,11 @@
}
},
"contracts": [
- "AssetProxyOwner",
- "MultiSigWallet",
- "MultiSigWalletWithTimeLock",
- "TestAssetProxyOwner",
- "TestRejectEther"
+ "@0x/contracts-asset-proxy/contracts/src/MixinAuthorizable.sol",
+ "src/AssetProxyOwner.sol",
+ "src/MultiSigWallet.sol",
+ "src/MultiSigWalletWithTimeLock.sol",
+ "test/TestAssetProxyOwner.sol",
+ "test/TestRejectEther.sol"
]
}
diff --git a/contracts/multisig/package.json b/contracts/multisig/package.json
index bc83bbf05..ce29122c4 100644
--- a/contracts/multisig/package.json
+++ b/contracts/multisig/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(AssetProxyOwner|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetProxyOwner|TestRejectEther).json"
+ "abis": "./generated-artifacts/@(AssetProxyOwner|MixinAuthorizable|MultiSigWallet|MultiSigWalletWithTimeLock|TestAssetProxyOwner|TestRejectEther).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/multisig/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contracts-test-utils": "^3.0.2",
"@0x/dev-utils": "^2.0.1",
@@ -72,7 +75,7 @@
"@0x/utils": "^4.0.2",
"@0x/web3-wrapper": "^4.0.1",
"ethereum-types": "^2.0.0",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/multisig/src/artifacts.ts b/contracts/multisig/src/artifacts.ts
new file mode 100644
index 000000000..7d8a85884
--- /dev/null
+++ b/contracts/multisig/src/artifacts.ts
@@ -0,0 +1,21 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as AssetProxyOwner from '../generated-artifacts/AssetProxyOwner.json';
+import * as MixinAuthorizable from '../generated-artifacts/MixinAuthorizable.json';
+import * as MultiSigWallet from '../generated-artifacts/MultiSigWallet.json';
+import * as MultiSigWalletWithTimeLock from '../generated-artifacts/MultiSigWalletWithTimeLock.json';
+import * as TestAssetProxyOwner from '../generated-artifacts/TestAssetProxyOwner.json';
+import * as TestRejectEther from '../generated-artifacts/TestRejectEther.json';
+export const artifacts = {
+ MixinAuthorizable: MixinAuthorizable as ContractArtifact,
+ AssetProxyOwner: AssetProxyOwner as ContractArtifact,
+ MultiSigWallet: MultiSigWallet as ContractArtifact,
+ MultiSigWalletWithTimeLock: MultiSigWalletWithTimeLock as ContractArtifact,
+ TestAssetProxyOwner: TestAssetProxyOwner as ContractArtifact,
+ TestRejectEther: TestRejectEther as ContractArtifact,
+};
diff --git a/contracts/multisig/src/artifacts/index.ts b/contracts/multisig/src/artifacts/index.ts
deleted file mode 100644
index 326d79000..000000000
--- a/contracts/multisig/src/artifacts/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as AssetProxyOwner from '../../generated-artifacts/AssetProxyOwner.json';
-import * as MultiSigWallet from '../../generated-artifacts/MultiSigWallet.json';
-import * as MultiSigWalletWithTimeLock from '../../generated-artifacts/MultiSigWalletWithTimeLock.json';
-import * as TestAssetProxyOwner from '../../generated-artifacts/TestAssetProxyOwner.json';
-import * as TestRejectEther from '../../generated-artifacts/TestRejectEther.json';
-
-export const artifacts = {
- AssetProxyOwner: AssetProxyOwner as ContractArtifact,
- MultiSigWallet: MultiSigWallet as ContractArtifact,
- MultiSigWalletWithTimeLock: MultiSigWalletWithTimeLock as ContractArtifact,
- TestAssetProxyOwner: TestAssetProxyOwner as ContractArtifact,
- TestRejectEther: TestRejectEther as ContractArtifact,
-};
diff --git a/contracts/multisig/src/wrappers.ts b/contracts/multisig/src/wrappers.ts
new file mode 100644
index 000000000..81aab39da
--- /dev/null
+++ b/contracts/multisig/src/wrappers.ts
@@ -0,0 +1,11 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/asset_proxy_owner';
+export * from '../generated-wrappers/mixin_authorizable';
+export * from '../generated-wrappers/multi_sig_wallet';
+export * from '../generated-wrappers/multi_sig_wallet_with_time_lock';
+export * from '../generated-wrappers/test_asset_proxy_owner';
+export * from '../generated-wrappers/test_reject_ether';
diff --git a/contracts/multisig/src/wrappers/index.ts b/contracts/multisig/src/wrappers/index.ts
deleted file mode 100644
index 43ab25704..000000000
--- a/contracts/multisig/src/wrappers/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from '../../generated-wrappers/asset_proxy_owner';
-export * from '../../generated-wrappers/multi_sig_wallet';
-export * from '../../generated-wrappers/multi_sig_wallet_with_time_lock';
-export * from '../../generated-wrappers/test_asset_proxy_owner';
-export * from '../../generated-wrappers/test_reject_ether';
diff --git a/contracts/multisig/test/asset_proxy_owner.ts b/contracts/multisig/test/asset_proxy_owner.ts
index 62081554b..7bf4069cb 100644
--- a/contracts/multisig/test/asset_proxy_owner.ts
+++ b/contracts/multisig/test/asset_proxy_owner.ts
@@ -1,4 +1,3 @@
-import { artifacts as proxyArtifacts, MixinAuthorizableContract } from '@0x/contracts-asset-proxy';
import {
chaiSetup,
constants,
@@ -26,6 +25,7 @@ import {
AssetProxyOwnerExecutionFailureEventArgs,
AssetProxyOwnerSubmissionEventArgs,
AssetProxyOwnerWrapper,
+ MixinAuthorizableContract,
TestAssetProxyOwnerContract,
} from '../src';
@@ -58,12 +58,12 @@ describe('AssetProxyOwner', () => {
notOwner = accounts[3];
const initialOwner = accounts[0];
erc20Proxy = await MixinAuthorizableContract.deployFrom0xArtifactAsync(
- proxyArtifacts.MixinAuthorizable,
+ artifacts.MixinAuthorizable,
provider,
txDefaults,
);
erc721Proxy = await MixinAuthorizableContract.deployFrom0xArtifactAsync(
- proxyArtifacts.MixinAuthorizable,
+ artifacts.MixinAuthorizable,
provider,
txDefaults,
);
diff --git a/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts b/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts
index b6040d8e3..d5aaaf519 100644
--- a/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts
+++ b/contracts/multisig/test/utils/asset_proxy_owner_wrapper.ts
@@ -1,5 +1,3 @@
-import { artifacts as proxyArtifacts } from '@0x/contracts-asset-proxy';
-import { artifacts as erc20Artifacts } from '@0x/contracts-erc20';
import { LogDecoder } from '@0x/contracts-test-utils';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
@@ -16,7 +14,7 @@ export class AssetProxyOwnerWrapper {
constructor(assetproxyOwnerContract: AssetProxyOwnerContract, provider: Provider) {
this._assetProxyOwner = assetproxyOwnerContract;
this._web3Wrapper = new Web3Wrapper(provider);
- this._logDecoder = new LogDecoder(this._web3Wrapper, { ...artifacts, ...erc20Artifacts, ...proxyArtifacts });
+ this._logDecoder = new LogDecoder(this._web3Wrapper, artifacts);
}
public async submitTransactionAsync(
destination: string,
diff --git a/contracts/multisig/tsconfig.json b/contracts/multisig/tsconfig.json
index ad1707e43..094f89413 100644
--- a/contracts/multisig/tsconfig.json
+++ b/contracts/multisig/tsconfig.json
@@ -1,17 +1,14 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/AssetProxyOwner.json",
- "./generated-artifacts/MultiSigWallet.json",
- "./generated-artifacts/MultiSigWalletWithTimeLock.json",
- "./generated-artifacts/TestAssetProxyOwner.json",
- "./generated-artifacts/TestRejectEther.json"
+ "generated-artifacts/AssetProxyOwner.json",
+ "generated-artifacts/MixinAuthorizable.json",
+ "generated-artifacts/MultiSigWallet.json",
+ "generated-artifacts/MultiSigWalletWithTimeLock.json",
+ "generated-artifacts/TestAssetProxyOwner.json",
+ "generated-artifacts/TestRejectEther.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/contracts/test-utils/package.json b/contracts/test-utils/package.json
index 0b8478e05..f73e1f456 100644
--- a/contracts/test-utils/package.json
+++ b/contracts/test-utils/package.json
@@ -66,7 +66,7 @@
"ethereumjs-util": "^5.1.1",
"ethers": "~4.0.4",
"js-combinatorics": "^0.5.3",
- "lodash": "^4.17.5",
+ "lodash": "^4.17.11",
"make-promises-safe": "^1.1.0"
},
"publishConfig": {
diff --git a/contracts/utils/compiler.json b/contracts/utils/compiler.json
index 7473ea6d1..a54f547df 100644
--- a/contracts/utils/compiler.json
+++ b/contracts/utils/compiler.json
@@ -3,10 +3,7 @@
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
- "optimizer": {
- "enabled": true,
- "runs": 1000000
- },
+ "optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
@@ -19,5 +16,13 @@
}
}
},
- "contracts": ["TestConstants", "TestLibBytes", "LibBytes", "Ownable", "IOwnable", "ReentrancyGuard", "SafeMath"]
+ "contracts": [
+ "src/LibBytes.sol",
+ "src/Ownable.sol",
+ "src/ReentrancyGuard.sol",
+ "src/SafeMath.sol",
+ "src/interfaces/IOwnable.sol",
+ "test/TestConstants.sol",
+ "test/TestLibBytes.sol"
+ ]
}
diff --git a/contracts/utils/package.json b/contracts/utils/package.json
index 214ea59d8..3b0e5a527 100644
--- a/contracts/utils/package.json
+++ b/contracts/utils/package.json
@@ -29,10 +29,12 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test",
+ "contracts:gen": "contracts-gen",
"lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
},
"config": {
- "abis": "generated-artifacts/@(IOwnable|Ownable|LibBytes|ReentrancyGuard|SafeMath|TestConstants|TestLibBytes).json"
+ "abis": "./generated-artifacts/@(IOwnable|LibBytes|Ownable|ReentrancyGuard|SafeMath|TestConstants|TestLibBytes).json",
+ "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,6 +46,7 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/utils/README.md",
"devDependencies": {
+ "@0x/contracts-gen": "^1.0.0",
"@0x/abi-gen": "^2.0.1",
"@0x/contracts-test-utils": "^3.0.2",
"@0x/dev-utils": "^2.0.1",
@@ -74,7 +77,7 @@
"bn.js": "^4.11.8",
"ethereum-types": "^2.0.0",
"ethereumjs-util": "^5.1.1",
- "lodash": "^4.17.5"
+ "lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
diff --git a/contracts/utils/src/artifacts.ts b/contracts/utils/src/artifacts.ts
new file mode 100644
index 000000000..15a1abedf
--- /dev/null
+++ b/contracts/utils/src/artifacts.ts
@@ -0,0 +1,23 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+import { ContractArtifact } from 'ethereum-types';
+
+import * as IOwnable from '../generated-artifacts/IOwnable.json';
+import * as LibBytes from '../generated-artifacts/LibBytes.json';
+import * as Ownable from '../generated-artifacts/Ownable.json';
+import * as ReentrancyGuard from '../generated-artifacts/ReentrancyGuard.json';
+import * as SafeMath from '../generated-artifacts/SafeMath.json';
+import * as TestConstants from '../generated-artifacts/TestConstants.json';
+import * as TestLibBytes from '../generated-artifacts/TestLibBytes.json';
+export const artifacts = {
+ LibBytes: LibBytes as ContractArtifact,
+ Ownable: Ownable as ContractArtifact,
+ ReentrancyGuard: ReentrancyGuard as ContractArtifact,
+ SafeMath: SafeMath as ContractArtifact,
+ IOwnable: IOwnable as ContractArtifact,
+ TestConstants: TestConstants as ContractArtifact,
+ TestLibBytes: TestLibBytes as ContractArtifact,
+};
diff --git a/contracts/utils/src/artifacts/index.ts b/contracts/utils/src/artifacts/index.ts
deleted file mode 100644
index a5c2b215c..000000000
--- a/contracts/utils/src/artifacts/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ContractArtifact } from 'ethereum-types';
-
-import * as IOwnable from '../../generated-artifacts/IOwnable.json';
-import * as LibBytes from '../../generated-artifacts/LibBytes.json';
-import * as Ownable from '../../generated-artifacts/Ownable.json';
-import * as ReentrancyGuard from '../../generated-artifacts/ReentrancyGuard.json';
-import * as SafeMath from '../../generated-artifacts/SafeMath.json';
-import * as TestConstants from '../../generated-artifacts/TestConstants.json';
-import * as TestLibBytes from '../../generated-artifacts/TestLibBytes.json';
-
-export const artifacts = {
- TestConstants: TestConstants as ContractArtifact,
- TestLibBytes: TestLibBytes as ContractArtifact,
- IOwnable: IOwnable as ContractArtifact,
- LibBytes: LibBytes as ContractArtifact,
- Ownable: Ownable as ContractArtifact,
- SafeMath: SafeMath as ContractArtifact,
- ReentrancyGuard: ReentrancyGuard as ContractArtifact,
-};
diff --git a/contracts/utils/src/wrappers.ts b/contracts/utils/src/wrappers.ts
new file mode 100644
index 000000000..8748cb074
--- /dev/null
+++ b/contracts/utils/src/wrappers.ts
@@ -0,0 +1,12 @@
+/*
+ * -----------------------------------------------------------------------------
+ * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+ * -----------------------------------------------------------------------------
+ */
+export * from '../generated-wrappers/i_ownable';
+export * from '../generated-wrappers/lib_bytes';
+export * from '../generated-wrappers/ownable';
+export * from '../generated-wrappers/reentrancy_guard';
+export * from '../generated-wrappers/safe_math';
+export * from '../generated-wrappers/test_constants';
+export * from '../generated-wrappers/test_lib_bytes';
diff --git a/contracts/utils/src/wrappers/index.ts b/contracts/utils/src/wrappers/index.ts
deleted file mode 100644
index 823b7fa4b..000000000
--- a/contracts/utils/src/wrappers/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from '../../generated-wrappers/test_constants';
-export * from '../../generated-wrappers/test_lib_bytes';
diff --git a/contracts/utils/tsconfig.json b/contracts/utils/tsconfig.json
index 68251e6b0..efd71ff93 100644
--- a/contracts/utils/tsconfig.json
+++ b/contracts/utils/tsconfig.json
@@ -1,19 +1,15 @@
{
"extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "lib",
- "rootDir": ".",
- "resolveJsonModule": true
- },
+ "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
- "./generated-artifacts/TestConstants.json",
- "./generated-artifacts/TestLibBytes.json",
- "./generated-artifacts/IOwnable.json",
- "./generated-artifacts/Ownable.json",
- "./generated-artifacts/LibBytes.json",
- "./generated-artifacts/SafeMath.json",
- "./generated-artifacts/ReentrancyGuard.json"
+ "generated-artifacts/IOwnable.json",
+ "generated-artifacts/LibBytes.json",
+ "generated-artifacts/Ownable.json",
+ "generated-artifacts/ReentrancyGuard.json",
+ "generated-artifacts/SafeMath.json",
+ "generated-artifacts/TestConstants.json",
+ "generated-artifacts/TestLibBytes.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}
diff --git a/package.json b/package.json
index dccfe6513..af32a3c8f 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,9 @@
"build:ts": "tsc -b",
"watch:ts": "tsc -b -w",
"clean": "wsrun clean $PKG --fast-exit -r --parallel --exclude-missing",
+ "contracts:gen": "wsrun contracts:gen $PKG --fast-exit -r --parallel --exclude-missing",
+ "contracts:compile": "wsrun compile $PKG --fast-exit -r --stages --exclude-missing",
+ "contracts:watch": "wsrun watch $PKG --parallel --exclude-missing",
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
"rebuild": "run-s clean build",
"rebuild:no_website": "run-s clean build:no_website",
@@ -81,7 +84,7 @@
"lcov-result-merger": "^3.0.0",
"lerna": "^3.0.0-beta.25",
"npm-run-all": "^4.1.2",
- "prettier": "^1.15.3",
+ "prettier": "^1.16.3",
"source-map-support": "^0.5.6",
"typescript": "3.0.1",
"wsrun": "^2.2.0"
diff --git a/packages/contracts-gen/.npmignore b/packages/contracts-gen/.npmignore
new file mode 100644
index 000000000..d645458f6
--- /dev/null
+++ b/packages/contracts-gen/.npmignore
@@ -0,0 +1,6 @@
+.*
+yarn-error.log
+/src/
+/scripts/
+tsconfig.json
+/lib/monorepo_scripts/
diff --git a/packages/contracts-gen/CHANGELOG.json b/packages/contracts-gen/CHANGELOG.json
new file mode 100644
index 000000000..fe51488c7
--- /dev/null
+++ b/packages/contracts-gen/CHANGELOG.json
@@ -0,0 +1 @@
+[]
diff --git a/packages/contracts-gen/README.md b/packages/contracts-gen/README.md
new file mode 100644
index 000000000..feaf9e65f
--- /dev/null
+++ b/packages/contracts-gen/README.md
@@ -0,0 +1,76 @@
+# Contracts Gen
+
+This package allows you to generate boilerplate TypeScript code and configs for smart contracts packages.
+
+## Installation
+
+`yarn add -g @0x/contracts-gen`
+
+## Usage
+
+Run it from within your smart contracts packages.
+
+```bash
+contracts-gen
+```
+
+You should run this tool after each time you move your contracts around to regenerate boilerplate code and configs.
+
+## What can it generate
+
+This tool does the following:
+
+- Reads your `compiler.json`. Specifically the list of smart contracts.
+- Creates `wrapper.ts` file which exports all contract wrappers.
+- Creates `artifacts.ts` file which exports all contract artifacts.
+- Generates list of JSON artifact files in `tsconfig.json`
+- Generates a glob for abi-gen in `package.json`
+
+On top of that - if your `compiler.json` has contracts referenced just by name - it will resolve the name to relative path and put it there.
+It also sorts all the lists in it's output leading to smaller and cleaner diffs.
+
+## Contributing
+
+We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
+
+Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
+
+### Install dependencies
+
+If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
+
+```bash
+yarn config set workspaces-experimental true
+```
+
+Then install dependencies
+
+```bash
+yarn install
+```
+
+### Build
+
+To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
+
+```bash
+PKG=@0x/contracts-gen yarn build
+```
+
+Or continuously rebuild on change:
+
+```bash
+PKG=@0x/contracts-gen yarn watch
+```
+
+### Clean
+
+```bash
+yarn clean
+```
+
+### Lint
+
+```bash
+yarn lint
+```
diff --git a/packages/contracts-gen/bin/contracts-gen.js b/packages/contracts-gen/bin/contracts-gen.js
new file mode 100755
index 000000000..ec6ab4db6
--- /dev/null
+++ b/packages/contracts-gen/bin/contracts-gen.js
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+require('../lib/src/contracts-gen.js');
diff --git a/packages/contracts-gen/package.json b/packages/contracts-gen/package.json
new file mode 100644
index 000000000..1265cac69
--- /dev/null
+++ b/packages/contracts-gen/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "@0x/contracts-gen",
+ "version": "1.0.0",
+ "engines": {
+ "node": ">=6.12"
+ },
+ "description": "Generates boilerplate code for smart contracts packages",
+ "main": "lib/src/index.js",
+ "types": "lib/src/index.d.ts",
+ "scripts": {
+ "lint": "tslint --format stylish --project .",
+ "clean": "shx rm -rf lib",
+ "build": "tsc -b",
+ "build:ci": "yarn build"
+ },
+ "bin": {
+ "contracts-gen": "bin/contracts-gen.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/0xProject/0x-monorepo.git"
+ },
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/0xProject/0x-monorepo/issues"
+ },
+ "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts-gen/README.md",
+ "dependencies": {
+ "@0x/types": "^2.0.1",
+ "@0x/utils": "^4.0.2",
+ "@0x/typescript-typings": "^4.0.0",
+ "ethereum-types": "^2.0.0",
+ "@0x/sol-resolver": "^2.0.1",
+ "lodash": "^4.17.11",
+ "prettier": "^1.16.3",
+ "to-snake-case": "^1.0.0"
+ },
+ "devDependencies": {
+ "@0x/tslint-config": "^3.0.0",
+ "@types/node": "*",
+ "@types/prettier": "^1.15.2",
+ "shx": "^0.2.2",
+ "tslint": "5.11.0",
+ "typescript": "3.0.1"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/contracts-gen/src/contracts-gen.ts b/packages/contracts-gen/src/contracts-gen.ts
new file mode 100644
index 000000000..0160a8204
--- /dev/null
+++ b/packages/contracts-gen/src/contracts-gen.ts
@@ -0,0 +1,175 @@
+#!/usr/bin/env node
+
+import { NameResolver } from '@0x/sol-resolver';
+import { PackageJSON } from '@0x/types';
+import { logUtils } from '@0x/utils';
+import { CompilerOptions } from 'ethereum-types';
+import * as fs from 'fs';
+import * as _ from 'lodash';
+import * as path from 'path';
+import * as prettier from 'prettier';
+import toSnakeCase = require('to-snake-case');
+
+const SOLIDITY_EXTENSION = '.sol';
+const DEFAULT_ARTIFACTS_DIR = 'artifacts';
+const DEFAULT_CONTRACTS_DIR = 'contracts';
+const DEFAULT_WRAPPERS_DIR = 'generated-wrappers';
+const AUTO_GENERATED_BANNER = `/*
+* -----------------------------------------------------------------------------
+* Warning: This file is auto-generated by contracts-gen. Don't edit manually.
+* -----------------------------------------------------------------------------
+*/`;
+const AUTO_GENERATED_BANNER_FOR_LISTS = `This list is auto-generated by contracts-gen. Don't edit manually.`;
+
+(async () => {
+ const packageDir = process.cwd();
+ const compilerJSON = readJSONFile<CompilerOptions>('compiler.json');
+ const contracts = compilerJSON.contracts;
+ const contractsDir = compilerJSON.contractsDir || DEFAULT_CONTRACTS_DIR;
+ const artifactsDir = compilerJSON.artifactsDir || DEFAULT_ARTIFACTS_DIR;
+ const wrappersDir = DEFAULT_WRAPPERS_DIR;
+ if (!_.isArray(contracts)) {
+ throw new Error('Unable to run the generator bacause contracts key in compiler.json is not of type array');
+ }
+ const prettierConfig = await prettier.resolveConfig(packageDir);
+ generateCompilerJSONContractsList(contracts, contractsDir, prettierConfig);
+ generateArtifactsTs(contracts, artifactsDir, prettierConfig);
+ generateWrappersTs(contracts, wrappersDir, prettierConfig);
+ generateTsConfigJSONFilesList(contracts, artifactsDir, prettierConfig);
+ generatePackageJSONABIConfig(contracts, artifactsDir, prettierConfig);
+ process.exit(0);
+})().catch(err => {
+ logUtils.log(err);
+ process.exit(1);
+});
+
+function generateCompilerJSONContractsList(
+ contracts: string[],
+ contractsDir: string,
+ prettierConfig: prettier.Options | null,
+): void {
+ const COMPILER_JSON_FILE_PATH = 'compiler.json';
+ const compilerJSON = readJSONFile<CompilerOptions>(COMPILER_JSON_FILE_PATH);
+ compilerJSON.contracts = _.map(contracts, contract => {
+ if (contract.endsWith(SOLIDITY_EXTENSION)) {
+ // If it's already a relative path - NO-OP.
+ return contract;
+ } else {
+ // If it's just a contract name - resolve it and rewrite.
+ return new NameResolver(contractsDir).resolve(contract).path;
+ }
+ });
+ compilerJSON.contracts = _.sortBy(compilerJSON.contracts);
+ const compilerJSONString = JSON.stringify(compilerJSON);
+ const formattedCompilerJSON = prettier.format(compilerJSONString, {
+ ...prettierConfig,
+ filepath: COMPILER_JSON_FILE_PATH,
+ });
+ fs.writeFileSync(COMPILER_JSON_FILE_PATH, formattedCompilerJSON);
+}
+
+function generateArtifactsTs(contracts: string[], artifactsDir: string, prettierConfig: prettier.Options | null): void {
+ const imports = _.map(contracts, contract => {
+ const contractName = path.basename(contract, SOLIDITY_EXTENSION);
+ const importPath = path.join('..', artifactsDir, `${contractName}.json`);
+ return `import * as ${contractName} from '${importPath}';`;
+ });
+ const sortedImports = _.sortBy(imports);
+ const artifacts = _.map(contracts, contract => {
+ const contractName = path.basename(contract, SOLIDITY_EXTENSION);
+ if (contractName === 'ZRXToken') {
+ // HACK(albrow): "as any" hack still required here because ZRXToken does not
+ // conform to the v2 artifact type.
+ return `${contractName}: (${contractName} as any) as ContractArtifact,`;
+ } else {
+ return `${contractName}: ${contractName} as ContractArtifact,`;
+ }
+ });
+ const artifactsTs = `
+ ${AUTO_GENERATED_BANNER}
+ import { ContractArtifact } from 'ethereum-types';
+
+ ${sortedImports.join('\n')}
+ export const artifacts = {${artifacts.join('\n')}};
+ `;
+ const ARTIFACTS_TS_FILE_PATH = 'src/artifacts.ts';
+ const formattedArtifactsTs = prettier.format(artifactsTs, { ...prettierConfig, filepath: ARTIFACTS_TS_FILE_PATH });
+ fs.writeFileSync(ARTIFACTS_TS_FILE_PATH, formattedArtifactsTs);
+}
+
+function generateWrappersTs(contracts: string[], wrappersDir: string, prettierConfig: prettier.Options | null): void {
+ const imports = _.map(contracts, contract => {
+ const contractName = path.basename(contract, SOLIDITY_EXTENSION);
+ const outputFileName = makeOutputFileName(contractName);
+ const exportPath = path.join('..', wrappersDir, outputFileName);
+ return `export * from '${exportPath}';`;
+ });
+ const sortedImports = _.sortBy(imports);
+ const wrappersTs = `
+ ${AUTO_GENERATED_BANNER}
+ ${sortedImports.join('\n')}
+ `;
+ const WRAPPERS_TS_FILE_PATH = 'src/wrappers.ts';
+ const formattedArtifactsTs = prettier.format(wrappersTs, { ...prettierConfig, filepath: WRAPPERS_TS_FILE_PATH });
+ fs.writeFileSync(WRAPPERS_TS_FILE_PATH, formattedArtifactsTs);
+}
+
+function generateTsConfigJSONFilesList(
+ contracts: string[],
+ artifactsDir: string,
+ prettierConfig: prettier.Options | null,
+): void {
+ const TS_CONFIG_FILE_PATH = 'tsconfig.json';
+ const tsConfig = readJSONFile<any>(TS_CONFIG_FILE_PATH);
+ tsConfig.files = _.map(contracts, contract => {
+ const contractName = path.basename(contract, SOLIDITY_EXTENSION);
+ const artifactPath = path.join(artifactsDir, `${contractName}.json`);
+ return artifactPath;
+ });
+ tsConfig.files = _.sortBy(tsConfig.files);
+ const tsConfigString = JSON.stringify(tsConfig);
+ const formattedTsConfig = prettier.format(tsConfigString, { ...prettierConfig, filepath: TS_CONFIG_FILE_PATH });
+ fs.writeFileSync(TS_CONFIG_FILE_PATH, formattedTsConfig);
+}
+
+function generatePackageJSONABIConfig(
+ contracts: string[],
+ artifactsDir: string,
+ prettierConfig: prettier.Options | null,
+): void {
+ let packageJSON = readJSONFile<PackageJSON>('package.json');
+ const contractNames = _.map(contracts, contract => {
+ const contractName = path.basename(contract, SOLIDITY_EXTENSION);
+ return contractName;
+ });
+ const sortedContractNames = _.sortBy(contractNames);
+ packageJSON = {
+ ...packageJSON,
+ config: {
+ ...packageJSON.config,
+ 'abis:comment': AUTO_GENERATED_BANNER_FOR_LISTS,
+ abis: `${artifactsDir}/@(${sortedContractNames.join('|')}).json`,
+ },
+ };
+ const PACKAGE_JSON_FILE_PATH = 'package.json';
+ const packageJSONString = JSON.stringify(packageJSON);
+ const formattedPackageJSON = prettier.format(packageJSONString, {
+ ...prettierConfig,
+ filepath: PACKAGE_JSON_FILE_PATH,
+ });
+ fs.writeFileSync(PACKAGE_JSON_FILE_PATH, formattedPackageJSON);
+}
+
+function makeOutputFileName(name: string): string {
+ let fileName = toSnakeCase(name);
+ // HACK: Snake case doesn't make a lot of sense for abbreviated names but we can't reliably detect abbreviations
+ // so we special-case the abbreviations we use.
+ fileName = fileName.replace('z_r_x', 'zrx').replace('e_r_c', 'erc');
+ return fileName;
+}
+
+function readJSONFile<T>(filePath: string): T {
+ const JSONString = fs.readFileSync(filePath, 'utf8');
+ const parsed: T = JSON.parse(JSONString);
+ return parsed;
+}
diff --git a/packages/contracts-gen/src/index.ts b/packages/contracts-gen/src/index.ts
new file mode 100644
index 000000000..c5f4b01f1
--- /dev/null
+++ b/packages/contracts-gen/src/index.ts
@@ -0,0 +1,6 @@
+/**
+ * This module is a CLI tool. As soon as you run it - it starts doing stuff.
+ * At the same time - our installation tests assume that you can import package without causing side effects.
+ * That's why our main entry point it empty. No side effects. But our secondary entry point - contracts-gen.ts is a CLI tool and starts running as soon as you import/run it.
+ */
+export {};
diff --git a/packages/contracts-gen/tsconfig.json b/packages/contracts-gen/tsconfig.json
new file mode 100644
index 000000000..233008d61
--- /dev/null
+++ b/packages/contracts-gen/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../tsconfig",
+ "compilerOptions": {
+ "outDir": "lib",
+ "rootDir": "."
+ },
+ "include": ["./src/**/*"]
+}
diff --git a/packages/contracts-gen/tslint.json b/packages/contracts-gen/tslint.json
new file mode 100644
index 000000000..dd9053357
--- /dev/null
+++ b/packages/contracts-gen/tslint.json
@@ -0,0 +1,3 @@
+{
+ "extends": ["@0x/tslint-config"]
+}
diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json
index 24b387355..fbff1c62a 100644
--- a/packages/metacoin/package.json
+++ b/packages/metacoin/package.json
@@ -24,7 +24,8 @@
"profiler:report:html": "istanbul report html && open coverage/index.html",
"coverage:report:lcov": "istanbul report lcov",
"test:circleci": "yarn test:coverage",
- "compile": "sol-compiler compile"
+ "compile": "sol-compiler",
+ "watch": "sol-compiler -w"
},
"author": "",
"license": "Apache-2.0",
diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json
index fddcc13f8..24dca0004 100644
--- a/packages/monorepo-scripts/package.json
+++ b/packages/monorepo-scripts/package.json
@@ -47,6 +47,7 @@
"typescript": "3.0.1"
},
"dependencies": {
+ "@0x/types": "^2.0.1",
"@0x/utils": "^4.0.2",
"@lerna/batch-packages": "^3.0.0-beta.18",
"@types/depcheck": "^0.6.0",
diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts
index 0d01a2e3c..bb7e50f51 100644
--- a/packages/monorepo-scripts/src/deps_versions.ts
+++ b/packages/monorepo-scripts/src/deps_versions.ts
@@ -1,7 +1,7 @@
#!/usr/bin/env node
+import { PackageJSON, PackageJSONConfig } from '@0x/types';
import chalk from 'chalk';
-import * as fs from 'fs';
import { sync as globSync } from 'glob';
import * as path from 'path';
@@ -24,9 +24,10 @@ interface ParsedDependencies {
const PACKAGE_JSON_GLOB = '../../*/package.json';
-const config = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../package.json')).toString()).config;
-const dependenciesWithIgnoredVersions: string[] = config.ignoreDependencyVersions.split(' ');
-const packagesWithIgnoredVersions: string[] = config.ignoreDependencyVersionsForPackage.split(' ');
+const config = utils.readJSONFile<PackageJSON>(path.join(__dirname, '../../../package.json'))
+ .config as PackageJSONConfig; // tslint:disable-line no-unnecessary-type-assertion
+const dependenciesWithIgnoredVersions: string[] = (config.ignoreDependencyVersions as string).split(' ');
+const packagesWithIgnoredVersions: string[] = (config.ignoreDependencyVersionsForPackage as string).split(' ');
if (require.main === module) {
const dependencies = parseDependencies();
@@ -44,11 +45,10 @@ if (require.main === module) {
}
function getDependencies(_path: string): Dependencies {
- const file = fs.readFileSync(_path).toString();
- const parsed = JSON.parse(file);
+ const packageJSON = utils.readJSONFile<PackageJSON>(_path);
const dependencies = {
- ...parsed.dependencies,
- ...parsed.devDependencies,
+ ...packageJSON.dependencies,
+ ...packageJSON.devDependencies,
};
return dependencies;
}
diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts
index 196b4c2ff..ddb2811f2 100644
--- a/packages/monorepo-scripts/src/publish.ts
+++ b/packages/monorepo-scripts/src/publish.ts
@@ -1,8 +1,8 @@
#!/usr/bin/env node
+import { PackageJSON } from '@0x/types';
import { logUtils } from '@0x/utils';
import * as promisify from 'es6-promisify';
-import * as fs from 'fs';
import * as _ from 'lodash';
import * as moment from 'moment';
import opn = require('opn');
@@ -47,7 +47,7 @@ async function confirmAsync(message: string): Promise<void> {
await confirmAsync(
'THIS IS NOT A TEST PUBLISH! You are about to publish one or more packages to npm. Are you sure you want to continue? (y/n)',
);
- // await confirmDocPagesRenderAsync(packagesWithDocs);
+ await confirmDocPagesRenderAsync(packagesWithDocs);
}
// Update CHANGELOGs
@@ -141,8 +141,8 @@ async function publishImagesToDockerHubAsync(allUpdatedPackages: Package[]): Pro
function getPackagesWithDocs(allUpdatedPackages: Package[]): Package[] {
const rootPackageJsonPath = `${constants.monorepoRootPath}/package.json`;
- const rootPackageJson = JSON.parse(fs.readFileSync(rootPackageJsonPath).toString());
- const packagesWithDocPagesStringIfExist = _.get(rootPackageJson, 'config.packagesWithDocPages', undefined);
+ const rootPackageJSON = utils.readJSONFile<PackageJSON>(rootPackageJsonPath);
+ const packagesWithDocPagesStringIfExist = _.get(rootPackageJSON, 'config.packagesWithDocPages', undefined);
if (_.isUndefined(packagesWithDocPagesStringIfExist)) {
return []; // None to generate & publish
}
diff --git a/packages/monorepo-scripts/src/test_installation.ts b/packages/monorepo-scripts/src/test_installation.ts
index 822f48967..ec145cd32 100644
--- a/packages/monorepo-scripts/src/test_installation.ts
+++ b/packages/monorepo-scripts/src/test_installation.ts
@@ -8,7 +8,7 @@ import { exec as execAsync } from 'promisify-child-process';
import * as rimraf from 'rimraf';
import { promisify } from 'util';
-import { Package } from './types';
+import { Changelog, Package } from './types';
import { utils } from './utils/utils';
// Packages might not be runnable if they are command-line tools or only run in browsers.
@@ -100,7 +100,7 @@ async function testInstallPackageAsync(
installablePackage: Package,
): Promise<void> {
const changelogPath = path.join(installablePackage.location, 'CHANGELOG.json');
- const lastChangelogVersion = JSON.parse(fs.readFileSync(changelogPath).toString())[0].version;
+ const lastChangelogVersion = utils.readJSONFile<Changelog>(changelogPath)[0].version;
const packageName = installablePackage.packageJson.name;
utils.log(`Testing ${packageName}@${lastChangelogVersion}`);
const packageDirName = path.join(...`${packageName}-test`.split('/'));
diff --git a/packages/monorepo-scripts/src/types.ts b/packages/monorepo-scripts/src/types.ts
index 4af4fd257..e285d9082 100644
--- a/packages/monorepo-scripts/src/types.ts
+++ b/packages/monorepo-scripts/src/types.ts
@@ -1,3 +1,5 @@
+import { PackageJSON } from '@0x/types';
+
export interface UpdatedPackage {
name: string;
version: string;
@@ -34,21 +36,6 @@ export interface GitTagsByPackageName {
[packageName: string]: string[];
}
-export interface PackageJSON {
- private?: boolean;
- version: string;
- name: string;
- main?: string;
- scripts?: { [command: string]: string };
- config?: {
- postpublish?: {
- assets?: string[];
- docOmitExports?: string[];
- dockerHubRepo?: string;
- };
- };
-}
-
export interface Package {
location: string;
packageJson: PackageJSON;
diff --git a/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts b/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts
index 1a4294e9c..c0e86ad44 100644
--- a/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts
+++ b/packages/monorepo-scripts/src/utils/doc_generate_and_upload_utils.ts
@@ -1,3 +1,4 @@
+import { PackageJSON } from '@0x/types';
import { existsSync, readFileSync, writeFileSync } from 'fs';
import * as _ from 'lodash';
import * as path from 'path';
@@ -6,7 +7,7 @@ import * as ts from 'typescript';
import { constants } from '../constants';
import { docGenConfigs } from '../doc_gen_configs';
-import { ExportInfo, ExportNameToTypedocNames, ExportPathToExportedItems, PackageJSON } from '../types';
+import { ExportInfo, ExportNameToTypedocNames, ExportPathToExportedItems } from '../types';
import { utils } from './utils';
diff --git a/packages/monorepo-scripts/src/utils/utils.ts b/packages/monorepo-scripts/src/utils/utils.ts
index 28c5658f3..20a6932c3 100644
--- a/packages/monorepo-scripts/src/utils/utils.ts
+++ b/packages/monorepo-scripts/src/utils/utils.ts
@@ -1,3 +1,4 @@
+import { PackageJSON } from '@0x/types';
import batchPackages = require('@lerna/batch-packages');
import * as fs from 'fs';
import * as _ from 'lodash';
@@ -5,7 +6,7 @@ import { exec as execAsync } from 'promisify-child-process';
import semver = require('semver');
import { constants } from '../constants';
-import { GitTagsByPackageName, Package, PackageJSON, UpdatedPackage } from '../types';
+import { GitTagsByPackageName, Package, UpdatedPackage } from '../types';
import { changelogUtils } from './changelog_utils';
@@ -13,6 +14,11 @@ export const utils = {
log(...args: any[]): void {
console.log(...args); // tslint:disable-line:no-console
},
+ readJSONFile<T>(path: string): T {
+ const JSONString = fs.readFileSync(path, 'utf8');
+ const parsed: T = JSON.parse(JSONString);
+ return parsed;
+ },
getTopologicallySortedPackages(rootDir: string): Package[] {
const packages = utils.getPackages(rootDir);
const batchedPackages: PackageJSON[] = _.flatten(batchPackages(_.map(packages, pkg => pkg.packageJson), false));
@@ -23,8 +29,7 @@ export const utils = {
return topsortedPackages;
},
getPackages(rootDir: string): Package[] {
- const rootPackageJsonString = fs.readFileSync(`${rootDir}/package.json`, 'utf8');
- const rootPackageJson = JSON.parse(rootPackageJsonString);
+ const rootPackageJson = utils.readJSONFile<PackageJSON>(`${rootDir}/package.json`);
if (_.isUndefined(rootPackageJson.workspaces)) {
throw new Error(`Did not find 'workspaces' key in root package.json`);
}
@@ -40,8 +45,7 @@ export const utils = {
}
const pathToPackageJson = `${rootDir}/${workspacePath}${subpackageName}`;
try {
- const packageJsonString = fs.readFileSync(`${pathToPackageJson}/package.json`, 'utf8');
- const packageJson = JSON.parse(packageJsonString);
+ const packageJson = utils.readJSONFile<PackageJSON>(`${pathToPackageJson}/package.json`);
const pkg = {
location: pathToPackageJson,
packageJson,
diff --git a/packages/pipeline/package.json b/packages/pipeline/package.json
index a1500cc74..3e45aa992 100644
--- a/packages/pipeline/package.json
+++ b/packages/pipeline/package.json
@@ -57,7 +57,7 @@
"dockerode": "^2.5.7",
"ethereum-types": "^2.0.0",
"pg": "^7.5.0",
- "prettier": "^1.15.3",
+ "prettier": "^1.16.3",
"ramda": "^0.25.0",
"reflect-metadata": "^0.1.12",
"sqlite3": "^4.0.2",
diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json
index 5f103342e..dd65f3aed 100644
--- a/packages/sol-compiler/CHANGELOG.json
+++ b/packages/sol-compiler/CHANGELOG.json
@@ -1,5 +1,14 @@
[
{
+ "version": "3.0.2",
+ "changes": [
+ {
+ "note": "Fix a bug when smart recompilation wasn't working because of remappings",
+ "pr": 1575
+ }
+ ]
+ },
+ {
"timestamp": 1549452781,
"version": "3.0.1",
"changes": [
diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts
index efee3eb8a..c5dea1155 100644
--- a/packages/sol-compiler/src/compiler.ts
+++ b/packages/sol-compiler/src/compiler.ts
@@ -195,9 +195,7 @@ export class Compiler {
path.basename(contractSource.path, constants.SOLIDITY_FILE_EXTENSION),
);
} else {
- contractNamesToCompile = this._specifiedContracts.map(specifiedContract =>
- path.basename(specifiedContract, constants.SOLIDITY_FILE_EXTENSION),
- );
+ return this._specifiedContracts;
}
return contractNamesToCompile;
}
@@ -217,12 +215,9 @@ export class Compiler {
for (const contractName of contractNames) {
const spyResolver = new SpyResolver(this._resolver);
const contractSource = spyResolver.resolve(contractName);
- const sourceTreeHashHex = getSourceTreeHash(
- spyResolver,
- path.join(this._contractsDir, contractSource.path),
- ).toString('hex');
+ const sourceTreeHashHex = getSourceTreeHash(spyResolver, contractSource.path).toString('hex');
const contractData = {
- contractName,
+ contractName: path.basename(contractName, constants.SOLIDITY_FILE_EXTENSION),
currentArtifactIfExists: await getContractArtifactIfExistsAsync(this._artifactsDir, contractName),
sourceTreeHashHex: `0x${sourceTreeHashHex}`,
};
@@ -329,7 +324,10 @@ export class Compiler {
} else {
const currentArtifact = contractData.currentArtifactIfExists as ContractArtifact;
const isUserOnLatestVersion = currentArtifact.schemaVersion === constants.LATEST_ARTIFACT_VERSION;
- const didCompilerSettingsChange = !_.isEqual(currentArtifact.compiler.settings, this._compilerSettings);
+ const didCompilerSettingsChange = !_.isEqual(
+ _.omit(currentArtifact.compiler.settings, 'remappings'),
+ this._compilerSettings,
+ );
const didSourceChange = currentArtifact.sourceTreeHashHex !== contractData.sourceTreeHashHex;
return !isUserOnLatestVersion || didCompilerSettingsChange || didSourceChange;
}
diff --git a/packages/sol-compiler/src/utils/compiler.ts b/packages/sol-compiler/src/utils/compiler.ts
index c75f76dac..dffd07b1d 100644
--- a/packages/sol-compiler/src/utils/compiler.ts
+++ b/packages/sol-compiler/src/utils/compiler.ts
@@ -26,7 +26,10 @@ export async function getContractArtifactIfExistsAsync(
contractName: string,
): Promise<ContractArtifact | void> {
let contractArtifact;
- const currentArtifactPath = `${artifactsDir}/${contractName}.json`;
+ const currentArtifactPath = `${artifactsDir}/${path.basename(
+ contractName,
+ constants.SOLIDITY_FILE_EXTENSION,
+ )}.json`;
try {
const opts = {
encoding: 'utf8',
diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts
index a30a0494f..b3a083999 100644
--- a/packages/types/src/index.ts
+++ b/packages/types/src/index.ts
@@ -691,6 +691,30 @@ export interface DutchAuctionDetails {
currentTimeSeconds: BigNumber;
}
+export interface PackageJSONConfig {
+ postpublish?: {
+ assets?: string[];
+ docOmitExports?: string[];
+ dockerHubRepo?: string;
+ };
+ 'abis:comment'?: string;
+ abis?: string;
+ ignoreDependencyVersions?: string;
+ ignoreDependencyVersionsForPackage?: string;
+}
+
+export interface PackageJSON {
+ private?: boolean;
+ version: string;
+ name: string;
+ main?: string;
+ scripts?: { [command: string]: string };
+ config?: PackageJSONConfig;
+ dependencies?: { [dependencyName: string]: string };
+ devDependencies?: { [dependencyName: string]: string };
+ workspaces?: string[];
+}
+
export interface EIP712DomainWithDefaultSchema {
name?: string;
version?: string;
diff --git a/packages/website/package.json b/packages/website/package.json
index 77295d4de..62b83b3ec 100644
--- a/packages/website/package.json
+++ b/packages/website/package.json
@@ -47,7 +47,7 @@
"find-versions": "^2.0.0",
"jsonschema": "^1.2.0",
"less": "^2.7.2",
- "lodash": "^4.17.5",
+ "lodash": "^4.17.11",
"material-ui": "^0.20.0",
"moment": "2.21.0",
"numeral": "^2.0.6",
diff --git a/tsconfig.json b/tsconfig.json
index 0a063c85b..bfa83503e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -40,6 +40,7 @@
{ "path": "./packages/contract-addresses" },
{ "path": "./packages/contract-artifacts" },
{ "path": "./packages/contract-wrappers" },
+ { "path": "./packages/contracts-gen" },
{ "path": "./packages/dev-utils" },
{ "path": "./packages/ethereum-types" },
{ "path": "./packages/fill-scenarios" },
diff --git a/yarn.lock b/yarn.lock
index 858187f96..6a305e857 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -472,6 +472,65 @@
npmlog "^4.1.2"
write-file-atomic "^2.3.0"
+"@0x/sol-resolver@^1.2.3":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-1.2.3.tgz#d45d18a6bdeb212abf791b1cbbeac1bb780a94d0"
+ integrity sha512-suWsEPba/XP7DBHWdQ1t14uQ9GCuvUq2lnoxXyPmrdV5pWDVr/j2qVdd16ZNdaI+BkOCwpfR1C40Yu7WtwQk5g==
+ dependencies:
+ "@0x/types" "^1.5.2"
+ "@0x/typescript-typings" "^3.0.8"
+ lodash "^4.17.5"
+
+"@0x/tslint-config@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@0x/tslint-config/-/tslint-config-2.0.2.tgz#a202f2cb943c6e5feab7446f3a004de874fb8b94"
+ integrity sha512-acYC+VYv5CQwoD5PKB7TjkesBZpX4ia6xpIT6mntzE3ro3NAO+KWVs0tnVM0T/k9+BiLLGyNGiqL6oEmF63LuQ==
+ dependencies:
+ lodash "^4.17.5"
+ tslint "5.11.0"
+ tslint-eslint-rules "5.4.0"
+ tslint-react "^3.2.0"
+ tsutils "3.0.0"
+
+"@0x/types@^1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@0x/types/-/types-1.5.2.tgz#19c99ff796664fc256facb10e704aa6541912551"
+ integrity sha512-73Q5k55SHgSrt3SUwbiySBgrNEJG5WWriTjgjUzcCSYGMLawC1X/wV1cfMsP8kCqH8jWcIiPdUoGXutXjC8jQg==
+ dependencies:
+ "@types/node" "*"
+ bignumber.js "~4.1.0"
+ ethereum-types "^1.1.6"
+
+"@0x/typescript-typings@^3.0.8":
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-3.0.8.tgz#85689e477c1cb5e5bd3eeee0dd1e73e9c2f1db83"
+ integrity sha512-WVH/Cy5/XE+fXuiriraw77pkNJc+GCUsoWLD+EMJDeBzJih/XNogZcTn1f1JApmJUX1ag05rNQ5ISQikp17YUw==
+ dependencies:
+ "@types/bn.js" "^4.11.0"
+ "@types/react" "*"
+ bignumber.js "~4.1.0"
+ ethereum-types "^1.1.6"
+ popper.js "1.14.3"
+
+"@0x/utils@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-3.0.1.tgz#20ada4a98f001c0a6656d45ae56e111b73ef8803"
+ integrity sha512-WlOmu1aZG7/a+5z1ehmoMNCgDc2s5bdVz/hD1mywSCHeJ0CqEaElTL4zXYoMxqV/wFMmwKTlQfGKwW1xKMjI4Q==
+ dependencies:
+ "@0x/types" "^1.5.2"
+ "@0x/typescript-typings" "^3.0.8"
+ "@types/node" "*"
+ abortcontroller-polyfill "^1.1.9"
+ bignumber.js "~4.1.0"
+ chalk "^2.4.1"
+ detect-node "2.0.3"
+ ethereum-types "^1.1.6"
+ ethereumjs-util "^5.1.1"
+ ethers "~4.0.4"
+ isomorphic-fetch "^2.2.1"
+ js-sha3 "^0.7.0"
+ lodash "^4.17.5"
+
"@0xproject/npm-cli-login@^0.0.11":
version "0.0.11"
resolved "https://registry.yarnpkg.com/@0xproject/npm-cli-login/-/npm-cli-login-0.0.11.tgz#3f1ec06112ce62aad300ff0575358f68aeecde2e"
@@ -1486,6 +1545,11 @@
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c"
+"@types/prettier@^1.15.2":
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.15.2.tgz#91594ea7cb6f3b1f7ea69f32621246654c7cc231"
+ integrity sha512-XIB0ZCaFZmWUHAa9dBqP5UKXXHwuukmVlP+XcyU94dui2k+l2lG+CHAbt2ffenHPUqoIs5Beh8Pdf2YEq/CZ7A==
+
"@types/prop-types@*":
version "15.5.5"
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.5.tgz#17038dd322c2325f5da650a94d5f9974943625e3"
@@ -6285,6 +6349,14 @@ ethereum-common@^0.0.18:
version "0.0.18"
resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f"
+ethereum-types@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-1.1.6.tgz#14437dbf401de361e70dac6358e5f2915ad3c35d"
+ integrity sha512-/1ixUyyg0f3Gor+U+3Kc3o9AvS8V5hNVHS9qeNXlooqVee+FIpv5kq+SOgMpKSNSVKp4wBJSjrzp0ShjbKo3bA==
+ dependencies:
+ "@types/node" "*"
+ bignumber.js "~4.1.0"
+
ethereumjs-abi@0.6.5:
version "0.6.5"
resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241"
@@ -7793,7 +7865,8 @@ got@^6.7.1:
graceful-fs@4.1.15, graceful-fs@^3.0.0, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~1.2.0:
version "4.1.15"
- resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
"graceful-readlink@>= 1.0.0":
version "1.0.1"
@@ -9069,7 +9142,7 @@ isobject@^3.0.0, isobject@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1:
+isomorphic-fetch@2.2.1, isomorphic-fetch@^2.1.1, isomorphic-fetch@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
dependencies:
@@ -12793,6 +12866,11 @@ prettier@^1.14.3, prettier@^1.15.3:
version "1.15.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a"
+prettier@^1.16.3:
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d"
+ integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==
+
pretty-bytes@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
@@ -13395,6 +13473,8 @@ react-highlight@0xproject/react-highlight#react-peer-deps:
dependencies:
highlight.js "^9.11.0"
highlightjs-solidity "^1.0.5"
+ react "^16.5.2"
+ react-dom "^16.5.2"
react-hot-loader@^4.3.3:
version "4.3.4"
@@ -14910,6 +14990,7 @@ smart-buffer@^4.0.1:
snake-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f"
+ integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=
dependencies:
no-case "^2.2.0"
@@ -16047,6 +16128,7 @@ to-regex@^3.0.1, to-regex@^3.0.2:
to-snake-case@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/to-snake-case/-/to-snake-case-1.0.0.tgz#ce746913897946019a87e62edfaeaea4c608ab8c"
+ integrity sha1-znRpE4l5RgGah+Yu366upMYIq4w=
dependencies:
to-space-case "^1.0.0"