diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2019-02-07 18:15:37 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2019-02-07 18:15:37 +0800 |
commit | de234280690571dc3441c1a06bb49049df3289dc (patch) | |
tree | d6792c9172245ee836e31a2588f3ae91dd53a012 /packages | |
parent | 4d75681357b04ae77637ee62645b662796a3b15b (diff) | |
parent | 2a344e26cc51fa41a9df3535b625b8609dfc167e (diff) | |
download | dexon-0x-contracts-de234280690571dc3441c1a06bb49049df3289dc.tar.gz dexon-0x-contracts-de234280690571dc3441c1a06bb49049df3289dc.tar.zst dexon-0x-contracts-de234280690571dc3441c1a06bb49049df3289dc.zip |
Merge development
Diffstat (limited to 'packages')
145 files changed, 2000 insertions, 589 deletions
diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index 20778f8bb..8f13049e9 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "4.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "4.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "4.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547747677, diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index b0279f097..2ea296ea5 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v4.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v3.0.3 - _January 17, 2019_ * Dependencies updated diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 64054d288..0dce40010 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,6 +1,6 @@ { "name": "0x.js", - "version": "3.0.3", + "version": "4.0.2", "engines": { "node": ">=6.12" }, @@ -24,7 +24,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "clean": "shx rm -rf _bundles lib test_temp src/generated_contract_wrappers generated_docs", - "build:umd:prod": "NODE_ENV=production webpack", + "build:umd:prod": "NODE_ENV=production node --max_old_space_size=8192 ../../node_modules/.bin/webpack --mode production", "build:commonjs": "tsc -b", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES" }, @@ -42,11 +42,11 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/contract-addresses": "^2.2.0", - "@0x/dev-utils": "^1.0.24", - "@0x/migrations": "^2.4.0", - "@0x/tslint-config": "^2.0.2", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/contract-addresses": "^2.2.1", + "@0x/dev-utils": "^2.0.1", + "@0x/migrations": "^3.0.2", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", @@ -72,20 +72,20 @@ "webpack": "^4.20.2" }, "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/base-contract": "^3.0.13", - "@0x/contract-wrappers": "^5.0.1", - "@0x/order-utils": "^3.1.2", - "@0x/order-watcher": "^2.4.3", - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/assert": "^2.0.1", + "@0x/base-contract": "^4.0.1", + "@0x/contract-wrappers": "^7.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/order-watcher": "^3.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/web3-provider-engine": "^14.0.0", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "web3-provider-engine": "14.0.6" }, "publishConfig": { diff --git a/packages/abi-gen-templates/CHANGELOG.json b/packages/abi-gen-templates/CHANGELOG.json index 7d444d0ca..94afa8db1 100644 --- a/packages/abi-gen-templates/CHANGELOG.json +++ b/packages/abi-gen-templates/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/abi-gen-templates/CHANGELOG.md b/packages/abi-gen-templates/CHANGELOG.md index 5dd6d03e0..cdaee6264 100644 --- a/packages/abi-gen-templates/CHANGELOG.md +++ b/packages/abi-gen-templates/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/abi-gen-templates/package.json b/packages/abi-gen-templates/package.json index af66aeba0..dfa9248c7 100644 --- a/packages/abi-gen-templates/package.json +++ b/packages/abi-gen-templates/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen-templates", - "version": "1.0.2", + "version": "2.0.0", "engines": { "node": ">=6.12" }, diff --git a/packages/abi-gen-wrappers/CHANGELOG.json b/packages/abi-gen-wrappers/CHANGELOG.json index c604302b5..f714100ce 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.json +++ b/packages/abi-gen-wrappers/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "version": "2.2.0", diff --git a/packages/abi-gen-wrappers/CHANGELOG.md b/packages/abi-gen-wrappers/CHANGELOG.md index 294f39439..75ac81d45 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.md +++ b/packages/abi-gen-wrappers/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v2.2.0 - _January 15, 2019_ * Added `MultiAssetProxy` (#1503) diff --git a/packages/abi-gen-wrappers/package.json b/packages/abi-gen-wrappers/package.json index 842ac024a..ce6183169 100644 --- a/packages/abi-gen-wrappers/package.json +++ b/packages/abi-gen-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen-wrappers", - "version": "2.2.0", + "version": "3.0.1", "engines": { "node": ">=6.12" }, @@ -30,19 +30,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md", "devDependencies": { - "@0x/abi-gen": "^1.0.22", - "@0x/abi-gen-templates": "^1.0.2", - "@0x/tslint-config": "^2.0.2", - "@0x/types": "^1.5.2", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "ethereum-types": "^1.1.6", + "@0x/abi-gen": "^2.0.1", + "@0x/abi-gen-templates": "^2.0.0", + "@0x/tslint-config": "^3.0.0", + "@0x/types": "^2.0.1", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "shx": "^0.2.2" }, "dependencies": { - "@0x/base-contract": "^3.0.13" + "@0x/base-contract": "^4.0.1" }, "publishConfig": { "access": "public" diff --git a/packages/abi-gen/CHANGELOG.json b/packages/abi-gen/CHANGELOG.json index 173617b65..3e6eb9038 100644 --- a/packages/abi-gen/CHANGELOG.json +++ b/packages/abi-gen/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/abi-gen/CHANGELOG.md b/packages/abi-gen/CHANGELOG.md index af74218b8..17085c515 100644 --- a/packages/abi-gen/CHANGELOG.md +++ b/packages/abi-gen/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.22 - _January 15, 2019_ * Dependencies updated diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index 7f968893c..3856f29b9 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen", - "version": "1.0.22", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -31,13 +31,13 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "dependencies": { - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", "chalk": "^2.3.0", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "glob": "^7.1.2", "handlebars": "^4.0.11", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "mkdirp": "^0.5.1", "sleep": "^5.1.1", "tmp": "^0.0.33", @@ -45,18 +45,18 @@ "yargs": "^10.0.3" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/glob": "5.0.35", "@types/handlebars": "^4.0.36", - "@types/mkdirp": "^0.5.1", + "@types/mkdirp": "^0.5.2", "@types/node": "*", "@types/sleep": "^0.0.7", "@types/tmp": "^0.0.33", - "@types/yargs": "^10.0.0", - "chai": "^4.1.2", + "@types/yargs": "^11.0.0", + "chai": "^4.0.1", "dirty-chai": "^2.0.1", "make-promises-safe": "^1.1.0", - "mocha": "^5.2.0", + "mocha": "^4.1.0", "npm-run-all": "^4.1.2", "shx": "^0.2.2", "tslint": "5.11.0", diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index 278b7dfa1..8ca292485 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/assert/CHANGELOG.md b/packages/assert/CHANGELOG.md index 5a4af165a..0050d0105 100644 --- a/packages/assert/CHANGELOG.md +++ b/packages/assert/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.23 - _January 15, 2019_ * Dependencies updated diff --git a/packages/assert/package.json b/packages/assert/package.json index 38481d6f0..6b87d67f2 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0x/assert", - "version": "1.0.23", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/valid-url": "^1.0.2", @@ -44,10 +44,10 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/json-schemas": "^2.1.7", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "lodash": "^4.17.5", + "@0x/json-schemas": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "lodash": "^4.17.11", "valid-url": "^1.0.9" }, "publishConfig": { diff --git a/packages/asset-buyer/CHANGELOG.json b/packages/asset-buyer/CHANGELOG.json index 2de603de0..2b567bbb2 100644 --- a/packages/asset-buyer/CHANGELOG.json +++ b/packages/asset-buyer/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "5.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "5.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "5.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "version": "4.1.0", diff --git a/packages/asset-buyer/CHANGELOG.md b/packages/asset-buyer/CHANGELOG.md index f2a3d2236..d21d89b8e 100644 --- a/packages/asset-buyer/CHANGELOG.md +++ b/packages/asset-buyer/CHANGELOG.md @@ -5,6 +5,22 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v5.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v5.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v5.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + +## v4.1.0 - _Invalid date_ + + * Adds new public method getLiquidityForAssetDataAsync, and exposes getOrdersAndFillableAmountsAsync as public method (#1512) + ## v4.0.2 - _January 17, 2019_ * Dependencies updated diff --git a/packages/asset-buyer/package.json b/packages/asset-buyer/package.json index 0f79ac06a..ccaaf5d87 100644 --- a/packages/asset-buyer/package.json +++ b/packages/asset-buyer/package.json @@ -1,6 +1,6 @@ { "name": "@0x/asset-buyer", - "version": "4.0.2", + "version": "5.0.2", "engines": { "node": ">=6.12" }, @@ -36,22 +36,22 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md", "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/connect": "^3.0.13", - "@0x/contract-wrappers": "^5.0.1", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "ethereum-types": "^1.1.6", - "lodash": "^4.17.5" + "@0x/assert": "^2.0.1", + "@0x/connect": "^4.0.2", + "@0x/contract-wrappers": "^7.0.1", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "ethereum-types": "^2.0.0", + "lodash": "^4.17.11" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", - "@types/lodash": "^4.14.116", + "@0x/tslint-config": "^3.0.0", + "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", "chai": "^4.0.1", diff --git a/packages/base-contract/CHANGELOG.json b/packages/base-contract/CHANGELOG.json index 63b1fe8f7..d3333dff6 100644 --- a/packages/base-contract/CHANGELOG.json +++ b/packages/base-contract/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "4.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "4.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/base-contract/CHANGELOG.md b/packages/base-contract/CHANGELOG.md index 975a56fd4..ae705dab7 100644 --- a/packages/base-contract/CHANGELOG.md +++ b/packages/base-contract/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v3.0.13 - _January 15, 2019_ * Dependencies updated diff --git a/packages/base-contract/package.json b/packages/base-contract/package.json index db09b16a1..ac7b3fb87 100644 --- a/packages/base-contract/package.json +++ b/packages/base-contract/package.json @@ -1,6 +1,6 @@ { "name": "@0x/base-contract", - "version": "3.0.13", + "version": "4.0.1", "engines": { "node": ">=6.12" }, @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "chai": "^4.0.1", "make-promises-safe": "^1.1.0", @@ -40,12 +40,12 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "ethereum-types": "^1.1.6", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/connect/CHANGELOG.json b/packages/connect/CHANGELOG.json index c2f16d96a..feeb057d5 100644 --- a/packages/connect/CHANGELOG.json +++ b/packages/connect/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "4.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "4.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "4.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/connect/CHANGELOG.md b/packages/connect/CHANGELOG.md index 7556aae72..af1b088c9 100644 --- a/packages/connect/CHANGELOG.md +++ b/packages/connect/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v4.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v3.0.13 - _January 15, 2019_ * Dependencies updated diff --git a/packages/connect/package.json b/packages/connect/package.json index 15a4c12f1..10c694ca9 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,6 +1,6 @@ { "name": "@0x/connect", - "version": "3.0.13", + "version": "4.0.2", "engines": { "node": ">=6.12" }, @@ -44,24 +44,24 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "lodash": "^4.17.5", - "query-string": "^5.0.1", + "@0x/assert": "^2.0.1", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "lodash": "^4.17.11", + "query-string": "^6.0.0", "sinon": "^4.0.0", "uuid": "^3.3.2", "websocket": "^1.0.25" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/fetch-mock": "^6.0.3", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", - "@types/query-string": "^5.0.1", + "@types/query-string": "^5.1.0", "@types/sinon": "^2.2.2", "@types/uuid": "^3.4.3", "@types/websocket": "^0.0.39", diff --git a/packages/contract-addresses/CHANGELOG.json b/packages/contract-addresses/CHANGELOG.json index 8800f2f73..c420df69d 100644 --- a/packages/contract-addresses/CHANGELOG.json +++ b/packages/contract-addresses/CHANGELOG.json @@ -1,5 +1,14 @@ [ { + "timestamp": 1549373905, + "version": "2.2.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.2.0", "changes": [ { diff --git a/packages/contract-addresses/CHANGELOG.md b/packages/contract-addresses/CHANGELOG.md index 1f3d187a4..deab2b398 100644 --- a/packages/contract-addresses/CHANGELOG.md +++ b/packages/contract-addresses/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.1 - _February 5, 2019_ + + * Dependencies updated + ## v2.2.0 - _January 15, 2019_ * Added migration for `MultiAssetProxy` contract (#1503) diff --git a/packages/contract-addresses/package.json b/packages/contract-addresses/package.json index 260322081..84cc052c9 100644 --- a/packages/contract-addresses/package.json +++ b/packages/contract-addresses/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-addresses", - "version": "2.2.0", + "version": "2.2.1", "engines": { "node": ">=6.12" }, @@ -29,7 +29,7 @@ "typescript": "3.0.1" }, "dependencies": { - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index 9cea720c8..803863da3 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,12 +1,30 @@ [ { - "version": "6.0.1", + "timestamp": 1549504360, + "version": "7.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "version": "7.0.0", "changes": [ { "note": "Fix OrderValidatorWrapper constructor to use the correct address", "pr": 1568 + }, + { + "note": "Use new `ZeroExTransaction` interface", + "pr": 1576 + }, + { + "note": "Rename `getTransactionHex` to `getTransactionHashHex`", + "pr": 1576 } - ] + ], + "timestamp": 1549452781 }, { "version": "6.0.0", diff --git a/packages/contract-wrappers/CHANGELOG.md b/packages/contract-wrappers/CHANGELOG.md index 28cbf2ec6..fee13b218 100644 --- a/packages/contract-wrappers/CHANGELOG.md +++ b/packages/contract-wrappers/CHANGELOG.md @@ -5,6 +5,20 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v7.0.1 - _February 7, 2019_ + + * Dependencies updated + +## v7.0.0 - _February 6, 2019_ + + * Fix OrderValidatorWrapper constructor to use the correct address (#1568) + * Use new `ZeroExTransaction` interface (#1576) + * Rename `getTransactionHex` to `getTransactionHashHex` (#1576) + +## v6.0.0 - _Invalid date_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v5.0.1 - _January 17, 2019_ * Dependencies updated diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index cc7dc1a3e..9fcf2a62d 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-wrappers", - "version": "5.0.1", + "version": "7.0.1", "description": "Smart TS wrappers for 0x smart contracts", "keywords": [ "0xproject", @@ -37,15 +37,15 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/migrations": "^2.4.0", - "@0x/subproviders": "^2.1.11", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/migrations": "^3.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "*", "@types/sinon": "^2.2.2", - "@types/uuid": "^3.4.2", + "@types/uuid": "^3.4.3", "@types/web3-provider-engine": "^14.0.0", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", @@ -65,26 +65,26 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/assert": "^1.0.23", - "@0x/contract-addresses": "^2.2.0", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/assert": "^2.0.1", + "@0x/contract-addresses": "^2.2.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/contracts-test-utils": "^2.0.1", - "@0x/fill-scenarios": "^1.1.2", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "ethereum-types": "^1.1.6", + "@0x/contracts-test-utils": "^3.0.2", + "@0x/fill-scenarios": "^2.0.2", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "ethereum-types": "^2.0.0", "ethereumjs-abi": "0.6.5", "ethereumjs-blockstream": "6.0.0", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", "js-sha3": "^0.7.0", - "lodash": "^4.17.5", - "uuid": "^3.1.0" + "lodash": "^4.17.11", + "uuid": "^3.3.2" }, "publishConfig": { "access": "public" diff --git a/packages/contract-wrappers/src/utils/transaction_encoder.ts b/packages/contract-wrappers/src/utils/transaction_encoder.ts index 0cf08a8fe..307487a9b 100644 --- a/packages/contract-wrappers/src/utils/transaction_encoder.ts +++ b/packages/contract-wrappers/src/utils/transaction_encoder.ts @@ -1,9 +1,9 @@ import { ExchangeContract } from '@0x/abi-gen-wrappers'; import { schemas } from '@0x/json-schemas'; -import { eip712Utils } from '@0x/order-utils'; +import { transactionHashUtils } from '@0x/order-utils'; import { Order, SignedOrder } from '@0x/types'; -import { BigNumber, signTypedDataUtils } from '@0x/utils'; +import { BigNumber } from '@0x/utils'; import _ = require('lodash'); import { assert } from './assert'; @@ -19,23 +19,22 @@ export class TransactionEncoder { this._exchangeInstance = exchangeInstance; } /** - * Encodes the transaction data for use with the Exchange contract. + * Hashes the transaction data for use with the Exchange contract. * @param data The ABI Encoded 0x Exchange method. I.e fillOrder * @param salt A random value to provide uniqueness and prevent replay attacks. * @param signerAddress The address which will sign this transaction. - * @return An unsigned hex encoded transaction for use in 0x Exchange executeTransaction. + * @return The hash of the 0x transaction. */ - public getTransactionHex(data: string, salt: BigNumber, signerAddress: string): string { + public getTransactionHashHex(data: string, salt: BigNumber, signerAddress: string): string { const exchangeAddress = this._getExchangeContract().address; - const executeTransactionData = { + const transaction = { + verifyingContractAddress: exchangeAddress, salt, signerAddress, data, }; - const typedData = eip712Utils.createZeroExTransactionTypedData(executeTransactionData, exchangeAddress); - const eip712MessageBuffer = signTypedDataUtils.generateTypedDataHash(typedData); - const messageHex = `0x${eip712MessageBuffer.toString('hex')}`; - return messageHex; + const hashHex = transactionHashUtils.getTransactionHashHex(transaction); + return hashHex; } /** * Encodes a fillOrder transaction. diff --git a/packages/contract-wrappers/test/exchange_wrapper_test.ts b/packages/contract-wrappers/test/exchange_wrapper_test.ts index a1d60dc6e..acd30495b 100644 --- a/packages/contract-wrappers/test/exchange_wrapper_test.ts +++ b/packages/contract-wrappers/test/exchange_wrapper_test.ts @@ -1,6 +1,6 @@ import { BlockchainLifecycle, callbackErrorReporter } from '@0x/dev-utils'; import { FillScenarios } from '@0x/fill-scenarios'; -import { assetDataUtils, orderHashUtils } from '@0x/order-utils'; +import { assetDataUtils, orderHashUtils, signatureUtils } from '@0x/order-utils'; import { DoneCallback, RevertReason, SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; @@ -368,6 +368,23 @@ describe('ExchangeWrapper', () => { await web3Wrapper.awaitTransactionSuccessAsync(txHash, constants.AWAIT_TRANSACTION_MINED_MS); isPreSigned = await contractWrappers.exchange.isPreSignedAsync(hash, signerAddress); expect(isPreSigned).to.be.true(); + + const preSignedSignature = '0x06'; + const isValidSignature = await contractWrappers.exchange.isValidSignatureAsync( + hash, + signerAddress, + preSignedSignature, + ); + expect(isValidSignature).to.be.true(); + + // Test our TS implementation of signature validation + const isValidSignatureInTs = await signatureUtils.isValidSignatureAsync( + provider, + hash, + preSignedSignature, + signerAddress, + ); + expect(isValidSignatureInTs).to.be.true(); }); }); describe('#getVersionAsync', () => { diff --git a/packages/contract-wrappers/test/transaction_encoder_test.ts b/packages/contract-wrappers/test/transaction_encoder_test.ts index ef9eb2cf3..a996b9f08 100644 --- a/packages/contract-wrappers/test/transaction_encoder_test.ts +++ b/packages/contract-wrappers/test/transaction_encoder_test.ts @@ -83,8 +83,8 @@ describe('TransactionEncoder', () => { signerAddress: string = takerAddress, ): Promise<void> => { const salt = generatePseudoRandomSalt(); - const encodedTransaction = encoder.getTransactionHex(data, salt, signerAddress); - const signature = await signatureUtils.ecSignHashAsync(provider, encodedTransaction, signerAddress); + const transactionHash = encoder.getTransactionHashHex(data, salt, signerAddress); + const signature = await signatureUtils.ecSignHashAsync(provider, transactionHash, signerAddress); txHash = await contractWrappers.exchange.executeTransactionAsync( salt, signerAddress, diff --git a/packages/contracts-gen/package.json b/packages/contracts-gen/package.json index 8526feabc..9f9f14c4a 100644 --- a/packages/contracts-gen/package.json +++ b/packages/contracts-gen/package.json @@ -26,7 +26,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts-gen/README.md", "dependencies": { - "@0x/types": "^1.5.2", + "@0x/types": "^2.0.1", "@0x/utils": "^3.0.1", "@0x/typescript-typings": "^3.0.8", "ethereum-types": "^1.1.6", diff --git a/packages/dev-tools-pages/package.json b/packages/dev-tools-pages/package.json index feab72856..7006e6ca9 100644 --- a/packages/dev-tools-pages/package.json +++ b/packages/dev-tools-pages/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-tools-pages", - "version": "0.0.14", + "version": "0.0.17", "engines": { "node": ">=6.12" }, @@ -26,7 +26,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@0x/react-shared": "^1.1.2", + "@0x/react-shared": "^2.0.2", "basscss": "^8.0.3", "bowser": "^1.9.3", "highlight.js": "^9.13.1", @@ -46,7 +46,7 @@ "@types/node": "*", "@types/react": "^16.4.2", "@types/react-dom": "^16.0.7", - "@types/react-loadable": "^5.4.1", + "@types/react-loadable": "^5.4.2", "@types/react-lottie": "^1.2.0", "@types/react-router-dom": "^4.0.4", "@types/react-tabs": "^2.3.0", diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index d05e41d2d..1f0ec9b93 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 958fded86..652fc6e96 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.24 - _January 15, 2019_ * Dependencies updated diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 4ab1d6439..183e20fc1 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-utils", - "version": "1.0.24", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/dev-utils/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "make-promises-safe": "^1.1.0", @@ -41,15 +41,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/web3-provider-engine": "^14.0.0", "chai": "^4.0.1", - "ethereum-types": "^1.1.6", - "lodash": "^4.17.5" + "ethereum-types": "^2.0.0", + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/ethereum-types/CHANGELOG.json b/packages/ethereum-types/CHANGELOG.json index c106d43a9..4a75b4c9a 100644 --- a/packages/ethereum-types/CHANGELOG.json +++ b/packages/ethereum-types/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/ethereum-types/CHANGELOG.md b/packages/ethereum-types/CHANGELOG.md index c1857495d..45a82478e 100644 --- a/packages/ethereum-types/CHANGELOG.md +++ b/packages/ethereum-types/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.1.6 - _January 15, 2019_ * Dependencies updated diff --git a/packages/ethereum-types/package.json b/packages/ethereum-types/package.json index bd3748058..5f3ea2189 100644 --- a/packages/ethereum-types/package.json +++ b/packages/ethereum-types/package.json @@ -1,6 +1,6 @@ { "name": "ethereum-types", - "version": "1.1.6", + "version": "2.0.0", "engines": { "node": ">=6.12" }, @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/ethereum-types/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", diff --git a/packages/fill-scenarios/CHANGELOG.json b/packages/fill-scenarios/CHANGELOG.json index beffdd097..faa702fcf 100644 --- a/packages/fill-scenarios/CHANGELOG.json +++ b/packages/fill-scenarios/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/fill-scenarios/CHANGELOG.md b/packages/fill-scenarios/CHANGELOG.md index 7df8b5ab3..66966d3ec 100644 --- a/packages/fill-scenarios/CHANGELOG.md +++ b/packages/fill-scenarios/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.1.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/fill-scenarios/package.json b/packages/fill-scenarios/package.json index d882aba76..8ec4a1111 100644 --- a/packages/fill-scenarios/package.json +++ b/packages/fill-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@0x/fill-scenarios", - "version": "1.1.2", + "version": "2.0.2", "description": "0x order fill scenario generator", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/fill-scenarios/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/lodash": "4.14.104", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", @@ -28,17 +28,17 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/base-contract": "^3.0.13", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/base-contract": "^4.0.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/order-utils": "^3.1.2", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "ethereum-types": "^1.1.6", + "@0x/order-utils": "^6.0.0", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/instant/package.json b/packages/instant/package.json index f7e15a3e0..07e817324 100644 --- a/packages/instant/package.json +++ b/packages/instant/package.json @@ -1,6 +1,6 @@ { "name": "@0x/instant", - "version": "1.0.8", + "version": "1.0.11", "engines": { "node": ">=6.12" }, @@ -42,50 +42,50 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md", "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/asset-buyer": "^4.0.2", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/assert": "^2.0.1", + "@0x/asset-buyer": "^5.0.2", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "babel-runtime": "^6.26.0", "bowser": "^1.9.4", "copy-to-clipboard": "^3.0.8", - "ethereum-types": "^1.1.6", - "lodash": "^4.17.5", - "polished": "^2.2.0", + "ethereum-types": "^2.0.0", + "lodash": "^4.17.11", + "polished": "^1.9.2", "react": "^16.5.2", "react-dom": "^16.5.2", "react-redux": "^5.0.7", "redux": "^4.0.0", "redux-devtools-extension": "^2.13.5", "rollbar": "^2.5.0", - "styled-components": "^4.0.2", + "styled-components": "^4.1.1", "ts-optchain": "^0.1.1" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@static/discharge": "https://github.com/0xProject/discharge.git", "@types/enzyme": "^3.1.14", "@types/enzyme-adapter-react-16": "^1.0.3", "@types/jest": "^23.3.5", - "@types/lodash": "^4.14.116", + "@types/lodash": "4.14.104", "@types/node": "*", - "@types/react": "^16.4.16", - "@types/react-dom": "^16.0.8", + "@types/react": "16.4.16", + "@types/react-dom": "16.0.6", "@types/react-redux": "^6.0.9", "@types/redux": "^3.6.0", "@types/styled-components": "4.0.1", "awesome-typescript-loader": "^5.2.1", "babel-loader": "^7.1.5", - "babel-preset-env": "^1.7.0", - "babel-plugin-transform-runtime": "^6.23.0", "babel-plugin-transform-es3-member-expression-literals": "^6.22.0", "babel-plugin-transform-es3-property-literals": "^6.22.0", "babel-plugin-transform-object-assign": "^6.22.0", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-preset-env": "^1.7.0", "dotenv-cli": "^1.4.0", "enzyme": "^3.6.0", "enzyme-adapter-react-16": "^1.5.0", @@ -103,7 +103,7 @@ "typedoc": "0.13.0", "typescript": "3.0.1", "webpack": "^4.20.2", - "webpack-cli": "^3.1.1", + "webpack-cli": "3.1.2", "webpack-dev-server": "^3.1.9" }, "publishConfig": { diff --git a/packages/json-schemas/CHANGELOG.json b/packages/json-schemas/CHANGELOG.json index 66de84299..0f8ad747c 100644 --- a/packages/json-schemas/CHANGELOG.json +++ b/packages/json-schemas/CHANGELOG.json @@ -1,12 +1,26 @@ [ { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 + }, + { + "note": "Add `verifyingContractAddress` to `zeroExTransactionSchema`", + "pr": 1576 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/json-schemas/CHANGELOG.md b/packages/json-schemas/CHANGELOG.md index 4e562d9e8..8d6ec83bf 100644 --- a/packages/json-schemas/CHANGELOG.md +++ b/packages/json-schemas/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Add `verifyingContractAddress` to `zeroExTransactionSchema` (#1576) + ## v2.1.7 - _January 15, 2019_ * Dependencies updated diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index cd515a747..1b6fdc116 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0x/json-schemas", - "version": "2.1.7", + "version": "3.0.1", "engines": { "node": ">=6.12" }, @@ -39,14 +39,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md", "dependencies": { - "@0x/typescript-typings": "^3.0.8", + "@0x/typescript-typings": "^4.0.0", "@types/node": "*", "jsonschema": "^1.2.0", "lodash.values": "^4.3.0" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", - "@0x/utils": "^3.0.1", + "@0x/tslint-config": "^3.0.0", + "@0x/utils": "^4.0.2", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/json-schemas/schemas/zero_ex_transaction_schema.json b/packages/json-schemas/schemas/zero_ex_transaction_schema.json index 0c714f14d..ffdf1f229 100644 --- a/packages/json-schemas/schemas/zero_ex_transaction_schema.json +++ b/packages/json-schemas/schemas/zero_ex_transaction_schema.json @@ -1,10 +1,11 @@ { "id": "/zeroExTransactionSchema", "properties": { + "verifyingContractAddress": { "$ref": "/addressSchema" }, "data": { "$ref": "/hexSchema" }, "signerAddress": { "$ref": "/addressSchema" }, "salt": { "$ref": "/wholeNumberSchema" } }, - "required": ["data", "salt", "signerAddress"], + "required": ["verifyingContractAddress", "data", "salt", "signerAddress"], "type": "object" } diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 3b082f075..24b387355 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -1,6 +1,6 @@ { "name": "@0x/metacoin", - "version": "0.0.36", + "version": "0.0.38", "engines": { "node": ">=6.12" }, @@ -29,28 +29,28 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@0x/abi-gen": "^1.0.22", - "@0x/abi-gen-templates": "^1.0.2", - "@0x/base-contract": "^3.0.13", - "@0x/sol-coverage": "^1.0.3", - "@0x/sol-profiler": "^1.0.3", - "@0x/sol-trace": "^1.0.3", - "@0x/subproviders": "^2.1.11", - "@0x/tslint-config": "^2.0.2", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", - "@types/mocha": "^5.2.2", + "@0x/abi-gen": "^2.0.1", + "@0x/abi-gen-templates": "^2.0.0", + "@0x/base-contract": "^4.0.1", + "@0x/sol-coverage": "^2.0.1", + "@0x/sol-profiler": "^2.0.2", + "@0x/sol-trace": "^2.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/tslint-config": "^3.0.0", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", + "@types/mocha": "^2.2.42", "copyfiles": "^2.0.0", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "run-s": "^0.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/sol-compiler": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/sol-compiler": "^3.0.1", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json index ffda41e10..167279609 100644 --- a/packages/migrations/CHANGELOG.json +++ b/packages/migrations/CHANGELOG.json @@ -1,5 +1,23 @@ [ { + "timestamp": 1549504360, + "version": "3.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { @@ -18,7 +36,8 @@ "note": "Convert `from` to lower case when passed in via cli", "pr": 1533 } - ] + ], + "timestamp": 1549373905 }, { "version": "2.4.0", diff --git a/packages/migrations/CHANGELOG.md b/packages/migrations/CHANGELOG.md index 6c9a84018..f759e4a91 100644 --- a/packages/migrations/CHANGELOG.md +++ b/packages/migrations/CHANGELOG.md @@ -5,6 +5,21 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Removed `owner` in Migrations (#1533) + * `txDefaults` parameter now requires the `from` field (#1533) + * Convert `from` to lower case when passed in via cli (#1533) + ## v2.4.0 - _January 15, 2019_ * Added migrations for `MultiAssetProxy` contract (#1503) diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 3ca4e8d6b..857136158 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -1,6 +1,6 @@ { "name": "@0x/migrations", - "version": "2.4.0", + "version": "3.0.2", "engines": { "node": ">=6.12" }, @@ -35,10 +35,10 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/tslint-config": "^2.0.2", - "@0x/types": "^1.5.2", - "@types/yargs": "^10.0.0", + "@0x/dev-utils": "^2.0.1", + "@0x/tslint-config": "^3.0.0", + "@0x/types": "^2.0.1", + "@types/yargs": "^11.0.0", "make-promises-safe": "^1.1.0", "npm-run-all": "^4.1.2", "shx": "^0.2.2", @@ -48,20 +48,20 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/base-contract": "^3.0.13", - "@0x/contract-addresses": "^2.2.0", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/base-contract": "^4.0.1", + "@0x/contract-addresses": "^2.2.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/order-utils": "^3.1.2", - "@0x/sol-compiler": "^2.0.2", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/order-utils": "^6.0.0", + "@0x/sol-compiler": "^3.0.1", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@ledgerhq/hw-app-eth": "^4.3.0", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "optionalDependencies": { "@ledgerhq/hw-transport-node-hid": "^4.3.0" diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index 6904a793b..24dca0004 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/monorepo-scripts", - "version": "1.0.19", + "version": "1.0.22", "engines": { "node": ">=6.12" }, @@ -32,13 +32,13 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/monorepo-scripts/README.md", "devDependencies": { - "@types/glob": "^5.0.33", + "@types/glob": "5.0.35", "@types/mkdirp": "^0.5.2", "@types/node": "*", "@types/opn": "^5.1.0", "@types/rimraf": "^2.0.2", "@types/semver": "5.5.0", - "@types/yargs": "^10.0.0", + "@types/yargs": "^11.0.0", "depcheck": "^0.6.9", "make-promises-safe": "^1.1.0", "npm-run-all": "^4.1.2", @@ -47,8 +47,8 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/utils": "^3.0.1", - "@0x/types": "^1.5.2", + "@0x/types": "^2.0.1", + "@0x/utils": "^4.0.2", "@lerna/batch-packages": "^3.0.0-beta.18", "@types/depcheck": "^0.6.0", "async-child-process": "^1.1.1", @@ -56,7 +56,7 @@ "es6-promisify": "^5.0.0", "glob": "^7.1.2", "isomorphic-fetch": "2.2.1", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "mkdirp": "^0.5.1", "moment": "2.21.0", "opn": "^5.3.0", diff --git a/packages/monorepo-scripts/src/deps_versions.ts b/packages/monorepo-scripts/src/deps_versions.ts index d15bb6b4d..fb57a26ef 100644 --- a/packages/monorepo-scripts/src/deps_versions.ts +++ b/packages/monorepo-scripts/src/deps_versions.ts @@ -1,9 +1,9 @@ #!/usr/bin/env node -import { PackageJSON } from '@0x/types'; +import { PackageJSON, PackageJSONConfig } from '@0x/types'; import chalk from 'chalk'; import { sync as globSync } from 'glob'; -import * as _ from 'lodash'; +import * as path from 'path'; import { utils } from './utils/utils'; @@ -17,11 +17,35 @@ interface VersionsByDependency { [depName: string]: Versions; } -const PACKAGE_JSON_GLOB = '../*/package.json'; +interface ParsedDependencies { + ignored: VersionsByDependency; + included: VersionsByDependency; +} + +const PACKAGE_JSON_GLOB = '../../*/package.json'; + +const config = utils.readJSONFile<PackageJSON>(path.join(__dirname, '../../../package.json')) + .config as PackageJSONConfig; +const dependenciesWithIgnoredVersions: string[] = (config.ignoreDependencyVersions as string).split(' '); +const packagesWithIgnoredVersions: string[] = (config.ignoreDependencyVersionsForPackage as string).split(' '); + +if (require.main === module) { + const dependencies = parseDependencies(); + const ignoredMultiples = getDependenciesWithMultipleVersions(dependencies.ignored); + const multiples = getDependenciesWithMultipleVersions(dependencies.included); + printVersionsByDependency(multiples); + utils.log(`├── ${chalk.bold('IGNORED')}`); + printVersionsByDependency(ignoredMultiples); + if (Object.keys(multiples).length !== 0) { + utils.log( + `Some dependencies have multiple versions. Please fix by trying to find compatible versions. As a last resort, you can add space-separated exceptions to root package.json config.ignoreDependencyVersions`, + ); + process.exit(1); + } +} -// tslint:disable:no-unused-variable -function getDependencies(path: string): Dependencies { - const packageJSON = utils.readJSONFile<PackageJSON>(path); +function getDependencies(_path: string): Dependencies { + const packageJSON = utils.readJSONFile<PackageJSON>(_path); const dependencies = { ...packageJSON.dependencies, ...packageJSON.devDependencies, @@ -29,27 +53,49 @@ function getDependencies(path: string): Dependencies { return dependencies; } -const files = globSync(PACKAGE_JSON_GLOB); -const versionsByDependency: VersionsByDependency = {}; -files.map(path => { - const [_1, packageName, _2] = path.split('/'); - const dependencies = getDependencies(path); - _.map(dependencies, (version: string, depName: string) => { - if (_.isUndefined(versionsByDependency[depName])) { - versionsByDependency[depName] = {}; - } - versionsByDependency[depName][packageName] = version; +function parseDependencies(): ParsedDependencies { + const files = globSync(path.join(__dirname, PACKAGE_JSON_GLOB)); + const parsedDependencies: ParsedDependencies = { + ignored: {}, + included: {}, + }; + files.map(_path => { + const pathParts = _path.split('/'); + const packageName = pathParts[pathParts.length - 2]; + const packageCategory = packagesWithIgnoredVersions.includes(packageName) ? 'ignored' : 'included'; + const dependencies = getDependencies(_path); + Object.keys(dependencies).forEach((depName: string) => { + const category = dependenciesWithIgnoredVersions.includes(depName) ? 'ignored' : packageCategory; + if (parsedDependencies[category][depName] === undefined) { + parsedDependencies[category][depName] = {}; + } + const version = dependencies[depName]; + parsedDependencies[category][depName][packageName] = version; + }); }); -}); + return parsedDependencies; +} + +function getDependenciesWithMultipleVersions(versionsByDependency: VersionsByDependency): VersionsByDependency { + return Object.keys(versionsByDependency) + .filter((depName: string) => hasMultipleVersions(versionsByDependency[depName])) + .reduce<VersionsByDependency>((obj, depName: string) => { + obj[depName] = versionsByDependency[depName]; + return obj; + }, {}); +} -_.map(versionsByDependency, (versions: Versions, depName: string) => { - if (_.uniq(_.values(versions)).length === 1) { - delete versionsByDependency[depName]; - } else { +function printVersionsByDependency(versionsByDependency: VersionsByDependency): void { + Object.keys(versionsByDependency).forEach((depName: string) => { + const versions: Versions = versionsByDependency[depName]; utils.log(chalk.bold(depName)); - _.map(versions, (version: string, packageName: string) => { - utils.log(`├── ${packageName} -> ${version}`); + Object.keys(versions).forEach((packageName: string) => { + utils.log(`├── ${packageName} -> ${versions[packageName]}`); }); - } -}); -// tslint:disable:no-unused-variable + }); +} + +function hasMultipleVersions(versions: Versions): boolean { + const uniques = new Set(Object.values(versions)); + return uniques.size > 1; +} diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index ddb2811f2..b9179678e 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -47,7 +47,7 @@ async function confirmAsync(message: string): Promise<void> { await confirmAsync( 'THIS IS NOT A TEST PUBLISH! You are about to publish one or more packages to npm. Are you sure you want to continue? (y/n)', ); - await confirmDocPagesRenderAsync(packagesWithDocs); + // await confirmDocPagesRenderAsync(packagesWithDocs); } // Update CHANGELOGs diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index 08d88da5b..d58a8a4c2 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -1,12 +1,42 @@ [ { + "version": "6.0.0", + "changes": { + "note": "Stop exporting the EIP712 schemas" + }, + "timestamp": 1549504360 + }, + { + "version": "5.0.0", + "changes": [ + { + "note": "Add `transactionHashUtils`", + "pr": 1576 + }, + { + "note": "Refactor `eip712Utils` to allow custom domain params", + "pr": 1576 + }, + { + "note": "Export constant EIP712 params", + "pr": 1576 + } + ], + "timestamp": 1549452781 + }, + { "version": "4.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 + }, + { + "note": "Fix preSigned `isSignatureValidAsync` check", + "pr": 1580 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/order-utils/CHANGELOG.md b/packages/order-utils/CHANGELOG.md index c82458f2e..f5e20a8d8 100644 --- a/packages/order-utils/CHANGELOG.md +++ b/packages/order-utils/CHANGELOG.md @@ -5,6 +5,21 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.0 - _February 7, 2019_ + + * undefined + +## v5.0.0 - _February 6, 2019_ + + * Add `transactionHashUtils` (#1576) + * Refactor `eip712Utils` to allow custom domain params (#1576) + * Export constant EIP712 params (#1576) + +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Fix preSigned `isSignatureValidAsync` check (#1580) + ## v3.1.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index 7a4d4aa84..90fdfeed3 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-utils", - "version": "3.1.2", + "version": "6.0.0", "engines": { "node": ">=6.12" }, @@ -35,8 +35,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md", "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/tslint-config": "^3.0.0", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", "chai": "^4.0.1", @@ -53,22 +53,23 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/assert": "^1.0.23", - "@0x/base-contract": "^3.0.13", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/assert": "^2.0.1", + "@0x/base-contract": "^4.0.1", + "@0x/contract-addresses": "^2.2.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/json-schemas": "^2.1.7", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/json-schemas": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/node": "*", "bn.js": "^4.11.8", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-abi": "0.6.5", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/order-utils/src/constants.ts b/packages/order-utils/src/constants.ts index a9a687719..3c93575b3 100644 --- a/packages/order-utils/src/constants.ts +++ b/packages/order-utils/src/constants.ts @@ -68,9 +68,9 @@ export const constants = { SELECTOR_CHAR_LENGTH_WITH_PREFIX: 10, INFINITE_TIMESTAMP_SEC: new BigNumber(2524604400), // Close to infinite ZERO_AMOUNT: new BigNumber(0), - EIP712_DOMAIN_NAME: '0x Protocol', - EIP712_DOMAIN_VERSION: '2', - EIP712_DOMAIN_SCHEMA: { + EXCHANGE_DOMAIN_NAME: '0x Protocol', + EXCHANGE_DOMAIN_VERSION: '2', + DEFAULT_DOMAIN_SCHEMA: { name: 'EIP712Domain', parameters: [ { name: 'name', type: 'string' }, @@ -78,7 +78,7 @@ export const constants = { { name: 'verifyingContract', type: 'address' }, ], }, - EIP712_ORDER_SCHEMA: { + EXCHANGE_ORDER_SCHEMA: { name: 'Order', parameters: [ { name: 'makerAddress', type: 'address' }, @@ -95,7 +95,7 @@ export const constants = { { name: 'takerAssetData', type: 'bytes' }, ], }, - EIP712_ZEROEX_TRANSACTION_SCHEMA: { + EXCHANGE_ZEROEX_TRANSACTION_SCHEMA: { name: 'ZeroExTransaction', parameters: [ { name: 'salt', type: 'uint256' }, diff --git a/packages/order-utils/src/eip712_utils.ts b/packages/order-utils/src/eip712_utils.ts index 385fda989..685fdc8c8 100644 --- a/packages/order-utils/src/eip712_utils.ts +++ b/packages/order-utils/src/eip712_utils.ts @@ -1,6 +1,13 @@ import { assert } from '@0x/assert'; import { schemas } from '@0x/json-schemas'; -import { EIP712Object, EIP712TypedData, EIP712Types, Order, ZeroExTransaction } from '@0x/types'; +import { + EIP712DomainWithDefaultSchema, + EIP712Object, + EIP712TypedData, + EIP712Types, + Order, + ZeroExTransaction, +} from '@0x/types'; import * as _ from 'lodash'; import { constants } from './constants'; @@ -11,26 +18,26 @@ export const eip712Utils = { * @param primaryType The primary type found in message * @param types The additional types for the data in message * @param message The contents of the message - * @param exchangeAddress The address of the exchange contract + * @param domain Domain containing a name (optional), version (optional), and verifying contract address * @return A typed data object */ createTypedData: ( primaryType: string, types: EIP712Types, message: EIP712Object, - exchangeAddress: string, + domain: EIP712DomainWithDefaultSchema, ): EIP712TypedData => { - assert.isETHAddressHex('exchangeAddress', exchangeAddress); + assert.isETHAddressHex('verifyingContractAddress', domain.verifyingContractAddress); assert.isString('primaryType', primaryType); const typedData = { types: { - EIP712Domain: constants.EIP712_DOMAIN_SCHEMA.parameters, + EIP712Domain: constants.DEFAULT_DOMAIN_SCHEMA.parameters, ...types, }, domain: { - name: constants.EIP712_DOMAIN_NAME, - version: constants.EIP712_DOMAIN_VERSION, - verifyingContract: exchangeAddress, + name: _.isUndefined(domain.name) ? constants.EXCHANGE_DOMAIN_NAME : domain.name, + version: _.isUndefined(domain.version) ? constants.EXCHANGE_DOMAIN_VERSION : domain.version, + verifyingContract: domain.verifyingContractAddress, }, message, primaryType, @@ -48,11 +55,14 @@ export const eip712Utils = { const normalizedOrder = _.mapValues(order, value => { return !_.isString(value) ? value.toString() : value; }); + const domain = { + verifyingContractAddress: order.exchangeAddress, + }; const typedData = eip712Utils.createTypedData( - constants.EIP712_ORDER_SCHEMA.name, - { Order: constants.EIP712_ORDER_SCHEMA.parameters }, + constants.EXCHANGE_ORDER_SCHEMA.name, + { Order: constants.EXCHANGE_ORDER_SCHEMA.parameters }, normalizedOrder, - order.exchangeAddress, + domain, ); return typedData; }, @@ -60,23 +70,22 @@ export const eip712Utils = { * Creates an ExecuteTransaction EIP712TypedData object for use with signTypedData and * 0x Exchange executeTransaction. * @param ZeroExTransaction the 0x transaction - * @param exchangeAddress The address of the exchange contract * @return A typed data object */ - createZeroExTransactionTypedData: ( - zeroExTransaction: ZeroExTransaction, - exchangeAddress: string, - ): EIP712TypedData => { - assert.isETHAddressHex('exchangeAddress', exchangeAddress); + createZeroExTransactionTypedData: (zeroExTransaction: ZeroExTransaction): EIP712TypedData => { + assert.isETHAddressHex('verifyingContractAddress', zeroExTransaction.verifyingContractAddress); assert.doesConformToSchema('zeroExTransaction', zeroExTransaction, schemas.zeroExTransactionSchema); const normalizedTransaction = _.mapValues(zeroExTransaction, value => { return !_.isString(value) ? value.toString() : value; }); + const domain = { + verifyingContractAddress: zeroExTransaction.verifyingContractAddress, + }; const typedData = eip712Utils.createTypedData( - constants.EIP712_ZEROEX_TRANSACTION_SCHEMA.name, - { ZeroExTransaction: constants.EIP712_ZEROEX_TRANSACTION_SCHEMA.parameters }, + constants.EXCHANGE_ZEROEX_TRANSACTION_SCHEMA.name, + { ZeroExTransaction: constants.EXCHANGE_ZEROEX_TRANSACTION_SCHEMA.parameters }, normalizedTransaction, - exchangeAddress, + domain, ); return typedData; }, diff --git a/packages/order-utils/src/index.ts b/packages/order-utils/src/index.ts index 2150a02e4..ff37d7088 100644 --- a/packages/order-utils/src/index.ts +++ b/packages/order-utils/src/index.ts @@ -3,6 +3,7 @@ export { signatureUtils } from './signature_utils'; export { generatePseudoRandomSalt } from './salt'; export { assetDataUtils } from './asset_data_utils'; export { marketUtils } from './market_utils'; +export { transactionHashUtils } from './transaction_hash'; export { rateUtils } from './rate_utils'; export { sortingUtils } from './sorting_utils'; export { orderParsingUtils } from './parsing_utils'; @@ -50,7 +51,9 @@ export { EIP712Types, EIP712Object, EIP712ObjectValue, + EIP712DomainWithDefaultSchema, ZeroExTransaction, + SignedZeroExTransaction, } from '@0x/types'; export { OrderError, diff --git a/packages/order-utils/src/order_hash.ts b/packages/order-utils/src/order_hash.ts index c8e9be71e..ce7e6d85f 100644 --- a/packages/order-utils/src/order_hash.ts +++ b/packages/order-utils/src/order_hash.ts @@ -4,6 +4,7 @@ import { signTypedDataUtils } from '@0x/utils'; import * as _ from 'lodash'; import { assert } from './assert'; +import { constants } from './constants'; import { eip712Utils } from './eip712_utils'; const INVALID_TAKER_FORMAT = 'instance.takerAddress is not of a type(s) string'; @@ -34,8 +35,9 @@ export const orderHashUtils = { assert.doesConformToSchema('order', order, schemas.orderSchema, [schemas.hexSchema]); } catch (error) { if (_.includes(error.message, INVALID_TAKER_FORMAT)) { - const errMsg = - 'Order taker must be of type string. If you want anyone to be able to fill an order - pass ZeroEx.NULL_ADDRESS'; + const errMsg = `Order taker must be of type string. If you want anyone to be able to fill an order - pass ${ + constants.NULL_ADDRESS + }`; throw new Error(errMsg); } throw error; @@ -51,6 +53,17 @@ export const orderHashUtils = { * @return A Buffer containing the resulting orderHash from hashing the supplied order */ getOrderHashBuffer(order: SignedOrder | Order): Buffer { + try { + assert.doesConformToSchema('order', order, schemas.orderSchema, [schemas.hexSchema]); + } catch (error) { + if (_.includes(error.message, INVALID_TAKER_FORMAT)) { + const errMsg = `Order taker must be of type string. If you want anyone to be able to fill an order - pass ${ + constants.NULL_ADDRESS + }`; + throw new Error(errMsg); + } + throw error; + } const typedData = eip712Utils.createOrderTypedData(order); const orderHashBuff = signTypedDataUtils.generateTypedDataHash(typedData); return orderHashBuff; diff --git a/packages/order-utils/src/signature_utils.ts b/packages/order-utils/src/signature_utils.ts index 131144d48..efcc146bf 100644 --- a/packages/order-utils/src/signature_utils.ts +++ b/packages/order-utils/src/signature_utils.ts @@ -1,4 +1,5 @@ import { ExchangeContract, IValidatorContract, IWalletContract } from '@0x/abi-gen-wrappers'; +import { getContractAddressesForNetworkOrThrow } from '@0x/contract-addresses'; import * as artifacts from '@0x/contract-artifacts'; import { schemas } from '@0x/json-schemas'; import { ECSignature, Order, SignatureType, SignedOrder, ValidatorSignature } from '@0x/types'; @@ -92,7 +93,14 @@ export const signatureUtils = { assert.isWeb3Provider('provider', provider); assert.isHexString('data', data); assert.isETHAddressHex('signerAddress', signerAddress); - const exchangeContract = new ExchangeContract(artifacts.Exchange.compilerOutput.abi, signerAddress, provider); + const web3Wrapper = new Web3Wrapper(provider); + const networkId = await web3Wrapper.getNetworkIdAsync(); + const addresses = getContractAddressesForNetworkOrThrow(networkId); + const exchangeContract = new ExchangeContract( + artifacts.Exchange.compilerOutput.abi, + addresses.exchange, + provider, + ); const isValid = await exchangeContract.preSigned.callAsync(data, signerAddress); return isValid; }, diff --git a/packages/order-utils/src/transaction_hash.ts b/packages/order-utils/src/transaction_hash.ts new file mode 100644 index 000000000..2b2345af7 --- /dev/null +++ b/packages/order-utils/src/transaction_hash.ts @@ -0,0 +1,46 @@ +import { schemas, SchemaValidator } from '@0x/json-schemas'; +import { SignedZeroExTransaction, ZeroExTransaction } from '@0x/types'; +import { signTypedDataUtils } from '@0x/utils'; +import * as _ from 'lodash'; + +import { assert } from './assert'; +import { eip712Utils } from './eip712_utils'; + +export const transactionHashUtils = { + /** + * Checks if the supplied hex encoded 0x transaction hash is valid. + * Note: Valid means it has the expected format, not that a transaction with the transactionHash exists. + * Use this method when processing transactionHashes submitted as user input. + * @param transactionHash Hex encoded transactionHash. + * @return Whether the supplied transactionHash has the expected format. + */ + isValidTransactionHash(transactionHash: string): boolean { + // Since this method can be called to check if any arbitrary string conforms to an transactionHash's + // format, we only assert that we were indeed passed a string. + assert.isString('transactionHash', transactionHash); + const schemaValidator = new SchemaValidator(); + const isValid = schemaValidator.validate(transactionHash, schemas.orderHashSchema).valid; + return isValid; + }, + /** + * Computes the transactionHash for a supplied 0x transaction. + * @param transaction An object that conforms to the ZeroExTransaction or SignedZeroExTransaction interface definitions. + * @return Hex encoded string transactionHash from hashing the supplied order. + */ + getTransactionHashHex(transaction: ZeroExTransaction | SignedZeroExTransaction): string { + assert.doesConformToSchema('transaction', transaction, schemas.zeroExTransactionSchema, [schemas.hexSchema]); + const transactionHashBuff = transactionHashUtils.getTransactionHashBuffer(transaction); + const transactionHashHex = `0x${transactionHashBuff.toString('hex')}`; + return transactionHashHex; + }, + /** + * Computes the transactionHash for a supplied 0x transaction. + * @param transaction An object that conforms to the ZeroExTransaction or SignedZeroExTransaction interface definitions. + * @return A Buffer containing the resulting transactionHash from hashing the supplied 0x transaction. + */ + getTransactionHashBuffer(transaction: ZeroExTransaction | SignedZeroExTransaction): Buffer { + const typedData = eip712Utils.createZeroExTransactionTypedData(transaction); + const transactionHashBuff = signTypedDataUtils.generateTypedDataHash(typedData); + return transactionHashBuff; + }, +}; diff --git a/packages/order-utils/test/eip712_utils_test.ts b/packages/order-utils/test/eip712_utils_test.ts index a54e49958..c97bed144 100644 --- a/packages/order-utils/test/eip712_utils_test.ts +++ b/packages/order-utils/test/eip712_utils_test.ts @@ -12,33 +12,55 @@ const expect = chai.expect; describe('EIP712 Utils', () => { describe('createTypedData', () => { - it('adds in the EIP712DomainSeparator', () => { + it('adds in the EIP712DomainSeparator with default values', () => { const primaryType = 'Test'; const typedData = eip712Utils.createTypedData( primaryType, { Test: [{ name: 'testValue', type: 'uint256' }] }, { testValue: '1' }, - constants.NULL_ADDRESS, + { verifyingContractAddress: constants.NULL_ADDRESS }, ); expect(typedData.domain).to.not.be.undefined(); expect(typedData.types.EIP712Domain).to.not.be.undefined(); const domainObject = typedData.domain; - expect(domainObject.name).to.eq(constants.EIP712_DOMAIN_NAME); + expect(domainObject.name).to.eq(constants.EXCHANGE_DOMAIN_NAME); + expect(domainObject.version).to.eq(constants.EXCHANGE_DOMAIN_VERSION); + expect(domainObject.verifyingContract).to.eq(constants.NULL_ADDRESS); + expect(typedData.primaryType).to.eq(primaryType); + }); + it('adds in the EIP712DomainSeparator without default values', () => { + const primaryType = 'Test'; + const domainName = 'testDomain'; + const domainVersion = 'testVersion'; + const typedData = eip712Utils.createTypedData( + primaryType, + { Test: [{ name: 'testValue', type: 'uint256' }] }, + { testValue: '1' }, + { name: domainName, version: domainVersion, verifyingContractAddress: constants.NULL_ADDRESS }, + ); + expect(typedData.domain).to.not.be.undefined(); + expect(typedData.types.EIP712Domain).to.not.be.undefined(); + const domainObject = typedData.domain; + expect(domainObject.name).to.eq(domainName); + expect(domainObject.version).to.eq(domainVersion); + expect(domainObject.verifyingContract).to.eq(constants.NULL_ADDRESS); expect(typedData.primaryType).to.eq(primaryType); }); }); - describe('createTypedData', () => { + describe('createZeroExTransactionTypedData', () => { it('adds in the EIP712DomainSeparator', () => { - const typedData = eip712Utils.createZeroExTransactionTypedData( - { - salt: new BigNumber('0'), - data: constants.NULL_BYTES, - signerAddress: constants.NULL_ADDRESS, - }, - constants.NULL_ADDRESS, - ); - expect(typedData.primaryType).to.eq(constants.EIP712_ZEROEX_TRANSACTION_SCHEMA.name); + const typedData = eip712Utils.createZeroExTransactionTypedData({ + salt: new BigNumber('0'), + data: constants.NULL_BYTES, + signerAddress: constants.NULL_ADDRESS, + verifyingContractAddress: constants.NULL_ADDRESS, + }); + expect(typedData.primaryType).to.eq(constants.EXCHANGE_ZEROEX_TRANSACTION_SCHEMA.name); expect(typedData.types.EIP712Domain).to.not.be.undefined(); + const domainObject = typedData.domain; + expect(domainObject.name).to.eq(constants.EXCHANGE_DOMAIN_NAME); + expect(domainObject.version).to.eq(constants.EXCHANGE_DOMAIN_VERSION); + expect(domainObject.verifyingContract).to.eq(constants.NULL_ADDRESS); }); }); }); diff --git a/packages/order-utils/test/order_hash_test.ts b/packages/order-utils/test/order_hash_test.ts index 30fb15a37..514fc2709 100644 --- a/packages/order-utils/test/order_hash_test.ts +++ b/packages/order-utils/test/order_hash_test.ts @@ -54,8 +54,9 @@ describe('Order hashing', () => { ...order, takerAddress: (null as any) as string, }; - const expectedErrorMessage = - 'Order taker must be of type string. If you want anyone to be able to fill an order - pass ZeroEx.NULL_ADDRESS'; + const expectedErrorMessage = `Order taker must be of type string. If you want anyone to be able to fill an order - pass ${ + constants.NULL_ADDRESS + }`; expect(() => orderHashUtils.getOrderHashHex(orderWithInvalidtakerFormat)).to.throw(expectedErrorMessage); }); }); diff --git a/packages/order-utils/test/signature_utils_test.ts b/packages/order-utils/test/signature_utils_test.ts index 937382056..44aa729b3 100644 --- a/packages/order-utils/test/signature_utils_test.ts +++ b/packages/order-utils/test/signature_utils_test.ts @@ -99,6 +99,17 @@ describe('Signature utils', () => { ); expect(isValidSignatureLocal).to.be.true(); }); + + it('should return false if entry not found in `preSigned` mapping', async () => { + const preSignedSignature = '0x06'; + const isValidPreSignature = await signatureUtils.isValidSignatureAsync( + provider, + dataHex, + preSignedSignature, + address, + ); + expect(isValidPreSignature).to.be.false(); + }); }); describe('#isValidECSignature', () => { const signature = { diff --git a/packages/order-utils/test/transaction_hash_test.ts b/packages/order-utils/test/transaction_hash_test.ts new file mode 100644 index 000000000..c7ca33a64 --- /dev/null +++ b/packages/order-utils/test/transaction_hash_test.ts @@ -0,0 +1,56 @@ +import { ZeroExTransaction } from '@0x/types'; +import { BigNumber } from '@0x/utils'; +import * as chai from 'chai'; +import 'mocha'; + +import { transactionHashUtils } from '../src'; + +import { constants } from '../src/constants'; + +import { chaiSetup } from './utils/chai_setup'; + +chaiSetup.configure(); +const expect = chai.expect; + +describe('0x transaction hashing', () => { + describe('#getTransactionHashHex', () => { + const expectedTransactionHash = '0x82c9bb2dcac4f868ec7a15c20ff6175cfc384c20ae6a872aa0342a840f108c2b'; + const fakeVerifyingContractAddress = '0x5e72914535f202659083db3a02c984188fa26e9f'; + const transaction: ZeroExTransaction = { + verifyingContractAddress: fakeVerifyingContractAddress, + signerAddress: constants.NULL_ADDRESS, + salt: new BigNumber(0), + data: constants.NULL_BYTES, + }; + it('calculates the transaction hash', async () => { + const transactionHash = transactionHashUtils.getTransactionHashHex(transaction); + expect(transactionHash).to.be.equal(expectedTransactionHash); + }); + it('calculates the transaction hash if amounts are strings', async () => { + // It's common for developers using javascript to provide the amounts + // as strings. Since we eventually toString() the BigNumber + // before encoding we should result in the same orderHash in this scenario + // tslint:disable-next-line:no-unnecessary-type-assertion + const transactionHash = transactionHashUtils.getTransactionHashHex({ + ...transaction, + salt: '0', + } as any); + expect(transactionHash).to.be.equal(expectedTransactionHash); + }); + }); + describe('#isValidTransactionHash', () => { + it('returns false if the value is not a hex string', () => { + const isValid = transactionHashUtils.isValidTransactionHash('not a hex'); + expect(isValid).to.be.false(); + }); + it('returns false if the length is wrong', () => { + const isValid = transactionHashUtils.isValidTransactionHash('0xdeadbeef'); + expect(isValid).to.be.false(); + }); + it('returns true if order hash is correct', () => { + const orderHashLength = 65; + const isValid = transactionHashUtils.isValidTransactionHash(`0x${Array(orderHashLength).join('0')}`); + expect(isValid).to.be.true(); + }); + }); +}); diff --git a/packages/order-watcher/CHANGELOG.json b/packages/order-watcher/CHANGELOG.json index 585bb48e6..c7bffa5b7 100644 --- a/packages/order-watcher/CHANGELOG.json +++ b/packages/order-watcher/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "3.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547747677, diff --git a/packages/order-watcher/CHANGELOG.md b/packages/order-watcher/CHANGELOG.md index df065866c..bb908bfcf 100644 --- a/packages/order-watcher/CHANGELOG.md +++ b/packages/order-watcher/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v2.4.3 - _January 17, 2019_ * Dependencies updated diff --git a/packages/order-watcher/package.json b/packages/order-watcher/package.json index 895c64813..3c4cc06ba 100644 --- a/packages/order-watcher/package.json +++ b/packages/order-watcher/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-watcher", - "version": "2.4.3", + "version": "3.0.2", "description": "An order watcher daemon that watches for order validity", "keywords": [ "0x", @@ -38,10 +38,10 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/migrations": "^2.4.0", - "@0x/subproviders": "^2.1.11", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/migrations": "^3.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/tslint-config": "^3.0.0", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -63,24 +63,24 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^2.2.0", - "@0x/assert": "^1.0.23", - "@0x/base-contract": "^3.0.13", - "@0x/contract-addresses": "^2.2.0", + "@0x/abi-gen-wrappers": "^3.0.1", + "@0x/assert": "^2.0.1", + "@0x/base-contract": "^4.0.1", + "@0x/contract-addresses": "^2.2.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/contract-wrappers": "^5.0.1", - "@0x/fill-scenarios": "^1.1.2", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/contract-wrappers": "^7.0.1", + "@0x/fill-scenarios": "^2.0.2", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "bintrees": "^1.0.2", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-blockstream": "6.0.0", "ethers": "~4.0.4", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "websocket": "^1.0.25" }, "publishConfig": { diff --git a/packages/pipeline/README.md b/packages/pipeline/README.md index 4fc8e0ff9..23113fd9b 100644 --- a/packages/pipeline/README.md +++ b/packages/pipeline/README.md @@ -34,8 +34,10 @@ yarn lint ### Migrations -Create a new migration: `yarn migrate:create --name MigrationNameInCamelCase` +Create a new migration: `yarn migrate:create --name MigrationNameInCamelCase`. + Run migrations: `yarn migrate:run` + Revert the most recent migration (CAUTION: may result in data loss!): `yarn migrate:revert` ## Testing diff --git a/packages/pipeline/package.json b/packages/pipeline/package.json index 908734687..a1500cc74 100644 --- a/packages/pipeline/package.json +++ b/packages/pipeline/package.json @@ -1,6 +1,6 @@ { "name": "@0x/pipeline", - "version": "1.0.5", + "version": "1.0.8", "private": true, "description": "Data pipeline for offline analysis", "scripts": { @@ -27,35 +27,35 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/axios": "^0.14.0", "@types/ramda": "^0.25.38", - "chai": "^4.1.2", - "chai-as-promised": "^7.1.1", + "chai": "^4.0.1", + "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", "dirty-chai": "^2.0.1", - "mocha": "^5.2.0", + "mocha": "^4.1.0", "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/connect": "^3.0.13", - "@0x/contract-addresses": "^2.2.0", + "@0x/connect": "^4.0.2", + "@0x/contract-addresses": "^2.2.1", "@0x/contract-artifacts": "^1.3.0", - "@0x/contract-wrappers": "^3.0.0", - "@0x/dev-utils": "^1.0.24", - "@0x/order-utils": "^3.1.2", - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/contract-wrappers": "^7.0.1", + "@0x/dev-utils": "^2.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/dockerode": "^2.5.9", "@types/p-limit": "^2.0.0", "async-parallel": "^1.2.3", "axios": "^0.18.0", "bottleneck": "^2.13.2", "dockerode": "^2.5.7", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "pg": "^7.5.0", "prettier": "^1.15.3", "ramda": "^0.25.0", diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 8b418fc11..9fccd6257 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/react-docs/CHANGELOG.md b/packages/react-docs/CHANGELOG.md index 5ec82b5be..a95f5371b 100644 --- a/packages/react-docs/CHANGELOG.md +++ b/packages/react-docs/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.25 - _January 15, 2019_ * Dependencies updated diff --git a/packages/react-docs/package.json b/packages/react-docs/package.json index f8f2b6276..ed32f4289 100644 --- a/packages/react-docs/package.json +++ b/packages/react-docs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-docs", - "version": "1.0.25", + "version": "2.0.2", "engines": { "node": ">=6.12" }, @@ -24,19 +24,19 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/tslint-config": "^3.0.0", "@types/compare-versions": "^3.0.0", "@types/styled-components": "4.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", - "tslint": "^5.9.1", + "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/react-shared": "^1.1.2", - "@0x/types": "^1.5.2", - "@0x/utils": "^3.0.1", + "@0x/react-shared": "^2.0.2", + "@0x/types": "^2.0.1", + "@0x/utils": "^4.0.2", "@types/lodash": "4.14.104", "@types/material-ui": "^0.20.0", "@types/node": "*", @@ -45,7 +45,7 @@ "@types/react-scroll": "1.5.3", "basscss": "^8.0.3", "compare-versions": "^3.0.1", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "material-ui": "^0.20.0", "react": "^16.5.2", "react-dom": "^16.5.2", @@ -53,7 +53,7 @@ "react-scroll": "0xproject/react-scroll#pr-330-and-replace-state", "react-tooltip": "^3.2.7", "semver": "5.5.0", - "styled-components": "^4.0.1" + "styled-components": "^4.1.1" }, "publishConfig": { "access": "public" diff --git a/packages/react-shared/CHANGELOG.json b/packages/react-shared/CHANGELOG.json index 99a8779ac..b9a7ca3df 100644 --- a/packages/react-shared/CHANGELOG.json +++ b/packages/react-shared/CHANGELOG.json @@ -1,12 +1,31 @@ [ { + "timestamp": 1549504360, + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/react-shared/CHANGELOG.md b/packages/react-shared/CHANGELOG.md index e1a5df403..05bdffa14 100644 --- a/packages/react-shared/CHANGELOG.md +++ b/packages/react-shared/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _February 7, 2019_ + + * Dependencies updated + +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.1.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/react-shared/package.json b/packages/react-shared/package.json index 4be4742b0..3558d8afd 100644 --- a/packages/react-shared/package.json +++ b/packages/react-shared/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-shared", - "version": "1.1.2", + "version": "2.0.2", "engines": { "node": ">=6.12" }, @@ -25,19 +25,19 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/tslint-config": "^3.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", - "tslint": "^5.9.1", + "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^1.5.2", + "@0x/types": "^2.0.1", "@material-ui/core": "^3.0.1", "@types/is-mobile": "0.3.0", "@types/lodash": "4.14.104", - "@types/material-ui": "0.18.0", + "@types/material-ui": "^0.20.0", "@types/node": "*", "@types/react": "*", "@types/react-dom": "*", @@ -48,15 +48,15 @@ "basscss": "^8.0.3", "change-case": "^3.0.2", "is-mobile": "^0.2.2", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "material-ui": "^0.20.0", "react": "^16.5.2", "react-dom": "^16.5.2", - "react-highlight": "0xproject/react-highlight#fix/react-version", + "react-highlight": "0xproject/react-highlight#react-peer-deps", "react-markdown": "^3.2.2", - "react-router-dom": "^4.1.1", + "react-router-dom": "^4.3.1", "react-scroll": "0xproject/react-scroll#pr-330-and-replace-state", - "styled-components": "^4.0.1", + "styled-components": "^4.1.1", "valid-url": "^1.0.9" }, "publishConfig": { diff --git a/packages/react-shared/src/components/markdown_paragraph_block.tsx b/packages/react-shared/src/components/markdown_paragraph_block.tsx index eeaef8571..9ed44ed07 100644 --- a/packages/react-shared/src/components/markdown_paragraph_block.tsx +++ b/packages/react-shared/src/components/markdown_paragraph_block.tsx @@ -6,5 +6,9 @@ import { colors } from '../utils/colors'; export interface MarkdownParagraphBlockProps {} export const MarkdownParagraphBlock: React.StatelessComponent<MarkdownParagraphBlockProps> = ({ children }) => { - return <span style={{ color: colors.greyTheme, lineHeight: '26px' }}>{children}</span>; + return ( + <span style={{ color: colors.greyTheme, lineHeight: '26px', display: 'block', paddingBottom: 15 }}> + {children} + </span> + ); }; diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index 672939a4a..5f103342e 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/sol-compiler/CHANGELOG.md b/packages/sol-compiler/CHANGELOG.md index dfcec1fa7..400c33763 100644 --- a/packages/sol-compiler/CHANGELOG.md +++ b/packages/sol-compiler/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v2.0.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index 0b53cffd5..3ba3c20e6 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-compiler", - "version": "2.0.2", + "version": "3.0.1", "engines": { "node": ">=6.12" }, @@ -42,13 +42,13 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md", "devDependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/tslint-config": "^2.0.2", + "@0x/dev-utils": "^2.0.1", + "@0x/tslint-config": "^3.0.0", "@types/chokidar": "^1.7.5", "@types/mkdirp": "^0.5.2", "@types/pluralize": "^0.0.29", "@types/require-from-string": "^1.2.0", - "@types/semver": "^5.5.0", + "@types/semver": "5.5.0", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", @@ -67,19 +67,19 @@ "zeppelin-solidity": "1.8.0" }, "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/json-schemas": "^2.1.7", - "@0x/sol-resolver": "^1.2.3", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/assert": "^2.0.1", + "@0x/json-schemas": "^3.0.1", + "@0x/sol-resolver": "^2.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/yargs": "^11.0.0", "chalk": "^2.3.0", "chokidar": "^2.0.4", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "mkdirp": "^0.5.1", "pluralize": "^7.0.0", "require-from-string": "^2.0.1", diff --git a/packages/sol-coverage/CHANGELOG.json b/packages/sol-coverage/CHANGELOG.json index 550ca2feb..c5b3ae84e 100644 --- a/packages/sol-coverage/CHANGELOG.json +++ b/packages/sol-coverage/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547747677, diff --git a/packages/sol-coverage/CHANGELOG.md b/packages/sol-coverage/CHANGELOG.md index 18c1719bf..0612e407e 100644 --- a/packages/sol-coverage/CHANGELOG.md +++ b/packages/sol-coverage/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.3 - _January 17, 2019_ * Dependencies updated diff --git a/packages/sol-coverage/package.json b/packages/sol-coverage/package.json index 805e2e670..f6be925bb 100644 --- a/packages/sol-coverage/package.json +++ b/packages/sol-coverage/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-coverage", - "version": "1.0.3", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -29,14 +29,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-coverage/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^4.0.1", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", - "ethereum-types": "^1.1.6", - "lodash": "^4.17.5" + "@0x/sol-tracing-utils": "^6.0.1", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "ethereum-types": "^2.0.0", + "lodash": "^4.17.11" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/node": "*", "npm-run-all": "^4.1.2", "nyc": "^11.0.1", diff --git a/packages/sol-doc/CHANGELOG.json b/packages/sol-doc/CHANGELOG.json index 662915faf..d4f89a32e 100644 --- a/packages/sol-doc/CHANGELOG.json +++ b/packages/sol-doc/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/sol-doc/CHANGELOG.md b/packages/sol-doc/CHANGELOG.md index 1a60b5f89..d838a52ae 100644 --- a/packages/sol-doc/CHANGELOG.md +++ b/packages/sol-doc/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.14 - _January 15, 2019_ * Dependencies updated diff --git a/packages/sol-doc/package.json b/packages/sol-doc/package.json index 179f45e81..e68e3a237 100644 --- a/packages/sol-doc/package.json +++ b/packages/sol-doc/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-doc", - "version": "1.0.14", + "version": "2.0.1", "description": "Solidity documentation generator", "main": "lib/src/index.js", "types": "lib/src/index.d.js", @@ -25,22 +25,22 @@ "author": "F. Eugene Aumson", "license": "Apache-2.0", "dependencies": { - "@0x/sol-compiler": "^2.0.2", - "@0x/types": "^1.5.2", - "@0x/utils": "^3.0.1", - "ethereum-types": "^1.1.6", + "@0x/sol-compiler": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/utils": "^4.0.2", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", - "lodash": "^4.17.10", - "yargs": "^12.0.2" + "lodash": "^4.17.11", + "yargs": "^10.0.3" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", - "chai": "^4.1.2", + "@0x/tslint-config": "^3.0.0", + "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^3.0.0", "dirty-chai": "^2.0.1", "make-promises-safe": "^1.1.0", - "mocha": "^5.2.0", + "mocha": "^4.1.0", "shx": "^0.2.2", "source-map-support": "^0.5.0", "tslint": "5.11.0" diff --git a/packages/sol-profiler/CHANGELOG.json b/packages/sol-profiler/CHANGELOG.json index fc928b516..145158ab3 100644 --- a/packages/sol-profiler/CHANGELOG.json +++ b/packages/sol-profiler/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.1", "changes": [ { "note": "Fix a bug when some parts of the profiling report were missing because of the coverage ignore lines", "pr": 1535 } - ] + ], + "timestamp": 1549373905 }, { "version": "2.0.0", diff --git a/packages/sol-profiler/CHANGELOG.md b/packages/sol-profiler/CHANGELOG.md index 18c1719bf..cf0ec8ee7 100644 --- a/packages/sol-profiler/CHANGELOG.md +++ b/packages/sol-profiler/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.1 - _February 5, 2019_ + + * Fix a bug when some parts of the profiling report were missing because of the coverage ignore lines (#1535) + +## v2.0.0 - _Invalid date_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.3 - _January 17, 2019_ * Dependencies updated diff --git a/packages/sol-profiler/package.json b/packages/sol-profiler/package.json index 4fe2928c7..8518c88b0 100644 --- a/packages/sol-profiler/package.json +++ b/packages/sol-profiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-profiler", - "version": "1.0.3", + "version": "2.0.2", "engines": { "node": ">=6.12" }, @@ -29,14 +29,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-profiler/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^4.0.1", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", - "ethereum-types": "^1.1.6", - "lodash": "^4.17.5" + "@0x/sol-tracing-utils": "^6.0.1", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "ethereum-types": "^2.0.0", + "lodash": "^4.17.11" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/node": "*", "npm-run-all": "^4.1.2", "shx": "^0.2.2", diff --git a/packages/sol-resolver/CHANGELOG.json b/packages/sol-resolver/CHANGELOG.json index f5a005fd4..147f7ac61 100644 --- a/packages/sol-resolver/CHANGELOG.json +++ b/packages/sol-resolver/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/sol-resolver/CHANGELOG.md b/packages/sol-resolver/CHANGELOG.md index a48561cc3..90d7cc2b8 100644 --- a/packages/sol-resolver/CHANGELOG.md +++ b/packages/sol-resolver/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.2.3 - _January 15, 2019_ * Dependencies updated diff --git a/packages/sol-resolver/package.json b/packages/sol-resolver/package.json index 0518cde95..1f5189537 100644 --- a/packages/sol-resolver/package.json +++ b/packages/sol-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-resolver", - "version": "1.2.3", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -23,16 +23,16 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/resolver/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "lodash": "^4.17.5" + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/sol-trace/CHANGELOG.json b/packages/sol-trace/CHANGELOG.json index b633b3d21..44ce3fcf6 100644 --- a/packages/sol-trace/CHANGELOG.json +++ b/packages/sol-trace/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.1", "changes": [ { "note": "Improve error messages when unable to find matching bytecode", "pr": 1558 } - ] + ], + "timestamp": 1549373905 }, { "version": "2.0.0", diff --git a/packages/sol-trace/CHANGELOG.md b/packages/sol-trace/CHANGELOG.md index 18c1719bf..92e53f6f3 100644 --- a/packages/sol-trace/CHANGELOG.md +++ b/packages/sol-trace/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.2 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.1 - _February 5, 2019_ + + * Improve error messages when unable to find matching bytecode (#1558) + +## v2.0.0 - _Invalid date_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.3 - _January 17, 2019_ * Dependencies updated diff --git a/packages/sol-trace/package.json b/packages/sol-trace/package.json index 25e81a82a..678253ce7 100644 --- a/packages/sol-trace/package.json +++ b/packages/sol-trace/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-trace", - "version": "1.0.3", + "version": "2.0.2", "engines": { "node": ">=6.12" }, @@ -29,17 +29,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-trace/README.md", "dependencies": { - "@0x/sol-tracing-utils": "^4.0.1", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", + "@0x/sol-tracing-utils": "^6.0.1", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", "chalk": "^2.3.0", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "loglevel": "^1.6.1" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/loglevel": "^1.5.3", "@types/node": "*", "npm-run-all": "^4.1.2", diff --git a/packages/sol-tracing-utils/CHANGELOG.json b/packages/sol-tracing-utils/CHANGELOG.json index 89a5b6876..75131dddb 100644 --- a/packages/sol-tracing-utils/CHANGELOG.json +++ b/packages/sol-tracing-utils/CHANGELOG.json @@ -1,5 +1,14 @@ [ { + "timestamp": 1549452781, + "version": "6.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "6.0.0", "changes": [ { @@ -25,8 +34,17 @@ { "note": "Improve error messages when unable to find matching bytecode", "pr": 1558 + }, + { + "note": "Fix default gas limit for fake txs in `TraceCollectionSubprovider`", + "pr": 1583 + }, + { + "note": "Fix a big when we were not intercepting `eth_sendRawTransaction`", + "pr": 1584 } - ] + ], + "timestamp": 1549373905 }, { "version": "5.0.0", diff --git a/packages/sol-tracing-utils/CHANGELOG.md b/packages/sol-tracing-utils/CHANGELOG.md index 9bffb2a6d..3889e89c3 100644 --- a/packages/sol-tracing-utils/CHANGELOG.md +++ b/packages/sol-tracing-utils/CHANGELOG.md @@ -5,6 +5,25 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v6.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v6.0.0 - _February 5, 2019_ + + * `SolCompilerArtifactAdapter` now uses `SolResolver` under the hood which allows to resolve `NPM` dependencies properly (#1535) + * Cache the `utils.getContractDataIfExists` leading to faster execution (#1535) + * `SolCompilerArtifactAdapter` now doesn't return the `ContractData` for interfaces (#1535) + * Print resasonable error message on bytecode collision (#1535) + * Fix the bug in `ASTVisitor` causing the 'cannot read property `range` of `null`' error (#1557) + * Improve error messages when unable to find matching bytecode (#1558) + * Fix default gas limit for fake txs in `TraceCollectionSubprovider` (#1583) + * Fix a big when we were not intercepting `eth_sendRawTransaction` (#1584) + +## v5.0.0 - _Invalid date_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v4.0.1 - _January 17, 2019_ * Fix a bug where a custom `Geth` tracer didn't return stack entries for `DELEGATECALL` (#1521) diff --git a/packages/sol-tracing-utils/package.json b/packages/sol-tracing-utils/package.json index 929c73b84..5e2f69c82 100644 --- a/packages/sol-tracing-utils/package.json +++ b/packages/sol-tracing-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-tracing-utils", - "version": "4.0.1", + "version": "6.0.1", "engines": { "node": ">=6.12" }, @@ -42,20 +42,21 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-tracing-utils/README.md", "dependencies": { - "@0x/dev-utils": "^1.0.24", - "@0x/sol-compiler": "^2.0.2", - "@0x/sol-resolver": "^1.2.3", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/dev-utils": "^2.0.1", + "@0x/sol-compiler": "^3.0.1", + "@0x/sol-resolver": "^2.0.1", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@types/solidity-parser-antlr": "^0.2.0", - "ethereum-types": "^1.1.6", + "chalk": "^2.3.0", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", + "ethers": "~4.0.4", "glob": "^7.1.2", - "chalk": "^2.3.0", "istanbul": "^0.4.5", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "loglevel": "^1.6.1", "mkdirp": "^0.5.1", "rimraf": "^2.6.2", @@ -63,10 +64,10 @@ "solidity-parser-antlr": "^0.2.12" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/istanbul": "^0.4.30", "@types/loglevel": "^1.5.3", - "@types/mkdirp": "^0.5.1", + "@types/mkdirp": "^0.5.2", "@types/mocha": "^2.2.42", "@types/node": "*", "@types/rimraf": "^2.0.2", diff --git a/packages/sol-tracing-utils/src/trace_collection_subprovider.ts b/packages/sol-tracing-utils/src/trace_collection_subprovider.ts index 5118921fa..7fde1f9b8 100644 --- a/packages/sol-tracing-utils/src/trace_collection_subprovider.ts +++ b/packages/sol-tracing-utils/src/trace_collection_subprovider.ts @@ -3,6 +3,7 @@ import { Callback, ErrorCallback, NextCallback, Subprovider } from '@0x/subprovi import { logUtils } from '@0x/utils'; import { CallDataRPC, marshaller, Web3Wrapper } from '@0x/web3-wrapper'; import { JSONRPCRequestPayload, Provider, TxData } from 'ethereum-types'; +import { utils } from 'ethers'; import * as _ from 'lodash'; import { Lock } from 'semaphore-async-await'; @@ -96,6 +97,18 @@ export abstract class TraceCollectionSubprovider extends Subprovider { } return; + case 'eth_sendRawTransaction': + if (!this._config.shouldCollectTransactionTraces) { + next(); + } else { + const txData = utils.parseTransaction(payload.params[0]); + if (txData.to === null) { + txData.to = constants.NEW_CONTRACT; + } + next(logAsyncErrors(this._onTransactionSentAsync.bind(this, txData))); + } + return; + case 'eth_call': if (!this._config.shouldCollectCallTraces) { next(); @@ -180,13 +193,13 @@ export abstract class TraceCollectionSubprovider extends Subprovider { cb(); } private async _recordCallOrGasEstimateTraceAsync(callData: Partial<CallDataRPC>): Promise<void> { - // We don't want other transactions to be exeucted during snashotting period, that's why we lock the + // We don't want other transactions to be executed during snashotting period, that's why we lock the // transaction execution for all transactions except our fake ones. await this._lock.acquire(); const blockchainLifecycle = new BlockchainLifecycle(this._web3Wrapper); await blockchainLifecycle.startAsync(); const fakeTxData = { - gas: BLOCK_GAS_LIMIT.toString(16), // tslint:disable-line:custom-no-magic-numbers + gas: `0x${BLOCK_GAS_LIMIT.toString(16)}`, // tslint:disable-line:custom-no-magic-numbers isFakeTransaction: true, // This transaction (and only it) is allowed to come through when the lock is locked ...callData, from: callData.from || this._defaultFromAddress, diff --git a/packages/sra-spec/CHANGELOG.json b/packages/sra-spec/CHANGELOG.json index e22a3b0e4..b812f0809 100644 --- a/packages/sra-spec/CHANGELOG.json +++ b/packages/sra-spec/CHANGELOG.json @@ -1,12 +1,22 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/sra-spec/CHANGELOG.md b/packages/sra-spec/CHANGELOG.md index 5fe40ccb4..ceae08a17 100644 --- a/packages/sra-spec/CHANGELOG.md +++ b/packages/sra-spec/CHANGELOG.md @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v1.0.16 - _January 15, 2019_ * Dependencies updated diff --git a/packages/sra-spec/package.json b/packages/sra-spec/package.json index 9c4c0a24f..7644cbe7d 100644 --- a/packages/sra-spec/package.json +++ b/packages/sra-spec/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sra-spec", - "version": "1.0.16", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -35,20 +35,20 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sra-spec/README.md", "dependencies": { - "@0x/json-schemas": "^2.1.7", + "@0x/json-schemas": "^3.0.1", "@loopback/openapi-v3-types": "^0.8.2" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/mocha": "^2.2.42", - "@types/node": "^10.5.3", + "@types/node": "*", "chai": "^4.0.1", "chokidar-cli": "^1.2.0", "copyfiles": "^2.0.0", "dirty-chai": "^2.0.1", "discharge": "^0.7.1", - "mocha": "^4.0.1", - "npm-run-all": "^4.1.3", + "mocha": "^4.1.0", + "npm-run-all": "^4.1.2", "nyc": "^11.0.1", "redoc-cli": "^0.6.1", "shx": "^0.2.2", diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index ffb9740cd..ad005d2e5 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -1,5 +1,14 @@ [ { + "timestamp": 1549452781, + "version": "3.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "3.0.0", "changes": [ { @@ -10,7 +19,8 @@ "note": "Update ganache-core to v2.3.3", "pr": 1518 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md index 16457ee2b..58a85b822 100644 --- a/packages/subproviders/CHANGELOG.md +++ b/packages/subproviders/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Update ganache-core to v2.3.3 (#1518) + ## v2.1.11 - _January 15, 2019_ * Dependencies updated diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index b54cc11db..30728434f 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0x/subproviders", - "version": "2.1.11", + "version": "3.0.1", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ } }, "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/assert": "^2.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-transport-u2f": "4.24.0", "@types/eth-lightwallet": "^3.0.0", @@ -43,18 +43,18 @@ "bip39": "^2.5.0", "bn.js": "^4.11.8", "eth-lightwallet": "^3.0.1", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", "ganache-core": "^2.3.3", "hdkey": "^0.7.1", "json-rpc-error": "2.0.0", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "semaphore-async-await": "^1.5.1", "web3-provider-engine": "14.0.6" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/bip39": "^2.4.0", "@types/bn.js": "^4.11.0", "@types/ethereumjs-tx": "^1.0.0", diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index da7477be4..22961d215 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0x/testnet-faucets", - "version": "1.0.64", + "version": "1.0.67", "engines": { "node": ">=6.12" }, @@ -18,21 +18,21 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^3.0.3", - "@0x/subproviders": "^2.1.11", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "0x.js": "^4.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "body-parser": "^1.17.1", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-tx": "^1.3.5", "ethereumjs-util": "^5.1.1", "express": "^4.15.2", - "lodash": "^4.17.5", - "rollbar": "^0.6.5" + "lodash": "^4.17.11", + "rollbar": "^2.5.0" }, "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/body-parser": "^1.16.1", "@types/express": "^4.0.35", "@types/lodash": "4.14.104", diff --git a/packages/tslint-config/CHANGELOG.json b/packages/tslint-config/CHANGELOG.json index 34ea6aa6b..884a5b46f 100644 --- a/packages/tslint-config/CHANGELOG.json +++ b/packages/tslint-config/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/tslint-config/CHANGELOG.md b/packages/tslint-config/CHANGELOG.md index 37d287c10..5719f28a6 100644 --- a/packages/tslint-config/CHANGELOG.md +++ b/packages/tslint-config/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v2.0.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json index f90321edb..b5846a5aa 100644 --- a/packages/tslint-config/package.json +++ b/packages/tslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@0x/tslint-config", - "version": "2.0.2", + "version": "3.0.0", "engines": { "node": ">=6.12" }, @@ -40,7 +40,7 @@ "typescript": "3.0.1" }, "dependencies": { - "lodash": "^4.17.5", + "lodash": "^4.17.11", "tslint": "5.11.0", "tslint-eslint-rules": "5.4.0", "tslint-react": "^3.2.0", diff --git a/packages/types/CHANGELOG.json b/packages/types/CHANGELOG.json index 7a6d205ee..cb01ccc4a 100644 --- a/packages/types/CHANGELOG.json +++ b/packages/types/CHANGELOG.json @@ -1,12 +1,30 @@ [ { + "timestamp": 1549452781, + "version": "2.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "2.0.0", "changes": [ { "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 + }, + { + "note": "Update `ZeroExTransaction` type and add `SignedZeroExTransaction` type", + "pr": 1576 + }, + { + "note": "Add `EIP712DomainWithDefaultSchema` type", + "pr": 1576 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index ac27d9096..e43be5e55 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -5,6 +5,16 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Update `ZeroExTransaction` type and add `SignedZeroExTransaction` type (#1576) + * Add `EIP712DomainWithDefaultSchema` type (#1576) + ## v1.5.2 - _January 15, 2019_ * Dependencies updated diff --git a/packages/types/package.json b/packages/types/package.json index 440f05423..4e196b292 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@0x/types", - "version": "1.5.2", + "version": "2.0.1", "engines": { "node": ">=6.12" }, @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/types/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", "tslint": "5.11.0", @@ -32,7 +32,7 @@ "dependencies": { "@types/node": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^1.1.6" + "ethereum-types": "^2.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index dec386ccf..b3a083999 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -45,11 +45,16 @@ export interface SignedOrder extends Order { * ZeroExTransaction for use with 0x Exchange executeTransaction */ export interface ZeroExTransaction { + verifyingContractAddress: string; salt: BigNumber; signerAddress: string; data: string; } +export interface SignedZeroExTransaction extends ZeroExTransaction { + signature: string; +} + /** * Elliptic Curve signature */ @@ -686,22 +691,32 @@ export interface DutchAuctionDetails { currentTimeSeconds: BigNumber; } +export interface PackageJSONConfig { + postpublish?: { + assets?: string[]; + docOmitExports?: string[]; + dockerHubRepo?: string; + }; + 'abis:comment'?: string; + abis?: string; + ignoreDependencyVersions?: string; + ignoreDependencyVersionsForPackage?: string; +} + export interface PackageJSON { private?: boolean; version: string; name: string; main?: string; scripts?: { [command: string]: string }; - config?: { - postpublish?: { - assets?: string[]; - docOmitExports?: string[]; - dockerHubRepo?: string; - }; - 'abis:comment'?: string; - abis?: string; - }; + config?: PackageJSONConfig; dependencies?: { [dependencyName: string]: string }; devDependencies?: { [dependencyName: string]: string }; workspaces?: string[]; } + +export interface EIP712DomainWithDefaultSchema { + name?: string; + version?: string; + verifyingContractAddress: string; +} diff --git a/packages/typescript-typings/CHANGELOG.json b/packages/typescript-typings/CHANGELOG.json index e3ae60231..708911720 100644 --- a/packages/typescript-typings/CHANGELOG.json +++ b/packages/typescript-typings/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Upgrade the bignumber.js to v8.0.2", "pr": 1517 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/typescript-typings/CHANGELOG.md b/packages/typescript-typings/CHANGELOG.md index 8f23cce14..a879b1cf5 100644 --- a/packages/typescript-typings/CHANGELOG.md +++ b/packages/typescript-typings/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v3.0.8 - _January 15, 2019_ * Dependencies updated diff --git a/packages/typescript-typings/package.json b/packages/typescript-typings/package.json index 01cab8c63..f135e6f91 100644 --- a/packages/typescript-typings/package.json +++ b/packages/typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "@0x/typescript-typings", - "version": "3.0.8", + "version": "4.0.0", "engines": { "node": ">=6.12" }, @@ -27,7 +27,7 @@ "@types/bn.js": "^4.11.0", "@types/react": "*", "bignumber.js": "~8.0.2", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "popper.js": "1.14.3" }, "devDependencies": { diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index 0fb199e58..9ff26e3e4 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,5 +1,25 @@ [ { + "version": "4.0.2", + "changes": [ + { + "note": "ABI Decode NULL for all data types", + "pr": 1587 + } + ], + "timestamp": 1549452781 + }, + { + "version": "4.0.1", + "changes": [ + { + "note": "ABI Decode NULL as False", + "pr": 1582 + } + ], + "timestamp": 1549373905 + }, + { "version": "4.0.0", "changes": [ { diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index ed3f00158..e4b581aef 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.2 - _February 6, 2019_ + + * ABI Decode NULL for all data types (#1587) + +## v4.0.1 - _February 5, 2019_ + + * ABI Decode NULL as False (#1582) + +## v4.0.0 - _Invalid date_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + ## v3.0.1 - _January 15, 2019_ * Dependencies updated diff --git a/packages/utils/package.json b/packages/utils/package.json index b6be39210..f5b69644e 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/utils", - "version": "3.0.1", + "version": "4.0.2", "engines": { "node": ">=6.12" }, @@ -28,7 +28,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/utils/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/detect-node": "2.0.0", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -44,19 +44,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", "@types/node": "*", "abortcontroller-polyfill": "^1.1.9", "bignumber.js": "~8.0.2", - "chalk": "^2.4.1", + "chalk": "^2.3.0", "detect-node": "2.0.3", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", - "isomorphic-fetch": "^2.2.1", + "isomorphic-fetch": "2.2.1", "js-sha3": "^0.7.0", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts index f23324721..db4f02b89 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/data_type.ts @@ -47,7 +47,8 @@ export abstract class DataType { const hasSelector = !_.isUndefined(selector); const rawCalldata = new RawCalldata(calldata, hasSelector); const rules_ = _.isUndefined(rules) ? constants.DEFAULT_DECODING_RULES : rules; - const value = this.generateValue(rawCalldata, rules_); + const value = + rawCalldata.getSizeInBytes() > 0 ? this.generateValue(rawCalldata, rules_) : this.getDefaultValue(rules_); return value; } @@ -71,6 +72,7 @@ export abstract class DataType { public abstract generateCalldataBlock(value: any, parentBlock?: CalldataBlock): CalldataBlock; public abstract generateValue(calldata: RawCalldata, rules: DecodingRules): any; + public abstract getDefaultValue(rules?: DecodingRules): any; public abstract getSignatureType(): string; public abstract isStatic(): boolean; } diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts index 2c6c4b0f6..d45088482 100644 --- a/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts +++ b/packages/utils/src/abi_encoder/abstract_data_types/types/set.ts @@ -97,6 +97,27 @@ export abstract class AbstractSetDataType extends DataType { return isStatic; } + public getDefaultValue(rules?: DecodingRules): any[] | object { + let defaultValue: any[] | object; + if (this._isArray && _.isUndefined(this._arrayLength)) { + defaultValue = []; + } else if (!_.isUndefined(rules) && rules.shouldConvertStructsToObjects && !this._isArray) { + defaultValue = {}; + _.each(this._memberIndexByName, (idx: number, key: string) => { + const member = this._members[idx]; + const memberValue = member.getDefaultValue(); + (defaultValue as { [key: string]: any })[key] = memberValue; + }); + } else { + defaultValue = []; + _.each(this._members, (member: DataType, idx: number) => { + const memberValue = member.getDefaultValue(); + (defaultValue as any[]).push(memberValue); + }); + } + return defaultValue; + } + protected _generateCalldataBlockFromArray(value: any[], parentBlock?: CalldataBlock): SetCalldataBlock { // Sanity check: if the set has a defined length then `value` must have the same length. if (!_.isUndefined(this._arrayLength) && value.length !== this._arrayLength) { diff --git a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts index 189841989..dbc9d4942 100644 --- a/packages/utils/src/abi_encoder/calldata/raw_calldata.ts +++ b/packages/utils/src/abi_encoder/calldata/raw_calldata.ts @@ -79,4 +79,9 @@ export class RawCalldata { public getSelector(): string { return this._selector; } + + public getSizeInBytes(): number { + const sizeInBytes = this._value.byteLength; + return sizeInBytes; + } } diff --git a/packages/utils/src/abi_encoder/evm_data_types/address.ts b/packages/utils/src/abi_encoder/evm_data_types/address.ts index 2278830eb..7e92d3888 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/address.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/address.ts @@ -12,6 +12,7 @@ export class AddressDataType extends AbstractBlobDataType { private static readonly _ADDRESS_SIZE_IN_BYTES = 20; private static readonly _DECODED_ADDRESS_OFFSET_IN_BYTES = constants.EVM_WORD_WIDTH_IN_BYTES - AddressDataType._ADDRESS_SIZE_IN_BYTES; + private static readonly _DEFAULT_VALUE = '0x0000000000000000000000000000000000000000'; public static matchType(type: string): boolean { return type === SolidityTypes.Address; @@ -43,6 +44,10 @@ export class AddressDataType extends AbstractBlobDataType { return valueLowercase; } + public getDefaultValue(): string { + return AddressDataType._DEFAULT_VALUE; + } + public getSignatureType(): string { return SolidityTypes.Address; } diff --git a/packages/utils/src/abi_encoder/evm_data_types/bool.ts b/packages/utils/src/abi_encoder/evm_data_types/bool.ts index 23298bc88..24887c509 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/bool.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/bool.ts @@ -10,6 +10,7 @@ import { constants } from '../utils/constants'; export class BoolDataType extends AbstractBlobDataType { private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = true; + private static readonly _DEFAULT_VALUE: boolean = false; public static matchType(type: string): boolean { return type === SolidityTypes.Bool; @@ -36,7 +37,8 @@ export class BoolDataType extends AbstractBlobDataType { public decodeValue(calldata: RawCalldata): boolean { const valueBuf = calldata.popWord(); const valueHex = ethUtil.bufferToHex(valueBuf); - const valueNumber = new BigNumber(valueHex, constants.HEX_BASE); + // Hack @hysz: there are some cases where `false` is encoded as 0x instead of 0x0. + const valueNumber = valueHex === '0x' ? new BigNumber(0) : new BigNumber(valueHex, constants.HEX_BASE); if (!(valueNumber.isEqualTo(0) || valueNumber.isEqualTo(1))) { throw new Error(`Failed to decode boolean. Expected 0x0 or 0x1, got ${valueHex}`); } @@ -46,6 +48,10 @@ export class BoolDataType extends AbstractBlobDataType { return value; } + public getDefaultValue(): boolean { + return BoolDataType._DEFAULT_VALUE; + } + public getSignatureType(): string { return SolidityTypes.Bool; } diff --git a/packages/utils/src/abi_encoder/evm_data_types/dynamic_bytes.ts b/packages/utils/src/abi_encoder/evm_data_types/dynamic_bytes.ts index fa38b63c0..7a49a84b4 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/dynamic_bytes.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/dynamic_bytes.ts @@ -9,6 +9,7 @@ import { constants } from '../utils/constants'; export class DynamicBytesDataType extends AbstractBlobDataType { private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = false; + private static readonly _DEFAULT_VALUE = '0x'; public static matchType(type: string): boolean { return type === SolidityTypes.Bytes; @@ -65,6 +66,10 @@ export class DynamicBytesDataType extends AbstractBlobDataType { return value; } + public getDefaultValue(): string { + return DynamicBytesDataType._DEFAULT_VALUE; + } + public getSignatureType(): string { return SolidityTypes.Bytes; } diff --git a/packages/utils/src/abi_encoder/evm_data_types/int.ts b/packages/utils/src/abi_encoder/evm_data_types/int.ts index f8be1f778..02278f666 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/int.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/int.ts @@ -15,6 +15,7 @@ export class IntDataType extends AbstractBlobDataType { private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = true; private static readonly _MAX_WIDTH: number = 256; private static readonly _DEFAULT_WIDTH: number = IntDataType._MAX_WIDTH; + private static readonly _DEFAULT_VALUE = new BigNumber(0); private readonly _width: number; private readonly _minValue: BigNumber; private readonly _maxValue: BigNumber; @@ -50,13 +51,20 @@ export class IntDataType extends AbstractBlobDataType { public decodeValue(calldata: RawCalldata): BigNumber | number { const valueBuf = calldata.popWord(); const value = EncoderMath.safeDecodeNumericValue(valueBuf, this._minValue, this._maxValue); - const numberOfBytesInUint8 = 8; - if (this._width === numberOfBytesInUint8) { + if (this._width === constants.NUMBER_OF_BYTES_IN_INT8) { return value.toNumber(); } return value; } + public getDefaultValue(): BigNumber | number { + const defaultValue = IntDataType._DEFAULT_VALUE; + if (this._width === constants.NUMBER_OF_BYTES_IN_INT8) { + return defaultValue.toNumber(); + } + return defaultValue; + } + public getSignatureType(): string { return `${SolidityTypes.Int}${this._width}`; } diff --git a/packages/utils/src/abi_encoder/evm_data_types/pointer.ts b/packages/utils/src/abi_encoder/evm_data_types/pointer.ts index 250db7c64..50f68f5ea 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/pointer.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/pointer.ts @@ -18,4 +18,9 @@ export class PointerDataType extends AbstractPointerDataType { public getSignature(isDetailed?: boolean): string { return this._destination.getSignature(isDetailed); } + + public getDefaultValue(): any { + const defaultValue = this._destination.getDefaultValue(); + return defaultValue; + } } diff --git a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts index cbf1957d7..a965f6796 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/static_bytes.ts @@ -58,6 +58,13 @@ export class StaticBytesDataType extends AbstractBlobDataType { return value; } + public getDefaultValue(): string { + const valueBufPadded = constants.EMPTY_EVM_WORD_BUFFER; + const valueBuf = valueBufPadded.slice(0, this._width); + const value = ethUtil.bufferToHex(valueBuf); + return value; + } + private _sanityCheckValue(value: string | Buffer): void { if (typeof value === 'string') { if (!_.startsWith(value, '0x')) { diff --git a/packages/utils/src/abi_encoder/evm_data_types/string.ts b/packages/utils/src/abi_encoder/evm_data_types/string.ts index 97ac46442..f54d739b4 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/string.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/string.ts @@ -9,6 +9,7 @@ import { constants } from '../utils/constants'; export class StringDataType extends AbstractBlobDataType { private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = false; + private static readonly _DEFAULT_VALUE = ''; public static matchType(type: string): boolean { return type === SolidityTypes.String; @@ -52,6 +53,10 @@ export class StringDataType extends AbstractBlobDataType { return value; } + public getDefaultValue(): string { + return StringDataType._DEFAULT_VALUE; + } + public getSignatureType(): string { return SolidityTypes.String; } diff --git a/packages/utils/src/abi_encoder/evm_data_types/uint.ts b/packages/utils/src/abi_encoder/evm_data_types/uint.ts index a82aa789e..d530606b9 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/uint.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/uint.ts @@ -16,6 +16,7 @@ export class UIntDataType extends AbstractBlobDataType { private static readonly _MAX_WIDTH: number = 256; private static readonly _DEFAULT_WIDTH: number = UIntDataType._MAX_WIDTH; private static readonly _MIN_VALUE = new BigNumber(0); + private static readonly _DEFAULT_VALUE = new BigNumber(0); private readonly _width: number; private readonly _maxValue: BigNumber; @@ -49,13 +50,20 @@ export class UIntDataType extends AbstractBlobDataType { public decodeValue(calldata: RawCalldata): BigNumber | number { const valueBuf = calldata.popWord(); const value = EncoderMath.safeDecodeNumericValue(valueBuf, UIntDataType._MIN_VALUE, this._maxValue); - const numberOfBytesInUint8 = 8; - if (this._width === numberOfBytesInUint8) { + if (this._width === constants.NUMBER_OF_BYTES_IN_UINT8) { return value.toNumber(); } return value; } + public getDefaultValue(): BigNumber | number { + const defaultValue = UIntDataType._DEFAULT_VALUE; + if (this._width === constants.NUMBER_OF_BYTES_IN_UINT8) { + return defaultValue.toNumber(); + } + return defaultValue; + } + public getSignatureType(): string { return `${SolidityTypes.Uint}${this._width}`; } diff --git a/packages/utils/src/abi_encoder/utils/constants.ts b/packages/utils/src/abi_encoder/utils/constants.ts index fc586f295..b45b5b8e8 100644 --- a/packages/utils/src/abi_encoder/utils/constants.ts +++ b/packages/utils/src/abi_encoder/utils/constants.ts @@ -1,3 +1,5 @@ +import * as ethUtil from 'ethereumjs-util'; + import { DecodingRules, EncodingRules } from './rules'; export const constants = { @@ -14,4 +16,8 @@ export const constants = { DEFAULT_DECODING_RULES: { shouldConvertStructsToObjects: true } as DecodingRules, DEFAULT_ENCODING_RULES: { shouldOptimize: true, shouldAnnotate: false } as EncodingRules, /* tslint:enable no-object-literal-type-assertion */ + EMPTY_EVM_WORD_STRING: '0x0000000000000000000000000000000000000000000000000000000000000000', + EMPTY_EVM_WORD_BUFFER: ethUtil.toBuffer('0x0000000000000000000000000000000000000000000000000000000000000000'), + NUMBER_OF_BYTES_IN_UINT8: 8, + NUMBER_OF_BYTES_IN_INT8: 8, }; diff --git a/packages/utils/test/abi_encoder/abi_samples/return_value_abis.ts b/packages/utils/test/abi_encoder/abi_samples/return_value_abis.ts index ac2124011..ad07b3d24 100644 --- a/packages/utils/test/abi_encoder/abi_samples/return_value_abis.ts +++ b/packages/utils/test/abi_encoder/abi_samples/return_value_abis.ts @@ -97,3 +97,28 @@ export const mixedStaticAndDynamicReturnValues: MethodAbi = { stateMutability: 'nonpayable', type: 'function', }; + +export const structuredReturnValue: MethodAbi = { + constant: false, + inputs: [], + name: 'fillOrder', + outputs: [ + { + components: [ + { + name: 'makerAssetFilledAmount', + type: 'uint256', + }, + { + name: 'takerAssetFilledAmount', + type: 'uint256', + }, + ], + name: 'fillResults', + type: 'tuple', + }, + ], + payable: false, + stateMutability: 'nonpayable', + type: 'function', +}; diff --git a/packages/utils/test/abi_encoder/evm_data_types_test.ts b/packages/utils/test/abi_encoder/evm_data_types_test.ts index 4814ce28b..c09c0d929 100644 --- a/packages/utils/test/abi_encoder/evm_data_types_test.ts +++ b/packages/utils/test/abi_encoder/evm_data_types_test.ts @@ -11,6 +11,7 @@ const expect = chai.expect; describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { const encodingRules: AbiEncoder.EncodingRules = { shouldOptimize: false }; // optimizer is tested separately. + const nullEncodedArgs = '0x'; describe('Array', () => { it('Fixed size; Static elements', async () => { // Create DataType object @@ -207,6 +208,51 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw('Tried to assign NaN value'); }); + it('Should decode NULL to default values (Fixed size; Static elements)', async () => { + // Create DataType object + const testDataItem = { name: 'testArray', type: 'int[2]' }; + const dataType = new AbiEncoder.Array(testDataItem); + const args = [new BigNumber(0), new BigNumber(0)]; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default values (Dynamic size; Static elements)', async () => { + // Create DataType object + const testDataItem = { name: 'testArray', type: 'int[]' }; + const dataType = new AbiEncoder.Array(testDataItem); + const args: BigNumber[] = []; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default values (Fixed size; Dynamic elements)', async () => { + // Create DataType object + const testDataItem = { name: 'testArray', type: 'string[2]' }; + const dataType = new AbiEncoder.Array(testDataItem); + const args = ['', '']; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default values (Dynamic size; Dynamic elements)', async () => { + // Create DataType object + const testDataItem = { name: 'testArray', type: 'string[]' }; + const dataType = new AbiEncoder.Array(testDataItem); + const args: string[] = []; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default values (Dynamic Size; Multidimensional; Dynamic Elements)', async () => { + // Create DataType object + const testDataItem = { name: 'testArray', type: 'bytes[][]' }; + const dataType = new AbiEncoder.Array(testDataItem); + const args: string[][] = []; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Tuple', () => { @@ -407,6 +453,46 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw('Could not assign tuple to object: missing key \'field_2\' in object {"field_1":"-5"}'); }); + it('Should decode NULL to default values (static elements only)', async () => { + // Create DataType object + const testDataItem = { + name: 'Tuple', + type: 'tuple', + components: [{ name: 'field_1', type: 'int32' }, { name: 'field_2', type: 'bool' }], + }; + const dataType = new AbiEncoder.Tuple(testDataItem); + // Construct args to be encoded + const args = { field_1: new BigNumber(0), field_2: false }; + // Decode Encoded Args and validate result + const decodingRules: AbiEncoder.DecodingRules = { shouldConvertStructsToObjects: true }; + const decodedArgs = dataType.decode(nullEncodedArgs, decodingRules); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default values (static and dynamic elements)', async () => { + // Create DataType object + const testDataItem = { + name: 'Tuple', + type: 'tuple', + components: [ + { name: 'field_1', type: 'int32' }, + { name: 'field_2', type: 'string' }, + { name: 'field_3', type: 'bool' }, + { name: 'field_4', type: 'bytes' }, + ], + }; + const dataType = new AbiEncoder.Tuple(testDataItem); + // Construct args to be encoded + const args = { + field_1: new BigNumber(0), + field_2: '', + field_3: false, + field_4: '0x', + }; + // Decode Encoded Args and validate result + const decodingRules: AbiEncoder.DecodingRules = { shouldConvertStructsToObjects: true }; + const decodedArgs = dataType.decode(nullEncodedArgs, decodingRules); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Address', () => { @@ -450,6 +536,15 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw(`Invalid address: '${args}'`); }); + it('Should decode NULL to default value of address zero', async () => { + // Create DataType object + const testDataItem = { name: 'Address', type: 'address' }; + const dataType = new AbiEncoder.Address(testDataItem); + const args = '0x0000000000000000000000000000000000000000'; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Bool', () => { @@ -489,6 +584,15 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { const argsEncodedFromSignature = dataTypeFromSignature.encode(args); expect(argsEncodedFromSignature).to.be.deep.equal(expectedEncodedArgs); }); + it('Should decode NULL to default value of False', async () => { + // Create DataType object + const testDataItem = { name: 'Boolean', type: 'bool' }; + const dataType = new AbiEncoder.Bool(testDataItem); + const args = false; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Integer', () => { @@ -687,6 +791,15 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw(); }); + it('Should decode NULL to default value of 0', async () => { + // Create DataType object + const testDataItem = { name: 'Integer (256)', type: 'int' }; + const dataType = new AbiEncoder.Int(testDataItem); + const args = new BigNumber(0); + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Unsigned Integer', () => { @@ -849,6 +962,15 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw(); }); + it('Should decode NULL to default value of 0', async () => { + // Create DataType object + const testDataItem = { name: 'Unsigned Integer (256)', type: 'uint' }; + const dataType = new AbiEncoder.UInt(testDataItem); + const args = new BigNumber(0); + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Static Bytes', () => { @@ -1012,6 +1134,33 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw('Tried to assign 0x010, which is contains a half-byte. Use full bytes only.'); }); + it('Should decode NULL to default value - Single Byte (byte)', async () => { + // Create DataType object + const testDataItem = { name: 'Static Byte', type: 'byte' }; + const dataType = new AbiEncoder.StaticBytes(testDataItem); + const args = '0x00'; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default value - 4 Bytes (bytes4)', async () => { + // Create DataType object + const testDataItem = { name: 'Static Bytes4', type: 'bytes4' }; + const dataType = new AbiEncoder.StaticBytes(testDataItem); + const args = '0x00000000'; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); + it('Should decode NULL to default value - 32 Bytes (bytes32)', async () => { + // Create DataType object + const testDataItem = { name: 'Static Bytes32', type: 'bytes32' }; + const dataType = new AbiEncoder.StaticBytes(testDataItem); + const args = '0x0000000000000000000000000000000000000000000000000000000000000000'; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('Dynamic Bytes', () => { @@ -1099,6 +1248,15 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { dataType.encode(args, encodingRules); }).to.throw('Tried to assign 0x010, which is contains a half-byte. Use full bytes only.'); }); + it('Should decode NULL to empty byte array', async () => { + // Create DataType object + const testDataItem = { name: 'Dynamic Bytes', type: 'bytes' }; + const dataType = new AbiEncoder.DynamicBytes(testDataItem); + const args = '0x'; + // Decode Encoded Args and validate result + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); describe('String', () => { @@ -1164,5 +1322,14 @@ describe('ABI Encoder: EVM Data Type Encoding/Decoding', () => { const argsEncodedFromSignature = dataTypeFromSignature.encode(args); expect(argsEncodedFromSignature).to.be.deep.equal(expectedEncodedArgs); }); + it('Should decode NULL to empty string', async () => { + // Create DataType object + const testDataItem = { name: 'String', type: 'string' }; + const dataType = new AbiEncoder.String(testDataItem); + // Decode Encoded Args and validate result + const args = ''; + const decodedArgs = dataType.decode(nullEncodedArgs); + expect(decodedArgs).to.be.deep.equal(args); + }); }); }); diff --git a/packages/utils/test/abi_encoder/return_values_test.ts b/packages/utils/test/abi_encoder/return_values_test.ts index 308d11ee5..ccdac510d 100644 --- a/packages/utils/test/abi_encoder/return_values_test.ts +++ b/packages/utils/test/abi_encoder/return_values_test.ts @@ -1,7 +1,7 @@ import * as chai from 'chai'; import 'mocha'; -import { AbiEncoder } from '../../src/'; +import { AbiEncoder, BigNumber } from '../../src/'; import { chaiSetup } from '../utils/chai_setup'; import * as ReturnValueAbis from './abi_samples/return_value_abis'; @@ -11,67 +11,194 @@ const expect = chai.expect; describe('ABI Encoder: Return Value Encoding/Decoding', () => { const encodingRules: AbiEncoder.EncodingRules = { shouldOptimize: false }; // optimizer is tested separately. - it('No Return Value', async () => { - // Decode return value - const method = new AbiEncoder.Method(ReturnValueAbis.noReturnValues); - const returnValue = '0x'; - const decodedReturnValue = method.decodeReturnValues(returnValue, { shouldConvertStructsToObjects: false }); - const expectedDecodedReturnValue: any[] = []; - expect(decodedReturnValue).to.be.deep.equal(expectedDecodedReturnValue); - }); - it('Single static return value', async () => { - // Generate Return Value - const method = new AbiEncoder.Method(ReturnValueAbis.singleStaticReturnValue); - const returnValue = ['0x01020304']; - const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); - const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { - shouldConvertStructsToObjects: false, - }); - // Validate decoded return value - expect(decodedReturnValue).to.be.deep.equal(returnValue); - }); - it('Multiple static return values', async () => { - // Generate Return Value - const method = new AbiEncoder.Method(ReturnValueAbis.multipleStaticReturnValues); - const returnValue = ['0x01020304', '0x05060708']; - const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); - const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { - shouldConvertStructsToObjects: false, - }); - // Validate decoded return value - expect(decodedReturnValue).to.be.deep.equal(returnValue); - }); - it('Single dynamic return value', async () => { - // Generate Return Value - const method = new AbiEncoder.Method(ReturnValueAbis.singleDynamicReturnValue); - const returnValue = ['0x01020304']; - const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); - const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { - shouldConvertStructsToObjects: false, - }); - // Validate decoded return value - expect(decodedReturnValue).to.be.deep.equal(returnValue); - }); - it('Multiple dynamic return values', async () => { - // Generate Return Value - const method = new AbiEncoder.Method(ReturnValueAbis.multipleDynamicReturnValues); - const returnValue = ['0x01020304', '0x05060708']; - const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); - const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { - shouldConvertStructsToObjects: false, - }); - // Validate decoded return value - expect(decodedReturnValue).to.be.deep.equal(returnValue); + const nullEncodedReturnValue = '0x'; + describe('Standard encoding/decoding', () => { + it('No Return Value', async () => { + // Decode return value + const method = new AbiEncoder.Method(ReturnValueAbis.noReturnValues); + const returnValue = '0x'; + const decodedReturnValue = method.decodeReturnValues(returnValue, { shouldConvertStructsToObjects: false }); + const expectedDecodedReturnValue: any[] = []; + expect(decodedReturnValue).to.be.deep.equal(expectedDecodedReturnValue); + }); + it('Single static return value', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleStaticReturnValue); + const returnValue = ['0x01020304']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Multiple static return values', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleStaticReturnValues); + const returnValue = ['0x01020304', '0x05060708']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Single dynamic return value', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleDynamicReturnValue); + const returnValue = ['0x01020304']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Multiple dynamic return values', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleDynamicReturnValues); + const returnValue = ['0x01020304', '0x05060708']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Mixed static/dynamic return values', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.mixedStaticAndDynamicReturnValues); + const returnValue = ['0x01020304', '0x05060708']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Should decode NULL as default value (single; static)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleStaticReturnValue); + const returnValue = ['0x00000000']; + + const decodedReturnValue = method.decodeReturnValues(nullEncodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Should decode NULL as default value (multiple; static)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleStaticReturnValues); + const returnValue = ['0x00000000', '0x00000000']; + const decodedReturnValue = method.decodeReturnValues(nullEncodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Should decode NULL as default value (single; dynamic)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleDynamicReturnValue); + const returnValue = ['0x']; + const decodedReturnValue = method.decodeReturnValues(nullEncodedReturnValue, { + shouldConvertStructsToObjects: false, + }); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); }); - it('Mixed static/dynamic return values', async () => { - // Generate Return Value - const method = new AbiEncoder.Method(ReturnValueAbis.mixedStaticAndDynamicReturnValues); - const returnValue = ['0x01020304', '0x05060708']; - const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); - const decodedReturnValue = method.decodeReturnValues(encodedReturnValue, { - shouldConvertStructsToObjects: false, - }); - // Validate decoded return value - expect(decodedReturnValue).to.be.deep.equal(returnValue); + + describe('Strict encoding/decoding', () => { + it('No Return Value', async () => { + // Decode return value + const method = new AbiEncoder.Method(ReturnValueAbis.noReturnValues); + const returnValue = '0x'; + const decodedReturnValue = method.strictDecodeReturnValue<void>(returnValue); + const expectedDecodedReturnValue = undefined; + expect(decodedReturnValue).to.be.deep.equal(expectedDecodedReturnValue); + }); + it('Single static return value', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleStaticReturnValue); + const returnValue = ['0x01020304']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.strictDecodeReturnValue<string>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue[0]); + }); + it('Multiple static return values', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleStaticReturnValues); + const returnValue = ['0x01020304', '0x05060708']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.strictDecodeReturnValue<[string, string]>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Single dynamic return value', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleDynamicReturnValue); + const returnValue = ['0x01020304']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.strictDecodeReturnValue<string>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue[0]); + }); + it('Multiple dynamic return values', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleDynamicReturnValues); + const returnValue = ['0x01020304', '0x05060708']; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.strictDecodeReturnValue<[string, string]>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Struct should include fields', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.structuredReturnValue); + const returnValue = { + fillResults: { + makerAssetFilledAmount: new BigNumber(50), + takerAssetFilledAmount: new BigNumber(40), + }, + }; + const encodedReturnValue = method.encodeReturnValues(returnValue, encodingRules); + const decodedReturnValue = method.strictDecodeReturnValue<{ + makerAssetFilledAmount: BigNumber; + takerAssetFilledAmount: BigNumber; + }>(encodedReturnValue); + // Validate decoded return value + // Note that only the contents of `fillResults`, not the key itself, is decoded. + // This is by design, as only a struct's contents are encoded and returned by a funciton call. + expect(decodedReturnValue).to.be.deep.equal(returnValue.fillResults); + }); + it('Should decode NULL as default value (single; static)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleStaticReturnValue); + const returnValue = '0x00000000'; + const encodedReturnValue = '0x'; + const decodedReturnValue = method.strictDecodeReturnValue<string>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Should decode NULL as default value (multiple; static)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.multipleStaticReturnValues); + const returnValue = ['0x00000000', '0x00000000']; + const encodedReturnValue = '0x'; + const decodedReturnValue = method.strictDecodeReturnValue<[string, string]>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); + it('Should decode NULL as default value (single; dynamic)', async () => { + // Generate Return Value + const method = new AbiEncoder.Method(ReturnValueAbis.singleDynamicReturnValue); + const returnValue = '0x'; + const encodedReturnValue = '0x'; + const decodedReturnValue = method.strictDecodeReturnValue<string>(encodedReturnValue); + // Validate decoded return value + expect(decodedReturnValue).to.be.deep.equal(returnValue); + }); }); }); diff --git a/packages/web3-wrapper/CHANGELOG.json b/packages/web3-wrapper/CHANGELOG.json index 4a639f662..e9e85be24 100644 --- a/packages/web3-wrapper/CHANGELOG.json +++ b/packages/web3-wrapper/CHANGELOG.json @@ -1,5 +1,14 @@ [ { + "timestamp": 1549452781, + "version": "4.0.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "version": "4.0.0", "changes": [ { @@ -10,7 +19,8 @@ "note": "Update ganache-core to v2.3.3", "pr": 1518 } - ] + ], + "timestamp": 1549373905 }, { "timestamp": 1547561734, diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md index 5850c5474..82b646a04 100644 --- a/packages/web3-wrapper/CHANGELOG.md +++ b/packages/web3-wrapper/CHANGELOG.md @@ -5,6 +5,15 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v4.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Update ganache-core to v2.3.3 (#1518) + ## v3.2.4 - _January 15, 2019_ * Dependencies updated diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index f28cc36ca..967d2bc34 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0x/web3-wrapper", - "version": "3.2.4", + "version": "4.0.1", "engines": { "node": ">=6.12" }, @@ -36,7 +36,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/web3-wrapper/README.md", "devDependencies": { - "@0x/tslint-config": "^2.0.2", + "@0x/tslint-config": "^3.0.0", "@types/ganache-core": "^2.1.2", "@types/lodash": "4.14.104", "chai": "^4.0.1", @@ -54,14 +54,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/assert": "^1.0.23", - "@0x/json-schemas": "^2.1.7", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "ethereum-types": "^1.1.6", + "@0x/assert": "^2.0.1", + "@0x/json-schemas": "^3.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", - "lodash": "^4.17.5" + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/website/less/all.less b/packages/website/less/all.less index 5d1dccc98..d288b182b 100644 --- a/packages/website/less/all.less +++ b/packages/website/less/all.less @@ -88,13 +88,6 @@ code { color: #1d5cde; // linkBlue } - h1, - h2, - h3, - h4 { - padding-top: 15px; - } - p, blockquote, ol, diff --git a/packages/website/package.json b/packages/website/package.json index ce7ed395f..77295d4de 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0x/website", - "version": "0.0.67", + "version": "0.0.70", "engines": { "node": ">=6.12" }, @@ -20,18 +20,18 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "@0x/asset-buyer": "^4.0.2", - "@0x/contract-addresses": "^2.2.0", - "@0x/contract-wrappers": "^5.0.1", - "@0x/json-schemas": "^2.1.7", - "@0x/order-utils": "^3.1.2", - "@0x/react-docs": "^1.0.25", - "@0x/react-shared": "^1.1.2", - "@0x/subproviders": "^2.1.11", - "@0x/types": "^1.5.2", - "@0x/typescript-typings": "^3.0.8", - "@0x/utils": "^3.0.1", - "@0x/web3-wrapper": "^3.2.4", + "@0x/asset-buyer": "^5.0.2", + "@0x/contract-addresses": "^2.2.1", + "@0x/contract-wrappers": "^7.0.1", + "@0x/json-schemas": "^3.0.1", + "@0x/order-utils": "^6.0.0", + "@0x/react-docs": "^2.0.2", + "@0x/react-shared": "^2.0.2", + "@0x/subproviders": "^3.0.1", + "@0x/types": "^2.0.1", + "@0x/typescript-typings": "^4.0.0", + "@0x/utils": "^4.0.2", + "@0x/web3-wrapper": "^4.0.1", "@reach/dialog": "^0.1.2", "@types/react-lazyload": "^2.3.1", "@types/react-loadable": "^5.4.2", @@ -42,7 +42,7 @@ "blockies": "^0.0.2", "bowser": "^1.9.3", "deep-equal": "^1.0.1", - "ethereum-types": "^1.1.6", + "ethereum-types": "^2.0.0", "ethereumjs-util": "^5.1.1", "find-versions": "^2.0.0", "jsonschema": "^1.2.0", @@ -97,7 +97,7 @@ "@types/rc-slider": "^8.6.0", "@types/react": "^16.7.7", "@types/react-copy-to-clipboard": "^4.2.0", - "@types/react-dom": "^16.0.7", + "@types/react-dom": "^16.0.6", "@types/react-helmet": "^5.0.6", "@types/react-redux": "^4.4.37", "@types/react-scroll": "1.5.3", diff --git a/packages/website/ts/components/mobileNav.tsx b/packages/website/ts/components/mobileNav.tsx index d43bbe50e..1aa826755 100644 --- a/packages/website/ts/components/mobileNav.tsx +++ b/packages/website/ts/components/mobileNav.tsx @@ -6,6 +6,7 @@ import { Link } from 'react-router-dom'; import { WrapGrid, WrapProps } from 'ts/components/newLayout'; import { WebsitePaths } from 'ts/types'; +import { constants } from 'ts/utils/constants'; interface Props { isToggled: boolean; @@ -41,7 +42,7 @@ export class MobileNav extends React.PureComponent<Props> { <Link to={WebsitePaths.AboutMission}>About</Link> </li> <li> - <a href="https://blog.0xproject.com/latest" target="_blank"> + <a href={constants.URL_BLOG} target="_blank"> Blog </a> </li> diff --git a/packages/website/ts/utils/constants.ts b/packages/website/ts/utils/constants.ts index ada8de549..03c1a0b83 100644 --- a/packages/website/ts/utils/constants.ts +++ b/packages/website/ts/utils/constants.ts @@ -74,7 +74,7 @@ export const constants = { URL_ANGELLIST: 'https://angel.co/0xproject/jobs', URL_APACHE_LICENSE: 'http://www.apache.org/licenses/LICENSE-2.0', URL_BITLY_API: 'https://api-ssl.bitly.com', - URL_BLOG: 'https://blog.0xproject.com/latest', + URL_BLOG: 'https://blog.0xproject.com', URL_DISCOURSE_FORUM: 'https://forum.0x.org', URL_ECOSYSTEM_APPLY: 'https://0x.smapply.io/', URL_ECOSYSTEM_BLOG_POST: 'https://blog.0xproject.com/announcing-the-0x-ecosystem-acceleration-program-89d1cb89d565', |