Merge branch 'development' into fixOrderValidation

* development: (25 commits)
  Publish
  Updated CHANGELOGS
  fix(instant): fix bug where we potentially fetch balance for the wrong account
  fix: Lock Ledger hw-transport to 4.24.0
  fix: wrong prop names used
  chore: PR feedback
  fix: broken features because of merge
  fix: remove default props, fix lint problems
  chore: convert payment method to stateless component
  feat: add boxShadow on dropdown hover
  fix: various style issues
  fix: remove all:initial rule from all div based ui compoennts
  fix: token selector scrolling container height
  chore(instant): fix lint errors
  feat(instant): fetch balance at startup
  feat(instant): fetch account address at startup and drive account state changes
  chore: cleanup
  fix: restore button to previous state
  feat: implement copy-to-clipboard
  feat: add MetaMask sign, refactor Circle
  ...
This commit is contained in:
Fabio Berger 2018-11-09 23:20:06 +01:00
commit 773cf3cd14
131 changed files with 1151 additions and 393 deletions

View File

@ -1,4 +1,13 @@
[ [
{
"version": "2.0.1",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "2.0.0", "version": "2.0.0",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.0.1 - _November 9, 2018_
* Dependencies updated
## v2.0.0 - _October 18, 2018_ ## v2.0.0 - _October 18, 2018_
* Add support for `eth_signTypedData`. (#1102) * Add support for `eth_signTypedData`. (#1102)

View File

@ -1,6 +1,6 @@
{ {
"name": "0x.js", "name": "0x.js",
"version": "2.0.0", "version": "2.0.1",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -42,12 +42,12 @@
}, },
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@0x/abi-gen": "^1.0.14", "@0x/abi-gen": "^1.0.15",
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/contract-addresses": "^1.0.1", "@0x/contract-addresses": "^1.1.0",
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/migrations": "^2.0.0", "@0x/migrations": "^2.0.1",
"@0x/tslint-config": "^1.0.9", "@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",
"@types/node": "*", "@types/node": "*",
@ -73,18 +73,18 @@
"webpack": "^4.20.2" "webpack": "^4.20.2"
}, },
"dependencies": { "dependencies": {
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/contract-wrappers": "^3.0.0", "@0x/contract-wrappers": "^3.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/order-watcher": "^2.2.0", "@0x/order-watcher": "^2.2.1",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@types/web3-provider-engine": "^14.0.0", "@types/web3-provider-engine": "^14.0.0",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"web3-provider-engine": "14.0.6" "web3-provider-engine": "14.0.6"

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.2",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "1.0.1", "version": "1.0.1",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.2 - _November 9, 2018_
* Dependencies updated
## v1.0.1 - _October 18, 2018_ ## v1.0.1 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/abi-gen-wrappers", "name": "@0x/abi-gen-wrappers",
"version": "1.0.1", "version": "1.0.2",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -30,17 +30,17 @@
}, },
"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.14", "@0x/abi-gen": "^1.0.15",
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "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.2" "@0x/base-contract": "^3.0.3"
}, },
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.15",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "1.0.14", "version": "1.0.14",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.15 - _November 9, 2018_
* Dependencies updated
## v1.0.14 - _October 18, 2018_ ## v1.0.14 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/abi-gen", "name": "@0x/abi-gen",
"version": "1.0.14", "version": "1.0.15",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -31,10 +31,10 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md",
"dependencies": { "dependencies": {
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"chalk": "^2.3.0", "chalk": "^2.3.0",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"glob": "^7.1.2", "glob": "^7.1.2",
"handlebars": "^4.0.11", "handlebars": "^4.0.11",
"lodash": "^4.17.5", "lodash": "^4.17.5",
@ -45,7 +45,7 @@
"yargs": "^10.0.3" "yargs": "^10.0.3"
}, },
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@types/glob": "5.0.35", "@types/glob": "5.0.35",
"@types/handlebars": "^4.0.36", "@types/handlebars": "^4.0.36",
"@types/mkdirp": "^0.5.1", "@types/mkdirp": "^0.5.1",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.15",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "1.0.14", "version": "1.0.14",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.15 - _November 9, 2018_
* Dependencies updated
## v1.0.14 - _October 18, 2018_ ## v1.0.14 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/assert", "name": "@0x/assert",
"version": "1.0.14", "version": "1.0.15",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md",
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@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",
"@types/valid-url": "^1.0.2", "@types/valid-url": "^1.0.2",
@ -44,9 +44,9 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"valid-url": "^1.0.9" "valid-url": "^1.0.9"
}, },

View File

@ -29,7 +29,8 @@
"note": "Lower default expiry buffer from 5 minutes to 2 minutes", "note": "Lower default expiry buffer from 5 minutes to 2 minutes",
"pr": 1217 "pr": 1217
} }
] ],
"timestamp": 1541740904
}, },
{ {
"version": "2.1.0", "version": "2.1.0",

View File

@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.2.0 - _November 9, 2018_
* `getAssetBuyerForProvidedOrders` factory function now takes 3 args instead of 4 (#1187)
* the `OrderProvider` now requires a new method `getAvailableMakerAssetDatasAsync` and the `StandardRelayerAPIOrderProvider` requires the network id at init. (#1203)
* No longer require that provided orders all have the same maker and taker asset data (#1197)
* Fix bug where `BuyQuoteInfo` objects could return `totalEthAmount` and `feeEthAmount` that were not whole numbers (#1207)
* Fix bug where default values for `AssetBuyer` public facing methods could get overriden by `undefined` values (#1207)
* Lower default expiry buffer from 5 minutes to 2 minutes (#1217)
## v2.1.0 - _October 18, 2018_ ## v2.1.0 - _October 18, 2018_
* Add `gasLimit` and `gasPrice` as optional properties on `BuyQuoteExecutionOpts` * Add `gasLimit` and `gasPrice` as optional properties on `BuyQuoteExecutionOpts`
@ -13,6 +22,7 @@ CHANGELOG
* Add `gasLimit` and `gasPrice` as optional properties on `BuyQuoteExecutionOpts` (#1116) * Add `gasLimit` and `gasPrice` as optional properties on `BuyQuoteExecutionOpts` (#1116)
* Add `docs:json` command to package.json (#1139) * Add `docs:json` command to package.json (#1139)
* Add missing types to public interface (#1139) * Add missing types to public interface (#1139)
* Throw `SignatureRequestDenied` and `TransactionValueTooLow` errors when executing buy (#1147)
## v2.0.0 - _October 4, 2018_ ## v2.0.0 - _October 4, 2018_

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/asset-buyer", "name": "@0x/asset-buyer",
"version": "2.1.0", "version": "2.2.0",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -36,21 +36,21 @@
}, },
"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.14", "@0x/assert": "^1.0.15",
"@0x/connect": "^3.0.2", "@0x/connect": "^3.0.3",
"@0x/contract-wrappers": "^3.0.0", "@0x/contract-wrappers": "^3.0.1",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"lodash": "^4.17.10" "lodash": "^4.17.10"
}, },
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@types/lodash": "^4.14.116", "@types/lodash": "^4.14.116",
"@types/mocha": "^2.2.42", "@types/mocha": "^2.2.42",
"@types/node": "*", "@types/node": "*",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "3.0.3",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "3.0.2", "version": "3.0.2",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v3.0.3 - _November 9, 2018_
* Dependencies updated
## v3.0.2 - _October 18, 2018_ ## v3.0.2 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/base-contract", "name": "@0x/base-contract",
"version": "3.0.2", "version": "3.0.3",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md",
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",
"chai": "^4.0.1", "chai": "^4.0.1",
"make-promises-safe": "^1.1.0", "make-promises-safe": "^1.1.0",
@ -40,10 +40,10 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5" "lodash": "^4.17.5"
}, },

View File

@ -1,4 +1,13 @@
[ [
{
"version": "3.0.3",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "3.0.2", "version": "3.0.2",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v3.0.3 - _November 9, 2018_
* Dependencies updated
## v3.0.2 - _October 18, 2018_ ## v3.0.2 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/connect", "name": "@0x/connect",
"version": "3.0.2", "version": "3.0.3",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -44,12 +44,12 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md",
"dependencies": { "dependencies": {
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"query-string": "^5.0.1", "query-string": "^5.0.1",
"sinon": "^4.0.0", "sinon": "^4.0.0",
@ -57,7 +57,7 @@
"websocket": "^1.0.25" "websocket": "^1.0.25"
}, },
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@types/fetch-mock": "^6.0.3", "@types/fetch-mock": "^6.0.3",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",
"@types/mocha": "^2.2.42", "@types/mocha": "^2.2.42",

View File

@ -6,7 +6,8 @@
"pr": 1192, "pr": 1192,
"note": "Update Forwarder addresses" "note": "Update Forwarder addresses"
} }
] ],
"timestamp": 1541740904
}, },
{ {
"version": "1.0.1", "version": "1.0.1",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.1.0 - _November 9, 2018_
* Update Forwarder addresses (#1192)
## v1.0.1 - _October 18, 2018_ ## v1.0.1 - _October 18, 2018_
* Initial release (#1105) * Initial release (#1105)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/contract-addresses", "name": "@0x/contract-addresses",
"version": "1.0.1", "version": "1.1.0",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },

View File

@ -6,7 +6,8 @@
"pr": 1192, "pr": 1192,
"note": "Update Forwarder artifact" "note": "Update Forwarder artifact"
} }
] ],
"timestamp": 1541740904
}, },
{ {
"version": "1.0.1", "version": "1.0.1",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.1.0 - _November 9, 2018_
* Update Forwarder artifact (#1192)
## v1.0.1 - _October 18, 2018_ ## v1.0.1 - _October 18, 2018_
* Initial release (#1105) * Initial release (#1105)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/contract-artifacts", "name": "@0x/contract-artifacts",
"version": "1.0.1", "version": "1.1.0",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },

View File

@ -6,7 +6,8 @@
"note": "Fix bug in `ForwarderWrapper` where `feeRecipientAddress` was not correctly normalized.", "note": "Fix bug in `ForwarderWrapper` where `feeRecipientAddress` was not correctly normalized.",
"pr": 1178 "pr": 1178
} }
] ],
"timestamp": 1541740904
}, },
{ {
"version": "3.0.0", "version": "3.0.0",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v3.0.1 - _November 9, 2018_
* Fix bug in `ForwarderWrapper` where `feeRecipientAddress` was not correctly normalized. (#1178)
## v3.0.0 - _October 18, 2018_ ## v3.0.0 - _October 18, 2018_
* Add optional validation to the forwarder wrapper methods * Add optional validation to the forwarder wrapper methods
@ -15,6 +19,8 @@ CHANGELOG
* Removed `setProvider` method in top-level `ContractWrapper` class and added new `unsubscribeAll` method. (#1105) * Removed `setProvider` method in top-level `ContractWrapper` class and added new `unsubscribeAll` method. (#1105)
* Some properties and methods have been renamed. For example, some methods that previously could throw no longer can, and so their names have been updated accordingly. (#1105) * Some properties and methods have been renamed. For example, some methods that previously could throw no longer can, and so their names have been updated accordingly. (#1105)
* Removed ContractNotFound errors. Checking for this error was somewhat ineffecient. Relevant methods/functions now return the default error from web3-wrapper, which we feel provides enough information. (#1105) * Removed ContractNotFound errors. Checking for this error was somewhat ineffecient. Relevant methods/functions now return the default error from web3-wrapper, which we feel provides enough information. (#1105)
* Add `ForwarderWrapperError` to public interface (#1147)
* Add `ContractWrapperError.SignatureRequestDenied` to public interface (#1147)
## v2.0.2 - _October 4, 2018_ ## v2.0.2 - _October 4, 2018_

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/contract-wrappers", "name": "@0x/contract-wrappers",
"version": "3.0.0", "version": "3.0.1",
"description": "Smart TS wrappers for 0x smart contracts", "description": "Smart TS wrappers for 0x smart contracts",
"keywords": [ "keywords": [
"0xproject", "0xproject",
@ -37,10 +37,10 @@
"node": ">=6.0.0" "node": ">=6.0.0"
}, },
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/migrations": "^2.0.0", "@0x/migrations": "^2.0.1",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/tslint-config": "^1.0.9", "@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",
"@types/node": "*", "@types/node": "*",
@ -65,18 +65,18 @@
"web3-provider-engine": "14.0.6" "web3-provider-engine": "14.0.6"
}, },
"dependencies": { "dependencies": {
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/contract-addresses": "^1.0.1", "@0x/contract-addresses": "^1.1.0",
"@0x/contract-artifacts": "^1.0.1", "@0x/contract-artifacts": "^1.1.0",
"@0x/fill-scenarios": "^1.0.8", "@0x/fill-scenarios": "^1.0.9",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "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",
"ethers": "~4.0.4", "ethers": "~4.0.4",

View File

@ -1,7 +1,7 @@
{ {
"private": true, "private": true,
"name": "contracts", "name": "contracts",
"version": "2.1.50", "version": "2.1.51",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -45,12 +45,12 @@
}, },
"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.14", "@0x/abi-gen": "^1.0.15",
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/sol-compiler": "^1.1.8", "@0x/sol-compiler": "^1.1.9",
"@0x/sol-cov": "^2.1.8", "@0x/sol-cov": "^2.1.9",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/tslint-config": "^1.0.9", "@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",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",
@ -71,15 +71,15 @@
"yargs": "^10.0.3" "yargs": "^10.0.3"
}, },
"dependencies": { "dependencies": {
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@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.1", "ethereum-types": "^1.1.2",
"ethereumjs-abi": "0.6.5", "ethereumjs-abi": "0.6.5",
"ethereumjs-util": "^5.1.1", "ethereumjs-util": "^5.1.1",
"ethers": "~4.0.4", "ethers": "~4.0.4",

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/dev-tools-pages", "name": "@0x/dev-tools-pages",
"version": "0.0.2", "version": "0.0.3",
"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.17", "@0x/react-shared": "^1.0.18",
"basscss": "^8.0.3", "basscss": "^8.0.3",
"bowser": "^1.9.3", "bowser": "^1.9.3",
"less": "^2.7.2", "less": "^2.7.2",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.14",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "1.0.13", "version": "1.0.13",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.14 - _November 9, 2018_
* Dependencies updated
## v1.0.13 - _October 18, 2018_ ## v1.0.13 - _October 18, 2018_
* Make web3-provider-engine types a 'dependency' so it's available to users of the library (#1105) * Make web3-provider-engine types a 'dependency' so it's available to users of the library (#1105)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/dev-utils", "name": "@0x/dev-utils",
"version": "1.0.13", "version": "1.0.14",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/dev-utils/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/dev-utils/README.md",
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@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",
"make-promises-safe": "^1.1.0", "make-promises-safe": "^1.1.0",
@ -41,14 +41,14 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@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.1", "ethereum-types": "^1.1.2",
"lodash": "^4.17.5" "lodash": "^4.17.5"
}, },
"publishConfig": { "publishConfig": {

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.1.2",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "1.1.1", "version": "1.1.1",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.1.2 - _November 9, 2018_
* Dependencies updated
## v1.1.1 - _October 18, 2018_ ## v1.1.1 - _October 18, 2018_
* Add `JSONRPCResponseError` and error field on `JSONRPCResponsePayload`. (#1102) * Add `JSONRPCResponseError` and error field on `JSONRPCResponsePayload`. (#1102)

View File

@ -1,6 +1,6 @@
{ {
"name": "ethereum-types", "name": "ethereum-types",
"version": "1.1.1", "version": "1.1.2",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/ethereum-types/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/ethereum-types/README.md",
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@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",
"tslint": "5.11.0", "tslint": "5.11.0",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.9",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "1.0.8", "version": "1.0.8",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.9 - _November 9, 2018_
* Dependencies updated
## v1.0.8 - _October 18, 2018_ ## v1.0.8 - _October 18, 2018_
* Updated to use new @0xproject/contract-artifacts and @0xproject/abi-gen-wrappers packages (#1105) * Updated to use new @0xproject/contract-artifacts and @0xproject/abi-gen-wrappers packages (#1105)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/fill-scenarios", "name": "@0x/fill-scenarios",
"version": "1.0.8", "version": "1.0.9",
"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",
@ -20,7 +20,7 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/fill-scenarios/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/fill-scenarios/README.md",
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",
"make-promises-safe": "^1.1.0", "make-promises-safe": "^1.1.0",
"shx": "^0.2.2", "shx": "^0.2.2",
@ -28,15 +28,15 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/contract-artifacts": "^1.0.1", "@0x/contract-artifacts": "^1.1.0",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5" "lodash": "^4.17.5"
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/instant", "name": "@0x/instant",
"version": "0.0.3", "version": "0.0.4",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -45,16 +45,17 @@
}, },
"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.14", "@0x/assert": "^1.0.15",
"@0x/asset-buyer": "^2.1.0", "@0x/asset-buyer": "^2.2.0",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"ethereum-types": "^1.1.1", "copy-to-clipboard": "^3.0.8",
"ethereum-types": "^1.1.2",
"lodash": "^4.17.10", "lodash": "^4.17.10",
"polished": "^2.2.0", "polished": "^2.2.0",
"react": "^16.5.2", "react": "^16.5.2",
@ -66,7 +67,7 @@
"ts-optchain": "^0.1.1" "ts-optchain": "^0.1.1"
}, },
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@static/discharge": "https://github.com/0xProject/discharge.git", "@static/discharge": "https://github.com/0xProject/discharge.git",
"@types/enzyme": "^3.1.14", "@types/enzyme": "^3.1.14",
"@types/enzyme-adapter-react-16": "^1.0.3", "@types/enzyme-adapter-react-16": "^1.0.3",

View File

@ -77,6 +77,7 @@ const generatePositionAnimationCss = (positionSettings: PositionAnimationSetting
export interface PositionAnimationProps { export interface PositionAnimationProps {
positionSettings: OptionallyScreenSpecific<PositionAnimationSettings>; positionSettings: OptionallyScreenSpecific<PositionAnimationSettings>;
zIndex?: OptionallyScreenSpecific<number>; zIndex?: OptionallyScreenSpecific<number>;
height?: string;
} }
const defaultAnimation = (positionSettings: OptionallyScreenSpecific<PositionAnimationSettings>) => { const defaultAnimation = (positionSettings: OptionallyScreenSpecific<PositionAnimationSettings>) => {
@ -104,5 +105,6 @@ export const PositionAnimation =
${props => animationForSize(props.positionSettings, 'sm', media.small)} ${props => animationForSize(props.positionSettings, 'sm', media.small)}
${props => animationForSize(props.positionSettings, 'md', media.medium)} ${props => animationForSize(props.positionSettings, 'md', media.medium)}
${props => animationForSize(props.positionSettings, 'lg', media.large)} ${props => animationForSize(props.positionSettings, 'lg', media.large)}
${props => (props.height ? `height: ${props.height};` : '')}
} }
`; `;

View File

@ -10,6 +10,7 @@ export interface SlideAnimationProps {
slideInSettings: OptionallyScreenSpecific<PositionAnimationSettings>; slideInSettings: OptionallyScreenSpecific<PositionAnimationSettings>;
slideOutSettings: OptionallyScreenSpecific<PositionAnimationSettings>; slideOutSettings: OptionallyScreenSpecific<PositionAnimationSettings>;
zIndex?: OptionallyScreenSpecific<number>; zIndex?: OptionallyScreenSpecific<number>;
height?: string;
} }
export const SlideAnimation: React.StatelessComponent<SlideAnimationProps> = props => { export const SlideAnimation: React.StatelessComponent<SlideAnimationProps> = props => {
@ -18,7 +19,7 @@ export const SlideAnimation: React.StatelessComponent<SlideAnimationProps> = pro
} }
const positionSettings = props.animationState === 'slidIn' ? props.slideInSettings : props.slideOutSettings; const positionSettings = props.animationState === 'slidIn' ? props.slideInSettings : props.slideOutSettings;
return ( return (
<PositionAnimation positionSettings={positionSettings} zIndex={props.zIndex}> <PositionAnimation height={props.height} positionSettings={positionSettings} zIndex={props.zIndex}>
{props.children} {props.children}
</PositionAnimation> </PositionAnimation>
); );

View File

@ -1,4 +1,5 @@
import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer'; import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper'; import { Web3Wrapper } from '@0x/web3-wrapper';
import * as _ from 'lodash'; import * as _ from 'lodash';
import * as React from 'react'; import * as React from 'react';
@ -7,16 +8,17 @@ 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 { getBestAddress } from '../util/address';
import { balanceUtil } from '../util/balance';
import { gasPriceEstimator } from '../util/gas_price_estimator'; import { gasPriceEstimator } from '../util/gas_price_estimator';
import { util } from '../util/util'; import { util } from '../util/util';
import { Button } from './ui/button'; import { Button } from './ui/button';
export interface BuyButtonProps { export interface BuyButtonProps {
accountAddress?: string;
accountEthBalanceInWei?: BigNumber;
buyQuote?: BuyQuote; buyQuote?: BuyQuote;
assetBuyer: AssetBuyer; assetBuyer: AssetBuyer;
web3Wrapper: Web3Wrapper;
affiliateInfo?: AffiliateInfo; affiliateInfo?: AffiliateInfo;
onValidationPending: (buyQuote: BuyQuote) => void; onValidationPending: (buyQuote: BuyQuote) => void;
onValidationFail: (buyQuote: BuyQuote, errorMessage: AssetBuyerError | ZeroExInstantError) => void; onValidationFail: (buyQuote: BuyQuote, errorMessage: AssetBuyerError | ZeroExInstantError) => void;
@ -33,7 +35,8 @@ export class BuyButton extends React.Component<BuyButtonProps> {
onBuyFailure: util.boundNoop, onBuyFailure: util.boundNoop,
}; };
public render(): React.ReactNode { public render(): React.ReactNode {
const shouldDisableButton = _.isUndefined(this.props.buyQuote); const { buyQuote, accountAddress } = this.props;
const shouldDisableButton = _.isUndefined(buyQuote) || _.isUndefined(accountAddress);
return ( return (
<Button <Button
width="100%" width="100%"
@ -48,30 +51,25 @@ export class BuyButton extends React.Component<BuyButtonProps> {
} }
private readonly _handleClick = async () => { private readonly _handleClick = async () => {
// The button is disabled when there is no buy quote anyway. // The button is disabled when there is no buy quote anyway.
const { buyQuote, assetBuyer, affiliateInfo } = this.props; const { buyQuote, assetBuyer, affiliateInfo, accountAddress, accountEthBalanceInWei, web3Wrapper } = this.props;
if (_.isUndefined(buyQuote)) { if (_.isUndefined(buyQuote) || _.isUndefined(accountAddress)) {
return; return;
} }
this.props.onValidationPending(buyQuote); this.props.onValidationPending(buyQuote);
const ethNeededForBuy = buyQuote.worstCaseQuoteInfo.totalEthAmount;
// TODO(bmillman): move address and balance fetching to the async state // if we don't have a balance for the user, let the transaction through, it will be handled by the wallet
const web3Wrapper = new Web3Wrapper(assetBuyer.provider); const hasSufficientEth = _.isUndefined(accountEthBalanceInWei) || accountEthBalanceInWei.gte(ethNeededForBuy);
const takerAddress = await getBestAddress(web3Wrapper);
const hasSufficientEth = await balanceUtil.hasSufficientEth(takerAddress, buyQuote, web3Wrapper);
if (!hasSufficientEth) { if (!hasSufficientEth) {
this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH); this.props.onValidationFail(buyQuote, ZeroExInstantError.InsufficientETH);
return; return;
} }
let txHash: string | undefined; let txHash: string | undefined;
const gasInfo = await gasPriceEstimator.getGasInfoAsync(); const gasInfo = await gasPriceEstimator.getGasInfoAsync();
const feeRecipient = oc(affiliateInfo).feeRecipient(); const feeRecipient = oc(affiliateInfo).feeRecipient();
try { try {
txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote, { txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote, {
feeRecipient, feeRecipient,
takerAddress, takerAddress: accountAddress,
gasPrice: gasInfo.gasPriceInWei, gasPrice: gasInfo.gasPriceInWei,
}); });
} catch (e) { } catch (e) {
@ -86,7 +84,6 @@ export class BuyButton extends React.Component<BuyButtonProps> {
} }
throw e; throw e;
} }
const startTimeUnix = new Date().getTime(); const startTimeUnix = new Date().getTime();
const expectedEndTimeUnix = startTimeUnix + gasInfo.estimatedTimeMs; const expectedEndTimeUnix = startTimeUnix + gasInfo.estimatedTimeMs;
this.props.onBuyProcessing(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix); this.props.onBuyProcessing(buyQuote, txHash, startTimeUnix, expectedEndTimeUnix);
@ -99,7 +96,6 @@ export class BuyButton extends React.Component<BuyButtonProps> {
} }
throw e; throw e;
} }
this.props.onBuySuccess(buyQuote, txHash); this.props.onBuySuccess(buyQuote, txHash);
}; };
} }

View File

@ -1,4 +1,6 @@
import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer'; import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as React from 'react'; import * as React from 'react';
import { ColorOption } from '../style/theme'; import { ColorOption } from '../style/theme';
@ -12,9 +14,12 @@ import { Button } from './ui/button';
import { Flex } from './ui/flex'; import { Flex } from './ui/flex';
export interface BuyOrderStateButtonProps { export interface BuyOrderStateButtonProps {
accountAddress?: string;
accountEthBalanceInWei?: BigNumber;
buyQuote?: BuyQuote; buyQuote?: BuyQuote;
buyOrderProcessingState: OrderProcessState; buyOrderProcessingState: OrderProcessState;
assetBuyer: AssetBuyer; assetBuyer: AssetBuyer;
web3Wrapper: Web3Wrapper;
affiliateInfo?: AffiliateInfo; affiliateInfo?: AffiliateInfo;
onViewTransaction: () => void; onViewTransaction: () => void;
onValidationPending: (buyQuote: BuyQuote) => void; onValidationPending: (buyQuote: BuyQuote) => void;
@ -49,8 +54,11 @@ export const BuyOrderStateButtons: React.StatelessComponent<BuyOrderStateButtonP
return ( return (
<BuyButton <BuyButton
accountAddress={props.accountAddress}
accountEthBalanceInWei={props.accountEthBalanceInWei}
buyQuote={props.buyQuote} buyQuote={props.buyQuote}
assetBuyer={props.assetBuyer} assetBuyer={props.assetBuyer}
web3Wrapper={props.web3Wrapper}
affiliateInfo={props.affiliateInfo} affiliateInfo={props.affiliateInfo}
onValidationPending={props.onValidationPending} onValidationPending={props.onValidationPending}
onValidationFail={props.onValidationFail} onValidationFail={props.onValidationFail}

View File

@ -27,7 +27,6 @@ export const CSSReset = createGlobalStyle`
text-align: left; text-align: left;
text-decoration: none; text-decoration: none;
vertical-align: baseline; vertical-align: baseline;
z-index: 1;
} }
} }
`; `;

View File

@ -113,7 +113,7 @@ export class ERC20AssetAmountInput extends React.Component<ERC20AssetAmountInput
} }
return ( return (
<Container marginLeft="5px"> <Container marginLeft="5px">
<Icon icon="chevron" width={12} onClick={this._handleSelectAssetClick} /> <Icon icon="chevron" width={12} stroke={ColorOption.white} onClick={this._handleSelectAssetClick} />
</Container> </Container>
); );
}; };

View File

@ -28,14 +28,14 @@ export class ERC20TokenSelector extends React.Component<ERC20TokenSelectorProps>
public render(): React.ReactNode { public render(): React.ReactNode {
const { tokens, onTokenSelect } = this.props; const { tokens, onTokenSelect } = this.props;
return ( return (
<Container> <Container height="100%">
<SearchInput <SearchInput
placeholder="Search tokens..." placeholder="Search tokens..."
width="100%" width="100%"
value={this.state.searchQuery} value={this.state.searchQuery}
onChange={this._handleSearchInputChange} onChange={this._handleSearchInputChange}
/> />
<Container overflow="scroll" height={{ default: '275px', sm: '75vh' }} marginTop="10px"> <Container overflow="scroll" height="calc(100% - 80px)" marginTop="10px">
{_.map(tokens, token => { {_.map(tokens, token => {
if (!this._isTokenQueryMatch(token)) { if (!this._isTokenQueryMatch(token)) {
return null; return null;
@ -85,7 +85,7 @@ class TokenSelectorRow extends React.Component<TokenSelectorRowProps> {
<Container marginLeft="5px"> <Container marginLeft="5px">
<Flex justify="flex-start"> <Flex justify="flex-start">
<Container marginRight="10px"> <Container marginRight="10px">
<Circle diameter={30} fillColor={token.metaData.primaryColor}> <Circle diameter={30} rawColor={token.metaData.primaryColor}>
<Flex height="100%"> <Flex height="100%">
<Text fontColor={ColorOption.white} fontSize="8px"> <Text fontColor={ColorOption.white} fontSize="8px">
{displaySymbol} {displaySymbol}

View File

@ -0,0 +1,45 @@
import { BigNumber } from '@0x/utils';
import * as _ from 'lodash';
import * as React from 'react';
import { ColorOption } from '../style/theme';
import { Network } from '../types';
import { PaymentMethodDropdown } from './payment_method_dropdown';
import { Circle } from './ui/circle';
import { Container } from './ui/container';
import { Flex } from './ui/flex';
import { Text } from './ui/text';
export interface PaymentMethodProps {}
export const PaymentMethod: React.StatelessComponent<PaymentMethodProps> = () => (
<Container padding="20px" width="100%">
<Container marginBottom="10px">
<Flex justify="space-between">
<Text
letterSpacing="1px"
fontColor={ColorOption.primaryColor}
fontWeight={600}
textTransform="uppercase"
fontSize="14px"
>
Payment Method
</Text>
<Flex>
<Circle color={ColorOption.green} diameter={8} />
<Container marginLeft="3px">
<Text fontColor={ColorOption.darkGrey} fontSize="12px">
MetaMask
</Text>
</Container>
</Flex>
</Flex>
</Container>
<PaymentMethodDropdown
accountAddress="0xa1b2c3d4e5f6g7h8j9k10"
accountEthBalanceInWei={new BigNumber(10500000000000000000)}
network={Network.Mainnet}
/>
</Container>
);

View File

@ -0,0 +1,44 @@
import { BigNumber } from '@0x/utils';
import copy from 'copy-to-clipboard';
import * as React from 'react';
import { Network } from '../types';
import { etherscanUtil } from '../util/etherscan';
import { format } from '../util/format';
import { Dropdown, DropdownItemConfig } from './ui/dropdown';
export interface PaymentMethodDropdownProps {
accountAddress: string;
accountEthBalanceInWei?: BigNumber;
network: Network;
}
export class PaymentMethodDropdown extends React.Component<PaymentMethodDropdownProps> {
public render(): React.ReactNode {
const { accountAddress, accountEthBalanceInWei } = this.props;
const value = format.ethAddress(accountAddress);
const label = format.ethBaseAmount(accountEthBalanceInWei, 4, '') as string;
return <Dropdown value={value} label={label} items={this._getDropdownItemConfigs()} />;
}
private readonly _getDropdownItemConfigs = (): DropdownItemConfig[] => {
const viewOnEtherscan = {
text: 'View on Etherscan',
onClick: this._handleEtherscanClick,
};
const copyAddressToClipboard = {
text: 'Copy address to clipboard',
onClick: this._handleCopyToClipboardClick,
};
return [viewOnEtherscan, copyAddressToClipboard];
};
private readonly _handleEtherscanClick = (): void => {
const { accountAddress, network } = this.props;
const etherscanUrl = etherscanUtil.getEtherScanEthAddressIfExists(accountAddress, network);
window.open(etherscanUrl, '_blank');
};
private readonly _handleCopyToClipboardClick = (): void => {
const { accountAddress } = this.props;
copy(accountAddress);
};
}

View File

@ -86,7 +86,7 @@ export const SlidingError: React.StatelessComponent<SlidingErrorProps> = props =
<SlideAnimation <SlideAnimation
slideInSettings={slideUpSettings} slideInSettings={slideUpSettings}
slideOutSettings={slideOutSettings} slideOutSettings={slideOutSettings}
zIndex={{ sm: zIndex.errorPopUp, default: zIndex.errorPopBehind }} zIndex={{ sm: zIndex.errorPopup, default: zIndex.errorPopBehind }}
animationState={props.animationState} animationState={props.animationState}
> >
<Error icon={props.icon} message={props.message} /> <Error icon={props.icon} message={props.message} />

View File

@ -30,7 +30,9 @@ export const Panel: React.StatelessComponent<PanelProps> = ({ title, children, o
<Icon width={12} color={ColorOption.lightGrey} icon="closeX" onClick={onClose} /> <Icon width={12} color={ColorOption.lightGrey} icon="closeX" onClick={onClose} />
</Container> </Container>
</Flex> </Flex>
<Container marginTop="10px">{children}</Container> <Container marginTop="10px" height="100%">
{children}
</Container>
</Container> </Container>
); );
@ -67,6 +69,7 @@ export const SlidingPanel: React.StatelessComponent<SlidingPanelProps> = props =
slideInSettings={slideUpSettings} slideInSettings={slideUpSettings}
slideOutSettings={slideDownSettings} slideOutSettings={slideDownSettings}
animationState={animationState} animationState={animationState}
height="100%"
> >
<Panel {...rest} /> <Panel {...rest} />
</SlideAnimation> </SlideAnimation>

View File

@ -1,24 +1,27 @@
import { styled } from '../../style/theme'; import { ColorOption, styled, Theme, withTheme } from '../../style/theme';
export interface CircleProps { export interface CircleProps {
diameter: number; diameter: number;
fillColor?: string; rawColor?: string;
color?: ColorOption;
theme: Theme;
} }
export const Circle = export const Circle = withTheme(
styled.div < styled.div <
CircleProps > CircleProps >
` `
&& { && {
width: ${props => props.diameter}px; width: ${props => props.diameter}px;
height: ${props => props.diameter}px; height: ${props => props.diameter}px;
background-color: ${props => props.fillColor}; background-color: ${props => (props.rawColor ? props.rawColor : props.theme[props.color || ColorOption.white])};
border-radius: 50%; border-radius: 50%;
} }
`; `,
);
Circle.displayName = 'Circle'; Circle.displayName = 'Circle';
Circle.defaultProps = { Circle.defaultProps = {
fillColor: 'white', color: ColorOption.white,
}; };

View File

@ -34,6 +34,7 @@ export interface ContainerProps {
cursor?: string; cursor?: string;
overflow?: string; overflow?: string;
darkenOnHover?: boolean; darkenOnHover?: boolean;
boxShadowOnHover?: boolean;
flexGrow?: string | number; flexGrow?: string | number;
} }
@ -42,7 +43,6 @@ export const Container =
ContainerProps > ContainerProps >
` `
&& { && {
all: initial;
box-sizing: border-box; box-sizing: border-box;
${props => cssRuleIfExists(props, 'flex-grow')} ${props => cssRuleIfExists(props, 'flex-grow')}
${props => cssRuleIfExists(props, 'position')} ${props => cssRuleIfExists(props, 'position')}
@ -79,6 +79,7 @@ export const Container =
props.backgroundColor ? darken(0.05, props.theme[props.backgroundColor]) : 'none' props.backgroundColor ? darken(0.05, props.theme[props.backgroundColor]) : 'none'
}` }`
: ''}; : ''};
${props => (props.boxShadowOnHover ? 'box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1)' : '')};
} }
} }
`; `;

View File

@ -0,0 +1,134 @@
import * as _ from 'lodash';
import * as React from 'react';
import { ColorOption, completelyTransparent } from '../../style/theme';
import { zIndex } from '../../style/z_index';
import { Container } from './container';
import { Flex } from './flex';
import { Icon } from './icon';
import { Overlay } from './overlay';
import { Text } from './text';
export interface DropdownItemConfig {
text: string;
onClick?: () => void;
}
export interface DropdownProps {
value: string;
label?: string;
items: DropdownItemConfig[];
}
export interface DropdownState {
isOpen: boolean;
}
export class Dropdown extends React.Component<DropdownProps, DropdownState> {
public static defaultProps = {
items: [],
};
public state: DropdownState = {
isOpen: false,
};
public render(): React.ReactNode {
const { value, label, items } = this.props;
const { isOpen } = this.state;
const hasItems = !_.isEmpty(items);
const borderRadius = isOpen ? '4px 4px 0px 0px' : '4px';
return (
<React.Fragment>
{isOpen && (
<Overlay
zIndex={zIndex.dropdownItems - 1}
backgroundColor={completelyTransparent}
onClick={this._closeDropdown}
/>
)}
<Container position="relative">
<Container
cursor={hasItems ? 'pointer' : undefined}
onClick={this._handleDropdownClick}
hasBoxShadow={isOpen}
boxShadowOnHover={true}
borderRadius={borderRadius}
border="1px solid"
borderColor={ColorOption.feintGrey}
padding="0.8em"
>
<Flex justify="space-between">
<Text fontSize="16px" fontColor={ColorOption.darkGrey}>
{value}
</Text>
<Container>
{label && (
<Text fontSize="16px" fontColor={ColorOption.lightGrey}>
{label}
</Text>
)}
{hasItems && (
<Container marginLeft="5px" display="inline-block" position="relative" bottom="2px">
<Icon padding="3px" icon="chevron" width={12} stroke={ColorOption.grey} />
</Container>
)}
</Container>
</Flex>
</Container>
{isOpen && (
<Container
width="100%"
position="absolute"
onClick={this._closeDropdown}
backgroundColor={ColorOption.white}
hasBoxShadow={true}
zIndex={zIndex.dropdownItems}
>
{_.map(items, (item, index) => (
<DropdownItem key={item.text} {...item} isLast={index === items.length - 1} />
))}
</Container>
)}
</Container>
</React.Fragment>
);
}
private readonly _handleDropdownClick = (): void => {
if (_.isEmpty(this.props.items)) {
return;
}
this.setState({
isOpen: !this.state.isOpen,
});
};
private readonly _closeDropdown = (): void => {
this.setState({
isOpen: false,
});
};
}
export interface DropdownItemProps extends DropdownItemConfig {
text: string;
onClick?: () => void;
isLast: boolean;
}
export const DropdownItem: React.StatelessComponent<DropdownItemProps> = ({ text, onClick, isLast }) => (
<Container
onClick={onClick}
cursor="pointer"
darkenOnHover={true}
backgroundColor={ColorOption.white}
padding="0.8em"
borderTop="0"
border="1px solid"
borderRadius={isLast ? '0px 0px 4px 4px' : undefined}
width="100%"
borderColor={ColorOption.feintGrey}
>
<Text fontSize="14px" fontColor={ColorOption.darkGrey}>
{text}
</Text>
</Container>
);

View File

@ -19,7 +19,6 @@ export const Flex =
FlexProps > FlexProps >
` `
&& { && {
all: initial;
display: ${props => (props.inline ? 'inline-flex' : 'flex')}; display: ${props => (props.inline ? 'inline-flex' : 'flex')};
flex-direction: ${props => props.direction}; flex-direction: ${props => props.direction};
flex-wrap: ${props => props.flexWrap}; flex-wrap: ${props => props.flexWrap};

View File

@ -9,7 +9,6 @@ interface IconInfo {
path: string; path: string;
fillRule?: svgRule; fillRule?: svgRule;
clipRule?: svgRule; clipRule?: svgRule;
stroke?: string;
strokeOpacity?: number; strokeOpacity?: number;
strokeWidth?: number; strokeWidth?: number;
strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit'; strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';
@ -47,7 +46,6 @@ const ICONS: IconInfoMapping = {
chevron: { chevron: {
viewBox: '0 0 12 7', viewBox: '0 0 12 7',
path: 'M11 1L6 6L1 1', path: 'M11 1L6 6L1 1',
stroke: 'white',
strokeOpacity: 0.5, strokeOpacity: 0.5,
strokeWidth: 1.5, strokeWidth: 1.5,
strokeLinecap: 'round', strokeLinecap: 'round',
@ -67,6 +65,7 @@ export interface IconProps {
width: number; width: number;
height?: number; height?: number;
color?: ColorOption; color?: ColorOption;
stroke?: ColorOption;
icon: keyof IconInfoMapping; icon: keyof IconInfoMapping;
onClick?: (event: React.MouseEvent<HTMLElement>) => void; onClick?: (event: React.MouseEvent<HTMLElement>) => void;
padding?: string; padding?: string;
@ -75,6 +74,7 @@ export interface IconProps {
const PlainIcon: React.StatelessComponent<IconProps> = props => { const PlainIcon: React.StatelessComponent<IconProps> = props => {
const iconInfo = ICONS[props.icon]; const iconInfo = ICONS[props.icon];
const colorValue = _.isUndefined(props.color) ? undefined : props.theme[props.color]; const colorValue = _.isUndefined(props.color) ? undefined : props.theme[props.color];
const strokeValue = _.isUndefined(props.stroke) ? undefined : props.theme[props.stroke];
return ( return (
<div onClick={props.onClick} className={props.className}> <div onClick={props.onClick} className={props.className}>
<svg <svg
@ -89,7 +89,7 @@ const PlainIcon: React.StatelessComponent<IconProps> = props => {
fill={colorValue} fill={colorValue}
fillRule={iconInfo.fillRule || 'nonzero'} fillRule={iconInfo.fillRule || 'nonzero'}
clipRule={iconInfo.clipRule || 'nonzero'} clipRule={iconInfo.clipRule || 'nonzero'}
stroke={iconInfo.stroke} stroke={strokeValue}
strokeOpacity={iconInfo.strokeOpacity} strokeOpacity={iconInfo.strokeOpacity}
strokeWidth={iconInfo.strokeWidth} strokeWidth={iconInfo.strokeWidth}
strokeLinecap={iconInfo.strokeLinecap} strokeLinecap={iconInfo.strokeLinecap}
@ -102,7 +102,8 @@ const PlainIcon: React.StatelessComponent<IconProps> = props => {
export const Icon = withTheme(styled(PlainIcon)` export const Icon = withTheme(styled(PlainIcon)`
&& { && {
cursor: ${props => (!_.isUndefined(props.onClick) ? 'pointer' : 'default')}; display: inline-block;
${props => (!_.isUndefined(props.onClick) ? 'cursor: pointer' : '')};
transition: opacity 0.5s ease; transition: opacity 0.5s ease;
padding: ${props => props.padding}; padding: ${props => props.padding};
opacity: ${props => (!_.isUndefined(props.onClick) ? 0.7 : 1)}; opacity: ${props => (!_.isUndefined(props.onClick) ? 0.7 : 1)};

View File

@ -1,29 +1,17 @@
import * as _ from 'lodash'; import * as _ from 'lodash';
import * as React from 'react';
import { ColorOption, overlayBlack, styled } from '../../style/theme'; import { overlayBlack, styled } from '../../style/theme';
import { zIndex } from '../../style/z_index';
import { Container } from './container';
import { Flex } from './flex';
import { Icon } from './icon';
export interface OverlayProps { export interface OverlayProps {
className?: string;
onClose?: () => void;
zIndex?: number; zIndex?: number;
backgroundColor?: string;
} }
const PlainOverlay: React.StatelessComponent<OverlayProps> = ({ children, className, onClose }) => ( export const Overlay =
<Flex height="100vh" className={className}> styled.div <
<Container position="absolute" top="0px" right="0px" display={{ default: 'initial', sm: 'none' }}> OverlayProps >
<Icon height={18} width={18} color={ColorOption.white} icon="closeX" onClick={onClose} padding="2em 2em" /> `
</Container>
<Container width={{ default: 'auto', sm: '100%' }} height={{ default: 'auto', sm: '100%' }}>
{children}
</Container>
</Flex>
);
export const Overlay = styled(PlainOverlay)`
&& { && {
position: fixed; position: fixed;
top: 0; top: 0;
@ -31,12 +19,13 @@ export const Overlay = styled(PlainOverlay)`
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: ${props => props.zIndex} z-index: ${props => props.zIndex}
background-color: ${overlayBlack}; background-color: ${props => props.backgroundColor};
} }
`; `;
Overlay.defaultProps = { Overlay.defaultProps = {
zIndex: 100, zIndex: zIndex.overlayDefault,
backgroundColor: overlayBlack,
}; };
Overlay.displayName = 'Overlay'; Overlay.displayName = 'Overlay';

View File

@ -28,7 +28,6 @@ export const Text =
TextProps > TextProps >
` `
&& { && {
all: initial;
font-family: 'Inter UI', sans-serif; font-family: 'Inter UI', sans-serif;
font-style: ${props => props.fontStyle}; font-style: ${props => props.fontStyle};
font-weight: ${props => props.fontWeight}; font-weight: ${props => props.fontWeight};

View File

@ -3,11 +3,9 @@ import * as React from 'react';
import { AvailableERC20TokenSelector } from '../containers/available_erc20_token_selector'; import { AvailableERC20TokenSelector } from '../containers/available_erc20_token_selector';
import { LatestBuyQuoteOrderDetails } from '../containers/latest_buy_quote_order_details'; import { LatestBuyQuoteOrderDetails } from '../containers/latest_buy_quote_order_details';
import { LatestError } from '../containers/latest_error'; import { LatestError } from '../containers/latest_error';
import { SelectedAssetBuyOrderProgress } from '../containers/selected_asset_buy_order_progress';
import { SelectedAssetBuyOrderStateButtons } from '../containers/selected_asset_buy_order_state_buttons'; import { SelectedAssetBuyOrderStateButtons } from '../containers/selected_asset_buy_order_state_buttons';
import { SelectedAssetInstantHeading } from '../containers/selected_asset_instant_heading'; import { SelectedAssetInstantHeading } from '../containers/selected_asset_instant_heading';
import { SelectedAssetBuyOrderProgress } from '../containers/selected_asset_buy_order_progress';
import { ColorOption } from '../style/theme'; import { ColorOption } from '../style/theme';
import { zIndex } from '../style/z_index'; import { zIndex } from '../style/z_index';

View File

@ -1,5 +1,10 @@
import * as React from 'react'; import * as React from 'react';
import { ColorOption } from '../style/theme';
import { Container } from './ui/container';
import { Flex } from './ui/flex';
import { Icon } from './ui/icon';
import { Overlay } from './ui/overlay'; import { Overlay } from './ui/overlay';
import { ZeroExInstantContainer } from './zero_ex_instant_container'; import { ZeroExInstantContainer } from './zero_ex_instant_container';
import { ZeroExInstantProvider, ZeroExInstantProviderProps } from './zero_ex_instant_provider'; import { ZeroExInstantProvider, ZeroExInstantProviderProps } from './zero_ex_instant_provider';
@ -13,8 +18,22 @@ export const ZeroExInstantOverlay: React.StatelessComponent<ZeroExInstantOverlay
const { onClose, zIndex, ...rest } = props; const { onClose, zIndex, ...rest } = props;
return ( return (
<ZeroExInstantProvider {...rest}> <ZeroExInstantProvider {...rest}>
<Overlay onClose={onClose} zIndex={zIndex}> <Overlay zIndex={zIndex}>
<Flex height="100vh">
<Container position="absolute" top="0px" right="0px" display={{ default: 'initial', sm: 'none' }}>
<Icon
height={18}
width={18}
color={ColorOption.white}
icon="closeX"
onClick={onClose}
padding="2em 2em"
/>
</Container>
<Container width={{ default: 'auto', sm: '100%' }} height={{ default: 'auto', sm: '100%' }}>
<ZeroExInstantContainer /> <ZeroExInstantContainer />
</Container>
</Flex>
</Overlay> </Overlay>
</ZeroExInstantProvider> </ZeroExInstantProvider>
); );

View File

@ -93,6 +93,8 @@ export class ZeroExInstantProvider extends React.Component<ZeroExInstantProvider
asyncData.fetchAvailableAssetDatasAndDispatchToStore(this._store); asyncData.fetchAvailableAssetDatasAndDispatchToStore(this._store);
} }
// tslint:disable-next-line:no-floating-promises // tslint:disable-next-line:no-floating-promises
asyncData.fetchAccountInfoAndDispatchToStore(this._store);
// tslint:disable-next-line:no-floating-promises
asyncData.fetchCurrentBuyQuoteAndDispatchToStore(this._store); asyncData.fetchCurrentBuyQuoteAndDispatchToStore(this._store);
// warm up the gas price estimator cache just in case we can't // warm up the gas price estimator cache just in case we can't
// grab the gas price estimate when submitting the transaction // grab the gas price estimate when submitting the transaction

View File

@ -1,6 +1,6 @@
import { BigNumber } from '@0x/utils'; import { BigNumber } from '@0x/utils';
import { Network } from './types'; import { AccountNotReady, AccountState, Network } from './types';
export const BIG_NUMBER_ZERO = new BigNumber(0); export const BIG_NUMBER_ZERO = new BigNumber(0);
export const ETH_DECIMALS = 18; export const ETH_DECIMALS = 18;
@ -22,3 +22,15 @@ export const ETHEREUM_NODE_URL_BY_NETWORK = {
[Network.Kovan]: 'https://kovan.infura.io/', [Network.Kovan]: 'https://kovan.infura.io/',
}; };
export const BLOCK_POLLING_INTERVAL_MS = 10000; // 10s export const BLOCK_POLLING_INTERVAL_MS = 10000; // 10s
export const NO_ACCOUNT: AccountNotReady = {
state: AccountState.None,
};
export const LOADING_ACCOUNT: AccountNotReady = {
state: AccountState.Loading,
};
export const LOCKED_ACCOUNT: AccountNotReady = {
state: AccountState.Locked,
};
export const ERROR_ACCOUNT: AccountNotReady = {
state: AccountState.Error,
};

View File

@ -1,4 +1,6 @@
import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer'; import { AssetBuyer, AssetBuyerError, BuyQuote } from '@0x/asset-buyer';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as _ from 'lodash'; import * as _ from 'lodash';
import * as React from 'react'; import * as React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
@ -7,14 +9,17 @@ import { Dispatch } from 'redux';
import { BuyOrderStateButtons } from '../components/buy_order_state_buttons'; import { BuyOrderStateButtons } from '../components/buy_order_state_buttons';
import { Action, actions } from '../redux/actions'; import { Action, actions } from '../redux/actions';
import { State } from '../redux/reducer'; import { State } from '../redux/reducer';
import { AffiliateInfo, OrderProcessState, ZeroExInstantError } from '../types'; import { AccountState, AffiliateInfo, OrderProcessState, ZeroExInstantError } from '../types';
import { errorFlasher } from '../util/error_flasher'; import { errorFlasher } from '../util/error_flasher';
import { etherscanUtil } from '../util/etherscan'; import { etherscanUtil } from '../util/etherscan';
interface ConnectedState { interface ConnectedState {
accountAddress?: string;
accountEthBalanceInWei?: BigNumber;
buyQuote?: BuyQuote; buyQuote?: BuyQuote;
buyOrderProcessingState: OrderProcessState; buyOrderProcessingState: OrderProcessState;
assetBuyer: AssetBuyer; assetBuyer: AssetBuyer;
web3Wrapper: Web3Wrapper;
affiliateInfo?: AffiliateInfo; affiliateInfo?: AffiliateInfo;
onViewTransaction: () => void; onViewTransaction: () => void;
} }
@ -31,9 +36,16 @@ interface ConnectedDispatch {
export interface SelectedAssetBuyOrderStateButtons {} export interface SelectedAssetBuyOrderStateButtons {}
const mapStateToProps = (state: State, _ownProps: SelectedAssetBuyOrderStateButtons): ConnectedState => { const mapStateToProps = (state: State, _ownProps: SelectedAssetBuyOrderStateButtons): ConnectedState => {
const assetBuyer = state.providerState.assetBuyer; const assetBuyer = state.providerState.assetBuyer;
const web3Wrapper = state.providerState.web3Wrapper;
const account = state.providerState.account;
const accountAddress = account.state === AccountState.Ready ? account.address : undefined;
const accountEthBalanceInWei = account.state === AccountState.Ready ? account.ethBalanceInWei : undefined;
return { return {
accountAddress,
accountEthBalanceInWei,
buyOrderProcessingState: state.buyOrderState.processState, buyOrderProcessingState: state.buyOrderState.processState,
assetBuyer, assetBuyer,
web3Wrapper,
buyQuote: state.latestBuyQuote, buyQuote: state.latestBuyQuote,
affiliateInfo: state.affiliateInfo, affiliateInfo: state.affiliateInfo,
onViewTransaction: () => { onViewTransaction: () => {

View File

@ -2,7 +2,7 @@ import { BuyQuote } from '@0x/asset-buyer';
import { BigNumber } from '@0x/utils'; import { BigNumber } from '@0x/utils';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { ActionsUnion, Asset } from '../types'; import { ActionsUnion, AddressAndEthBalanceInWei, Asset } from '../types';
export interface PlainAction<T extends string> { export interface PlainAction<T extends string> {
type: T; type: T;
@ -21,6 +21,11 @@ function createAction<T extends string, P>(type: T, data?: P): PlainAction<T> |
} }
export enum ActionTypes { export enum ActionTypes {
SET_ACCOUNT_STATE_LOADING = 'SET_ACCOUNT_STATE_LOADING',
SET_ACCOUNT_STATE_LOCKED = 'SET_ACCOUNT_STATE_LOCKED',
SET_ACCOUNT_STATE_ERROR = 'SET_ACCOUNT_STATE_ERROR',
SET_ACCOUNT_STATE_READY = 'SET_ACCOUNT_STATE_READY',
UPDATE_ACCOUNT_ETH_BALANCE = 'UPDATE_ACCOUNT_ETH_BALANCE',
UPDATE_ETH_USD_PRICE = 'UPDATE_ETH_USD_PRICE', UPDATE_ETH_USD_PRICE = 'UPDATE_ETH_USD_PRICE',
UPDATE_SELECTED_ASSET_AMOUNT = 'UPDATE_SELECTED_ASSET_AMOUNT', UPDATE_SELECTED_ASSET_AMOUNT = 'UPDATE_SELECTED_ASSET_AMOUNT',
SET_BUY_ORDER_STATE_NONE = 'SET_BUY_ORDER_STATE_NONE', SET_BUY_ORDER_STATE_NONE = 'SET_BUY_ORDER_STATE_NONE',
@ -40,6 +45,12 @@ export enum ActionTypes {
} }
export const actions = { export const actions = {
setAccountStateLoading: () => createAction(ActionTypes.SET_ACCOUNT_STATE_LOADING),
setAccountStateLocked: () => createAction(ActionTypes.SET_ACCOUNT_STATE_LOCKED),
setAccountStateError: () => createAction(ActionTypes.SET_ACCOUNT_STATE_ERROR),
setAccountStateReady: (address: string) => createAction(ActionTypes.SET_ACCOUNT_STATE_READY, address),
updateAccountEthBalance: (addressAndBalance: AddressAndEthBalanceInWei) =>
createAction(ActionTypes.UPDATE_ACCOUNT_ETH_BALANCE, addressAndBalance),
updateEthUsdPrice: (price?: BigNumber) => createAction(ActionTypes.UPDATE_ETH_USD_PRICE, price), updateEthUsdPrice: (price?: BigNumber) => createAction(ActionTypes.UPDATE_ETH_USD_PRICE, price),
updateSelectedAssetAmount: (amount?: BigNumber) => createAction(ActionTypes.UPDATE_SELECTED_ASSET_AMOUNT, amount), updateSelectedAssetAmount: (amount?: BigNumber) => createAction(ActionTypes.UPDATE_SELECTED_ASSET_AMOUNT, amount),
setBuyOrderStateNone: () => createAction(ActionTypes.SET_BUY_ORDER_STATE_NONE), setBuyOrderStateNone: () => createAction(ActionTypes.SET_BUY_ORDER_STATE_NONE),

View File

@ -2,7 +2,7 @@ import { AssetProxyId } from '@0x/types';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { BIG_NUMBER_ZERO } from '../constants'; import { BIG_NUMBER_ZERO } from '../constants';
import { ERC20Asset } from '../types'; import { AccountState, ERC20Asset } from '../types';
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';
@ -36,6 +36,44 @@ export const asyncData = {
store.dispatch(actions.setAvailableAssets([])); store.dispatch(actions.setAvailableAssets([]));
} }
}, },
fetchAccountInfoAndDispatchToStore: async (store: Store) => {
const { providerState } = store.getState();
const web3Wrapper = providerState.web3Wrapper;
if (providerState.account.state !== AccountState.Loading) {
store.dispatch(actions.setAccountStateLoading());
}
let availableAddresses: string[];
try {
availableAddresses = await web3Wrapper.getAvailableAddressesAsync();
} catch (e) {
store.dispatch(actions.setAccountStateError());
return;
}
if (!_.isEmpty(availableAddresses)) {
const activeAddress = availableAddresses[0];
store.dispatch(actions.setAccountStateReady(activeAddress));
// tslint:disable-next-line:no-floating-promises
asyncData.fetchAccountBalanceAndDispatchToStore(store);
} else {
store.dispatch(actions.setAccountStateLocked());
}
},
fetchAccountBalanceAndDispatchToStore: async (store: Store) => {
const { providerState } = store.getState();
const web3Wrapper = providerState.web3Wrapper;
const account = providerState.account;
if (account.state !== AccountState.Ready) {
return;
}
try {
const address = account.address;
const ethBalanceInWei = await web3Wrapper.getBalanceInWeiAsync(address);
store.dispatch(actions.updateAccountEthBalance({ address, ethBalanceInWei }));
} catch (e) {
// leave balance as is
return;
}
},
fetchCurrentBuyQuoteAndDispatchToStore: async (store: Store) => { fetchCurrentBuyQuoteAndDispatchToStore: async (store: Store) => {
const { providerState, selectedAsset, selectedAssetAmount, affiliateInfo } = store.getState(); const { providerState, selectedAsset, selectedAssetAmount, affiliateInfo } = store.getState();
const assetBuyer = providerState.assetBuyer; const assetBuyer = providerState.assetBuyer;

View File

@ -4,8 +4,12 @@ import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper'; import { Web3Wrapper } from '@0x/web3-wrapper';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { ERROR_ACCOUNT, LOADING_ACCOUNT, LOCKED_ACCOUNT } from '../constants';
import { assetMetaDataMap } from '../data/asset_meta_data_map'; import { assetMetaDataMap } from '../data/asset_meta_data_map';
import { import {
Account,
AccountReady,
AccountState,
AffiliateInfo, AffiliateInfo,
Asset, Asset,
AssetMetaData, AssetMetaData,
@ -57,6 +61,32 @@ export const DEFAULT_STATE: DefaultState = {
export const createReducer = (initialState: State) => { export const createReducer = (initialState: State) => {
const reducer = (state: State = initialState, action: Action): State => { const reducer = (state: State = initialState, action: Action): State => {
switch (action.type) { switch (action.type) {
case ActionTypes.SET_ACCOUNT_STATE_LOADING:
return reduceStateWithAccount(state, LOADING_ACCOUNT);
case ActionTypes.SET_ACCOUNT_STATE_LOCKED:
return reduceStateWithAccount(state, LOCKED_ACCOUNT);
case ActionTypes.SET_ACCOUNT_STATE_ERROR:
return reduceStateWithAccount(state, ERROR_ACCOUNT);
case ActionTypes.SET_ACCOUNT_STATE_READY: {
const account: AccountReady = {
state: AccountState.Ready,
address: action.data,
};
return reduceStateWithAccount(state, account);
}
case ActionTypes.UPDATE_ACCOUNT_ETH_BALANCE: {
const { address, ethBalanceInWei } = action.data;
const currentAccount = state.providerState.account;
if (currentAccount.state !== AccountState.Ready || currentAccount.address !== address) {
return state;
} else {
const newAccount: AccountReady = {
...currentAccount,
ethBalanceInWei,
};
return reduceStateWithAccount(state, newAccount);
}
}
case ActionTypes.UPDATE_ETH_USD_PRICE: case ActionTypes.UPDATE_ETH_USD_PRICE:
return { return {
...state, ...state,
@ -80,7 +110,6 @@ export const createReducer = (initialState: State) => {
} else { } else {
return state; return state;
} }
case ActionTypes.SET_QUOTE_REQUEST_STATE_PENDING: case ActionTypes.SET_QUOTE_REQUEST_STATE_PENDING:
return { return {
...state, ...state,
@ -191,6 +220,18 @@ export const createReducer = (initialState: State) => {
return reducer; return reducer;
}; };
const reduceStateWithAccount = (state: State, account: Account) => {
const oldProviderState = state.providerState;
const newProviderState: ProviderState = {
...oldProviderState,
account,
};
return {
...state,
providerState: newProviderState,
};
};
const doesBuyQuoteMatchState = (buyQuote: BuyQuote, state: State): boolean => { const doesBuyQuoteMatchState = (buyQuote: BuyQuote, state: State): boolean => {
const selectedAssetIfExists = state.selectedAsset; const selectedAssetIfExists = state.selectedAsset;
const selectedAssetAmountIfExists = state.selectedAssetAmount; const selectedAssetAmountIfExists = state.selectedAssetAmount;

View File

@ -15,6 +15,8 @@ export enum ColorOption {
white = 'white', white = 'white',
lightOrange = 'lightOrange', lightOrange = 'lightOrange',
darkOrange = 'darkOrange', darkOrange = 'darkOrange',
green = 'green',
red = 'red',
} }
export const theme: Theme = { export const theme: Theme = {
@ -28,9 +30,12 @@ export const theme: Theme = {
white: 'white', white: 'white',
lightOrange: '#F9F2ED', lightOrange: '#F9F2ED',
darkOrange: '#F2994C', darkOrange: '#F2994C',
green: '#3CB34F',
red: '#D00000',
}; };
export const transparentWhite = 'rgba(255,255,255,0.3)'; export const transparentWhite = 'rgba(255,255,255,0.3)';
export const overlayBlack = 'rgba(0, 0, 0, 0.6)'; export const overlayBlack = 'rgba(0, 0, 0, 0.6)';
export const completelyTransparent = 'rga(0, 0, 0, 0)';
export { styled, css, keyframes, withTheme, createGlobalStyle, ThemeProvider }; export { styled, css, keyframes, withTheme, createGlobalStyle, ThemeProvider };

View File

@ -1,6 +1,8 @@
export const zIndex = { export const zIndex = {
errorPopBehind: 1, errorPopBehind: 10,
mainContainer: 2, mainContainer: 20,
panel: 3, dropdownItems: 30,
errorPopUp: 4, panel: 40,
errorPopup: 50,
overlayDefault: 100,
}; };

View File

@ -120,3 +120,8 @@ export interface AccountNotReady {
export type Account = AccountReady | AccountNotReady; export type Account = AccountReady | AccountNotReady;
export type OrderSource = string | SignedOrder[]; export type OrderSource = string | SignedOrder[];
export interface AddressAndEthBalanceInWei {
address: string;
ethBalanceInWei: BigNumber;
}

View File

@ -1,13 +0,0 @@
import { BuyQuote } from '@0x/asset-buyer';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as _ from 'lodash';
export const balanceUtil = {
hasSufficientEth: async (takerAddress: string | undefined, buyQuote: BuyQuote, web3Wrapper: Web3Wrapper) => {
if (_.isUndefined(takerAddress)) {
return false;
}
const balanceWei = await web3Wrapper.getBalanceInWeiAsync(takerAddress);
return balanceWei.gte(buyQuote.worstCaseQuoteInfo.totalEthAmount);
},
};

View File

@ -21,4 +21,11 @@ export const etherscanUtil = {
} }
return `https://${prefix}etherscan.io/tx/${txHash}`; return `https://${prefix}etherscan.io/tx/${txHash}`;
}, },
getEtherScanEthAddressIfExists: (ethAddress: string, networkId: number) => {
const prefix = etherscanPrefix(networkId);
if (_.isUndefined(prefix)) {
return;
}
return `https://${prefix}etherscan.io/address/${ethAddress}`;
},
}; };

View File

@ -50,4 +50,7 @@ export const format = {
} }
return `$${ethUnitAmount.mul(ethUsdPrice).toFixed(decimalPlaces)}`; return `$${ethUnitAmount.mul(ethUsdPrice).toFixed(decimalPlaces)}`;
}, },
ethAddress: (address: string): string => {
return `0x${address.slice(2, 7)}${address.slice(-5)}`;
},
}; };

View File

@ -2,18 +2,12 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider } from 'ethereum-types'; import { Provider } from 'ethereum-types';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { AccountNotReady, AccountState, Maybe, Network, OrderSource, ProviderState } from '../types'; import { LOADING_ACCOUNT, NO_ACCOUNT } from '../constants';
import { Maybe, Network, OrderSource, ProviderState } from '../types';
import { assetBuyerFactory } from './asset_buyer_factory'; import { assetBuyerFactory } from './asset_buyer_factory';
import { providerFactory } from './provider_factory'; import { providerFactory } from './provider_factory';
const LOADING_ACCOUNT: AccountNotReady = {
state: AccountState.Loading,
};
const NO_ACCOUNT: AccountNotReady = {
state: AccountState.None,
};
export const providerStateFactory = { export const providerStateFactory = {
getInitialProviderState: (orderSource: OrderSource, network: Network, provider?: Provider): ProviderState => { getInitialProviderState: (orderSource: OrderSource, network: Network, provider?: Provider): ProviderState => {
if (!_.isUndefined(provider)) { if (!_.isUndefined(provider)) {

View File

@ -7,7 +7,8 @@
"Improve schemas by enforcing that amounts that must be whole numbers (e.g Order asset amounts) no longer allow decimal amounts", "Improve schemas by enforcing that amounts that must be whole numbers (e.g Order asset amounts) no longer allow decimal amounts",
"pr": 1173 "pr": 1173
} }
] ],
"timestamp": 1541740904
}, },
{ {
"version": "2.0.0", "version": "2.0.0",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.0.1 - _November 9, 2018_
* Improve schemas by enforcing that amounts that must be whole numbers (e.g Order asset amounts) no longer allow decimal amounts (#1173)
## v2.0.0 - _October 18, 2018_ ## v2.0.0 - _October 18, 2018_
* Convert all schemas to JSON files so that they can be used with `json-schema` implemenations in other programming languages. (#1145) * Convert all schemas to JSON files so that they can be used with `json-schema` implemenations in other programming languages. (#1145)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/json-schemas", "name": "@0x/json-schemas",
"version": "2.0.0", "version": "2.0.1",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -39,14 +39,14 @@
}, },
"homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md", "homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md",
"dependencies": { "dependencies": {
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@types/node": "*", "@types/node": "*",
"jsonschema": "^1.2.0", "jsonschema": "^1.2.0",
"lodash.values": "^4.3.0" "lodash.values": "^4.3.0"
}, },
"devDependencies": { "devDependencies": {
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@types/lodash.foreach": "^4.5.3", "@types/lodash.foreach": "^4.5.3",
"@types/lodash.values": "^4.3.3", "@types/lodash.values": "^4.3.3",
"@types/mocha": "^2.2.42", "@types/mocha": "^2.2.42",

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/metacoin", "name": "@0x/metacoin",
"version": "0.0.24", "version": "0.0.25",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -29,25 +29,25 @@
"author": "", "author": "",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@0x/abi-gen": "^1.0.14", "@0x/abi-gen": "^1.0.15",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/sol-cov": "^2.1.8", "@0x/sol-cov": "^2.1.9",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@types/mocha": "^5.2.2", "@types/mocha": "^5.2.2",
"copyfiles": "^2.0.0", "copyfiles": "^2.0.0",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"run-s": "^0.0.0" "run-s": "^0.0.0"
}, },
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/sol-compiler": "^1.1.8", "@0x/sol-compiler": "^1.1.9",
"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",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "2.0.1",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "2.0.0", "version": "2.0.0",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.0.1 - _November 9, 2018_
* Dependencies updated
## v2.0.0 - _October 18, 2018_ ## v2.0.0 - _October 18, 2018_
* Contract artifacts have been moved to the new @0xproject/contract-artifacts package. v1 migrations have been removed. `runMigrationsAsync` returns the addresses of the contracts that were deployed. (#1105) * Contract artifacts have been moved to the new @0xproject/contract-artifacts package. v1 migrations have been removed. `runMigrationsAsync` returns the addresses of the contracts that were deployed. (#1105)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/migrations", "name": "@0x/migrations",
"version": "2.0.0", "version": "2.0.1",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -17,9 +17,9 @@
}, },
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/tslint-config": "^1.0.9", "@0x/tslint-config": "^1.0.10",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@types/yargs": "^10.0.0", "@types/yargs": "^10.0.0",
"make-promises-safe": "^1.1.0", "make-promises-safe": "^1.1.0",
"npm-run-all": "^4.1.2", "npm-run-all": "^4.1.2",
@ -29,18 +29,18 @@
"yargs": "^10.0.3" "yargs": "^10.0.3"
}, },
"dependencies": { "dependencies": {
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/contract-addresses": "^1.0.1", "@0x/contract-addresses": "^1.1.0",
"@0x/contract-artifacts": "^1.0.1", "@0x/contract-artifacts": "^1.1.0",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/sol-compiler": "^1.1.8", "@0x/sol-compiler": "^1.1.9",
"@0x/subproviders": "^2.1.0", "@0x/subproviders": "^2.1.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-app-eth": "^4.3.0",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5" "lodash": "^4.17.5"
}, },

View File

@ -1,7 +1,7 @@
{ {
"private": true, "private": true,
"name": "@0x/monorepo-scripts", "name": "@0x/monorepo-scripts",
"version": "1.0.12", "version": "1.0.13",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },

View File

@ -1,4 +1,13 @@
[ [
{
"version": "2.0.1",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "2.0.0", "version": "2.0.0",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.0.1 - _November 9, 2018_
* Dependencies updated
## v2.0.0 - _October 18, 2018_ ## v2.0.0 - _October 18, 2018_
* Added `ecSignOrderAsync` to first sign an order using `eth_signTypedData` and fallback to `eth_sign`. (#1102) * Added `ecSignOrderAsync` to first sign an order using `eth_signTypedData` and fallback to `eth_sign`. (#1102)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/order-utils", "name": "@0x/order-utils",
"version": "2.0.0", "version": "2.0.1",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -35,8 +35,8 @@
}, },
"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.13", "@0x/dev-utils": "^1.0.14",
"@0x/tslint-config": "^1.0.9", "@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",
"chai": "^4.0.1", "chai": "^4.0.1",
@ -53,18 +53,18 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/contract-artifacts": "^1.0.1", "@0x/contract-artifacts": "^1.1.0",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@types/node": "*", "@types/node": "*",
"bn.js": "^4.11.8", "bn.js": "^4.11.8",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethereumjs-abi": "0.6.5", "ethereumjs-abi": "0.6.5",
"ethereumjs-util": "^5.1.1", "ethereumjs-util": "^5.1.1",
"ethers": "~4.0.4", "ethers": "~4.0.4",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "2.2.1",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "2.2.0", "version": "2.2.0",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.2.1 - _November 9, 2018_
* Dependencies updated
## v2.2.0 - _October 18, 2018_ ## v2.2.0 - _October 18, 2018_
* Added getStats function and returns a Stats object (#1118) * Added getStats function and returns a Stats object (#1118)

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/order-watcher", "name": "@0x/order-watcher",
"version": "2.2.0", "version": "2.2.1",
"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,9 +33,9 @@
"node": ">=6.0.0" "node": ">=6.0.0"
}, },
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/migrations": "^2.0.0", "@0x/migrations": "^2.0.1",
"@0x/tslint-config": "^1.0.9", "@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",
"@types/mocha": "^2.2.42", "@types/mocha": "^2.2.42",
@ -57,21 +57,21 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/abi-gen-wrappers": "^1.0.1", "@0x/abi-gen-wrappers": "^1.0.2",
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/base-contract": "^3.0.2", "@0x/base-contract": "^3.0.3",
"@0x/contract-addresses": "^1.0.1", "@0x/contract-addresses": "^1.1.0",
"@0x/contract-artifacts": "^1.0.1", "@0x/contract-artifacts": "^1.1.0",
"@0x/contract-wrappers": "^3.0.0", "@0x/contract-wrappers": "^3.0.1",
"@0x/fill-scenarios": "^1.0.8", "@0x/fill-scenarios": "^1.0.9",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/order-utils": "^2.0.0", "@0x/order-utils": "^2.0.1",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"bintrees": "^1.0.2", "bintrees": "^1.0.2",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethereumjs-blockstream": "6.0.0", "ethereumjs-blockstream": "6.0.0",
"ethers": "~4.0.4", "ethers": "~4.0.4",
"lodash": "^4.17.5" "lodash": "^4.17.5"

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.15",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "1.0.14", "version": "1.0.14",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.15 - _November 9, 2018_
* Dependencies updated
## v1.0.14 - _October 18, 2018_ ## v1.0.14 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/react-docs", "name": "@0x/react-docs",
"version": "1.0.14", "version": "1.0.15",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -24,8 +24,8 @@
"url": "https://github.com/0xProject/0x-monorepo.git" "url": "https://github.com/0xProject/0x-monorepo.git"
}, },
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/tslint-config": "^1.0.9", "@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",
"make-promises-safe": "^1.1.0", "make-promises-safe": "^1.1.0",
@ -34,9 +34,9 @@
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/react-shared": "^1.0.17", "@0x/react-shared": "^1.0.18",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",
"@types/material-ui": "^0.20.0", "@types/material-ui": "^0.20.0",
"@types/node": "*", "@types/node": "*",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.0.18",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "1.0.17", "version": "1.0.17",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.0.18 - _November 9, 2018_
* Dependencies updated
## v1.0.17 - _October 18, 2018_ ## v1.0.17 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/react-shared", "name": "@0x/react-shared",
"version": "1.0.17", "version": "1.0.18",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -25,15 +25,15 @@
"url": "https://github.com/0xProject/0x-monorepo.git" "url": "https://github.com/0xProject/0x-monorepo.git"
}, },
"devDependencies": { "devDependencies": {
"@0x/dev-utils": "^1.0.13", "@0x/dev-utils": "^1.0.14",
"@0x/tslint-config": "^1.0.9", "@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",
"tslint": "^5.9.1", "tslint": "^5.9.1",
"typescript": "3.0.1" "typescript": "3.0.1"
}, },
"dependencies": { "dependencies": {
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@material-ui/core": "^3.0.1", "@material-ui/core": "^3.0.1",
"@types/is-mobile": "0.3.0", "@types/is-mobile": "0.3.0",
"@types/lodash": "4.14.104", "@types/lodash": "4.14.104",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "1.1.9",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"timestamp": 1539871071, "timestamp": 1539871071,
"version": "1.1.8", "version": "1.1.8",

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v1.1.9 - _November 9, 2018_
* Dependencies updated
## v1.1.8 - _October 18, 2018_ ## v1.1.8 - _October 18, 2018_
* Dependencies updated * Dependencies updated

View File

@ -1,6 +1,6 @@
{ {
"name": "@0x/sol-compiler", "name": "@0x/sol-compiler",
"version": "1.1.8", "version": "1.1.9",
"engines": { "engines": {
"node": ">=6.12" "node": ">=6.12"
}, },
@ -42,8 +42,8 @@
}, },
"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.13", "@0x/dev-utils": "^1.0.14",
"@0x/tslint-config": "^1.0.9", "@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",
"@types/semver": "^5.5.0", "@types/semver": "^5.5.0",
@ -65,16 +65,16 @@
"zeppelin-solidity": "1.8.0" "zeppelin-solidity": "1.8.0"
}, },
"dependencies": { "dependencies": {
"@0x/assert": "^1.0.14", "@0x/assert": "^1.0.15",
"@0x/json-schemas": "^2.0.0", "@0x/json-schemas": "^2.0.1",
"@0x/sol-resolver": "^1.0.15", "@0x/sol-resolver": "^1.0.16",
"@0x/types": "^1.2.0", "@0x/types": "^1.2.1",
"@0x/typescript-typings": "^3.0.3", "@0x/typescript-typings": "^3.0.4",
"@0x/utils": "^2.0.3", "@0x/utils": "^2.0.4",
"@0x/web3-wrapper": "^3.1.0", "@0x/web3-wrapper": "^3.1.1",
"@types/yargs": "^11.0.0", "@types/yargs": "^11.0.0",
"chalk": "^2.3.0", "chalk": "^2.3.0",
"ethereum-types": "^1.1.1", "ethereum-types": "^1.1.2",
"ethereumjs-util": "^5.1.1", "ethereumjs-util": "^5.1.1",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",

View File

@ -1,4 +1,13 @@
[ [
{
"version": "2.1.9",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1541740904
},
{ {
"version": "2.1.8", "version": "2.1.8",
"changes": [ "changes": [

View File

@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG CHANGELOG
## v2.1.9 - _November 9, 2018_
* Dependencies updated
## v2.1.8 - _October 18, 2018_ ## v2.1.8 - _October 18, 2018_
* Make @types/solidity-parser-antlr a 'dependency' so it's available to users of the library (#1105) * Make @types/solidity-parser-antlr a 'dependency' so it's available to users of the library (#1105)

Some files were not shown because too many files have changed in this diff Show More