From b0e9f5803327f5cbd4ca0cbee7e9217c46a3f1ba Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 14 Nov 2018 15:38:21 +0100 Subject: Fix a bug in an order-watcher order removal when maker token is ZRX --- packages/order-watcher/CHANGELOG.json | 10 ++++++++++ .../src/order_watcher/dependent_order_hashes_tracker.ts | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/order-watcher/CHANGELOG.json b/packages/order-watcher/CHANGELOG.json index 7119d7953..fd6167bd4 100644 --- a/packages/order-watcher/CHANGELOG.json +++ b/packages/order-watcher/CHANGELOG.json @@ -1,4 +1,14 @@ [ + { + "version": "2.2.4", + "changes": [ + { + "note": + "Fix the bug when order watcher was throwing an error on order removal when maker token was ZRX", + "pr": 1259 + } + ] + }, { "version": "2.2.3", "changes": [ diff --git a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts index 1ec568a9b..4c8585985 100644 --- a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts +++ b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts @@ -89,7 +89,9 @@ export class DependentOrderHashesTracker { (decodedMakerAssetData as ERC721AssetData).tokenId, ); } - this._removeFromERC20DependentOrderhashes(signedOrder, this._zrxTokenAddress); + if ((decodedMakerAssetData as ERC20AssetData).tokenAddress !== this._zrxTokenAddress) { + this._removeFromERC20DependentOrderhashes(signedOrder, this._zrxTokenAddress); + } this._removeFromMakerDependentOrderhashes(signedOrder); } private _getDependentOrderHashesByERC20AssetData(makerAddress: string, erc20AssetData: string): string[] { -- cgit From 77c77631e1d11b7a331ecc6ec73cce82ef1eb0b4 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 14 Nov 2018 16:03:19 +0100 Subject: Add a comment --- .../order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts index 4c8585985..a956a94db 100644 --- a/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts +++ b/packages/order-watcher/src/order_watcher/dependent_order_hashes_tracker.ts @@ -89,6 +89,7 @@ export class DependentOrderHashesTracker { (decodedMakerAssetData as ERC721AssetData).tokenId, ); } + // If makerToken === ZRX then we already removed it and we don't need to remove it again. if ((decodedMakerAssetData as ERC20AssetData).tokenAddress !== this._zrxTokenAddress) { this._removeFromERC20DependentOrderhashes(signedOrder, this._zrxTokenAddress); } -- cgit From 3f647c259a69428c1527f55a9cc1e3eaaa65da05 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 14 Nov 2018 16:16:32 +0100 Subject: Updated CHANGELOGS --- packages/0x.js/CHANGELOG.json | 9 +++++++ packages/0x.js/CHANGELOG.md | 4 +++ packages/abi-gen-wrappers/CHANGELOG.json | 9 +++++++ packages/abi-gen-wrappers/CHANGELOG.md | 4 +++ packages/abi-gen/CHANGELOG.json | 9 +++++++ packages/abi-gen/CHANGELOG.md | 4 +++ packages/assert/CHANGELOG.json | 9 +++++++ packages/assert/CHANGELOG.md | 4 +++ packages/asset-buyer/CHANGELOG.json | 3 ++- packages/asset-buyer/CHANGELOG.md | 4 +++ packages/base-contract/CHANGELOG.json | 9 +++++++ packages/base-contract/CHANGELOG.md | 4 +++ packages/connect/CHANGELOG.json | 9 +++++++ packages/connect/CHANGELOG.md | 4 +++ packages/contract-wrappers/CHANGELOG.json | 9 +++++++ packages/contract-wrappers/CHANGELOG.md | 4 +++ packages/dev-utils/CHANGELOG.json | 9 +++++++ packages/dev-utils/CHANGELOG.md | 4 +++ packages/fill-scenarios/CHANGELOG.json | 9 +++++++ packages/fill-scenarios/CHANGELOG.md | 4 +++ packages/json-schemas/CHANGELOG.json | 9 +++++++ packages/json-schemas/CHANGELOG.md | 4 +++ packages/migrations/CHANGELOG.json | 9 +++++++ packages/migrations/CHANGELOG.md | 4 +++ packages/order-utils/CHANGELOG.json | 9 +++++++ packages/order-utils/CHANGELOG.md | 4 +++ packages/order-watcher/CHANGELOG.json | 3 ++- packages/order-watcher/CHANGELOG.md | 4 +++ packages/react-docs/CHANGELOG.json | 9 +++++++ packages/react-docs/CHANGELOG.md | 4 +++ packages/react-shared/CHANGELOG.json | 9 +++++++ packages/react-shared/CHANGELOG.md | 4 +++ packages/sol-compiler/CHANGELOG.json | 9 +++++++ packages/sol-compiler/CHANGELOG.md | 4 +++ packages/sol-cov/CHANGELOG.json | 9 +++++++ packages/sol-cov/CHANGELOG.md | 4 +++ packages/sol-doc/CHANGELOG.json | 9 +++++++ packages/sol-doc/CHANGELOG.md | 4 +++ packages/sra-spec/CHANGELOG.json | 9 +++++++ packages/sra-spec/CHANGELOG.md | 4 +++ packages/subproviders/CHANGELOG.json | 9 +++++++ packages/subproviders/CHANGELOG.md | 4 +++ packages/utils/CHANGELOG.json | 9 +++++++ packages/utils/CHANGELOG.md | 4 +++ packages/web3-wrapper/CHANGELOG.json | 9 +++++++ packages/web3-wrapper/CHANGELOG.md | 4 +++ yarn.lock | 41 ++----------------------------- 47 files changed, 287 insertions(+), 41 deletions(-) diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index d8b99b7b4..0321ee200 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "2.0.3", diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index 46ec1ac5b..2467311bf 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.4 - _November 14, 2018_ + + * Dependencies updated + ## v2.0.3 - _November 13, 2018_ * Dependencies updated diff --git a/packages/abi-gen-wrappers/CHANGELOG.json b/packages/abi-gen-wrappers/CHANGELOG.json index 9658c0377..fff2bc41e 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.json +++ b/packages/abi-gen-wrappers/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.4", diff --git a/packages/abi-gen-wrappers/CHANGELOG.md b/packages/abi-gen-wrappers/CHANGELOG.md index 45b91ad56..4dea965f1 100644 --- a/packages/abi-gen-wrappers/CHANGELOG.md +++ b/packages/abi-gen-wrappers/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.5 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.4 - _November 13, 2018_ * Dependencies updated diff --git a/packages/abi-gen/CHANGELOG.json b/packages/abi-gen/CHANGELOG.json index 658a997f4..1735c6b53 100644 --- a/packages/abi-gen/CHANGELOG.json +++ b/packages/abi-gen/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.16", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "1.0.15", "changes": [ diff --git a/packages/abi-gen/CHANGELOG.md b/packages/abi-gen/CHANGELOG.md index 21fda1656..23e2f8914 100644 --- a/packages/abi-gen/CHANGELOG.md +++ b/packages/abi-gen/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.16 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.15 - _November 9, 2018_ * Dependencies updated diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index 67c14f68f..2b4a3e7a1 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.17", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542028948, "version": "1.0.16", diff --git a/packages/assert/CHANGELOG.md b/packages/assert/CHANGELOG.md index 01b1dbbb5..66f0971c1 100644 --- a/packages/assert/CHANGELOG.md +++ b/packages/assert/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.17 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.16 - _November 12, 2018_ * Dependencies updated diff --git a/packages/asset-buyer/CHANGELOG.json b/packages/asset-buyer/CHANGELOG.json index 826b6150d..0e4623d05 100644 --- a/packages/asset-buyer/CHANGELOG.json +++ b/packages/asset-buyer/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "update `getBuyQuoteAsync` to return eth spent on assets instead of per unit amount", "pr": 1252 } - ] + ], + "timestamp": 1542208198 }, { "timestamp": 1542134075, diff --git a/packages/asset-buyer/CHANGELOG.md b/packages/asset-buyer/CHANGELOG.md index e10a42136..d6013e53e 100644 --- a/packages/asset-buyer/CHANGELOG.md +++ b/packages/asset-buyer/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.0 - _November 14, 2018_ + + * update `getBuyQuoteAsync` to return eth spent on assets instead of per unit amount (#1252) + ## v2.2.2 - _November 13, 2018_ * Dependencies updated diff --git a/packages/base-contract/CHANGELOG.json b/packages/base-contract/CHANGELOG.json index da86b840b..dc30ac076 100644 --- a/packages/base-contract/CHANGELOG.json +++ b/packages/base-contract/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "3.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "3.0.5", diff --git a/packages/base-contract/CHANGELOG.md b/packages/base-contract/CHANGELOG.md index 21dcbb8dc..cf1b80b6d 100644 --- a/packages/base-contract/CHANGELOG.md +++ b/packages/base-contract/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.6 - _November 14, 2018_ + + * Dependencies updated + ## v3.0.5 - _November 13, 2018_ * Dependencies updated diff --git a/packages/connect/CHANGELOG.json b/packages/connect/CHANGELOG.json index 3c86284d3..6960e1d97 100644 --- a/packages/connect/CHANGELOG.json +++ b/packages/connect/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "3.0.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "3.0.5", diff --git a/packages/connect/CHANGELOG.md b/packages/connect/CHANGELOG.md index 2ce218821..13afad09b 100644 --- a/packages/connect/CHANGELOG.md +++ b/packages/connect/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.6 - _November 14, 2018_ + + * Dependencies updated + ## v3.0.5 - _November 13, 2018_ * Dependencies updated diff --git a/packages/contract-wrappers/CHANGELOG.json b/packages/contract-wrappers/CHANGELOG.json index a454a067d..fbf3972a9 100644 --- a/packages/contract-wrappers/CHANGELOG.json +++ b/packages/contract-wrappers/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "4.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "4.0.1", diff --git a/packages/contract-wrappers/CHANGELOG.md b/packages/contract-wrappers/CHANGELOG.md index 4352f4ecd..eca1b4633 100644 --- a/packages/contract-wrappers/CHANGELOG.md +++ b/packages/contract-wrappers/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v4.0.2 - _November 14, 2018_ + + * Dependencies updated + ## v4.0.1 - _November 13, 2018_ * Dependencies updated diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index 82b988c7b..d6cdd1c5a 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.17", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.16", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 134667db2..4becadf81 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.17 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.16 - _November 13, 2018_ * Dependencies updated diff --git a/packages/fill-scenarios/CHANGELOG.json b/packages/fill-scenarios/CHANGELOG.json index 9b0a4ba92..deeae5f5d 100644 --- a/packages/fill-scenarios/CHANGELOG.json +++ b/packages/fill-scenarios/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.12", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.11", diff --git a/packages/fill-scenarios/CHANGELOG.md b/packages/fill-scenarios/CHANGELOG.md index 8812c7ded..c8bd402de 100644 --- a/packages/fill-scenarios/CHANGELOG.md +++ b/packages/fill-scenarios/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.12 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.11 - _November 13, 2018_ * Dependencies updated diff --git a/packages/json-schemas/CHANGELOG.json b/packages/json-schemas/CHANGELOG.json index 24eacd192..bf815e523 100644 --- a/packages/json-schemas/CHANGELOG.json +++ b/packages/json-schemas/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.1.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "2.1.0", "changes": [ diff --git a/packages/json-schemas/CHANGELOG.md b/packages/json-schemas/CHANGELOG.md index 4f77d3aee..dc412bded 100644 --- a/packages/json-schemas/CHANGELOG.md +++ b/packages/json-schemas/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.1 - _November 14, 2018_ + + * Dependencies updated + ## v2.1.0 - _November 12, 2018_ * Improve schemas by enforcing that amounts that must be whole numbers (e.g Order asset amounts) no longer allow decimal amounts (#1173) diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json index dfceeff8a..5b0d58909 100644 --- a/packages/migrations/CHANGELOG.json +++ b/packages/migrations/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.0.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "2.0.3", diff --git a/packages/migrations/CHANGELOG.md b/packages/migrations/CHANGELOG.md index ba1f59295..87d0b25ca 100644 --- a/packages/migrations/CHANGELOG.md +++ b/packages/migrations/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.4 - _November 14, 2018_ + + * Dependencies updated + ## v2.0.3 - _November 13, 2018_ * Dependencies updated diff --git a/packages/order-utils/CHANGELOG.json b/packages/order-utils/CHANGELOG.json index d2a10ca02..55e7defda 100644 --- a/packages/order-utils/CHANGELOG.json +++ b/packages/order-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "3.0.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "3.0.1", diff --git a/packages/order-utils/CHANGELOG.md b/packages/order-utils/CHANGELOG.md index bfb6082af..edf1569a7 100644 --- a/packages/order-utils/CHANGELOG.md +++ b/packages/order-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.0.2 - _November 14, 2018_ + + * Dependencies updated + ## v3.0.1 - _November 13, 2018_ * Dependencies updated diff --git a/packages/order-watcher/CHANGELOG.json b/packages/order-watcher/CHANGELOG.json index fd6167bd4..b4d7a1501 100644 --- a/packages/order-watcher/CHANGELOG.json +++ b/packages/order-watcher/CHANGELOG.json @@ -7,7 +7,8 @@ "Fix the bug when order watcher was throwing an error on order removal when maker token was ZRX", "pr": 1259 } - ] + ], + "timestamp": 1542208198 }, { "version": "2.2.3", diff --git a/packages/order-watcher/CHANGELOG.md b/packages/order-watcher/CHANGELOG.md index 018a0d206..c7003f759 100644 --- a/packages/order-watcher/CHANGELOG.md +++ b/packages/order-watcher/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.2.4 - _November 14, 2018_ + + * Fix the bug when order watcher was throwing an error on order removal when maker token was ZRX (#1259) + ## v2.2.3 - _November 13, 2018_ * Start jsonRpcRequestId at 1, not 0 as 0 breaks the web3.js websocket RPC provider (#1227) diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 401070f2a..0e9afc32a 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.18", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.17", diff --git a/packages/react-docs/CHANGELOG.md b/packages/react-docs/CHANGELOG.md index 1cbbc7a84..db574e41b 100644 --- a/packages/react-docs/CHANGELOG.md +++ b/packages/react-docs/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.18 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.17 - _November 13, 2018_ * Dependencies updated diff --git a/packages/react-shared/CHANGELOG.json b/packages/react-shared/CHANGELOG.json index a54d7d1dc..cb8ae1bf0 100644 --- a/packages/react-shared/CHANGELOG.json +++ b/packages/react-shared/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.21", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.20", diff --git a/packages/react-shared/CHANGELOG.md b/packages/react-shared/CHANGELOG.md index 93a6b2694..0ecb66a27 100644 --- a/packages/react-shared/CHANGELOG.md +++ b/packages/react-shared/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.21 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.20 - _November 13, 2018_ * Dependencies updated diff --git a/packages/sol-compiler/CHANGELOG.json b/packages/sol-compiler/CHANGELOG.json index cabfe4aab..fc39106dc 100644 --- a/packages/sol-compiler/CHANGELOG.json +++ b/packages/sol-compiler/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.1.12", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.1.11", diff --git a/packages/sol-compiler/CHANGELOG.md b/packages/sol-compiler/CHANGELOG.md index 11030718b..b69976cdc 100644 --- a/packages/sol-compiler/CHANGELOG.md +++ b/packages/sol-compiler/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.1.12 - _November 14, 2018_ + + * Dependencies updated + ## v1.1.11 - _November 13, 2018_ * Dependencies updated diff --git a/packages/sol-cov/CHANGELOG.json b/packages/sol-cov/CHANGELOG.json index 7512c8b61..bdeda8a96 100644 --- a/packages/sol-cov/CHANGELOG.json +++ b/packages/sol-cov/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.1.12", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "2.1.11", diff --git a/packages/sol-cov/CHANGELOG.md b/packages/sol-cov/CHANGELOG.md index be8522a6b..906c0dd52 100644 --- a/packages/sol-cov/CHANGELOG.md +++ b/packages/sol-cov/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.12 - _November 14, 2018_ + + * Dependencies updated + ## v2.1.11 - _November 13, 2018_ * Dependencies updated diff --git a/packages/sol-doc/CHANGELOG.json b/packages/sol-doc/CHANGELOG.json index 52659e99b..a9547c883 100644 --- a/packages/sol-doc/CHANGELOG.json +++ b/packages/sol-doc/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "1.0.6", diff --git a/packages/sol-doc/CHANGELOG.md b/packages/sol-doc/CHANGELOG.md index b1654bb7f..74a736c75 100644 --- a/packages/sol-doc/CHANGELOG.md +++ b/packages/sol-doc/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.7 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.6 - _November 13, 2018_ * Dependencies updated diff --git a/packages/sra-spec/CHANGELOG.json b/packages/sra-spec/CHANGELOG.json index 37ad85385..3cc917e5a 100644 --- a/packages/sra-spec/CHANGELOG.json +++ b/packages/sra-spec/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "1.0.10", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542028948, "version": "1.0.9", diff --git a/packages/sra-spec/CHANGELOG.md b/packages/sra-spec/CHANGELOG.md index c53ad6b5b..8b2b7747b 100644 --- a/packages/sra-spec/CHANGELOG.md +++ b/packages/sra-spec/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v1.0.10 - _November 14, 2018_ + + * Dependencies updated + ## v1.0.9 - _November 12, 2018_ * Dependencies updated diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index 2524c3945..cdc150c3a 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.1.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "2.1.3", diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md index c618a2067..eda76bd2f 100644 --- a/packages/subproviders/CHANGELOG.md +++ b/packages/subproviders/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.1.4 - _November 14, 2018_ + + * Dependencies updated + ## v2.1.3 - _November 13, 2018_ * Dependencies updated diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index 6c9da5f37..1ef16e112 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "2.0.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "2.0.4", "changes": [ diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 4fdd13d9c..9846dd344 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v2.0.5 - _November 14, 2018_ + + * Dependencies updated + ## v2.0.4 - _November 9, 2018_ * Dependencies updated diff --git a/packages/web3-wrapper/CHANGELOG.json b/packages/web3-wrapper/CHANGELOG.json index 8390f3804..b938f6986 100644 --- a/packages/web3-wrapper/CHANGELOG.json +++ b/packages/web3-wrapper/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1542208198, + "version": "3.1.4", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1542134075, "version": "3.1.3", diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md index c9fc00beb..70a00ee1e 100644 --- a/packages/web3-wrapper/CHANGELOG.md +++ b/packages/web3-wrapper/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v3.1.4 - _November 14, 2018_ + + * Dependencies updated + ## v3.1.3 - _November 13, 2018_ * Dependencies updated diff --git a/yarn.lock b/yarn.lock index 928326e00..648db1b0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1906,10 +1906,6 @@ aes-js@^0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" -aes-js@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" @@ -3347,7 +3343,7 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "^2.0.0" -bs58@=4.0.1, bs58@^4.0.0: +bs58@=4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" dependencies: @@ -3370,14 +3366,6 @@ bs58check@^1.0.8: bs58 "^3.1.0" create-hash "^1.1.0" -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - bser@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -5965,19 +5953,6 @@ ethereumjs-wallet@0.6.0: utf8 "^2.1.1" uuid "^2.0.1" -ethereumjs-wallet@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz#67244b6af3e8113b53d709124b25477b64aeccda" - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereumjs-util "^5.2.0" - hdkey "^1.0.0" - safe-buffer "^5.1.2" - scrypt.js "^0.2.0" - utf8 "^3.0.0" - uuid "^3.3.2" - ethers@~4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.4.tgz#d3f85e8b27f4b59537e06526439b0fb15b44dc65" @@ -6786,7 +6761,7 @@ ganache-core@0xProject/ganache-core#monorepo-dep: ethereumjs-tx "0xProject/ethereumjs-tx#fake-tx-include-signature-by-default" ethereumjs-util "^5.2.0" ethereumjs-vm "2.3.5" - ethereumjs-wallet "0.6.0" + ethereumjs-wallet "~0.6.0" fake-merkle-patricia-tree "~1.0.1" heap "~0.2.6" js-scrypt "^0.2.0" @@ -7511,14 +7486,6 @@ hdkey@^0.7.0, hdkey@^0.7.1: coinstring "^2.0.0" secp256k1 "^3.0.1" -hdkey@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.0.tgz#e74e7b01d2c47f797fa65d1d839adb7a44639f29" - dependencies: - coinstring "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -15605,10 +15572,6 @@ utf8@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" -utf8@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -- cgit From fe1b7f15e8531615a54e46581cb734e635d3c755 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 14 Nov 2018 16:16:46 +0100 Subject: Publish - 0x.js@2.0.4 - @0x/abi-gen@1.0.16 - @0x/abi-gen-wrappers@1.0.5 - @0x/assert@1.0.17 - @0x/asset-buyer@3.0.0 - @0x/base-contract@3.0.6 - @0x/connect@3.0.6 - @0x/contract-wrappers@4.0.2 - contracts@2.1.54 - @0x/dev-tools-pages@0.0.6 - @0x/dev-utils@1.0.17 - @0x/fill-scenarios@1.0.12 - @0x/instant@0.0.7 - @0x/json-schemas@2.1.1 - @0x/metacoin@0.0.28 - @0x/migrations@2.0.4 - @0x/order-utils@3.0.2 - @0x/order-watcher@2.2.4 - @0x/react-docs@1.0.18 - @0x/react-shared@1.0.21 - @0x/sol-compiler@1.1.12 - @0x/sol-cov@2.1.12 - @0x/sol-doc@1.0.7 - @0x/sra-spec@1.0.10 - @0x/subproviders@2.1.4 - @0x/testnet-faucets@1.0.56 - @0x/utils@2.0.5 - @0x/web3-wrapper@3.1.4 - @0x/website@0.0.59 --- packages/0x.js/package.json | 26 +++++++++++++------------- packages/abi-gen-wrappers/package.json | 10 +++++----- packages/abi-gen/package.json | 4 ++-- packages/assert/package.json | 6 +++--- packages/asset-buyer/package.json | 18 +++++++++--------- packages/base-contract/package.json | 6 +++--- packages/connect/package.json | 10 +++++----- packages/contract-wrappers/package.json | 22 +++++++++++----------- packages/contracts/package.json | 20 ++++++++++---------- packages/dev-tools-pages/package.json | 4 ++-- packages/dev-utils/package.json | 8 ++++---- packages/fill-scenarios/package.json | 12 ++++++------ packages/instant/package.json | 16 ++++++++-------- packages/json-schemas/package.json | 4 ++-- packages/metacoin/package.json | 18 +++++++++--------- packages/migrations/package.json | 18 +++++++++--------- packages/order-utils/package.json | 16 ++++++++-------- packages/order-watcher/package.json | 24 ++++++++++++------------ packages/react-docs/package.json | 8 ++++---- packages/react-shared/package.json | 4 ++-- packages/sol-compiler/package.json | 12 ++++++------ packages/sol-cov/package.json | 12 ++++++------ packages/sol-doc/package.json | 6 +++--- packages/sra-spec/package.json | 4 ++-- packages/subproviders/package.json | 8 ++++---- packages/testnet-faucets/package.json | 10 +++++----- packages/utils/package.json | 2 +- packages/web3-wrapper/package.json | 8 ++++---- packages/website/package.json | 18 +++++++++--------- 29 files changed, 167 insertions(+), 167 deletions(-) diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index c0f1d15d3..755ff7512 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,6 +1,6 @@ { "name": "0x.js", - "version": "2.0.3", + "version": "2.0.4", "engines": { "node": ">=6.12" }, @@ -42,11 +42,11 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/abi-gen": "^1.0.15", - "@0x/abi-gen-wrappers": "^1.0.4", + "@0x/abi-gen": "^1.0.16", + "@0x/abi-gen-wrappers": "^1.0.5", "@0x/contract-addresses": "^1.1.0", - "@0x/dev-utils": "^1.0.16", - "@0x/migrations": "^2.0.3", + "@0x/dev-utils": "^1.0.17", + "@0x/migrations": "^2.0.4", "@0x/tslint-config": "^1.0.10", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -73,16 +73,16 @@ "webpack": "^4.20.2" }, "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/base-contract": "^3.0.5", - "@0x/contract-wrappers": "^4.0.1", - "@0x/order-utils": "^3.0.1", - "@0x/order-watcher": "^2.2.3", - "@0x/subproviders": "^2.1.3", + "@0x/assert": "^1.0.17", + "@0x/base-contract": "^3.0.6", + "@0x/contract-wrappers": "^4.0.2", + "@0x/order-utils": "^3.0.2", + "@0x/order-watcher": "^2.2.4", + "@0x/subproviders": "^2.1.4", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/web3-provider-engine": "^14.0.0", "ethereum-types": "^1.1.2", "ethers": "~4.0.4", diff --git a/packages/abi-gen-wrappers/package.json b/packages/abi-gen-wrappers/package.json index 9d7833c7b..7236cf6ff 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": "1.0.4", + "version": "1.0.5", "engines": { "node": ">=6.12" }, @@ -30,17 +30,17 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md", "devDependencies": { - "@0x/abi-gen": "^1.0.15", + "@0x/abi-gen": "^1.0.16", "@0x/tslint-config": "^1.0.10", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "ethereum-types": "^1.1.2", "ethers": "~4.0.4", "lodash": "^4.17.5", "shx": "^0.2.2" }, "dependencies": { - "@0x/base-contract": "^3.0.5" + "@0x/base-contract": "^3.0.6" }, "publishConfig": { "access": "public" diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index 5367c9c29..f69d24116 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0x/abi-gen", - "version": "1.0.15", + "version": "1.0.16", "engines": { "node": ">=6.12" }, @@ -32,7 +32,7 @@ "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "dependencies": { "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "chalk": "^2.3.0", "ethereum-types": "^1.1.2", "glob": "^7.1.2", diff --git a/packages/assert/package.json b/packages/assert/package.json index 1db886737..ec093a5be 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0x/assert", - "version": "1.0.16", + "version": "1.0.17", "engines": { "node": ">=6.12" }, @@ -44,9 +44,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/json-schemas": "^2.1.0", + "@0x/json-schemas": "^2.1.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "lodash": "^4.17.5", "valid-url": "^1.0.9" }, diff --git a/packages/asset-buyer/package.json b/packages/asset-buyer/package.json index 2b577a5e2..fad33476b 100644 --- a/packages/asset-buyer/package.json +++ b/packages/asset-buyer/package.json @@ -1,6 +1,6 @@ { "name": "@0x/asset-buyer", - "version": "2.2.2", + "version": "3.0.0", "engines": { "node": ">=6.12" }, @@ -36,16 +36,16 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/asset-buyer/README.md", "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/connect": "^3.0.5", - "@0x/contract-wrappers": "^4.0.1", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", - "@0x/subproviders": "^2.1.3", + "@0x/assert": "^1.0.17", + "@0x/connect": "^3.0.6", + "@0x/contract-wrappers": "^4.0.2", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", + "@0x/subproviders": "^2.1.4", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "ethereum-types": "^1.1.2", "lodash": "^4.17.10" }, diff --git a/packages/base-contract/package.json b/packages/base-contract/package.json index fb418d6fc..b1cdc3cc6 100644 --- a/packages/base-contract/package.json +++ b/packages/base-contract/package.json @@ -1,6 +1,6 @@ { "name": "@0x/base-contract", - "version": "3.0.5", + "version": "3.0.6", "engines": { "node": ">=6.12" }, @@ -41,8 +41,8 @@ }, "dependencies": { "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "ethereum-types": "^1.1.2", "ethers": "~4.0.4", "lodash": "^4.17.5" diff --git a/packages/connect/package.json b/packages/connect/package.json index fd44fe44a..8e3f3ac8f 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,6 +1,6 @@ { "name": "@0x/connect", - "version": "3.0.5", + "version": "3.0.6", "engines": { "node": ">=6.12" }, @@ -44,12 +44,12 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", + "@0x/assert": "^1.0.17", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "lodash": "^4.17.5", "query-string": "^5.0.1", "sinon": "^4.0.0", diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index 678f42fde..2d6b4e3f8 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@0x/contract-wrappers", - "version": "4.0.1", + "version": "4.0.2", "description": "Smart TS wrappers for 0x smart contracts", "keywords": [ "0xproject", @@ -37,9 +37,9 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.16", - "@0x/migrations": "^2.0.3", - "@0x/subproviders": "^2.1.3", + "@0x/dev-utils": "^1.0.17", + "@0x/migrations": "^2.0.4", + "@0x/subproviders": "^2.1.4", "@0x/tslint-config": "^1.0.10", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -65,17 +65,17 @@ "web3-provider-engine": "14.0.6" }, "dependencies": { - "@0x/abi-gen-wrappers": "^1.0.4", - "@0x/assert": "^1.0.16", + "@0x/abi-gen-wrappers": "^1.0.5", + "@0x/assert": "^1.0.17", "@0x/contract-addresses": "^1.1.0", "@0x/contract-artifacts": "^1.1.0", - "@0x/fill-scenarios": "^1.0.11", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", + "@0x/fill-scenarios": "^1.0.12", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "ethereum-types": "^1.1.2", "ethereumjs-blockstream": "6.0.0", "ethereumjs-util": "^5.1.1", diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 7ea31d20c..c87e2e95b 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "contracts", - "version": "2.1.53", + "version": "2.1.54", "engines": { "node": ">=6.12" }, @@ -45,11 +45,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts/README.md", "devDependencies": { - "@0x/abi-gen": "^1.0.15", - "@0x/dev-utils": "^1.0.16", - "@0x/sol-compiler": "^1.1.11", - "@0x/sol-cov": "^2.1.11", - "@0x/subproviders": "^2.1.3", + "@0x/abi-gen": "^1.0.16", + "@0x/dev-utils": "^1.0.17", + "@0x/sol-compiler": "^1.1.12", + "@0x/sol-cov": "^2.1.12", + "@0x/subproviders": "^2.1.4", "@0x/tslint-config": "^1.0.10", "@types/bn.js": "^4.11.0", "@types/ethereumjs-abi": "^0.6.0", @@ -71,12 +71,12 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/base-contract": "^3.0.5", - "@0x/order-utils": "^3.0.1", + "@0x/base-contract": "^3.0.6", + "@0x/order-utils": "^3.0.2", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/js-combinatorics": "^0.5.29", "bn.js": "^4.11.8", "ethereum-types": "^1.1.2", diff --git a/packages/dev-tools-pages/package.json b/packages/dev-tools-pages/package.json index 01c3c3514..e6d954f15 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.5", + "version": "0.0.6", "engines": { "node": ">=6.12" }, @@ -16,7 +16,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@0x/react-shared": "^1.0.20", + "@0x/react-shared": "^1.0.21", "basscss": "^8.0.3", "bowser": "^1.9.3", "less": "^2.7.2", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index aef64e9c1..3db391131 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/dev-utils", - "version": "1.0.16", + "version": "1.0.17", "engines": { "node": ">=6.12" }, @@ -41,11 +41,11 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/subproviders": "^2.1.3", + "@0x/subproviders": "^2.1.4", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/web3-provider-engine": "^14.0.0", "chai": "^4.0.1", "ethereum-types": "^1.1.2", diff --git a/packages/fill-scenarios/package.json b/packages/fill-scenarios/package.json index 725bf68cf..2d9bff0e7 100644 --- a/packages/fill-scenarios/package.json +++ b/packages/fill-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@0x/fill-scenarios", - "version": "1.0.11", + "version": "1.0.12", "description": "0x order fill scenario generator", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -28,14 +28,14 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^1.0.4", - "@0x/base-contract": "^3.0.5", + "@0x/abi-gen-wrappers": "^1.0.5", + "@0x/base-contract": "^3.0.6", "@0x/contract-artifacts": "^1.1.0", - "@0x/order-utils": "^3.0.1", + "@0x/order-utils": "^3.0.2", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "ethereum-types": "^1.1.2", "ethers": "~4.0.4", "lodash": "^4.17.5" diff --git a/packages/instant/package.json b/packages/instant/package.json index f71fe45ef..6116d67ae 100644 --- a/packages/instant/package.json +++ b/packages/instant/package.json @@ -1,6 +1,6 @@ { "name": "@0x/instant", - "version": "0.0.6", + "version": "0.0.7", "engines": { "node": ">=6.12" }, @@ -45,15 +45,15 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/instant/README.md", "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/asset-buyer": "^2.2.2", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", - "@0x/subproviders": "^2.1.3", + "@0x/assert": "^1.0.17", + "@0x/asset-buyer": "^3.0.0", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", + "@0x/subproviders": "^2.1.4", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "copy-to-clipboard": "^3.0.8", "ethereum-types": "^1.1.2", "lodash": "^4.17.10", diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index 2f57f5097..fb89a2d5b 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0x/json-schemas", - "version": "2.1.0", + "version": "2.1.1", "engines": { "node": ">=6.12" }, @@ -46,7 +46,7 @@ }, "devDependencies": { "@0x/tslint-config": "^1.0.10", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 91b8f1468..f990db6b0 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -1,6 +1,6 @@ { "name": "@0x/metacoin", - "version": "0.0.27", + "version": "0.0.28", "engines": { "node": ">=6.12" }, @@ -29,15 +29,15 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@0x/abi-gen": "^1.0.15", - "@0x/base-contract": "^3.0.5", - "@0x/sol-cov": "^2.1.11", - "@0x/subproviders": "^2.1.3", + "@0x/abi-gen": "^1.0.16", + "@0x/base-contract": "^3.0.6", + "@0x/sol-cov": "^2.1.12", + "@0x/subproviders": "^2.1.4", "@0x/tslint-config": "^1.0.10", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/mocha": "^5.2.2", "copyfiles": "^2.0.0", "ethereum-types": "^1.1.2", @@ -46,8 +46,8 @@ "run-s": "^0.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.16", - "@0x/sol-compiler": "^1.1.11", + "@0x/dev-utils": "^1.0.17", + "@0x/sol-compiler": "^1.1.12", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^2.0.1", diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 654db6495..8eaae96ba 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -1,6 +1,6 @@ { "name": "@0x/migrations", - "version": "2.0.3", + "version": "2.0.4", "engines": { "node": ">=6.12" }, @@ -17,7 +17,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@0x/dev-utils": "^1.0.16", + "@0x/dev-utils": "^1.0.17", "@0x/tslint-config": "^1.0.10", "@0x/types": "^1.2.1", "@types/yargs": "^10.0.0", @@ -29,16 +29,16 @@ "yargs": "^10.0.3" }, "dependencies": { - "@0x/abi-gen-wrappers": "^1.0.4", - "@0x/base-contract": "^3.0.5", + "@0x/abi-gen-wrappers": "^1.0.5", + "@0x/base-contract": "^3.0.6", "@0x/contract-addresses": "^1.1.0", "@0x/contract-artifacts": "^1.1.0", - "@0x/order-utils": "^3.0.1", - "@0x/sol-compiler": "^1.1.11", - "@0x/subproviders": "^2.1.3", + "@0x/order-utils": "^3.0.2", + "@0x/sol-compiler": "^1.1.12", + "@0x/subproviders": "^2.1.4", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@ledgerhq/hw-app-eth": "^4.3.0", "ethereum-types": "^1.1.2", "ethers": "~4.0.4", diff --git a/packages/order-utils/package.json b/packages/order-utils/package.json index e5eacb272..fe5ea70b1 100644 --- a/packages/order-utils/package.json +++ b/packages/order-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-utils", - "version": "3.0.1", + "version": "3.0.2", "engines": { "node": ">=6.12" }, @@ -35,7 +35,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/order-utils/README.md", "devDependencies": { - "@0x/dev-utils": "^1.0.16", + "@0x/dev-utils": "^1.0.17", "@0x/tslint-config": "^1.0.10", "@types/bn.js": "^4.11.0", "@types/lodash": "4.14.104", @@ -53,15 +53,15 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^1.0.4", - "@0x/assert": "^1.0.16", - "@0x/base-contract": "^3.0.5", + "@0x/abi-gen-wrappers": "^1.0.5", + "@0x/assert": "^1.0.17", + "@0x/base-contract": "^3.0.6", "@0x/contract-artifacts": "^1.1.0", - "@0x/json-schemas": "^2.1.0", + "@0x/json-schemas": "^2.1.1", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/node": "*", "bn.js": "^4.11.8", "ethereum-types": "^1.1.2", diff --git a/packages/order-watcher/package.json b/packages/order-watcher/package.json index 2bab37908..af88a120e 100644 --- a/packages/order-watcher/package.json +++ b/packages/order-watcher/package.json @@ -1,6 +1,6 @@ { "name": "@0x/order-watcher", - "version": "2.2.3", + "version": "2.2.4", "description": "An order watcher daemon that watches for order validity", "keywords": [ "0x", @@ -33,8 +33,8 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0x/dev-utils": "^1.0.16", - "@0x/migrations": "^2.0.3", + "@0x/dev-utils": "^1.0.17", + "@0x/migrations": "^2.0.4", "@0x/tslint-config": "^1.0.10", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", @@ -57,19 +57,19 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/abi-gen-wrappers": "^1.0.4", - "@0x/assert": "^1.0.16", - "@0x/base-contract": "^3.0.5", + "@0x/abi-gen-wrappers": "^1.0.5", + "@0x/assert": "^1.0.17", + "@0x/base-contract": "^3.0.6", "@0x/contract-addresses": "^1.1.0", "@0x/contract-artifacts": "^1.1.0", - "@0x/contract-wrappers": "^4.0.1", - "@0x/fill-scenarios": "^1.0.11", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", + "@0x/contract-wrappers": "^4.0.2", + "@0x/fill-scenarios": "^1.0.12", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "bintrees": "^1.0.2", "ethereum-types": "^1.1.2", "ethereumjs-blockstream": "6.0.0", diff --git a/packages/react-docs/package.json b/packages/react-docs/package.json index 31101becb..3e77a9a07 100644 --- a/packages/react-docs/package.json +++ b/packages/react-docs/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-docs", - "version": "1.0.17", + "version": "1.0.18", "engines": { "node": ">=6.12" }, @@ -24,7 +24,7 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^1.0.16", + "@0x/dev-utils": "^1.0.17", "@0x/tslint-config": "^1.0.10", "@types/compare-versions": "^3.0.0", "@types/styled-components": "^4.0.0", @@ -34,9 +34,9 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/react-shared": "^1.0.20", + "@0x/react-shared": "^1.0.21", "@0x/types": "^1.2.1", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "@types/lodash": "4.14.104", "@types/material-ui": "^0.20.0", "@types/node": "*", diff --git a/packages/react-shared/package.json b/packages/react-shared/package.json index e372178b1..d2a00ca9c 100644 --- a/packages/react-shared/package.json +++ b/packages/react-shared/package.json @@ -1,6 +1,6 @@ { "name": "@0x/react-shared", - "version": "1.0.20", + "version": "1.0.21", "engines": { "node": ">=6.12" }, @@ -25,7 +25,7 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0x/dev-utils": "^1.0.16", + "@0x/dev-utils": "^1.0.17", "@0x/tslint-config": "^1.0.10", "make-promises-safe": "^1.1.0", "shx": "^0.2.2", diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index 4c3d0928f..2904cfd23 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-compiler", - "version": "1.1.11", + "version": "1.1.12", "engines": { "node": ">=6.12" }, @@ -42,7 +42,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sol-compiler/README.md", "devDependencies": { - "@0x/dev-utils": "^1.0.16", + "@0x/dev-utils": "^1.0.17", "@0x/tslint-config": "^1.0.10", "@types/mkdirp": "^0.5.2", "@types/require-from-string": "^1.2.0", @@ -65,13 +65,13 @@ "zeppelin-solidity": "1.8.0" }, "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/json-schemas": "^2.1.0", + "@0x/assert": "^1.0.17", + "@0x/json-schemas": "^2.1.1", "@0x/sol-resolver": "^1.0.16", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/yargs": "^11.0.0", "chalk": "^2.3.0", "ethereum-types": "^1.1.2", diff --git a/packages/sol-cov/package.json b/packages/sol-cov/package.json index b5f84a43b..159a2207d 100644 --- a/packages/sol-cov/package.json +++ b/packages/sol-cov/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-cov", - "version": "2.1.11", + "version": "2.1.12", "engines": { "node": ">=6.12" }, @@ -42,12 +42,12 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/sol-cov/README.md", "dependencies": { - "@0x/dev-utils": "^1.0.16", - "@0x/sol-compiler": "^1.1.11", - "@0x/subproviders": "^2.1.3", + "@0x/dev-utils": "^1.0.17", + "@0x/sol-compiler": "^1.1.12", + "@0x/subproviders": "^2.1.4", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@types/solidity-parser-antlr": "^0.2.0", "ethereum-types": "^1.1.2", "ethereumjs-util": "^5.1.1", diff --git a/packages/sol-doc/package.json b/packages/sol-doc/package.json index 22de4b764..e56408f98 100644 --- a/packages/sol-doc/package.json +++ b/packages/sol-doc/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sol-doc", - "version": "1.0.6", + "version": "1.0.7", "description": "Solidity documentation generator", "main": "lib/src/index.js", "types": "lib/src/index.d.js", @@ -25,9 +25,9 @@ "author": "F. Eugene Aumson", "license": "Apache-2.0", "dependencies": { - "@0x/sol-compiler": "^1.1.11", + "@0x/sol-compiler": "^1.1.12", "@0x/types": "^1.2.1", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "ethereum-types": "^1.1.2", "ethereumjs-util": "^5.1.1", "lodash": "^4.17.10", diff --git a/packages/sra-spec/package.json b/packages/sra-spec/package.json index 1b7d0ccab..fac5a5a4b 100644 --- a/packages/sra-spec/package.json +++ b/packages/sra-spec/package.json @@ -1,6 +1,6 @@ { "name": "@0x/sra-spec", - "version": "1.0.9", + "version": "1.0.10", "engines": { "node": ">=6.12" }, @@ -35,7 +35,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sra-spec/README.md", "dependencies": { - "@0x/json-schemas": "^2.1.0", + "@0x/json-schemas": "^2.1.1", "@loopback/openapi-v3-types": "^0.8.2" }, "devDependencies": { diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index aa6026d96..d249e4d6d 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0x/subproviders", - "version": "2.1.3", + "version": "2.1.4", "engines": { "node": ">=6.12" }, @@ -29,11 +29,11 @@ } }, "dependencies": { - "@0x/assert": "^1.0.16", + "@0x/assert": "^1.0.17", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-transport-u2f": "4.24.0", "@types/eth-lightwallet": "^3.0.0", diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index bb4a31654..ac720a748 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.55", + "version": "1.0.56", "engines": { "node": ">=6.12" }, @@ -18,11 +18,11 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^2.0.3", - "@0x/subproviders": "^2.1.3", + "0x.js": "^2.0.4", + "@0x/subproviders": "^2.1.4", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "body-parser": "^1.17.1", "ethereum-types": "^1.1.2", "ethereumjs-tx": "^1.3.5", diff --git a/packages/utils/package.json b/packages/utils/package.json index 24c2496b0..4b924226f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0x/utils", - "version": "2.0.4", + "version": "2.0.5", "engines": { "node": ">=6.12" }, diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index 6676db6d2..2469f7627 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0x/web3-wrapper", - "version": "3.1.3", + "version": "3.1.4", "engines": { "node": ">=6.12" }, @@ -53,10 +53,10 @@ "typescript": "3.0.1" }, "dependencies": { - "@0x/assert": "^1.0.16", - "@0x/json-schemas": "^2.1.0", + "@0x/assert": "^1.0.17", + "@0x/json-schemas": "^2.1.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", + "@0x/utils": "^2.0.5", "ethereum-types": "^1.1.2", "ethereumjs-util": "^5.1.1", "ethers": "~4.0.4", diff --git a/packages/website/package.json b/packages/website/package.json index a2c1df695..bb64b24db 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0x/website", - "version": "0.0.58", + "version": "0.0.59", "engines": { "node": ">=6.12" }, @@ -20,16 +20,16 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "@0x/contract-wrappers": "^4.0.1", - "@0x/json-schemas": "^2.1.0", - "@0x/order-utils": "^3.0.1", - "@0x/react-docs": "^1.0.17", - "@0x/react-shared": "^1.0.20", - "@0x/subproviders": "^2.1.3", + "@0x/contract-wrappers": "^4.0.2", + "@0x/json-schemas": "^2.1.1", + "@0x/order-utils": "^3.0.2", + "@0x/react-docs": "^1.0.18", + "@0x/react-shared": "^1.0.21", + "@0x/subproviders": "^2.1.4", "@0x/types": "^1.2.1", "@0x/typescript-typings": "^3.0.4", - "@0x/utils": "^2.0.4", - "@0x/web3-wrapper": "^3.1.3", + "@0x/utils": "^2.0.5", + "@0x/web3-wrapper": "^3.1.4", "accounting": "^0.4.1", "basscss": "^8.0.3", "blockies": "^0.0.2", -- cgit From e1d64def2017ced0aba599b989ad42a51fdd46fe Mon Sep 17 00:00:00 2001 From: "F. Eugene Aumson" Date: Wed, 14 Nov 2018 10:41:52 -0500 Subject: feat(order_utils.py): sign_hash() (#1254) Also moved is_valid_signature() into main package module, for simplicity. Also consolidated a handul of in-line pylint disable directives into the .pylintrc config file. --- python-packages/order_utils/.pylintrc | 3 + python-packages/order_utils/setup.py | 4 - python-packages/order_utils/src/index.rst | 10 +- .../order_utils/src/zero_ex/dev_utils/abi_utils.py | 1 - .../src/zero_ex/dev_utils/type_assertions.py | 31 +++ .../src/zero_ex/order_utils/__init__.py | 253 +++++++++++++++++++-- .../src/zero_ex/order_utils/asset_data_utils.py | 4 - .../src/zero_ex/order_utils/signature_utils.py | 75 ------ .../order_utils/stubs/web3/__init__.pyi | 6 +- .../order_utils/stubs/web3/providers/__init__.pyi | 0 .../order_utils/stubs/web3/providers/base.pyi | 2 + python-packages/order_utils/test/test_doctest.py | 1 - .../test/test_generate_order_hash_hex.py | 4 +- .../order_utils/test/test_signature_utils.py | 2 +- 14 files changed, 286 insertions(+), 110 deletions(-) create mode 100644 python-packages/order_utils/.pylintrc delete mode 100644 python-packages/order_utils/src/zero_ex/order_utils/signature_utils.py create mode 100644 python-packages/order_utils/stubs/web3/providers/__init__.pyi create mode 100644 python-packages/order_utils/stubs/web3/providers/base.pyi diff --git a/python-packages/order_utils/.pylintrc b/python-packages/order_utils/.pylintrc new file mode 100644 index 000000000..937bc6313 --- /dev/null +++ b/python-packages/order_utils/.pylintrc @@ -0,0 +1,3 @@ +[MESSAGES CONTROL] +disable=C0330,line-too-long,fixme,too-few-public-methods,too-many-ancestors +# C0330 is "bad hanging indent". we use indents per `black`. diff --git a/python-packages/order_utils/setup.py b/python-packages/order_utils/setup.py index 7f1da2f34..5a8db2b64 100755 --- a/python-packages/order_utils/setup.py +++ b/python-packages/order_utils/setup.py @@ -24,7 +24,6 @@ class TestCommandExtension(TestCommand): exit(pytest.main()) -# pylint: disable=too-many-ancestors class LintCommand(distutils.command.build_py.build_py): """Custom setuptools command class for running linters.""" @@ -90,7 +89,6 @@ class CleanCommandExtension(clean): rmtree("src/0x_order_utils.egg-info", ignore_errors=True) -# pylint: disable=too-many-ancestors class TestPublishCommand(distutils.command.build_py.build_py): """Custom command to publish to test.pypi.org.""" @@ -108,7 +106,6 @@ class TestPublishCommand(distutils.command.build_py.build_py): ) -# pylint: disable=too-many-ancestors class PublishCommand(distutils.command.build_py.build_py): """Custom command to publish to pypi.org.""" @@ -119,7 +116,6 @@ class PublishCommand(distutils.command.build_py.build_py): subprocess.check_call("twine upload dist/*".split()) # nosec -# pylint: disable=too-many-ancestors class GanacheCommand(distutils.command.build_py.build_py): """Custom command to publish to pypi.org.""" diff --git a/python-packages/order_utils/src/index.rst b/python-packages/order_utils/src/index.rst index b99addabd..4d27a4b17 100644 --- a/python-packages/order_utils/src/index.rst +++ b/python-packages/order_utils/src/index.rst @@ -7,6 +7,11 @@ Python zero_ex.order_utils :maxdepth: 2 :caption: Contents: +.. autoclass:: zero_ex.order_utils.Order + :members: + +See source for class properties. Sphinx does not easily generate class property docs; pull requests welcome. + .. automodule:: zero_ex.order_utils :members: @@ -17,11 +22,6 @@ Python zero_ex.order_utils .. autoclass:: zero_ex.order_utils.asset_data_utils.ERC721AssetData -See source for class properties. Sphinx does not easily generate class property docs; pull requests welcome. - -.. automodule:: zero_ex.order_utils.signature_utils - :members: - Indices and tables ================== diff --git a/python-packages/order_utils/src/zero_ex/dev_utils/abi_utils.py b/python-packages/order_utils/src/zero_ex/dev_utils/abi_utils.py index 9afeacfdf..3fec775b0 100644 --- a/python-packages/order_utils/src/zero_ex/dev_utils/abi_utils.py +++ b/python-packages/order_utils/src/zero_ex/dev_utils/abi_utils.py @@ -84,7 +84,6 @@ def method_id(name: str, types: List[str]) -> str: def simple_encode(method: str, *args: Any) -> bytes: - # docstring considered all one line by pylint: disable=line-too-long r"""Encode a method ABI. >>> simple_encode("ERC20Token(address)", "0x1dc4c1cefef38a777b15aa20260a54e584b16c48") diff --git a/python-packages/order_utils/src/zero_ex/dev_utils/type_assertions.py b/python-packages/order_utils/src/zero_ex/dev_utils/type_assertions.py index 08c1b0ea5..1dcfb39a9 100644 --- a/python-packages/order_utils/src/zero_ex/dev_utils/type_assertions.py +++ b/python-packages/order_utils/src/zero_ex/dev_utils/type_assertions.py @@ -2,6 +2,9 @@ from typing import Any +from eth_utils import is_address +from web3.providers.base import BaseProvider + def assert_is_string(value: Any, name: str) -> None: """If :param value: isn't of type str, raise a TypeError. @@ -56,3 +59,31 @@ def assert_is_hex_string(value: Any, name: str) -> None: """ assert_is_string(value, name) int(value, 16) # raises a ValueError if value isn't a base-16 str + + +def assert_is_address(value: Any, name: str) -> None: + """Assert that `value` is a valid Ethereum address. + + If `value` isn't a hex string, raise a TypeError. If it isn't a valid + Ethereum address, raise a ValueError. + """ + assert_is_hex_string(value, name) + if not is_address(value): + raise ValueError( + f"Expected variable '{name}' to be a valid Ethereum" + + " address, but it's not." + ) + + +def assert_is_provider(value: Any, name: str) -> None: + """Assert that `value` is a Web3 provider. + + If `value` isn't a Web3 provider, raise a TypeError. + """ + # TODO: make this provider check more flexible. + # https://app.asana.com/0/684263176955174/901300863045491/f + if not isinstance(value, BaseProvider): + raise TypeError( + f"Expected variable '{name}' to be an instance of a Web3 provider," + + " but it's not." + ) diff --git a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py index fb5bc2f5d..c736d3567 100644 --- a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py +++ b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py @@ -10,19 +10,27 @@ just this purpose. To start it: ``docker run -d -p 8545:8545 0xorg/ganache-cli fence smart topic"``. """ +from enum import auto, Enum import json -from typing import Dict +from typing import Dict, Tuple from pkg_resources import resource_string from mypy_extensions import TypedDict -from eth_utils import is_address, keccak, to_checksum_address, to_bytes +from eth_utils import keccak, to_bytes, to_checksum_address from web3 import Web3 -from web3.utils import datatypes import web3.exceptions +from web3.providers.base import BaseProvider +from web3.utils import datatypes +from zero_ex.dev_utils.type_assertions import ( + assert_is_address, + assert_is_hex_string, + assert_is_provider, +) -class Constants: # pylint: disable=too-few-public-methods + +class _Constants: """Static data used by order utilities.""" contract_name_to_abi = { @@ -71,6 +79,18 @@ class Constants: # pylint: disable=too-few-public-methods + b")" ) + class SignatureType(Enum): + """Enumeration of known signature types.""" + + ILLEGAL = 0 + INVALID = auto() + EIP712 = auto() + ETH_SIGN = auto() + WALLET = auto() + VALIDATOR = auto() + PRE_SIGNED = auto() + N_SIGNATURE_TYPES = auto() + class Order(TypedDict): # pylint: disable=too-many-instance-attributes """Object representation of a 0x order.""" @@ -90,14 +110,18 @@ class Order(TypedDict): # pylint: disable=too-many-instance-attributes def make_empty_order() -> Order: - """Construct an empty order.""" + """Construct an empty order. + + Initializes all strings to "0x0000000000000000000000000000000000000000" + and all numbers to 0. + """ return { - "maker_address": Constants.null_address, - "taker_address": Constants.null_address, - "sender_address": Constants.null_address, - "fee_recipient_address": Constants.null_address, - "maker_asset_data": Constants.null_address, - "taker_asset_data": Constants.null_address, + "maker_address": _Constants.null_address, + "taker_address": _Constants.null_address, + "sender_address": _Constants.null_address, + "fee_recipient_address": _Constants.null_address, + "maker_asset_data": _Constants.null_address, + "taker_asset_data": _Constants.null_address, "salt": 0, "maker_fee": 0, "taker_fee": 0, @@ -108,9 +132,13 @@ def make_empty_order() -> Order: def generate_order_hash_hex(order: Order, exchange_address: str) -> str: - # docstring considered all one line by pylint: disable=line-too-long """Calculate the hash of the given order as a hexadecimal string. + :param order: The order to be hashed. Must conform to `the 0x order JSON schema `_. + :param exchange_address: The address to which the 0x Exchange smart + contract has been deployed. + :rtype: A string, of ASCII hex digits, representing the order hash. + >>> generate_order_hash_hex( ... { ... 'maker_address': "0x0000000000000000000000000000000000000000", @@ -138,12 +166,12 @@ def generate_order_hash_hex(order: Order, exchange_address: str) -> str: return i.to_bytes(32, byteorder="big") eip712_domain_struct_hash = keccak( - Constants.eip712_domain_struct_header + _Constants.eip712_domain_struct_header + pad_20_bytes_to_32(to_bytes(hexstr=exchange_address)) ) eip712_order_struct_hash = keccak( - Constants.eip712_order_schema_hash + _Constants.eip712_order_schema_hash + pad_20_bytes_to_32(to_bytes(hexstr=order["maker_address"])) + pad_20_bytes_to_32(to_bytes(hexstr=order["taker_address"])) + pad_20_bytes_to_32(to_bytes(hexstr=order["fee_recipient_address"])) @@ -159,7 +187,202 @@ def generate_order_hash_hex(order: Order, exchange_address: str) -> str: ) return keccak( - Constants.eip191_header + _Constants.eip191_header + eip712_domain_struct_hash + eip712_order_struct_hash ).hex() + + +def is_valid_signature( + provider: BaseProvider, data: str, signature: str, signer_address: str +) -> Tuple[bool, str]: + """Check the validity of the supplied signature. + + Check if the supplied ``signature`` corresponds to signing ``data`` with + the private key corresponding to ``signer_address``. + + :param provider: A Web3 provider able to access the 0x Exchange contract. + :param data: The hex encoded data signed by the supplied signature. + :param signature: The hex encoded signature. + :param signer_address: The hex encoded address that signed the data to + produce the supplied signature. + :rtype: Tuple consisting of a boolean and a string. Boolean is true if + valid, false otherwise. If false, the string describes the reason. + + >>> is_valid_signature( + ... Web3.HTTPProvider("http://127.0.0.1:8545"), + ... '0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b0', + ... '0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace225403', + ... '0x5409ed021d9299bf6814279a6a1411a7e866a631', + ... ) + (True, '') + """ # noqa: E501 (line too long) + assert_is_provider(provider, "provider") + assert_is_hex_string(data, "data") + assert_is_hex_string(signature, "signature") + assert_is_address(signer_address, "signer_address") + + web3_instance = Web3(provider) + # false positive from pylint: disable=no-member + network_id = web3_instance.net.version + contract_address = _Constants.network_to_exchange_addr[network_id] + # false positive from pylint: disable=no-member + contract: datatypes.Contract = web3_instance.eth.contract( + address=to_checksum_address(contract_address), + abi=_Constants.contract_name_to_abi["Exchange"], + ) + try: + return ( + contract.call().isValidSignature( + data, to_checksum_address(signer_address), signature + ), + "", + ) + except web3.exceptions.BadFunctionCallOutput as exception: + known_revert_reasons = [ + "LENGTH_GREATER_THAN_0_REQUIRED", + "SIGNATURE_ILLEGAL", + "SIGNATURE_UNSUPPORTED", + "LENGTH_0_REQUIRED", + "LENGTH_65_REQUIRED", + ] + for known_revert_reason in known_revert_reasons: + if known_revert_reason in str(exception): + return (False, known_revert_reason) + return (False, f"Unknown: {exception}") + + +class ECSignature(TypedDict): + """Object representation of an elliptic curve signature's parameters.""" + + v: int + r: str + s: str + + +def _parse_signature_hex_as_vrs(signature_hex: str) -> ECSignature: + """Parse signature hex as a concatentation of EC parameters ordered V, R, S. + + >>> _parse_signature_hex_as_vrs('0x1b117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d872871137feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b03') + {'v': 27, 'r': '117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d87287113', 's': '7feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b'} + """ # noqa: E501 (line too long) + signature: ECSignature = { + "v": int(signature_hex[2:4], 16), + "r": signature_hex[4:68], + "s": signature_hex[68:132], + } + if signature["v"] == 0 or signature["v"] == 1: + signature["v"] = signature["v"] + 27 + return signature + + +def _parse_signature_hex_as_rsv(signature_hex: str) -> ECSignature: + """Parse signature hex as a concatentation of EC parameters ordered R, S, V. + + >>> _parse_signature_hex_as_rsv('0x117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d872871137feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b00') + {'r': '117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d87287113', 's': '7feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b', 'v': 27} + """ # noqa: E501 (line too long) + signature: ECSignature = { + "r": signature_hex[2:66], + "s": signature_hex[66:130], + "v": int(signature_hex[130:132], 16), + } + if signature["v"] == 0 or signature["v"] == 1: + signature["v"] = signature["v"] + 27 + return signature + + +def _convert_ec_signature_to_vrs_hex(signature: ECSignature) -> str: + """Convert elliptic curve signature object to hex hash string. + + >>> _convert_ec_signature_to_vrs_hex( + ... { + ... 'r': '117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d87287113', + ... 's': '7feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b', + ... 'v': 27 + ... } + ... ) + '0x1b117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d872871137feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b' + """ # noqa: E501 (line too long) + return ( + "0x" + + signature["v"].to_bytes(1, byteorder="big").hex() + + signature["r"] + + signature["s"] + ) + + +def sign_hash( + provider: BaseProvider, signer_address: str, hash_hex: str +) -> str: + """Sign a message with the given hash, and return the signature. + + :param provider: A Web3 provider. + :param signer_address: The address of the signing account. + :param hash_hex: A hex string representing the hash, like that returned + from `generate_order_hash_hex()`. + :rtype: A string, of ASCII hex digits, representing the signature. + + >>> provider = Web3.HTTPProvider("http://127.0.0.1:8545") + >>> sign_hash( + ... provider, + ... Web3(provider).personal.listAccounts[0], + ... '0x34decbedc118904df65f379a175bb39ca18209d6ce41d5ed549d54e6e0a95004', + ... ) + '0x1b117902c86dfb95fe0d1badd983ee166ad259b27acb220174cbb4460d872871137feabdfe76e05924b484789f79af4ee7fa29ec006cedce1bbf369320d034e10b03' + """ # noqa: E501 (line too long) + assert_is_provider(provider, "provider") + assert_is_address(signer_address, "signer_address") + assert_is_hex_string(hash_hex, "hash_hex") + + web3_instance = Web3(provider) + # false positive from pylint: disable=no-member + signature = web3_instance.eth.sign( # type: ignore + signer_address, hexstr=hash_hex.replace("0x", "") + ).hex() + + valid_v_param_values = [27, 28] + + # HACK: There is no consensus on whether the signatureHex string should be + # formatted as v + r + s OR r + s + v, and different clients (even + # different versions of the same client) return the signature params in + # different orders. In order to support all client implementations, we + # parse the signature in both ways, and evaluate if either one is a valid + # signature. r + s + v is the most prevalent format from eth_sign, so we + # attempt this first. + + ec_signature = _parse_signature_hex_as_rsv(signature) + if ec_signature["v"] in valid_v_param_values: + signature_as_vrst_hex = ( + _convert_ec_signature_to_vrs_hex(ec_signature) + + _Constants.SignatureType.ETH_SIGN.value.to_bytes( + 1, byteorder="big" + ).hex() + ) + + (valid, _) = is_valid_signature( + provider, hash_hex, signature_as_vrst_hex, signer_address + ) + + if valid is True: + return signature_as_vrst_hex + + ec_signature = _parse_signature_hex_as_vrs(signature) + if ec_signature["v"] in valid_v_param_values: + signature_as_vrst_hex = ( + _convert_ec_signature_to_vrs_hex(ec_signature) + + _Constants.SignatureType.ETH_SIGN.value.to_bytes( + 1, byteorder="big" + ).hex() + ) + (valid, _) = is_valid_signature( + provider, hash_hex, signature_as_vrst_hex, signer_address + ) + + if valid is True: + return signature_as_vrst_hex + + raise RuntimeError( + "Signature returned from web3 provider is in an unknown format." + + " Attempted to parse as RSV and as VRS." + ) diff --git a/python-packages/order_utils/src/zero_ex/order_utils/asset_data_utils.py b/python-packages/order_utils/src/zero_ex/order_utils/asset_data_utils.py index e6f9a07c1..fab7479d2 100644 --- a/python-packages/order_utils/src/zero_ex/order_utils/asset_data_utils.py +++ b/python-packages/order_utils/src/zero_ex/order_utils/asset_data_utils.py @@ -47,7 +47,6 @@ def encode_erc20_asset_data(token_address: str) -> str: def decode_erc20_asset_data(asset_data: str) -> ERC20AssetData: - # docstring considered all one line by pylint: disable=line-too-long """Decode an ERC20 asset data hex string. :param asset_data: String produced by prior call to encode_erc20_asset_data() @@ -82,7 +81,6 @@ def decode_erc20_asset_data(asset_data: str) -> ERC20AssetData: def encode_erc721_asset_data(token_address: str, token_id: int) -> str: - # docstring considered all one line by pylint: disable=line-too-long """Encode an ERC721 asset data hex string. :param token_address: the ERC721 token's contract address. @@ -105,7 +103,6 @@ def encode_erc721_asset_data(token_address: str, token_id: int) -> str: def decode_erc721_asset_data(asset_data: str) -> ERC721AssetData: - # docstring considered all one line by pylint: disable=line-too-long """Decode an ERC721 asset data hex string. >>> decode_erc721_asset_data('0x025717920000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c480000000000000000000000000000000000000000000000000000000000000001') @@ -121,7 +118,6 @@ def decode_erc721_asset_data(asset_data: str) -> ERC721AssetData: ) asset_proxy_id: str = asset_data[0:SELECTOR_LENGTH] - # prefer `black` formatting. pylint: disable=C0330 if asset_proxy_id != abi_utils.method_id( "ERC721Token", ["address", "uint256"] ): diff --git a/python-packages/order_utils/src/zero_ex/order_utils/signature_utils.py b/python-packages/order_utils/src/zero_ex/order_utils/signature_utils.py deleted file mode 100644 index 2e75be6d5..000000000 --- a/python-packages/order_utils/src/zero_ex/order_utils/signature_utils.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Signature utilities.""" - -from typing import Tuple - -from eth_utils import is_address, to_checksum_address -from web3 import Web3 -import web3.exceptions -from web3.utils import datatypes - -from zero_ex.order_utils import Constants -from zero_ex.dev_utils.type_assertions import assert_is_hex_string - - -# prefer `black` formatting. pylint: disable=C0330 -def is_valid_signature( - provider: Web3.HTTPProvider, data: str, signature: str, signer_address: str -) -> Tuple[bool, str]: - # docstring considered all one line by pylint: disable=line-too-long - """Check the validity of the supplied signature. - - Check if the supplied ``signature`` corresponds to signing ``data`` with - the private key corresponding to ``signer_address``. - - :param provider: A Web3 provider able to access the 0x Exchange contract. - :param data: The hex encoded data signed by the supplied signature. - :param signature: The hex encoded signature. - :param signer_address: The hex encoded address that signed the data to - produce the supplied signature. - :rtype: Boolean indicating whether the given signature is valid. - - >>> is_valid_signature( - ... Web3.HTTPProvider("http://127.0.0.1:8545"), - ... '0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b0', - ... '0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace225403', - ... '0x5409ed021d9299bf6814279a6a1411a7e866a631', - ... ) - (True, '') - """ # noqa: E501 (line too long) - # TODO: make this provider check more flexible. pylint: disable=fixme - # https://app.asana.com/0/684263176955174/901300863045491/f - if not isinstance(provider, Web3.HTTPProvider): - raise TypeError("provider is not a Web3.HTTPProvider") - assert_is_hex_string(data, "data") - assert_is_hex_string(signature, "signature") - assert_is_hex_string(signer_address, "signer_address") - if not is_address(signer_address): - raise ValueError("signer_address is not a valid address") - - web3_instance = Web3(provider) - # false positive from pylint: disable=no-member - network_id = web3_instance.net.version - contract_address = Constants.network_to_exchange_addr[network_id] - # false positive from pylint: disable=no-member - contract: datatypes.Contract = web3_instance.eth.contract( - address=to_checksum_address(contract_address), - abi=Constants.contract_name_to_abi["Exchange"], - ) - try: - return ( - contract.call().isValidSignature( - data, to_checksum_address(signer_address), signature - ), - "", - ) - except web3.exceptions.BadFunctionCallOutput as exception: - known_revert_reasons = [ - "LENGTH_GREATER_THAN_0_REQUIRED", - "SIGNATURE_UNSUPPORTED", - "LENGTH_0_REQUIRED", - "LENGTH_65_REQUIRED", - ] - for known_revert_reason in known_revert_reasons: - if known_revert_reason in str(exception): - return (False, known_revert_reason) - return (False, f"Unknown: {exception}") diff --git a/python-packages/order_utils/stubs/web3/__init__.pyi b/python-packages/order_utils/stubs/web3/__init__.pyi index fcecc7434..b2af95475 100644 --- a/python-packages/order_utils/stubs/web3/__init__.pyi +++ b/python-packages/order_utils/stubs/web3/__init__.pyi @@ -1,12 +1,14 @@ from typing import Dict, Optional, Union from web3.utils import datatypes +from web3.providers.base import BaseProvider class Web3: - class HTTPProvider: ... + class HTTPProvider(BaseProvider): + ... - def __init__(self, provider: HTTPProvider) -> None: ... + def __init__(self, provider: BaseProvider) -> None: ... @staticmethod def sha3( diff --git a/python-packages/order_utils/stubs/web3/providers/__init__.pyi b/python-packages/order_utils/stubs/web3/providers/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/python-packages/order_utils/stubs/web3/providers/base.pyi b/python-packages/order_utils/stubs/web3/providers/base.pyi new file mode 100644 index 000000000..82ca9e3da --- /dev/null +++ b/python-packages/order_utils/stubs/web3/providers/base.pyi @@ -0,0 +1,2 @@ +class BaseProvider: + ... diff --git a/python-packages/order_utils/test/test_doctest.py b/python-packages/order_utils/test/test_doctest.py index 2b0350ac0..f692b3b6c 100644 --- a/python-packages/order_utils/test/test_doctest.py +++ b/python-packages/order_utils/test/test_doctest.py @@ -8,7 +8,6 @@ import zero_ex def test_all_doctests(): """Gather zero_ex.* modules and doctest them.""" - # prefer `black` formatting. pylint: disable=bad-continuation for (importer, modname, _) in pkgutil.walk_packages( path=zero_ex.__path__, prefix="zero_ex." ): diff --git a/python-packages/order_utils/test/test_generate_order_hash_hex.py b/python-packages/order_utils/test/test_generate_order_hash_hex.py index e393f38d7..af78d208c 100644 --- a/python-packages/order_utils/test/test_generate_order_hash_hex.py +++ b/python-packages/order_utils/test/test_generate_order_hash_hex.py @@ -3,7 +3,7 @@ from zero_ex.order_utils import ( generate_order_hash_hex, make_empty_order, - Constants, + _Constants, ) @@ -13,6 +13,6 @@ def test_get_order_hash_hex__empty_order(): "faa49b35faeb9197e9c3ba7a52075e6dad19739549f153b77dfcf59408a4b422" ) actual_hash_hex = generate_order_hash_hex( - make_empty_order(), Constants.null_address + make_empty_order(), _Constants.null_address ) assert actual_hash_hex == expected_hash_hex diff --git a/python-packages/order_utils/test/test_signature_utils.py b/python-packages/order_utils/test/test_signature_utils.py index b688e03a1..c5acc9d62 100644 --- a/python-packages/order_utils/test/test_signature_utils.py +++ b/python-packages/order_utils/test/test_signature_utils.py @@ -3,7 +3,7 @@ import pytest from web3 import Web3 -from zero_ex.order_utils.signature_utils import is_valid_signature +from zero_ex.order_utils import is_valid_signature def test_is_valid_signature__provider_wrong_type(): -- cgit From b961cb195299ce6a091ae692ec815b52f6b89300 Mon Sep 17 00:00:00 2001 From: "F. Eugene Aumson" Date: Wed, 14 Nov 2018 12:56:31 -0500 Subject: fix(order_utils.py): validate order w/json schema (#1260) --- .prettierignore | 1 + python-packages/order_utils/setup.py | 3 +- python-packages/order_utils/src/index.rst | 3 + .../src/zero_ex/json_schemas/__init__.py | 61 ++++++++++++ .../order_utils/src/zero_ex/json_schemas/schemas | 1 + .../src/zero_ex/order_utils/__init__.py | 108 +++++++++++---------- .../order_utils/stubs/jsonschema/__init__.pyi | 5 + .../order_utils/stubs/jsonschema/exceptions.pyi | 0 .../test/test_generate_order_hash_hex.py | 10 +- 9 files changed, 131 insertions(+), 61 deletions(-) create mode 100644 python-packages/order_utils/src/zero_ex/json_schemas/__init__.py create mode 120000 python-packages/order_utils/src/zero_ex/json_schemas/schemas create mode 100644 python-packages/order_utils/stubs/jsonschema/__init__.pyi create mode 100644 python-packages/order_utils/stubs/jsonschema/exceptions.pyi diff --git a/.prettierignore b/.prettierignore index 7ef0f6735..db389bdb9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ lib /packages/contract-artifacts/artifacts /python-packages/order_utils/src/zero_ex/contract_artifacts/artifacts /packages/json-schemas/schemas +/python-packages/order_utils/src/zero_ex/json_schemas/schemas /packages/metacoin/src/contract_wrappers /packages/metacoin/artifacts /packages/sra-spec/public/ diff --git a/python-packages/order_utils/setup.py b/python-packages/order_utils/setup.py index 5a8db2b64..679bfb4b2 100755 --- a/python-packages/order_utils/setup.py +++ b/python-packages/order_utils/setup.py @@ -159,7 +159,7 @@ setup( install_requires=[ "eth-abi", "eth_utils", - "ethereum", + "jsonschema", "mypy_extensions", "web3", ], @@ -184,6 +184,7 @@ setup( package_data={ "zero_ex.order_utils": ["py.typed"], "zero_ex.contract_artifacts": ["artifacts/*"], + "zero_ex.json_schemas": ["schemas/*"], }, package_dir={"": "src"}, license="Apache 2.0", diff --git a/python-packages/order_utils/src/index.rst b/python-packages/order_utils/src/index.rst index 4d27a4b17..551487ab1 100644 --- a/python-packages/order_utils/src/index.rst +++ b/python-packages/order_utils/src/index.rst @@ -22,6 +22,9 @@ See source for class properties. Sphinx does not easily generate class property .. autoclass:: zero_ex.order_utils.asset_data_utils.ERC721AssetData +.. automodule:: zero_ex.json_schemas + :members: + Indices and tables ================== diff --git a/python-packages/order_utils/src/zero_ex/json_schemas/__init__.py b/python-packages/order_utils/src/zero_ex/json_schemas/__init__.py new file mode 100644 index 000000000..2a1728b8a --- /dev/null +++ b/python-packages/order_utils/src/zero_ex/json_schemas/__init__.py @@ -0,0 +1,61 @@ +"""JSON schemas and associated utilities.""" + +from os import path +import json +from typing import Mapping + +from pkg_resources import resource_string +import jsonschema + + +def assert_valid(data: Mapping, schema_id: str) -> None: + """Validate the given `data` against the specified `schema`. + + :param data: Python dictionary to be validated as a JSON object. + :param schema_id: id property of the JSON schema to validate against. Must + be one of those listed in `the 0x JSON schema files + `_. + + Raises an exception if validation fails. + + >>> assert_valid( + ... {'v': 27, 'r': '0x'+'f'*64, 's': '0x'+'f'*64}, + ... '/ECSignature', + ... ) + """ + # noqa + class LocalRefResolver(jsonschema.RefResolver): + """Resolve package-local JSON schema id's.""" + + def __init__(self): + self.ref_to_file = { + "/addressSchema": "address_schema.json", + "/hexSchema": "hex_schema.json", + "/orderSchema": "order_schema.json", + "/wholeNumberSchema": "whole_number_schema.json", + "/ECSignature": "ec_signature_schema.json", + "/ecSignatureParameterSchema": ( + "ec_signature_parameter_schema.json" + "" + ), + } + jsonschema.RefResolver.__init__(self, "", "") + + def resolve_from_url(self, url): + """Resolve the given URL.""" + ref = url.replace("file://", "") + if ref in self.ref_to_file: + return json.loads( + resource_string( + "zero_ex.json_schemas", + f"schemas/{self.ref_to_file[ref]}", + ) + ) + raise jsonschema.ValidationError( + f"Unknown ref '{ref}'. " + + f"Known refs: {list(self.ref_to_file.keys())}." + ) + + resolver = LocalRefResolver() + jsonschema.validate( + data, resolver.resolve_from_url(schema_id), resolver=resolver + ) diff --git a/python-packages/order_utils/src/zero_ex/json_schemas/schemas b/python-packages/order_utils/src/zero_ex/json_schemas/schemas new file mode 120000 index 000000000..b8257372c --- /dev/null +++ b/python-packages/order_utils/src/zero_ex/json_schemas/schemas @@ -0,0 +1 @@ +../../../../../packages/json-schemas/schemas/ \ No newline at end of file diff --git a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py index c736d3567..a86128e0e 100644 --- a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py +++ b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py @@ -28,6 +28,7 @@ from zero_ex.dev_utils.type_assertions import ( assert_is_hex_string, assert_is_provider, ) +from zero_ex.json_schemas import assert_valid class _Constants: @@ -95,18 +96,19 @@ class _Constants: class Order(TypedDict): # pylint: disable=too-many-instance-attributes """Object representation of a 0x order.""" - maker_address: str - taker_address: str - fee_recipient_address: str - sender_address: str - maker_asset_amount: int - taker_asset_amount: int - maker_fee: int - taker_fee: int - expiration_time_seconds: int - salt: int - maker_asset_data: str - taker_asset_data: str + makerAddress: str + takerAddress: str + feeRecipientAddress: str + senderAddress: str + makerAssetAmount: str + takerAssetAmount: str + makerFee: str + takerFee: str + expirationTimeSeconds: str + salt: str + makerAssetData: str + takerAssetData: str + exchangeAddress: str def make_empty_order() -> Order: @@ -116,22 +118,23 @@ def make_empty_order() -> Order: and all numbers to 0. """ return { - "maker_address": _Constants.null_address, - "taker_address": _Constants.null_address, - "sender_address": _Constants.null_address, - "fee_recipient_address": _Constants.null_address, - "maker_asset_data": _Constants.null_address, - "taker_asset_data": _Constants.null_address, - "salt": 0, - "maker_fee": 0, - "taker_fee": 0, - "maker_asset_amount": 0, - "taker_asset_amount": 0, - "expiration_time_seconds": 0, + "makerAddress": _Constants.null_address, + "takerAddress": _Constants.null_address, + "senderAddress": _Constants.null_address, + "feeRecipientAddress": _Constants.null_address, + "makerAssetData": _Constants.null_address, + "takerAssetData": _Constants.null_address, + "salt": "0", + "makerFee": "0", + "takerFee": "0", + "makerAssetAmount": "0", + "takerAssetAmount": "0", + "expirationTimeSeconds": "0", + "exchangeAddress": _Constants.null_address, } -def generate_order_hash_hex(order: Order, exchange_address: str) -> str: +def generate_order_hash_hex(order: Order) -> str: """Calculate the hash of the given order as a hexadecimal string. :param order: The order to be hashed. Must conform to `the 0x order JSON schema `_. @@ -141,24 +144,25 @@ def generate_order_hash_hex(order: Order, exchange_address: str) -> str: >>> generate_order_hash_hex( ... { - ... 'maker_address': "0x0000000000000000000000000000000000000000", - ... 'taker_address': "0x0000000000000000000000000000000000000000", - ... 'fee_recipient_address': "0x0000000000000000000000000000000000000000", - ... 'sender_address': "0x0000000000000000000000000000000000000000", - ... 'maker_asset_amount': 1000000000000000000, - ... 'taker_asset_amount': 1000000000000000000, - ... 'maker_fee': 0, - ... 'taker_fee': 0, - ... 'expiration_time_seconds': 12345, - ... 'salt': 12345, - ... 'maker_asset_data': "0000000000000000000000000000000000000000", - ... 'taker_asset_data': "0000000000000000000000000000000000000000", + ... 'makerAddress': "0x0000000000000000000000000000000000000000", + ... 'takerAddress': "0x0000000000000000000000000000000000000000", + ... 'feeRecipientAddress': "0x0000000000000000000000000000000000000000", + ... 'senderAddress': "0x0000000000000000000000000000000000000000", + ... 'makerAssetAmount': "1000000000000000000", + ... 'takerAssetAmount': "1000000000000000000", + ... 'makerFee': "0", + ... 'takerFee': "0", + ... 'expirationTimeSeconds': "12345", + ... 'salt': "12345", + ... 'makerAssetData': "0x0000000000000000000000000000000000000000", + ... 'takerAssetData': "0x0000000000000000000000000000000000000000", + ... 'exchangeAddress': "0x0000000000000000000000000000000000000000", ... }, - ... exchange_address="0x0000000000000000000000000000000000000000", ... ) '55eaa6ec02f3224d30873577e9ddd069a288c16d6fb407210eecbc501fa76692' """ # noqa: E501 (line too long) - # TODO: use JSON schema validation to validate order. pylint: disable=fixme + assert_valid(order, "/orderSchema") + def pad_20_bytes_to_32(twenty_bytes: bytes): return bytes(12) + twenty_bytes @@ -167,23 +171,23 @@ def generate_order_hash_hex(order: Order, exchange_address: str) -> str: eip712_domain_struct_hash = keccak( _Constants.eip712_domain_struct_header - + pad_20_bytes_to_32(to_bytes(hexstr=exchange_address)) + + pad_20_bytes_to_32(to_bytes(hexstr=order["exchangeAddress"])) ) eip712_order_struct_hash = keccak( _Constants.eip712_order_schema_hash - + pad_20_bytes_to_32(to_bytes(hexstr=order["maker_address"])) - + pad_20_bytes_to_32(to_bytes(hexstr=order["taker_address"])) - + pad_20_bytes_to_32(to_bytes(hexstr=order["fee_recipient_address"])) - + pad_20_bytes_to_32(to_bytes(hexstr=order["sender_address"])) - + int_to_32_big_endian_bytes(order["maker_asset_amount"]) - + int_to_32_big_endian_bytes(order["taker_asset_amount"]) - + int_to_32_big_endian_bytes(order["maker_fee"]) - + int_to_32_big_endian_bytes(order["taker_fee"]) - + int_to_32_big_endian_bytes(order["expiration_time_seconds"]) - + int_to_32_big_endian_bytes(order["salt"]) - + keccak(to_bytes(hexstr=order["maker_asset_data"])) - + keccak(to_bytes(hexstr=order["taker_asset_data"])) + + pad_20_bytes_to_32(to_bytes(hexstr=order["makerAddress"])) + + pad_20_bytes_to_32(to_bytes(hexstr=order["takerAddress"])) + + pad_20_bytes_to_32(to_bytes(hexstr=order["feeRecipientAddress"])) + + pad_20_bytes_to_32(to_bytes(hexstr=order["senderAddress"])) + + int_to_32_big_endian_bytes(int(order["makerAssetAmount"])) + + int_to_32_big_endian_bytes(int(order["takerAssetAmount"])) + + int_to_32_big_endian_bytes(int(order["makerFee"])) + + int_to_32_big_endian_bytes(int(order["takerFee"])) + + int_to_32_big_endian_bytes(int(order["expirationTimeSeconds"])) + + int_to_32_big_endian_bytes(int(order["salt"])) + + keccak(to_bytes(hexstr=order["makerAssetData"])) + + keccak(to_bytes(hexstr=order["takerAssetData"])) ) return keccak( diff --git a/python-packages/order_utils/stubs/jsonschema/__init__.pyi b/python-packages/order_utils/stubs/jsonschema/__init__.pyi new file mode 100644 index 000000000..762b58b22 --- /dev/null +++ b/python-packages/order_utils/stubs/jsonschema/__init__.pyi @@ -0,0 +1,5 @@ +from typing import Any, Dict + +class RefResolver: pass + +def validate(instance: Any, schema: Dict, cls=None, *args, **kwargs) -> None: pass diff --git a/python-packages/order_utils/stubs/jsonschema/exceptions.pyi b/python-packages/order_utils/stubs/jsonschema/exceptions.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/python-packages/order_utils/test/test_generate_order_hash_hex.py b/python-packages/order_utils/test/test_generate_order_hash_hex.py index af78d208c..6869a40ed 100644 --- a/python-packages/order_utils/test/test_generate_order_hash_hex.py +++ b/python-packages/order_utils/test/test_generate_order_hash_hex.py @@ -1,10 +1,6 @@ """Test zero_ex.order_utils.get_order_hash_hex().""" -from zero_ex.order_utils import ( - generate_order_hash_hex, - make_empty_order, - _Constants, -) +from zero_ex.order_utils import generate_order_hash_hex, make_empty_order def test_get_order_hash_hex__empty_order(): @@ -12,7 +8,5 @@ def test_get_order_hash_hex__empty_order(): expected_hash_hex = ( "faa49b35faeb9197e9c3ba7a52075e6dad19739549f153b77dfcf59408a4b422" ) - actual_hash_hex = generate_order_hash_hex( - make_empty_order(), _Constants.null_address - ) + actual_hash_hex = generate_order_hash_hex(make_empty_order()) assert actual_hash_hex == expected_hash_hex -- cgit From 997912a8f8647fed9ff10570e332ff84807907aa Mon Sep 17 00:00:00 2001 From: Brandon Millman Date: Tue, 13 Nov 2018 22:54:15 -0800 Subject: fix(instant): fix tabbing into erc20 token selector --- packages/instant/src/components/erc20_token_selector.tsx | 1 + packages/instant/src/components/ui/input.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/instant/src/components/erc20_token_selector.tsx b/packages/instant/src/components/erc20_token_selector.tsx index d4a77c278..afa3f84c3 100644 --- a/packages/instant/src/components/erc20_token_selector.tsx +++ b/packages/instant/src/components/erc20_token_selector.tsx @@ -39,6 +39,7 @@ export class ERC20TokenSelector extends React.Component width="100%" value={this.state.searchQuery} onChange={this._handleSearchInputChange} + tabindex={-1} /> {_.map(tokens, token => { diff --git a/packages/instant/src/components/ui/input.tsx b/packages/instant/src/components/ui/input.tsx index 2fb408db4..184f89066 100644 --- a/packages/instant/src/components/ui/input.tsx +++ b/packages/instant/src/components/ui/input.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { ColorOption, styled } from '../../style/theme'; export interface InputProps { + tabindex?: number; className?: string; value?: string; width?: string; -- cgit From 7688037fb86334ec2913c6fa850b6514fd9986b8 Mon Sep 17 00:00:00 2001 From: Brandon Millman Date: Tue, 13 Nov 2018 23:14:23 -0800 Subject: fix(instant): border radius --- packages/instant/src/components/instant_heading.tsx | 7 +------ packages/instant/src/components/ui/container.tsx | 4 ++-- packages/instant/src/components/zero_ex_instant_container.tsx | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/instant/src/components/instant_heading.tsx b/packages/instant/src/components/instant_heading.tsx index 7f9567454..002695269 100644 --- a/packages/instant/src/components/instant_heading.tsx +++ b/packages/instant/src/components/instant_heading.tsx @@ -32,12 +32,7 @@ export class InstantHeading extends React.Component { public render(): React.ReactNode { const iconOrAmounts = this._renderIcon() || this._renderAmountsSection(); return ( - + cssRuleIfExists(props, 'margin-bottom')} ${props => cssRuleIfExists(props, 'margin-left')} ${props => cssRuleIfExists(props, 'padding')} - ${props => cssRuleIfExists(props, 'border-radius')} ${props => cssRuleIfExists(props, 'border')} ${props => cssRuleIfExists(props, 'border-top')} ${props => cssRuleIfExists(props, 'border-bottom')} @@ -70,6 +69,7 @@ export const Container = ${props => props.display && stylesForMedia('display', props.display)} ${props => props.width && stylesForMedia('width', props.width)} ${props => props.height && stylesForMedia('height', props.height)} + ${props => props.borderRadius && stylesForMedia('border-radius', props.borderRadius)} background-color: ${props => (props.backgroundColor ? props.theme[props.backgroundColor] : 'none')}; border-color: ${props => (props.borderColor ? props.theme[props.borderColor] : 'none')}; &:hover { diff --git a/packages/instant/src/components/zero_ex_instant_container.tsx b/packages/instant/src/components/zero_ex_instant_container.tsx index c0a197590..698bfef17 100644 --- a/packages/instant/src/components/zero_ex_instant_container.tsx +++ b/packages/instant/src/components/zero_ex_instant_container.tsx @@ -43,7 +43,7 @@ export class ZeroExInstantContainer extends React.Component<{}, ZeroExInstantCon zIndex={zIndex.mainContainer} position="relative" backgroundColor={ColorOption.white} - borderRadius="3px" + borderRadius={{ default: '3px', sm: '0px' }} hasBoxShadow={true} overflow="hidden" height="100%" -- cgit From adce627888c126bec2ea008ddae7187bfa143625 Mon Sep 17 00:00:00 2001 From: Brandon Millman Date: Tue, 13 Nov 2018 23:23:23 -0800 Subject: fix(instant): match token search on prefix --- packages/instant/src/components/erc20_token_selector.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/instant/src/components/erc20_token_selector.tsx b/packages/instant/src/components/erc20_token_selector.tsx index afa3f84c3..78741a617 100644 --- a/packages/instant/src/components/erc20_token_selector.tsx +++ b/packages/instant/src/components/erc20_token_selector.tsx @@ -63,8 +63,10 @@ export class ERC20TokenSelector extends React.Component if (_.isUndefined(searchQuery)) { return true; } - const stringToSearch = `${token.metaData.name} ${token.metaData.symbol}`; - return _.includes(stringToSearch.toLowerCase(), searchQuery.toLowerCase()); + const searchQueryLowerCase = searchQuery.toLowerCase(); + const tokenName = token.metaData.name.toLowerCase(); + const tokenSymbol = token.metaData.symbol.toLowerCase(); + return _.startsWith(tokenSymbol, searchQueryLowerCase) || _.startsWith(tokenName, searchQueryLowerCase); }; } -- cgit From daf5719f082f62e46073b1badd141da445b33b09 Mon Sep 17 00:00:00 2001 From: "F. Eugene Aumson" Date: Wed, 14 Nov 2018 17:00:41 -0500 Subject: fix(order_utils.py): lazy load contract artifacts (#1262) --- .../src/zero_ex/order_utils/__init__.py | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py index a86128e0e..24c6bfd4e 100644 --- a/python-packages/order_utils/src/zero_ex/order_utils/__init__.py +++ b/python-packages/order_utils/src/zero_ex/order_utils/__init__.py @@ -34,13 +34,26 @@ from zero_ex.json_schemas import assert_valid class _Constants: """Static data used by order utilities.""" - contract_name_to_abi = { - "Exchange": json.loads( - resource_string( - "zero_ex.contract_artifacts", "artifacts/Exchange.json" - ) - )["compilerOutput"]["abi"] - } + _contract_name_to_abi: Dict[str, Dict] = {} # class data, not instance + + @classmethod + def contract_name_to_abi(cls, contract_name: str) -> Dict: + """Return the ABI for the given contract name. + + First tries to get data from the class level storage + `_contract_name_to_abi`. If it's not there, loads it from disk, stores + it in the class data (for the next caller), and then returns it. + """ + try: + return cls._contract_name_to_abi[contract_name] + except KeyError: + cls._contract_name_to_abi[contract_name] = json.loads( + resource_string( + "zero_ex.contract_artifacts", + f"artifacts/{contract_name}.json", + ) + )["compilerOutput"]["abi"] + return cls._contract_name_to_abi[contract_name] network_to_exchange_addr: Dict[str, str] = { "1": "0x4f833a24e1f95d70f028921e27040ca56e09ab0b", @@ -233,7 +246,7 @@ def is_valid_signature( # false positive from pylint: disable=no-member contract: datatypes.Contract = web3_instance.eth.contract( address=to_checksum_address(contract_address), - abi=_Constants.contract_name_to_abi["Exchange"], + abi=_Constants.contract_name_to_abi("Exchange"), ) try: return ( -- cgit From 504f4d9eb99589b4d9071a6f13cea9dcc11f226d Mon Sep 17 00:00:00 2001 From: Brandon Millman Date: Wed, 14 Nov 2018 14:02:34 -0800 Subject: fix(instant): fix tabIndex attribute error --- packages/instant/src/components/erc20_token_selector.tsx | 2 +- packages/instant/src/components/ui/input.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/instant/src/components/erc20_token_selector.tsx b/packages/instant/src/components/erc20_token_selector.tsx index 78741a617..e4d8749a9 100644 --- a/packages/instant/src/components/erc20_token_selector.tsx +++ b/packages/instant/src/components/erc20_token_selector.tsx @@ -39,7 +39,7 @@ export class ERC20TokenSelector extends React.Component width="100%" value={this.state.searchQuery} onChange={this._handleSearchInputChange} - tabindex={-1} + tabIndex={-1} /> {_.map(tokens, token => { diff --git a/packages/instant/src/components/ui/input.tsx b/packages/instant/src/components/ui/input.tsx index 184f89066..1ea5d8fe1 100644 --- a/packages/instant/src/components/ui/input.tsx +++ b/packages/instant/src/components/ui/input.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { ColorOption, styled } from '../../style/theme'; export interface InputProps { - tabindex?: number; + tabIndex?: number; className?: string; value?: string; width?: string; -- cgit