Compare commits
108 Commits
@0x/react-
...
@0x/react-
Author | SHA1 | Date | |
---|---|---|---|
|
4861e48059 | ||
|
c0b9214138 | ||
|
9266df43a4 | ||
|
dac0bee95c | ||
|
494adedeef | ||
|
f0ed0c6a35 | ||
|
47a87e57f1 | ||
|
768c28f328 | ||
|
96a46bcb4b | ||
|
4653e4c011 | ||
|
372a242ea2 | ||
|
fb1893626f | ||
|
5fd837cc4f | ||
|
435e62a94d | ||
|
598db72523 | ||
|
4ebc561986 | ||
|
d23fd23e91 | ||
|
6e2523625f | ||
|
23274f9b48 | ||
|
7efa71eaf6 | ||
|
9c27feeff6 | ||
|
be787a0fd1 | ||
|
ee5b6ad77f | ||
|
e08fb72cf1 | ||
|
fdc4a4e5fa | ||
|
ef2c5159dd | ||
|
f0f991245c | ||
|
d3b0162dc9 | ||
|
f3d08c13eb | ||
|
10cc46779e | ||
|
80a53aedf2 | ||
|
1b96867df8 | ||
|
0192127e5d | ||
|
7610130f73 | ||
|
218c0d9f51 | ||
|
d5898a3a05 | ||
|
b055055253 | ||
|
6e3d70af56 | ||
|
ae570dba05 | ||
|
2795849dd3 | ||
|
fad48b8b6c | ||
|
685d83d6d0 | ||
|
9206f2d288 | ||
|
2fec7613c4 | ||
|
2f026cd1b6 | ||
|
6eec84d21b | ||
|
5f6a5e28e7 | ||
|
825911ed89 | ||
|
a72d418ddb | ||
|
cf5fd8ff42 | ||
|
994c6032bb | ||
|
1494a70bad | ||
|
6d565f4bff | ||
|
c6592148a7 | ||
|
6e39f11db1 | ||
|
ee86cd1dcc | ||
|
420a677828 | ||
|
9da43878b1 | ||
|
527f074e59 | ||
|
eefd9d9dd2 | ||
|
2648f5ba65 | ||
|
1b45aa5974 | ||
|
dcf19e5226 | ||
|
c5c852f54f | ||
|
7b15217694 | ||
|
8caded1d1d | ||
|
ebc3116909 | ||
|
387d7199d1 | ||
|
dc965da64e | ||
|
1d83d99d87 | ||
|
09a683557b | ||
|
99e92a346b | ||
|
9ddd45e2c6 | ||
|
0c0a1db114 | ||
|
b1474973cd | ||
|
f0f6b26c3b | ||
|
03b3b80a65 | ||
|
06cc66005c | ||
|
b0792a85a4 | ||
|
a5359df002 | ||
|
10c9d0b723 | ||
|
5c81f07d46 | ||
|
0adc8f5053 | ||
|
804de89796 | ||
|
6604e2db20 | ||
|
31d1b4ba67 | ||
|
d750225554 | ||
|
ed91c6c874 | ||
|
b494a4a4db | ||
|
e0beb7fb38 | ||
|
fc123871ad | ||
|
351e0e6f5f | ||
|
1593b94aac | ||
|
6124d80c89 | ||
|
eca63b1a58 | ||
|
2bda6dd719 | ||
|
cd4600b081 | ||
|
83f4fa92a5 | ||
|
b62fbd0b13 | ||
|
9384c507ac | ||
|
ac942faa25 | ||
|
654c13df8a | ||
|
6e2fbcdb3e | ||
|
51dce30088 | ||
|
a4f6cd21bd | ||
|
9a53a29b1f | ||
|
f7914af9c5 | ||
|
848193074a |
39
.github/autolabeler.yml
vendored
Normal file
39
.github/autolabeler.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
python: ['python-packages']
|
||||||
|
contracts: ['contracts']
|
||||||
|
sol-doc: ['packages/sol-doc']
|
||||||
|
sol-resolver: ['packages/sol-resolver']
|
||||||
|
sra-spec: ['packages/sra-spec']
|
||||||
|
subproviders: ['packages/subproviders']
|
||||||
|
contract-addresses: ['packages/contract-addresses']
|
||||||
|
migrations: ['packages/migrations']
|
||||||
|
web3-wrapper: ['packages/web3-wrapper']
|
||||||
|
sol-compiler: ['packages/sol-compiler']
|
||||||
|
types: ['packages/types']
|
||||||
|
instant: ['packages/instant']
|
||||||
|
abi-gen-templates: ['packages/abi-gen-templates']
|
||||||
|
abi-gen: ['packages/abi-gen']
|
||||||
|
website: ['packages/website']
|
||||||
|
sol-cov: ['packages/sol-cov']
|
||||||
|
utils: ['packages/utils']
|
||||||
|
tslint-config: ['packages/tslint-config']
|
||||||
|
asset-buyer: ['packages/asset-buyer']
|
||||||
|
order-watcher: ['packages/order-watcher']
|
||||||
|
react-docs: ['packages/react-docs']
|
||||||
|
order-utils: ['packages/order-utils']
|
||||||
|
react-shared: ['packages/react-shared']
|
||||||
|
assert: ['packages/assert']
|
||||||
|
base-contract: ['packages/base-contract']
|
||||||
|
typescript-typings: ['packages/typescript-typings']
|
||||||
|
0x.js: ['packages/0x.js']
|
||||||
|
abi-gen-wrappers: ['packages/abi-gen-wrappers']
|
||||||
|
metacoin: ['packages/metacoin']
|
||||||
|
contract-artifacts: ['packages/contract-artifacts']
|
||||||
|
dev-utils: ['packages/dev-utils']
|
||||||
|
contract-wrappers: ['packages/contract-wrappers']
|
||||||
|
json-schemas: ['packages/json-schemas']
|
||||||
|
ethereum-types: ['ethereum-types']
|
||||||
|
connect: ['packages/connect']
|
||||||
|
fill-scenarios: ['packages/fill-scenarios']
|
||||||
|
dev-tools-pages: ['packages/dev-tools-pages']
|
||||||
|
testnet-faucets: ['packages/testnet-faucets']
|
||||||
|
monorepo-scripts: ['packages/monorepo-scripts']
|
19
.github/stale.yml
vendored
Normal file
19
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Number of days of inactivity before an issue becomes stale
|
||||||
|
daysUntilStale: 30
|
||||||
|
# Number of days of inactivity before a stale issue is closed
|
||||||
|
daysUntilClose: 7
|
||||||
|
# Issues with these labels will never be considered stale
|
||||||
|
exemptLabels:
|
||||||
|
- pinned
|
||||||
|
- security
|
||||||
|
# Label to use when marking an issue as stale
|
||||||
|
staleLabel: stale
|
||||||
|
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||||
|
markComment: >
|
||||||
|
This issue has been automatically marked as stale because it has not had
|
||||||
|
recent activity. It will be closed if no further activity occurs. Thank you
|
||||||
|
for your contributions.
|
||||||
|
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||||
|
closeComment: >
|
||||||
|
This issue has been automatically closed because no activity occured in 7 days after being marked as stale. If it's still relevant - feel free to reopen. Thank you
|
||||||
|
for your contributions.
|
@@ -21,7 +21,6 @@
|
|||||||
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||||
|
|
||||||
* [ ] Prefix PR title with `[WIP]` if necessary.
|
* [ ] Prefix PR title with `[WIP]` if necessary.
|
||||||
* [ ] Prefix PR title with bracketed package name(s) corresponding to the changed package(s). For example: `[sol-cov] Fixed bug`.
|
|
||||||
* [ ] Add tests to cover changes as needed.
|
* [ ] Add tests to cover changes as needed.
|
||||||
* [ ] Update documentation as needed.
|
* [ ] Update documentation as needed.
|
||||||
* [ ] Add new entries to the relevant CHANGELOG.jsons.
|
* [ ] Add new entries to the relevant CHANGELOG.jsons.
|
||||||
|
@@ -22,13 +22,13 @@
|
|||||||
"install:all": "yarn install",
|
"install:all": "yarn install",
|
||||||
"wsrun": "wsrun",
|
"wsrun": "wsrun",
|
||||||
"lerna": "lerna",
|
"lerna": "lerna",
|
||||||
"build": "wsrun build $PKG --fast-exit -r --stages",
|
"build": "wsrun build $PKG --fast-exit -r --stages --exclude-missing",
|
||||||
"build:no_website": "wsrun build $PKG --fast-exit -r --stages --exclude @0x/website",
|
"build:no_website": "wsrun build $PKG --fast-exit -r --stages --exclude @0x/website --exclude-missing",
|
||||||
"build:ci:no_website": "wsrun build:ci $PKG --fast-exit -r --stages --exclude @0x/website",
|
"build:ci:no_website": "wsrun build:ci $PKG --fast-exit -r --stages --exclude @0x/website --exclude-missing",
|
||||||
"build:monorepo_scripts": "PKG=@0x/monorepo-scripts yarn build",
|
"build:monorepo_scripts": "PKG=@0x/monorepo-scripts yarn build",
|
||||||
"build:ts": "tsc -b",
|
"build:ts": "tsc -b",
|
||||||
"watch:ts": "tsc -b -w",
|
"watch:ts": "tsc -b -w",
|
||||||
"clean": "wsrun clean $PKG --fast-exit -r --parallel",
|
"clean": "wsrun clean $PKG --fast-exit -r --parallel --exclude-missing",
|
||||||
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
|
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
|
||||||
"rebuild": "run-s clean build",
|
"rebuild": "run-s clean build",
|
||||||
"rebuild:no_website": "run-s clean build:no_website",
|
"rebuild:no_website": "run-s clean build:no_website",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "2.0.6",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.0.6 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v2.0.5 - _November 21, 2018_
|
## v2.0.5 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "0x.js",
|
"name": "0x.js",
|
||||||
"version": "2.0.5",
|
"version": "2.0.6",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -42,11 +42,10 @@
|
|||||||
},
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^1.0.17",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/contract-addresses": "^2.0.0",
|
||||||
"@0x/contract-addresses": "^1.2.0",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/migrations": "^2.2.0",
|
||||||
"@0x/migrations": "^2.1.0",
|
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^2.2.42",
|
"@types/mocha": "^2.2.42",
|
||||||
@@ -74,15 +73,15 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/contract-wrappers": "^4.1.0",
|
"@0x/contract-wrappers": "^4.1.1",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/order-watcher": "^2.2.5",
|
"@0x/order-watcher": "^2.2.6",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/web3-provider-engine": "^14.0.0",
|
"@types/web3-provider-engine": "^14.0.0",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
|
20
packages/abi-gen-templates/CHANGELOG.json
Normal file
20
packages/abi-gen-templates/CHANGELOG.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.0.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Initial publish",
|
||||||
|
"pr": 1305
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
14
packages/abi-gen-templates/CHANGELOG.md
Normal file
14
packages/abi-gen-templates/CHANGELOG.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!--
|
||||||
|
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||||
|
Edit the package's CHANGELOG.json file only.
|
||||||
|
-->
|
||||||
|
|
||||||
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.0.1 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
|
## v1.0.0 - _Invalid date_
|
||||||
|
|
||||||
|
* Initial publish (#1305)
|
20
packages/abi-gen-templates/package.json
Normal file
20
packages/abi-gen-templates/package.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "@0x/abi-gen-templates",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.12"
|
||||||
|
},
|
||||||
|
"description": "Handlebars templates used by abi-gen to generate contract-wrappers",
|
||||||
|
"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/abi-gen-templates/README.md",
|
||||||
|
"publishConfig": {
|
||||||
|
"access": "public"
|
||||||
|
}
|
||||||
|
}
|
@@ -1,4 +1,14 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"pr": 1309,
|
||||||
|
"note": "Update Exchange artifact to receive ZRX asset data as a constructor argument"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1543401373
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.0.0 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Update Exchange artifact to receive ZRX asset data as a constructor argument (#1309)
|
||||||
|
|
||||||
## v1.1.0 - _November 21, 2018_
|
## v1.1.0 - _November 21, 2018_
|
||||||
|
|
||||||
* `deployFrom0xArtifactAsync` additionally accepts artifacts that conform to the `SimpleContractArtifact` interface (#1298)
|
* `deployFrom0xArtifactAsync` additionally accepts artifacts that conform to the `SimpleContractArtifact` interface (#1298)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/abi-gen-wrappers",
|
"name": "@0x/abi-gen-wrappers",
|
||||||
"version": "1.1.0",
|
"version": "2.0.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
"lint": "tslint --format stylish --project .",
|
"lint": "tslint --format stylish --project .",
|
||||||
"pre_build": "yarn generate_contract_wrappers",
|
"pre_build": "yarn generate_contract_wrappers",
|
||||||
"clean": "shx rm -rf lib wrappers",
|
"clean": "shx rm -rf lib wrappers",
|
||||||
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/generated-wrappers --backend ethers"
|
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output src/generated-wrappers --backend ethers"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|OrderValidator|WETH9|ZRXToken).json"
|
"abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|OrderValidator|WETH9|ZRXToken).json"
|
||||||
@@ -31,17 +31,18 @@
|
|||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^1.0.17",
|
"@0x/abi-gen": "^1.0.17",
|
||||||
|
"@0x/abi-gen-templates": "^1.0.1",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
"lodash": "^4.17.5",
|
"lodash": "^4.17.5",
|
||||||
"shx": "^0.2.2"
|
"shx": "^0.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^3.0.7"
|
"@0x/base-contract": "^3.0.8"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
@@ -3028,29 +3028,35 @@ export class ExchangeContract extends BaseContract {
|
|||||||
artifact: ContractArtifact | SimpleContractArtifact,
|
artifact: ContractArtifact | SimpleContractArtifact,
|
||||||
provider: Provider,
|
provider: Provider,
|
||||||
txDefaults: Partial<TxData>,
|
txDefaults: Partial<TxData>,
|
||||||
|
_zrxAssetData: string,
|
||||||
): Promise<ExchangeContract> {
|
): Promise<ExchangeContract> {
|
||||||
if (_.isUndefined(artifact.compilerOutput)) {
|
if (_.isUndefined(artifact.compilerOutput)) {
|
||||||
throw new Error('Compiler output not found in the artifact file');
|
throw new Error('Compiler output not found in the artifact file');
|
||||||
}
|
}
|
||||||
const bytecode = artifact.compilerOutput.evm.bytecode.object;
|
const bytecode = artifact.compilerOutput.evm.bytecode.object;
|
||||||
const abi = artifact.compilerOutput.abi;
|
const abi = artifact.compilerOutput.abi;
|
||||||
return ExchangeContract.deployAsync(bytecode, abi, provider, txDefaults, );
|
return ExchangeContract.deployAsync(bytecode, abi, provider, txDefaults, _zrxAssetData
|
||||||
|
);
|
||||||
}
|
}
|
||||||
public static async deployAsync(
|
public static async deployAsync(
|
||||||
bytecode: string,
|
bytecode: string,
|
||||||
abi: ContractAbi,
|
abi: ContractAbi,
|
||||||
provider: Provider,
|
provider: Provider,
|
||||||
txDefaults: Partial<TxData>,
|
txDefaults: Partial<TxData>,
|
||||||
|
_zrxAssetData: string,
|
||||||
): Promise<ExchangeContract> {
|
): Promise<ExchangeContract> {
|
||||||
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
|
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
|
||||||
[] = BaseContract._formatABIDataItemList(
|
[_zrxAssetData
|
||||||
|
] = BaseContract._formatABIDataItemList(
|
||||||
constructorAbi.inputs,
|
constructorAbi.inputs,
|
||||||
[],
|
[_zrxAssetData
|
||||||
|
],
|
||||||
BaseContract._bigNumberToString,
|
BaseContract._bigNumberToString,
|
||||||
);
|
);
|
||||||
const iface = new ethers.utils.Interface(abi);
|
const iface = new ethers.utils.Interface(abi);
|
||||||
const deployInfo = iface.deployFunction;
|
const deployInfo = iface.deployFunction;
|
||||||
const txData = deployInfo.encode(bytecode, []);
|
const txData = deployInfo.encode(bytecode, [_zrxAssetData
|
||||||
|
]);
|
||||||
const web3Wrapper = new Web3Wrapper(provider);
|
const web3Wrapper = new Web3Wrapper(provider);
|
||||||
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
|
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
|
||||||
{data: txData},
|
{data: txData},
|
||||||
@@ -3062,7 +3068,8 @@ export class ExchangeContract extends BaseContract {
|
|||||||
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||||
logUtils.log(`Exchange successfully deployed at ${txReceipt.contractAddress}`);
|
logUtils.log(`Exchange successfully deployed at ${txReceipt.contractAddress}`);
|
||||||
const contractInstance = new ExchangeContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
|
const contractInstance = new ExchangeContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
|
||||||
contractInstance.constructorArgs = [];
|
contractInstance.constructorArgs = [_zrxAssetData
|
||||||
|
];
|
||||||
return contractInstance;
|
return contractInstance;
|
||||||
}
|
}
|
||||||
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
|
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "3.0.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.0.2 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.0.1 - _November 21, 2018_
|
## v3.0.1 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated (#1276)
|
* Dependencies updated (#1276)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/asset-buyer",
|
"name": "@0x/asset-buyer",
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -37,15 +37,15 @@
|
|||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/connect": "^3.0.7",
|
"@0x/connect": "^3.0.8",
|
||||||
"@0x/contract-wrappers": "^4.1.0",
|
"@0x/contract-wrappers": "^4.1.1",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"lodash": "^4.17.5"
|
"lodash": "^4.17.5"
|
||||||
},
|
},
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "3.0.8",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "3.0.7",
|
"version": "3.0.7",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.0.8 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.0.7 - _November 21, 2018_
|
## v3.0.7 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/base-contract",
|
"name": "@0x/base-contract",
|
||||||
"version": "3.0.7",
|
"version": "3.0.8",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
"lodash": "^4.17.5"
|
"lodash": "^4.17.5"
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "3.0.8",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "3.0.7",
|
"version": "3.0.7",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.0.8 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.0.7 - _November 21, 2018_
|
## v3.0.7 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/connect",
|
"name": "@0x/connect",
|
||||||
"version": "3.0.7",
|
"version": "3.0.8",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
|
@@ -1,4 +1,18 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Redeployed Rinkeby with testnet Exchange artifact",
|
||||||
|
"pr": 1318
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "Added Ganache snapshot addresses for network 50",
|
||||||
|
"pr": 1318
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1543401373
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,11 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.0.0 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Redeployed Rinkeby with testnet Exchange artifact (#1318)
|
||||||
|
* Added Ganache snapshot addresses for network 50 (#1318)
|
||||||
|
|
||||||
## v1.2.0 - _November 21, 2018_
|
## v1.2.0 - _November 21, 2018_
|
||||||
|
|
||||||
* Rinkeby Deployment
|
* Rinkeby Deployment
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contract-addresses",
|
"name": "@0x/contract-addresses",
|
||||||
"version": "1.2.0",
|
"version": "2.0.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
|
@@ -16,6 +16,7 @@ export enum NetworkId {
|
|||||||
Ropsten = 3,
|
Ropsten = 3,
|
||||||
Rinkeby = 4,
|
Rinkeby = 4,
|
||||||
Kovan = 42,
|
Kovan = 42,
|
||||||
|
Ganache = 50,
|
||||||
}
|
}
|
||||||
|
|
||||||
const networkToAddresses: { [networkId: number]: ContractAddresses } = {
|
const networkToAddresses: { [networkId: number]: ContractAddresses } = {
|
||||||
@@ -40,14 +41,14 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = {
|
|||||||
orderValidator: '0x90431a90516ab49af23a0530e04e8c7836e7122f',
|
orderValidator: '0x90431a90516ab49af23a0530e04e8c7836e7122f',
|
||||||
},
|
},
|
||||||
4: {
|
4: {
|
||||||
erc20Proxy: '0x3e809c563c15a295e832e37053798ddc8d6c8dab',
|
exchange: '0xbce0b5f6eb618c565c3e5f5cd69652bbc279f44e',
|
||||||
erc721Proxy: '0x8e1ff02637cb5e39f2fa36c14706aa348b065b09',
|
erc20Proxy: '0x2f5ae4f6106e89b4147651688a92256885c5f410',
|
||||||
zrxToken: '0x2727e688b8fd40b198cd5fe6e408e00494a06f07',
|
erc721Proxy: '0x7656d773e11ff7383a14dcf09a9c50990481cd10',
|
||||||
|
zrxToken: '0x8080c7e4b81ecf23aa6f877cfbfd9b0c228c6ffa',
|
||||||
etherToken: '0xc778417e063141139fce010982780140aa0cd5ab',
|
etherToken: '0xc778417e063141139fce010982780140aa0cd5ab',
|
||||||
exchange: '0x22ebc052f43a88efa06379426120718170f2204e',
|
assetProxyOwner: '0xe1703da878afcebff5b7624a826902af475b9c03',
|
||||||
assetProxyOwner: '0x1da52d1d3a3acfa0a1836b737393b4e9931268fc',
|
forwarder: '0x2d40589abbdee84961f3a7656b9af7adb0ee5ab4',
|
||||||
forwarder: '0xd2dbf3250a764eaaa94fa0c84ed87c0edc8ed04e',
|
orderValidator: '0x0c5173a51e26b29d6126c686756fb9fbef71f762',
|
||||||
orderValidator: '0x39c3fc9f4d8430af2713306ce80c584752d9e1c7',
|
|
||||||
},
|
},
|
||||||
42: {
|
42: {
|
||||||
erc20Proxy: '0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e',
|
erc20Proxy: '0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e',
|
||||||
@@ -59,6 +60,17 @@ const networkToAddresses: { [networkId: number]: ContractAddresses } = {
|
|||||||
forwarder: '0x17992e4ffb22730138e4b62aaa6367fa9d3699a6',
|
forwarder: '0x17992e4ffb22730138e4b62aaa6367fa9d3699a6',
|
||||||
orderValidator: '0xb389da3d204b412df2f75c6afb3d0a7ce0bc283d',
|
orderValidator: '0xb389da3d204b412df2f75c6afb3d0a7ce0bc283d',
|
||||||
},
|
},
|
||||||
|
// NetworkId 50 represents our Ganache snapshot generated from migrations.
|
||||||
|
50: {
|
||||||
|
exchange: '0x48bacb9266a570d521063ef5dd96e61686dbe788',
|
||||||
|
erc20Proxy: '0x1dc4c1cefef38a777b15aa20260a54e584b16c48',
|
||||||
|
erc721Proxy: '0x1d7022f5b17d2f8b695918fb48fa1089c9f85401',
|
||||||
|
zrxToken: '0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c',
|
||||||
|
etherToken: '0x0b1ba0af832d7c05fd64161e0db78e85978e8082',
|
||||||
|
assetProxyOwner: '0x34d402f14d58e001d8efbe6585051bf9706aa064',
|
||||||
|
forwarder: '0xb69e673309512a9d726f87304c6984054f87a93b',
|
||||||
|
orderValidator: '0xe86bb98fcf9bff3512c74589b78fb168200cc546',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,4 +1,14 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "1.1.2",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"pr": 1309,
|
||||||
|
"note": "Update Exchange artifact to receive ZRX asset data as a constructor argument"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1543401373
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.1.2 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Update Exchange artifact to receive ZRX asset data as a constructor argument (#1309)
|
||||||
|
|
||||||
## v1.1.0 - _November 9, 2018_
|
## v1.1.0 - _November 9, 2018_
|
||||||
|
|
||||||
* Update Forwarder artifact (#1192)
|
* Update Forwarder artifact (#1192)
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contract-artifacts",
|
"name": "@0x/contract-artifacts",
|
||||||
"version": "1.1.0",
|
"version": "1.1.2",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "4.1.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v4.1.1 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v4.1.0 - _November 21, 2018_
|
## v4.1.0 - _November 21, 2018_
|
||||||
|
|
||||||
* Add a `nonce` field for `TxOpts` so that it's now possible to re-broadcast stuck transactions with a higher gas amount (#1292)
|
* Add a `nonce` field for `TxOpts` so that it's now possible to re-broadcast stuck transactions with a higher gas amount (#1292)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/contract-wrappers",
|
"name": "@0x/contract-wrappers",
|
||||||
"version": "4.1.0",
|
"version": "4.1.1",
|
||||||
"description": "Smart TS wrappers for 0x smart contracts",
|
"description": "Smart TS wrappers for 0x smart contracts",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"0xproject",
|
"0xproject",
|
||||||
@@ -37,9 +37,9 @@
|
|||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/migrations": "^2.1.0",
|
"@0x/migrations": "^2.2.0",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
"@types/mocha": "^2.2.42",
|
"@types/mocha": "^2.2.42",
|
||||||
@@ -65,17 +65,17 @@
|
|||||||
"web3-provider-engine": "14.0.6"
|
"web3-provider-engine": "14.0.6"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/contract-addresses": "^1.2.0",
|
"@0x/contract-addresses": "^2.0.0",
|
||||||
"@0x/contract-artifacts": "^1.1.0",
|
"@0x/contract-artifacts": "^1.1.2",
|
||||||
"@0x/fill-scenarios": "^1.0.13",
|
"@0x/fill-scenarios": "^1.0.14",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethereumjs-blockstream": "6.0.0",
|
"ethereumjs-blockstream": "6.0.0",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^5.1.1",
|
||||||
|
@@ -1,4 +1,14 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "OrderValidator",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "remove `getApproved` check from ERC721 approval query",
|
||||||
|
"pr": 1149
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Forwarder",
|
"name": "Forwarder",
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
|
@@ -148,7 +148,7 @@ contract OrderValidator {
|
|||||||
balance = target == owner ? 1 : 0;
|
balance = target == owner ? 1 : 0;
|
||||||
|
|
||||||
// Check if ERC721Proxy is approved to spend tokenId
|
// Check if ERC721Proxy is approved to spend tokenId
|
||||||
bool isApproved = IERC721Token(token).isApprovedForAll(target, assetProxy) || IERC721Token(token).getApproved(tokenId) == assetProxy;
|
bool isApproved = IERC721Token(token).isApprovedForAll(target, assetProxy);
|
||||||
|
|
||||||
// Set alowance to 1 if ERC721Proxy is approved to spend tokenId
|
// Set alowance to 1 if ERC721Proxy is approved to spend tokenId
|
||||||
allowance = isApproved ? 1 : 0;
|
allowance = isApproved ? 1 : 0;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "contracts",
|
"name": "contracts",
|
||||||
"version": "2.1.55",
|
"version": "2.1.56",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*.js' --timeout 100000 --bail --exit",
|
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*.js' --timeout 100000 --bail --exit",
|
||||||
"compile": "sol-compiler --contracts-dir contracts",
|
"compile": "sol-compiler --contracts-dir contracts",
|
||||||
"clean": "shx rm -rf lib generated-artifacts generated-wrappers",
|
"clean": "shx rm -rf lib generated-artifacts generated-wrappers",
|
||||||
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers",
|
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers",
|
||||||
"lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts",
|
"lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts",
|
||||||
"coverage:report:text": "istanbul report text",
|
"coverage:report:text": "istanbul report text",
|
||||||
"coverage:report:html": "istanbul report html && open coverage/index.html",
|
"coverage:report:html": "istanbul report html && open coverage/index.html",
|
||||||
@@ -46,10 +46,10 @@
|
|||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts/README.md",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/abi-gen": "^1.0.17",
|
"@0x/abi-gen": "^1.0.17",
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/sol-compiler": "^1.1.13",
|
"@0x/sol-compiler": "^1.1.14",
|
||||||
"@0x/sol-cov": "^2.1.13",
|
"@0x/sol-cov": "^2.1.14",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/bn.js": "^4.11.0",
|
"@types/bn.js": "^4.11.0",
|
||||||
"@types/ethereumjs-abi": "^0.6.0",
|
"@types/ethereumjs-abi": "^0.6.0",
|
||||||
@@ -71,12 +71,12 @@
|
|||||||
"yargs": "^10.0.3"
|
"yargs": "^10.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/js-combinatorics": "^0.5.29",
|
"@types/js-combinatorics": "^0.5.29",
|
||||||
"bn.js": "^4.11.8",
|
"bn.js": "^4.11.8",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
|
@@ -198,7 +198,7 @@ describe('OrderValidator', () => {
|
|||||||
);
|
);
|
||||||
expect(newAllowance).to.be.bignumber.equal(ERC721_ALLOWANCE);
|
expect(newAllowance).to.be.bignumber.equal(ERC721_ALLOWANCE);
|
||||||
});
|
});
|
||||||
it('should return an allowance of 1 when ERC721Proxy is approved for specific tokenId', async () => {
|
it('should return an allowance of 0 when ERC721Proxy is approved for specific tokenId', async () => {
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
@@ -213,7 +213,7 @@ describe('OrderValidator', () => {
|
|||||||
makerAddress,
|
makerAddress,
|
||||||
erc721AssetData,
|
erc721AssetData,
|
||||||
);
|
);
|
||||||
expect(newAllowance).to.be.bignumber.equal(ERC721_ALLOWANCE);
|
expect(newAllowance).to.be.bignumber.equal(constants.ZERO_AMOUNT);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -248,8 +248,9 @@ describe('OrderValidator', () => {
|
|||||||
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
await erc721Token.mint.sendTransactionAsync(makerAddress, tokenId),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
const isApproved = true;
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||||
from: makerAddress,
|
from: makerAddress,
|
||||||
}),
|
}),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
@@ -311,8 +312,9 @@ describe('OrderValidator', () => {
|
|||||||
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
const isApproved = true;
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||||
from: takerAddress,
|
from: takerAddress,
|
||||||
}),
|
}),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
@@ -465,8 +467,9 @@ describe('OrderValidator', () => {
|
|||||||
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
await erc721Token.mint.sendTransactionAsync(takerAddress, tokenId),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
);
|
);
|
||||||
|
const isApproved = true;
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
await erc721Token.approve.sendTransactionAsync(erc721Proxy.address, tokenId, {
|
await erc721Token.setApprovalForAll.sendTransactionAsync(erc721Proxy.address, isApproved, {
|
||||||
from: takerAddress,
|
from: takerAddress,
|
||||||
}),
|
}),
|
||||||
constants.AWAIT_TRANSACTION_MINED_MS,
|
constants.AWAIT_TRANSACTION_MINED_MS,
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/dev-tools-pages",
|
"name": "@0x/dev-tools-pages",
|
||||||
"version": "0.0.7",
|
"version": "0.0.8",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
},
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/react-shared": "^1.0.22",
|
"@0x/react-shared": "^1.0.23",
|
||||||
"basscss": "^8.0.3",
|
"basscss": "^8.0.3",
|
||||||
"bowser": "^1.9.3",
|
"bowser": "^1.9.3",
|
||||||
"less": "^2.7.2",
|
"less": "^2.7.2",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.0.19",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "1.0.18",
|
"version": "1.0.18",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.0.19 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.0.18 - _November 21, 2018_
|
## v1.0.18 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/dev-utils",
|
"name": "@0x/dev-utils",
|
||||||
"version": "1.0.18",
|
"version": "1.0.19",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
"typescript": "3.0.1"
|
"typescript": "3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/web3-provider-engine": "^14.0.0",
|
"@types/web3-provider-engine": "^14.0.0",
|
||||||
"chai": "^4.0.1",
|
"chai": "^4.0.1",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.0.14",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "1.0.13",
|
"version": "1.0.13",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.0.14 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.0.13 - _November 21, 2018_
|
## v1.0.13 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/fill-scenarios",
|
"name": "@0x/fill-scenarios",
|
||||||
"version": "1.0.13",
|
"version": "1.0.14",
|
||||||
"description": "0x order fill scenario generator",
|
"description": "0x order fill scenario generator",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"types": "lib/index.d.ts",
|
"types": "lib/index.d.ts",
|
||||||
@@ -28,14 +28,14 @@
|
|||||||
"typescript": "3.0.1"
|
"typescript": "3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/contract-artifacts": "^1.1.0",
|
"@0x/contract-artifacts": "^1.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
"lodash": "^4.17.5"
|
"lodash": "^4.17.5"
|
||||||
|
@@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/instant",
|
"name": "@0x/instant",
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
|
"private": true,
|
||||||
"description": "0x Instant React Component",
|
"description": "0x Instant React Component",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"types": "lib/index.d.ts",
|
"types": "lib/index.d.ts",
|
||||||
@@ -45,14 +46,14 @@
|
|||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/asset-buyer": "^3.0.1",
|
"@0x/asset-buyer": "^3.0.2",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"bowser": "^1.9.4",
|
"bowser": "^1.9.4",
|
||||||
"copy-to-clipboard": "^3.0.8",
|
"copy-to-clipboard": "^3.0.8",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
|
@@ -1,36 +1,75 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
<head>
|
||||||
<head>
|
<meta charset="utf-8" />
|
||||||
<meta charset="utf-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>0x Instant Dev Environment</title>
|
<title>0x Instant Dev Environment</title>
|
||||||
<link rel="stylesheet" href="/external.css">
|
<link rel="stylesheet" href="/external.css" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css" />
|
||||||
<script type="text/javascript" src="/instant.js" charset="utf-8"></script>
|
<script type="text/javascript" src="/instant.js" charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="https://unpkg.com/jsuri@1.3.1/Uri.js" charset="utf-8"></script>
|
<script type="text/javascript" src="https://unpkg.com/jsuri@1.3.1/Uri.js" charset="utf-8"></script>
|
||||||
<script type="text/javascript" src="https://unpkg.com/bignumber.js@4.1.0/bignumber.js" charset="utf-8"></script>
|
<script type="text/javascript" src="https://unpkg.com/bignumber.js@4.1.0/bignumber.js" charset="utf-8"></script>
|
||||||
<style>
|
<style>
|
||||||
#zeroExInstantContainer {
|
.flex-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 100vh;
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-center--column {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
margin: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
height: 100vh;
|
||||||
background-color: rgba(0, 0, 0, 0.2);
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<div class="flex-center flex-center--column">
|
||||||
|
<div><button class="button is-large" onClick="renderWithUrlDefaults()">Open</button></div>
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
class="button is-danger"
|
||||||
|
onClick="renderWithAssetData('0xf47261b00000000000000000000000001985365e9f78359a9b6ad760e32412f4a445e862')"
|
||||||
|
>
|
||||||
|
Buy REP
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button is-black"
|
||||||
|
onClick="renderWithAssetData('0xf47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498')"
|
||||||
|
>
|
||||||
|
Buy ZRX
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button is-info"
|
||||||
|
onClick="renderWithAssetData('0xf47261b00000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96')"
|
||||||
|
>
|
||||||
|
Buy GNO
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div id="zeroExInstantContainer"></div>
|
<div id="zeroExInstantContainer"></div>
|
||||||
<script>
|
<script>
|
||||||
const removeUndefined = (obj) => {
|
// Simulate history
|
||||||
|
window.history.pushState({ page: 1 }, '0x Instant');
|
||||||
|
window.history.pushState({ page: 2 }, '0x Instant');
|
||||||
|
window.history.pushState({ page: 3 }, '0x Instant');
|
||||||
|
window.onpopstate = () => console.log("Integrator's onpopstate called");
|
||||||
|
|
||||||
|
const removeUndefined = obj => {
|
||||||
for (let k in obj) if (obj[k] === undefined) delete obj[k];
|
for (let k in obj) if (obj[k] === undefined) delete obj[k];
|
||||||
return obj;
|
return obj;
|
||||||
}
|
};
|
||||||
BigNumber.config({
|
BigNumber.config({
|
||||||
EXPONENTIAL_AT: 1000,
|
EXPONENTIAL_AT: 1000,
|
||||||
DECIMAL_PLACES: 78,
|
DECIMAL_PLACES: 78,
|
||||||
@@ -50,8 +89,9 @@
|
|||||||
expirationTimeSeconds: new BigNumber('1601535600'),
|
expirationTimeSeconds: new BigNumber('1601535600'),
|
||||||
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
||||||
salt: new BigNumber('3101985707338942582579795423923841749956600670712030922928319824580764688653'),
|
salt: new BigNumber('3101985707338942582579795423923841749956600670712030922928319824580764688653'),
|
||||||
signature: '0x1bd4d5686fea801fe33c68c4944356085e7e6cb553eb7073160abd815609f714e85fb47f44b7ffd0a2a1321ac40d72d55163869d0a50fdb5a402132150fe33a08403',
|
signature:
|
||||||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2'
|
'0x1bd4d5686fea801fe33c68c4944356085e7e6cb553eb7073160abd815609f714e85fb47f44b7ffd0a2a1321ac40d72d55163869d0a50fdb5a402132150fe33a08403',
|
||||||
|
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2',
|
||||||
},
|
},
|
||||||
// Order selling ZRX
|
// Order selling ZRX
|
||||||
{
|
{
|
||||||
@@ -66,9 +106,12 @@
|
|||||||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
||||||
expirationTimeSeconds: new BigNumber('2524636800'),
|
expirationTimeSeconds: new BigNumber('2524636800'),
|
||||||
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
||||||
salt: new BigNumber('64592004666704945574675477805199411288137454783320798602050822322450089238268'),
|
salt: new BigNumber(
|
||||||
signature: '0x1c13cacddca8d7d8248e91f412377e68f8f1f9891a59a6c1b2eea9f7b33558c30c4fb86a448e08ab7def40a28fb3a3062dcb33bb3c45302447fce5c4288b7c7f5b03',
|
'64592004666704945574675477805199411288137454783320798602050822322450089238268',
|
||||||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2'
|
),
|
||||||
|
signature:
|
||||||
|
'0x1c13cacddca8d7d8248e91f412377e68f8f1f9891a59a6c1b2eea9f7b33558c30c4fb86a448e08ab7def40a28fb3a3062dcb33bb3c45302447fce5c4288b7c7f5b03',
|
||||||
|
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2',
|
||||||
},
|
},
|
||||||
// Order selling GNT
|
// Order selling GNT
|
||||||
{
|
{
|
||||||
@@ -83,9 +126,12 @@
|
|||||||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
||||||
expirationTimeSeconds: new BigNumber('1601535600'),
|
expirationTimeSeconds: new BigNumber('1601535600'),
|
||||||
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
||||||
salt: new BigNumber('40204378562212615907903051460421336779451270522691667164301816101569427926606'),
|
salt: new BigNumber(
|
||||||
signature: '0x1c788bf4b93769da1e8f195f52f0f59b4a298ac6da30cf6d05a87ed4be5ee974f61352ed1bc6a0844d0962b8c894c9ca08e452431255958a4e98dd93cbe1fbc73803',
|
'40204378562212615907903051460421336779451270522691667164301816101569427926606',
|
||||||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2'
|
),
|
||||||
|
signature:
|
||||||
|
'0x1c788bf4b93769da1e8f195f52f0f59b4a298ac6da30cf6d05a87ed4be5ee974f61352ed1bc6a0844d0962b8c894c9ca08e452431255958a4e98dd93cbe1fbc73803',
|
||||||
|
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2',
|
||||||
},
|
},
|
||||||
// Order selling MKR
|
// Order selling MKR
|
||||||
{
|
{
|
||||||
@@ -100,16 +146,16 @@
|
|||||||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c',
|
||||||
expirationTimeSeconds: new BigNumber('1601535600'),
|
expirationTimeSeconds: new BigNumber('1601535600'),
|
||||||
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
feeRecipientAddress: '0x0000000000000000000000000000000000000000',
|
||||||
salt: new BigNumber('71338269924068280039932133924198049371838034090153601678083172009862985793828'),
|
salt: new BigNumber(
|
||||||
signature: '0x1bb3151d57ee1e8fa697767ce83ee4ba77d1ceb8cc1e79c7d77126b3687517704c50c6b3d9cb42c7e7d4478d574b297dfbd1626c5c18a7bc9c2a792c4c07f0797c03',
|
'71338269924068280039932133924198049371838034090153601678083172009862985793828',
|
||||||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2'
|
),
|
||||||
}
|
signature:
|
||||||
|
'0x1bb3151d57ee1e8fa697767ce83ee4ba77d1ceb8cc1e79c7d77126b3687517704c50c6b3d9cb42c7e7d4478d574b297dfbd1626c5c18a7bc9c2a792c4c07f0797c03',
|
||||||
|
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
const getRenderOptionsOverridesFromUrl = () => {
|
||||||
const queryParams = new Uri(window.location.search);
|
const queryParams = new Uri(window.location.search);
|
||||||
const renderOptionsDefaults = {
|
|
||||||
orderSource: 'https://api.radarrelay.com/0x/v2/',
|
|
||||||
onClose: () => { console.log('0x Instant Closed') }
|
|
||||||
}
|
|
||||||
const orderSourceOverride = queryParams.getQueryParamValue('orderSource');
|
const orderSourceOverride = queryParams.getQueryParamValue('orderSource');
|
||||||
const availableAssetDatasString = queryParams.getQueryParamValue('availableAssetDatas');
|
const availableAssetDatasString = queryParams.getQueryParamValue('availableAssetDatas');
|
||||||
const feeRecipientOverride = queryParams.getQueryParamValue('feeRecipient');
|
const feeRecipientOverride = queryParams.getQueryParamValue('feeRecipient');
|
||||||
@@ -118,7 +164,7 @@
|
|||||||
if (feeRecipientOverride !== undefined && feePercentageOverride !== undefined) {
|
if (feeRecipientOverride !== undefined && feePercentageOverride !== undefined) {
|
||||||
affiliateInfoOverride = {
|
affiliateInfoOverride = {
|
||||||
feeRecipient: feeRecipientOverride,
|
feeRecipient: feeRecipientOverride,
|
||||||
feePercentage: feePercentageOverride
|
feePercentage: feePercentageOverride,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
const renderOptionsOverrides = {
|
const renderOptionsOverrides = {
|
||||||
@@ -128,10 +174,33 @@
|
|||||||
availableAssetDatas: availableAssetDatasString ? JSON.parse(availableAssetDatasString) : undefined,
|
availableAssetDatas: availableAssetDatasString ? JSON.parse(availableAssetDatasString) : undefined,
|
||||||
defaultSelectedAssetData: queryParams.getQueryParamValue('defaultSelectedAssetData'),
|
defaultSelectedAssetData: queryParams.getQueryParamValue('defaultSelectedAssetData'),
|
||||||
affiliateInfo: affiliateInfoOverride,
|
affiliateInfo: affiliateInfoOverride,
|
||||||
}
|
shouldDisablePushToHistory: !!queryParams.getQueryParamValue('shouldDisablePushToHistory'),
|
||||||
|
};
|
||||||
|
return renderOptionsOverrides;
|
||||||
|
};
|
||||||
|
const render = renderOptionsOverrides => {
|
||||||
|
const renderOptionsDefaults = {
|
||||||
|
orderSource: 'https://api.radarrelay.com/0x/v2/',
|
||||||
|
onClose: () => {
|
||||||
|
console.log('0x Instant Closed');
|
||||||
|
},
|
||||||
|
};
|
||||||
const renderOptions = Object.assign({}, renderOptionsDefaults, removeUndefined(renderOptionsOverrides));
|
const renderOptions = Object.assign({}, renderOptionsDefaults, removeUndefined(renderOptionsOverrides));
|
||||||
zeroExInstant.render(renderOptions);
|
zeroExInstant.render(renderOptions);
|
||||||
|
};
|
||||||
|
const renderWithUrlDefaults = (renderOptions = {}) => {
|
||||||
|
const finalOptions = {
|
||||||
|
...getRenderOptionsOverridesFromUrl(),
|
||||||
|
...renderOptions,
|
||||||
|
};
|
||||||
|
render(finalOptions);
|
||||||
|
};
|
||||||
|
renderWithUrlDefaults();
|
||||||
|
const renderWithAssetData = assetData => {
|
||||||
|
renderWithUrlDefaults({
|
||||||
|
defaultSelectedAssetData: assetData,
|
||||||
|
});
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@@ -8,6 +8,7 @@ import { oc } from 'ts-optchain';
|
|||||||
import { WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX } from '../constants';
|
import { WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX } from '../constants';
|
||||||
import { ColorOption } from '../style/theme';
|
import { ColorOption } from '../style/theme';
|
||||||
import { AffiliateInfo, ZeroExInstantError } from '../types';
|
import { AffiliateInfo, ZeroExInstantError } from '../types';
|
||||||
|
import { analytics } from '../util/analytics';
|
||||||
import { gasPriceEstimator } from '../util/gas_price_estimator';
|
import { gasPriceEstimator } from '../util/gas_price_estimator';
|
||||||
import { util } from '../util/util';
|
import { util } from '../util/util';
|
||||||
|
|
||||||
@@ -59,6 +60,7 @@ export class BuyButton extends React.Component<BuyButtonProps> {
|
|||||||
// if we don't have a balance for the user, let the transaction through, it will be handled by the wallet
|
// if we don't have a balance for the user, let the transaction through, it will be handled by the wallet
|
||||||
const hasSufficientEth = _.isUndefined(accountEthBalanceInWei) || accountEthBalanceInWei.gte(ethNeededForBuy);
|
const hasSufficientEth = _.isUndefined(accountEthBalanceInWei) || accountEthBalanceInWei.gte(ethNeededForBuy);
|
||||||
if (!hasSufficientEth) {
|
if (!hasSufficientEth) {
|
||||||
|
analytics.trackBuyNotEnoughEth(buyQuote);
|
||||||
this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH);
|
this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -66,6 +68,7 @@ export class BuyButton extends React.Component<BuyButtonProps> {
|
|||||||
const gasInfo = await gasPriceEstimator.getGasInfoAsync();
|
const gasInfo = await gasPriceEstimator.getGasInfoAsync();
|
||||||
const feeRecipient = oc(affiliateInfo).feeRecipient();
|
const feeRecipient = oc(affiliateInfo).feeRecipient();
|
||||||
try {
|
try {
|
||||||
|
analytics.trackBuyStarted(buyQuote);
|
||||||
txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote, {
|
txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote, {
|
||||||
feeRecipient,
|
feeRecipient,
|
||||||
takerAddress: accountAddress,
|
takerAddress: accountAddress,
|
||||||
@@ -74,9 +77,11 @@ export class BuyButton extends React.Component<BuyButtonProps> {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof Error) {
|
if (e instanceof Error) {
|
||||||
if (e.message === AssetBuyerError.SignatureRequestDenied) {
|
if (e.message === AssetBuyerError.SignatureRequestDenied) {
|
||||||
|
analytics.trackBuySignatureDenied(buyQuote);
|
||||||
this.props.onSignatureDenied(buyQuote);
|
this.props.onSignatureDenied(buyQuote);
|
||||||
return;
|
return;
|
||||||
} else if (e.message === AssetBuyerError.TransactionValueTooLow) {
|
} else if (e.message === AssetBuyerError.TransactionValueTooLow) {
|
||||||
|
analytics.trackBuySimulationFailed(buyQuote);
|
||||||
this.props.onValidationFail(buyQuote, AssetBuyerError.TransactionValueTooLow);
|
this.props.onValidationFail(buyQuote, AssetBuyerError.TransactionValueTooLow);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -87,14 +92,17 @@ export class BuyButton extends React.Component<BuyButtonProps> {
|
|||||||
const expectedEndTimeUnix = startTimeUnix + gasInfo.estimatedTimeMs;
|
const expectedEndTimeUnix = startTimeUnix + gasInfo.estimatedTimeMs;
|
||||||
this.props.onBuyProcessing(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
|
this.props.onBuyProcessing(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
|
||||||
try {
|
try {
|
||||||
|
analytics.trackBuyTxSubmitted(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
|
||||||
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
await web3Wrapper.awaitTransactionSuccessAsync(txHash);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof Error && e.message.startsWith(WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX)) {
|
if (e instanceof Error && e.message.startsWith(WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX)) {
|
||||||
|
analytics.trackBuyTxFailed(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
|
||||||
this.props.onBuyFailure(buyQuote, txHash);
|
this.props.onBuyFailure(buyQuote, txHash);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
analytics.trackBuyTxSucceeded(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
|
||||||
this.props.onBuySuccess(buyQuote, txHash);
|
this.props.onBuySuccess(buyQuote, txHash);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -64,6 +64,9 @@ export class ERC20AssetAmountInput extends React.Component<ERC20AssetAmountInput
|
|||||||
maxFontSizePx={this.props.startingFontSizePx}
|
maxFontSizePx={this.props.startingFontSizePx}
|
||||||
onAmountChange={this._handleChange}
|
onAmountChange={this._handleChange}
|
||||||
onFontSizeChange={this._handleFontSizeChange}
|
onFontSizeChange={this._handleFontSizeChange}
|
||||||
|
hasAutofocus={true}
|
||||||
|
/* We send in a key of asset data to force a rerender of this component when the user selects a new asset. We do this so the autofocus attribute will bring focus onto this input */
|
||||||
|
key={asset.assetData}
|
||||||
/>
|
/>
|
||||||
</Container>
|
</Container>
|
||||||
<Container
|
<Container
|
||||||
|
@@ -3,6 +3,7 @@ import * as React from 'react';
|
|||||||
|
|
||||||
import { ColorOption } from '../style/theme';
|
import { ColorOption } from '../style/theme';
|
||||||
import { ERC20Asset } from '../types';
|
import { ERC20Asset } from '../types';
|
||||||
|
import { analytics } from '../util/analytics';
|
||||||
import { assetUtils } from '../util/asset';
|
import { assetUtils } from '../util/asset';
|
||||||
|
|
||||||
import { SearchInput } from './search_input';
|
import { SearchInput } from './search_input';
|
||||||
@@ -57,6 +58,7 @@ export class ERC20TokenSelector extends React.Component<ERC20TokenSelectorProps>
|
|||||||
this.setState({
|
this.setState({
|
||||||
searchQuery,
|
searchQuery,
|
||||||
});
|
});
|
||||||
|
analytics.trackTokenSelectorSearched(searchQuery);
|
||||||
};
|
};
|
||||||
private readonly _isTokenQueryMatch = (token: ERC20Asset): boolean => {
|
private readonly _isTokenQueryMatch = (token: ERC20Asset): boolean => {
|
||||||
const { searchQuery } = this.state;
|
const { searchQuery } = this.state;
|
||||||
|
@@ -107,7 +107,7 @@ export class InstantHeading extends React.Component<InstantHeadingProps, {}> {
|
|||||||
|
|
||||||
private readonly _renderEthAmount = (): React.ReactNode => {
|
private readonly _renderEthAmount = (): React.ReactNode => {
|
||||||
return (
|
return (
|
||||||
<Text fontSize="16px" fontColor={ColorOption.white} fontWeight={500}>
|
<Text fontSize="16px" textAlign="right" width="100%" fontColor={ColorOption.white} fontWeight={500}>
|
||||||
{format.ethBaseUnitAmount(
|
{format.ethBaseUnitAmount(
|
||||||
this.props.totalEthBaseUnitAmount,
|
this.props.totalEthBaseUnitAmount,
|
||||||
4,
|
4,
|
||||||
@@ -119,7 +119,7 @@ export class InstantHeading extends React.Component<InstantHeadingProps, {}> {
|
|||||||
|
|
||||||
private readonly _renderDollarAmount = (): React.ReactNode => {
|
private readonly _renderDollarAmount = (): React.ReactNode => {
|
||||||
return (
|
return (
|
||||||
<Text fontSize="16px" fontColor={ColorOption.white}>
|
<Text fontSize="16px" textAlign="right" width="100%" fontColor={ColorOption.white}>
|
||||||
{format.ethBaseUnitAmountInUsd(
|
{format.ethBaseUnitAmountInUsd(
|
||||||
this.props.totalEthBaseUnitAmount,
|
this.props.totalEthBaseUnitAmount,
|
||||||
this.props.ethUsdPrice,
|
this.props.ethUsdPrice,
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
import { BigNumber } from '@0x/utils';
|
import { BigNumber } from '@0x/utils';
|
||||||
import copy from 'copy-to-clipboard';
|
import * as copy from 'copy-to-clipboard';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
import { Network } from '../types';
|
import { Network } from '../types';
|
||||||
|
import { analytics } from '../util/analytics';
|
||||||
import { envUtil } from '../util/env';
|
import { envUtil } from '../util/env';
|
||||||
import { etherscanUtil } from '../util/etherscan';
|
import { etherscanUtil } from '../util/etherscan';
|
||||||
import { format } from '../util/format';
|
import { format } from '../util/format';
|
||||||
@@ -20,7 +21,14 @@ export class PaymentMethodDropdown extends React.Component<PaymentMethodDropdown
|
|||||||
const { accountAddress, accountEthBalanceInWei } = this.props;
|
const { accountAddress, accountEthBalanceInWei } = this.props;
|
||||||
const value = format.ethAddress(accountAddress);
|
const value = format.ethAddress(accountAddress);
|
||||||
const label = format.ethBaseUnitAmount(accountEthBalanceInWei, 4, '') as string;
|
const label = format.ethBaseUnitAmount(accountEthBalanceInWei, 4, '') as string;
|
||||||
return <Dropdown value={value} label={label} items={this._getDropdownItemConfigs()} />;
|
return (
|
||||||
|
<Dropdown
|
||||||
|
value={value}
|
||||||
|
label={label}
|
||||||
|
items={this._getDropdownItemConfigs()}
|
||||||
|
onOpen={analytics.trackPaymentMethodDropdownOpened}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
private readonly _getDropdownItemConfigs = (): DropdownItemConfig[] => {
|
private readonly _getDropdownItemConfigs = (): DropdownItemConfig[] => {
|
||||||
if (envUtil.isMobileOperatingSystem()) {
|
if (envUtil.isMobileOperatingSystem()) {
|
||||||
@@ -37,11 +45,15 @@ export class PaymentMethodDropdown extends React.Component<PaymentMethodDropdown
|
|||||||
return [viewOnEtherscan, copyAddressToClipboard];
|
return [viewOnEtherscan, copyAddressToClipboard];
|
||||||
};
|
};
|
||||||
private readonly _handleEtherscanClick = (): void => {
|
private readonly _handleEtherscanClick = (): void => {
|
||||||
|
analytics.trackPaymentMethodOpenedEtherscan();
|
||||||
|
|
||||||
const { accountAddress, network } = this.props;
|
const { accountAddress, network } = this.props;
|
||||||
const etherscanUrl = etherscanUtil.getEtherScanEthAddressIfExists(accountAddress, network);
|
const etherscanUrl = etherscanUtil.getEtherScanEthAddressIfExists(accountAddress, network);
|
||||||
window.open(etherscanUrl, '_blank');
|
window.open(etherscanUrl, '_blank');
|
||||||
};
|
};
|
||||||
private readonly _handleCopyToClipboardClick = (): void => {
|
private readonly _handleCopyToClipboardClick = (): void => {
|
||||||
|
analytics.trackPaymentMethodCopiedAddress();
|
||||||
|
|
||||||
const { accountAddress } = this.props;
|
const { accountAddress } = this.props;
|
||||||
copy(accountAddress);
|
copy(accountAddress);
|
||||||
};
|
};
|
||||||
|
@@ -18,6 +18,7 @@ export interface ScalingAmountInputProps {
|
|||||||
value?: BigNumber;
|
value?: BigNumber;
|
||||||
onAmountChange: (value?: BigNumber) => void;
|
onAmountChange: (value?: BigNumber) => void;
|
||||||
onFontSizeChange: (fontSizePx: number) => void;
|
onFontSizeChange: (fontSizePx: number) => void;
|
||||||
|
hasAutofocus: boolean;
|
||||||
}
|
}
|
||||||
interface ScalingAmountInputState {
|
interface ScalingAmountInputState {
|
||||||
stringValue: string;
|
stringValue: string;
|
||||||
@@ -29,6 +30,7 @@ export class ScalingAmountInput extends React.Component<ScalingAmountInputProps,
|
|||||||
onAmountChange: util.boundNoop,
|
onAmountChange: util.boundNoop,
|
||||||
onFontSizeChange: util.boundNoop,
|
onFontSizeChange: util.boundNoop,
|
||||||
isDisabled: false,
|
isDisabled: false,
|
||||||
|
hasAutofocus: false,
|
||||||
};
|
};
|
||||||
public constructor(props: ScalingAmountInputProps) {
|
public constructor(props: ScalingAmountInputProps) {
|
||||||
super(props);
|
super(props);
|
||||||
@@ -64,6 +66,7 @@ export class ScalingAmountInput extends React.Component<ScalingAmountInputProps,
|
|||||||
placeholder="0.00"
|
placeholder="0.00"
|
||||||
emptyInputWidthCh={3.5}
|
emptyInputWidthCh={3.5}
|
||||||
isDisabled={this.props.isDisabled}
|
isDisabled={this.props.isDisabled}
|
||||||
|
hasAutofocus={this.props.hasAutofocus}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ export interface ScalingInputProps {
|
|||||||
maxLength?: number;
|
maxLength?: number;
|
||||||
scalingSettings: ScalingSettings;
|
scalingSettings: ScalingSettings;
|
||||||
isDisabled: boolean;
|
isDisabled: boolean;
|
||||||
|
hasAutofocus: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ScalingInputState {
|
export interface ScalingInputState {
|
||||||
@@ -51,6 +52,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
|||||||
maxLength: 7,
|
maxLength: 7,
|
||||||
scalingSettings: defaultScalingSettings,
|
scalingSettings: defaultScalingSettings,
|
||||||
isDisabled: false,
|
isDisabled: false,
|
||||||
|
hasAutofocus: false,
|
||||||
};
|
};
|
||||||
public state: ScalingInputState = {
|
public state: ScalingInputState = {
|
||||||
inputWidthPxAtPhaseChange: undefined,
|
inputWidthPxAtPhaseChange: undefined,
|
||||||
@@ -123,7 +125,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public render(): React.ReactNode {
|
public render(): React.ReactNode {
|
||||||
const { isDisabled, fontColor, onChange, placeholder, value, maxLength } = this.props;
|
const { hasAutofocus, isDisabled, fontColor, onChange, placeholder, value, maxLength } = this.props;
|
||||||
const phase = ScalingInput.getPhaseFromProps(this.props);
|
const phase = ScalingInput.getPhaseFromProps(this.props);
|
||||||
return (
|
return (
|
||||||
<Input
|
<Input
|
||||||
@@ -136,6 +138,7 @@ export class ScalingInput extends React.Component<ScalingInputProps, ScalingInpu
|
|||||||
width={this._calculateWidth(phase)}
|
width={this._calculateWidth(phase)}
|
||||||
maxLength={maxLength}
|
maxLength={maxLength}
|
||||||
disabled={isDisabled}
|
disabled={isDisabled}
|
||||||
|
autoFocus={hasAutofocus}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,7 @@ export interface DropdownProps {
|
|||||||
value: string;
|
value: string;
|
||||||
label?: string;
|
label?: string;
|
||||||
items: DropdownItemConfig[];
|
items: DropdownItemConfig[];
|
||||||
|
onOpen?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DropdownState {
|
export interface DropdownState {
|
||||||
@@ -97,9 +98,14 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|||||||
if (_.isEmpty(this.props.items)) {
|
if (_.isEmpty(this.props.items)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const isOpen = !this.state.isOpen;
|
||||||
this.setState({
|
this.setState({
|
||||||
isOpen: !this.state.isOpen,
|
isOpen,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isOpen && this.props.onOpen) {
|
||||||
|
this.props.onOpen();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
private readonly _closeDropdown = (): void => {
|
private readonly _closeDropdown = (): void => {
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@@ -11,6 +11,7 @@ export interface TextProps {
|
|||||||
fontSize?: string;
|
fontSize?: string;
|
||||||
opacity?: number;
|
opacity?: number;
|
||||||
letterSpacing?: string;
|
letterSpacing?: string;
|
||||||
|
textAlign?: string;
|
||||||
textTransform?: string;
|
textTransform?: string;
|
||||||
lineHeight?: string;
|
lineHeight?: string;
|
||||||
className?: string;
|
className?: string;
|
||||||
@@ -22,6 +23,7 @@ export interface TextProps {
|
|||||||
noWrap?: boolean;
|
noWrap?: boolean;
|
||||||
display?: string;
|
display?: string;
|
||||||
href?: string;
|
href?: string;
|
||||||
|
width?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Text: React.StatelessComponent<TextProps> = ({ href, onClick, ...rest }) => {
|
export const Text: React.StatelessComponent<TextProps> = ({ href, onClick, ...rest }) => {
|
||||||
@@ -51,6 +53,8 @@ export const StyledText =
|
|||||||
${props => (props.display ? `display: ${props.display}` : '')};
|
${props => (props.display ? `display: ${props.display}` : '')};
|
||||||
${props => (props.letterSpacing ? `letter-spacing: ${props.letterSpacing}` : '')};
|
${props => (props.letterSpacing ? `letter-spacing: ${props.letterSpacing}` : '')};
|
||||||
${props => (props.textTransform ? `text-transform: ${props.textTransform}` : '')};
|
${props => (props.textTransform ? `text-transform: ${props.textTransform}` : '')};
|
||||||
|
${props => (props.textAlign ? `text-align: ${props.textAlign}` : '')};
|
||||||
|
${props => (props.width ? `width: ${props.width}` : '')};
|
||||||
&:hover {
|
&:hover {
|
||||||
${props =>
|
${props =>
|
||||||
props.onClick ? `color: ${darken(darkenOnHoverAmount, props.theme[props.fontColor || 'white'])}` : ''};
|
props.onClick ? `color: ${darken(darkenOnHoverAmount, props.theme[props.fontColor || 'white'])}` : ''};
|
||||||
|
@@ -11,21 +11,20 @@ import { SelectedAssetBuyOrderStateButtons } from '../containers/selected_asset_
|
|||||||
import { SelectedAssetInstantHeading } from '../containers/selected_asset_instant_heading';
|
import { SelectedAssetInstantHeading } from '../containers/selected_asset_instant_heading';
|
||||||
import { ColorOption } from '../style/theme';
|
import { ColorOption } from '../style/theme';
|
||||||
import { zIndex } from '../style/z_index';
|
import { zIndex } from '../style/z_index';
|
||||||
import { OrderProcessState, SlideAnimationState } from '../types';
|
import { SlideAnimationState } from '../types';
|
||||||
|
import { analytics, TokenSelectorClosedVia } from '../util/analytics';
|
||||||
|
|
||||||
import { CSSReset } from './css_reset';
|
import { CSSReset } from './css_reset';
|
||||||
import { SlidingPanel } from './sliding_panel';
|
import { SlidingPanel } from './sliding_panel';
|
||||||
import { Container } from './ui/container';
|
import { Container } from './ui/container';
|
||||||
import { Flex } from './ui/flex';
|
import { Flex } from './ui/flex';
|
||||||
|
|
||||||
export interface ZeroExInstantContainerProps {
|
export interface ZeroExInstantContainerProps {}
|
||||||
orderProcessState: OrderProcessState;
|
|
||||||
}
|
|
||||||
export interface ZeroExInstantContainerState {
|
export interface ZeroExInstantContainerState {
|
||||||
tokenSelectionPanelAnimationState: SlideAnimationState;
|
tokenSelectionPanelAnimationState: SlideAnimationState;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ZeroExInstantContainer extends React.Component<{}, ZeroExInstantContainerState> {
|
export class ZeroExInstantContainer extends React.Component<ZeroExInstantContainerProps, ZeroExInstantContainerState> {
|
||||||
public state = {
|
public state = {
|
||||||
tokenSelectionPanelAnimationState: 'none' as SlideAnimationState,
|
tokenSelectionPanelAnimationState: 'none' as SlideAnimationState,
|
||||||
};
|
};
|
||||||
@@ -60,9 +59,9 @@ export class ZeroExInstantContainer extends React.Component<{}, ZeroExInstantCon
|
|||||||
</Flex>
|
</Flex>
|
||||||
<SlidingPanel
|
<SlidingPanel
|
||||||
animationState={this.state.tokenSelectionPanelAnimationState}
|
animationState={this.state.tokenSelectionPanelAnimationState}
|
||||||
onClose={this._handlePanelClose}
|
onClose={this._handlePanelCloseClickedX}
|
||||||
>
|
>
|
||||||
<AvailableERC20TokenSelector onTokenSelect={this._handlePanelClose} />
|
<AvailableERC20TokenSelector onTokenSelect={this._handlePanelCloseAfterChose} />
|
||||||
</SlidingPanel>
|
</SlidingPanel>
|
||||||
<CurrentStandardSlidingPanel />
|
<CurrentStandardSlidingPanel />
|
||||||
</Container>
|
</Container>
|
||||||
@@ -82,11 +81,19 @@ export class ZeroExInstantContainer extends React.Component<{}, ZeroExInstantCon
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
private readonly _handleSymbolClick = (): void => {
|
private readonly _handleSymbolClick = (): void => {
|
||||||
|
analytics.trackTokenSelectorOpened();
|
||||||
this.setState({
|
this.setState({
|
||||||
tokenSelectionPanelAnimationState: 'slidIn',
|
tokenSelectionPanelAnimationState: 'slidIn',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
private readonly _handlePanelClose = (): void => {
|
private readonly _handlePanelCloseClickedX = (): void => {
|
||||||
|
this._handlePanelClose(TokenSelectorClosedVia.ClickedX);
|
||||||
|
};
|
||||||
|
private readonly _handlePanelCloseAfterChose = (): void => {
|
||||||
|
this._handlePanelClose(TokenSelectorClosedVia.TokenChose);
|
||||||
|
};
|
||||||
|
private readonly _handlePanelClose = (closedVia: TokenSelectorClosedVia): void => {
|
||||||
|
analytics.trackTokenSelectorClosed(closedVia);
|
||||||
this.setState({
|
this.setState({
|
||||||
tokenSelectionPanelAnimationState: 'slidOut',
|
tokenSelectionPanelAnimationState: 'slidOut',
|
||||||
});
|
});
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
import { ZeroExInstantContainer } from '../components/zero_ex_instant_container';
|
import { ZeroExInstantContainer } from '../components/zero_ex_instant_container';
|
||||||
|
import { MAIN_CONTAINER_DIV_CLASS, OVERLAY_DIV_CLASS } from '../constants';
|
||||||
import { ColorOption } from '../style/theme';
|
import { ColorOption } from '../style/theme';
|
||||||
|
|
||||||
import { Container } from './ui/container';
|
import { Container } from './ui/container';
|
||||||
@@ -18,7 +19,7 @@ export const ZeroExInstantOverlay: React.StatelessComponent<ZeroExInstantOverlay
|
|||||||
const { onClose, zIndex, ...rest } = props;
|
const { onClose, zIndex, ...rest } = props;
|
||||||
return (
|
return (
|
||||||
<ZeroExInstantProvider {...rest}>
|
<ZeroExInstantProvider {...rest}>
|
||||||
<Overlay zIndex={zIndex}>
|
<Overlay zIndex={zIndex} className={OVERLAY_DIV_CLASS}>
|
||||||
<Flex height="100vh">
|
<Flex height="100vh">
|
||||||
<Container position="absolute" top="0px" right="0px" display={{ default: 'initial', sm: 'none' }}>
|
<Container position="absolute" top="0px" right="0px" display={{ default: 'initial', sm: 'none' }}>
|
||||||
<Icon
|
<Icon
|
||||||
@@ -30,7 +31,11 @@ export const ZeroExInstantOverlay: React.StatelessComponent<ZeroExInstantOverlay
|
|||||||
padding="2em 2em"
|
padding="2em 2em"
|
||||||
/>
|
/>
|
||||||
</Container>
|
</Container>
|
||||||
<Container width={{ default: 'auto', sm: '100%' }} height={{ default: 'auto', sm: '100%' }}>
|
<Container
|
||||||
|
width={{ default: 'auto', sm: '100%' }}
|
||||||
|
height={{ default: 'auto', sm: '100%' }}
|
||||||
|
className={MAIN_CONTAINER_DIV_CLASS}
|
||||||
|
>
|
||||||
<ZeroExInstantContainer />
|
<ZeroExInstantContainer />
|
||||||
</Container>
|
</Container>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
@@ -125,14 +125,16 @@ export class ZeroExInstantProvider extends React.Component<ZeroExInstantProvider
|
|||||||
|
|
||||||
// Analytics
|
// Analytics
|
||||||
disableAnalytics(this.props.shouldDisableAnalyticsTracking || false);
|
disableAnalytics(this.props.shouldDisableAnalyticsTracking || false);
|
||||||
analytics.addEventProperties({
|
analytics.addEventProperties(
|
||||||
embeddedHost: window.location.host,
|
analytics.generateEventProperties(
|
||||||
embeddedUrl: window.location.href,
|
state.network,
|
||||||
networkId: state.network,
|
this.props.orderSource,
|
||||||
providerName: state.providerState.name,
|
state.providerState,
|
||||||
gitSha: process.env.GIT_SHA,
|
window,
|
||||||
npmVersion: process.env.NPM_PACKAGE_VERSION,
|
state.selectedAsset,
|
||||||
});
|
this.props.affiliateInfo,
|
||||||
|
),
|
||||||
|
);
|
||||||
analytics.trackInstantOpened();
|
analytics.trackInstantOpened();
|
||||||
}
|
}
|
||||||
public componentWillUnmount(): void {
|
public componentWillUnmount(): void {
|
||||||
|
@@ -7,6 +7,8 @@ export const ETH_DECIMALS = 18;
|
|||||||
export const DEFAULT_ZERO_EX_CONTAINER_SELECTOR = '#zeroExInstantContainer';
|
export const DEFAULT_ZERO_EX_CONTAINER_SELECTOR = '#zeroExInstantContainer';
|
||||||
export const INJECTED_DIV_CLASS = 'zeroExInstantResetRoot';
|
export const INJECTED_DIV_CLASS = 'zeroExInstantResetRoot';
|
||||||
export const INJECTED_DIV_ID = 'zeroExInstant';
|
export const INJECTED_DIV_ID = 'zeroExInstant';
|
||||||
|
export const OVERLAY_DIV_CLASS = 'zeroExInstantOverlay';
|
||||||
|
export const MAIN_CONTAINER_DIV_CLASS = 'zeroExInstantMainContainer';
|
||||||
export const WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX = 'Transaction failed';
|
export const WEB_3_WRAPPER_TRANSACTION_FAILED_ERROR_MSG_PREFIX = 'Transaction failed';
|
||||||
export const GWEI_IN_WEI = new BigNumber(1000000000);
|
export const GWEI_IN_WEI = new BigNumber(1000000000);
|
||||||
export const ONE_SECOND_MS = 1000;
|
export const ONE_SECOND_MS = 1000;
|
||||||
|
@@ -12,6 +12,7 @@ import { Action, actions } from '../redux/actions';
|
|||||||
import { asyncData } from '../redux/async_data';
|
import { asyncData } from '../redux/async_data';
|
||||||
import { State } from '../redux/reducer';
|
import { State } from '../redux/reducer';
|
||||||
import { Network, Omit, OperatingSystem, ProviderState, StandardSlidingPanelContent } from '../types';
|
import { Network, Omit, OperatingSystem, ProviderState, StandardSlidingPanelContent } from '../types';
|
||||||
|
import { analytics } from '../util/analytics';
|
||||||
import { envUtil } from '../util/env';
|
import { envUtil } from '../util/env';
|
||||||
|
|
||||||
export interface ConnectedAccountPaymentMethodProps {}
|
export interface ConnectedAccountPaymentMethodProps {}
|
||||||
@@ -40,8 +41,11 @@ const mapDispatchToProps = (
|
|||||||
ownProps: ConnectedAccountPaymentMethodProps,
|
ownProps: ConnectedAccountPaymentMethodProps,
|
||||||
): ConnectedDispatch => ({
|
): ConnectedDispatch => ({
|
||||||
openInstallWalletPanel: () => dispatch(actions.openStandardSlidingPanel(StandardSlidingPanelContent.InstallWallet)),
|
openInstallWalletPanel: () => dispatch(actions.openStandardSlidingPanel(StandardSlidingPanelContent.InstallWallet)),
|
||||||
unlockWalletAndDispatchToStore: async (providerState: ProviderState) =>
|
unlockWalletAndDispatchToStore: (providerState: ProviderState) => {
|
||||||
asyncData.fetchAccountInfoAndDispatchToStore(providerState, dispatch, true),
|
analytics.trackAccountUnlockRequested();
|
||||||
|
// tslint:disable-next-line:no-floating-promises
|
||||||
|
asyncData.fetchAccountInfoAndDispatchToStore(providerState, dispatch, true);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const mergeProps = (
|
const mergeProps = (
|
||||||
|
@@ -5,40 +5,50 @@ import * as ReactDOM from 'react-dom';
|
|||||||
import { DEFAULT_ZERO_EX_CONTAINER_SELECTOR, INJECTED_DIV_CLASS, INJECTED_DIV_ID } from './constants';
|
import { DEFAULT_ZERO_EX_CONTAINER_SELECTOR, INJECTED_DIV_CLASS, INJECTED_DIV_ID } from './constants';
|
||||||
import { ZeroExInstantOverlay, ZeroExInstantOverlayProps } from './index';
|
import { ZeroExInstantOverlay, ZeroExInstantOverlayProps } from './index';
|
||||||
import { assert } from './util/assert';
|
import { assert } from './util/assert';
|
||||||
|
import { util } from './util/util';
|
||||||
|
|
||||||
export const render = (props: ZeroExInstantOverlayProps, selector: string = DEFAULT_ZERO_EX_CONTAINER_SELECTOR) => {
|
const isInstantRendered = (): boolean => !!document.getElementById(INJECTED_DIV_ID);
|
||||||
assert.isValidOrderSource('orderSource', props.orderSource);
|
|
||||||
if (!_.isUndefined(props.defaultSelectedAssetData)) {
|
const validateInstantRenderConfig = (config: ZeroExInstantConfig, selector: string) => {
|
||||||
assert.isHexString('defaultSelectedAssetData', props.defaultSelectedAssetData);
|
assert.isValidOrderSource('orderSource', config.orderSource);
|
||||||
|
if (!_.isUndefined(config.defaultSelectedAssetData)) {
|
||||||
|
assert.isHexString('defaultSelectedAssetData', config.defaultSelectedAssetData);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.additionalAssetMetaDataMap)) {
|
if (!_.isUndefined(config.additionalAssetMetaDataMap)) {
|
||||||
assert.isValidAssetMetaDataMap('props.additionalAssetMetaDataMap', props.additionalAssetMetaDataMap);
|
assert.isValidAssetMetaDataMap('additionalAssetMetaDataMap', config.additionalAssetMetaDataMap);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.defaultAssetBuyAmount)) {
|
if (!_.isUndefined(config.defaultAssetBuyAmount)) {
|
||||||
assert.isNumber('props.defaultAssetBuyAmount', props.defaultAssetBuyAmount);
|
assert.isNumber('defaultAssetBuyAmount', config.defaultAssetBuyAmount);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.networkId)) {
|
if (!_.isUndefined(config.networkId)) {
|
||||||
assert.isNumber('props.networkId', props.networkId);
|
assert.isNumber('networkId', config.networkId);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.availableAssetDatas)) {
|
if (!_.isUndefined(config.availableAssetDatas)) {
|
||||||
assert.areValidAssetDatas('availableAssetDatas', props.availableAssetDatas);
|
assert.areValidAssetDatas('availableAssetDatas', config.availableAssetDatas);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.onClose)) {
|
if (!_.isUndefined(config.onClose)) {
|
||||||
assert.isFunction('props.onClose', props.onClose);
|
assert.isFunction('onClose', config.onClose);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.zIndex)) {
|
if (!_.isUndefined(config.zIndex)) {
|
||||||
assert.isNumber('props.zIndex', props.zIndex);
|
assert.isNumber('zIndex', config.zIndex);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.affiliateInfo)) {
|
if (!_.isUndefined(config.affiliateInfo)) {
|
||||||
assert.isValidAffiliateInfo('props.affiliateInfo', props.affiliateInfo);
|
assert.isValidAffiliateInfo('affiliateInfo', config.affiliateInfo);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.provider)) {
|
if (!_.isUndefined(config.provider)) {
|
||||||
assert.isWeb3Provider('props.provider', props.provider);
|
assert.isWeb3Provider('provider', config.provider);
|
||||||
}
|
}
|
||||||
if (!_.isUndefined(props.shouldDisableAnalyticsTracking)) {
|
if (!_.isUndefined(config.shouldDisablePushToHistory)) {
|
||||||
assert.isBoolean('props.shouldDisableAnalyticsTracking', props.shouldDisableAnalyticsTracking);
|
assert.isBoolean('shouldDisablePushToHistory', config.shouldDisablePushToHistory);
|
||||||
|
}
|
||||||
|
if (!_.isUndefined(config.shouldDisableAnalyticsTracking)) {
|
||||||
|
assert.isBoolean('shouldDisableAnalyticsTracking', config.shouldDisableAnalyticsTracking);
|
||||||
}
|
}
|
||||||
assert.isString('selector', selector);
|
assert.isString('selector', selector);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Render instant and return a callback that allows you to remove it from the DOM.
|
||||||
|
const renderInstant = (config: ZeroExInstantConfig, selector: string) => {
|
||||||
const appendToIfExists = document.querySelector(selector);
|
const appendToIfExists = document.querySelector(selector);
|
||||||
assert.assert(!_.isNull(appendToIfExists), `Could not find div with selector: ${selector}`);
|
assert.assert(!_.isNull(appendToIfExists), `Could not find div with selector: ${selector}`);
|
||||||
const appendTo = appendToIfExists as Element;
|
const appendTo = appendToIfExists as Element;
|
||||||
@@ -46,14 +56,57 @@ export const render = (props: ZeroExInstantOverlayProps, selector: string = DEFA
|
|||||||
injectedDiv.setAttribute('id', INJECTED_DIV_ID);
|
injectedDiv.setAttribute('id', INJECTED_DIV_ID);
|
||||||
injectedDiv.setAttribute('class', INJECTED_DIV_CLASS);
|
injectedDiv.setAttribute('class', INJECTED_DIV_CLASS);
|
||||||
appendTo.appendChild(injectedDiv);
|
appendTo.appendChild(injectedDiv);
|
||||||
const instantOverlayProps = {
|
const closeInstant = () => {
|
||||||
...props,
|
if (!_.isUndefined(config.onClose)) {
|
||||||
onClose: () => {
|
config.onClose();
|
||||||
appendTo.removeChild(injectedDiv);
|
|
||||||
if (!_.isUndefined(props.onClose)) {
|
|
||||||
props.onClose();
|
|
||||||
}
|
}
|
||||||
},
|
appendTo.removeChild(injectedDiv);
|
||||||
|
};
|
||||||
|
const instantOverlayProps = {
|
||||||
|
...config,
|
||||||
|
// If we are using the history API, just go back to close
|
||||||
|
onClose: () => (config.shouldDisablePushToHistory ? closeInstant() : window.history.back()),
|
||||||
};
|
};
|
||||||
ReactDOM.render(React.createElement(ZeroExInstantOverlay, instantOverlayProps), injectedDiv);
|
ReactDOM.render(React.createElement(ZeroExInstantOverlay, instantOverlayProps), injectedDiv);
|
||||||
|
return closeInstant;
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface ZeroExInstantConfig extends ZeroExInstantOverlayProps {
|
||||||
|
shouldDisablePushToHistory?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const render = (config: ZeroExInstantConfig, selector: string = DEFAULT_ZERO_EX_CONTAINER_SELECTOR) => {
|
||||||
|
validateInstantRenderConfig(config, selector);
|
||||||
|
if (config.shouldDisablePushToHistory) {
|
||||||
|
if (!isInstantRendered()) {
|
||||||
|
renderInstant(config, selector);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Before we render, push to history saying that instant is showing for this part of the history.
|
||||||
|
window.history.pushState({ zeroExInstantShowing: true }, '0x Instant');
|
||||||
|
let removeInstant = renderInstant(config, selector);
|
||||||
|
// If the integrator defined a popstate handler, save it to __zeroExInstantIntegratorsPopStateHandler
|
||||||
|
// unless we have already done so on a previous render.
|
||||||
|
const anyWindow = window as any;
|
||||||
|
if (window.onpopstate && !anyWindow.__zeroExInstantIntegratorsPopStateHandler) {
|
||||||
|
anyWindow.__zeroExInstantIntegratorsPopStateHandler = window.onpopstate.bind(window);
|
||||||
|
}
|
||||||
|
const integratorsOnPopStateHandler = anyWindow.__zeroExInstantIntegratorsPopStateHandler || util.boundNoop;
|
||||||
|
const onPopStateHandler = (e: PopStateEvent) => {
|
||||||
|
integratorsOnPopStateHandler(e);
|
||||||
|
const newState = e.state;
|
||||||
|
if (newState && newState.zeroExInstantShowing) {
|
||||||
|
// We have returned to a history state that expects instant to be rendered.
|
||||||
|
if (!isInstantRendered()) {
|
||||||
|
removeInstant = renderInstant(config, selector);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// History has changed to a different state.
|
||||||
|
if (isInstantRendered()) {
|
||||||
|
removeInstant();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.onpopstate = onPopStateHandler;
|
||||||
};
|
};
|
||||||
|
@@ -10,20 +10,6 @@ import { Action, ActionTypes } from './actions';
|
|||||||
|
|
||||||
import { State } from './reducer';
|
import { State } from './reducer';
|
||||||
|
|
||||||
const shouldTriggerWalletReady = (prevAccount: Account, curAccount: Account): boolean => {
|
|
||||||
const didJustTurnReady = curAccount.state === AccountState.Ready && prevAccount.state !== AccountState.Ready;
|
|
||||||
if (didJustTurnReady) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (curAccount.state === AccountState.Ready && prevAccount.state === AccountState.Ready) {
|
|
||||||
// Account was ready, and is now ready again, but address has changed
|
|
||||||
return curAccount.address !== prevAccount.address;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const analyticsMiddleware: Middleware = store => next => middlewareAction => {
|
export const analyticsMiddleware: Middleware = store => next => middlewareAction => {
|
||||||
const prevState = store.getState() as State;
|
const prevState = store.getState() as State;
|
||||||
const prevAccount = prevState.providerState.account;
|
const prevAccount = prevState.providerState.account;
|
||||||
@@ -35,10 +21,24 @@ export const analyticsMiddleware: Middleware = store => next => middlewareAction
|
|||||||
|
|
||||||
switch (nextAction.type) {
|
switch (nextAction.type) {
|
||||||
case ActionTypes.SET_ACCOUNT_STATE_READY:
|
case ActionTypes.SET_ACCOUNT_STATE_READY:
|
||||||
if (curAccount.state === AccountState.Ready && shouldTriggerWalletReady(prevAccount, curAccount)) {
|
if (curAccount.state === AccountState.Ready) {
|
||||||
|
const didJustTurnReady = prevAccount.state !== AccountState.Ready;
|
||||||
|
const didJustUpdateAddress =
|
||||||
|
prevAccount.state === AccountState.Ready && prevAccount.address !== curAccount.address;
|
||||||
const ethAddress = curAccount.address;
|
const ethAddress = curAccount.address;
|
||||||
analytics.addUserProperties({ ethAddress });
|
if (didJustTurnReady) {
|
||||||
analytics.trackWalletReady();
|
analytics.trackAccountReady(ethAddress);
|
||||||
|
analytics.addUserProperties({ lastKnownEthAddress: ethAddress });
|
||||||
|
} else if (didJustUpdateAddress) {
|
||||||
|
analytics.trackAccountAddressChanged(ethAddress);
|
||||||
|
analytics.addUserProperties({ lastKnownEthAddress: ethAddress });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ActionTypes.SET_ACCOUNT_STATE_LOCKED:
|
||||||
|
if (prevAccount.state !== AccountState.Locked && curAccount.state === AccountState.Locked) {
|
||||||
|
// if we are moving from account not locked to account locked, track `Account - Locked`
|
||||||
|
analytics.trackAccountLocked();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ActionTypes.UPDATE_ACCOUNT_ETH_BALANCE:
|
case ActionTypes.UPDATE_ACCOUNT_ETH_BALANCE:
|
||||||
@@ -53,6 +53,30 @@ export const analyticsMiddleware: Middleware = store => next => middlewareAction
|
|||||||
).toString();
|
).toString();
|
||||||
analytics.addUserProperties({ ethBalanceInUnitAmount });
|
analytics.addUserProperties({ ethBalanceInUnitAmount });
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case ActionTypes.UPDATE_SELECTED_ASSET:
|
||||||
|
const selectedAsset = curState.selectedAsset;
|
||||||
|
if (selectedAsset) {
|
||||||
|
const assetName = selectedAsset.metaData.name;
|
||||||
|
const assetData = selectedAsset.assetData;
|
||||||
|
analytics.trackTokenSelectorChose({
|
||||||
|
assetName,
|
||||||
|
assetData,
|
||||||
|
});
|
||||||
|
analytics.addEventProperties({
|
||||||
|
selectedAssetName: assetName,
|
||||||
|
selectedAssetData: assetData,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ActionTypes.SET_AVAILABLE_ASSETS:
|
||||||
|
const availableAssets = curState.availableAssets;
|
||||||
|
if (availableAssets) {
|
||||||
|
analytics.addEventProperties({
|
||||||
|
numberAvailableAssets: availableAssets.length,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nextAction;
|
return nextAction;
|
||||||
|
@@ -5,6 +5,7 @@ import { Dispatch } from 'redux';
|
|||||||
|
|
||||||
import { BIG_NUMBER_ZERO } from '../constants';
|
import { BIG_NUMBER_ZERO } from '../constants';
|
||||||
import { AccountState, ERC20Asset, OrderProcessState, ProviderState } from '../types';
|
import { AccountState, ERC20Asset, OrderProcessState, ProviderState } from '../types';
|
||||||
|
import { analytics } from '../util/analytics';
|
||||||
import { assetUtils } from '../util/asset';
|
import { assetUtils } from '../util/asset';
|
||||||
import { buyQuoteUpdater } from '../util/buy_quote_updater';
|
import { buyQuoteUpdater } from '../util/buy_quote_updater';
|
||||||
import { coinbaseApi } from '../util/coinbase_api';
|
import { coinbaseApi } from '../util/coinbase_api';
|
||||||
@@ -58,6 +59,7 @@ export const asyncData = {
|
|||||||
? await (provider as any).enable()
|
? await (provider as any).enable()
|
||||||
: await web3Wrapper.getAvailableAddressesAsync();
|
: await web3Wrapper.getAvailableAddressesAsync();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
analytics.trackAccountUnlockDenied();
|
||||||
dispatch(actions.setAccountStateLocked());
|
dispatch(actions.setAccountStateLocked());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
import { ObjectMap } from '@0x/types';
|
import { BuyQuote } from '@0x/asset-buyer';
|
||||||
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
import { heapUtil } from './heap';
|
import { AffiliateInfo, Asset, Network, OrderSource, ProviderState } from '../types';
|
||||||
|
|
||||||
|
import { EventProperties, heapUtil } from './heap';
|
||||||
|
|
||||||
let isDisabled = false;
|
let isDisabled = false;
|
||||||
export const disableAnalytics = (shouldDisableAnalytics: boolean) => {
|
export const disableAnalytics = (shouldDisableAnalytics: boolean) => {
|
||||||
@@ -15,11 +18,30 @@ export const evaluateIfEnabled = (fnCall: () => void) => {
|
|||||||
|
|
||||||
enum EventNames {
|
enum EventNames {
|
||||||
INSTANT_OPENED = 'Instant - Opened',
|
INSTANT_OPENED = 'Instant - Opened',
|
||||||
WALLET_READY = 'Wallet - Ready',
|
ACCOUNT_LOCKED = 'Account - Locked',
|
||||||
|
ACCOUNT_READY = 'Account - Ready',
|
||||||
|
ACCOUNT_UNLOCK_REQUESTED = 'Account - Unlock Requested',
|
||||||
|
ACCOUNT_UNLOCK_DENIED = 'Account - Unlock Denied',
|
||||||
|
ACCOUNT_ADDRESS_CHANGED = 'Account - Address Changed',
|
||||||
|
PAYMENT_METHOD_DROPDOWN_OPENED = 'Payment Method - Dropdown Opened',
|
||||||
|
PAYMENT_METHOD_OPENED_ETHERSCAN = 'Payment Method - Opened Etherscan',
|
||||||
|
PAYMENT_METHOD_COPIED_ADDRESS = 'Payment Method - Copied Address',
|
||||||
|
BUY_NOT_ENOUGH_ETH = 'Buy - Not Enough Eth',
|
||||||
|
BUY_STARTED = 'Buy - Started',
|
||||||
|
BUY_SIGNATURE_DENIED = 'Buy - Signature Denied',
|
||||||
|
BUY_SIMULATION_FAILED = 'Buy - Simulation Failed',
|
||||||
|
BUY_TX_SUBMITTED = 'Buy - Tx Submitted',
|
||||||
|
BUY_TX_SUCCEEDED = 'Buy - Tx Succeeded',
|
||||||
|
BUY_TX_FAILED = 'Buy - Tx Failed',
|
||||||
|
TOKEN_SELECTOR_OPENED = 'Token Selector - Opened',
|
||||||
|
TOKEN_SELECTOR_CLOSED = 'Token Selector - Closed',
|
||||||
|
TOKEN_SELECTOR_CHOSE = 'Token Selector - Chose',
|
||||||
|
TOKEN_SELECTOR_SEARCHED = 'Token Selector - Searched',
|
||||||
}
|
}
|
||||||
const track = (eventName: EventNames, eventData: ObjectMap<string | number> = {}): void => {
|
|
||||||
|
const track = (eventName: EventNames, eventProperties: EventProperties = {}): void => {
|
||||||
evaluateIfEnabled(() => {
|
evaluateIfEnabled(() => {
|
||||||
heapUtil.evaluateHeapCall(heap => heap.track(eventName, eventData));
|
heapUtil.evaluateHeapCall(heap => heap.track(eventName, eventProperties));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
function trackingEventFnWithoutPayload(eventName: EventNames): () => void {
|
function trackingEventFnWithoutPayload(eventName: EventNames): () => void {
|
||||||
@@ -28,16 +50,31 @@ function trackingEventFnWithoutPayload(eventName: EventNames): () => void {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
// tslint:disable-next-line:no-unused-variable
|
// tslint:disable-next-line:no-unused-variable
|
||||||
function trackingEventFnWithPayload<T extends ObjectMap<string | number>>(
|
function trackingEventFnWithPayload(eventName: EventNames): (eventProperties: EventProperties) => void {
|
||||||
eventName: EventNames,
|
return (eventProperties: EventProperties) => {
|
||||||
): (eventDataProperties: T) => void {
|
track(eventName, eventProperties);
|
||||||
return (eventDataProperties: T) => {
|
|
||||||
track(eventName, eventDataProperties);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const buyQuoteEventProperties = (buyQuote: BuyQuote) => {
|
||||||
|
const assetBuyAmount = buyQuote.assetBuyAmount.toString();
|
||||||
|
const assetEthAmount = buyQuote.worstCaseQuoteInfo.assetEthAmount.toString();
|
||||||
|
const feeEthAmount = buyQuote.worstCaseQuoteInfo.feeEthAmount.toString();
|
||||||
|
const totalEthAmount = buyQuote.worstCaseQuoteInfo.totalEthAmount.toString();
|
||||||
|
const feePercentage = !_.isUndefined(buyQuote.feePercentage) ? buyQuote.feePercentage.toString() : 0;
|
||||||
|
const hasFeeOrders = !_.isEmpty(buyQuote.feeOrders) ? 'true' : 'false';
|
||||||
|
return {
|
||||||
|
assetBuyAmount,
|
||||||
|
assetEthAmount,
|
||||||
|
feeEthAmount,
|
||||||
|
totalEthAmount,
|
||||||
|
feePercentage,
|
||||||
|
hasFeeOrders,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
export interface AnalyticsUserOptions {
|
export interface AnalyticsUserOptions {
|
||||||
ethAddress?: string;
|
lastKnownEthAddress?: string;
|
||||||
ethBalanceInUnitAmount?: string;
|
ethBalanceInUnitAmount?: string;
|
||||||
}
|
}
|
||||||
export interface AnalyticsEventOptions {
|
export interface AnalyticsEventOptions {
|
||||||
@@ -47,6 +84,16 @@ export interface AnalyticsEventOptions {
|
|||||||
providerName?: string;
|
providerName?: string;
|
||||||
gitSha?: string;
|
gitSha?: string;
|
||||||
npmVersion?: string;
|
npmVersion?: string;
|
||||||
|
orderSource?: string;
|
||||||
|
affiliateAddress?: string;
|
||||||
|
affiliateFeePercent?: number;
|
||||||
|
numberAvailableAssets?: number;
|
||||||
|
selectedAssetName?: string;
|
||||||
|
selectedAssetData?: string;
|
||||||
|
}
|
||||||
|
export enum TokenSelectorClosedVia {
|
||||||
|
ClickedX = 'Clicked X',
|
||||||
|
TokenChose = 'Token Chose',
|
||||||
}
|
}
|
||||||
export const analytics = {
|
export const analytics = {
|
||||||
addUserProperties: (properties: AnalyticsUserOptions): void => {
|
addUserProperties: (properties: AnalyticsUserOptions): void => {
|
||||||
@@ -59,6 +106,75 @@ export const analytics = {
|
|||||||
heapUtil.evaluateHeapCall(heap => heap.addEventProperties(properties));
|
heapUtil.evaluateHeapCall(heap => heap.addEventProperties(properties));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
trackWalletReady: trackingEventFnWithoutPayload(EventNames.WALLET_READY),
|
generateEventProperties: (
|
||||||
|
network: Network,
|
||||||
|
orderSource: OrderSource,
|
||||||
|
providerState: ProviderState,
|
||||||
|
window: Window,
|
||||||
|
selectedAsset?: Asset,
|
||||||
|
affiliateInfo?: AffiliateInfo,
|
||||||
|
): AnalyticsEventOptions => {
|
||||||
|
const affiliateAddress = affiliateInfo ? affiliateInfo.feeRecipient : 'none';
|
||||||
|
const affiliateFeePercent = affiliateInfo ? parseFloat(affiliateInfo.feePercentage.toFixed(4)) : 0;
|
||||||
|
const orderSourceName = typeof orderSource === 'string' ? orderSource : 'provided';
|
||||||
|
const eventOptions: AnalyticsEventOptions = {
|
||||||
|
embeddedHost: window.location.host,
|
||||||
|
embeddedUrl: window.location.href,
|
||||||
|
networkId: network,
|
||||||
|
providerName: providerState.name,
|
||||||
|
gitSha: process.env.GIT_SHA,
|
||||||
|
npmVersion: process.env.NPM_PACKAGE_VERSION,
|
||||||
|
orderSource: orderSourceName,
|
||||||
|
affiliateAddress,
|
||||||
|
affiliateFeePercent,
|
||||||
|
selectedAssetName: selectedAsset ? selectedAsset.metaData.name : 'none',
|
||||||
|
selectedAssetData: selectedAsset ? selectedAsset.assetData : 'none',
|
||||||
|
};
|
||||||
|
return eventOptions;
|
||||||
|
},
|
||||||
trackInstantOpened: trackingEventFnWithoutPayload(EventNames.INSTANT_OPENED),
|
trackInstantOpened: trackingEventFnWithoutPayload(EventNames.INSTANT_OPENED),
|
||||||
|
trackAccountLocked: trackingEventFnWithoutPayload(EventNames.ACCOUNT_LOCKED),
|
||||||
|
trackAccountReady: (address: string) => trackingEventFnWithPayload(EventNames.ACCOUNT_READY)({ address }),
|
||||||
|
trackAccountUnlockRequested: trackingEventFnWithoutPayload(EventNames.ACCOUNT_UNLOCK_REQUESTED),
|
||||||
|
trackAccountUnlockDenied: trackingEventFnWithoutPayload(EventNames.ACCOUNT_UNLOCK_DENIED),
|
||||||
|
trackAccountAddressChanged: (address: string) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.ACCOUNT_ADDRESS_CHANGED)({ address }),
|
||||||
|
trackPaymentMethodDropdownOpened: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_DROPDOWN_OPENED),
|
||||||
|
trackPaymentMethodOpenedEtherscan: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_OPENED_ETHERSCAN),
|
||||||
|
trackPaymentMethodCopiedAddress: trackingEventFnWithoutPayload(EventNames.PAYMENT_METHOD_COPIED_ADDRESS),
|
||||||
|
trackBuyNotEnoughEth: (buyQuote: BuyQuote) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_NOT_ENOUGH_ETH)(buyQuoteEventProperties(buyQuote)),
|
||||||
|
trackBuyStarted: (buyQuote: BuyQuote) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_STARTED)(buyQuoteEventProperties(buyQuote)),
|
||||||
|
trackBuySignatureDenied: (buyQuote: BuyQuote) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_SIGNATURE_DENIED)(buyQuoteEventProperties(buyQuote)),
|
||||||
|
trackBuySimulationFailed: (buyQuote: BuyQuote) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_SIMULATION_FAILED)(buyQuoteEventProperties(buyQuote)),
|
||||||
|
trackBuyTxSubmitted: (buyQuote: BuyQuote, txHash: string, startTimeUnix: number, expectedEndTimeUnix: number) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_TX_SUBMITTED)({
|
||||||
|
...buyQuoteEventProperties(buyQuote),
|
||||||
|
txHash,
|
||||||
|
expectedTxTimeMs: expectedEndTimeUnix - startTimeUnix,
|
||||||
|
}),
|
||||||
|
trackBuyTxSucceeded: (buyQuote: BuyQuote, txHash: string, startTimeUnix: number, expectedEndTimeUnix: number) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_TX_SUCCEEDED)({
|
||||||
|
...buyQuoteEventProperties(buyQuote),
|
||||||
|
txHash,
|
||||||
|
expectedTxTimeMs: expectedEndTimeUnix - startTimeUnix,
|
||||||
|
actualTxTimeMs: new Date().getTime() - startTimeUnix,
|
||||||
|
}),
|
||||||
|
trackBuyTxFailed: (buyQuote: BuyQuote, txHash: string, startTimeUnix: number, expectedEndTimeUnix: number) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.BUY_TX_FAILED)({
|
||||||
|
...buyQuoteEventProperties(buyQuote),
|
||||||
|
txHash,
|
||||||
|
expectedTxTimeMs: expectedEndTimeUnix - startTimeUnix,
|
||||||
|
actualTxTimeMs: new Date().getTime() - startTimeUnix,
|
||||||
|
}),
|
||||||
|
trackTokenSelectorOpened: trackingEventFnWithoutPayload(EventNames.TOKEN_SELECTOR_OPENED),
|
||||||
|
trackTokenSelectorClosed: (closedVia: TokenSelectorClosedVia) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.TOKEN_SELECTOR_CLOSED)({ closedVia }),
|
||||||
|
trackTokenSelectorChose: (payload: { assetName: string; assetData: string }) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.TOKEN_SELECTOR_CHOSE)(payload),
|
||||||
|
trackTokenSelectorSearched: (searchText: string) =>
|
||||||
|
trackingEventFnWithPayload(EventNames.TOKEN_SELECTOR_SEARCHED)({ searchText }),
|
||||||
};
|
};
|
||||||
|
@@ -6,11 +6,13 @@ import { HEAP_ANALYTICS_ID } from '../constants';
|
|||||||
|
|
||||||
import { AnalyticsEventOptions, AnalyticsUserOptions } from './analytics';
|
import { AnalyticsEventOptions, AnalyticsUserOptions } from './analytics';
|
||||||
|
|
||||||
|
export type EventProperties = ObjectMap<string | number>;
|
||||||
|
|
||||||
export interface HeapAnalytics {
|
export interface HeapAnalytics {
|
||||||
loaded: boolean;
|
loaded: boolean;
|
||||||
appid: string;
|
appid: string;
|
||||||
identify(id: string, idType: string): void;
|
identify(id: string, idType: string): void;
|
||||||
track(eventName: string, eventProperties?: ObjectMap<string | number>): void;
|
track(eventName: string, eventProperties?: EventProperties): void;
|
||||||
resetIdentity(): void;
|
resetIdentity(): void;
|
||||||
addUserProperties(properties: AnalyticsUserOptions): void;
|
addUserProperties(properties: AnalyticsUserOptions): void;
|
||||||
addEventProperties(properties: AnalyticsEventOptions): void;
|
addEventProperties(properties: AnalyticsEventOptions): void;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/metacoin",
|
"name": "@0x/metacoin",
|
||||||
"version": "0.0.29",
|
"version": "0.0.30",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov",
|
"test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov",
|
||||||
"test:profile": "SOLIDITY_PROFILER=true run-s build run_mocha profiler:report:html",
|
"test:profile": "SOLIDITY_PROFILER=true run-s build run_mocha profiler:report:html",
|
||||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js lib/test/global_hooks.js --bail --exit --timeout 10000",
|
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js lib/test/global_hooks.js --bail --exit --timeout 10000",
|
||||||
"generate_contract_wrappers": "abi-gen --abis 'artifacts/Metacoin.json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers --backend ethers",
|
"generate_contract_wrappers": "abi-gen --abis 'artifacts/Metacoin.json' --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output src/contract_wrappers --backend ethers",
|
||||||
"coverage:report:text": "istanbul report text",
|
"coverage:report:text": "istanbul report text",
|
||||||
"coverage:report:html": "istanbul report html && open coverage/index.html",
|
"coverage:report:html": "istanbul report html && open coverage/index.html",
|
||||||
"profiler:report:html": "istanbul report html && open coverage/index.html",
|
"profiler:report:html": "istanbul report html && open coverage/index.html",
|
||||||
@@ -30,14 +30,15 @@
|
|||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen": "^1.0.17",
|
"@0x/abi-gen": "^1.0.17",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/abi-gen-templates": "^1.0.1",
|
||||||
"@0x/sol-cov": "^2.1.13",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/sol-cov": "^2.1.14",
|
||||||
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/mocha": "^5.2.2",
|
"@types/mocha": "^5.2.2",
|
||||||
"copyfiles": "^2.0.0",
|
"copyfiles": "^2.0.0",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
@@ -46,8 +47,8 @@
|
|||||||
"run-s": "^0.0.0"
|
"run-s": "^0.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/sol-compiler": "^1.1.13",
|
"@0x/sol-compiler": "^1.1.14",
|
||||||
"chai": "^4.0.1",
|
"chai": "^4.0.1",
|
||||||
"chai-as-promised": "^7.1.0",
|
"chai-as-promised": "^7.1.0",
|
||||||
"chai-bignumber": "^2.0.1",
|
"chai-bignumber": "^2.0.1",
|
||||||
|
@@ -1,4 +1,22 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "2.2.0",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Add CLI `0x-migrate` for running the 0x migrations in a language-agnostic way",
|
||||||
|
"pr": 1324
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "Deploy testnet Exchange arfitact. Previously mainnet Exchange artifact was deployed.",
|
||||||
|
"pr": 1309
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"note": "Fund the Forwarder with ZRX for fees.",
|
||||||
|
"pr": 1309
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"timestamp": 1543401373
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"changes": [
|
"changes": [
|
||||||
|
@@ -5,6 +5,12 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.2.0 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Add CLI `0x-migrate` for running the 0x migrations in a language-agnostic way (#1324)
|
||||||
|
* Deploy testnet Exchange arfitact. Previously mainnet Exchange artifact was deployed. (#1309)
|
||||||
|
* Fund the Forwarder with ZRX for fees. (#1309)
|
||||||
|
|
||||||
## v2.1.0 - _November 21, 2018_
|
## v2.1.0 - _November 21, 2018_
|
||||||
|
|
||||||
* Export all type declarations used by the public interface, as well as the `ContractAddresses` mapping (#1301)
|
* Export all type declarations used by the public interface, as well as the `ContractAddresses` mapping (#1301)
|
||||||
|
2
packages/migrations/bin/0x-migrate.js
Executable file
2
packages/migrations/bin/0x-migrate.js
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
require('../lib/cli.js');
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/migrations",
|
"name": "@0x/migrations",
|
||||||
"version": "2.1.0",
|
"version": "2.2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -21,9 +21,12 @@
|
|||||||
"assets": []
|
"assets": []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"bin": {
|
||||||
|
"0x-migrate": "bin/0x-migrate.js"
|
||||||
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@types/yargs": "^10.0.0",
|
"@types/yargs": "^10.0.0",
|
||||||
@@ -36,16 +39,16 @@
|
|||||||
"yargs": "^10.0.3"
|
"yargs": "^10.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/contract-addresses": "^1.2.0",
|
"@0x/contract-addresses": "^2.0.0",
|
||||||
"@0x/contract-artifacts": "^1.1.0",
|
"@0x/contract-artifacts": "^1.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/sol-compiler": "^1.1.13",
|
"@0x/sol-compiler": "^1.1.14",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@ledgerhq/hw-app-eth": "^4.3.0",
|
"@ledgerhq/hw-app-eth": "^4.3.0",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethers": "~4.0.4",
|
"ethers": "~4.0.4",
|
||||||
|
38
packages/migrations/src/cli.ts
Normal file
38
packages/migrations/src/cli.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
import { RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders';
|
||||||
|
import { logUtils } from '@0x/utils';
|
||||||
|
import * as yargs from 'yargs';
|
||||||
|
|
||||||
|
import { runMigrationsAsync } from './migration';
|
||||||
|
|
||||||
|
const args = yargs
|
||||||
|
.option('rpc-url', {
|
||||||
|
describe: 'Endpoint where backing Ethereum JSON RPC interface is available',
|
||||||
|
type: 'string',
|
||||||
|
demandOption: false,
|
||||||
|
default: 'http://localhost:8545',
|
||||||
|
})
|
||||||
|
.option('from', {
|
||||||
|
describe: 'Ethereum address from which to deploy the contracts',
|
||||||
|
type: 'string',
|
||||||
|
demandOption: true,
|
||||||
|
})
|
||||||
|
.example(
|
||||||
|
'$0 --rpc-url http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
|
||||||
|
'Full usage example',
|
||||||
|
).argv;
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const rpcSubprovider = new RPCSubprovider(args['rpc-url']);
|
||||||
|
const provider = new Web3ProviderEngine();
|
||||||
|
provider.addProvider(rpcSubprovider);
|
||||||
|
provider.start();
|
||||||
|
const txDefaults = {
|
||||||
|
from: args.from,
|
||||||
|
};
|
||||||
|
await runMigrationsAsync(provider, txDefaults);
|
||||||
|
process.exit(0);
|
||||||
|
})().catch(err => {
|
||||||
|
logUtils.log(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
@@ -47,6 +47,7 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial
|
|||||||
artifacts.Exchange,
|
artifacts.Exchange,
|
||||||
provider,
|
provider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
|
zrxAssetData,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Multisigs
|
// Multisigs
|
||||||
@@ -140,6 +141,13 @@ export async function runMigrationsAsync(provider: Provider, txDefaults: Partial
|
|||||||
zrxAssetData,
|
zrxAssetData,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Fund the Forwarder with ZRX
|
||||||
|
const zrxDecimals = await zrxToken.decimals.callAsync();
|
||||||
|
const zrxForwarderAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(5000), zrxDecimals);
|
||||||
|
await web3Wrapper.awaitTransactionSuccessAsync(
|
||||||
|
await zrxToken.transfer.sendTransactionAsync(forwarder.address, zrxForwarderAmount, txDefaults),
|
||||||
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
erc20Proxy: erc20Proxy.address,
|
erc20Proxy: erc20Proxy.address,
|
||||||
erc721Proxy: erc721Proxy.address,
|
erc721Proxy: erc721Proxy.address,
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "3.0.4",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v3.0.4 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v3.0.3 - _November 21, 2018_
|
## v3.0.3 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/order-utils",
|
"name": "@0x/order-utils",
|
||||||
"version": "3.0.3",
|
"version": "3.0.4",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/bn.js": "^4.11.0",
|
"@types/bn.js": "^4.11.0",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
@@ -53,15 +53,15 @@
|
|||||||
"typescript": "3.0.1"
|
"typescript": "3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/contract-artifacts": "^1.1.0",
|
"@0x/contract-artifacts": "^1.1.2",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
"bn.js": "^4.11.8",
|
"bn.js": "^4.11.8",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "2.2.6",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "2.2.5",
|
"version": "2.2.5",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.2.6 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v2.2.5 - _November 21, 2018_
|
## v2.2.5 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/order-watcher",
|
"name": "@0x/order-watcher",
|
||||||
"version": "2.2.5",
|
"version": "2.2.6",
|
||||||
"description": "An order watcher daemon that watches for order validity",
|
"description": "An order watcher daemon that watches for order validity",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"0x",
|
"0x",
|
||||||
@@ -33,8 +33,8 @@
|
|||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/migrations": "^2.1.0",
|
"@0x/migrations": "^2.2.0",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/bintrees": "^1.0.2",
|
"@types/bintrees": "^1.0.2",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
@@ -57,19 +57,19 @@
|
|||||||
"typescript": "3.0.1"
|
"typescript": "3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/abi-gen-wrappers": "^1.1.0",
|
"@0x/abi-gen-wrappers": "^2.0.0",
|
||||||
"@0x/assert": "^1.0.18",
|
"@0x/assert": "^1.0.18",
|
||||||
"@0x/base-contract": "^3.0.7",
|
"@0x/base-contract": "^3.0.8",
|
||||||
"@0x/contract-addresses": "^1.2.0",
|
"@0x/contract-addresses": "^2.0.0",
|
||||||
"@0x/contract-artifacts": "^1.1.0",
|
"@0x/contract-artifacts": "^1.1.2",
|
||||||
"@0x/contract-wrappers": "^4.1.0",
|
"@0x/contract-wrappers": "^4.1.1",
|
||||||
"@0x/fill-scenarios": "^1.0.13",
|
"@0x/fill-scenarios": "^1.0.14",
|
||||||
"@0x/json-schemas": "^2.1.2",
|
"@0x/json-schemas": "^2.1.2",
|
||||||
"@0x/order-utils": "^3.0.3",
|
"@0x/order-utils": "^3.0.4",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"bintrees": "^1.0.2",
|
"bintrees": "^1.0.2",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethereumjs-blockstream": "6.0.0",
|
"ethereumjs-blockstream": "6.0.0",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.0.20",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "1.0.19",
|
"version": "1.0.19",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.0.20 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.0.19 - _November 21, 2018_
|
## v1.0.19 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/react-docs",
|
"name": "@0x/react-docs",
|
||||||
"version": "1.0.19",
|
"version": "1.0.20",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/compare-versions": "^3.0.0",
|
"@types/compare-versions": "^3.0.0",
|
||||||
"@types/styled-components": "^4.0.0",
|
"@types/styled-components": "^4.0.0",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"typescript": "3.0.1"
|
"typescript": "3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/react-shared": "^1.0.22",
|
"@0x/react-shared": "^1.0.23",
|
||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@types/lodash": "4.14.104",
|
"@types/lodash": "4.14.104",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.0.23",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "1.0.22",
|
"version": "1.0.22",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.0.23 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.0.22 - _November 21, 2018_
|
## v1.0.22 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/react-shared",
|
"name": "@0x/react-shared",
|
||||||
"version": "1.0.22",
|
"version": "1.0.23",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"make-promises-safe": "^1.1.0",
|
"make-promises-safe": "^1.1.0",
|
||||||
"shx": "^0.2.2",
|
"shx": "^0.2.2",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "1.1.14",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "1.1.13",
|
"version": "1.1.13",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v1.1.14 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v1.1.13 - _November 21, 2018_
|
## v1.1.13 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/sol-compiler",
|
"name": "@0x/sol-compiler",
|
||||||
"version": "1.1.13",
|
"version": "1.1.14",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md",
|
"homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/tslint-config": "^1.0.10",
|
"@0x/tslint-config": "^1.0.10",
|
||||||
"@types/mkdirp": "^0.5.2",
|
"@types/mkdirp": "^0.5.2",
|
||||||
"@types/require-from-string": "^1.2.0",
|
"@types/require-from-string": "^1.2.0",
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
"@0x/types": "^1.3.0",
|
"@0x/types": "^1.3.0",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/yargs": "^11.0.0",
|
"@types/yargs": "^11.0.0",
|
||||||
"chalk": "^2.3.0",
|
"chalk": "^2.3.0",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"timestamp": 1543401373,
|
||||||
|
"version": "2.1.14",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"note": "Dependencies updated"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"timestamp": 1542821676,
|
"timestamp": 1542821676,
|
||||||
"version": "2.1.13",
|
"version": "2.1.13",
|
||||||
|
@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
|
|||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
## v2.1.14 - _November 28, 2018_
|
||||||
|
|
||||||
|
* Dependencies updated
|
||||||
|
|
||||||
## v2.1.13 - _November 21, 2018_
|
## v2.1.13 - _November 21, 2018_
|
||||||
|
|
||||||
* Dependencies updated
|
* Dependencies updated
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@0x/sol-cov",
|
"name": "@0x/sol-cov",
|
||||||
"version": "2.1.13",
|
"version": "2.1.14",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.12"
|
"node": ">=6.12"
|
||||||
},
|
},
|
||||||
@@ -42,12 +42,12 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/0xProject/0x.js/packages/sol-cov/README.md",
|
"homepage": "https://github.com/0xProject/0x.js/packages/sol-cov/README.md",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@0x/dev-utils": "^1.0.18",
|
"@0x/dev-utils": "^1.0.19",
|
||||||
"@0x/sol-compiler": "^1.1.13",
|
"@0x/sol-compiler": "^1.1.14",
|
||||||
"@0x/subproviders": "^2.1.5",
|
"@0x/subproviders": "^2.1.6",
|
||||||
"@0x/typescript-typings": "^3.0.4",
|
"@0x/typescript-typings": "^3.0.4",
|
||||||
"@0x/utils": "^2.0.6",
|
"@0x/utils": "^2.0.6",
|
||||||
"@0x/web3-wrapper": "^3.1.5",
|
"@0x/web3-wrapper": "^3.1.6",
|
||||||
"@types/solidity-parser-antlr": "^0.2.0",
|
"@types/solidity-parser-antlr": "^0.2.0",
|
||||||
"ethereum-types": "^1.1.2",
|
"ethereum-types": "^1.1.2",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^5.1.1",
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user