Compare commits

...

4232 Commits

Author SHA1 Message Date
Leonid Logvinov
8b62b350b1 Publish
- 0x.js@2.0.0
 - @0x/abi-gen@1.0.14
 - @0x/abi-gen-wrappers@1.0.1
 - @0x/assert@1.0.14
 - @0x/asset-buyer@2.1.0
 - @0x/base-contract@3.0.2
 - @0x/connect@3.0.2
 - @0x/contract-addresses@1.0.1
 - @0x/contract-artifacts@1.0.1
 - @0x/contract-wrappers@3.0.0
 - contracts@2.1.50
 - @0x/dev-tools-pages@0.0.2
 - @0x/dev-utils@1.0.13
 - ethereum-types@1.1.1
 - @0x/fill-scenarios@1.0.8
 - @0x/instant@0.0.3
 - @0x/json-schemas@2.0.0
 - @0x/metacoin@0.0.24
 - @0x/migrations@2.0.0
 - @0x/monorepo-scripts@1.0.12
 - @0x/order-utils@2.0.0
 - @0x/order-watcher@2.2.0
 - @0x/react-docs@1.0.14
 - @0x/react-shared@1.0.17
 - @0x/sol-compiler@1.1.8
 - @0x/sol-cov@2.1.8
 - @0x/sol-doc@1.0.3
 - @0x/sol-resolver@1.0.15
 - @0x/sra-spec@1.0.7
 - @0x/subproviders@2.1.0
 - @0x/testnet-faucets@1.0.52
 - @0x/tslint-config@1.0.9
 - @0x/types@1.2.0
 - @0x/typescript-typings@3.0.3
 - @0x/utils@2.0.3
 - @0x/web3-wrapper@3.1.0
 - @0x/website@0.0.55
2018-10-18 16:03:00 +02:00
Leonid Logvinov
71d1e6b0ec Updated CHANGELOGS 2018-10-18 16:02:49 +02:00
Leonid Logvinov
7e49db2301 Fix ethereum-types versions 2018-10-18 15:52:32 +02:00
Leonid Logvinov
4b95e3d684 Merge pull request #1156 from 0xProject/feature/0x/npm-domain
Move package org from 0xproject to 0x
2018-10-18 15:46:33 +02:00
Leonid Logvinov
392d339443 Add index signature to FakeTokenRegistry 2018-10-18 15:37:22 +02:00
Leonid Logvinov
ece76e5874 Fix prettier issues 2018-10-18 15:27:07 +02:00
Fabio Berger
8cb6d99f17 chore: update yarn.lock 2018-10-18 14:18:39 +01:00
Fabio Berger
ac377490dc chore: add missing import 2018-10-18 14:09:02 +01:00
Fabio Berger
058c887353 chore: missing converts 2018-10-18 14:08:26 +01:00
Fabio Berger
0affc7682f chore: fix imports 2018-10-18 14:06:12 +01:00
Fabio Berger
1c68bdabaa chore: fix dep 2018-10-18 14:03:09 +01:00
Fabio Berger
683c6f22af chore: add missing imports 2018-10-18 14:03:00 +01:00
Fabio Berger
8c6de7f69d chore: replace @0xproject with @0x in .tsx files 2018-10-18 13:59:40 +01:00
Fabio Berger
4bf50a0496 update outdated package and tsconfig issue 2018-10-18 13:59:21 +01:00
Fabio Berger
745d368130 Remove old 0x.js from website 2018-10-18 13:50:03 +01:00
Jacob Evans
aa4a474e1d chore: update ethers import in utils 2018-10-18 23:11:56 +11:00
Jacob Evans
ff99f84f15 chore: update yarn.lock 2018-10-18 22:51:59 +11:00
Jacob Evans
10ff723287 chore: change abi-gen-wrappers ethereum-types version 2018-10-18 22:31:06 +11:00
Jacob Evans
56ef712d26 chore: change circleci config from 0xproject to 0x 2018-10-18 22:31:06 +11:00
Jacob Evans
2735fb4fa6 chore: change README.md from 0xproject to 0x 2018-10-18 22:30:09 +11:00
Jacob Evans
88c929a408 chore: change tslint.json from 0xproject to 0x 2018-10-18 22:28:38 +11:00
Jacob Evans
9f924e459c chore: change package org from 0xproject to 0x 2018-10-18 22:27:31 +11:00
Leonid Logvinov
9e8bca69a8 Merge pull request #1155 from 0xProject/feature/RIP-sra-report
Remove sra-report
2018-10-18 13:24:49 +02:00
Kadinsky
325af82217 Merge pull request #1154 from 0xProject/dev-section-redesign
[BASE_BRANCH] Developer section redesign
2018-10-18 12:20:50 +01:00
Leonid Logvinov
f8876ab60b Remove sra-report 2018-10-18 13:15:39 +02:00
Kadinsky
47dc384ea3 Merge pull request #1140 from 0xProject/reSkinReferenceDocs
Move Doc Reference Pages & Wiki into Developer Section of Website
2018-10-18 12:14:32 +01:00
Fabio Berger
e7c6f2a357 Add styled-components dep 2018-10-18 12:04:19 +01:00
Fabio Berger
56cb2470cc chore: fix up asset-buyer doc and add to Dev Home 2018-10-18 12:01:01 +01:00
Leonid Logvinov
ea65fa4f65 Merge pull request #1153 from 0xProject/feature/enable-linter
Enable linter on generated abi-gen wrappers
2018-10-18 12:48:53 +02:00
Leonid Logvinov
d5daa68703 Enable linter on generated abi-gen wrappers 2018-10-18 12:46:06 +02:00
Fabio Berger
28863f9a6f merge dev-section-redesign 2018-10-18 11:36:41 +01:00
Fabio Berger
cdd650d0eb merge development 2018-10-18 11:35:07 +01:00
Kadinsky
bd8ba14bf4 Merge pull request #1152 from 0xProject/feature/website/hide-v1-volume
[website] Add expanded and minimized display types to relayer grid
2018-10-18 11:32:07 +01:00
Fabio Berger
6ab6a9aa2b Update react-scroll hash to avoid collision with older, unfixed branch 2018-10-18 11:28:48 +01:00
Kadinsky
d0df074721 Merge pull request #1142 from 0xProject/feature/instant/asset-buyer-errors
[instant] Asset buyer errors
2018-10-18 11:12:24 +01:00
Fabio Berger
612e8db930 Update changelogs for unpublished packages 2018-10-18 10:39:37 +01:00
Jacob Evans
376034ac7e Update changelog entries for unpublished packages 2018-10-18 20:03:22 +11:00
Brandon Millman
95775dca1f feat(website): add expanded and minimized display types to relayer grid 2018-10-18 00:10:33 -07:00
Jacob Evans
86aa5f9643 Merge pull request #1150 from 0xProject/fix/publishing/doc-gen-order-utils-constant
fix(order-utils): remove constants export
2018-10-18 11:20:19 +11:00
Jacob Evans
02cf99fa36 fix(order-utils): remove constants export 2018-10-18 11:07:00 +11:00
Steve Klebanoff
6ea386a7af selectedAssetBuyState -> buyOrderState 2018-10-17 16:50:21 -07:00
Steve Klebanoff
1d38b75d6f fix type 2018-10-17 16:49:57 -07:00
Steve Klebanoff
01b98c3ed0 ReactNode as default for formatters, and show bold dash 2018-10-17 16:46:01 -07:00
Steve Klebanoff
6cf8d57aee add concept of quoteState 2018-10-17 16:41:35 -07:00
Steve Klebanoff
7b43cd14b3 error test 2018-10-17 14:44:40 -07:00
Steve Klebanoff
f2f7598c0e asset data util tests 2018-10-17 14:44:40 -07:00
Steve Klebanoff
ae4f1a093a handle other errors 2018-10-17 14:44:40 -07:00
Steve Klebanoff
2b495a7935 bigger emoji 2018-10-17 14:44:40 -07:00
Steve Klebanoff
155858de6e creating big error util file per francescos comment in PR 2018-10-17 14:44:40 -07:00
Steve Klebanoff
d052342df7 use lodash isUndefined per PR comment 2018-10-17 14:44:40 -07:00
Steve Klebanoff
32fa1bcc38 export assetDataUtil big obj 2018-10-17 14:44:40 -07:00
Steve Klebanoff
187bbc7fc1 latestErrorDismissed -> latestErrorDisplay enum 2018-10-17 14:44:40 -07:00
Steve Klebanoff
d46b288733 use redux dev tools from package 2018-10-17 14:44:40 -07:00
Steve Klebanoff
dfc5d7d860 get rid of unused marginLeft and marginRight props 2018-10-17 14:44:39 -07:00
Steve Klebanoff
1d07949087 linting, removing unused imports 2018-10-17 14:44:39 -07:00
Steve Klebanoff
db77cd10c5 feat(instant): Handle AssetBuyer errors 2018-10-17 14:44:39 -07:00
Steve Klebanoff
f36352be47 move z-index setting to zero instant container, and add ability for zindex to be set on container 2018-10-17 14:44:39 -07:00
Steve Klebanoff
18c9907d6f feat(instant): add sliding error 2018-10-17 14:44:39 -07:00
Fabio Berger
ac68f8db44 refactor: fix anchor so it doesn't keep re-rendering the anchor icon 2018-10-17 20:18:28 +01:00
Kadinsky
5ec4b27200 Merge pull request #1145 from 0xProject/refactorSchemasToJSON
Move json-schema schemas to JSON files
2018-10-17 19:01:29 +01:00
Brandon Millman
b2012bf161 Merge pull request #1139 from 0xProject/feature/website/asset-buyer-docs
[asset-buyer][monorepo-scripts][website] Add asset-buyer documentation
2018-10-17 10:57:57 -07:00
Brandon Millman
81505ba56c Fix duplicate BuyQuoteInfo 2018-10-17 10:44:25 -07:00
Brandon Millman
75e3b44d9e Update asset-buyer usage wording 2018-10-17 10:33:05 -07:00
Brandon Millman
84057934c6 Merge branch 'development' into feature/website/asset-buyer-docs
* development: (31 commits)
  Update CODEOWNERS
  Update CODEOWNERS
  Update CODEOWNERS
  Add leo to CODEOWNERS on some packages
  fix(monorepo-scripts): Format date as UTC not local time.
  Bump max bundle size for instant
  fix: dont use enum string as type as typedoc gets confused
  feat: export AssetData from order-utils
  feat: export AssetData from utils
  chore: temporarily increase the bundle size for instant
  Remove order-utils from dependencies
  Run tests on circle CI
  Add tests for format and use toFixed instead of round for usd
  Remove expiry buffer seconds option from AssetBuyer init
  Add ts-optchain and use it instead of lodash get
  Hide USD price when ETH-USD price is not available
  Rename OrderDetailsRow to EthAmountRow
  fix: add Steve's github account to about page, and capitalize AppFolio correctly
  Put boundNoop in a util file
  Add tnxHash to buy button callbacks
  ...
2018-10-17 10:30:29 -07:00
Fabio Berger
bdae4ba2a2 chore: tslint fix 2018-10-17 18:23:06 +01:00
Fabio Berger
87fabbb943 chore: Fix remaining necessary casts 2018-10-17 17:36:21 +01:00
Fabio Berger
a31f3b542f Add necessary cast 2018-10-17 17:18:00 +01:00
Fabio Berger
f7de26f65c chore: make abi type prop always of type string to fix TypeDoc issue related to reading in artifacts from JSON files 2018-10-17 17:13:32 +01:00
Fabio Berger
852f50d1a0 chore: Re-cast to EventAbi after checking the the type is set to 'event' 2018-10-17 17:09:35 +01:00
Fabio Berger
f3f97896ed chore: add resolveJsonModule to TypeDoc tsconfig.json 2018-10-17 16:18:51 +01:00
Fabio Berger
7c87d2e38b chore: Update TypeDoc to 0.13.0 (supports TS v3.1) 2018-10-17 16:18:28 +01:00
Fabio Berger
03b20eed29 nit: remove todo 2018-10-17 15:58:10 +01:00
Fabio Berger
4d275cc591 nit: don't init scrolledToId 2018-10-17 15:55:05 +01:00
Fabio Berger
e18f66e5b7 nit: use styled-component instead of react-state for onHover 2018-10-17 15:53:28 +01:00
Fabio Berger
4ca89fc9f1 nit: use ObjectMap 2018-10-17 15:53:01 +01:00
Fabio Berger
f2e5a9635b chore: make linter ignore json schemas 2018-10-17 15:33:50 +01:00
Leonid Logvinov
c767404ad0 Merge pull request #1146 from 0xProject/feature/codeowners
Add leo to CODEOWNERS on some packages
2018-10-17 16:25:31 +02:00
Kadinsky
492df3108c Update CODEOWNERS 2018-10-17 16:25:17 +02:00
Kadinsky
7db53cf92c Update CODEOWNERS 2018-10-17 16:25:10 +02:00
Kadinsky
7fab0a5a86 Update CODEOWNERS 2018-10-17 16:25:05 +02:00
Fabio Berger
41bb38a776 Merge branch 'refactorSchemasToJSON' of github.com:0xProject/0x-monorepo into refactorSchemasToJSON
* 'refactorSchemasToJSON' of github.com:0xProject/0x-monorepo:
  chore: remove schemas from include section
2018-10-17 14:22:23 +01:00
Fabio Berger
b7d7c5f38b chore: Add json schemas to prettier ignore 2018-10-17 14:20:49 +01:00
Leonid Logvinov
0ecaa90ffd Add leo to CODEOWNERS on some packages 2018-10-17 15:15:04 +02:00
Leonid Logvinov
abc00b05c3 chore: remove schemas from include section 2018-10-17 14:04:01 +01:00
Fabio Berger
d87643fdfa Update schemas markdown section for v2 docs 2018-10-17 14:02:38 +01:00
Fabio Berger
bd00f1279b Add CHANGELOG entry 2018-10-17 13:54:27 +01:00
Fabio Berger
9176e535aa Fix sra-spec & connect 2018-10-17 13:52:43 +01:00
Fabio Berger
7d9009bb96 Convert all schemas to json files, so it's easier for devs in other languages to use it 2018-10-17 13:28:26 +01:00
Jacob Evans
78e6063d92 Merge pull request #1143 from 0xProject/fix/monorepo-scripts/changelog-utc
[monorepo-scripts] Format changelog dates as UTC timezone +0:00
2018-10-17 20:34:10 +11:00
Jacob Evans
0013bafc62 fix(monorepo-scripts): Format date as UTC not local time.
Down under is in the future and causes many conflicts when formatting the timestamp in the local context. All previous releases jumped a day ahead. By setting this to UTC we will have consistent formatted dates in the changelogs no matter where one publishes from.

npm-cli-login fails on node 10 as a deprecation in node 9 has finished. This package appears to be unmaintained so we now have a fork with a fix
2018-10-17 14:25:02 +11:00
Francesco Agosti
336e456984 Merge pull request #1131 from 0xProject/feature/instant/move-features-over-from-zrx-buyer
[instant][types][order-utils][asset-buyer] Move over and clean up features from zrx-buyer
2018-10-16 18:18:41 -07:00
fragosti
32beeae2f0 Bump max bundle size for instant 2018-10-16 18:03:13 -07:00
fragosti
eda0b3e693 fix: dont use enum string as type as typedoc gets confused 2018-10-16 17:48:25 -07:00
Steve Klebanoff
35b001b081 Merge pull request #1138 from 0xProject/feature/add-steves-github
[website] Add Steve's github
2018-10-16 17:42:06 -07:00
fragosti
8ba65346d4 feat: export AssetData from order-utils 2018-10-16 17:00:53 -07:00
fragosti
009b5b575c feat: export AssetData from utils 2018-10-16 17:00:18 -07:00
fragosti
d2adbc3647 chore: temporarily increase the bundle size for instant 2018-10-16 16:59:53 -07:00
fragosti
6a89935e3b Remove order-utils from dependencies 2018-10-16 16:58:21 -07:00
Fabio Berger
62f4bb2117 chore: Add topBar menu in wiki mobile sidebar menu 2018-10-17 00:55:47 +01:00
Fabio Berger
ce43724bd4 chore: Rename "Documentation" to "Docs" in mobile menu 2018-10-17 00:39:55 +01:00
Fabio Berger
18c31a3bc0 chore: Add topBar menu items to mobile drawer 2018-10-17 00:37:56 +01:00
fragosti
c328616330 Run tests on circle CI 2018-10-16 16:20:23 -07:00
fragosti
2610868589 Add tests for format and use toFixed instead of round for usd 2018-10-16 16:13:23 -07:00
Fabio Berger
fdefa5952c chore: componentize the sidebar header 2018-10-16 23:25:51 +01:00
Fabio Berger
7f2636fd05 chore: Add missing responsive classes 2018-10-16 22:34:00 +01:00
Fabio Berger
fb7d0b9d0b chore: Fix logo on mobile topBar 2018-10-16 22:09:04 +01:00
fragosti
dbf5be6c21 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/move-features-over-from-zrx-buyer 2018-10-16 11:15:17 -07:00
Brandon Millman
aa1085c8f3 feat(website): add asset-buyer documentation 2018-10-16 10:00:49 -07:00
Brandon Millman
55be070dcf feat(monorepo-scripts): add AssetBuyer to CLASSES_WITH_HIDDEN_CONSTRUCTORS 2018-10-16 10:00:49 -07:00
Brandon Millman
2c286ad897 feat(monorepo-scripts): add AssetBuyerError to IGNORED_EXCESSIVE_TYPES 2018-10-16 10:00:49 -07:00
Brandon Millman
4976b34738 feat(asset-buyer): add missing types to public interface 2018-10-16 10:00:49 -07:00
Brandon Millman
7aab4d10de feat(asset-buyer): add hooks for documentation 2018-10-16 10:00:41 -07:00
Fabio Berger
2305109170 chore: fix linter 2018-10-16 17:42:58 +01:00
Fabio Berger
9bae3e51d9 chore: initalize _urlIntervalCheckId 2018-10-16 17:09:17 +01:00
Fabio Berger
c84c92663d Merge branch 'dev-section-redesign' into reSkinReferenceDocs
* dev-section-redesign: (87 commits)
  Added note about restriction on `testDirectory`
  fix(dev-utils): Make chai a dev dependency since exported interface depends on it
  Add changelog entries
  fix(subproviders): make web3-provider-engine types a 'dependency' so it's available to users of the library
  fix(sra-spec): make @loopback/openapi-v3-types a 'dependency' so it's available to users of the library
  fix(sol-cov): make @types/solidity-parser-antlr a 'dependency' so it's available to users of the library
  fix(dev-utils): make web3-provider-engine types a 'dependency' so it's available to users of the library
  fix(0x.js): make web3-provider-engine types a 'dependency' so it's available to users of the library
  fix(monorepo-scripts): Move the creation of the `.installation-test` directory OUTSIDE of the monorepo root, so that the installed packages can't reference the hoisted node_modules folder
  Remove ContractNotFound errors in contract-wrappers
  Update prettierignore
  Update website to use the new unsubscribeAll method in contract-wrappers
  In abi-gen-wrappers, ./wrappers -> ./src/generated-wrappers
  In contract-wrappers, remove setProvider and add unsubscribeAll method.
  take out explicit children definition in props
  Update json-schemas for contract-wrappers
  Add OrThrow suffix to getContractAddressesForNetwork
  remove unused import
  Update CHANGELOG.json for all changed packages
  Remove ContractAddresses from packages/types (mistake after rebase)
  ...
2018-10-16 16:59:02 +01:00
Fabio Berger
c333d093b5 merge development 2018-10-16 16:58:24 +01:00
Fabio Berger
55a3bc8cb6 chore: don't use Container in react-shared, react-docs yet 2018-10-16 16:43:43 +01:00
Fabio Berger
e6e883e05a chore: remove unused prop 2018-10-16 16:38:59 +01:00
Fabio Berger
17fb4d5b57 chore: Remove unused prop 2018-10-16 16:38:05 +01:00
Fabio Berger
05f7b73307 chore: convert to stateless component 2018-10-16 16:36:06 +01:00
Fabio Berger
bf51728466 chore: simplify 2018-10-16 16:35:55 +01:00
Fabio Berger
6ad98420a0 style: improve menu & logo alignment 2018-10-16 16:12:26 +01:00
Fabio Berger
afe6181757 chore: Implement newest topBar 2018-10-16 15:53:24 +01:00
Fabio Berger
ce68e20e82 chore: remove unused imports 2018-10-16 15:41:58 +01:00
Fabio Berger
f35156517d chore: get menu onHover darken back 2018-10-16 15:35:56 +01:00
Fabio Berger
72f5719b34 Added note about restriction on testDirectory 2018-10-16 15:17:49 +01:00
Fabio Berger
be45a30851 chore: change landing "build on 0x" to link to developer home, not 0x.js docs 2018-10-16 14:36:26 +01:00
Fabio Berger
13f8801e08 chore: remove wiki from main website topBar 2018-10-16 14:35:55 +01:00
Fabio Berger
ad235912d7 chore: Replace FAQ with Developer home in footer 2018-10-16 14:35:33 +01:00
Fabio Berger
6ff35172d6 Replace sandbox with wiki in developer popover 2018-10-16 14:35:10 +01:00
Kadinsky
e624587050 Merge pull request #1105 from 0xProject/feature/contracts-artifacts-re-org
Reorganize and modularize generated contract wrappers and artifacts
2018-10-16 14:21:46 +01:00
Fabio Berger
5938e8a52d fix(dev-utils): Make chai a dev dependency since exported interface depends on it 2018-10-16 13:55:13 +01:00
Fabio Berger
fca5260eb1 Add changelog entries 2018-10-16 13:33:30 +01:00
Fabio Berger
021041165a fix(subproviders): make web3-provider-engine types a 'dependency' so it's available to users of the library 2018-10-16 13:26:44 +01:00
Fabio Berger
6c9277867d fix(sra-spec): make @loopback/openapi-v3-types a 'dependency' so it's available to users of the library 2018-10-16 13:26:09 +01:00
Fabio Berger
75b0781969 fix(sol-cov): make @types/solidity-parser-antlr a 'dependency' so it's available to users of the library 2018-10-16 13:25:26 +01:00
Fabio Berger
eab88cbe7c fix(dev-utils): make web3-provider-engine types a 'dependency' so it's available to users of the library 2018-10-16 13:24:47 +01:00
Fabio Berger
2e56e2cc05 fix(0x.js): make web3-provider-engine types a 'dependency' so it's available to users of the library 2018-10-16 13:24:24 +01:00
Fabio Berger
8cffe65047 fix(monorepo-scripts): Move the creation of the .installation-test directory OUTSIDE of the monorepo root, so that the installed packages can't reference the hoisted node_modules folder 2018-10-16 13:22:15 +01:00
Alex Browne
5bdfad9b41 Remove ContractNotFound errors in contract-wrappers 2018-10-16 00:23:43 -07:00
Alex Browne
3c5812c5d2 Update prettierignore 2018-10-16 00:00:22 -07:00
fragosti
d268e19124 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/move-features-over-from-zrx-buyer 2018-10-15 18:53:15 -07:00
fragosti
875f621f20 Remove expiry buffer seconds option from AssetBuyer init 2018-10-15 18:13:09 -07:00
fragosti
f2e5fd8846 Add ts-optchain and use it instead of lodash get 2018-10-15 18:07:19 -07:00
Alex Browne
5509bf5aeb Update website to use the new unsubscribeAll method in contract-wrappers 2018-10-15 18:04:29 -07:00
Alex Browne
2c63909d5d In abi-gen-wrappers, ./wrappers -> ./src/generated-wrappers 2018-10-15 17:50:13 -07:00
fragosti
18667d739c Hide USD price when ETH-USD price is not available 2018-10-15 17:39:52 -07:00
Alex Browne
6f8e98e537 In contract-wrappers, remove setProvider and add unsubscribeAll method. 2018-10-15 17:35:25 -07:00
fragosti
fa18db84d9 Rename OrderDetailsRow to EthAmountRow 2018-10-15 17:33:27 -07:00
Steve Klebanoff
05bf7a8280 Merge pull request #1135 from 0xProject/feature/instant-sliding-error
[instant] Generic sliding error component
2018-10-15 17:30:39 -07:00
Steve Klebanoff
f8edef66e4 fix: add Steve's github account to about page, and capitalize AppFolio correctly 2018-10-15 17:22:15 -07:00
Steve Klebanoff
b0a2cacd82 take out explicit children definition in props 2018-10-15 17:11:43 -07:00
Alex Browne
e093864bff Update json-schemas for contract-wrappers 2018-10-15 17:09:35 -07:00
fragosti
ac3bfdfe5f Put boundNoop in a util file 2018-10-15 17:06:28 -07:00
fragosti
fcf3451448 Add tnxHash to buy button callbacks 2018-10-15 17:06:06 -07:00
Alex Browne
38b146c395 Add OrThrow suffix to getContractAddressesForNetwork 2018-10-15 14:22:48 -07:00
fragosti
43f8f2abbd feat: add changelog entries for changed packages 2018-10-15 14:20:31 -07:00
Fabio Berger
fb0e0473de chore: move wiki to Developers section 2018-10-15 22:18:44 +01:00
Steve Klebanoff
45ff83d852 remove unused import 2018-10-15 14:15:58 -07:00
Alex Browne
e3af06ab10 Update CHANGELOG.json for all changed packages 2018-10-15 14:11:20 -07:00
fragosti
e7130af6a9 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/move-features-over-from-zrx-buyer 2018-10-15 14:11:05 -07:00
Alex Browne
be1a597250 Remove ContractAddresses from packages/types (mistake after rebase) 2018-10-15 14:10:31 -07:00
Steve Klebanoff
f13d061dd2 move z-index setting to zero instant container, and add ability for zindex to be set on container 2018-10-15 14:04:53 -07:00
Alex Browne
00db096d2e Fix bug introduced during rebase 2018-10-15 13:44:21 -07:00
Steve Klebanoff
7325e16698 get rid of unused marginLeft and marginRight props 2018-10-15 13:41:36 -07:00
Steve Klebanoff
14b47f3a9f better private function syntax 2018-10-15 13:39:00 -07:00
Alex Browne
f0e4837983 Fix failing doc generation tests 2018-10-15 13:38:59 -07:00
Alex Browne
003ab1e5b3 Fix linter errors in contract-wrappers 2018-10-15 13:38:59 -07:00
Alex Browne
24673be1cd Add resolveJsonModule: true to test_installation.ts 2018-10-15 13:38:59 -07:00
Alex Browne
7a6cace1ec Create CHANGELOG.json for three new packages 2018-10-15 13:38:59 -07:00
Alex Browne
8dc73d3d85 Add README.md for each new package 2018-10-15 13:38:59 -07:00
Alex Browne
d76d8abc1d Update .gitignore and .prettierignore 2018-10-15 13:38:59 -07:00
Alex Browne
c83dec22c9 Improve error handling for unknown network ids in contract-wrappers 2018-10-15 13:38:59 -07:00
Alex Browne
974ec23ecd Apply various PR feedback 2018-10-15 13:38:33 -07:00
Alex Browne
68f150eff2 Remove as any hack from artifacts in contracts package 2018-10-15 13:38:33 -07:00
Alex Browne
0e1cd9784b Use contractAddresses directly in revert_validation_test.ts 2018-10-15 13:38:33 -07:00
Alex Browne
6d79e30266 Update .gitattributes 2018-10-15 13:38:33 -07:00
Alex Browne
1e9ea09f08 Introduce new contract-addresses package and use it everywhere 2018-10-15 13:38:33 -07:00
Alex Browne
fa346d9461 Remove networks/addresses from contract-artifacts package 2018-10-15 13:37:57 -07:00
Alex Browne
33e65c322e Remove unused abi-gen dependencies 2018-10-15 13:37:57 -07:00
Alex Browne
770cf52933 Remove unused copyfiles dependencies 2018-10-15 13:37:57 -07:00
Alex Browne
1b8b2c0b9b Appease linter 2018-10-15 13:37:57 -07:00
Alex Browne
6c8fb370dc Update order-watcher to use new migrations functions 2018-10-15 13:37:57 -07:00
Alex Browne
a48e0a08bf Add new runMigrationsOnce method to migrations. Update contract-wrappers to use it. 2018-10-15 13:37:57 -07:00
Alex Browne
ecdd6e3303 Fix linter errors in contract-wrappers 2018-10-15 13:37:57 -07:00
Alex Browne
17c6661e2d Cleanup migrations and contracts package. Make contracts private again. 2018-10-15 13:37:57 -07:00
Alex Browne
141121004c Remove generated artifacts in the contracts package 2018-10-15 13:37:57 -07:00
Alex Browne
3af7d1ad02 Add missing dependency to abi-gen-wrappers 2018-10-15 13:37:56 -07:00
Alex Browne
255da32d29 Update testnet-faucets and website to work with new artifacts and abi-gen wrappers 2018-10-15 13:37:56 -07:00
Alex Browne
29063cab18 update order-watcher to use new artifacts and abi-gen wrappers packages 2018-10-15 13:37:56 -07:00
Alex Browne
3da032fb24 update asset-buyer to use new artifacts and abi-gen wrappers packages 2018-10-15 13:36:59 -07:00
Alex Browne
d0b37fcab5 update fill-scenarios to use new artifacts and abi-gen wrappers packages 2018-10-15 13:36:59 -07:00
Alex Browne
57d9fcf9e5 update order-utils to use new artifacts and abi-gen wrappers packages 2018-10-15 13:36:59 -07:00
Alex Browne
2bd7b0f66b update contract_wrappers to use new artifacts and abi-gen wrappers packages 2018-10-15 13:36:59 -07:00
Alex Browne
8f0ceaf1d8 Create abi-gen-wrappers package 2018-10-15 13:36:59 -07:00
Alex Browne
1da3604351 Create contract-artifacts package (needed to solve dependency cycle) 2018-10-15 13:36:59 -07:00
Alex Browne
3a7bb97ad1 Remove artifacts from migrations package and update contract-wrappers accordingly 2018-10-15 13:36:59 -07:00
Alex Browne
2aa73fc839 Add generated contract wrappers in contracts package to gitignore 2018-10-15 13:36:10 -07:00
Alex Browne
33335a6791 Automatically collapse contract artifacts by adding them to .gitattributes 2018-10-15 13:36:10 -07:00
Alex Browne
5b1b423b5e Change @0xproject/contracts version number back to 2.1.48 2018-10-15 13:36:10 -07:00
Alex Browne
90f5e4d197 Update .prettierignore 2018-10-15 13:36:09 -07:00
Alex Browne
026ad1f9a1 Update contract-wrappers package to use new contracts package for generated files 2018-10-15 13:36:09 -07:00
Alex Browne
81c4887241 Move generated contract wrappers and artifacts into contracts package 2018-10-15 13:36:09 -07:00
Steve Klebanoff
20d60e2368 dont need constructor just to set state
git status
2018-10-15 13:33:30 -07:00
Steve Klebanoff
58ad7d7caf change to ? syntax instead of number | undefined 2018-10-15 13:15:02 -07:00
Steve Klebanoff
af49514397 suggestions from code review: renaming timeoutNumber to timeoutId, sharing interface, renaming component 2018-10-15 13:12:52 -07:00
Steve Klebanoff
2aa4761d6d add semicolons 2018-10-15 10:28:26 -07:00
Brandon Millman
83a36aff3f feat: update CODEOWNERS for asset-buyer, instant, and website 2018-10-15 09:58:03 -07:00
Fabio Berger
8b8c958203 chore: fix padding issue 2018-10-15 17:46:42 +01:00
Fabio Berger
6bf27ac57f chore: replace Github with Wiki in topBar and refactor so can display internal & external links 2018-10-15 17:43:45 +01:00
Fabio Berger
ce151f630d feat: highlighted sidebar as you scroll on doc reference pages 2018-10-15 17:35:40 +01:00
Fabio Berger
96d145f54f chore: Remove unused state 2018-10-15 16:49:46 +01:00
Fabio Berger
c9a0c7872d Chore: Only render one sidebar at a time 2018-10-15 16:48:39 +01:00
Fabio Berger
a5e435d831 fix: menu item overflow issue 2018-10-15 12:58:09 +01:00
Fabio Berger
6ada38248e chore: improve rendering of sidebar top section on mobile 2018-10-15 12:49:47 +01:00
Fabio Berger
40512ea608 chore: Export Stats from types, not indirectly from OrderWatcher 2018-10-15 12:38:02 +01:00
Fabio Berger
60208091a4 chore: fix missed class rename 2018-10-15 12:35:38 +01:00
Fabio Berger
29437c5761 chore: Export stats type from 0x.js 2018-10-15 12:26:23 +01:00
Kadinsky
79db7147a4 Merge pull request #1118 from BEcorp/development
[order-watcher] Public function getStats
2018-10-15 12:25:24 +01:00
Fabio Berger
b3a323efa1 fix: Nested a tag warning in console by not rendering a tags within type definition popovers 2018-10-15 12:20:30 +01:00
Fabio Berger
bf9af95654 chore: improve colors 2018-10-15 11:57:16 +01:00
Fabio Berger
eee0640b07 chore: many small stylistic changes 2018-10-15 11:27:56 +01:00
Fabio Berger
4298da118f chore: improve styling of sidebar 2018-10-15 11:23:02 +01:00
Fabio Berger
bd763ebb34 chore: fix key issue 2018-10-15 11:22:22 +01:00
Fabio Berger
3fbf9c4285 chore: round border of code snippets 2018-10-15 11:22:00 +01:00
Brandon Millman
23fb8dab13 Merge pull request #1134 from 0xProject/feature/contract-wrappers/forwarder-wrapper-validation
[contract-wrappers] Add optional validation to the forwarder wrapper
2018-10-14 23:39:53 -07:00
Fabio Berger
9b1f765ced chore: only show sidebar once docs have loaded 2018-10-13 17:11:47 +01:00
Fabio Berger
d85daab967 fix: Dropdown component so that re-clicking the activeNode when dropdown is open, closes it 2018-10-13 17:09:46 +01:00
Fabio Berger
11941b08b6 Fix sidebar top so long titles display correctly 2018-10-13 17:09:04 +01:00
Fabio Berger
6f77b90836 Chore: remove unused imports 2018-10-13 16:32:36 +01:00
Fabio Berger
2b2f5d6169 Fix: Make width variable 2018-10-13 16:32:26 +01:00
Fabio Berger
1d30a2f91d Remove doc menus from main topBar 2018-10-13 16:29:24 +01:00
Fabio Berger
6baadc746e Implement new version dropdown and remove it from nestedTopBar 2018-10-13 16:29:14 +01:00
Andrew Maurer
69e9dbd683 Merge branch 'development' into development 2018-10-13 11:09:50 -04:00
Fabio Berger
e0e011eb66 Fix sidebar shifting onHover due to scrollbar width 2018-10-13 15:10:25 +01:00
amaurer
dc56ce4549 Exported Stats in OW package 2018-10-13 08:47:37 -04:00
Steve Klebanoff
0aef2c8ade feat(instant): add sliding error 2018-10-12 16:26:26 -07:00
Steve Klebanoff
7102a23b0a feat: add Steve to team page 2018-10-12 16:26:26 -07:00
fragosti
f39541436a feat: model asset meta data and add dynamic assetData state 2018-10-12 16:11:30 -07:00
fragosti
ccf021b8bf feat: use new AssetData type from types package 2018-10-12 14:52:42 -07:00
fragosti
025614a7fd feat: Add AssetData type as union of ERC721AssetData and ERC20AssetData 2018-10-12 14:52:18 -07:00
Brandon Millman
22abd1dfcf feat(contract-wrappers): add optional validation to the forwarder wrapper
Similar to the approach taken in exchange wrapper, make a call to an rpc
node in order to simulate the transaction before actually sending the
transaction. The decorator will parse revert reasons and other types of
errors into canonical errors that a consumer of the library expects when
interacting with a contract wrapper.
2018-10-12 14:42:31 -07:00
F. Eugene Aumson
a424c2adfa fix: linter 2018-10-12 16:05:41 -04:00
F. Eugene Aumson
55f9348d0a fix: use python's extsplit, not manual splicing 2018-10-12 16:00:45 -04:00
F. Eugene Aumson
2afa38c927 feat(python/order_utils): project stub
An empty project, with respect to functionality, but one configured with
a test framework, linters, CI integration, etc.

https://app.asana.com/0/836857747873847/839549782781239/f
2018-10-12 15:50:48 -04:00
F. Eugene Aumson
92fd0a9d24 feat: project stub for python order utilities
An empty project, with respect to functionality, but one configured with
a test framework, linters, CI integration, etc.

https://app.asana.com/0/836857747873847/839549782781239/f
2018-10-12 15:31:19 -04:00
Fabio Berger
a5eb346dd1 fix: Remove unnecessary onClick prop from NestedSidebar, since one can listen to container element onClick 2018-10-12 19:44:51 +01:00
Fabio Berger
a4604cb2f2 Pass down sidebar instead of sectionNameToLinks 2018-10-12 19:44:18 +01:00
Kadinsky
11033c78f5 Merge pull request #1132 from 0xProject/removeRollbarUMD
fix(website): replace Rollbar UMD with regular npm package
2018-10-12 20:13:11 +02:00
fragosti
f3391e1250 feat: make redux actions type-sage 2018-10-12 11:00:36 -07:00
fragosti
09c5ae4e65 feat: have coinbase API return BigNumber for eth-usd price endpoint 2018-10-12 09:55:33 -07:00
amaurer
cd04a21e29 Fixes per converstaion, stats interface to pub 2018-10-12 11:55:31 -04:00
Fabio Berger
3ca9439481 Make all doc reference pages responsive 2018-10-12 17:42:41 +02:00
Fabio Berger
36f202f7b4 Improve loading 2018-10-12 16:38:25 +02:00
Fabio Berger
a86ca6257f If sidebar menu item links to internal page, no longer open in new tab 2018-10-12 15:59:23 +02:00
Fabio Berger
16386bc99e Add Getting starter sidebar header 2018-10-12 15:55:00 +02:00
Fabio Berger
de20ef1a49 Refactor Home so that Dev section chrome is reusable across pages 2018-10-12 15:54:44 +02:00
fragosti
03b235bb42 feat: populate order details with information from worst buy quote 2018-10-11 17:35:22 -07:00
fragosti
1c92ae0ed0 fix: export BuyQuoteInfo from asset-buyer 2018-10-11 17:34:43 -07:00
fragosti
0edd9b32ba feat: debounce the fetching of new quotes 2018-10-11 15:35:39 -07:00
fragosti
63652df3b9 feat: adjust amount input width 2018-10-11 15:05:20 -07:00
Steve Klebanoff
5c76c8586d Merge pull request #1128 from 0xProject/feature/add-steve-to-team
[website] add Steve to team page
2018-10-11 12:41:32 -07:00
Alex Browne
f3cba233ad Use medium+ resource class for build-website (#1129) 2018-10-11 11:27:28 -07:00
Fabio Berger
dcdc411ab7 chore: update yarn.lock 2018-10-11 14:58:39 +02:00
Fabio Berger
7f217dcb3c style: Make width of developer section same as rest of website (1064px) 2018-10-11 14:58:29 +02:00
Fabio Berger
295a8c760a merge dev-section-redesign 2018-10-11 14:25:47 +02:00
Fabio Berger
1cfcc82ea9 Merge branch 'development' into dev-section-redesign
* development: (62 commits)
  Fix linter error
  Upgrade ethereum-types
  Lint and update deps
  Be more explicit with falsiness
  Add type to cssRuleIfExists
  Fix issue where we throw if non-numeric characters are used in input
  Upgrade to more recent types, fix yarn.lock
  [fix]: [testnet-faucet] Exit 1 on build fail
  Explains tools we want them to use
  Add note about button
  Add dev-tools-pages bundles to gitignore
  Improve README
  Fix button and center
  Increase max bundle size for instant
  Add stuff
  Initial project scaffolding
  Change tslint config to remove conflicts with prettier
  fix: [testnet-faucet] Signing of orders
  Update the CHANGELOG
  Add comments for expiryBuffer
  ...
2018-10-11 14:23:45 +02:00
Fabio Berger
a1a0d120be Update yarn.lock 2018-10-11 14:19:25 +02:00
Fabio Berger
2e3624d888 fix(website): replace Rollbar UMD with regular npm package 2018-10-11 13:57:07 +02:00
Fabio Berger
9b147f1495 fix(website): remove deadzone between "Developers" menu item and dropdown so it never closes when hovering between the two 2018-10-11 13:49:56 +02:00
Fabio Berger
636ce6331b fix(website): Avoid hover activated dropdown from closing when activeNode is clicked 2018-10-11 13:33:49 +02:00
Leonid Logvinov
8941b6cee5 Merge pull request #1125 from 0xProject/feature/starter-dev-tools-pages
Initial project scaffolding for dev tools pages
2018-10-11 12:44:00 +02:00
Leonid Logvinov
e4351789d2 Fix linter error 2018-10-11 12:23:19 +02:00
fragosti
19f61906d3 feat: Move over features from zrx-buyer 2018-10-10 18:28:12 -07:00
Francesco Agosti
a5a033c359 Merge pull request #1114 from 0xProject/feature/instant/redux-styles-container
[instant] Add styles and redux to instant
2018-10-10 18:27:54 -07:00
fragosti
50442c3ebb Upgrade ethereum-types 2018-10-10 17:25:17 -07:00
fragosti
9fe88b2146 Lint and update deps 2018-10-10 17:14:17 -07:00
fragosti
c8e7d225ca Be more explicit with falsiness 2018-10-10 16:55:59 -07:00
fragosti
0aa7bfab0d Add type to cssRuleIfExists 2018-10-10 16:48:27 -07:00
fragosti
7bc9cd8c94 Fix issue where we throw if non-numeric characters are used in input 2018-10-10 16:43:55 -07:00
fragosti
0a3c543d5d Upgrade to more recent types, fix yarn.lock 2018-10-10 16:31:14 -07:00
Jacob Evans
01ccd8ff1a [fix]: [testnet-faucet] Exit 1 on build fail
If we detect any compilation errors then exit with 1
2018-10-11 09:56:49 +11:00
Steve Klebanoff
f73e6a75b1 feat: add Steve to team page 2018-10-10 15:21:41 -07:00
Fabio Berger
a300a451c8 Explains tools we want them to use 2018-10-10 22:50:20 +02:00
Fabio Berger
2a95d3269d Add note about button 2018-10-10 22:44:03 +02:00
Fabio Berger
c8fd1ae05c Add dev-tools-pages bundles to gitignore 2018-10-10 22:40:56 +02:00
Fabio Berger
19a657c38b Improve README 2018-10-10 22:40:14 +02:00
Fabio Berger
7418932432 Fix button and center 2018-10-10 22:31:18 +02:00
fragosti
aec0dd3835 Increase max bundle size for instant 2018-10-10 10:38:04 -07:00
Fabio Berger
fb882b0c77 Add stuff 2018-10-10 17:22:31 +02:00
Leonid Logvinov
6c0d317380 Initial project scaffolding 2018-10-10 16:20:14 +02:00
Fabio Berger
0fd158ac64 Replace Rollbar UMD with regular import 2018-10-10 16:06:32 +02:00
fragosti
a165f5d25b Change tslint config to remove conflicts with prettier 2018-10-09 18:41:31 -07:00
fragosti
2bd8cbb80c Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/redux-styles-container 2018-10-09 18:25:14 -07:00
Brandon Millman
afb34da729 Merge pull request #1116 from 0xProject/feature/asset-buyer/api-tweaks
[asset-buyer] Fix order expiration calc bug and expose gas options to executeBuyQuote
2018-10-09 18:15:33 -07:00
Jacob Evans
402089db4e fix: [testnet-faucet] Signing of orders
Signing of orders changed in order-utils but forgot to update testnet faucet
2018-10-10 11:31:27 +11:00
Brandon Millman
8155d311af Merge branch 'development' into feature/asset-buyer/api-tweaks
* development:
  Define bundlewatch.ci.repoBranchBase
  Stop accesing ethers private methods
  Fix merge conflicts
  Fix ethers build issue
  Upgrade ethers.js version
  Fix branch name
  Add max sizes
  Use bundlewatch instead of bundlesize
  Move Metamask Error to OrderErrors
  Update the exported types for the packages which touch RPC providers
  Throw and handle errors from Providers.
  Clarifies use of schemas outside of Javascript/TypeScript.
  Detect MM on signature validation failure.
  Return SignedOrder from signing utils.
  Update 0x.js Changelog
  Add eth_signTypedData support to our wallet subproviders
  Move SignTypedData to utils package
  Introduce Metamask Subprovider.
  Expose eth_signTypedData functionality for order signing
2018-10-09 17:04:54 -07:00
Brandon Millman
cd8e6d9cdf Update the CHANGELOG 2018-10-09 16:36:19 -07:00
Brandon Millman
f2fdb6e47d Add comments for expiryBuffer 2018-10-09 14:28:54 -07:00
fragosti
941448d65c Fix empty input bug 2018-10-09 12:11:12 -07:00
fragosti
764f402eb9 Center 0x instant 2018-10-09 12:00:55 -07:00
Leonid Logvinov
bd06ebde8d Merge pull request #1122 from 0xProject/feature/new-ethers
Upgrade ethers.js version
2018-10-09 16:28:44 +02:00
Leonid Logvinov
fbd7115500 Define bundlewatch.ci.repoBranchBase 2018-10-09 16:11:29 +02:00
Leonid Logvinov
f93774f855 Stop accesing ethers private methods 2018-10-09 16:01:34 +02:00
Leonid Logvinov
d21e6f3aaf Fix merge conflicts 2018-10-09 16:01:34 +02:00
Leonid Logvinov
22160df2d2 Fix ethers build issue 2018-10-09 16:01:34 +02:00
Leonid Logvinov
31ee8870b8 Upgrade ethers.js version 2018-10-09 16:01:34 +02:00
Leonid Logvinov
9876f6cc34 Merge pull request #1123 from 0xProject/feature/artifacts
Use bundlewatch instead of bundlesize
2018-10-09 16:01:14 +02:00
Leonid Logvinov
6f600029a2 Fix branch name 2018-10-09 14:57:14 +02:00
Leonid Logvinov
1bc4d47663 Add max sizes 2018-10-09 14:29:40 +02:00
Leonid Logvinov
6bfe7d7b7e Use bundlewatch instead of bundlesize 2018-10-09 14:15:52 +02:00
Jacob Evans
024bcf492d Merge pull request #1102 from 0xProject/feature/0x.js/eip712-sign-typed-data
[0x.js][order-utils][web3-wrapper] Expose eth_signTypedData functionality for order signing
2018-10-09 21:17:11 +11:00
Jacob Evans
75b9e63919 Move Metamask Error to OrderErrors 2018-10-09 20:58:30 +11:00
Fabio Berger
6c9f7839c3 Merge branch 'development' into dev-section-redesign
* development:
  Clarifies use of schemas outside of Javascript/TypeScript.
  Fix typo
  Add asset-buyer to published packages section in README
  Publish
  Updated CHANGELOGS
  Update BuyQuote interface
  Add missing default options
  Remove unused constants
  Add fee order with a takerFee
  Add additional order factory methods and refactor test to use them
  Add comments about buy quote calculation
  Update CHANGELOG
  Fix linter
  Add additional test for slippage
  Add buy_quote_calculator_test
2018-10-09 11:42:35 +02:00
Jacob Evans
7f554303b4 Update the exported types for the packages which touch RPC providers 2018-10-09 20:29:41 +11:00
Jacob Evans
9e8031d5e3 Throw and handle errors from Providers.
In web3 wrapper when a response contains an error field we throw this rather than return response.result which is often undefined.
In Signature Utils we handle the error thrown when a user rejects the signing dialogue to prevent double signing.
Exposed the ZeroExTransaction JSON schema.
In Website only use the MetamaskSubprovider if we can detect the provider is Metamask
2018-10-09 19:01:36 +11:00
Fabio Berger
3ac9dac4f0 Merge pull request #1121 from nebkor/development
Clarifies use of schemas outside of Javascript/TypeScript.
2018-10-09 08:50:21 +02:00
Fabio Berger
9654397b29 Merge pull request #1103 from 0xProject/doc-overview-page
Implement Developer Home
2018-10-08 19:12:52 +01:00
Joe Ardent
34c00eaeb3 Clarifies use of schemas outside of Javascript/TypeScript. 2018-10-07 21:28:11 -07:00
Jacob Evans
e1236a4846 Detect MM on signature validation failure.
Report a developer friendly error in this event to educate them on the compatability wrapper MetamaskSubprovider
2018-10-08 11:13:04 +11:00
amaurer
e5192507ab Fixed accidental carriage return removal in index.ts 2018-10-07 12:31:51 -04:00
amaurer
2e1222556f Changed getWatchedOrders to getStats and returns Stats object 2018-10-07 12:24:42 -04:00
amaurer
9171f9ec60 Fix lint issues 2018-10-06 11:04:48 -04:00
amaurer
d0fed1ae46 Fixed linting issue 2018-10-06 10:43:36 -04:00
amaurer
ee0f2e46ee Update order-watcher changelog 2018-10-06 10:32:07 -04:00
amaurer
c833b4f494 Added comments to new getWatchCounts function 2018-10-06 10:23:16 -04:00
amaurer
bd3f101ab8 Added orderWatchCount to return total count of orders watched. 2018-10-06 10:06:34 -04:00
Brandon Millman
f9f8e06c1c Fix incorrect affiliate fee calculations and associated tests 2018-10-05 15:42:19 -07:00
Brandon Millman
cb1311ecc5 Increase default expiryBufferSeconds from 15 to 300 (5 minutes) 2018-10-05 15:25:54 -07:00
Brandon Millman
9ba00a1077 Add comments for gasPrice and gasLimit 2018-10-05 15:24:11 -07:00
fragosti
405234133b Fix order expiration calc bug and expose gas options to executeBuyQuote 2018-10-05 13:40:26 -07:00
Fabio Berger
6cc9631ef6 remove unused import 2018-10-05 17:58:54 +01:00
Fabio Berger
2966ab12e0 Move valid-url import to react-shared 2018-10-05 17:58:34 +01:00
Fabio Berger
3ce665eeab Fix comment 2018-10-05 17:58:22 +01:00
Fabio Berger
03bfc7dd40 Fix liinter 2018-10-05 17:34:46 +01:00
Fabio Berger
a5d0066d00 Convert TutorialButton to styled component 2018-10-05 17:28:03 +01:00
Fabio Berger
df7210163a Convert more divs to containers and text components 2018-10-05 15:33:15 +01:00
Fabio Berger
ded6742ddd remove inline style 2018-10-05 15:06:59 +01:00
Fabio Berger
fa6bd34899 Remove type prop and instead infer it from the value of to 2018-10-05 14:55:28 +01:00
Fabio Berger
5f2cd33da0 Remove style prop from Link 2018-10-05 13:54:37 +01:00
Fabio Berger
e0355a2e39 Rename scroll container 2018-10-05 12:03:15 +01:00
Fabio Berger
f7aee9c7a9 Remove containerId option and throw if passing in shouldOpenInNewTab with type ReactScroll 2018-10-05 12:00:24 +01:00
Fabio Berger
e7de4b953f Apply props to all link variants when possible 2018-10-05 11:51:52 +01:00
Fabio Berger
d98de363eb Render paragraphs with spans so we don't get margin added 2018-10-05 11:46:35 +01:00
Fabio Berger
055763cceb Fix bug where wiki links in dev dropdown weren't working when on the wiki 2018-10-05 11:13:33 +01:00
Fabio Berger
60ba8d57d4 Fix react warning 2018-10-05 10:13:19 +01:00
Jacob Evans
75d274f330 Return SignedOrder from signing utils.
Create a helper back in EIP712Utils for code cleanup.
Moved constants in order-utils into the constants object
2018-10-05 17:12:17 +10:00
fragosti
d7b6d8222f Apply linter 2018-10-04 19:32:33 -07:00
fragosti
1eb8d17ce3 Create SelectedAssetInputAmount 2018-10-04 19:24:10 -07:00
Jacob Evans
6e462b7dba Update 0x.js Changelog 2018-10-05 12:03:01 +10:00
Jacob Evans
3e2fe40a11 Add eth_signTypedData support to our wallet subproviders 2018-10-05 12:02:09 +10:00
Jacob Evans
2a82ff48c0 Move SignTypedData to utils package 2018-10-05 12:00:41 +10:00
Jacob Evans
07926ded6e Introduce Metamask Subprovider.
MM has a number of inconsistencies with other providers when implementing the JSON RPC interface. This subprovider wraps those nuances so they do not leak into the rest of our code
2018-10-05 12:00:41 +10:00
Jacob Evans
adcfaa2e80 Expose eth_signTypedData functionality for order signing 2018-10-05 11:59:24 +10:00
fragosti
c5084f023a Add Input and AmountInput component 2018-10-04 18:57:40 -07:00
fragosti
bf0437324d Add border radios 2018-10-04 18:06:19 -07:00
fragosti
1001dfcc30 Add box shadow and default box-sizing: border-box to container 2018-10-04 18:02:42 -07:00
fragosti
98f8c77494 Add BuyButton and other small improvement 2018-10-04 17:48:10 -07:00
fragosti
d9b7aa2e4b Add faux order details section 2018-10-04 17:22:36 -07:00
fragosti
0cfe5637c0 Create zrx instant container heading 2018-10-04 16:27:04 -07:00
Brandon Millman
119f8c9449 Fix typo 2018-10-04 16:25:30 -07:00
Brandon Millman
b04b649ec0 Add asset-buyer to published packages section in README 2018-10-04 16:03:16 -07:00
fragosti
e2220a939f Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/redux-styles-container 2018-10-04 16:00:10 -07:00
fragosti
831b4a1193 apply prettier 2018-10-04 15:57:48 -07:00
Brandon Millman
b5d88079d9 Publish
- 0x.js@1.0.8
 - @0xproject/abi-gen@1.0.13
 - @0xproject/assert@1.0.13
 - @0xproject/asset-buyer@2.0.0
 - @0xproject/base-contract@3.0.1
 - @0xproject/connect@3.0.1
 - @0xproject/contract-wrappers@2.0.2
 - contracts@2.1.49
 - @0xproject/dev-utils@1.0.12
 - ethereum-types@1.0.11
 - @0xproject/fill-scenarios@1.0.7
 - @0xproject/instant@0.0.2
 - @0xproject/json-schemas@1.0.7
 - @0xproject/metacoin@0.0.23
 - @0xproject/migrations@1.0.14
 - @0xproject/monorepo-scripts@1.0.11
 - @0xproject/order-utils@1.0.7
 - @0xproject/order-watcher@2.1.1
 - @0xproject/react-docs@1.0.13
 - @0xproject/react-shared@1.0.15
 - @0xproject/sol-compiler@1.1.7
 - @0xproject/sol-cov@2.1.7
 - @0xproject/sol-doc@1.0.2
 - @0xproject/sol-resolver@1.0.14
 - @0xproject/sra-report@1.0.13
 - @0xproject/sra-spec@1.0.6
 - @0xproject/subproviders@2.0.7
 - @0xproject/testnet-faucets@1.0.51
 - @0xproject/tslint-config@1.0.8
 - @0xproject/types@1.1.4
 - @0xproject/typescript-typings@3.0.2
 - @0xproject/utils@2.0.2
 - @0xproject/web3-wrapper@3.0.3
 - @0xproject/website@0.0.54
2018-10-04 15:52:06 -07:00
Brandon Millman
266440f7c3 Updated CHANGELOGS 2018-10-04 15:51:56 -07:00
fragosti
d2e4a150d9 Fix currupted yarn lock file 2018-10-04 15:47:19 -07:00
fragosti
00eb3211c9 Remove deps we probably dont need 2018-10-04 15:20:06 -07:00
fragosti
1e3ab76e9a Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/redux-styles-container 2018-10-04 15:03:14 -07:00
fragosti
ba2ba628e8 Fix linting problems 2018-10-04 15:02:06 -07:00
fragosti
a8b01fedb1 Improve utilities and try to use them in simple form component 2018-10-04 14:59:07 -07:00
Brandon Millman
ab28e6af35 Merge pull request #1113 from 0xProject/feature/asset-buyer/tests
[asset-buyer] Rework min / max rate calc and add tests
2018-10-04 14:49:25 -07:00
Brandon Millman
63d97f4c88 Update BuyQuote interface 2018-10-04 14:37:34 -07:00
fragosti
85c34b17aa Add Flex and Container component 2018-10-04 14:04:56 -07:00
Fabio Berger
85045267fe remove stray logs 2018-10-04 19:26:50 +01:00
Fabio Berger
c9bfb86960 merge base branch 2018-10-04 19:03:01 +01:00
Fabio Berger
3991e66a58 merge developmemnt 2018-10-04 18:59:55 +01:00
Fabio Berger
2da7626b53 Merge pull request #1115 from 0xProject/upgradeWebpack
Upgrade Webpack
2018-10-04 18:30:54 +01:00
Fabio Berger
98db4b1543 force re-build 2018-10-04 16:46:12 +01:00
Fabio Berger
bc067baf0d Add website build to instructions 2018-10-04 16:44:54 +01:00
Fabio Berger
3624c63a46 Revert format and re-add changes 2018-10-04 16:43:52 +01:00
Fabio Berger
08ba4ffd61 Build website in parallel with other tests since no other test relies on it being built to run 2018-10-04 16:35:30 +01:00
Fabio Berger
d5379ab320 Add back sourceMap support for both dev/prod 2018-10-04 15:58:50 +01:00
Fabio Berger
c613b6741d Upgrade webpack 2018-10-04 15:47:43 +01:00
Brandon Millman
4394036e34 Add missing default options 2018-10-03 23:46:07 -07:00
Brandon Millman
a7a007435c Remove unused constants 2018-10-03 23:23:53 -07:00
Brandon Millman
24e0fbd7b9 Add fee order with a takerFee 2018-10-03 23:22:38 -07:00
Brandon Millman
059162a90a Add additional order factory methods and refactor test to use them 2018-10-03 23:22:13 -07:00
Brandon Millman
250a9a4809 Add comments about buy quote calculation 2018-10-03 22:54:32 -07:00
fragosti
4b8348da8c Add some ui components 2018-10-03 16:20:39 -07:00
Francesco Agosti
f7917cfa65 Merge pull request #1112 from 0xProject/feature/instant/umd-upload-and-bundle-size
Add 0x Instant to bundle analysis
2018-10-03 15:17:55 -07:00
fragosti
48e7aa6e77 Add Inter UI font 2018-10-03 15:16:59 -07:00
Brandon Millman
10f54893ef Update CHANGELOG 2018-10-03 14:59:06 -07:00
Brandon Millman
93736c1567 Fix linter 2018-10-03 14:52:44 -07:00
Brandon Millman
260db053fe Add additional test for slippage 2018-10-03 14:51:24 -07:00
Brandon Millman
57b4396193 Add buy_quote_calculator_test 2018-10-03 14:51:24 -07:00
F. Eugene Aumson
a21cf0ad83 Merge pull request #1108 from 0xProject/bug/every-artifact-has-every-source
fix(sol-compiler): persist artifacts with only relevant sources
2018-10-03 17:44:50 -04:00
fragosti
15f20cc18e Add redux to 0x instant 2018-10-03 14:28:07 -07:00
fragosti
700b7068a1 Add styled-components with theme 2018-10-03 14:08:08 -07:00
fragosti
748091c768 Add 0x Instant to bundle analysis 2018-10-03 12:19:41 -07:00
Fabio Berger
d0b2b4d0aa Convert more divs to Containers 2018-10-03 19:00:59 +01:00
Fabio Berger
4184c5db85 Use Container and Text where possible 2018-10-03 17:30:23 +01:00
Fabio Berger
7197f26494 rename for clarity 2018-10-03 17:25:23 +01:00
Fabio Berger
46764c2d3f Fix linter 2018-10-03 17:23:43 +01:00
Fabio Berger
a7955c0964 Remove todo 2018-10-03 17:19:39 +01:00
Fabio Berger
1bef42cdcb Improve comment 2018-10-03 17:17:16 +01:00
Fabio Berger
8d6bffa96c Use nestedSidebarMenu component for Dev home 2018-10-03 17:03:05 +01:00
Fabio Berger
72b1c60f39 Fix nit 2018-10-03 16:44:18 +01:00
Fabio Berger
751e8eafe4 Remove stray console.log 2018-10-03 16:41:44 +01:00
Fabio Berger
437612f8b8 Use same Link UI component for react-scroll links 2018-10-03 16:37:59 +01:00
F. Eugene Aumson
f614a2425f fix: comment need for sourceCodes pruning 2018-10-03 10:57:37 -04:00
F. Eugene Aumson
39a336ca6d fix: use original source ID's from compiler output
Previously, was generating fresh source ID's but per @LogvinovLeon 's
comment (cited below) that will likely break existing source code
mappings.

Changed to use the original source code mapping ID's that were generated
by the compiler

https://app.asana.com/0/684263176955174/842516551768097/f
https://github.com/0xProject/0x-monorepo/pull/1108
https://github.com/0xProject/0x-monorepo/pull/1108#pullrequestreview-161059063
2018-10-03 10:44:19 -04:00
Fabio Berger
ab855cdd1c remove stray console 2018-10-03 14:43:25 +01:00
Fabio Berger
688325491f Make whole bottom bar clickable not just the text 2018-10-03 14:37:49 +01:00
Fabio Berger
6d8427a024 Don't make opening links in new tab a default 2018-10-03 14:26:30 +01:00
Fabio Berger
80a6e6fe8d Decrease size of section descriptions 2018-10-03 14:26:16 +01:00
Fabio Berger
55d61b0dc7 Add border underneath logo while user is scrolling 2018-10-03 12:14:22 +01:00
Fabio Berger
f13c482161 Align logo and menu 2018-10-03 11:43:17 +01:00
Fabio Berger
188564a343 Add padding to bottom of scroll area 2018-10-03 11:28:56 +01:00
Fabio Berger
773220f840 Fix link 2018-10-03 11:27:28 +01:00
Fabio Berger
0c80fea821 Make tutorial buttons also open in a new tab 2018-10-03 10:52:48 +01:00
Fabio Berger
4fb7b35153 Convert remaining Links to new UI component 2018-10-03 10:52:37 +01:00
Alex Browne
37c55302e7 Fix some small bugs in compiler.ts 2018-10-02 17:29:47 -07:00
Francesco Agosti
bce43a0050 Merge pull request #1109 from 0xProject/feature/instant/init
[instant] Initialize the package with dev environment and tests etc..
2018-10-02 17:07:23 -07:00
Brandon Millman
678deccfca Merge pull request #1086 from 0xProject/feature/asset-buyer/improve-asset-buyer-manager
[asset-buyer] Improve API and README
2018-10-02 17:07:12 -07:00
fragosti
81b08c0339 Fix typo in build:ci 2018-10-02 16:34:19 -07:00
Brandon Millman
efe173e4f7 Update README 2018-10-02 16:30:46 -07:00
fragosti
cca12b7170 Make package private 2018-10-02 16:27:21 -07:00
fragosti
49e494ab8d Ignore bundles in public dir 2018-10-02 16:24:07 -07:00
Brandon Millman
42083e1408 Fix linter errors 2018-10-02 16:23:54 -07:00
fragosti
3cd7253f7b Add to README 2018-10-02 16:17:44 -07:00
Brandon Millman
343b922ec1 Merge branch 'development' into feature/asset-buyer/improve-asset-buyer-manager
* development: (178 commits)
  Change cache key back to repo from repo-built
  Change the lint command back
  Merge build & install
  Remove deps cache all together
  Cache all nested node_modules directories
  Explicitly specify yarn cache folder
  Ignore linter issues
  Fix linter issue
  Separate deps and built caches
  Build tslint rules before running linter
  Cache yarn cache directory without node modules
  Run linter before prettier as it fails more often
  Add yarn cache path
  Split CI install and build steps
  Move bundle-size out of static tests and don't wait for a build with static tests
  Introduce a build:ci command that doesn't build webpack bundles
  Measure only one bundle size as they're the same
  Fix linter errors
  Fix no_website CI builds
  Check bundle size on CI
  ...
2018-10-02 16:13:16 -07:00
Brandon Millman
6deb027bdf Clean up interfaces and exports 2018-10-02 16:10:41 -07:00
fragosti
ad56c9ea78 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/instant/init 2018-10-02 16:10:15 -07:00
fragosti
dde918e9a0 Add public dir 2018-10-02 16:06:25 -07:00
fragosti
8990b92dd6 Add build:ci command 2018-10-02 16:02:35 -07:00
Brandon Millman
75679835a7 Remove static methods to retrieve assetDatas from SRA 2018-10-02 15:52:27 -07:00
fragosti
2540660262 Add dev environment 2018-10-02 15:48:00 -07:00
Brandon Millman
75d6970e6c Add AssetUnavailable error 2018-10-02 15:44:11 -07:00
F. Eugene Aumson
98c1952956 fix: persist artifacts with only relevant sources
https://github.com/0xProject/0x-monorepo/pull/1108
https://app.asana.com/0/684263176955174/842516551768097/f
2018-10-02 17:50:58 -04:00
Brandon Millman
b3a868da0e Merge AssetBuyer and AssetBuyerManager 2018-10-02 13:54:57 -07:00
fragosti
20f18c3054 Clean up package json 2018-10-02 13:34:32 -07:00
fragosti
a64bee9f83 Tests are working with coverage 2018-10-02 13:29:14 -07:00
Fabio Berger
c07412a992 Use new Link UI component everywhere, and add complementary ALink type 2018-10-02 20:10:59 +01:00
Leonid Logvinov
f1ecb8c5cb Merge pull request #1104 from 0xProject/feature/bundlesize
Bundle size reporting
2018-10-02 15:29:49 +02:00
Leonid Logvinov
a4153144db Change cache key back to repo from repo-built 2018-10-02 15:09:25 +02:00
Leonid Logvinov
d6e0dc4bd2 Change the lint command back 2018-10-02 15:09:25 +02:00
Leonid Logvinov
fed7e0c858 Merge build & install 2018-10-02 15:09:25 +02:00
Leonid Logvinov
8ee34c49a9 Remove deps cache all together 2018-10-02 15:09:25 +02:00
Leonid Logvinov
194a5de564 Cache all nested node_modules directories 2018-10-02 15:09:25 +02:00
Leonid Logvinov
cc7710abd2 Explicitly specify yarn cache folder 2018-10-02 15:09:25 +02:00
Leonid Logvinov
10f3ee32a4 Ignore linter issues 2018-10-02 15:09:25 +02:00
Leonid Logvinov
8c985eb579 Fix linter issue 2018-10-02 15:09:24 +02:00
Leonid Logvinov
3a93c8a6e0 Separate deps and built caches 2018-10-02 15:09:24 +02:00
Leonid Logvinov
86cc98b245 Build tslint rules before running linter 2018-10-02 15:09:24 +02:00
Leonid Logvinov
ddc0813d90 Cache yarn cache directory without node modules 2018-10-02 15:09:24 +02:00
Leonid Logvinov
a02e6c0441 Run linter before prettier as it fails more often 2018-10-02 15:09:24 +02:00
Leonid Logvinov
52ac84335c Add yarn cache path 2018-10-02 15:09:24 +02:00
Leonid Logvinov
97616eb8e4 Split CI install and build steps 2018-10-02 15:09:24 +02:00
Leonid Logvinov
9e3d1cd63d Move bundle-size out of static tests and don't wait for a build with static tests 2018-10-02 15:09:24 +02:00
Leonid Logvinov
f4e4eef48e Introduce a build:ci command that doesn't build webpack bundles 2018-10-02 15:09:24 +02:00
Leonid Logvinov
16720d4fc7 Measure only one bundle size as they're the same 2018-10-02 15:09:24 +02:00
Leonid Logvinov
f884cc826f Fix linter errors 2018-10-02 15:09:23 +02:00
Leonid Logvinov
1059acf56f Fix no_website CI builds 2018-10-02 15:09:23 +02:00
Leonid Logvinov
c3be851c18 Check bundle size on CI 2018-10-02 15:09:23 +02:00
Leonid Logvinov
00051ae5bb Add a command to run bundle size reporter 2018-10-02 15:09:23 +02:00
Leonid Logvinov
9ad4a135d2 Merge pull request #1106 from 0xProject/feature/postpublish-cleanup
Update package.json versions to match the npm ones
2018-10-02 15:08:43 +02:00
Leonid Logvinov
f80faf0b48 Update package.json versions to match the npm ones 2018-10-02 14:45:16 +02:00
Leonid Logvinov
8b7888b736 Updated CHANGELOGS 2018-10-02 12:37:34 +02:00
Leonid Logvinov
a9ec51ac10 Remove 0x.js bundles from .npmignore 2018-10-02 12:13:38 +02:00
Fabio Berger
0c99680396 Improve mobile padding 2018-10-02 10:51:41 +01:00
Fabio Berger
91afc37d2a Fix hovering 2018-10-02 10:30:44 +01:00
Fabio Berger
b79e3eaec6 Simplify helper methods 2018-10-02 09:15:41 +01:00
Fabio Berger
94766cbe19 Use colors module 2018-10-02 09:15:33 +01:00
Fabio Berger
d435341f9b Use container instead of div 2018-10-02 09:11:50 +01:00
Fabio Berger
c42b340042 Move more copy to translation files 2018-10-02 09:07:53 +01:00
Fabio Berger
3a9791e794 Make menuSubsectionsBySection optional 2018-10-01 22:26:06 +01:00
Fabio Berger
0d57ed6c93 Rename for clarity 2018-10-01 22:25:45 +01:00
Fabio Berger
457ed57d70 Move constants before configs and add TODO comment 2018-10-01 22:08:59 +01:00
Fabio Berger
67a2359014 Add comment about link component 2018-10-01 22:07:03 +01:00
Fabio Berger
136ef38277 Move colors to colors.ts file 2018-10-01 22:04:21 +01:00
Fabio Berger
42f6842844 Fix bug where button wouldn't be highlighted after hitting browser back button despite the cursor resting above it 2018-10-01 22:04:06 +01:00
Fabio Berger
8daf2df6e6 Prefer basscss over style 2018-10-01 22:03:23 +01:00
Fabio Berger
6a33c4685e Further shorten description 2018-10-01 22:02:57 +01:00
Brandon Millman
c1fb0d7fdf Add Jason to website 2018-10-01 11:52:49 -07:00
Fabio Berger
67e689158f Add missing yarn.lock changes 2018-10-01 17:53:30 +01:00
Fabio Berger
dbbf04bc7d Fix bug in sol-doc 2018-10-01 17:53:19 +01:00
Fabio Berger
bad6761e13 Merge pull request #1099 from 0xProject/solidityDocRefImprovements
Solidity Doc Improvements
2018-10-01 16:37:44 +01:00
Fabio Berger
0febb085c5 Fix linter 2018-10-01 16:29:29 +01:00
Fabio Berger
011cadc1ff Disable max file size tslint rule for types file 2018-10-01 16:21:51 +01:00
Fabio Berger
6ffdc318e7 Disable max file line count tslint rule for types file 2018-10-01 16:10:22 +01:00
Fabio Berger
733bb28c1c Fix bug where main content scrollbar wasn't showing up after navigating back in browser history via keyboard shortcut 2018-10-01 14:45:28 +01:00
Fabio Berger
3d1c2cb296 Fix incorrect merge errors 2018-10-01 13:49:43 +01:00
Fabio Berger
c7371cc048 Hide .svg file contents from PR review diff 2018-10-01 13:31:07 +01:00
Fabio Berger
7fdde15a5d Revert command name 2018-10-01 13:28:33 +01:00
Fabio Berger
8651b7bc25 fix merge 2018-10-01 13:16:00 +01:00
Fabio Berger
e7ab9938ce merge 2018-10-01 13:11:27 +01:00
Fabio Berger
9c6bb4245d Merge branch 'dev-section-redesign' into doc-overview-page
* dev-section-redesign:
  Publish
  Updated CHANGELOGS
  Un-nest the interface to fix the doc rendering
2018-10-01 13:08:06 +01:00
Fabio Berger
d4089a1794 Update react-scroll to include fix of using history.replaceState instead of history.pushState 2018-10-01 12:53:31 +01:00
Fabio Berger
de7470d936 merge development 2018-09-30 07:31:34 +01:00
Fabio Berger
b9eb2b3918 Add test that structs are documented in separate section 2018-09-29 14:22:49 +01:00
Fabio Berger
2b6a9911f5 Add test for methodSignature gen for methods with param/return structs 2018-09-29 14:22:33 +01:00
Fabio Berger
005b7a55e8 Fix tests 2018-09-29 14:22:05 +01:00
Fabio Berger
ac14dd2b29 Publish
- 0x.js@1.0.7
 - @0xproject/abi-gen@1.0.12
 - @0xproject/assert@1.0.12
 - @0xproject/asset-buyer@1.0.2
 - @0xproject/base-contract@3.0.0
 - @0xproject/connect@3.0.0
 - @0xproject/contract-wrappers@2.0.1
 - contracts@2.1.48
 - @0xproject/dev-utils@1.0.11
 - ethereum-types@1.0.9
 - @0xproject/fill-scenarios@1.0.6
 - @0xproject/json-schemas@1.0.5
 - @0xproject/metacoin@0.0.22
 - @0xproject/migrations@1.0.13
 - @0xproject/monorepo-scripts@1.0.10
 - @0xproject/order-utils@1.0.6
 - @0xproject/order-watcher@2.1.0
 - @0xproject/react-docs@1.0.12
 - @0xproject/react-shared@1.0.13
 - @0xproject/sol-compiler@1.1.6
 - @0xproject/sol-cov@2.1.6
 - @0xproject/sol-doc@1.0.1
 - @0xproject/sol-resolver@1.0.12
 - @0xproject/sra-report@1.0.12
 - @0xproject/sra-spec@1.0.5
 - @0xproject/subproviders@2.0.6
 - @0xproject/testnet-faucets@1.0.50
 - @0xproject/types@1.1.2
 - @0xproject/typescript-typings@3.0.0
 - @0xproject/utils@2.0.0
 - @0xproject/web3-wrapper@3.0.2
 - @0xproject/website@0.0.53
2018-09-28 19:16:07 +01:00
Fabio Berger
c354129b6f Updated CHANGELOGS 2018-09-28 19:15:38 +01:00
Fabio Berger
c7e26cd448 Un-nest the interface to fix the doc rendering 2018-09-28 18:59:28 +01:00
Fabio Berger
822b848dd7 Rename website yarn watch_without_deps to yarn dev 2018-09-28 18:44:34 +01:00
Fabio Berger
033340e304 Fix typo 2018-09-28 18:38:10 +01:00
Fabio Berger
9ae60d0abe Export class instead of function 2018-09-28 17:20:24 +01:00
Fabio Berger
2bf05193b4 Convert package descriptions to markdown and linkify them 2018-09-28 15:48:16 +01:00
Fabio Berger
b865492137 Fix minor scrolling issue 2018-09-28 15:28:29 +01:00
Fabio Berger
4d23cf85b9 Add mobile menu to overview page 2018-09-28 15:17:28 +01:00
Fabio Berger
54f535b375 Add back ability to listen for menu click events from the sidebar 2018-09-28 15:16:17 +01:00
Fabio Berger
155a4a8f06 Add sidebar menu, proper scrolling and mobile-optimize 2018-09-28 14:28:39 +01:00
Fabio Berger
12cfa6b450 Make sidebar menu item formatting optional so package names (with hyphens) render properly 2018-09-28 14:28:06 +01:00
Fabio Berger
10bd255e9d Shorten tutorial descriptions 2018-09-28 14:27:12 +01:00
Fabio Berger
e664768890 Import ObjectMap from types now that it's moved 2018-09-28 13:32:04 +01:00
fragosti
2471e10346 Have React setup with basic build working 2018-09-28 13:09:16 +02:00
Fabio Berger
ba7de7204d merge development 2018-09-28 12:08:12 +01:00
Fabio Berger
005a2e12ba Fix badge alignment 2018-09-28 11:33:30 +01:00
Fabio Berger
6dff24906e Fix network badges for V1 and add them for V2 2018-09-28 11:05:13 +01:00
Fabio Berger
398b292636 Add more basic types 2018-09-28 11:04:51 +01:00
Fabio Berger
545472a38f Fix section headers 2018-09-28 10:50:55 +01:00
Fabio Berger
28f5cd0641 Only add Stucts section if there are any 2018-09-28 10:30:24 +01:00
Fabio Berger
144561c53b Fix missing devdoc comments in output by fixing improper encoding of methodSignatures 2018-09-28 10:28:57 +01:00
Jacob Evans
a737cfa004 Merge pull request #1090 from 0xProject/bug/contract-wrappers/handle-revert-with-reason
[contract-wrappers] Test revert with reason when decoding call result
2018-09-28 00:21:15 +00:00
Jacob Evans
21f6072186 Handle revert with reason when decoding call result
We use in-process ganache which throws on an RPC error. This means all of our tests get a nice revert error thrown when testing against ganache. This is not possible with RPC providers and a revert with reason result is returned. Our callAsync doesn't handle this and attempts to decode the revert with reason error log as a successful log, which results in an error while decoding.

This only works with our fork of ethers https://github.com/ethers-io/ethers.js/pull/188 and will need to be re-worked when updating to Ethers.js 4
2018-09-28 09:59:58 +10:00
Alex Browne
94badedad4 Remove yarn postinstall hack (#1098) 2018-09-27 15:34:01 -07:00
Fabio Berger
8531f52456 Switch over remaining usage of sections.types for typeSectionName 2018-09-27 23:32:29 +01:00
Fabio Berger
092b184f45 Fix linter 2018-09-27 23:30:11 +01:00
Fabio Berger
b2ff7bda02 Explain cast to any 2018-09-27 23:24:05 +01:00
Fabio Berger
e0ff3484cf Improve switch case 2018-09-27 23:20:21 +01:00
Fabio Berger
95e84aae49 Improve comment 2018-09-27 23:18:32 +01:00
Fabio Berger
338b7d2ec0 Alphabetize 2018-09-27 23:16:55 +01:00
Fabio Berger
37ab789e84 Remove excessive type 2018-09-27 23:14:34 +01:00
Fabio Berger
957af23a64 Include structs section so that we can render struct params/return values properly with a popover 2018-09-27 23:02:12 +01:00
Fabio Berger
d4077ae970 Fix linter 2018-09-27 23:01:12 +01:00
Fabio Berger
17d4b467d4 Only show arguments if the params are named (i.e not generated getters) 2018-09-27 23:00:25 +01:00
Fabio Berger
ac878d8fdb Improve keys 2018-09-27 23:00:01 +01:00
Fabio Berger
ac04dbf7e4 Re-use interface component for rendering structs but label it differently 2018-09-27 19:50:02 +01:00
Fabio Berger
cfddea931d Make sure basic solidity types are colored orange 2018-09-27 19:49:07 +01:00
Fabio Berger
a6672e0190 Don't render colon for auto-generated getters 2018-09-27 19:43:10 +01:00
Fabio Berger
5347bf587f Render fallback functions better 2018-09-27 18:55:01 +01:00
Fabio Berger
63ffdb3895 Improve key 2018-09-27 18:52:51 +01:00
Fabio Berger
e7b1374f23 Fix dropdown menu item so it says "0x smart contracts" not "smart contract" 2018-09-27 18:52:37 +01:00
Fabio Berger
ceff5c9c2b Rename for clarity 2018-09-27 18:52:14 +01:00
Fabio Berger
dddfe8ae50 Add typeSectionName to docsInfo so we don't use hard-coded "Types" 2018-09-27 18:51:30 +01:00
Fabio Berger
c0498944c3 Add more robust key 2018-09-27 18:40:38 +01:00
Fabio Berger
5cc11912a7 Pull in only contracts we want rendered on the doc page 2018-09-27 18:39:27 +01:00
Leonid Logvinov
bf3795d2ac Merge pull request #1097 from 0xProject/feature/export-expiration-watcher
Export ExpirationWatcher from OrderWatcher
2018-09-27 12:53:36 +02:00
Leonid Logvinov
bc48bc99c3 Add PR number 2018-09-27 12:53:05 +02:00
Leonid Logvinov
51bfd1ca5e Export ExpirationWatcher from OrderWatcher 2018-09-27 12:48:48 +02:00
Leonid Logvinov
9160cd4983 Merge pull request #1069 from 0xProject/feature/ts-ethers
Upgrade to TS version of ethers
2018-09-27 12:47:00 +02:00
Fabio Berger
c55a419178 Split _genMethodDoc into it and _genFallbackDoc for clarity. Add isFallback boolean 2018-09-27 10:57:42 +01:00
Leonid Logvinov
63d79faa85 Fix linter errors 2018-09-27 11:51:11 +02:00
Fabio Berger
70e412e375 Merge pull request #1096 from 0xProject/fixIsValidECSignature
Add address normalization to isValidECSignature method
2018-09-27 10:29:18 +01:00
Leonid Logvinov
a51919db0e Remove ethers.js carret as it's a beta version 2018-09-27 11:24:03 +02:00
Leonid Logvinov
60971be35a Throw revert reasons from contract wrappers 2018-09-27 11:21:47 +02:00
Leonid Logvinov
cb99ebf78a Throw revert reasons from contract wrappers 2018-09-27 11:21:39 +02:00
Fabio Berger
6f02a3f40d Fix PR nr 2018-09-27 10:05:04 +01:00
Fabio Berger
0591f1d32a Add address normalization to isValidECSignature method 2018-09-27 10:03:54 +01:00
Fabio Berger
1402119c84 Remove RC version warnings 2018-09-26 22:48:30 +01:00
Francesco Agosti
a162281529 Merge pull request #1094 from 0xProject/feature/website/coinbase-wallet-portal-fixes-and-clay-title
[website] Use coinbase wallet instead of Toshi, fix portal layout, update Clay's title
2018-09-26 18:20:06 +02:00
F. Eugene Aumson
8c18a8fefc Merge pull request #1093 from feuGeneA/sol-doc-fixes
[sol-doc] fixes
2018-09-26 12:16:33 -04:00
fragosti
48f6452c3b remove items-center classname 2018-09-26 17:58:48 +02:00
fragosti
bd002caadd Change clay to Ecosystem Development Lead 2018-09-26 17:56:09 +02:00
fragosti
d6090921a8 Update everything to Coinbase Wallet instead of Toshi 2018-09-26 17:55:40 +02:00
Francesco Agosti
78a693e092 Merge pull request #1088 from 0xProject/fix/website/relayers-column
[website] When number of relayers is less than number of columns, reduce column…
2018-09-26 17:40:12 +02:00
F. Eugene Aumson
3f61d27656 fix: add bin file for sol-doc cli 2018-09-26 11:28:53 -04:00
F. Eugene Aumson
30525d15f4 Merge pull request #1004 from feuGeneA/sol-doc
[ethereum-types, react-docs, sol-compiler, sol-doc, types, typescript-typings, website] Add new Solidity documentation generation utility
2018-09-26 10:15:53 -04:00
Fabio Berger
f3ad64aa1c Move more text over to translation files 2018-09-26 14:52:58 +01:00
Francesco Agosti
c429409ed7 Merge pull request #1091 from 0xProject/feature/sra-spec/order-config-to-post-and-other-bugs
[connect][sra-spec] Update sra-spec and connect to have /order_config be a POST and other small improvements
2018-09-26 15:34:26 +02:00
F. Eugene Aumson
2bdaa58d71 fix: use latest versions of @0xproject packages 2018-09-26 09:22:06 -04:00
F. Eugene Aumson
75826fd559 Merge remote-tracking branch 'upstream/development' into sol-doc 2018-09-26 09:19:02 -04:00
F. Eugene Aumson
0ce6f03ed5 fix: disable tslint max-file-line-count...
before, tslint was saying "ERROR:
/home/gene/0x-monorepo/packages/types/src/index.ts[598, 2]: This file
has 599 lines, which exceeds the maximum of 500 lines allowed. Consider
breaking this file up into smaller parts."

https://github.com/0xProject/0x-monorepo/pull/1004#issuecomment-424704651
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-26 09:14:28 -04:00
Leonid Logvinov
5d73eebf6a Merge branch 'development' into feature/ts-ethers 2018-09-26 14:55:52 +02:00
Fabio Berger
13aa98f0f3 Merge pull request #1092 from 0xProject/addFlagToPublishReleases
Add Flag to publish releases command-line tool
2018-09-26 13:50:08 +01:00
Fabio Berger
d8c68b000b Implement dev home 2018-09-26 13:38:22 +01:00
Fabio Berger
a8d8f90d23 Fix logo to link to docs home 2018-09-26 13:37:58 +01:00
Fabio Berger
ac1005b5a8 Use new link component in Developer dropdown 2018-09-26 13:37:46 +01:00
Fabio Berger
a9b4027dc4 Create a link ui component that abstracts away interval vs. internal links 2018-09-26 13:37:25 +01:00
Fabio Berger
3504e875cc Move /docs endpoint before longer ones so doesn't overtake other doc endpoints 2018-09-26 13:35:41 +01:00
Fabio Berger
4a94f8b1ca Merge branch 'development' into addFlagToPublishReleases
* development:
  Add weijie and rahul
  Change news link
2018-09-26 13:18:20 +01:00
Fabio Berger
f8532b3f51 Typo 2018-09-26 13:15:42 +01:00
Fabio Berger
b244f3e2c0 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Add weijie and rahul
  Change news link
2018-09-26 13:14:23 +01:00
Fabio Berger
f33ecfd2fc Support passing in package names into publish_release_notes command-line for when publishing must be done manually 2018-09-26 13:11:12 +01:00
fragosti
f15751d800 Add to changelog 2018-09-26 14:06:53 +02:00
fragosti
e5e439adb9 Change /order_config endpoint to POST 2018-09-26 14:01:51 +02:00
fragosti
2d8f423cee Update examples 2018-09-26 13:57:41 +02:00
fragosti
5905fdb73b Fix erroneous ERC721 proxy id 2018-09-26 13:22:39 +02:00
fragosti
4ed9323804 Fix development flow 2018-09-26 13:19:01 +02:00
Francesco Agosti
d77c6e13b0 Merge pull request #1089 from 0xProject/feature/website/new-hires-sept-v2-announcement
[website] new hires and 0x v2 news link
2018-09-25 23:04:12 +02:00
fragosti
4e10f2c6f2 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/website/new-hires-sept-v2-announcement 2018-09-25 23:02:33 +02:00
F. Eugene Aumson
d3edb9721c Merge remote-tracking branch 'upstream/development' into sol-doc 2018-09-25 16:34:44 -04:00
Fabio Berger
1b35a6e3b5 Publish
- 0x.js@1.0.6
 - @0xproject/abi-gen@1.0.11
 - @0xproject/assert@1.0.11
 - @0xproject/asset-buyer@1.0.1
 - @0xproject/base-contract@2.0.5
 - @0xproject/connect@2.0.4
 - @0xproject/contract-wrappers@2.0.0
 - contracts@2.1.47
 - @0xproject/dev-utils@1.0.10
 - ethereum-types@1.0.8
 - @0xproject/fill-scenarios@1.0.5
 - @0xproject/json-schemas@1.0.4
 - @0xproject/metacoin@0.0.21
 - @0xproject/migrations@1.0.12
 - @0xproject/order-utils@1.0.5
 - @0xproject/order-watcher@2.0.0
 - @0xproject/react-docs@1.0.11
 - @0xproject/react-shared@1.0.12
 - @0xproject/sol-compiler@1.1.5
 - @0xproject/sol-cov@2.1.5
 - @0xproject/sol-resolver@1.0.11
 - @0xproject/sra-report@1.0.11
 - @0xproject/sra-spec@1.0.4
 - @0xproject/subproviders@2.0.5
 - @0xproject/testnet-faucets@1.0.49
 - @0xproject/types@1.1.1
 - @0xproject/typescript-typings@2.0.2
 - @0xproject/utils@1.0.11
 - @0xproject/web3-wrapper@3.0.1
 - @0xproject/website@0.0.52
2018-09-25 21:34:14 +01:00
Fabio Berger
900a8aee76 Updated CHANGELOGS 2018-09-25 21:33:55 +01:00
F. Eugene Aumson
de9f5d350f fix: call out a HACK in comments
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r220010054
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:40 -04:00
F. Eugene Aumson
e45f0b0eaf fix: update smart contract doc intros
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r220009790
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r220009909
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:40 -04:00
F. Eugene Aumson
2e7b218f40 fix: comments
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219990314
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r220007992
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:40 -04:00
F. Eugene Aumson
7fbfd9ccd9 fix: print error and exit process; don't re-throw
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219979003
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:40 -04:00
F. Eugene Aumson
1db5ff617f fix: split line for readability
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219978696
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:40 -04:00
F. Eugene Aumson
ac5376a1ca fix: rename JSON_TABWIDTH to JSON_TAB_WIDTH
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219977842
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:39 -04:00
F. Eugene Aumson
600ffd93a6 fix: use latest versions of @0xproject packages
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219977747
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 16:31:26 -04:00
fragosti
22597674d2 Add weijie and rahul 2018-09-25 22:29:16 +02:00
Fabio Berger
adf5acd5c4 Update yarn.lock 2018-09-25 21:23:06 +01:00
fragosti
055bcb52f8 Change news link 2018-09-25 22:04:12 +02:00
F. Eugene Aumson
6174267f69 fix: explain why tslint rule is disabled
https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219976511
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 15:51:32 -04:00
F. Eugene Aumson
e8c8d3e722 fix: rename SupportedDocJson field to SolDoc
from Solidity

https://github.com/0xProject/0x-monorepo/pull/1004#discussion_r219976199
https://github.com/0xProject/0x-monorepo/pull/1004
2018-09-25 15:51:03 -04:00
Brandon Millman
d20f713fad When number of relayers is less than number of columns, reduce column number to number of relayers 2018-09-25 21:08:32 +02:00
Fabio Berger
b40861747b Properly render function generic types that don't extend another type 2018-09-25 17:34:22 +01:00
Fabio Berger
b73df28454 Merge pull request #1087 from 0xProject/addTxHashToOrderState
Add transactionHash to OrderState and emit it from OrderWatcher
2018-09-25 16:37:24 +01:00
Fabio Berger
5afc739397 Add changelog entry 2018-09-25 16:37:08 +01:00
Fabio Berger
9eecf3683b Add transactionHash to OrderState and emit it from OrderWatcher subscription 2018-09-25 16:10:13 +01:00
Fabio Berger
7570f3db51 Merge pull request #1080 from 0xProject/upgradeBlockstream
Fix dropped events issue in Order-watcher and Contract-wrappers subscriptions
2018-09-25 14:59:37 +01:00
fragosti
04dd4ce6d1 Add to CHANGELOG 2018-09-25 14:10:38 +02:00
Fabio Berger
977d55c61b merge development 2018-09-25 13:07:14 +01:00
fragosti
ebe731ea86 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/asset-buyer/improve-asset-buyer-manager 2018-09-25 14:06:07 +02:00
fragosti
b853f04972 Make package public again, but add warning 2018-09-25 14:01:16 +02:00
fragosti
49cdd85b1d Add AssetBuyerManager to README 2018-09-25 13:58:48 +02:00
fragosti
47f8b5d6fc Use options object convention everywhere, and make package private 2018-09-25 13:55:07 +02:00
Leonid Logvinov
78ef98c27c Publish
- 0x.js@1.0.5
 - @0xproject/abi-gen@1.0.10
 - @0xproject/assert@1.0.10
 - @0xproject/asset-buyer@1.0.0
 - @0xproject/base-contract@2.0.4
 - @0xproject/connect@2.0.3
 - @0xproject/contract-wrappers@1.0.5
 - contracts@2.1.46
 - @0xproject/dev-utils@1.0.9
 - @0xproject/fill-scenarios@1.0.4
 - @0xproject/json-schemas@1.0.3
 - @0xproject/metacoin@0.0.20
 - @0xproject/migrations@1.0.11
 - @0xproject/order-utils@1.0.4
 - @0xproject/order-watcher@1.0.5
 - @0xproject/react-docs@1.0.10
 - @0xproject/react-shared@1.0.11
 - @0xproject/sol-compiler@1.1.4
 - @0xproject/sol-cov@2.1.4
 - @0xproject/sol-resolver@1.0.10
 - @0xproject/sra-report@1.0.10
 - @0xproject/sra-spec@1.0.3
 - @0xproject/subproviders@2.0.4
 - @0xproject/testnet-faucets@1.0.48
 - @0xproject/types@1.1.0
 - @0xproject/utils@1.0.10
 - @0xproject/web3-wrapper@3.0.0
 - @0xproject/website@0.0.51
2018-09-25 13:48:55 +02:00
Leonid Logvinov
411813d8d9 Updated CHANGELOGS 2018-09-25 13:48:44 +02:00
Leonid Logvinov
64f41259eb Merge pull request #1085 from 0xProject/feature/export-sra-types
[sra-types] Move SRA types from @0xproject/connect to @0xproject/types
2018-09-25 13:36:47 +02:00
Fabio Berger
fc3acec669 Fix lint issues 2018-09-25 12:32:20 +01:00
Leonid Logvinov
b85db17e75 Move SRA types from @0xproject/connect to @0xproject/sra-types 2018-09-25 13:12:12 +02:00
Fabio Berger
a05530f821 Fix prettier 2018-09-25 12:06:37 +01:00
Fabio Berger
173b36c54c Fix prettier 2018-09-25 12:06:28 +01:00
Fabio Berger
55ca971186 Decode logs received from blockstream 2018-09-25 12:05:44 +01:00
Fabio Berger
284930eb58 Add missing type 2018-09-25 11:30:27 +01:00
Fabio Berger
902691e289 Update changelogs 2018-09-25 11:29:36 +01:00
Fabio Berger
0afe55f2ff Refactor blockstream integration to use the proper callback method interface 2018-09-25 11:20:09 +01:00
Fabio Berger
21910a7129 Add entry about newly exposed method 2018-09-25 11:02:49 +01:00
Fabio Berger
9c89d1e99b Expose method to send raw JSON RPC payloads 2018-09-25 10:45:11 +01:00
Alex Browne
408f573188 Use the 0xorg DockerHub account instead of albrow (#1084) 2018-09-24 14:31:26 -07:00
F. Eugene Aumson
574270d061 fix: increase mocha timeout value
prior CI runs were failing because of this.
2018-09-24 17:17:28 -04:00
F. Eugene Aumson
9af5e3ba8e fix: add CHANGELOG.json 2018-09-24 17:17:19 -04:00
fragosti
89033e01e8 Provide convenience methods on AssetBuyerManager 2018-09-24 23:14:07 +02:00
Alex Browne
6f2ab23bd0 Feature/custom verdaccio dockerfile (#1083)
Create custom verdaccio docker image
2018-09-24 13:54:25 -07:00
fragosti
264b25c58d Rename StandardRelayerAPIAssetBuyerManager to just AssetBuyerManager and generalize it 2018-09-24 22:21:25 +02:00
F. Eugene Aumson
2116548eed Merge remote-tracking branch 'upstream/development' into sol-doc 2018-09-24 13:30:37 -04:00
F. Eugene Aumson
57fca16d7b fix: use contract name for constructor method name
and for its return value
2018-09-24 13:24:03 -04:00
F. Eugene Aumson
a900255820 fix: document indexed event arguments 2018-09-24 13:05:35 -04:00
F. Eugene Aumson
bd7565ceda fix: save v1 contract doc/deploy commands
For posterity, save commands needed to use sol-doc to generate and
deploy documentation objects for v1 contracts.
2018-09-24 12:36:26 -04:00
F. Eugene Aumson
880cd6e440 fix: document return value's type, not its name 2018-09-24 12:29:02 -04:00
Francesco Agosti
b830c28d83 Merge pull request #1037 from 0xProject/feature/forwarder-helper/sra-and-rpc
[asset-buyer] Create new AssetBuyer class
2018-09-24 17:47:59 +02:00
Francesco Agosti
4a316571ff Merge pull request #1073 from 0xProject/fix/website/signing-order-validation-bug
[website] Fix order creation and fill flow in Portal
2018-09-24 17:23:13 +02:00
Fabio Berger
5e1a2bd972 Merge development 2018-09-24 15:53:34 +01:00
Fabio Berger
fc33eacd2c Merge pull request #1082 from 0xProject/fixGetBlocks
Fix block fetch error if block not found
2018-09-24 15:49:58 +01:00
fragosti
748a8a8ae3 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into fix/website/signing-order-validation-bug 2018-09-24 16:48:47 +02:00
Fabio Berger
7516959c9f Add comments for clarity 2018-09-24 15:14:14 +01:00
Fabio Berger
311b925919 Add to doc comment why a block might not be returned to the caller 2018-09-24 15:14:07 +01:00
Fabio Berger
5d88a56452 Add PR nr 2018-09-24 15:11:29 +01:00
Fabio Berger
ebddf82819 Add CHANGELOG entry for change to getBlockAsync 2018-09-24 15:02:47 +01:00
Fabio Berger
d0448c2bbd Fix bug where if block wasn't found, getBlockAsync would throw. Now it returns undefined 2018-09-24 15:02:06 +01:00
fragosti
d8d1c98a40 Upgrade all deps 2018-09-24 15:53:34 +02:00
fragosti
f49b231e91 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/forwarder-helper/sra-and-rpc 2018-09-24 15:45:06 +02:00
fragosti
7a43e19116 Improve README 2018-09-24 15:43:02 +02:00
fragosti
e4b664bafa Add expiry buffer 2018-09-24 13:17:38 +02:00
F. Eugene Aumson
98d06d6d25 BREAKING CHANGE: document contracts from sol-doc
Change website to accept smart contract documentation in the format
generated by sol-doc rather than that generated by Doxity.
2018-09-22 11:29:27 -04:00
F. Eugene Aumson
9f0dfb1e1a feat: make sol-doc only document what's requested
if a list of contracts-to-document is passed into sol-doc, then the
output should only contain documentation for the contracts requested.

if an empty/undefined list is passed, then it should document all
contracts that were found.
2018-09-22 10:55:46 -04:00
F. Eugene Aumson
37cb18e1da fix: rename variable 2018-09-22 10:21:27 -04:00
F. Eugene Aumson
3e5d427d4e feat: add sol-doc command-line interface
modified sol-compiler to output progress/warning/error/etc messages to
stderr rather than stdout, so that sol-doc can put its output (and
nothing else) to stdout.

for posterity, added sol-doc cli usage as npm scripts to package.json.
2018-09-22 10:14:49 -04:00
Fabio Berger
8bce407aec Add order-utils to README list 2018-09-21 17:36:05 +01:00
fragosti
7a5376621f Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/forwarder-helper/sra-and-rpc 2018-09-21 17:20:48 +02:00
Leonid Logvinov
29f6adc2ed Publish
- 0x.js@1.0.4
 - @0xproject/abi-gen@1.0.9
 - @0xproject/assert@1.0.9
 - @0xproject/base-contract@2.0.3
 - @0xproject/connect@2.0.2
 - @0xproject/contract-wrappers@1.0.4
 - contracts@2.1.45
 - @0xproject/dev-utils@1.0.8
 - ethereum-types@1.0.7
 - @0xproject/fill-scenarios@1.0.3
 - @0xproject/forwarder-helper@1.0.4
 - @0xproject/json-schemas@1.0.2
 - @0xproject/metacoin@0.0.19
 - @0xproject/migrations@1.0.10
 - @0xproject/monorepo-scripts@1.0.9
 - @0xproject/order-utils@1.0.3
 - @0xproject/order-watcher@1.0.4
 - @0xproject/react-docs@1.0.9
 - @0xproject/react-shared@1.0.10
 - @0xproject/sol-compiler@1.1.3
 - @0xproject/sol-cov@2.1.3
 - @0xproject/sol-resolver@1.0.9
 - @0xproject/sra-report@1.0.9
 - @0xproject/sra-spec@1.0.2
 - @0xproject/subproviders@2.0.3
 - @0xproject/testnet-faucets@1.0.47
 - @0xproject/types@1.0.2
 - @0xproject/typescript-typings@2.0.1
 - @0xproject/utils@1.0.9
 - @0xproject/web3-wrapper@2.0.3
 - @0xproject/website@0.0.50
2018-09-21 16:59:27 +02:00
Leonid Logvinov
5446de6308 Updated CHANGELOGS 2018-09-21 16:59:16 +02:00
fragosti
5e84e9689f Small typos 2018-09-21 16:53:18 +02:00
Leonid Logvinov
9540db2aad Merge pull request #1081 from 0xProject/fix/node-types-unpin
Don't depend on a specific version of node types
2018-09-21 16:45:03 +02:00
Leonid Logvinov
7dd28d6fab Don't depend on a specific version of node types 2018-09-21 16:37:20 +02:00
fragosti
1bfaefb240 Add order provider response validation 2018-09-21 16:24:45 +02:00
fragosti
c48cf3ab3b Make asset buyer map private 2018-09-21 16:03:47 +02:00
fragosti
c64dcec772 More renaming 2018-09-21 15:58:04 +02:00
Fabio Berger
45dc2be083 Fix prettier 2018-09-21 14:53:25 +01:00
Fabio Berger
31f6fc065f Add changelog entries 2018-09-21 14:24:50 +01:00
fragosti
8dea48ebef Renamed orderFetcherResponseProcessor to orderProviderResponseProcessoer 2018-09-21 15:21:44 +02:00
fragosti
97150cf55f Add labels to TODOs 2018-09-21 14:56:54 +02:00
Fabio Berger
b0484eafe3 Upgrade blockstream to version that supports fetching logs by blockHash, fixing reliability issues 2018-09-21 13:46:10 +01:00
Fabio Berger
1b799e98e8 Add blockHash to FilterObject now that EIP234 is supported 2018-09-21 13:45:06 +01:00
Fabio Berger
e6840c60c7 Add assertion that one cannot specify both blockHash & fromBlock/toBlock to getLogsAsync 2018-09-21 13:43:06 +01:00
Fabio Berger
ba59879e7f Merge pull request #1079 from 0xProject/fixAwaitTxMined
Fix awaitTransactionMinedAsync for new Parity version
2018-09-21 11:36:58 +01:00
Leonid Logvinov
f3deabccf4 Add CHANGELOG entries 2018-09-21 12:10:25 +02:00
Leonid Logvinov
393f9e5a29 Fix the way we detect BN's 2018-09-21 12:05:13 +02:00
Fabio Berger
c10807c4e3 Add PR number 2018-09-21 11:04:30 +01:00
Fabio Berger
4e8ec2359d Also make sure the transactionReceipt contains a blockNumber when checking if a transaction has been mined. 2018-09-21 10:56:31 +01:00
Leonid Logvinov
79cf6969f9 Fix linter issue 2018-09-21 11:48:06 +02:00
Leonid Logvinov
3167bfde1a Remove unused import 2018-09-21 11:47:30 +02:00
Fabio Berger
cbd72b6e3d Merge pull request #1077 from PhABC/patch-1
[ethereum-types] Add BigNumber[] in ContractEventArg Type Definition
2018-09-21 00:01:25 +01:00
fragosti
fcca63a2dc Move some logic to order utils 2018-09-20 23:39:55 +02:00
Philippe Castonguay
90e28220fa Set ContractEventArg type definition to any 2018-09-20 16:19:08 -04:00
fragosti
35c324f67c Add utility to get assetDatas 2018-09-20 19:00:23 +02:00
F. Eugene Aumson
301e491952 Merge remote-tracking branch 'upstream/development' into sol-doc 2018-09-20 12:51:30 -04:00
fragosti
03e18ff7c6 Rename OrderFetcher to OrderProvider and other small improvements 2018-09-20 15:10:15 +02:00
fragosti
d23487bda9 Update descriptions for methods on AssetBuyer 2018-09-20 14:27:20 +02:00
fragosti
3238925aa4 Add better description to README 2018-09-20 14:09:11 +02:00
Philippe Castonguay
abd308455a Add BigNumber[] support in ContractEventArg
Currently, my contract has events that take a BigNumber array and typescript complains that ContractEventArg does not support this.
2018-09-19 20:17:00 -04:00
fragosti
a44f77a838 Implement StandardRelayerAPIAssetBuyerManager 2018-09-19 18:38:50 +02:00
Leonid Logvinov
5b6c91bb3f Fixes for the breaking changes in ethers 2018-09-19 17:56:23 +02:00
Leonid Logvinov
6701ec68bd Upgrade contract_templates to work with ethers 4.0 2018-09-19 17:56:23 +02:00
Leonid Logvinov
7b259c3f4c Remove types for ethers.js 2018-09-19 17:56:23 +02:00
Leonid Logvinov
ecbdf5f12b Upgrade to TS version of ethers 2018-09-19 17:56:23 +02:00
Fabio Berger
3e70ab015b Publish
- 0x.js@1.0.3
 - @0xproject/connect@2.0.1
 - @0xproject/contract-wrappers@1.0.3
 - contracts@2.1.44
 - @0xproject/fill-scenarios@1.0.2
 - @0xproject/forwarder-helper@1.0.3
 - @0xproject/migrations@1.0.9
 - @0xproject/order-utils@1.0.2
 - @0xproject/order-watcher@1.0.3
 - @0xproject/testnet-faucets@1.0.46
 - @0xproject/website@0.0.49
2018-09-19 16:13:24 +01:00
Fabio Berger
dab7f1a739 Updated CHANGELOGS 2018-09-19 16:13:15 +01:00
Fabio Berger
f6438725eb Update changelog entries 2018-09-19 15:59:17 +01:00
fragosti
a03b1d4d6c Move ObjectMap to shared types 2018-09-19 16:48:57 +02:00
fragosti
14345ab24e Rename forceOrderRefresh to shouldForceOrderRefresh 2018-09-19 16:02:52 +02:00
fragosti
60e2dfdbda Calculate min and max rates in buy quote 2018-09-19 15:58:30 +02:00
Fabio Berger
83ffbd05be Merge pull request #1074 from 0xProject/reduceBundleSizes
Reduce published packages bundle sizes
2018-09-19 14:50:01 +01:00
Fabio Berger
88be6b5e0d Add back in evm.bytecode.object since it's needed to generate contract-wrappers 2018-09-19 13:55:09 +01:00
Fabio Berger
aa47f85f48 Make higher-order packages copy over trimmed down artifacts 2018-09-19 12:57:45 +01:00
Fabio Berger
fec9c8f1c6 Create trimmed artifacts of v2 contracts 2018-09-19 12:53:00 +01:00
fragosti
93f7e33f6a Add isValidPercentage assert 2018-09-19 00:57:05 +02:00
fragosti
fd4b4f8f82 Make ForwaderWrapper take in a number for feePercentage instead of BigNumber 2018-09-18 23:56:07 +02:00
fragosti
0003666050 make the slippage percentage customizable by integrator 2018-09-18 16:42:52 +02:00
fragosti
b947609ff1 Restrict orders field of AssetBuyerOrdersAndFillableAmounts to SignedOrder for consistency 2018-09-18 16:26:50 +02:00
fragosti
38afd108f8 Fix order expired bug 2018-09-18 16:07:47 +02:00
fragosti
65f709d50a Move all constants to own file 2018-09-18 16:07:08 +02:00
fragosti
f5dbf212e3 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/forwarder-helper/sra-and-rpc 2018-09-18 15:58:47 +02:00
fragosti
f6e1bf78c8 Add yarn.lock 2018-09-18 14:33:47 +02:00
fragosti
950f279508 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into fix/website/signing-order-validation-bug 2018-09-18 14:15:31 +02:00
fragosti
e46807c28b Fix order creation and fill flow in Portal 2018-09-18 13:55:31 +02:00
Fabio Berger
e2559798df Publish
- 0x.js@1.0.2
 - @0xproject/contract-wrappers@1.0.2
 - @0xproject/forwarder-helper@1.0.2
 - @0xproject/migrations@1.0.8
 - @0xproject/order-watcher@1.0.2
 - @0xproject/testnet-faucets@1.0.45
 - @0xproject/website@0.0.48
2018-09-18 11:18:28 +01:00
Fabio Berger
ccc18620bf Updated CHANGELOGS 2018-09-18 11:18:19 +01:00
Fabio Berger
febe00db4f Merge pull request #1072 from 0xProject/addMissingEtherTokenConfig
Add missing mainnet addresses to ZRXToken & WETH artifacts
2018-09-18 11:05:28 +01:00
Fabio Berger
6f36048a8e Add CHANGELOG entries about bug fix 2018-09-18 10:43:18 +01:00
Fabio Berger
2457ecb7e7 Add missing mainnet addresses to ZRXToken & WETH artifacts 2018-09-18 10:29:27 +01:00
F. Eugene Aumson
30622631ff use Array.join rather than string concatenation 2018-09-17 19:31:47 -04:00
F. Eugene Aumson
4bab402e95 doc constructors as returning a Reference...
...not an Intrinsic
2018-09-17 19:31:45 -04:00
F. Eugene Aumson
91de15d50e remove stale comments 2018-09-17 19:31:42 -04:00
F. Eugene Aumson
d40a670d0b add newline to delimit interface declaration 2018-09-17 19:31:40 -04:00
F. Eugene Aumson
4ade674ada test multiple return values from a solidity method 2018-09-17 19:31:37 -04:00
F. Eugene Aumson
401ef2edef minorly tweak comments 2018-09-17 19:31:34 -04:00
F. Eugene Aumson
9201273939 add and test support for return comment 2018-09-17 19:31:32 -04:00
F. Eugene Aumson
5b07669bd0 add and test support for fallback functions 2018-09-17 19:31:30 -04:00
F. Eugene Aumson
3c7155afb0 test all the natspec stuff we use in our contracts 2018-09-17 19:31:23 -04:00
Jacob Evans
2378747570 Merge pull request #1063 from 0xProject/feature/0x.js/update-readme-import
0xjs README/website docs update
2018-09-17 23:59:27 +02:00
F. Eugene Aumson
a75981da14 test w/&w/out devdoc content in contract 2018-09-17 17:49:14 -04:00
F. Eugene Aumson
d5f964b58e test w/&w/out passing in contractsToCompile 2018-09-17 17:49:03 -04:00
Jacob Evans
2df569b727 Folder 1.0.0 -> 1.0.1 2018-09-17 21:33:50 +00:00
Jacob Evans
65aecc0024 Rename to v1->v0 v2->v1 2018-09-17 23:23:27 +02:00
Fabio Berger
ce51edcf80 Implement new responsive, dev section header and home scaffolding 2018-09-17 16:55:22 +01:00
Fabio Berger
fe38adfa08 Merge pull request #1027 from 0xProject/dev-dropdown
New Topbar Developers Dropdown
2018-09-17 15:36:59 +01:00
Fabio Berger
92ee7c2194 Use Container instead of div 2018-09-17 15:09:31 +01:00
Fabio Berger
074082ec94 Fix forwarder package.json 2018-09-17 12:53:05 +01:00
Fabio Berger
6b9f0af828 Add 0x.js 2.0.0 async and installation sections 2018-09-17 12:52:25 +01:00
Fabio Berger
bfabf765e3 Update decoration error 2018-09-17 12:52:12 +01:00
Fabio Berger
e74f736eff Update 0x.js README 2018-09-17 12:52:04 +01:00
Fabio Berger
45483557a5 Remove doc commands from forwarder-helper package for now 2018-09-17 12:45:27 +01:00
Brandon Millman
a22d2dc7ee Add factory method for specific assetData to buy and add comments 2018-09-15 15:05:27 +02:00
Brandon Millman
9ec2b5a2d5 Add factory method on AssetBuyer for specific token address 2018-09-15 14:53:04 +02:00
Brandon Millman
af40989f5f Add factory method on AssetBuyer for provided orders 2018-09-15 14:47:44 +02:00
Brandon Millman
d57619b5db Export the order fetchers 2018-09-15 14:16:08 +02:00
Brandon Millman
c692115cdc Fix lint errors 2018-09-15 14:14:55 +02:00
Brandon Millman
dfe58e4975 Delete old test 2018-09-15 14:14:55 +02:00
Brandon Millman
4e59be9afc Implement ProvidedOrderFetcher 2018-09-15 14:14:55 +02:00
Brandon Millman
190bf2599c Implement StandardRelayerAPIOrderFetcher 2018-09-15 14:14:55 +02:00
Brandon Millman
f1a22e9bd7 Flesh out the AssetBuyer class 2018-09-15 14:14:48 +02:00
Brandon Millman
7b46cef83d Create initial AssetBuyer class 2018-09-15 14:14:48 +02:00
Brandon Millman
8da7d39998 Update readme, changelog, and package.json with rename 2018-09-15 14:14:48 +02:00
Brandon Millman
91702bbae2 Move packages/forwarder-helper into packages/asset-buyer 2018-09-15 14:14:48 +02:00
Brandon Millman
90674d9038 Various clean up 2018-09-15 14:14:48 +02:00
Brandon Millman
c0a14a4a41 Catch standard relayer api errors 2018-09-15 14:14:48 +02:00
Brandon Millman
8d6132736b Remove taker address as param and filter out non-open orders 2018-09-15 14:14:48 +02:00
Brandon Millman
8687b9533c Add getForwarderHelperForMakerAssetDataAsync method to forwarderHelperFactory 2018-09-15 14:14:48 +02:00
Alex Browne
07942a7aec Merge pull request #1061 from 0xProject/feature/ci-resource-classes
Bump CircleCI resource class for build and test-publish
2018-09-13 14:49:11 +02:00
Jacob Evans
3d1b7c10e8 Remove note about RC versions 2018-09-13 14:32:46 +02:00
Jacob Evans
cf46d2c704 0xjs README/website docs update 2018-09-13 13:58:05 +02:00
Alex Browne
4434856add Bump CircleCI resource class for build and test-publish 2018-09-12 17:23:11 +02:00
fragosti
52d511df21 Change Davids description 2018-09-12 11:53:11 +02:00
fragosti
50f58f9121 Add images for David Sacks and Gene 2018-09-12 11:48:03 +02:00
fragosti
7a20c7b946 Fix David Sacks links 2018-09-12 11:46:42 +02:00
fragosti
ce0e60ed84 Merge branch 'feature/website/add-gene' into development 2018-09-12 11:43:16 +02:00
fragosti
4ad0a6c7b7 Add david sacks 2018-09-12 11:42:58 +02:00
fragosti
b8d8651e43 Add Gene info to website 2018-09-12 11:16:13 +02:00
F. Eugene Aumson
cbb5a425df Merge branch 'development' into sol-doc 2018-09-11 19:00:11 -04:00
Francesco Agosti
45b68832aa Merge pull request #1064 from 0xProject/patch/website/new-token-addresses
[website] Fix minting for new tokens on testnets
2018-09-07 16:12:50 +02:00
fragosti
6dfcaaf889 Clear localstorage 2018-09-07 13:12:53 +02:00
fragosti
8131c5d6bc Fix minting for new tokens on testnets 2018-09-07 13:05:11 +02:00
Amir Bandeali
df5779b6d1 Link bug bounty section to wiki 2018-09-05 12:10:39 -07:00
Amir Bandeali
4a5a0c8c78 Update README with directory structure and bug bounty 2018-09-05 11:37:48 -07:00
Jacob Evans
b3a17624c8 Merge pull request #1060 from 0xProject/feature/testnet-faucets/v2
[testnet-faucets] update to v2
2018-09-05 18:33:50 +01:00
Jacob Evans
e63841a604 Check token exists for network for user params 2018-09-05 18:11:57 +01:00
Jacob Evans
7ec95e8c29 Remove unused name and symbol 2018-09-05 16:04:52 +01:00
Jacob Evans
b217495465 Floor expiration time 2018-09-05 15:57:40 +01:00
Jacob Evans
db6ddc0c4b [testnet-faucets] update to v2 2018-09-05 15:13:21 +01:00
Fabio Berger
174b360593 Publish
- 0x.js@1.0.1
 - @0xproject/abi-gen@1.0.8
 - @0xproject/assert@1.0.8
 - @0xproject/base-contract@2.0.2
 - @0xproject/connect@2.0.0
 - @0xproject/contract-wrappers@1.0.1
 - contracts@2.1.43
 - @0xproject/dev-utils@1.0.7
 - ethereum-types@1.0.6
 - @0xproject/fill-scenarios@1.0.1
 - @0xproject/forwarder-helper@1.0.1
 - @0xproject/json-schemas@1.0.1
 - @0xproject/metacoin@0.0.18
 - @0xproject/migrations@1.0.7
 - @0xproject/monorepo-scripts@1.0.8
 - @0xproject/order-utils@1.0.1
 - @0xproject/order-watcher@1.0.1
 - @0xproject/react-docs@1.0.8
 - @0xproject/react-shared@1.0.9
 - @0xproject/sol-compiler@1.1.2
 - @0xproject/sol-cov@2.1.2
 - @0xproject/sol-resolver@1.0.8
 - @0xproject/sra-report@1.0.8
 - @0xproject/sra-spec@1.0.1
 - @0xproject/subproviders@2.0.2
 - @0xproject/testnet-faucets@1.0.44
 - @0xproject/tslint-config@1.0.7
 - @0xproject/types@1.0.1
 - @0xproject/typescript-typings@2.0.0
 - @0xproject/utils@1.0.8
 - @0xproject/web3-wrapper@2.0.2
 - @0xproject/website@0.0.47
2018-09-05 11:16:45 +01:00
Fabio Berger
481a752e70 Updated CHANGELOGS 2018-09-05 11:16:34 +01:00
Fabio Berger
38acdfd632 Update CHANGELOG's to publish non-RC versions 2018-09-05 11:06:11 +01:00
Francesco Agosti
561e525778 Merge pull request #1058 from 0xProject/fix/connect/use-big-number-in-requests
[connect] Use BigNumber instead of string where appropriate in OrderConfigRequest
2018-09-04 17:25:51 -07:00
fragosti
69eb820d0d Change orderConfig from POST to GET like in spec 2018-09-04 15:49:30 -07:00
Alex Browne
447f16fc4f Merge pull request #1057 from 0xProject/deployment/copy-testnet-artifacts
Remove/rename/update all artifacts in preparation for v2 launch
2018-09-04 18:31:48 -04:00
Alex Browne
1769609245 Update order-watcher/package.json 2018-09-04 18:17:51 -04:00
Alex Browne
e1dcdac1bb add packages/sol-cov/test/fixtures/artifacts to .prettierignore 2018-09-04 18:14:59 -04:00
Alex Browne
9d45d19c80 More small artifacts updates/changes 2018-09-04 18:10:23 -04:00
Alex Browne
9858bb0ce4 Fix bug in contracts tests 2018-09-04 18:10:13 -04:00
fragosti
a3527a77a6 Add to CHANGELOG 2018-09-04 14:49:39 -07:00
fragosti
33a45fa739 Use BigNumber instead of string where appropriate in OrderConfigRequest 2018-09-04 14:44:56 -07:00
Alex Browne
e70882a657 More small chnages/bug fixes 2018-09-04 17:22:22 -04:00
Alex Browne
e456332da7 Rename and update some artifact locations 2018-09-04 16:47:28 -04:00
Alex Browne
4ed84c5dc5 Rename 2.0.0-beta-testnet to 2.0.0-testnet 2018-09-04 16:11:17 -04:00
Alex Browne
2fe3f40be9 Add missing testnet addresses to 2.0.0-mainnet artifacts 2018-09-04 16:09:59 -04:00
Alex Browne
44bfdb718f Copy artifacts from 2.0.0-beta-testnet that do not appear in 2.0.0-mainnet 2018-09-04 16:09:44 -04:00
Alex Browne
3524efc41c Merge pull request #1055 from 0xProject/deployment/2.0.0-beta-testnet/ropsten
Ropsten/Kovan Contract deployment
2018-09-04 15:54:48 -04:00
Francesco Agosti
01210c291c Merge pull request #1044 from 0xProject/feature/website/update-portal-v2
[website] Update portal for v2
2018-09-04 12:37:53 -07:00
Jacob Evans
192d4b4dbf Merge branch 'deployment/2.0.0-beta-testnet/ropsten' of github.com:0xProject/0x-monorepo into deployment/2.0.0-beta-testnet/ropsten 2018-09-04 20:32:43 +01:00
Jacob Evans
68246fc335 Revert Forwarder address for Ganache 2018-09-04 20:29:01 +01:00
Fabio Berger
7ef86636aa merge development 2018-09-04 20:26:02 +01:00
Fabio Berger
a5859c6cee Merge pull request #1038 from 0xProject/feature/contracts/mainnetMigrations
Mainnet migrations
2018-09-04 20:23:48 +01:00
Fabio Berger
3463903d02 Merge branch 'deployment/2.0.0-beta-testnet/ropsten' of github.com:0xProject/0x-monorepo into deployment/2.0.0-beta-testnet/ropsten
* 'deployment/2.0.0-beta-testnet/ropsten' of github.com:0xProject/0x-monorepo:
  Revert the exchange address change
  Tslint magic-number
2018-09-04 20:22:32 +01:00
Jacob Evans
4b0f1a8431 Remove Rinkeby from Exchange.json 2018-09-04 20:21:50 +01:00
Jacob Evans
603e8aa671 Revert the exchange address change 2018-09-04 20:18:23 +01:00
fragosti
6eb980abe2 Add to changelog 2018-09-04 12:11:17 -07:00
fragosti
46b168e10f Run linter 2018-09-04 12:09:24 -07:00
Jacob Evans
508e6ccf89 Tslint magic-number 2018-09-04 19:57:05 +01:00
fragosti
a173c5fc38 Merge branch 'feature/website/update-portal-v2' of https://github.com/0xProject/0x-monorepo into feature/website/update-portal-v2 2018-09-04 11:55:42 -07:00
fragosti
f5237f7971 Use order parser utils from order utils 2018-09-04 11:55:08 -07:00
Amir Bandeali
6f7a5d00e6 Update prettierignore 2018-09-04 11:47:26 -07:00
Fabio Berger
4061723863 merge back weth9 2018-09-04 19:42:54 +01:00
Jacob Evans
ab1b52ba87 Ropsten/Kovan Contract deployment 2018-09-04 19:41:05 +01:00
Fabio Berger
16e94ecb40 Merge branch 'deployment/2.0.0-beta-testnet/ropsten' of github.com:0xProject/0x-monorepo into deployment/2.0.0-beta-testnet/ropsten
* 'deployment/2.0.0-beta-testnet/ropsten' of github.com:0xProject/0x-monorepo:
  Ropsten/Kovan Contract deployment
2018-09-04 19:35:48 +01:00
Jacob Evans
6bb2c5877c Ropsten/Kovan Contract deployment 2018-09-04 19:29:40 +01:00
fragosti
a14450f367 Add order parsers to order-util 2018-09-04 11:22:31 -07:00
Amir Bandeali
85df313a7a Update mainnet artifacts 2018-09-04 11:07:56 -07:00
Amir Bandeali
66ed6b9b88 Update mainnet configs 2018-09-04 11:07:56 -07:00
Amir Bandeali
9304d09da6 Add mainnet migrations 2018-09-04 11:07:56 -07:00
fragosti
e61dbbb6cf Merge https://github.com/0xProject/0x-monorepo into feature/website/update-portal-v2 2018-09-04 10:53:18 -07:00
Fabio Berger
1690f59857 Remove unused imports and console.log 2018-09-04 18:42:50 +01:00
Fabio Berger
c916dd6ebb Add back order validation logic 2018-09-04 18:39:53 +01:00
Fabio Berger
8a683b8541 Fix imports 2018-09-04 18:37:41 +01:00
Fabio Berger
4883b8be10 remove console log 2018-09-04 18:37:33 +01:00
Fabio Berger
51760f9bdd merge development 2018-09-04 18:37:24 +01:00
Fabio Berger
6a619a4084 Merge pull request #1054 from 0xProject/addValidationMethods
Temporarily Add Back Validation Methods
2018-09-04 18:04:03 +01:00
Jacob Evans
feeafa193a Ropsten/Kovan Contract deployment 2018-09-04 18:01:21 +01:00
Fabio Berger
8d8528996a Export abstract fetchers 2018-09-04 17:44:27 +01:00
Amir Bandeali
965d609829 Merge pull request #1050 from 0xProject/refactor/contracts/multisig
Update MultiSig and add more tests
2018-09-04 09:12:16 -07:00
Leonid Logvinov
a52714bcf3 Merge pull request #1052 from 0xProject/feature/remove-types
[typescript-typings] Remove types that were moved to DefinitelyTyped
2018-09-04 17:54:54 +02:00
Fabio Berger
bbfd7647a8 Export missing type 2018-09-04 16:52:21 +01:00
Fabio Berger
0aba5a3be4 Merge branch 'development' into addValidationMethods
* development:
  Remove unused imports
2018-09-04 16:51:27 +01:00
Fabio Berger
61bf5864a8 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Remove unused imports
2018-09-04 16:51:15 +01:00
Fabio Berger
56847a53f4 Add PR nr 2018-09-04 16:41:43 +01:00
Fabio Berger
8324ab3af7 Update yarn.lock 2018-09-04 16:27:26 +01:00
Fabio Berger
d496a7585c Add validateFillOrderThrowIfInvalidAsync and validateOrderFillableOrThrowAsync to ExchangeWrapper 2018-09-04 16:27:16 +01:00
Fabio Berger
8d7f2a993a Import fetchers from contract-wrappers 2018-09-04 16:24:01 +01:00
Fabio Berger
ed786f3e8f Export fetchers from contract-wrappers 2018-09-04 16:23:29 +01:00
Fabio Berger
539c243733 Move fetchers to contract-wrappers 2018-09-04 16:23:02 +01:00
Leonid Logvinov
40e0c829b3 Fix the version 2018-09-04 17:06:09 +02:00
Amir Bandeali
e34b1f2f8b Remove TODOs that will not be addressed 2018-09-04 07:57:47 -07:00
Amir Bandeali
f6b6619c08 Fix geth tests 2018-09-04 07:57:47 -07:00
Amir Bandeali
e480e08aa4 Add test for external_call visibility 2018-09-04 07:57:47 -07:00
Amir Bandeali
652cf7a976 Add MultiSigWalletWithTimeLock revert reasons to tests 2018-09-04 07:57:47 -07:00
Amir Bandeali
7a8ab6fbe8 Update MultiSigWalletWithTimeLock to 0.4.24 2018-09-04 07:57:47 -07:00
Amir Bandeali
9deec8ec35 Add more tests for MultiSigWalletWithTimeLock 2018-09-04 07:57:47 -07:00
Amir Bandeali
3f1586045c Add test for executeRemoveAuthorizedAddressAtIndex when called by non-owner 2018-09-04 07:57:47 -07:00
Amir Bandeali
ada5563b1f Update to most recent multisig 2018-09-04 07:57:47 -07:00
Leonid Logvinov
6b41a570a5 Change doc gen configs 2018-09-04 16:36:18 +02:00
Leonid Logvinov
cebf6bfb34 Move types used in public interfaces to dependencies 2018-09-04 16:36:18 +02:00
Leonid Logvinov
47a1b48ad8 Add temporarily missing web3-provider-engine types in website 2018-09-04 16:36:18 +02:00
Leonid Logvinov
ef82a9d2a6 Add CHANGELOG entry 2018-09-04 16:36:18 +02:00
Leonid Logvinov
ba6351841d Add temporarily missing web3-provider-engine types in subproviders 2018-09-04 16:36:18 +02:00
Leonid Logvinov
cdc786a1e3 Remove types for web3-provider-engine from typescript-typings 2018-09-04 16:36:18 +02:00
Leonid Logvinov
3ea137a78f Remove types for eth-lightwallet from typescript-typings 2018-09-04 16:36:18 +02:00
Leonid Logvinov
b525ccc825 Remove types for detect-node from typescript-typings 2018-09-04 16:36:18 +02:00
Leonid Logvinov
77acbdd3ea Remove types for ganache-core from typescript-typings 2018-09-04 16:36:18 +02:00
Leonid Logvinov
c13190ceab Remove types for newman from typescript-typings 2018-09-04 16:36:18 +02:00
Leonid Logvinov
78d4fc59a5 Merge pull request #1053 from 0xProject/fix/linter_issues
[website] Remove unused imports
2018-09-04 16:35:54 +02:00
Leonid Logvinov
f9e86c057d Remove unused imports 2018-09-04 16:08:35 +02:00
Amir Bandeali
1d8e133a30 Merge pull request #1051 from 0xProject/fix/contracts/style
Apply styling fixes to contracts
2018-09-03 21:22:03 -07:00
Amir Bandeali
99fbf384fd Apply styling fixes 2018-09-03 20:55:37 -07:00
Amir Bandeali
cb4fcf4de7 Revert in Forwarder constructor if ERC20 proxy isn't registered 2018-09-03 20:35:00 -07:00
F. Eugene Aumson
800dd5fb4f ammend generated docs with solc's devdoc output 2018-08-31 16:18:17 -04:00
F. Eugene Aumson
3dc4eb4421 rename 2 variables 2018-08-31 15:28:12 -04:00
F. Eugene Aumson
75664b6651 make postinstall symlink hack cross platform 2018-08-31 11:49:14 -04:00
F. Eugene Aumson
327b4ba554 satisfy linter 2018-08-31 11:18:43 -04:00
F. Eugene Aumson
50b725c687 introduce named vars to clarify return statements 2018-08-31 09:33:26 -04:00
F. Eugene Aumson
72419816a8 Merge remote-tracking branch 'upstream/development' into sol-doc 2018-08-31 09:22:05 -04:00
F. Eugene Aumson
9a4e6da02f enable sol-doc tests in circleci 2018-08-31 09:15:41 -04:00
F. Eugene Aumson
823b6c4d7d transform solc's ABI output into doc types 2018-08-31 09:12:27 -04:00
Brandon Millman
675964dc5c Merge pull request #1048 from 0xProject/feature/website/patch-v2-landing
[website] Final tweaks for landing page
2018-08-30 17:26:47 -07:00
Brandon Millman
6432f85eb0 Wording change for first benefit 2018-08-30 17:14:17 -07:00
Francesco Agosti
66eef758c6 Merge pull request #1047 from 0xProject/feature/re-add-no-unused-variables
Re-add no-unused-variable tslint rule
2018-08-30 15:38:21 -07:00
Brandon Millman
c64f0ba34b Tweaks to benefits and use cases 2018-08-30 15:26:03 -07:00
Brandon Millman
6deffb6b28 Update yarn lock 2018-08-30 15:19:33 -07:00
Greg Hysen
5802713801 Merge pull request #1046 from 0xProject/fix/contracts/roundingFeeTestsMatchOrders
Test cases for rounding fees in matchOrders
2018-08-30 14:27:01 -07:00
Brandon Millman
11df29fa8e Update exchange ABI for decoding logs 2018-08-30 14:23:09 -07:00
Brandon Millman
f4a41e80b8 Remove LogError legacy stuff 2018-08-30 14:04:55 -07:00
Brandon Millman
5c655b55d3 Update comment for validation 2018-08-30 14:01:04 -07:00
Brandon Millman
63c15b6f4f Remove commented out block 2018-08-30 14:00:10 -07:00
Brandon Millman
4f2bc29744 Remove cancel check 2018-08-30 13:59:42 -07:00
fragosti
2cac431c41 Final tweaks for landing page 2018-08-30 13:53:30 -07:00
fragosti
80b7a7842c run prettier 2018-08-30 13:47:33 -07:00
Brandon Millman
8c7cec9822 Merge pull request #1040 from 0xProject/feature/website/v2-tweaks
[website] Landing page tweaks for v2 launch
2018-08-30 13:46:37 -07:00
Brandon Millman
971a4087d2 Update yarn lock 2018-08-30 13:36:44 -07:00
Brandon Millman
660e670d38 Update generate and fill order flows 2018-08-30 13:36:44 -07:00
Brandon Millman
052824f4e3 Token registry from old 0x version 2018-08-30 13:36:44 -07:00
fragosti
1d5ef4d0ca Fix unused vars for react-shared and website 2018-08-30 13:28:07 -07:00
Brandon Millman
a6440b94f4 Fix import 2018-08-30 13:24:24 -07:00
Brandon Millman
01685b7622 Fix contract not deployed on network bug in ContractWrapper class 2018-08-30 13:24:24 -07:00
Brandon Millman
397fefa8d7 Update typings version 2018-08-30 13:24:24 -07:00
Brandon Millman
82a01ef020 Initial changes for v2 portal 2018-08-30 13:24:24 -07:00
Brandon Millman
a224ce347e Revert whats new text 2018-08-30 13:21:07 -07:00
Amir Bandeali
81ba2a8411 Merge pull request #1045 from 0xProject/feature/contracts/cancelOrderInternal
Add cancelOrderInternal, use within batchCancelOrders
2018-08-30 13:07:51 -07:00
Amir Bandeali
a6e8b28da5 Merge pull request #1043 from 0xProject/feature/contracts/edgeCaseTests
Add edge case tests
2018-08-30 13:07:19 -07:00
Brandon Millman
e90dbf66f3 Add new exchange everywhere graphic 2018-08-30 12:29:47 -07:00
Greg Hysen
0be2219beb Test cases for rounding fees in matchOrders 2018-08-30 12:23:11 -07:00
Amir Bandeali
09b4d5e0e4 Add cancelOrderInternal, use within batchCancelOrders 2018-08-30 12:10:24 -07:00
Brandon Millman
60f1bcf51f Remove unused render methods in landing page 2018-08-30 12:09:54 -07:00
Brandon Millman
431ac3b401 Update yarn lock 2018-08-30 12:05:29 -07:00
Francesco Agosti
50781bd77a Merge pull request #1042 from 0xProject/feature/website/v2-tweaks-fra
[website] Add rotating text to landing header and careers button to topbar
2018-08-30 11:55:28 -07:00
fragosti
c3361bb86e Remove conflict strings 2018-08-30 11:52:08 -07:00
fragosti
fd5ad69c26 Add careers page to top bar 2018-08-30 11:49:27 -07:00
fragosti
b1f97a27f3 Final tweaks 2018-08-30 11:49:27 -07:00
fragosti
febddcb356 Remove redundant import 2018-08-30 11:49:27 -07:00
fragosti
74d5af34eb Add TypedText component and use it on landing page 2018-08-30 11:49:27 -07:00
fragosti
365890291f Add generic title changes 2018-08-30 11:48:49 -07:00
Brandon Millman
0368de701f Added todo comments for missing items 2018-08-30 11:44:09 -07:00
Brandon Millman
f5e7b7e7e0 Add title header to use cases section 2018-08-30 11:39:25 -07:00
Brandon Millman
038c21324e Make hero image responsive 2018-08-30 11:39:25 -07:00
Brandon Millman
5d008ee83e Update what's new styling 2018-08-30 11:39:25 -07:00
F. Eugene Aumson
8d122006ba move export to top of file 2018-08-30 12:34:27 -04:00
F. Eugene Aumson
0e45497acb rename variables 2018-08-30 12:28:09 -04:00
Amir Bandeali
d0f6933980 Add tests for token that returns >32 bytes 2018-08-30 09:27:28 -07:00
Amir Bandeali
14793f30b5 Add more proxy tests 2018-08-30 09:27:28 -07:00
Amir Bandeali
86319291e3 Update used addresses for authorizable tests 2018-08-30 09:27:28 -07:00
Amir Bandeali
afa2dd7374 Add test for fillOrder and dispatchTransferFrom where maker == taker 2018-08-30 09:26:44 -07:00
F. Eugene Aumson
fe7a62ba9a add named var to make if condition more readable 2018-08-30 12:02:46 -04:00
F. Eugene Aumson
b88a56e6b7 reduce proximity b/w instantiation and use of var 2018-08-30 12:02:46 -04:00
F. Eugene Aumson
297cbd996d remove unnecessary class SolidityDocFormat 2018-08-30 12:02:42 -04:00
F. Eugene Aumson
f55234b4a0 comment public interface 2018-08-30 11:30:43 -04:00
F. Eugene Aumson
f76c88c549 remove unused constructor parameter 2018-08-30 11:24:41 -04:00
F. Eugene Aumson
863966787f dev-depend on @0xproject/tslint-config 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
7ed31d2fba correct package.json's privacy specification 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
6273339f7c add named references for returned objects 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
29f2ae605e re-word comment: 'construction' -> 'instantiation' 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
6450844d7f rename method _addHexPrefixes 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
9834395a48 remove mistaken TODO 2018-08-30 10:43:43 -04:00
F. Eugene Aumson
f429032eef move shared doc types from react-docs to @0x/types 2018-08-30 10:43:36 -04:00
F. Eugene Aumson
5088b7f23c hack postinstall to correct types package symlink
yarn is not doing this properly :( even on v1.9.4.
confirmed with @albrow .
2018-08-30 10:08:35 -04:00
fragosti
1312e4caf2 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/website/v2-tweaks 2018-08-29 16:39:25 -07:00
Amir Bandeali
eb4517d737 Merge pull request #1041 from 0xProject/refactor/contracts/assetProxyOwnerVersion
Update AssetProxyOwner to 0.4.24, remove redundant code
2018-08-29 15:57:53 -07:00
Amir Bandeali
d80701c277 Fix geth tests 2018-08-29 15:35:09 -07:00
Amir Bandeali
bf3ab1127d Remove unused imports 2018-08-29 14:42:42 -07:00
Amir Bandeali
dcb12b6ad6 Update AssetProxyOwner to 0.4.24 2018-08-29 14:12:10 -07:00
Francesco Agosti
f87420a776 Merge pull request #1023 from 0xProject/website/feature/react-16
[website] Upgrade all the things to React 16
2018-08-29 14:04:17 -07:00
Greg Hysen
6cedf5362b Merge pull request #1039 from 0xProject/fix/contracts/audit2Fixes
Fixes as-per Audit for LibBytes + ERC20 Proxy Comments
2018-08-29 13:53:49 -07:00
Greg Hysen
aa833ef074 Typos in LibBytes tests 2018-08-29 13:26:46 -07:00
Greg Hysen
5f1c9cfee5 Reverted syntax used by readBytes4 in AssetProxyOwner to be compatible with Solidity v0.4.10 2018-08-29 13:15:40 -07:00
Greg Hysen
62b93cf2eb More tests for LibBytes 2018-08-29 13:14:51 -07:00
Brandon Millman
b1c5f6e8f1 Update use cases section 2018-08-29 12:45:24 -07:00
Brandon Millman
3bc9b309f6 Update tokenization section 2018-08-29 12:45:24 -07:00
Brandon Millman
6924a2b681 Update benefits 2018-08-29 12:45:24 -07:00
Brandon Millman
d93d4c34f5 Update whats new 2018-08-29 12:45:24 -07:00
Brandon Millman
557267477e Add new header image 2018-08-29 12:45:16 -07:00
Brandon Millman
b9f7979e91 Replace projects section with relayers 2018-08-29 12:45:15 -07:00
Greg Hysen
8c803ab232 Updated comments for ERC20 proxy to clarify how we load the token address from calldata (3.18 from audit) 2018-08-29 12:25:06 -07:00
F. Eugene Aumson
28246abec3 remove unneeded entries from doc gen config 2018-08-29 15:23:32 -04:00
fragosti
422e5e4dd7 Apply prettier 2018-08-29 11:57:52 -07:00
fragosti
2aea820d89 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into website/feature/react-16 2018-08-29 11:42:44 -07:00
Greg Hysen
1c3b2b7141 Updated readBytes4 to match spec + added unit tests. These are 3.5/3.6 from audit 2018-08-29 11:39:52 -07:00
Alex Browne
e7d5ceb9c5 feat: Add support for TypeScript project references (#991)
* Update all package.json and tsconfig.json

* fix(contracts): Make test/utils/web3_wrapper.ts compatible with project refs

* Fix webpack config for 0x.js

* Fix linter errors by adding rootDir to tsconfig.json as needed

* Add build:ts and watch:ts commands to package.json

* Update sra-spec to work with project references

* Update tsconfig.json with latest new/removed packages

* Add TypeScript as devDependency at root

* Add missing rootDir to forwarder-helper package

* Use a separate tsconfig file for typedoc

* Fix linter errors

* Apply PR feedback (add comments)

* Fix 0x.js tsconfig
2018-08-29 11:15:30 -07:00
Fabio Berger
e6511c9c05 Fix linter 2018-08-29 17:45:51 +01:00
F. Eugene Aumson
a1959df911 add devdoc support to solc typings, and use it 2018-08-29 08:51:01 -04:00
F. Eugene Aumson
775d1efd46 add package sol-doc 2018-08-29 08:50:55 -04:00
fragosti
68af0e9eb7 Change VersionDropDown to use material-ui 3 2018-08-28 18:08:06 -07:00
fragosti
a18d0f6229 Upgrade version of react-shared in website 2018-08-28 17:49:15 -07:00
fragosti
031807df9c Upgrade react-copy-to-clipboard 2018-08-28 15:52:09 -07:00
fragosti
72710be04b Remove react-tap-event-plugin from react-shared 2018-08-28 15:37:20 -07:00
fragosti
ac135d55d3 Upgrade material ui in react-docs 2018-08-28 15:32:15 -07:00
fragosti
1d55e94659 Update lockfile 2018-08-28 15:27:24 -07:00
fragosti
86284f1c7e Merge branch 'development' of https://github.com/0xProject/0x-monorepo into website/feature/react-16 2018-08-28 15:25:08 -07:00
fragosti
61a4ae7fc4 Update material-ui in react-shared 2018-08-28 15:15:54 -07:00
fragosti
55fab3d98f Revert "Simplify dropdown component"
This reverts commit 91a9014a50.
2018-08-28 15:07:29 -07:00
fragosti
de11b62e30 Revert "Have new Popover component working in React 16"
This reverts commit 5785ec0713.
2018-08-28 15:07:28 -07:00
fragosti
8e14e65b60 Revert "Enable hovering state for dropdown"
This reverts commit ac1640140c.
2018-08-28 15:07:24 -07:00
fragosti
2d1d14d2e4 Upgrade material ui to 0.20.0 2018-08-28 15:04:34 -07:00
Brandon Millman
f44644ad90 Merge pull request #1022 from 0xProject/feature/contract-wrappers/order-validator
[contract-wrappers] Write wrapper for OrderValidator contract
2018-08-28 14:20:57 -07:00
fragosti
ac1640140c Enable hovering state for dropdown 2018-08-28 13:53:49 -07:00
Greg Hysen
1402a0aa22 Merge pull request #1036 from 0xProject/fix/contracts/calculateFillResults
Making rounding consistent in calculateFillResults
2018-08-28 13:51:38 -07:00
Amir Bandeali
f225f9e7c8 Making rounding consistent in calculateFillResults 2018-08-28 13:25:05 -07:00
Amir Bandeali
14fdb71a71 safeGetPartialAmount (#1035)
* Added Test "Should transfer correct amounts when left order is fully filled and values pass isRoundingErrorCeil but fail isRoundingErrorFloor"

* Added RoundingError exception to reference function for getPartialAmount

* Added RoundingError exception to reference function for getPartialAmount

* Added isRoundingErrorCeil to getPartialAmountCeil reference funtion

* Computed new values  for "Should give right maker a better buy price when correct price is not integral" that does not have a rounding error

* Almost all tests for match orders are passing after adding isRoundingErrorCeil check

* WIP commit: Added rounding error checks to getPartialAmount

* WIP commit: Added rounding error checks to getPartialAmount

* Use safe versions of getPartialAmount

* Update Exchange internals tests

* Run linter

* Found new values for "Should transfer correct amounts when right order fill amount deviates from amount derived by `Exchange.fillOrder`"

* Fixed merge conflicts

* Run all tests

* Cleaned up some comments on match Orders tests

* Fix tests for geth
2018-08-28 13:00:49 -07:00
Brandon Millman
9c4c4fb19a Export missing types and add OrderValidatorWrapper to hidden constructors 2018-08-28 12:03:21 -07:00
F. Eugene Aumson
849e203812 add interface to return compiler output...
...rather than persisting it to the filesystem.
2018-08-28 14:24:26 -04:00
F. Eugene Aumson
80ed724f3a rename var compiledData to compiledContract 2018-08-28 14:24:26 -04:00
F. Eugene Aumson
5c056b57b7 extract method _getContractNamesToCompile() 2018-08-28 14:24:26 -04:00
F. Eugene Aumson
4779ebfd20 split method 2018-08-28 14:24:26 -04:00
Fabio Berger
60ef45722c Remove temporary borders 2018-08-28 17:18:48 +01:00
Fabio Berger
61bfbb86e1 Implement dev topbar 2018-08-28 17:18:40 +01:00
Fabio Berger
bc8cc35d18 Fix prettier 2018-08-28 17:13:29 +01:00
Fabio Berger
4a524a5f27 Merge branch 'dev-dropdown' into doc-overview-page
* dev-dropdown:
  Update to latest react-shared
  Use translation helper
  Use generatic ObjectMap type
  fix(contracts): Catch cases where the actual error differs from the expected error (#1032)
  Add clarifying comments
  Remove redundant mstores from fillOrderNoThrow
  fix(contracts): Use correct error message for division by zero
2018-08-28 16:04:02 +01:00
Fabio Berger
ee1e50a722 Swap out link 2018-08-28 16:03:27 +01:00
Fabio Berger
ca0567ad09 Begin implementing doc home page 2018-08-28 16:03:18 +01:00
Fabio Berger
9fd46c7900 Update to latest react-shared 2018-08-28 15:52:41 +01:00
Fabio Berger
4a40edbbb7 Merge branch 'development' into dev-dropdown
* development:
  fix(contracts): Catch cases where the actual error differs from the expected error (#1032)
  Add clarifying comments
  Remove redundant mstores from fillOrderNoThrow
  fix(contracts): Use correct error message for division by zero
2018-08-28 11:19:20 +01:00
Fabio Berger
2997ba208f Use translation helper 2018-08-28 11:19:12 +01:00
Fabio Berger
cc2000e776 Use generatic ObjectMap type 2018-08-28 11:19:01 +01:00
fragosti
5785ec0713 Have new Popover component working in React 16 2018-08-27 18:29:35 -07:00
Alex Browne
2eab0e30b7 fix(contracts): Catch cases where the actual error differs from the expected error (#1032)
* Catch cases where the actual error differs from the expected error

* Add tests for testWithReferenceFuncAsync

* Small style and comment fixes
2018-08-27 16:07:38 -07:00
Brandon Millman
2c846ff145 Add OrderValidatorWrapper to public interface 2018-08-27 16:06:34 -07:00
Brandon Millman
ca0dfc6610 Add contract-wrappers changelog entry for OrderValidatorWrapper 2018-08-27 13:57:48 -07:00
Brandon Millman
0fd44ee2c1 Fix broken test 2018-08-27 13:53:51 -07:00
Brandon Millman
7271fc0bab Add getBalancesAndAllowances to wrapper 2018-08-27 13:49:44 -07:00
Brandon Millman
6c039bbeb1 Update OrderValidator artifact to include getBalancesAndAllowances function 2018-08-27 13:43:19 -07:00
Brandon Millman
38e6d26145 Add params to all function comments 2018-08-27 13:31:12 -07:00
Brandon Millman
b0f210dea9 Add getERC721Owner to wrapper 2018-08-27 13:21:14 -07:00
Brandon Millman
f7469080f9 Update getOrdersAndTradersInfo to return an array instead 2018-08-27 13:21:10 -07:00
Amir Bandeali
fb5ea5d99f Merge pull request #1030 from 0xProject/fix/contracts/forwarderFillOrderNoThrow
Remove redundant mstores from fillOrderNoThrow
2018-08-27 13:07:57 -07:00
Brandon Millman
be2f4cbdca Add getBalanceAndAllowance to wrapper 2018-08-27 13:04:54 -07:00
Brandon Millman
68f2dc11b4 Add getTraderInfo and getTradersInfo to wrapper 2018-08-27 13:04:54 -07:00
Brandon Millman
d6c670dfcb Add getOrderAndTraderInfoAsync to wrapper 2018-08-27 13:04:54 -07:00
Brandon Millman
0736c41357 Add test for order validator 2018-08-27 13:04:54 -07:00
Brandon Millman
898bd75a18 Remove some unused variables in forwarder wrapper test 2018-08-27 13:04:54 -07:00
Brandon Millman
260313a6ae Initial OrderValidator wrapper 2018-08-27 13:04:54 -07:00
Amir Bandeali
6a99bfa68e Add clarifying comments 2018-08-27 12:01:58 -07:00
Amir Bandeali
f60adbdd72 Remove redundant mstores from fillOrderNoThrow 2018-08-27 11:54:20 -07:00
Alex Browne
1be310cef4 Merge pull request #1031 from 0xProject/fix/internal-tests-division-by-zero-assertion
Use correct error message for division by zero
2018-08-27 11:48:47 -07:00
Alex Browne
ff4f86f1d6 fix(contracts): Use correct error message for division by zero 2018-08-27 11:19:25 -07:00
Fabio Berger
b8241c0f80 Merge branch 'development' into dev-dropdown
* development: (120 commits)
  Exit with non-error code at end of publishRelease
  Publish
  Updated CHANGELOGS
  Fix prettier
  Update changelog files for RC packages
  Skip doc generation for local publishes since we test this in a separate CI test
  Fix typo
  Use absolute path
  Run yarn a second time if the first fails
  Try relative to root dir
  Fix command
  Move md files to lib folder during build
  Change exit code to failure
  Fix sra-spec `main` and `types` in package.json
  Actual relative path
  Try relative path
  Issue #1025 BlockParam unroll
  Fix command
  Move md files to lib folder during build
  Fix sra-spec `main` and `types` in package.json
  ...
2018-08-27 15:28:57 +01:00
Fabio Berger
f4a4fefe42 Exit with non-error code at end of publishRelease 2018-08-27 15:02:12 +01:00
Fabio Berger
00a4fa5f7c Publish
- 0x.js@1.0.1-rc.6
 - @0xproject/abi-gen@1.0.7
 - @0xproject/assert@1.0.7
 - @0xproject/base-contract@2.0.1
 - @0xproject/connect@2.0.0-rc.2
 - @0xproject/contract-wrappers@1.0.1-rc.5
 - contracts@2.1.42
 - @0xproject/dev-utils@1.0.6
 - @0xproject/fill-scenarios@1.0.1-rc.5
 - @0xproject/forwarder-helper@1.0.1-rc.2
 - @0xproject/json-schemas@1.0.1-rc.6
 - @0xproject/metacoin@0.0.17
 - @0xproject/migrations@1.0.6
 - @0xproject/monorepo-scripts@1.0.7
 - @0xproject/order-utils@1.0.1-rc.6
 - @0xproject/order-watcher@1.0.1-rc.5
 - @0xproject/react-docs@1.0.7
 - @0xproject/react-shared@1.0.8
 - @0xproject/sol-compiler@1.1.1
 - @0xproject/sol-cov@2.1.1
 - @0xproject/sol-resolver@1.0.7
 - @0xproject/sra-report@1.0.7
 - @0xproject/sra-spec@1.0.1-rc.6
 - @0xproject/subproviders@2.0.1
 - @0xproject/testnet-faucets@1.0.43
 - @0xproject/types@1.0.1-rc.6
 - @0xproject/utils@1.0.7
 - @0xproject/web3-wrapper@2.0.1
 - @0xproject/website@0.0.46
2018-08-27 14:48:24 +01:00
Fabio Berger
4475fefd07 Updated CHANGELOGS 2018-08-27 14:47:56 +01:00
Fabio Berger
cd08a9c121 Fix prettier 2018-08-27 13:43:29 +01:00
Fabio Berger
b0c4eb8333 Update changelog files for RC packages 2018-08-27 13:16:31 +01:00
Fabio Berger
368dbda8f0 Merge pull request #1028 from 0xProject/fix-ci
Fix `test_publish` CI Test
2018-08-27 13:09:11 +01:00
Fabio Berger
bc4149683e Skip doc generation for local publishes since we test this in a separate CI test 2018-08-27 12:39:10 +01:00
Fabio Berger
6174d9ebb7 Fix typo 2018-08-27 12:34:34 +01:00
Fabio Berger
fe7a8be98c Move colors to colors module 2018-08-27 12:30:30 +01:00
Fabio Berger
925d5aa09b Add developers dropdown to topBar 2018-08-27 12:17:33 +01:00
Fabio Berger
a26237da66 Implement Developers dropdown 2018-08-27 12:17:23 +01:00
Fabio Berger
791eae24c0 Add ability to specify styling to popover container 2018-08-27 12:16:58 +01:00
Fabio Berger
e10561b4a5 Fix translation capitalizations to not capitalize single letters with sentences (i.e 'a' in 'Build a Relayer') 2018-08-27 12:16:29 +01:00
Fabio Berger
e718123478 Add missing translations needed for dev dropdown 2018-08-27 12:13:20 +01:00
Fabio Berger
e4fc8a8414 Use absolute path 2018-08-27 12:05:55 +01:00
Fabio Berger
907972c466 Merge branch 'development' into fix-ci
* development:
  Run yarn a second time if the first fails
2018-08-27 11:43:35 +01:00
Fabio Berger
49f5fe635f Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Run yarn a second time if the first fails
2018-08-27 11:43:22 +01:00
Fabio Berger
77290c1efa Run yarn a second time if the first fails 2018-08-27 10:51:38 +01:00
Fabio Berger
4ac43a9fd2 Try relative to root dir 2018-08-27 10:38:06 +01:00
Fabio Berger
cc77d1dd49 merge development 2018-08-27 10:35:16 +01:00
Fabio Berger
51161784e8 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Fix command
  Move md files to lib folder during build
  Change exit code to failure
  Fix sra-spec `main` and `types` in package.json
  Issue #1025 BlockParam unroll
  fix: Use yarn version 1.9.4 on CI
2018-08-27 10:34:45 +01:00
Fabio Berger
cb7660fbe7 Merge pull request #1009 from 0xProject/fix/ci-yarn-1.9.4
fix: Use yarn version 1.9.4 on CI
2018-08-27 10:33:02 +01:00
Fabio Berger
82e51b8787 Fix command 2018-08-27 10:15:27 +01:00
Fabio Berger
fffa96bba7 Move md files to lib folder during build 2018-08-27 10:15:13 +01:00
Fabio Berger
e6cb2e0fcd Change exit code to failure 2018-08-27 10:14:43 +01:00
Fabio Berger
38abeaed9c Fix sra-spec main and types in package.json 2018-08-27 10:13:17 +01:00
Fabio Berger
90c9e3496a Actual relative path 2018-08-27 10:10:07 +01:00
Fabio Berger
9fc8a6e214 Try relative path 2018-08-27 10:09:51 +01:00
Fabio Berger
9df87a199a Merge pull request #1026 from 0xProject/fix/contract-wrappers/block-param-literal
[contract_templates] Issue #1025 BlockParam unroll
2018-08-27 10:07:06 +01:00
Jacob Evans
7e9ba50502 Issue #1025 BlockParam unroll
BlockParam unrolls into number | BlockParamLiteral, though BlockParamLiteral does not get imported. This results in type build errors in downstream projects where tslint checks libs
2018-08-27 15:59:43 +10:00
Fabio Berger
41559c39b9 Fix command 2018-08-26 23:43:19 +01:00
Fabio Berger
6a6b424c86 Move md files to lib folder during build 2018-08-26 23:35:47 +01:00
Fabio Berger
3a5c6ed00f Fix sra-spec main and types in package.json 2018-08-26 23:05:04 +01:00
Fabio Berger
db54588d05 Add BlockParamLiteral to template 2018-08-26 22:00:51 +01:00
Fabio Berger
52fde551e4 Remove check since this method is now used in multiple places 2018-08-26 21:16:32 +01:00
Fabio Berger
40cf805e5e Also use failure exit code if unexpected error occurs 2018-08-26 20:54:15 +01:00
Fabio Berger
09d6496135 Change exit code to failure 2018-08-26 20:53:21 +01:00
Fabio Berger
c4dadf4bfd Combine imports 2018-08-26 17:49:06 +01:00
Fabio Berger
35ba3e6f7c Bumop 0x.js version 2018-08-26 17:35:17 +01:00
Fabio Berger
3ac182ee91 Fix file path to main and types in package.json 2018-08-26 17:12:13 +01:00
Amir Bandeali
00e7c70b4d Merge pull request #986 from 0xProject/feature/contracts/assertions
Add more assertions to assertValidFill
2018-08-24 20:03:28 -07:00
Amir Bandeali
0aa9ed3839 Merge pull request #1008 from 0xProject/fix/contracts/robustMatching
Robustness in Order Matching
2018-08-24 19:00:53 -07:00
Remco Bloemen
d652deea23 Merge branch 'fix/contracts/robustMatching' of github.com:0xProject/0x.js into fix/contracts/robustMatching 2018-08-24 18:54:15 -07:00
Greg Hysen
878db3b849 Added comments to order matching 2018-08-24 18:48:29 -07:00
Greg Hysen
ec2e726be0 Rephrased some of the math in MixinMatchOrders to improve readability 2018-08-24 18:20:26 -07:00
Greg Hysen
287830d6e0 Run all tests 2018-08-24 18:20:26 -07:00
Greg Hysen
c7a7ae7e18 Give right maker better price when correct value is not integral 2018-08-24 18:20:26 -07:00
Greg Hysen
1c7ba6a315 Extract only fill event logs 2018-08-24 18:20:26 -07:00
Greg Hysen
0a6f107243 Added temporary @todo to MixinMatchOrders 2018-08-24 18:20:25 -07:00
Greg Hysen
a93f95c55e Wording in MixinMatchOrders 2018-08-24 18:20:25 -07:00
Greg Hysen
6833e243b7 Addressed linter errors in match order tesster 2018-08-24 18:20:25 -07:00
Greg Hysen
81dc893d1d Removed a redundant comment from matchOrders 2018-08-24 18:20:25 -07:00
Greg Hysen
f8e565bc06 Tests for matchOrders edge cases 2018-08-24 18:20:25 -07:00
Greg Hysen
ba15fb6a06 Swapped direction of expect values to match output in failure cases 2018-08-24 18:20:25 -07:00
Greg Hysen
1e6b83719a Renaming verify -> assert in order matching 2018-08-24 18:20:25 -07:00
Greg Hysen
9fcb2dda73 Fixed a function comment 2018-08-24 18:20:25 -07:00
Greg Hysen
9a5ec8d030 Added function signature comments 2018-08-24 18:20:25 -07:00
Greg Hysen
ac872e5181 Added expect messages for checking left/right order states 2018-08-24 18:20:25 -07:00
Greg Hysen
70863cca08 Ran prettier and linter 2018-08-24 18:20:25 -07:00
Greg Hysen
5a1dce15be Updated all existing match order tests to use new format 2018-08-24 18:19:43 -07:00
Greg Hysen
d291256158 Passes comprehensive test 2018-08-24 18:18:30 -07:00
Greg Hysen
8c706ac639 Verify logs 2018-08-24 18:18:30 -07:00
Greg Hysen
f697814849 First balance test with intentional values 2018-08-24 18:18:30 -07:00
Greg Hysen
ca5c9e77c0 Ironing out the new set of test cases for order matchubng 2018-08-24 18:17:27 -07:00
Greg Hysen
a32b201afe Rounding for fees in match orders addressed, plus example 2018-08-24 18:17:27 -07:00
Greg Hysen
0ecdf1e213 All existing tests pass. 2018-08-24 18:17:26 -07:00
Greg Hysen
057891b342 Added fees to matchOrders (previously in calculateFillResults 2018-08-24 18:17:26 -07:00
Greg Hysen
407f63ef20 Removed calculateFillResults from matchOrders workflow. Eliminates compounded rounding errors. 2018-08-24 18:17:26 -07:00
Amir Bandeali
f938c989e3 Merge pull request #1002 from 0xProject/feature/contracts/mutex
[contracts] Add mutexes and reentrancy guards
2018-08-24 18:15:22 -07:00
Amir Bandeali
c8500cab10 Fix build 2018-08-24 17:30:56 -07:00
Amir Bandeali
c28c3db63f Only use one nonReentrant modifier, remove modifier from fillOrderNoThrow variations 2018-08-24 17:30:56 -07:00
Amir Bandeali
a09ee90739 Add tests for matchOrders 2018-08-24 17:30:56 -07:00
Amir Bandeali
7d5a23969d Add reentrancy tests for fillOrder and wrapper functions 2018-08-24 17:30:56 -07:00
Amir Bandeali
56c3c29feb Update ReentrantERC20Token with new functions and check that revert is occuring for correct reason 2018-08-24 17:30:56 -07:00
Amir Bandeali
c75212bef0 Add nonReentrant modifiers on functions that use getCurrentContextAddress only, add lockMutex modifier on functions that make external calls 2018-08-24 17:30:56 -07:00
Amir Bandeali
6d0dedc62c Split modifiers into check only and check, lock, unlock 2018-08-24 17:30:56 -07:00
Amir Bandeali
cf12daea2f Add ReentrantToken 2018-08-24 17:30:56 -07:00
Amir Bandeali
6f88e9bdbd Add internal fill functions, add reentrancy guard to public functions that make external calls 2018-08-24 17:30:56 -07:00
Amir Bandeali
d8cb56caa3 Add ReentrancyGuard contract 2018-08-24 17:30:56 -07:00
Amir Bandeali
044415e23d Remove redundant sload from getCurrentContextAddress 2018-08-24 17:30:56 -07:00
Remco Bloemen
6b866d6053 Revert maker not equal taker check 2018-08-24 17:29:52 -07:00
Amir Bandeali
74ce893f52 Merge pull request #1003 from 0xProject/feature/contracts/roundup
[contracts] Add getPartialAmountCeil and isRoundingErrorCeil
2018-08-24 17:29:09 -07:00
Amir Bandeali
cc1fac9bbe Fix linting errors 2018-08-24 17:02:42 -07:00
Amir Bandeali
94e01be9ed Merge pull request #1021 from 0xProject/feature/contracts/skipselftransfer
[Contracts] Skip self transfers
2018-08-24 16:58:46 -07:00
fragosti
91a9014a50 Simplify dropdown component 2018-08-24 16:48:48 -07:00
Remco Bloemen
e215992859 Fix mixin api 2018-08-24 16:46:24 -07:00
Remco Bloemen
e6f5cac878 Fix double definition of error 2018-08-24 16:46:24 -07:00
Remco Bloemen
29971f36cf Split into assertFillable and assertValidFill 2018-08-24 16:46:24 -07:00
Remco Bloemen
3e4493b389 Disallow self filling 2018-08-24 16:46:24 -07:00
Remco Bloemen
749c6ecc30 Add revert reasons to types 2018-08-24 16:46:24 -07:00
Remco Bloemen
e6e7bae445 Remove BUG_ from revert reasons 2018-08-24 16:46:23 -07:00
Remco Bloemen
a1d8943552 Document accetable price check 2018-08-24 16:46:23 -07:00
Remco Bloemen
07e56b3cc7 Fix taker overpay check 2018-08-24 16:46:23 -07:00
Remco Bloemen
b16f5f55fb Check fillable early 2018-08-24 16:46:23 -07:00
Remco Bloemen
d92fd43791 Update for new assertValidFill signature 2018-08-24 16:46:23 -07:00
Remco Bloemen
e706fa76ac Add overfill and price assertion to assertValidFill 2018-08-24 16:46:23 -07:00
Remco Bloemen
11328bd93d Skip self-transfers 2018-08-24 16:26:48 -07:00
Remco Bloemen
bc686fcbf3 Stylistic fixes 2018-08-24 16:17:02 -07:00
Remco Bloemen
80291caf7c Append -Floor to getPartialAmount and isRoundingError 2018-08-24 16:16:44 -07:00
Brandon Millman
cd5e9a5115 Merge pull request #1018 from 0xProject/fix/migrations/order-validator-testnet
[migrations] Add testnet network info to OrderValidator artifact
2018-08-24 16:06:10 -07:00
fragosti
ad161a973e Change all onTouchTap to onClick 2018-08-24 15:59:14 -07:00
fragosti
103e1aa250 Upgrade typescript version used by sra-spec 2018-08-24 15:45:43 -07:00
fragosti
641d86cb98 Add typescript dependency to typescript-typings (no idea how it was working) 2018-08-24 15:40:04 -07:00
fragosti
813b2ca1fb Bump react-highlight in react-shared once more 2018-08-24 15:29:22 -07:00
fragosti
ec96c3bb77 Upgrade react-shared used by website to one that depends on react 16 2018-08-24 15:15:55 -07:00
fragosti
65120e84e2 Upgrade react-highlight to version that depends on React 16 2018-08-24 15:11:14 -07:00
Amir Bandeali
82b51db17e Merge pull request #1015 from 0xProject/feature/contracts/removeCallerSigType
Remove SignatureType.Caller
2018-08-24 15:09:39 -07:00
fragosti
374ee2db32 Upgrade react in react-docs 2018-08-24 15:05:46 -07:00
Brandon Millman
3557cd93fc Add testnet network info to OrderValidator artifact 2018-08-24 14:42:07 -07:00
Amir Bandeali
0629a7d143 Remove remaining Trezor references 2018-08-24 14:40:00 -07:00
Greg Hysen
a27112cbef SignatureType.Trezor -> SignatureType.EthSign in Signature Validator tests 2018-08-24 14:40:00 -07:00
Greg Hysen
d039a1adda Fixed linter in signatureUtils 2018-08-24 14:40:00 -07:00
Greg Hysen
bb4d449e92 Test case for Trezor Model T signature 2018-08-24 14:40:00 -07:00
Greg Hysen
241534a63d Fixed trezor personal message in client+contracts; added a test using message signed by Trezor One (firmware v1.6.2) 2018-08-24 14:40:00 -07:00
Amir Bandeali
1932aff35c Remove Trezor SignatureType 2018-08-24 14:40:00 -07:00
Amir Bandeali
4f27991959 Remove SigntureType.Caller from signingUtils 2018-08-24 14:39:08 -07:00
Amir Bandeali
8ce4f9c784 Remove SignatureType.Caller 2018-08-24 14:39:08 -07:00
Amir Bandeali
7351bf0b14 Merge pull request #1012 from 0xProject/feature/contracts/staticcall
Use staticcall for external function calls in MixinSignatureValidator
2018-08-24 14:38:54 -07:00
fragosti
48ab151ec2 Update react and remove tap event plugin [deprecated] 2018-08-24 14:20:55 -07:00
Remco Bloemen
f6080367fe Disambiguate the operator precedence 2018-08-24 14:11:45 -07:00
Remco Bloemen
7f78d7da9d Add tests 2018-08-24 14:09:51 -07:00
Remco Bloemen
6734f2f1bc Add docs 2018-08-24 14:09:51 -07:00
Remco Bloemen
0fb7617a78 Fix incorect modulus 2018-08-24 14:09:51 -07:00
Remco Bloemen
4219af1430 Add DIVISION_BY_ZERO to getPartialAmount for consistency 2018-08-24 14:09:51 -07:00
Remco Bloemen
c109d1f545 Remove .only 2018-08-24 14:09:51 -07:00
Remco Bloemen
50fab9feb3 Improve getPartialAmountCeil docs 2018-08-24 14:09:51 -07:00
Remco Bloemen
3dad6ee55e Add tests for getPartialAmountCeil 2018-08-24 14:09:51 -07:00
Remco Bloemen
5d70df771b Add isRoundingErrorCeil 2018-08-24 14:09:50 -07:00
Remco Bloemen
ab5df342e1 Add getPartialAmountCeil 2018-08-24 14:09:50 -07:00
Amir Bandeali
6a9669a409 Rethrow Wallet and Validator errors 2018-08-24 14:06:46 -07:00
Remco Bloemen
e68942ee78 Handle zero case 2018-08-24 13:45:10 -07:00
Remco Bloemen
4159e45aff Update tests 2018-08-24 13:45:10 -07:00
Remco Bloemen
92497d7df4 Fix isRoundingError 2018-08-24 13:45:10 -07:00
fragosti
44a430802e Merge branch 'development' of https://github.com/0xProject/0x-monorepo into website/feature/react-16 2018-08-24 13:38:30 -07:00
Amir Bandeali
070eff6f3a Rename TestStaticCall => TestStaticCallReceiver 2018-08-24 13:32:04 -07:00
Amir Bandeali
681ed822ec Revert if undefined function called in AssetProxies 2018-08-24 13:19:07 -07:00
Amir Bandeali
0a1ae2c311 Remove pragma experimental v0.5.0 and use staticcall is assembly 2018-08-24 13:19:07 -07:00
Amir Bandeali
c5f8b9c2d2 Add pragma experimental v0.5.0 to SignatureValidator and add tests 2018-08-24 13:19:07 -07:00
fragosti
6b03cfd40d Add new react and types 2018-08-24 12:05:54 -07:00
Francesco Agosti
7f36574a57 Merge pull request #1011 from 0xProject/sra-api/rename/sra-spec
[sra-spec] Rename the sra-api package to sra-spec
2018-08-24 12:00:39 -07:00
fragosti
b637ca105a Merge branch 'development' of https://github.com/0xProject/0x-monorepo into sra-api/rename/sra-spec 2018-08-24 11:16:28 -07:00
fragosti
9ffddb47b8 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into sra-api/rename/sra-spec 2018-08-24 11:14:34 -07:00
fragosti
7bcaac4e10 Ignore api.json in public 2018-08-24 11:11:56 -07:00
Fabio Berger
7f585a15f5 Publish
- 0x.js@1.0.1-rc.4
 - @0xproject/abi-gen@1.0.6
 - @0xproject/assert@1.0.6
 - @0xproject/base-contract@2.0.0
 - @0xproject/connect@2.0.0-rc.1
 - @0xproject/contract-wrappers@1.0.1-rc.4
 - contracts@2.1.41
 - @0xproject/dev-utils@1.0.5
 - ethereum-types@1.0.5
 - @0xproject/fill-scenarios@1.0.1-rc.4
 - @0xproject/forwarder-helper@1.0.1-rc.1
 - @0xproject/json-schemas@1.0.1-rc.5
 - @0xproject/metacoin@0.0.16
 - @0xproject/migrations@1.0.5
 - @0xproject/monorepo-scripts@1.0.6
 - @0xproject/order-utils@1.0.1-rc.4
 - @0xproject/order-watcher@1.0.1-rc.4
 - @0xproject/react-docs@1.0.6
 - @0xproject/react-shared@1.0.7
 - @0xproject/sol-compiler@1.1.0
 - @0xproject/sol-cov@2.1.0
 - @0xproject/sol-resolver@1.0.6
 - @0xproject/sra-api@1.0.1-rc.5
 - @0xproject/sra-report@1.0.6
 - @0xproject/subproviders@2.0.0
 - @0xproject/testnet-faucets@1.0.42
 - @0xproject/tslint-config@1.0.6
 - @0xproject/types@1.0.1-rc.5
 - @0xproject/typescript-typings@1.0.5
 - @0xproject/utils@1.0.6
 - @0xproject/web3-wrapper@2.0.0
 - @0xproject/website@0.0.45
2018-08-24 19:11:27 +01:00
Fabio Berger
b38ef579fb Updated CHANGELOGS 2018-08-24 19:11:10 +01:00
Fabio Berger
8427db36e9 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Add documentation for connect v2
2018-08-24 18:59:01 +01:00
Fabio Berger
2d1c88c20d Updated api.json 2018-08-24 18:58:34 +01:00
Fabio Berger
029ea52979 Small fixes to publish script 2018-08-24 18:58:12 +01:00
Francesco Agosti
a2b6255f40 Merge pull request #1010 from 0xProject/feature/website/connect-2-docs
[website] Add documentation for connect v2
2018-08-24 10:35:45 -07:00
fragosti
d4592c0a60 Run prettier 2018-08-24 10:20:17 -07:00
Fabio Berger
fb6d511811 Added missing entry for RC package 2018-08-24 17:44:14 +01:00
Fabio Berger
c1b4fe999c Excessive command 2018-08-24 17:41:33 +01:00
Fabio Berger
1354f794a1 Merge pull request #1014 from 0xProject/feature/json-schemas/remove-superfluous-id
[json-schemas] Remove superflous id from relayer api fee recipients json schema
2018-08-24 16:32:04 +01:00
fragosti
8f6a96740e Remove superflous id from relayer api fee recipients json schema 2018-08-24 08:25:34 -07:00
fragosti
1d6699585e Add sra-spec to prettier ignore 2018-08-23 17:53:21 -07:00
Brandon Millman
e96f36751a Merge pull request #997 from 0xProject/feature/forwarder-helper/init
[forwarder-helper] Initial scaffolding for the forwarder-helper package
2018-08-23 17:42:48 -07:00
fragosti
a75c298de0 Point to new s3 bucket 2018-08-23 17:31:11 -07:00
fragosti
d603d8da47 Rename sra-api to sra-spec 2018-08-23 17:30:20 -07:00
fragosti
1040826b8b Add documentation for connect v2 2018-08-23 17:17:45 -07:00
Alex Browne
a551d0a6dd fix: Use yarn version 1.9.4 on CI 2018-08-23 16:45:18 -07:00
Brandon Millman
21c37ba62f Upgrade changelog version to get around test-publis CI job 2018-08-23 16:15:08 -07:00
Brandon Millman
2c660e62d3 Merge pull request #1006 from 0xProject/fix/0x.js/uglify-plugin
[0x.js] Update uglify plugin to support es6
2018-08-23 15:21:54 -07:00
Brandon Millman
6b667f8eca Remove CHANGELOG.md 2018-08-23 14:56:39 -07:00
Brandon Millman
d52c1310b2 Update uglify plugin to support es6 2018-08-23 14:42:03 -07:00
Brandon Millman
6338b5bd3c Move sorting phase into its own utils file 2018-08-23 13:47:24 -07:00
Brandon Millman
2713cca6ac Remove legacy docs stuff 2018-08-23 11:10:40 -07:00
Brandon Millman
57c104119c Merge branch 'development' into feature/forwarder-helper/init
* development: (187 commits)
  Remove trailing slash
  Fix linter
  Stop nesting interfaces and add necessary type exports
  Remove duplicate type and remove nested interface
  Add support for rending the Tuple type
  Add missing keyu
  Remove excessive timestamp
  Improve doc commebnt
  Remove docs catch-all endpoint
  Fix comments
  Look for all TS mapped types
  Add catch and exit with non-zero
  Remove superfluous dep
  Fix CHANGELOG entry
  Fix double assignment
  Upgrade Typedoc to 0.12.0, which works with TS 3.x
  Fix prettier issues
  Enable dry run of release publishing and handle git tags existing
  update yarn.lock
  Missing/superfluous type exports from connect
  ...
2018-08-23 10:58:33 -07:00
Brandon Millman
cd5c73550b Update _sortedConfigs naming 2018-08-23 10:53:59 -07:00
Brandon Millman
68b060cb6a Update yarn lock 2018-08-23 10:53:40 -07:00
Brandon Millman
7ad1a18a4a Merge branch 'development' into feature/forwarder-helper/init
* development: (31 commits)
  Update CI config to check development instead of v2-prototype branch
  fix: Make non-interactive npm login for publish tests more robust
  Run prettier
  Remove comment in updates json-schemas doc
  Add documentation for json-schemas
  Fix typo
  Remove artifacts
  Update variable names, make release candidate
  Update more names in docs
  Improve documentation
  Pin sra-report to 0xproject/connect v1.0.4
  Run prettier
  lint everything
  Update websocket for SRA v2
  Remove default query parameters
  Add networkId request param option
  Rename websocket files and types
  Use uuid as string for requestId
  Update changelogs
  Add fee recipients test
  ...
2018-08-23 10:52:09 -07:00
Fabio Berger
6e27324a34 Merge pull request #924 from 0xProject/wrap-typedoc
Improved Docs & Removed monorepo-scripts from packages
2018-08-23 18:12:39 +01:00
Fabio Berger
8eb4b6f917 Remove trailing slash 2018-08-23 17:50:42 +01:00
Fabio Berger
0ca64e394b Fix linter 2018-08-23 17:37:40 +01:00
Fabio Berger
c4c47d9665 Stop nesting interfaces and add necessary type exports 2018-08-23 17:28:27 +01:00
Fabio Berger
f9b222c127 Remove duplicate type and remove nested interface 2018-08-23 17:06:38 +01:00
Fabio Berger
28f077b16f Add support for rending the Tuple type 2018-08-23 16:55:41 +01:00
Fabio Berger
3563fabe88 Add missing keyu 2018-08-23 16:15:47 +01:00
Fabio Berger
1ca176e992 Remove excessive timestamp 2018-08-23 15:12:43 +01:00
Fabio Berger
52e2c60361 Improve doc commebnt 2018-08-23 15:12:34 +01:00
Fabio Berger
ae154f43df Remove docs catch-all endpoint 2018-08-23 15:08:12 +01:00
Fabio Berger
610caef73f Fix comments 2018-08-23 15:08:02 +01:00
Fabio Berger
29a9e1fc4e Look for all TS mapped types 2018-08-23 14:53:32 +01:00
Fabio Berger
ae937cfcce Add catch and exit with non-zero 2018-08-23 14:53:16 +01:00
Fabio Berger
6c7dca7d07 Remove superfluous dep 2018-08-23 14:53:04 +01:00
Fabio Berger
aa9efd79db Fix CHANGELOG entry 2018-08-23 14:52:52 +01:00
Fabio Berger
f0f4f873a9 Fix double assignment 2018-08-23 14:29:32 +01:00
Fabio Berger
0577ab96b8 Upgrade Typedoc to 0.12.0, which works with TS 3.x 2018-08-23 14:29:22 +01:00
Fabio Berger
15a34dca79 Fix prettier issues 2018-08-23 13:58:49 +01:00
Fabio Berger
2b38163274 Enable dry run of release publishing and handle git tags existing 2018-08-23 13:56:40 +01:00
Brandon Millman
572ad4615a Fix prettier 2018-08-22 23:02:44 -07:00
Alex Browne
b013cf2e14 Merge pull request #1001 from 0xProject/fix/npm-login-with-package
fix: Make non-interactive npm login for publish tests more robust
2018-08-22 17:20:14 -07:00
Alex Browne
3e56990db7 Update CI config to check development instead of v2-prototype branch 2018-08-22 16:58:48 -07:00
Alex Browne
2de7a49000 fix: Make non-interactive npm login for publish tests more robust 2018-08-22 16:40:10 -07:00
Fabio Berger
2a63592994 update yarn.lock 2018-08-23 00:23:33 +01:00
Fabio Berger
2cef8d3a3e Missing/superfluous type exports from connect 2018-08-23 00:23:19 +01:00
Fabio Berger
1417ee2ccb Break with -1 so that the exit code of the loop if hit is non-zero 2018-08-23 00:08:45 +01:00
Fabio Berger
04e4fe251a Prettier fix 2018-08-23 00:08:21 +01:00
Fabio Berger
61255309d2 merge development 2018-08-22 23:46:45 +01:00
Fabio Berger
27d329ff25 Replace complicated camelCase to spaces logic with change-case package 2018-08-22 23:44:46 +01:00
Francesco Agosti
cb19623a3a Merge pull request #974 from 0xProject/feature/connect/sra-api-v2
[connect][sra-api][json-schemas] Update Connect to SRA v2
2018-08-22 15:39:14 -07:00
Brandon Millman
44ca6c4b71 Fix lint errors 2018-08-22 15:39:03 -07:00
Brandon Millman
bfabdf6010 Prettier 2018-08-22 15:39:03 -07:00
Brandon Millman
cbcf8e8477 Add changelog entry and fix order-util changelog PR numbers 2018-08-22 15:39:03 -07:00
Brandon Millman
b0b3f9e339 Add assertions to factory 2018-08-22 15:39:03 -07:00
Brandon Millman
a5c7ddcff5 Add more comments 2018-08-22 15:39:03 -07:00
Brandon Millman
6cef847a27 Write initial forwarderHelperFactory 2018-08-22 15:39:03 -07:00
Brandon Millman
68dfd1bb22 Add tests for getMarketBuyOrdersInfo 2018-08-22 15:39:03 -07:00
Brandon Millman
67d33ec10c Fix rounding bug in marketUtils 2018-08-22 15:39:03 -07:00
Brandon Millman
05ba049f59 Add test for sorting that happens in constructor 2018-08-22 15:39:03 -07:00
Brandon Millman
867ff3c5ec Update yarn lock 2018-08-22 15:39:03 -07:00
Brandon Millman
c2454d1428 Add more TODO items 2018-08-22 15:39:03 -07:00
Brandon Millman
7e0e195c88 Make config public readonly 2018-08-22 15:39:03 -07:00
Brandon Millman
e8a1950a74 Add ForwarderHelperImplConfig 2018-08-22 15:39:03 -07:00
Brandon Millman
3c973ba9f6 Remove marketSell and add to marketBuy implementation 2018-08-22 15:39:03 -07:00
Brandon Millman
2ef867f398 Add stubs for ForwarderHelper interface in ForwarderHelperImpl 2018-08-22 15:39:03 -07:00
Brandon Millman
90f2813d0e Flesh out types 2018-08-22 15:39:03 -07:00
Brandon Millman
dd9c4b6e5d Initial skeleton of forwarder-helper package 2018-08-22 15:39:03 -07:00
Fabio Berger
a6cdc38d53 Add/improve comments 2018-08-22 23:25:06 +01:00
Fabio Berger
167c4f8519 Fix changelogs 2018-08-22 23:24:54 +01:00
Fabio Berger
799db64541 Merge branch 'development' into wrap-typedoc
* development:
  fix: Increase delay for non-interactive npm login
2018-08-22 23:14:45 +01:00
Fabio Berger
69b436babe Refactor publish script so that root package.json configs.packagesWithDocs is canonical source of which packages have doc pages 2018-08-22 23:13:59 +01:00
fragosti
c83f2a070c Run prettier 2018-08-22 14:31:53 -07:00
fragosti
ba9e31d3c1 Remove comment in updates json-schemas doc 2018-08-22 14:11:41 -07:00
Fabio Berger
e915d72202 Merge pull request #996 from 0xProject/fix/npm-auto-login-delay
fix: Increase delay for non-interactive npm login
2018-08-22 21:02:21 +01:00
fragosti
74e7fa13d6 Add documentation for json-schemas 2018-08-22 12:04:03 -07:00
Fabio Berger
b7c119b2aa Fix many linter errors that showed up upon upgrading tsutil 2018-08-22 18:52:17 +01:00
Fabio Berger
3c2af2067f Remove monorepo-scripts from tslintconfig.json 2018-08-22 16:24:45 +01:00
Fabio Berger
7c29cadb17 Use actual packageName for external example imports 2018-08-22 16:11:42 +01:00
Fabio Berger
40b202f8c0 Update all CHANGELOGs 2018-08-22 15:53:19 +01:00
Fabio Berger
392c00a698 Fix prettier 2018-08-22 15:10:32 +01:00
Fabio Berger
fb4fbc0e13 Update contract-wrappers CHANGELOG 2018-08-22 15:10:02 +01:00
Fabio Berger
730226081c Ignore error of first yarn install 2018-08-22 14:53:01 +01:00
Fabio Berger
1fdd7466b2 Double install catching first ones error 2018-08-22 14:49:05 +01:00
Fabio Berger
00b7620af1 Add yarn cache clean 2018-08-22 14:45:00 +01:00
Fabio Berger
a39d79352d Remove duplicate install cmd 2018-08-22 14:27:24 +01:00
Fabio Berger
3b5c8a847b Run yarn twice on CI 2018-08-22 14:24:23 +01:00
Fabio Berger
4b84081795 Check yarn info on CircleCi 2018-08-22 14:19:19 +01:00
Fabio Berger
27ba218ed7 Improve README 2018-08-22 14:07:31 +01:00
Fabio Berger
d907b40378 Fix remaining merge issues 2018-08-22 13:12:42 +01:00
Fabio Berger
0248add542 Merge development branch 2018-08-22 11:41:42 +01:00
Fabio Berger
c12f0d04bb Fix bugs in doc gen due to clone vs cloneDeep and pre-maturely removing placeholder undefined's in array iteration 2018-08-22 11:30:24 +01:00
Fabio Berger
22de88035c Fix index.ts given fix in doc generation 2018-08-22 11:28:31 +01:00
Amir Bandeali
80e52464a6 Merge pull request #985 from 0xProject/feature/contracts/orderValidator
[contracts] Add contract for batch validating orders
2018-08-21 20:43:23 -07:00
Amir Bandeali
3760eb5baf Add getBalancesAndAllowances 2018-08-21 18:14:22 -07:00
fragosti
c905b20ce6 Fix typo 2018-08-21 16:51:01 -07:00
Fabio Berger
301cb296ec Move types from sol-compiler to types so they can be used in other places without requiring sol-compiler as a dep 2018-08-21 23:58:06 +01:00
Fabio Berger
1bbd7bf870 Add generated_docs dir to clean command 2018-08-21 23:20:01 +01:00
Fabio Berger
da15df2c2d Stop logging to console for each packages without a package.json 2018-08-21 23:07:12 +01:00
Fabio Berger
fe43f84abd Use bash for loop for generating docs for each package, revert changes to script 2018-08-21 23:06:21 +01:00
Amir Bandeali
7fa5b474eb Add ZRX balances and allowances to TraderInfo 2018-08-21 13:53:44 -07:00
Amir Bandeali
3d25758b1d Add OrderValidator to migrations 2018-08-21 13:53:38 -07:00
fragosti
f1ddbc9387 Remove artifacts 2018-08-21 13:17:37 -07:00
Amir Bandeali
dafb282432 Add tests 2018-08-21 11:47:28 -07:00
Amir Bandeali
0918f95421 Don't throw if ERC721 token isn't owned 2018-08-21 11:47:28 -07:00
Amir Bandeali
be67c25b0a Add OrderValidator contract 2018-08-21 11:47:28 -07:00
Amir Bandeali
f53157414f Merge pull request #995 from 0xProject/refactor/contracts/forwarderConstructor
[contracts] Remove redundant constructor args
2018-08-21 11:45:50 -07:00
Fabio Berger
6b838c034a Modify script so it can generate docs for a specific package or all packages with doc pages, add doc gen test to CircleCi runs 2018-08-21 19:07:20 +01:00
Alex Browne
86cb89feef fix: Increase delay for non-interactive npm login 2018-08-21 11:04:27 -07:00
Amir Bandeali
1ba26ea5e8 Remove redundant constructor args 2018-08-21 10:59:54 -07:00
fragosti
8b79868c36 Update variable names, make release candidate 2018-08-21 10:58:35 -07:00
Fabio Berger
8bb7b5b543 Add shouldUpload flag to docGenAndUpload command 2018-08-21 18:49:56 +01:00
Fabio Berger
809d301d58 Fix lowercase names involving ERC acronym 2018-08-21 17:48:24 +01:00
Fabio Berger
c00c477307 Add doc comments to AbiDecoder 2018-08-21 17:39:35 +01:00
Fabio Berger
6216714be1 Merge pull request #994 from feuGeneA/remove-more-v2-artifacts
[0x.js, migrations] remove more v2 contract artifacts
2018-08-21 17:35:59 +01:00
Fabio Berger
cc90c806b0 Fix sol-cov index.ts 2018-08-21 17:16:42 +01:00
Fabio Berger
04bbd60c11 Fix sol-compiler index.ts 2018-08-21 17:16:34 +01:00
Fabio Berger
ad9bb3ea59 Fix order-watcher index.ts 2018-08-21 17:16:24 +01:00
Fabio Berger
1ddac0bc7b Fix type 2018-08-21 17:16:16 +01:00
Fabio Berger
a7468eb858 Don't check if types are used for libraries only include types 2018-08-21 17:16:00 +01:00
F. Eugene Aumson
213d82a2c2 remove more v2 contract artifacts 2018-08-21 11:41:01 -04:00
Fabio Berger
7553411fb2 Fix up order-utils 2018-08-21 16:37:03 +01:00
Fabio Berger
c52c94214f Rather then look for typeArguments, we want to ignore Partial & Promise references, but still continue to search below them, as they might surround a type 2018-08-21 16:36:48 +01:00
Fabio Berger
151cf03f5b Add link to Array type 2018-08-21 16:35:39 +01:00
Fabio Berger
141c51eaf5 Add missing exports to 0x.js and contract-wrappers index.ts 2018-08-21 16:35:13 +01:00
Fabio Berger
ab7d083aa5 Add missing key 2018-08-21 15:39:39 +01:00
Fabio Berger
12881e60e3 Fix file name from camel to snake case 2018-08-21 14:23:06 +01:00
Fabio Berger
1f65de60b4 Move sol-compiler dep to dependencies now that types from it are exported in index.ts 2018-08-21 11:18:12 +01:00
Fabio Berger
635373febb Implement ignoring config types 2018-08-21 11:17:12 +01:00
Fabio Berger
e7c7af8ef4 Add more types and ignores to docGenConfigs 2018-08-21 11:15:59 +01:00
fragosti
cd2bbd850d Update more names in docs 2018-08-20 17:23:38 -07:00
fragosti
83a36bc4b6 Improve documentation 2018-08-20 17:18:08 -07:00
fragosti
1c95f685bb Pin sra-report to 0xproject/connect v1.0.4 2018-08-20 16:56:57 -07:00
fragosti
e45d320fc5 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/connect/sra-api-v2 2018-08-20 16:50:24 -07:00
Francesco Agosti
dd2e54d60d Merge pull request #987 from 0xProject/feature/add-sra-to-readme
Add sra-api to README
2018-08-20 16:34:12 -07:00
Brandon Millman
64eac5f37f Merge pull request #990 from 0xProject/feature/website/update-onboarding-lock-image
[Website] Update lock icon in onboarding
2018-08-20 16:25:53 -07:00
Alex Browne
78ed6e0339 Merge pull request #989 from 0xProject/fix/sol-cov-incorrect-files
fix(sol-cov): Remove old files and update config.contractsDir
2018-08-20 14:25:36 -07:00
Brandon Millman
79aff1c57a Update lock icon in onboarding 2018-08-20 14:25:31 -07:00
Amir Bandeali
a21bfc5f2c Merge pull request #976 from feuGeneA/remove-v2-artifacts
[migrations, 0x.js, contract-wrappers, fill-scenarios, order-utils, order-watcher] remove v2 contract artifacts
2018-08-20 14:23:44 -07:00
Alex Browne
da3dc7affc fix(sol-cov): Remove old files and update config.contractsDir 2018-08-20 13:56:55 -07:00
Brandon Millman
254d88ffa0 Add Matt Taylor to website 2018-08-20 13:56:31 -07:00
Brandon Millman
4ded591624 Merge pull request #988 from 0xProject/fix/website/build-error
[website] Revert changes to website causing it to fail building
2018-08-20 13:55:22 -07:00
Brandon Millman
2af99a1fe2 Add CODEOWNERS file 2018-08-20 13:35:55 -07:00
fragosti
135fbf67ad Apply prettir 2018-08-20 13:15:30 -07:00
F. Eugene Aumson
6405c70d07 change clean to also remove generated artifacts 2018-08-20 16:12:09 -04:00
F. Eugene Aumson
1255570b95 remove disabled scripts 2018-08-20 16:12:09 -04:00
F. Eugene Aumson
a263e7dfce remove v2 contract artifacts 2018-08-20 16:12:09 -04:00
Brandon Millman
cbe0ffb3ce Remove exit 0 from website build command 2018-08-20 12:19:26 -07:00
Brandon Millman
67b4ba2a57 Revert error renames 2018-08-20 12:18:35 -07:00
fragosti
ab71f54128 Add sra-api to README 2018-08-20 12:10:58 -07:00
fragosti
cabce8cb67 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/connect/sra-api-v2 2018-08-20 12:01:58 -07:00
fragosti
44cc5e45cc Run prettier 2018-08-20 11:53:49 -07:00
fragosti
1ae11ed8ae lint everything 2018-08-20 11:51:26 -07:00
fragosti
075e3a41c8 Update websocket for SRA v2 2018-08-20 11:42:29 -07:00
Brandon Millman
756787c61f Update yarn lock 2018-08-20 11:28:55 -07:00
Fabio Berger
b67677f476 Fix website given that it still depends on an old version of @0xproject/Types 2018-08-20 13:51:23 +01:00
Fabio Berger
b4cf69b021 Cleanup web3-wrapper and subproviders index.ts 2018-08-20 13:50:28 +01:00
Fabio Berger
d149b6cdec Cleanup connect index.ts 2018-08-20 13:49:50 +01:00
Fabio Berger
f29263c477 Cleanup contract-wrappers index.ts 2018-08-20 13:49:29 +01:00
Fabio Berger
61ef6edaa5 Change Yarn verson in README 2018-08-18 12:27:15 -07:00
Fabio Berger
fae58ca695 Merge pull request #975 from 0xProject/feature/contract-wrappers/executeTransaction
[Contract-wrappers] Exchange execute transaction encoder
2018-08-18 12:23:16 -07:00
Jacob Evans
1c68057999 Rename to Transaction Encoder.
Add tests for all encoding methods.
2018-08-18 09:32:29 +10:00
Fabio Berger
fb637d9234 Make sure we don't render protected properties 2018-08-17 16:09:04 -07:00
Fabio Berger
0f7ced3625 Make sure export isn't internal to the package 2018-08-17 14:12:23 -07:00
Fabio Berger
ea4d7f153a Also ignore implementationOf 2018-08-17 14:12:04 -07:00
fragosti
f2d1d95355 Remove default query parameters 2018-08-17 13:58:55 -07:00
Amir Bandeali
ddf85112d7 Merge pull request #933 from 0xProject/refactor/contracts/tokens
[contracts] Refactor token implementations
2018-08-17 13:28:01 -07:00
Fabio Berger
05ce002435 Refactor DocGenerateAndUploadUtils to be a class, and decompose large methods for readability 2018-08-17 12:53:27 -07:00
fragosti
48ec78d3aa Add networkId request param option 2018-08-17 10:43:44 -07:00
Amir Bandeali
e35788e2c8 Update artifacts 2018-08-16 17:32:20 -07:00
Amir Bandeali
8bce73dc67 Fix typos, run prettier, and allow anyone to call on DummyERC721Token 2018-08-16 17:32:16 -07:00
Amir Bandeali
c13f538400 Update CHANGELOGs 2018-08-16 17:31:21 -07:00
Amir Bandeali
09d3d15db0 Fix Geth tests 2018-08-16 17:31:21 -07:00
Amir Bandeali
633e6c38c8 Fix linting errors 2018-08-16 17:31:21 -07:00
Amir Bandeali
a4d6bc3190 Fix tests that assumed logs were being filtered 2018-08-16 17:31:21 -07:00
Amir Bandeali
0b9a9d92af Add tests for ERC721Token 2018-08-16 17:31:21 -07:00
Amir Bandeali
a82e36c1d4 Add ERC721Receiver that returns incorrect value 2018-08-16 17:31:21 -07:00
Amir Bandeali
61ba012b1f Add ERC721 revert reasons to types 2018-08-16 17:31:21 -07:00
Amir Bandeali
aeb9ffbf5a Store methodId and number of indexed args in AbiDecoder to differentiate between events with same function signature 2018-08-16 17:31:21 -07:00
Amir Bandeali
6dde6d7cb7 Increase max mintable amount 2018-08-16 17:31:21 -07:00
Amir Bandeali
1d70724bcf Fix DummyERC721Receiver 2018-08-16 17:31:21 -07:00
Amir Bandeali
77c87cd009 Update artifacts 2018-08-16 17:31:21 -07:00
Amir Bandeali
4dd59a370d Add tests for ERC20 token with no return values 2018-08-16 17:31:21 -07:00
Amir Bandeali
7a6e647386 Add constructor back to DummyERC721Token 2018-08-16 17:31:21 -07:00
Amir Bandeali
f5459164d2 Restructure directories 2018-08-16 17:31:21 -07:00
Amir Bandeali
2743eee044 Update checking for erc721 existence 2018-08-16 17:31:21 -07:00
Amir Bandeali
bb3c345891 Update ERC20Token 2018-08-16 17:31:21 -07:00
Amir Bandeali
0f3201d72a Optimize ERC721Token 2018-08-16 17:31:21 -07:00
Alex Browne
8131a87046 Merge pull request #978 from 0xProject/feature/lenra-3.0.0-beta.25
feat: Update lerna to version 3.0.0-beta.25 of our fork
2018-08-16 17:10:28 -07:00
fragosti
64a85dfb9c Rename websocket files and types 2018-08-16 17:03:11 -07:00
Fabio Berger
68d7eb5712 Fix comment 2018-08-16 17:02:47 -07:00
Fabio Berger
f7375fca98 Move doc configs to a separate file 2018-08-16 17:02:37 -07:00
fragosti
e079790f7f Use uuid as string for requestId 2018-08-16 16:51:55 -07:00
Fabio Berger
2604d40751 Merge pull request #965 from feuGeneA/sol-compile-lot
[sol-compiler] Compile in batches rather than one at a time
2018-08-16 16:42:37 -07:00
fragosti
89174cd63f Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/connect/sra-api-v2 2018-08-16 16:08:02 -07:00
fragosti
8cb1d2a0af Update changelogs 2018-08-16 16:05:34 -07:00
F. Eugene Aumson
c1ec849554 Merge branch 'development' into sol-compile-lot 2018-08-16 15:32:09 -07:00
Fabio Berger
def575b995 Remove outdating comment 2018-08-16 15:31:43 -07:00
dependabot[bot]
d0d6a6a500 Merge pull request #970 from 0xProject/dependabot/npm_and_yarn/copy-webpack-plugin-4.5.2 2018-08-16 22:30:15 +00:00
F. Eugene Aumson
445177bf42 move doesFileExist to fsWrapper 2018-08-16 15:26:20 -07:00
Fabio Berger
a4c3a0d39f Undo prettier 2018-08-16 15:15:30 -07:00
Fabio Berger
7c08f6d30a Update yarn.lock 2018-08-16 15:13:28 -07:00
Fabio Berger
0337b5a401 Merge development 2018-08-16 15:10:12 -07:00
dependabot[bot]
4d81ab679d Bump copy-webpack-plugin from 4.5.1 to 4.5.2
Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 4.5.1 to 4.5.2.
- [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v4.5.1...v4.5.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-16 22:09:01 +00:00
Fabio Berger
72752bcb68 Merge pull request #928 from 0xProject/dependabot/npm_and_yarn/copyfiles-2.0.0
Bump copyfiles from 1.2.0 to 2.0.0
2018-08-16 15:05:47 -07:00
Fabio Berger
e47e9c5b34 Fix external exports section name 2018-08-16 15:01:52 -07:00
F. Eugene Aumson
402ca27fbf change some *Sync to *Async 2018-08-16 15:01:33 -07:00
Fabio Berger
8e3df2b5ae Render external dep exports 2018-08-16 14:57:45 -07:00
Fabio Berger
bf9ee82d9f Remove stray console log 2018-08-16 13:59:50 -07:00
Fabio Berger
ae7bce7674 Add links for external dep exports to docJson 2018-08-16 13:56:29 -07:00
Fabio Berger
7d09a94428 Remove unused ContractWrapper export 2018-08-16 13:50:03 -07:00
Alex Browne
b7079e9616 feat: Update lerna to version 3.0.0-beta.25 of our fork 2018-08-16 13:20:07 -07:00
F. Eugene Aumson
85427a84df clarify variable names for artifact mod times 2018-08-16 11:17:57 -07:00
F. Eugene Aumson
a59f18927d flatten out interface to verifyAndPersist* method 2018-08-16 10:57:31 -07:00
F. Eugene Aumson
a607a61bde clarify iteration range 2018-08-16 10:48:33 -07:00
F. Eugene Aumson
421a7394df scrap comments in favor of self-documentation 2018-08-16 10:47:33 -07:00
F. Eugene Aumson
acb3c0d0aa declare contractData before adding to map 2018-08-16 10:42:03 -07:00
F. Eugene Aumson
11231795cd change return Promise<void> to await... 2018-08-16 10:32:27 -07:00
F. Eugene Aumson
6b6b368bf6 consolidate binPaths... ref's into fullSolcVersion 2018-08-16 10:29:36 -07:00
Fabio Berger
60f026e6fd Export Web3ProviderEngine directly instead of indirectly via subproviders 2018-08-16 08:45:43 -07:00
Jacob Evans
36668f9409 [Contract-wrappers] Exchange execute transaction encoder 2018-08-16 16:51:55 +10:00
Jacob Evans
480d28ea26 Merge pull request #959 from 0xProject/bug/order-utils/rounding-error-small-maker
[Order-utils] Order is valid when maker amount is very small
2018-08-16 12:13:27 +10:00
Jacob Evans
88c99396a2 Rename OrderAlreadyCancelledOrFilled -> OrderCancelled.
Remove try catch of throwing errors in favour of returning the Errors in a OrderValidationResult
2018-08-16 11:12:35 +10:00
fragosti
ca5e52920d Add fee recipients test 2018-08-15 17:52:13 -07:00
fragosti
30dfb7511d All previous tests passing 2018-08-15 17:36:54 -07:00
fragosti
1c87e5f698 Get orders async tests passing 2018-08-15 17:31:39 -07:00
F. Eugene Aumson
badcb35525 extract method _shouldCompile() 2018-08-15 17:22:35 -07:00
fragosti
c325d638c9 getAssetPairsAsync tests passing 2018-08-15 17:18:19 -07:00
Fabio Berger
baab0f27b5 Check for superfluous types in a packages index.ts and throw if they exist 2018-08-15 16:50:23 -07:00
Fabio Berger
9e7657ac5d Improve Error external link 2018-08-15 16:38:30 -07:00
Fabio Berger
237bac920a Remove unused types from 0x.js index.ts discovered 2018-08-15 16:38:07 -07:00
F. Eugene Aumson
89202b7bdf clarify recompilation tests 2018-08-15 16:01:57 -07:00
F. Eugene Aumson
20ac6936ac change .rejectedWith(error) to .rejected() 2018-08-15 16:01:04 -07:00
F. Eugene Aumson
976d159e52 follow chai_setup pattern 2018-08-15 15:51:25 -07:00
fragosti
e7f19e350e Project now builds 2018-08-15 15:10:39 -07:00
fragosti
41768617a9 Update test fixtures 2018-08-15 14:41:09 -07:00
F. Eugene Aumson
455c78dfb1 renamed variable compiled to compilerOutput 2018-08-15 14:09:57 -07:00
F. Eugene Aumson
ec41e314b0 use for...of _.keys instead of for...in 2018-08-15 13:39:33 -07:00
F. Eugene Aumson
8959b0993e raise error for unknown compiler version 2018-08-15 13:38:41 -07:00
F. Eugene Aumson
7c96fa45f8 comments 2018-08-15 13:10:49 -07:00
F. Eugene Aumson
ad9a7d72ce remedy missing *IfExists identifier suffix 2018-08-15 13:10:45 -07:00
F. Eugene Aumson
558286467b extract interfaces for re-used complex data types 2018-08-15 12:53:41 -07:00
F. Eugene Aumson
f0f94f199e move getSolcAsync to static private method 2018-08-15 12:53:33 -07:00
Fabio Berger
6e74d1519b Add externalTypeToLink to docJson 2018-08-15 11:37:06 -07:00
Fabio Berger
a8d44ccc48 Move external types to link mapping to doc generation util and refactor typedocUtils to be a class to avoid excessive param passing 2018-08-15 11:36:45 -07:00
F. Eugene Aumson
d744468479 rename variable inputsByVersion to versionToInputs 2018-08-15 11:21:46 -07:00
F. Eugene Aumson
c01810f0d7 move getSolcAsync to static private method 2018-08-15 11:13:09 -07:00
Jacob Evans
622509c508 [Order-utils] Order is valid when maker amount is very small
Previously our min fillable calculation would throw a rounding error
when encountering a valid order (with a small maker amount). This was
inconsistent with the on-chain logic which allowed this order to be
filled.
2018-08-15 13:06:32 +10:00
fragosti
bb992f8a49 Update parsing code 2018-08-14 19:16:36 -07:00
F. Eugene Aumson
c11d805469 Update changelog 2018-08-14 18:02:39 -07:00
Fabio Berger
3b8a343711 Add version to our custom DocJson format 2018-08-14 17:55:38 -07:00
Fabio Berger
83e3bb899e Move purging private underscored items to the doc json generation phase 2018-08-14 17:41:03 -07:00
F. Eugene Aumson
bb4558e0be test compiler 2018-08-14 17:40:31 -07:00
fragosti
3eeb9ddfa6 Update connect json-schemas 2018-08-14 17:31:19 -07:00
Fabio Berger
cb5d8d75bf Link class reference types exported in same package to their declaration 2018-08-14 17:24:48 -07:00
Fabio Berger
267078ed6c Remove duplicate Typescript import 2018-08-14 17:23:36 -07:00
fragosti
80e5127a46 Update types and add missing param to SRA spec 2018-08-14 17:16:03 -07:00
Fabio Berger
19e17ba128 Add ability to hide specific class constructors 2018-08-14 16:34:48 -07:00
Fabio Berger
04e00e0c28 Improve missing type detection 2018-08-14 16:34:21 -07:00
Fabio Berger
8bebffb147 Flesh out 0x.js index.ts and added some exports to other index.ts in the process 2018-08-14 16:25:37 -07:00
fragosti
5c40c466f6 Update json-schemas, update HTTPClient types 2018-08-14 16:06:09 -07:00
Brandon Millman
f9f232f5d9 Merge pull request #954 from 0xProject/refactor/order-utils/market-utils-api
[order-utils] Update marketUtils api to be friendlier
2018-08-14 15:45:21 -07:00
Brandon Millman
7b7b97dd7b Merge branch 'development' into refactor/order-utils/market-utils-api
* development:
  Bump @types/fetch-mock from 5.12.2 to 6.0.3
2018-08-14 15:21:28 -07:00
dependabot[bot]
b6cdc00a31 Bump copyfiles from 1.2.0 to 2.0.0
Bumps [copyfiles](https://github.com/calvinmetcalf/copyfiles) from 1.2.0 to 2.0.0.
- [Release notes](https://github.com/calvinmetcalf/copyfiles/releases)
- [Commits](https://github.com/calvinmetcalf/copyfiles/compare/v1.2.0...v2.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 21:51:13 +00:00
Fabio Berger
644fe1de8f Merge in new 0x.js interface 2018-08-14 14:45:10 -07:00
fragosti
ce88086e08 Update types to reflect v2 2018-08-14 14:40:52 -07:00
Fabio Berger
1d9408a8e0 Fix additional merge conflicts 2018-08-14 14:39:59 -07:00
Fabio Berger
c743f010e3 Merge pull request #920 from 0xProject/dependabot/npm_and_yarn/@types/fetch-mock-6.0.3
Bump @types/fetch-mock from 5.12.2 to 6.0.3
2018-08-14 14:38:49 -07:00
Fabio Berger
2f2582a0da Merge development 2018-08-14 14:21:47 -07:00
fragosti
c1cc92a46f Change names of basic types in Client interface 2018-08-14 14:00:16 -07:00
Brandon Millman
9c3d10d5be Merge branch 'development' into refactor/order-utils/market-utils-api
* development:
  feat: Upgrade TypeScript to 3.0.1
  Add defaults for networkId and pagination
  Update sortingUtils to support Order and SignedOrder
  Change rateUtils to use Order
  Updated CHANGELOG
  Fix lint errors
  Update tests for optional feeRate
  Make feeRate optional with a default of 0
  Add tests for sortingUtils
  Implement sorting utils
  Add tests for rateUtils
  Implement rate utils
2018-08-14 13:48:21 -07:00
Brandon Millman
3afe405bbe Merge pull request #953 from 0xProject/feature/order-utils/order-sorting-utils
[order-utils] Add rate and sorting utilities
2018-08-14 13:45:04 -07:00
Alex Browne
7eff195d61 Merge pull request #966 from 0xProject/feature/typescript-3.0.1
feat: Upgrade TypeScript to 3.0.1
2018-08-14 11:46:08 -07:00
F. Eugene Aumson
e79c7632e6 simplify method interface 2018-08-14 11:42:06 -07:00
F. Eugene Aumson
aa27346f93 simplify method parameter 2018-08-14 11:42:06 -07:00
F. Eugene Aumson
db6de490b2 corrected whitespace (no functional changes) 2018-08-14 11:42:06 -07:00
F. Eugene Aumson
014d71d5ae compile contracts in batches
one batch per compiler version needed.
2018-08-14 11:42:06 -07:00
F. Eugene Aumson
783bc873db extract method _verifyAndPersistCompilationAsync() 2018-08-14 11:42:06 -07:00
F. Eugene Aumson
478bf14289 extract method _compile() 2018-08-14 11:42:06 -07:00
F. Eugene Aumson
d89934954d extract function getSolcAsync() 2018-08-14 11:42:06 -07:00
Alex Browne
6baa5ef311 feat: Upgrade TypeScript to 3.0.1 2018-08-14 11:02:04 -07:00
dependabot[bot]
db20ad1c5d Bump @types/fetch-mock from 5.12.2 to 6.0.3
Bumps [@types/fetch-mock](https://github.com/DefinitelyTyped/DefinitelyTyped) from 5.12.2 to 6.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-14 06:21:07 +00:00
Francesco Agosti
56eb444ea4 Merge pull request #964 from 0xProject/feature/sra-api/add-defaults
[sra-api] Add defaults for networkId and pagination
2018-08-13 23:05:37 -07:00
Brandon Millman
6a2634d362 Make marketUtils interface compatible with Order and SignedOrder 2018-08-13 21:31:23 -07:00
Brandon Millman
a2192e62df Update CHANGELOG 2018-08-13 21:31:23 -07:00
Brandon Millman
66745c5260 Remove remaining amounts that are now defaults in tests 2018-08-13 21:31:22 -07:00
Brandon Millman
c10c4cec1d Update marketUtils api 2018-08-13 21:31:22 -07:00
Fabio Berger
f2d9dfb56b Remove 0x.js from Circle CI 2018-08-13 20:51:04 -07:00
fragosti
228387f995 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/sra-api/add-defaults 2018-08-13 18:52:32 -07:00
Fabio Berger
336519a690 Add PR nr. 2018-08-13 18:50:12 -07:00
Fabio Berger
10dc3ea81c Fix merge 2018-08-13 18:49:35 -07:00
fragosti
dd7e03c7d7 Add defaults for networkId and pagination 2018-08-13 18:46:54 -07:00
Alex Browne
fadd292ecf Publish
- 0x.js@1.0.1-rc.3
 - @0xproject/abi-gen@1.0.5
 - @0xproject/assert@1.0.5
 - @0xproject/base-contract@2.0.0-rc.1
 - @0xproject/connect@1.0.5
 - @0xproject/contract-wrappers@1.0.1-rc.3
 - contracts@2.1.40
 - @0xproject/dev-utils@1.0.4
 - ethereum-types@1.0.4
 - @0xproject/fill-scenarios@1.0.1-rc.3
 - @0xproject/json-schemas@1.0.1-rc.4
 - @0xproject/metacoin@0.0.15
 - @0xproject/migrations@1.0.4
 - @0xproject/monorepo-scripts@1.0.5
 - @0xproject/order-utils@1.0.1-rc.3
 - @0xproject/order-watcher@1.0.1-rc.3
 - @0xproject/react-docs@1.0.5
 - @0xproject/react-docs-example@0.0.20
 - @0xproject/react-shared@1.0.6
 - @0xproject/sol-compiler@1.0.5
 - @0xproject/sol-cov@2.0.0
 - @0xproject/sol-resolver@1.0.5
 - @0xproject/sra-api@1.0.1-rc.4
 - @0xproject/sra-report@1.0.5
 - @0xproject/subproviders@1.0.5
 - @0xproject/testnet-faucets@1.0.41
 - @0xproject/tslint-config@1.0.5
 - @0xproject/types@1.0.1-rc.4
 - @0xproject/typescript-typings@1.0.4
 - @0xproject/utils@1.0.5
 - @0xproject/web3-wrapper@1.2.0
 - @0xproject/website@0.0.44
2018-08-13 18:34:51 -07:00
Alex Browne
7c8a7a2420 Updated CHANGELOGS 2018-08-13 18:34:37 -07:00
Brandon Millman
99b744ba52 Update sortingUtils to support Order and SignedOrder 2018-08-13 18:32:15 -07:00
Fabio Berger
c320c8742e Add CHANGELOG entry about public interface refactor 2018-08-13 18:20:45 -07:00
Fabio Berger
3a086cae1a Merge branch 'development' into refactor/0x-js-exported-interface
* development:
  fix(0x.js, order-utils): Fix CHANGELOG.json versions
2018-08-13 18:15:50 -07:00
Fabio Berger
b10cba600d Refactor 0x.js to simply re-export it's own sub-dependencies rather then wrapping them in a ZeroEx object 2018-08-13 18:10:11 -07:00
Alex Browne
3b0fa1aa87 fix(0x.js, order-utils): Fix CHANGELOG.json versions 2018-08-13 18:06:27 -07:00
Brandon Millman
d859399841 Change rateUtils to use Order 2018-08-13 17:46:43 -07:00
Fabio Berger
8169155a65 Update yarn.lock 2018-08-13 16:56:05 -07:00
Fabio Berger
952367d532 Add missing types from 0x.js index.ts 2018-08-13 16:55:52 -07:00
Fabio Berger
67666446bf Add a check to make sure types part of the exported interface are also exported from the packages index.ts 2018-08-13 16:55:37 -07:00
Fabio Berger
3d1c8dfe06 Remove old comment 2018-08-13 16:52:45 -07:00
Alex Browne
283175df98 Run publish/installation tests in CircleCI (#951)
feat(monorepo-scripts): Run publish tests in CircleCI
2018-08-13 16:49:50 -07:00
Fabio Berger
aeb368a1d9 Merge pull request #932 from 0xProject/fix-ganache-fork
Fix ganache fork
2018-08-13 19:45:01 -04:00
Jacob Evans
e51deb93ee Merge pull request #914 from 0xProject/feature/0x.js/ec-signature-string
0x.js Return signature as a hex encoded string
2018-08-14 09:36:11 +10:00
Jacob Evans
a351757493 Update version numbers.
Add source for Metamask future fix.
Consolidate switch statement to one return
2018-08-14 09:18:13 +10:00
Francesco Agosti
0025c6640b Merge pull request #958 from 0xProject/feature/sra-api/camel-case-everything
[sra-api] Enforce camelCase for all parameters and other changes.
2018-08-13 15:12:01 -07:00
Alex Browne
25a8554be1 fix(sol-compiler, sol-resolver): Bug where sol-resolver tried to read a directory (#961)
fix(sol-compiler, sol-resolver): Fix bug where sol-resolver tried to read a directory
2018-08-13 14:17:05 -07:00
Fabio Berger
cd76c129da Merge pull request #955 from feuGeneA/patch-6
[PR template] a to-do list should be in the imperative mood
2018-08-13 16:46:34 -04:00
Fabio Berger
7340338626 Merge pull request #938 from 0xProject/sol-cov-fixes
Sol cov fixes
2018-08-13 16:40:46 -04:00
Fabio Berger
9d3c287918 Merge branch 'sol-cov-fixes' of github.com:0xProject/0x-monorepo into sol-cov-fixes
* 'sol-cov-fixes' of github.com:0xProject/0x-monorepo: (49 commits)
  Add @return comments
  Import marshaller directly
  Update comment about ethers checksummed address behavior
  Add packages/coverage/.gitkeep file
  Update CI config and package.json to run @0xproject/utils tests on CI
  Update remaining CHANGELOG.json files
  Change amir picture
  Update CHANGELOG.json for contract-wrappers
  Update ethers typings for TypeScript 2.9.2
  Update CHANGELOG.json for base-contract
  Move some ethers-related types to typescript-typings/ethers
  Apply prettier
  Add strictArgumentEncodingCheck to BaseContract and use it in contract templates
  fix(monorepo-scripts): Fix typo in git tag command
  feat(monorepo-scripts): Add confirmation prompt before publishing
  fix comments and styling for MixinSignatureValidator
  Update TypeScript to version 2.9.2
  Use asm for hashEIP712Message, increment free memory pointer after asm hashing functions
  Fix comments, styling, and optimize hashOrder
  Remove assertion comments
  ...
2018-08-13 13:01:32 -07:00
Fabio Berger
c2b5fe3d84 Remove test for unknown prop now that we are allowing additional props fro txData 2018-08-13 13:01:10 -07:00
fragosti
5ef84d61fa Ignore api.json in prettier 2018-08-13 12:58:15 -07:00
fragosti
58321a36dc apply prettier 2018-08-13 11:45:13 -07:00
Jacob Evans
ca4905c343 Rename from SignerProviderType.EthSign to SignerType.Default 2018-08-11 18:27:21 +10:00
fragosti
b6d793aec4 Enforce camelCase for all parameters and change the way the site is deployed and hosted 2018-08-10 15:56:47 -07:00
F. Eugene Aumson
83fb9df63d a to-do list should be in the imperative mood 2018-08-10 00:34:31 -07:00
Amir Bandeali
083319786f Merge pull request #948 from 0xProject/feature/contracts/forwarderFoK
[contracts] Make marketBuy functions revert if entire amount not filled
2018-08-09 17:22:56 -07:00
Francesco Agosti
719699eb30 Merge pull request #916 from 0xProject/feature/sra/add-sra-package
Add the sra-api package (OpenAPI Spec)
2018-08-09 17:02:43 -07:00
fragosti
889ec81ff3 Fix order-watcher json-schemas 2018-08-09 16:43:16 -07:00
fragosti
2f66f26048 Fix linting issues 2018-08-09 16:41:43 -07:00
fragosti
713f285f37 fix contract-wrappers json-schemas 2018-08-09 16:22:20 -07:00
Brandon Millman
ab64ea7377 Updated CHANGELOG 2018-08-09 19:20:07 -04:00
Brandon Millman
b86210332f Fix lint errors 2018-08-09 19:12:42 -04:00
Brandon Millman
af52598d32 Update tests for optional feeRate 2018-08-09 19:12:42 -04:00
Brandon Millman
cbe639866e Make feeRate optional with a default of 0 2018-08-09 19:12:42 -04:00
Brandon Millman
fcd57d2743 Add tests for sortingUtils 2018-08-09 19:12:42 -04:00
Brandon Millman
c0924d8067 Implement sorting utils 2018-08-09 19:12:42 -04:00
Brandon Millman
a1860b076d Add tests for rateUtils 2018-08-09 19:12:42 -04:00
Brandon Millman
32ab4dcac7 Implement rate utils 2018-08-09 19:12:42 -04:00
fragosti
938a99f435 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/sra/add-sra-package 2018-08-09 15:57:12 -07:00
Alex Browne
f97ec000e1 Merge pull request #949 from 0xProject/fix/update-dependencies
fix: Update dependencies
2018-08-09 14:22:16 -07:00
Amir Bandeali
1b5c5e7a3b Change withdrawERC20 => withdrawAsset, reuse transfer logic 2018-08-09 14:07:27 -07:00
fragosti
c804e2230d Update Clays linkedin 2018-08-09 12:25:26 -07:00
fragosti
3f610d4865 Merge https://github.com/0xProject/0x-monorepo into development 2018-08-09 12:15:30 -07:00
fragosti
8404e0e73f Add clay to website 2018-08-09 12:15:18 -07:00
fragosti
b2c666bb1f Apply prettier 2018-08-09 11:42:05 -07:00
Alex Browne
f3761af567 fix: Update dependencies 2018-08-09 11:35:54 -07:00
Amir Bandeali
b9d8d2d5e3 Make marketBuy functions revert if entire amount not filled 2018-08-09 11:26:32 -07:00
Amir Bandeali
b60a74c8bc Merge pull request #941 from 0xProject/feature/contracts/returnValuesTests
[contracts] Test fillOrder return values and abiEncodeFillOrder
2018-08-09 10:39:14 -07:00
fragosti
0113ecee96 Change scripts folder to build_scripts 2018-08-09 10:13:37 -07:00
fragosti
eb20e86947 Force case change in file 2018-08-09 09:39:29 -07:00
Leonid Logvinov
15e15f994a Merge branch 'development' into sol-cov-fixes 2018-08-09 17:03:41 +02:00
Leonid Logvinov
d44ff6a915 Add @return comments 2018-08-09 17:02:13 +02:00
Leonid Logvinov
68605ca261 Import marshaller directly 2018-08-09 17:00:05 +02:00
Jacob Evans
5d4dd406f2 Update Changelogs. Rebased from development 2018-08-09 12:05:17 +10:00
Jacob Evans
9dd6ba7825 Update jsdoc 2018-08-09 12:02:17 +10:00
Jacob Evans
45e9fbe8f9 Introduce SignerProviderType
This allows the developer to indicate the nuanced signer provider. Some have different implementations (trezor, ledger) and others have different implementations (metamask). Breaking the abstraction of eth_sign. EthSign assumes a spec compliant implementation and can be used as a default
2018-08-09 12:02:12 +10:00
Alex Browne
53713188fe Merge pull request #915 from 0xProject/feature/encode-decode-checks
Add strictArgumentEncodingCheck to BaseContract and use it in contract templates
2018-08-08 18:28:15 -07:00
Alex Browne
c4c37cafa0 Update comment about ethers checksummed address behavior 2018-08-08 17:58:04 -07:00
Alex Browne
5b7774f9d0 Add packages/coverage/.gitkeep file 2018-08-08 17:33:20 -07:00
Alex Browne
ca7d8a8940 Update CI config and package.json to run @0xproject/utils tests on CI 2018-08-08 16:47:36 -07:00
Alex Browne
762bbe9bcd Update remaining CHANGELOG.json files 2018-08-08 16:44:52 -07:00
fragosti
03fb73d1d2 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into development 2018-08-08 15:50:59 -07:00
Amir Bandeali
d10e2652ae Revert incrementing memory ptr in dispatchTransferFrom 2018-08-08 15:44:43 -07:00
Amir Bandeali
9a5d7b7635 Test abiEncodeFillOrder as part of combinatorial follOrder tests 2018-08-08 15:44:43 -07:00
Amir Bandeali
1fb3da6b53 Increment free memory pointer for internal Exchange functions that use asm 2018-08-08 15:44:43 -07:00
Amir Bandeali
970bef717e Add return values to combinatorial fillOrder tests 2018-08-08 15:44:43 -07:00
fragosti
2a85f79040 Change amir picture 2018-08-08 15:42:09 -07:00
Amir Bandeali
651a468b44 Merge pull request #946 from 0xProject/fix/contracts/signatureValidatorComments
[contracts] Fix comments and styling for MixinSignatureValidator
2018-08-08 15:35:34 -07:00
fragosti
5e8ad0aef4 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/sra/add-sra-package 2018-08-08 15:12:10 -07:00
Alex Browne
44d909c0c7 Update CHANGELOG.json for contract-wrappers 2018-08-08 14:54:35 -07:00
Alex Browne
44b01f2069 Update ethers typings for TypeScript 2.9.2 2018-08-08 14:52:05 -07:00
fragosti
d7d51791a6 Remove md hints because the static site cannot handle them 2018-08-08 14:50:06 -07:00
fragosti
9e3fe7092b Add section about json-schemas and sra report 2018-08-08 14:47:43 -07:00
fragosti
083d42c8f7 Fix links in markdown 2018-08-08 14:36:38 -07:00
fragosti
6121a6d2bf Add to changelog and fix OrderBook typo 2018-08-08 14:28:09 -07:00
Alex Browne
09af23f950 Update CHANGELOG.json for base-contract 2018-08-08 14:27:30 -07:00
Alex Browne
52e094addc Move some ethers-related types to typescript-typings/ethers 2018-08-08 14:27:30 -07:00
Alex Browne
6a6739ebbe Apply prettier 2018-08-08 14:27:30 -07:00
Alex Browne
6a5965d73b Add strictArgumentEncodingCheck to BaseContract and use it in contract templates 2018-08-08 14:27:30 -07:00
Alex Browne
19cda0eb03 Merge pull request #947 from 0xProject/feature/confirm-before-publish
Add confirmation prompt before publishing
2018-08-08 14:23:52 -07:00
fragosti
cc67c0df51 Correct orderbook typo 2018-08-08 14:18:24 -07:00
fragosti
76b91cbcda Enforce that error code are ints not number 2018-08-08 14:16:59 -07:00
Alex Browne
13f0d27f7c Merge pull request #945 from 0xProject/fix/typescript-2.9.2
Update TypeScript to version 2.9.2
2018-08-08 14:12:18 -07:00
Alex Browne
5ccf41c566 fix(monorepo-scripts): Fix typo in git tag command 2018-08-08 14:01:57 -07:00
Alex Browne
797fd38e00 feat(monorepo-scripts): Add confirmation prompt before publishing 2018-08-08 14:01:12 -07:00
fragosti
9aacceb0e4 Remove tests directory, use swagger api, make json api compliant 2018-08-08 14:00:50 -07:00
Amir Bandeali
68fb1bf376 fix comments and styling for MixinSignatureValidator 2018-08-08 13:58:29 -07:00
Amir Bandeali
a6ccfaf9ca Merge pull request #925 from 0xProject/refactor/contracts/hashing
[contracts] Fix comments, styling and small optimization for hashOrder
2018-08-08 13:48:31 -07:00
fragosti
c9e1b7c5dc Change remainingFillableAmount to metaData 2018-08-08 11:57:16 -07:00
Alex Browne
6e2e658162 Update TypeScript to version 2.9.2 2018-08-08 11:27:38 -07:00
Amir Bandeali
149c07dfd2 Use asm for hashEIP712Message, increment free memory pointer after asm hashing functions 2018-08-08 11:15:38 -07:00
Fabio Berger
9f42ceb5a3 Split publish_utils since it was becoming too big and unwieldy 2018-08-08 09:47:06 -04:00
Fabio Berger
386b5bb122 Add back hashSpy 2018-08-08 09:33:20 -04:00
Fabio Berger
ca67e7d36f Remove console.log 2018-08-08 09:32:32 -04:00
Fabio Berger
d49af66add Add additional special-case acronym 2018-08-08 09:32:14 -04:00
fragosti
853b5aa38b Change some static side configs 2018-08-07 18:18:37 -07:00
fragosti
4e30bc3e16 Add POST order endpoint 2018-08-07 17:58:38 -07:00
fragosti
95b656f360 Add GET fee_recipients 2018-08-07 17:42:52 -07:00
fragosti
b0a7db81cb Add GET order_config 2018-08-07 16:52:34 -07:00
fragosti
e6c91493f2 token_pairs -> asset_pairs 2018-08-07 16:26:25 -07:00
fragosti
3771df728c Add GET OrderBook endpoint 2018-08-07 16:24:31 -07:00
fragosti
f6dbc23995 Add GET order endpoint spec 2018-08-07 16:10:59 -07:00
fragosti
f36a43a83f Add orders endpoint 2018-08-07 15:39:33 -07:00
fragosti
f4c2fabbf8 Minor refactoring 2018-08-07 15:03:52 -07:00
Amir Bandeali
3d6cf50364 Fix comments, styling, and optimize hashOrder 2018-08-07 14:34:28 -07:00
fragosti
0a616ad3b8 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/sra/add-sra-package 2018-08-07 13:52:53 -07:00
fragosti
57a4429123 Add discharge config and deploy 2018-08-07 13:50:56 -07:00
fragosti
3b542bf356 Add static site build 2018-08-07 13:36:59 -07:00
fragosti
be472b61e7 Add markdown section 2018-08-07 13:22:11 -07:00
Brandon Millman
8199e87943 Merge pull request #937 from 0xProject/feature/contract-wrappers/forwarder-estimation-utils
Add marketUtils object for assisting with market buy calculations
2018-08-06 16:36:32 -04:00
Brandon Millman
35201af4b1 Remove assertion comments 2018-08-06 16:35:49 -04:00
Fabio Berger
1a89905ab9 Remove hash spy for now 2018-08-06 15:39:21 -04:00
Fabio Berger
b2b3c24fd2 Remove console.log 2018-08-06 15:39:11 -04:00
Fabio Berger
bc5835229d Remove stray console log 2018-08-06 15:31:52 -04:00
Fabio Berger
6182d2c7f6 Pass in typeDefinitionByName so that type declarations also link to inner-types and show the popover 2018-08-06 15:28:21 -04:00
Fabio Berger
af90a777c6 Update types 2018-08-06 15:27:39 -04:00
Fabio Berger
fdcb42d8e1 Fix bug where we only rendered one TypeDoc JSON key per export, instead of all of them 2018-08-06 15:27:28 -04:00
Fabio Berger
4e6322beb5 Add missing type exports 2018-08-06 15:26:39 -04:00
Fabio Berger
6e122691d1 Fix bug related to react-scroll's scrollSpy and the render order of elements 2018-08-06 11:57:56 -04:00
Fabio Berger
ea5684e054 Remove unused imports 2018-08-06 11:01:12 -04:00
Fabio Berger
50bbd793c6 Fix key 2018-08-06 10:55:19 -04:00
Fabio Berger
a1a777e715 Add missing type 2018-08-06 10:49:17 -04:00
Fabio Berger
d234ee12de Update yarn.lock 2018-08-06 10:49:11 -04:00
Fabio Berger
50e0ddcf79 Update dep 2018-08-06 10:49:02 -04:00
Fabio Berger
da304de3fc Re-order deps 2018-08-06 10:48:45 -04:00
Fabio Berger
ff3c77f7c4 Remove stray console.lgos 2018-08-06 10:48:18 -04:00
Brandon Millman
0bc775cdb8 Remove 0x test case from hexSchema test 2018-08-05 21:02:10 -04:00
Brandon Millman
2273798df9 Update CHANGELOGs 2018-08-05 20:58:57 -04:00
Brandon Millman
7d0bec9b2a Add some test cases that stress slippageBufferAmount param 2018-08-05 20:54:29 -04:00
Brandon Millman
8382161f75 Add tests for findFeeOrdersThatCoverFeesForTargetOrders 2018-08-05 20:48:56 -04:00
Brandon Millman
bc5f8e52de Change orderStates param name to remaingFillableMakerAssetAmounts 2018-08-05 18:33:52 -04:00
Brandon Millman
09c0fc94fc Implement first round of tests for findOrdersThatCoverMakerAssetFillAmount 2018-08-05 18:33:52 -04:00
Brandon Millman
e5d65b585a Update hex schema to match 0x 2018-08-05 18:33:52 -04:00
Brandon Millman
d9933237a0 Move helper functions into order-utils 2018-08-05 18:33:52 -04:00
Brandon Millman
a016747c36 Add findFeeOrdersThatCoverFeesForTargetOrders to ForwarderWrapper 2018-08-05 18:33:52 -04:00
Brandon Millman
1c06380ef5 Add findOrdersThatCoverMakerAssetFillAmount static method on ForwarderWrapper 2018-08-05 18:33:52 -04:00
Brandon Millman
47fef1f8ff Merge pull request #936 from 0xProject/feature/contract-wrappers/forwader-optimizations
ForwarderWrapper order optimizations
2018-08-05 17:47:42 -04:00
Brandon Millman
3cb955c136 Move CreateOrderOpts into shared types 2018-08-05 17:15:58 -04:00
Brandon Millman
47673ba4bb Update createFactory to accept one createOrderOpts param to encompass all optional params 2018-08-05 16:54:35 -04:00
Fabio Berger
4527e9ce00 Remove prefix hack and add prefix for objectLiteral functions 2018-08-04 10:09:59 +02:00
Fabio Berger
7759e67a5a Rename EIP712Utils to eip712Utils since objectLiterals shouldn't start with caps 2018-08-04 10:09:08 +02:00
Brandon Millman
3865a081a0 Prettier 2018-08-03 16:46:55 -04:00
Fabio Berger
4d75689790 Fix commebt 2018-08-03 22:42:17 +02:00
Fabio Berger
6df8746871 Omit certain exports and re-org index.ts 2018-08-03 22:37:02 +02:00
Fabio Berger
c68e183953 Add missing sol-cov comments 2018-08-03 22:36:44 +02:00
Fabio Berger
f42119c928 Add missing compiler comments 2018-08-03 22:36:32 +02:00
Fabio Berger
30be039570 Add missing comments 2018-08-03 22:24:42 +02:00
Brandon Millman
d00ee5df0d Fix CHANGELOGs 2018-08-03 16:04:59 -04:00
Brandon Millman
4f381ca1d9 Update orderFactory interface 2018-08-03 16:04:47 -04:00
Fabio Berger
bcc1ad2086 Re-order index.ts and add missing types 2018-08-03 21:30:57 +02:00
Fabio Berger
343cd05363 Add missing comments 2018-08-03 21:27:01 +02:00
Fabio Berger
d9f09b5e1e Make rendering of individually exported functions lighter-weight 2018-08-03 19:45:09 +02:00
Fabio Berger
9337d207a1 Stop exporting constants from order-utils 2018-08-03 19:41:55 +02:00
Fabio Berger
c17d6c47c3 Properly render class/objectLiteral properties that are simple variables 2018-08-03 19:24:58 +02:00
Fabio Berger
a728247d6c Display camelCase names all-caps properly 2018-08-03 18:28:56 +02:00
Fabio Berger
36d615318d Omit several exports from order-utils docs 2018-08-03 17:52:09 +02:00
Fabio Berger
1588f4ac39 Stop exporting crypto 2018-08-03 17:51:58 +02:00
Fabio Berger
0e82be1bda Remove react-docs-example package and links to it 2018-08-03 17:18:18 +02:00
Fabio Berger
d85ce6ac75 Make signature_util into an object literal so related functions are rendered together in the docs 2018-08-03 17:15:14 +02:00
Fabio Berger
0d3d9dad84 Don't process functions beginning with underscores 2018-08-03 17:14:14 +02:00
Fabio Berger
b8c8258404 Don't render object literal properties that start with underscore since are private 2018-08-03 17:13:38 +02:00
Fabio Berger
3ee3fc2fb3 Add missing doc comments 2018-08-03 17:13:10 +02:00
Leonid Logvinov
bb4d15005a Add comments 2018-08-03 16:45:26 +02:00
Leonid Logvinov
477c3dc4f6 Add PR numbers 2018-08-03 16:28:00 +02:00
Leonid Logvinov
81f689e693 Add sol-cov CHANGELOG 2018-08-03 13:57:19 +02:00
Leonid Logvinov
e80fa6e311 Read truffle compiler config from truffle.js and assert that the passed solidity version matches the one in artifacts 2018-08-03 13:42:47 +02:00
Leonid Logvinov
c94168981c Use CallDataRPC in subprovider 2018-08-03 13:42:05 +02:00
Leonid Logvinov
749ec0cefe Add a TODO for failed transactions 2018-08-03 13:38:40 +02:00
Leonid Logvinov
bd488020df Export RPC data types from web3-wrapper 2018-08-03 13:36:16 +02:00
Leonid Logvinov
ab398751e1 Alow additional properties in txData json-schema 2018-08-03 13:34:40 +02:00
Leonid Logvinov
74d5f2f0b9 Export marshaller from web3-wrapper 2018-08-03 13:32:45 +02:00
Fabio Berger
10f6647ab3 Add missing types to web3-wrapper index.ts 2018-08-03 13:27:20 +02:00
Fabio Berger
406b7c33f5 Re-order subproviders index.ts and add missing types 2018-08-03 13:27:08 +02:00
Fabio Berger
13520dbd94 Add missing types to sol-cov index.ts 2018-08-03 13:02:29 +02:00
Fabio Berger
d136df7679 Color-code basic type arrays orange aswell 2018-08-03 13:02:14 +02:00
Fabio Berger
8c96a31152 Fix sol-compiler doc configs 2018-08-03 12:40:47 +02:00
Fabio Berger
d4bd4ec441 Add comments for types and unnest type declarations 2018-08-03 12:40:35 +02:00
Fabio Berger
e4aed98a3d Add missing type exports 2018-08-03 12:40:01 +02:00
Fabio Berger
4a2a22a43b Refactor logic for clarity 2018-08-03 11:44:50 +02:00
Fabio Berger
47584b18e9 Fix-up Order-utils doc page 2018-08-03 11:14:16 +02:00
Fabio Berger
6dd656bdfc Add OrderWatcher docs page 2018-08-03 11:14:01 +02:00
fragosti
260640feed Refactor using some utility methods 2018-08-02 20:19:50 -07:00
fragosti
36e7cb16aa Add errors and headers 2018-08-02 18:24:24 -07:00
fragosti
0390a5ecbf Limit error codes with ranges 2018-08-02 18:08:36 -07:00
Brandon Millman
82092ab50a Rename to calldata utils 2018-08-02 16:03:19 -07:00
Brandon Millman
c3e6be7956 Add missing PR numbers 2018-08-02 15:53:02 -07:00
fragosti
1ce6579c3a Create asset_pairs SRA endpoint (and establish conventions) 2018-08-02 15:25:40 -07:00
Fabio Berger
b5d98a2803 Fix link in 0x.js intro 2018-08-02 21:09:48 +02:00
Fabio Berger
c7a5b8c776 Add MD sections to contract-wrappers docs 2018-08-02 21:09:38 +02:00
Fabio Berger
90ead59d34 Add support for rendering nested IndexSignatures 2018-08-02 21:09:18 +02:00
Fabio Berger
faa980ffc3 Add ability to omit rendering specific exports and also support direct exports from index.ts 2018-08-02 21:08:21 +02:00
fragosti
afc5c2616a Enforce stronger naming convention for json schema ids 2018-08-02 11:57:23 -07:00
Fabio Berger
9a3b630b19 prettier 2018-08-02 17:27:29 +02:00
Fabio Berger
b3473ff89f Remove unused var 2018-08-02 17:27:10 +02:00
Fabio Berger
987971bd59 Fix bug where if there were multiple matches, it wouldn't always take the longest match 2018-08-02 17:26:53 +02:00
Fabio Berger
71a2f2d721 We need to always include the globals.d.ts otherwise TS complains about .json imports 2018-08-02 17:25:18 +02:00
Brandon Millman
6e74896620 CHANGELOG 2018-08-01 20:49:10 -07:00
Brandon Millman
30c6fe08ec Add tests 2018-08-01 20:47:59 -07:00
Brandon Millman
7c864b81e0 Add createOrder with no signing to orderFactory 2018-08-01 20:47:59 -07:00
Brandon Millman
4f006fdc5c Create marketBuyOrdersOptimizations 2018-08-01 20:23:44 -07:00
Brandon Millman
9f7f61085c Update contract-wrappers CHANGELOG.json 2018-08-01 15:29:47 -07:00
Brandon Millman
2414b47a30 Merge pull request #934 from 0xProject/feature/contract-wrappers/forwader
Initial forwarder contract wrapper
2018-08-01 15:26:45 -07:00
Fabio Berger
238eef6bae Fix connect docs 2018-08-02 00:01:23 +02:00
Fabio Berger
b92b745ab7 Don't ignore compiler errors 2018-08-02 00:01:16 +02:00
Fabio Berger
0132286cab Add contract-wrappers page and make topBar component more concise 2018-08-02 00:01:02 +02:00
fragosti
f8a252d142 All schema tests padding 2018-08-01 13:55:16 -07:00
fragosti
962d6e71b6 update orders channel subscribe schema 2018-08-01 13:52:40 -07:00
fragosti
48aaf22855 Update order book schema test 2018-08-01 13:34:10 -07:00
fragosti
8351f5998a Add relayerApiOrdersResponseTest 2018-08-01 13:27:01 -07:00
Fabio Berger
2494af99aa Prefix menu and sections with markdown as that is all the should now be defined 2018-08-01 21:00:45 +02:00
Fabio Berger
e5b93d1f02 Add callpath to properties 2018-08-01 20:48:19 +02:00
fragosti
86eafeb826 Add tests for asset pair endpoint 2018-08-01 11:44:59 -07:00
Fabio Berger
32e1c2ac97 Add padding above anchor titles so they show up nice when scrolled to 2018-08-01 19:02:20 +02:00
Fabio Berger
5e3bbbbb3c Use our fork of react-scroll that fixes scrolling within an absolutely positioned div to work correctly. See: https://github.com/fisshy/react-scroll/pull/330 2018-08-01 18:56:31 +02:00
Fabio Berger
3bdf6004ca Start refactoring docs to remove unnecessary configs given more concise TypeDoc JSON 2018-08-01 17:36:37 +02:00
Fabio Berger
11869122b4 Update React-scroll, getting rid of the need to manually set the url hash 2018-08-01 17:33:28 +02:00
Fabio Berger
9b24459108 Add /src/artifacts in order-utils to gitignore 2018-08-01 17:29:24 +02:00
Fabio Berger
c5fbc5c991 Also add artifacts to src 2018-08-01 17:28:48 +02:00
Fabio Berger
0413e3e77f Change order of index.ts since it not dictates to ordering of the docs 2018-08-01 17:27:33 +02:00
Fabio Berger
92fda0a940 Remove unused dep so that it's not re-compiled onWatcher 2018-08-01 17:27:10 +02:00
fragosti
63e088730a Group all standard relayer api tests together 2018-07-31 17:46:57 -07:00
fragosti
a78d35f84e Add test for relayerApiOrderSchema 2018-07-31 17:22:26 -07:00
fragosti
63e869f6d0 Add paginated collection test case 2018-07-31 17:04:22 -07:00
fragosti
4aff9515d8 Get schema tests running (not crashiing) 2018-07-31 16:37:51 -07:00
Leonid Logvinov
6f0daa5463 Add the CHANGELOG entry for #909 2018-07-31 15:28:17 +02:00
Leonid Logvinov
a658aaaf30 Merge pull request #909 from joincivil/ritave/resolver-check-dirs
Fixed the relative resolver not checking if the file can be read in the
2018-07-31 14:49:50 +02:00
Leonid Logvinov
37590d5f5e Merge branch 'development' into ritave/resolver-check-dirs 2018-07-31 14:47:51 +02:00
Brandon Millman
ca1f926d6d Clarify ethAmount is in wei 2018-07-31 00:26:53 -07:00
Brandon Millman
5d44a67e62 Update forwarder_wrapper_test 2018-07-31 00:11:29 -07:00
Brandon Millman
8ed3d59f96 Add more assertions 2018-07-31 00:11:29 -07:00
Brandon Millman
bc93ff0cb5 Write initial test for forwarder_wrapper 2018-07-31 00:11:29 -07:00
Brandon Millman
44498f2263 Fix spelling error in exchange wrapper tests 2018-07-31 00:11:29 -07:00
Brandon Millman
045751a430 Add getOrdersInfo to exchange_wrapper 2018-07-31 00:11:28 -07:00
fragosti
162fe797fc Update schemas export 2018-07-30 17:53:01 -07:00
fragosti
e671563f1e Update json-schemas for SRA v1 2018-07-30 17:16:14 -07:00
Brandon Millman
a7238d0fdb Implement initial forwarder wrapper 2018-07-30 13:58:19 -07:00
Fabio Berger
2a899f5295 Move to dep 2018-07-30 22:42:22 +02:00
Fabio Berger
b7cd84fad6 Remove outdated parts of Dockerfile 2018-07-30 22:42:05 +02:00
Fabio Berger
36b6da7c4f Fix github dep to point to branch 2018-07-30 22:41:51 +02:00
Brandon Millman
02eb575813 Merge pull request #931 from 0xProject/feature/website/meta-tags
Add MetaTags component for easily adding customizable meta tags for a new page
2018-07-30 13:28:09 -07:00
Brandon Millman
ca8a6665ba Add back tags in html 2018-07-30 13:27:27 -07:00
Fabio Berger
ba00cd916a Remove console 2018-07-30 21:09:56 +02:00
Fabio Berger
b4f916d214 Standardize child naming 2018-07-30 21:09:17 +02:00
Fabio Berger
79faf7d3cb Update yarn.lock 2018-07-30 15:40:20 +02:00
Fabio Berger
79b1b6c8e0 Fix bugs in doc gen 2018-07-30 15:40:10 +02:00
Brandon Millman
2ecf7a3349 Fix jobs page overflow issue 2018-07-30 00:58:30 -07:00
Brandon Millman
5283dcce2e Create MetaTags component 2018-07-30 00:48:39 -07:00
Fabio Berger
b56fc697c4 Move logic to publishUtils so can use as command-line and script import 2018-07-29 23:55:28 +02:00
Fabio Berger
b7ff1fe5d3 Move type 2018-07-29 23:34:49 +02:00
Fabio Berger
1b24064c9f Move publish_release_notes to own script and other publish cleanup 2018-07-29 23:34:42 +02:00
Fabio Berger
bb9237b0f4 Make monorepo-scripts a private package now that no other package depends on it 2018-07-29 23:01:21 +02:00
Fabio Berger
fe2787fcc1 Add back the 'clean' command 2018-07-29 23:00:44 +02:00
Fabio Berger
11778db05a Remove no longer necessary include 2018-07-29 23:00:33 +02:00
Fabio Berger
454af2bda3 Fix package.json 2018-07-29 22:49:34 +02:00
Fabio Berger
9f7479711e Improve doc gen script 2018-07-29 22:29:56 +02:00
Fabio Berger
4579e1637d Add missing exports discovered by generating compact typedoc JSON 2018-07-29 21:59:09 +02:00
Fabio Berger
f4a2e227e1 Remove all in-package monorepo-scripts by adding doc gen/upload and aggregate release note publishing to publish script 2018-07-29 21:58:39 +02:00
Francesco Agosti
48e538f5c7 Merge pull request #910 from 0xProject/feature/website/upgrade-allowance-toggles-to-locks-and-checks
[website] Use new designs with tooltips for allowance toggles
2018-07-27 12:02:29 -07:00
fragosti
c851c37630 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into feature/website/upgrade-allowance-toggles-to-locks-and-checks 2018-07-27 11:51:30 -07:00
fragosti
a0d7b1efa5 Remove unused variable 2018-07-27 11:49:06 -07:00
fragosti
1a06e6b305 Add loading state for initial load and other PR feedback 2018-07-27 11:48:04 -07:00
fragosti
43d7045a5b Add scripts 2018-07-27 10:19:20 -07:00
Olaf Tomalka
9199a56b7a Added fix to CHANGELOG 2018-07-27 15:20:24 +02:00
Fabio Berger
44d1be27e6 Add note about needing Yarn 1.6 to README 2018-07-27 12:22:43 +02:00
Alex Browne
554d5f97df Add combinatorial tests for internal Exchange functions (#807)
* WIP add combinatorial tests for internal Exchange functions

* Change combinitorial testing strategy based on feedback

* Check value of filled[orderHash] in updateFilledState tests

* Add combinatorial tests for addFillResults

* Add combinatorial tests for getPartialAmount

* Implement generic `testWithReferenceFuncAsync`

* Implement generic `testCombinatoriallyWithReferenceFuncAsync`

* Add combinatorial tests for isRoundingError

* Add combinatorial tests for calculateFillResults

* Add support for Geth in internal contract tests

* Fix contract artifacts

* Change DECIMAL_PLACES to 78 and add a note.

* Document new functions in utils

* Optimize tests by only reseting state when needed

* Rename/move some files

* Print parameter names on failure in testWithReferenceFuncAsync

* Add to changelog for utils package

* Appease various linters

* Rename some more things related to FillOrderCombinatorialUtils

* Remove .only from test/exchange/internal.ts

* Remove old test for isRoundingError and getPartialAmount

* Appease linters again

* Remove old todos

* Fix typos, add comments, rename some things

* Re-add some LibMath tests

* Update contract internal tests to use new SafeMath revert reasons

* Apply PR feedback from Amir

* Apply PR feedback from Remco

* Re-add networks to ZRXToken artifact

* Remove duplicate Whitelist in compiler.json
2018-07-26 22:09:55 -07:00
fragosti
78a4b9897c Add to README 2018-07-26 16:58:27 -07:00
fragosti
c1fcbe3f04 Create API development environment and json distribution 2018-07-26 16:49:43 -07:00
fragosti
efa67d87aa Rename to sra-api 2018-07-26 14:52:23 -07:00
fragosti
4fe410a277 Add typescript typings for Open API spec 2018-07-26 14:47:02 -07:00
fragosti
3235606644 Reset CHANGELOG 2018-07-26 14:32:22 -07:00
fragosti
260976914d Add basic smoke test 2018-07-26 14:30:24 -07:00
fragosti
3ca4b7e7a7 Initial commit 2018-07-26 13:24:34 -07:00
Fabio Berger
95c627f581 Publish
- 0x.js@1.0.1-rc.2
 - @0xproject/abi-gen@1.0.4
 - @0xproject/assert@1.0.4
 - @0xproject/base-contract@1.0.4
 - @0xproject/connect@1.0.4
 - @0xproject/contract-wrappers@1.0.1-rc.2
 - contracts@2.1.39
 - @0xproject/dev-utils@1.0.3
 - @0xproject/fill-scenarios@1.0.1-rc.2
 - @0xproject/json-schemas@1.0.1-rc.3
 - @0xproject/metacoin@0.0.14
 - @0xproject/migrations@1.0.3
 - @0xproject/order-utils@1.0.1-rc.2
 - @0xproject/order-watcher@1.0.1-rc.2
 - @0xproject/react-docs@1.0.4
 - @0xproject/react-docs-example@0.0.19
 - @0xproject/react-shared@1.0.5
 - @0xproject/sol-compiler@1.0.4
 - @0xproject/sol-cov@1.0.3
 - @0xproject/sol-resolver@1.0.4
 - @0xproject/sra-report@1.0.4
 - @0xproject/subproviders@1.0.4
 - @0xproject/testnet-faucets@1.0.40
 - @0xproject/types@1.0.1-rc.3
 - @0xproject/utils@1.0.4
 - @0xproject/web3-wrapper@1.1.2
 - @0xproject/website@0.0.43
2018-07-26 17:42:30 +02:00
Fabio Berger
512dbb448b Updated CHANGELOGS 2018-07-26 17:42:22 +02:00
Fabio Berger
b793c1cc73 Update yarn.lock 2018-07-26 17:20:48 +02:00
Fabio Berger
aea048ecc7 Point to actual current version 2018-07-26 17:19:26 +02:00
Fabio Berger
d0e6413fcf Add changelog entries for other RCs that did publish 2018-07-26 17:12:17 +02:00
Fabio Berger
3b7ad1688b Fix changelogs and package versions for ones that weren't published 2018-07-26 17:10:59 +02:00
Fabio Berger
e907b99314 Fix circle.yml 2018-07-26 16:57:08 +02:00
Fabio Berger
973bcb0483 Publish
- 0x.js@1.0.1-rc.2
 - @0xproject/abi-gen@1.0.3
 - @0xproject/assert@1.0.3
 - @0xproject/base-contract@1.0.3
 - @0xproject/connect@1.0.3
 - @0xproject/contract-wrappers@1.0.1-rc.2
 - contracts@2.1.38
 - @0xproject/dev-utils@1.0.3
 - ethereum-types@1.0.3
 - @0xproject/fill-scenarios@1.0.1-rc.2
 - @0xproject/json-schemas@1.0.1-rc.2
 - @0xproject/metacoin@0.0.13
 - @0xproject/migrations@1.0.3
 - @0xproject/monorepo-scripts@1.0.4
 - @0xproject/order-utils@1.0.1-rc.2
 - @0xproject/order-watcher@1.0.1-rc.2
 - @0xproject/react-docs@1.0.3
 - @0xproject/react-docs-example@0.0.18
 - @0xproject/react-shared@1.0.4
 - @0xproject/sol-compiler@1.0.3
 - @0xproject/sol-cov@1.0.3
 - @0xproject/sol-resolver@1.0.3
 - @0xproject/sra-report@1.0.3
 - @0xproject/subproviders@1.0.3
 - @0xproject/testnet-faucets@1.0.39
 - @0xproject/tslint-config@1.0.4
 - @0xproject/types@1.0.1-rc.2
 - @0xproject/typescript-typings@1.0.3
 - @0xproject/utils@1.0.3
 - @0xproject/web3-wrapper@1.1.1
 - @0xproject/website@0.0.42
2018-07-26 16:27:08 +02:00
Fabio Berger
87fb9a76ce Updated CHANGELOGS 2018-07-26 16:26:57 +02:00
Fabio Berger
0187e0c47d Still test unrunnable packages for compilation issues 2018-07-26 16:20:20 +02:00
Fabio Berger
8732d8ece8 Add changelog entries for next RC publish 2018-07-26 16:02:49 +02:00
Fabio Berger
2e7c130f62 Expose lerna dep 2018-07-26 16:00:46 +02:00
Fabio Berger
a90f434df5 Split running packages that cannot be run in a node.js script 2018-07-26 15:58:35 +02:00
Fabio Berger
3b005ad47c Fix accidental import from test folder 2018-07-26 15:34:00 +02:00
Fabio Berger
735bc2f178 Re-enable deleted the dir after test runs 2018-07-26 15:32:53 +02:00
Fabio Berger
e3cfa6363d Change test:installation so it also causes run-time errors to appear 2018-07-26 15:32:30 +02:00
Fabio Berger
331b1cb9a0 Fix lint issue 2018-07-26 15:27:50 +02:00
Fabio Berger
55dbb0ece0 Always append monorepo root path so script can be called from anywhere 2018-07-26 14:42:07 +02:00
Fabio Berger
af4071e119 Delete any remenants of test-env dir before creating a new one 2018-07-26 14:23:45 +02:00
Fabio Berger
9947e643d0 Print version that will be tested 2018-07-26 14:23:07 +02:00
Fabio Berger
d3be4f2852 Add ending slash 2018-07-26 14:22:51 +02:00
Fabio Berger
e320f343f8 Add support for testing installations post-publish as well 2018-07-26 14:14:14 +02:00
Fabio Berger
f6cc7d9c3c Fix asset path 2018-07-26 14:04:47 +02:00
Fabio Berger
b756f76b0e Publish
- 0x.js@1.0.1-rc.1
 - @0xproject/abi-gen@1.0.2
 - @0xproject/assert@1.0.2
 - @0xproject/base-contract@1.0.2
 - @0xproject/connect@1.0.2
 - @0xproject/contract-wrappers@1.0.1-rc.1
 - contracts@2.1.37
 - @0xproject/dev-utils@1.0.2
 - ethereum-types@1.0.2
 - @0xproject/fill-scenarios@1.0.1-rc.1
 - @0xproject/json-schemas@1.0.1-rc.1
 - @0xproject/metacoin@0.0.12
 - @0xproject/migrations@1.0.2
 - @0xproject/monorepo-scripts@1.0.3
 - @0xproject/order-utils@1.0.1-rc.1
 - @0xproject/order-watcher@1.0.1-rc.1
 - @0xproject/react-docs@1.0.2
 - @0xproject/react-docs-example@0.0.17
 - @0xproject/react-shared@1.0.3
 - @0xproject/sol-compiler@1.0.2
 - @0xproject/sol-cov@1.0.2
 - @0xproject/sol-resolver@1.0.2
 - @0xproject/sra-report@1.0.2
 - @0xproject/subproviders@1.0.2
 - @0xproject/testnet-faucets@1.0.38
 - @0xproject/tslint-config@1.0.3
 - @0xproject/types@1.0.1-rc.1
 - @0xproject/typescript-typings@1.0.2
 - @0xproject/utils@1.0.2
 - @0xproject/web3-wrapper@1.1.0
 - @0xproject/website@0.0.41
2018-07-26 13:53:36 +02:00
Fabio Berger
034948065d Updated CHANGELOGS 2018-07-26 13:53:27 +02:00
Fabio Berger
0c2df7e589 Fix linter 2018-07-26 13:40:37 +02:00
Fabio Berger
2ae6a71ca3 Revert to using execAsync 2018-07-26 13:27:21 +02:00
Fabio Berger
206fd0f78e update yarn.lock 2018-07-26 13:20:35 +02:00
Fabio Berger
b84225ac70 Revert to publishing ethereum-types 2018-07-26 13:05:36 +02:00
Fabio Berger
5ebcea53d6 Fix marshaller import 2018-07-26 12:59:48 +02:00
Fabio Berger
a491e01144 Update yarn.lock 2018-07-26 12:52:25 +02:00
Fabio Berger
1236efc008 Temporarily have all packages depend on an older, published version of ethereum-types since we cannot publish a new one 2018-07-26 12:50:15 +02:00
Fabio Berger
e63bbdeb87 Temporarily make ethereum-types private to exclude from publishing 2018-07-26 12:40:31 +02:00
Fabio Berger
084ccb62a6 Add order-watcher artifacts to gitignore 2018-07-26 12:35:22 +02:00
Fabio Berger
015469885d Fix changelogs 2018-07-26 12:34:41 +02:00
Fabio Berger
061f223269 Remove artifacts for git 2018-07-26 12:15:01 +02:00
Fabio Berger
88ee35d5f9 Call 'lerna publish' with spawn so we see stderr and stdout in real-time 2018-07-26 12:14:13 +02:00
Francesco Agosti
6c5b33ec71 Merge pull request #902 from 0xProject/feature/web3-wrapper/unexport-marshaller
Stop exporting marshaller from web3-wrapper
2018-07-25 16:32:04 -07:00
Brandon Millman
31b8dd1bfc Remove careers page feature flag 2018-07-26 06:55:06 +08:00
Brandon Millman
35113487f1 Merge pull request #893 from 0xProject/feature/website/jobs-page-part2
Jobs page
2018-07-25 15:31:54 -07:00
Brandon Millman
9ce8e10115 Header copy change 2018-07-26 06:28:17 +08:00
Brandon Millman
d07d059eda Margin polish 2018-07-26 06:00:35 +08:00
Fabio Berger
d836b0f815 Also skip prompt when publishing for real 2018-07-25 22:34:50 +02:00
Fabio Berger
1b1733ce7c Merge pull request #911 from 0xProject/fix-v2-beta-migration
Update/Fix V2-beta-testnet migration & Use it in all RC packages
2018-07-25 22:21:32 +02:00
Fabio Berger
5fd64a969b Add order-watcher artifacts to prettierignore 2018-07-25 22:04:12 +02:00
Fabio Berger
9a762e584c Add contract-wrappers artifacts to prettierignore 2018-07-25 21:51:36 +02:00
Fabio Berger
7fc0fd9fb6 Prettier fixes 2018-07-25 21:36:56 +02:00
fragosti
da4b70fcae Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/web3-wrapper/unexport-marshaller 2018-07-25 10:33:13 -07:00
Fabio Berger
a0db69ee05 Missing artifact 2018-07-25 19:10:36 +02:00
Fabio Berger
2c62504b79 Replace hard-coded compact_artifacts with migrations artifacts 2018-07-25 18:47:40 +02:00
Fabio Berger
67303106dc Update order-utils to use 2.0.0-beta-testnet artifacts 2018-07-25 18:28:09 +02:00
Fabio Berger
600d574042 Remove artifacts which should no longer be commited 2018-07-25 18:18:28 +02:00
Fabio Berger
07d4f21807 Add artifacts to gitignore 2018-07-25 18:16:09 +02:00
Fabio Berger
4da12067b9 New WETH9 artifacts 2018-07-25 18:12:28 +02:00
Fabio Berger
24ab24879c Modify WETH9 event arg names to be identical to ERC20 standard suggested names 2018-07-25 18:10:10 +02:00
Fabio Berger
dc51741b83 Update artifacts in contract-wrappers, generate artifacts and improve README 2018-07-25 18:07:12 +02:00
Fabio Berger
dd979dbf6d Update the kovan addresses in artifacts 2018-07-25 14:58:04 +02:00
Fabio Berger
0cfea5613a Improve the README instructions for migrations 2018-07-25 14:57:38 +02:00
Fabio Berger
98dd3ecab7 Use infura 2018-07-25 14:49:33 +02:00
Fabio Berger
fe05e0bac3 Fix typo 2018-07-25 14:48:28 +02:00
Fabio Berger
d3f9b72c84 Update v2-beta-testnet migration 2018-07-25 13:12:26 +02:00
Fabio Berger
05b35c0fdc Merge pull request #908 from 0xProject/publish-fixes-rc
Publish Flow Fixes For RC releases
2018-07-25 12:33:08 +02:00
Fabio Berger
36b61650b3 Update yarn.lock to not use local npm registry 2018-07-25 12:13:45 +02:00
Brandon Millman
c37b6f0eeb Update open positions section 2018-07-25 18:08:05 +08:00
Fabio Berger
28114c3b5a Remove unused import 2018-07-25 12:04:45 +02:00
Fabio Berger
2617df4ec7 Update artifact 2018-07-25 12:04:00 +02:00
Fabio Berger
0d28c48eb9 update yarn.lock 2018-07-25 12:02:16 +02:00
Fabio Berger
c6a6a54cce Fix dep collision 2018-07-25 12:02:10 +02:00
Fabio Berger
e5aa03da64 merge v2-prototype 2018-07-25 11:59:29 +02:00
Fabio Berger
47c0195b07 Leave react-dom type version also unspecified 2018-07-25 11:57:17 +02:00
Fabio Berger
f13d43dbf5 Remove unused typwe 2018-07-25 11:54:51 +02:00
Fabio Berger
f9e99a27d3 Remove force publish 2018-07-25 11:51:06 +02:00
Brandon Millman
854b8fad22 Update benefits section 2018-07-25 17:48:12 +08:00
Fabio Berger
91c7105d43 Revert "Temporarily add changelog & package.json version changes"
This reverts commit 97268d2253.
2018-07-25 11:48:01 +02:00
Fabio Berger
c1e3533287 Add back build step 2018-07-25 11:47:52 +02:00
Brandon Millman
bb7c308081 Update mission section 2018-07-25 15:35:26 +08:00
Brandon Millman
fcbaf2f4e3 Header copy updates 2018-07-25 14:41:26 +08:00
Brandon Millman
109c5df973 Use isMobileWidth util 2018-07-25 14:24:00 +08:00
Brandon Millman
b0fab3ea4a Use our image component in mission 2018-07-25 14:21:39 +08:00
fragosti
490fed6228 Make a non-jank Spinner component and use it 2018-07-24 19:09:02 -07:00
fragosti
9c81692d48 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/upgrade-allowance-toggles-to-locks-and-checks 2018-07-24 16:02:21 -07:00
fragosti
c505ba6f3e Center allowance toggles in account page 2018-07-24 15:58:33 -07:00
fragosti
ee71f57453 Increase allowance toggle loading spinner size by 1 2018-07-24 15:51:07 -07:00
Olaf Tomalka
f133aebfaf Fixed the relative resolver not checking if the file can be read in the
first place
2018-07-25 00:37:48 +02:00
fragosti
88556d31e2 Add unlocking and locking token copy 2018-07-24 15:32:12 -07:00
fragosti
c0d75c6476 Hide tooltip after allowance toggle click 2018-07-24 15:19:06 -07:00
fragosti
5b6cf447e5 Make tooltip appear to the left of the toggle when onboarding in progress 2018-07-24 15:11:46 -07:00
fragosti
3890f8224d Fix tooltip wrapping issue in onboardin 2018-07-24 14:44:31 -07:00
fragosti
b9f5c93830 Fix wrap button alignment issue 2018-07-24 14:19:19 -07:00
Leonid Logvinov
c40b3dea6c Specify registry url only if local publish attempted 2018-07-24 21:57:47 +02:00
Leonid Logvinov
dbc798596b Replace dry mode with local publishing mode 2018-07-24 21:57:47 +02:00
Amir Bandeali
fac90c446c Update orderEpoch comments 2018-07-24 10:46:08 -07:00
Fabio Berger
c5859b65a3 Install our fork of lerna and use it 2018-07-24 19:35:13 +02:00
Francesco Agosti
14bb697924 Merge pull request #891 from 0xProject/bug/website/wiki-page-topbar
Make topbar zIndex 1
2018-07-24 10:22:18 -07:00
Fabio Berger
dbd815c1e0 Merge pull request #905 from 0xProject/fix-rc-packages
Fix Published Packages Type Issues
2018-07-24 18:45:10 +02:00
Fabio Berger
9592a9a821 Omit specific version of react types 2018-07-24 17:15:25 +02:00
Fabio Berger
dd9f020c9b Correct next version 2018-07-24 17:15:18 +02:00
Fabio Berger
56f21f4bab Merge v2-prototype 2018-07-24 17:13:21 +02:00
Fabio Berger
91bc1b468b Omit specific version of react types 2018-07-24 16:44:40 +02:00
Fabio Berger
97268d2253 Temporarily add changelog & package.json version changes 2018-07-24 16:33:16 +02:00
Fabio Berger
14b3c50b69 Fix lerna verson 2018-07-24 16:29:55 +02:00
Fabio Berger
333bf9de05 Correct next version 2018-07-24 16:29:37 +02:00
Fabio Berger
16a38c687e Merge fix-rc-packages 2018-07-24 16:20:25 +02:00
Leonid Logvinov
24aa5cd1bf Make the test:installation work with the local npm registry 2018-07-24 16:08:17 +02:00
Leonid Logvinov
f699da90ba Pretend we defined types for @lerna/batch-packages 2018-07-24 16:07:32 +02:00
Leonid Logvinov
d1e33a3dff Add utils.getTopologicallySortedPackages 2018-07-24 16:07:11 +02:00
Leonid Logvinov
f50ac932d6 Introduce PackageJson file 2018-07-24 16:06:51 +02:00
Leonid Logvinov
cab32d7593 Add .npmrc to gitignore 2018-07-24 16:05:25 +02:00
Leonid Logvinov
2073aa9abc Test installation on latest version, not the packed one 2018-07-24 15:19:57 +02:00
Leonid Logvinov
0386025395 Temp: Force publish 2018-07-24 15:19:36 +02:00
Leonid Logvinov
0772403ea9 Fix(lerna): Change lerna version 2018-07-24 15:18:46 +02:00
Fabio Berger
8acfc9a2f9 improve logs 2018-07-24 13:43:27 +02:00
Fabio Berger
de087abc8d remove legacy prepublishOnly 2018-07-24 13:32:39 +02:00
Fabio Berger
98b2875512 Add --yes flag 2018-07-24 13:28:02 +02:00
Fabio Berger
e9e73aa0a3 Add node 2018-07-24 13:21:28 +02:00
Fabio Berger
d280311734 Use relative path to lerna executable 2018-07-24 13:19:31 +02:00
Fabio Berger
789762617f Upgrade to new lerna 2018-07-24 13:05:18 +02:00
Fabio Berger
6f38d1bee5 Add missing 'publish' 2018-07-24 12:46:40 +02:00
Fabio Berger
73d75bc405 Fix publish command 2018-07-24 12:44:38 +02:00
Fabio Berger
91dcfd5ee8 Use cdVersions flag instead of interactive prompt 2018-07-24 12:39:41 +02:00
Fabio Berger
5fe0e9f2e7 Temporarily use local lerna 2018-07-24 12:36:53 +02:00
Brandon Millman
51fb6e6a23 Always go to open positions when clicking CTA 2018-07-24 14:06:53 +08:00
Brandon Millman
9392d5c84f Fix hiding of dots on small screens 2018-07-24 13:51:37 +08:00
Brandon Millman
e49d136b99 Merge branch 'v2-prototype' into feature/website/jobs-page-part2
* v2-prototype: (38 commits)
  Revert "Publish"
  Publish
  Remove ERC721 callback functions
  Use != instead of > in loops, add sanity checks to market fill functions
  Add more tests and fixes
  Remove MConstants and MixinConstants for LibConstants
  Remove redundant external call by reimplementing fillOrderNoThrow
  Remove orders length check
  Add assertValidFillResults
  Update web3Wrapper CHANGELOG
  Get actual gasPrice from transaction instead of setting default
  Store orders length in varible before looping over orders
  Use transferFrom instead of safeTransferFrom
  Fix minimal tests
  Fix rounding error issues, use different logic when makerAsset is ZRX
  Rename marketSellEth => marketSellWeth
  Update percentage constants
  Update transferEthFeeAndRefund, add check to ERC721 transfer
  Refactor forwarding contract architecture, remove batch functions
  Updated CHANGELOGS
  ...
2018-07-24 13:43:26 +08:00
Fabio Berger
d50174b89e Add ignore flag 2018-07-23 21:33:03 +02:00
Fabio Berger
1d9a77027e Use include 2018-07-23 21:23:09 +02:00
Fabio Berger
b4cd8897b2 Dedup versionPrompt being triggered multiple times 2018-07-23 21:20:09 +02:00
Fabio Berger
df341717f7 Remove regex 2018-07-23 21:14:51 +02:00
Fabio Berger
68974313e1 Make regex less strict 2018-07-23 21:12:47 +02:00
Fabio Berger
39a06e1d3b Add timeout before writing to stdin 2018-07-23 21:10:44 +02:00
Fabio Berger
bfe57b84d6 Use string equals and remove returns 2018-07-23 20:59:41 +02:00
Fabio Berger
dae975b08c Add in print statements 2018-07-23 20:51:25 +02:00
Fabio Berger
27d44e3021 Add missing vars 2018-07-23 20:46:10 +02:00
Fabio Berger
df00d93b9c Also add private package new versions to packageToNextVersion 2018-07-23 20:44:47 +02:00
Fabio Berger
15bbbb3762 Make sure private packages have a next version 2018-07-23 20:36:03 +02:00
Fabio Berger
c9ee526d8b more bogus 2018-07-23 20:30:51 +02:00
Fabio Berger
b110d95de1 testing 2018-07-23 20:29:14 +02:00
Fabio Berger
76eab5d3ec Fix publish to give lerna actual version rather then the semver diff 2018-07-23 20:21:49 +02:00
Fabio Berger
4a2715e61f Update lerna.json 2018-07-23 20:19:04 +02:00
Fabio Berger
7fbcc3999f Changed artifacts 2018-07-23 20:16:16 +02:00
Fabio Berger
e873b8948f And also temporarily remove rebuilding from publish flow 2018-07-23 20:15:35 +02:00
Fabio Berger
c8108a1db2 Temporarily uncommented parts of publish flow 2018-07-23 20:12:18 +02:00
Fabio Berger
195c3af84e Fix lerna publish to include publishing prerelease versions 2018-07-23 19:56:53 +02:00
Fabio Berger
39724292e3 Omit building website before publish 2018-07-23 19:28:27 +02:00
Fabio Berger
24b5aa0e82 Add new RC versions to changelog so that these packages are publised as RC's 2018-07-23 19:18:09 +02:00
Fabio Berger
3af2ef8439 Revert "Revert "Publish""
This reverts commit a66ccaa1da.
2018-07-23 19:11:48 +02:00
Fabio Berger
e2d027e252 Add skip-git for testing 2018-07-23 19:09:35 +02:00
Fabio Berger
bddcebfbb1 Allow registry to be configured in lerna.json 2018-07-23 19:09:24 +02:00
Amir Bandeali
a05b14e4d9 Merge pull request #847 from 0xProject/refactor/contracts/simplify-forwarder
Refactor forwarding contract architecture, remove batch functions
2018-07-23 10:50:39 -05:00
Fabio Berger
9a36e73f4e Move solidity-parser-antlr type to dependencies since it's used as part of the packages public interface 2018-07-23 17:35:16 +02:00
Leonid Logvinov
a66ccaa1da Revert "Publish"
This reverts commit 3dc94051713e4a32796ce3b4ae4b70b527e24cfe.
2018-07-23 17:13:44 +02:00
Leonid Logvinov
f05a563802 Publish
- 0x.js@1.0.0
 - @0xproject/abi-gen@1.0.1
 - @0xproject/assert@1.0.1
 - @0xproject/base-contract@1.0.1
 - @0xproject/connect@1.0.1
 - @0xproject/contract-wrappers@1.0.0
 - contracts@2.1.36
 - @0xproject/dev-utils@1.0.1
 - ethereum-types@1.0.1
 - @0xproject/fill-scenarios@1.0.0
 - @0xproject/json-schemas@1.0.0
 - @0xproject/metacoin@0.0.11
 - @0xproject/migrations@1.0.1
 - @0xproject/monorepo-scripts@1.0.1
 - @0xproject/order-utils@1.0.0
 - @0xproject/order-watcher@1.0.0
 - @0xproject/react-docs@1.0.1
 - @0xproject/react-docs-example@0.0.16
 - @0xproject/react-shared@1.0.1
 - @0xproject/sol-compiler@1.0.1
 - @0xproject/sol-cov@1.0.1
 - @0xproject/sol-resolver@1.0.1
 - @0xproject/sra-report@1.0.1
 - @0xproject/subproviders@1.0.1
 - @0xproject/testnet-faucets@1.0.37
 - @0xproject/tslint-config@1.0.1
 - @0xproject/types@1.0.0
 - @0xproject/typescript-typings@1.0.1
 - @0xproject/utils@1.0.1
 - @0xproject/web3-wrapper@1.0.1
 - @0xproject/website@0.0.40
2018-07-23 17:13:44 +02:00
Amir Bandeali
06396b8874 Remove ERC721 callback functions 2018-07-23 10:02:51 -05:00
Amir Bandeali
e5e68de2d7 Use != instead of > in loops, add sanity checks to market fill functions 2018-07-23 10:02:51 -05:00
Amir Bandeali
dcc0908617 Add more tests and fixes 2018-07-23 10:02:51 -05:00
Amir Bandeali
45d68285f1 Remove MConstants and MixinConstants for LibConstants 2018-07-23 10:02:51 -05:00
Amir Bandeali
e20f3a0f97 Remove redundant external call by reimplementing fillOrderNoThrow 2018-07-23 10:02:51 -05:00
Amir Bandeali
c5029e61e3 Remove orders length check 2018-07-23 10:02:51 -05:00
Amir Bandeali
e90ed01105 Add assertValidFillResults 2018-07-23 10:02:51 -05:00
Amir Bandeali
d8099d53fe Update web3Wrapper CHANGELOG 2018-07-23 10:02:51 -05:00
Amir Bandeali
0a976a3fb8 Get actual gasPrice from transaction instead of setting default 2018-07-23 10:00:23 -05:00
Amir Bandeali
4636d5fbc2 Store orders length in varible before looping over orders 2018-07-23 10:00:23 -05:00
Amir Bandeali
3506ec1caa Use transferFrom instead of safeTransferFrom 2018-07-23 10:00:23 -05:00
Amir Bandeali
1f0e819756 Fix minimal tests 2018-07-23 10:00:23 -05:00
Amir Bandeali
799ff2a5c3 Fix rounding error issues, use different logic when makerAsset is ZRX 2018-07-23 10:00:23 -05:00
Amir Bandeali
ec5f768f9b Rename marketSellEth => marketSellWeth 2018-07-23 10:00:23 -05:00
Amir Bandeali
66ab010055 Update percentage constants 2018-07-23 10:00:23 -05:00
Amir Bandeali
6fb157488c Update transferEthFeeAndRefund, add check to ERC721 transfer 2018-07-23 10:00:23 -05:00
Amir Bandeali
814518dd80 Refactor forwarding contract architecture, remove batch functions 2018-07-23 10:00:23 -05:00
Amir Bandeali
554b18a466 Merge pull request #906 from 0xProject/refactor/contracts/examples
[contracts] Add `examples` directory
2018-07-23 10:00:06 -05:00
Leonid Logvinov
855b6b1dc5 Updated CHANGELOGS 2018-07-23 16:58:40 +02:00
Amir Bandeali
c2ae9f62a4 Add tests to verify ZRX_ASSET_DATA 2018-07-23 09:34:47 -05:00
Amir Bandeali
4159a8fe6e Add comments for deploying with constant ZRX_ASSET_DATA 2018-07-23 09:34:47 -05:00
Amir Bandeali
d8b44283a2 Move example contracts into new examples dir 2018-07-23 09:34:47 -05:00
Leonid Logvinov
2c1daf9c9a Add missing timestamps in CHANGELOGs 2018-07-23 16:24:13 +02:00
Fabio Berger
c7962216e9 Omit verson of react types 2018-07-23 16:02:03 +02:00
Leonid Logvinov
ffdaf88fd0 Add missing timestamps in CHANGELOGs 2018-07-23 15:57:16 +02:00
Fabio Berger
f84f879950 Stop specifying a specific version of @types/react so there can't be two instances of the type installed 2018-07-23 14:39:34 +02:00
Fabio Berger
eb6027fba7 Move hdkey typings to dependencies since it's part of the exported interface 2018-07-23 13:45:43 +02:00
Fabio Berger
9a1f0ac8e2 Add dependent types of the react-popper typings 2018-07-23 11:43:01 +02:00
Fabio Berger
51b6f8bc71 Revert "Move frontend package types out of typescript-typings since this package will be used in both node and browser contexts"
This reverts commit 74483631d0.
2018-07-23 11:42:01 +02:00
Fabio Berger
4f73b81b9c Add troubleshooting section to utils README 2018-07-23 11:00:27 +02:00
Amir Bandeali
195d11f9d0 Merge pull request #877 from 0xProject/feature/contracts/removeERC721Callback
Removed receiverData and `onReceive` callback from ERC721 proxy.
2018-07-22 18:14:09 -05:00
Fabio Berger
b325ad1735 Add additional required tsconfig option for utils package since it now relies on RequestInit & Response types defined in lib.dom.d.ts 2018-07-22 18:27:36 +02:00
Fabio Berger
74483631d0 Move frontend package types out of typescript-typings since this package will be used in both node and browser contexts 2018-07-22 16:22:19 +02:00
Fabio Berger
89b24a21a0 Add bn.js types as dep of typescript-typings since they are needed by ethereumjs-utils types 2018-07-22 15:57:47 +02:00
Fabio Berger
f0f13aa1dd Move ECSignature type from types package into eth-light-wallet type dec since only used there 2018-07-22 15:52:52 +02:00
Fabio Berger
06f61949f9 Merge pull request #880 from feuGeneA/patch-5
make PR template checklist more useful
2018-07-22 15:35:15 +02:00
Francesco Agosti
0e72b67865 Merge pull request #895 from 0xProject/feature/website/send-eth-from-portal
Send Ether from Portal
2018-07-22 03:45:21 -07:00
Fabio Berger
b987eebf21 Fix version of ethereumjs-abi to 0.6.5 to fix decoding bug 2018-07-22 07:37:12 +02:00
Fabio Berger
c808d12b74 Merge pull request #904 from lukeautry/luke/leading_zero_encode
0x.js v2: fix decodeAssetData for addresses starting in 0
2018-07-22 07:16:49 +02:00
Luke Autry
b466431ede fix decodeAssetData for addresses starting in 0 2018-07-21 18:05:33 -04:00
Amir Bandeali
bf69ca6e53 Merge pull request #899 from kroitor/patch-1
Deduplicate assert web3-wrapper signMessageAsync
2018-07-20 20:28:29 -07:00
Brandon Millman
6ffa907f0e Merge branch 'v2-prototype' into feature/website/jobs-page-part2
* v2-prototype: (103 commits)
  Add changelog entry for @0xproject/utils
  Add AbortController polyfill to fetchAsync in utils
  Increase node heap size for webpack command
  Add missing timestamp to CHANGELOG entries
  Upgrade some @0xproject packages to 1.0.0 in website
  Hard code fillOrder selector into abiEncodeFillOrder
  Returns byte array instead of memory range for encoding fillOrder calldata
  Created LibAbiEncoder with `fillOrderNoThrow`
  Add missing dep in migrations
  Fix the abi-gen entry point
  Fix linter error
  Remove the postinstall hook
  Update website package.json with original imports
  @0xproject/sra-report@1.0.0
  Change all package to depend on the new @0xproject/connect@1.0.0
  @0xproject/connect@1.0.0
  Use old assert version in @0xproject/connect
  FIx a typo
  Remove rc versions from unmigrated packages
  0x.js@1.0.0-rc.2
  ...
2018-07-20 16:15:04 -07:00
Brandon Millman
e54501522d Merge pull request #903 from 0xProject/bug/website/fix-website
Add AbortController polyfill to fetchAsync in utils
2018-07-20 13:51:12 -07:00
Brandon Millman
f2baeddc30 Merge branch 'v2-prototype' into bug/website/fix-website
* v2-prototype:
  Add missing timestamp to CHANGELOG entries
2018-07-20 12:07:27 -07:00
Brandon Millman
fd349b618a Add changelog entry for @0xproject/utils 2018-07-20 12:05:47 -07:00
Brandon Millman
6ca2a02766 Add AbortController polyfill to fetchAsync in utils 2018-07-20 11:58:38 -07:00
Brandon Millman
d9a282bd92 Increase node heap size for webpack command 2018-07-20 11:56:20 -07:00
Fabio Berger
dc151f7290 Add missing timestamp to CHANGELOG entries 2018-07-20 20:13:53 +02:00
Brandon Millman
cce2127f72 Upgrade some @0xproject packages to 1.0.0 in website 2018-07-20 10:55:47 -07:00
fragosti
0f8e6b395e WIP for allowance toggle redesign working 2018-07-20 10:44:59 -07:00
fragosti
b28cc6d7d3 Show token name dynamically in tooltip 2018-07-20 10:14:17 -07:00
fragosti
3bf12a98a7 Implement tooltips 2018-07-20 09:55:08 -07:00
fragosti
f27084ced4 Add loading state 2018-07-20 09:16:55 -07:00
fragosti
cdcf624e9e Have basic lock and check working in walelt 2018-07-20 08:52:14 -07:00
fragosti
ad4c2b95e4 Add remove marshaller to changelog notes 2018-07-20 08:51:16 -07:00
Amir Bandeali
8e7c395f59 Merge pull request #892 from 0xProject/refactor/contracts/LibAbiEncoder
Created LibAbiEncoder with `fillOrderNoThrow`
2018-07-20 07:43:40 -07:00
Amir Bandeali
02d50a513a Hard code fillOrder selector into abiEncodeFillOrder 2018-07-20 07:37:40 -07:00
Greg Hysen
d61759f6dd Returns byte array instead of memory range for encoding fillOrder calldata 2018-07-20 07:37:40 -07:00
Greg Hysen
5790ed7ba9 Created LibAbiEncoder with fillOrderNoThrow 2018-07-20 07:37:40 -07:00
fragosti
067adbfb62 Stop exporting marshaller from web3-wrapper 2018-07-20 07:37:17 -07:00
Leonid Logvinov
7fadba59e7 Merge pull request #901 from 0xProject/feature/abi-gen-fix
Fix the abi-gen entry point
2018-07-20 16:34:17 +02:00
Fabio Berger
bcde0731db Merge branch 'v2-prototype' of github.com:0xProject/0x-monorepo into v2-prototype
* 'v2-prototype' of github.com:0xProject/0x-monorepo:
  Fix linter error
  Remove the postinstall hook
2018-07-20 16:31:49 +02:00
Fabio Berger
052afb67a4 Add missing dep in migrations 2018-07-20 16:31:39 +02:00
Leonid Logvinov
6e15d7bb0f Fix the abi-gen entry point 2018-07-20 16:30:47 +02:00
Igor Kroitor
5bb68974ec Deduplicate assert web3-wrapper signMessageAsync 2018-07-20 08:49:16 +03:00
Leonid Logvinov
0a3ba4d27d Fix linter error 2018-07-20 02:06:11 +02:00
Leonid Logvinov
482a226dc5 Remove the postinstall hook 2018-07-20 02:02:16 +02:00
Fabio Berger
9e69458ba8 Merge branch 'v2-prototype' of github.com:0xProject/0x-monorepo into v2-prototype
* 'v2-prototype' of github.com:0xProject/0x-monorepo:
  @0xproject/sra-report@1.0.0
  Change all package to depend on the new @0xproject/connect@1.0.0
2018-07-20 01:24:19 +02:00
Fabio Berger
71e386d5fa Update website package.json with original imports 2018-07-20 01:22:48 +02:00
Leonid Logvinov
60b501b137 @0xproject/sra-report@1.0.0 2018-07-20 01:07:44 +02:00
Leonid Logvinov
36f8e9f1d5 Change all package to depend on the new @0xproject/connect@1.0.0 2018-07-20 01:06:14 +02:00
Leonid Logvinov
78707bd3ca @0xproject/connect@1.0.0 2018-07-20 01:03:15 +02:00
Leonid Logvinov
56137d0605 Use old assert version in @0xproject/connect 2018-07-20 01:01:54 +02:00
Leonid Logvinov
681a582630 FIx a typo 2018-07-20 00:54:44 +02:00
Leonid Logvinov
846a447c4d Remove rc versions from unmigrated packages 2018-07-20 00:50:13 +02:00
Leonid Logvinov
f76be4f016 0x.js@1.0.0-rc.2 2018-07-20 00:45:19 +02:00
Fabio Berger
ed19067096 Move methods in ZeroEx.assetData to ZeroEx itself 2018-07-20 00:39:23 +02:00
Leonid Logvinov
eb9f7c2c9d Fix scoping of assets in 0x.js 2018-07-20 00:21:59 +02:00
Leonid Logvinov
52693f7d0a 0x.js@1.0.0-rc.1 2018-07-20 00:11:00 +02:00
Leonid Logvinov
5e015872ef Remove bundles config 2018-07-20 00:07:25 +02:00
Leonid Logvinov
08c291bd3f @0xproject/order-watcher@1.0.0-rc.1 2018-07-20 00:05:44 +02:00
Leonid Logvinov
48c5d69c9d Add monorepo-scripts postpublish.ts 2018-07-20 00:05:25 +02:00
Leonid Logvinov
0f9c262bb0 Change all package to depend on the new @0xproject/contract-wrappers@1.0.0-rc.1 2018-07-20 00:01:24 +02:00
Leonid Logvinov
dff0fc65bf @0xproject/contract-wrappers@1.0.0-rc.1 2018-07-19 23:56:46 +02:00
Leonid Logvinov
161f96c07d Change all package to depend on the new @0xproject/migrations@1.0.0 2018-07-19 23:50:46 +02:00
Leonid Logvinov
67ad21b368 @0xproject/migrations@1.0.0 2018-07-19 23:46:23 +02:00
Leonid Logvinov
d5e633c38f Change all package to depend on the new @0xproject/sol-cov@1.0.0 2018-07-19 23:44:51 +02:00
Leonid Logvinov
617ef5b6ce @0xproject/sol-cov@1.0.0 2018-07-19 23:42:28 +02:00
Leonid Logvinov
8bd4e38d02 Change all package to depend on the new @0xproject/react-docs@1.0.0 2018-07-19 23:39:28 +02:00
Leonid Logvinov
f364b5c5ab @0xproject/react-docs@1.0.0 2018-07-19 23:38:13 +02:00
Leonid Logvinov
6486fced34 Change all package to depend on the new @0xproject/react-shared@1.0.0 2018-07-19 23:37:01 +02:00
Leonid Logvinov
bc9f2a51a2 @0xproject/react-shared@1.0.0 2018-07-19 23:35:14 +02:00
Leonid Logvinov
9c03b54d75 Copy postpublish scripts on build in fill-scenarios 2018-07-19 23:32:46 +02:00
Leonid Logvinov
eae08ea1e4 Change all package to depend on the new @0xproject/fill-scenarios@1.0.0-rc.1 2018-07-19 23:32:31 +02:00
Leonid Logvinov
6f276223c6 @0xproject/fill-scenarios@1.0.0-rc.1 2018-07-19 23:28:05 +02:00
Leonid Logvinov
21effcaa8b Change all package to depend on the new @0xproject/order-utils@1.0.0-rc.1 2018-07-19 23:26:32 +02:00
Leonid Logvinov
114b31a813 @0xproject/order-utils@1.0.0-rc.1 2018-07-19 23:23:37 +02:00
Leonid Logvinov
1a1b7a2bc4 Change all package to depend on the new @0xproject/sol-compiler@1.0.0 2018-07-19 23:21:29 +02:00
Leonid Logvinov
c9b213839a @0xproject/sol-compiler@1.0.0 2018-07-19 23:19:38 +02:00
Leonid Logvinov
4043fa76cc Change all package to depend on the new @0xproject/dev-utils@1.0.0 2018-07-19 23:16:47 +02:00
Leonid Logvinov
9c8e3bc4c9 @0xproject/dev-utils@1.0.0 2018-07-19 23:14:30 +02:00
Leonid Logvinov
18b1f01641 Change all package to depend on the new @0xproject/subproviders@1.0.0 2018-07-19 23:12:44 +02:00
Leonid Logvinov
9085c674e4 @0xproject/subproviders@1.0.0 2018-07-19 23:10:57 +02:00
Leonid Logvinov
b5d19d3fb1 Change all package to depend on the new @0xproject/base-contract@1.0.0 2018-07-19 23:05:01 +02:00
Leonid Logvinov
cc0477153b Fix the scripts build 2018-07-19 23:03:55 +02:00
Leonid Logvinov
76008b41c5 @0xproject/base-contract@1.0.0 2018-07-19 23:02:15 +02:00
Leonid Logvinov
8193fdc304 Change all package to depend on the new @0xproject/web3-wrapper@1.0.0 2018-07-19 22:57:27 +02:00
Leonid Logvinov
9d06c81078 FIx a typo 2018-07-19 22:56:17 +02:00
Leonid Logvinov
cdf85e5eee @0xproject/web3-wrapper@1.0.0 2018-07-19 22:54:32 +02:00
Leonid Logvinov
d774dbc432 Change all package to depend on the new @0xproject/abi-gen@1.0.0 2018-07-19 22:47:58 +02:00
Leonid Logvinov
0369f5ebc4 @0xproject/abi-gen@1.0.0 2018-07-19 22:46:33 +02:00
Leonid Logvinov
1e6b11b27e Change all package to depend on the new @0xproject/assert@1.0.0 2018-07-19 22:45:22 +02:00
Leonid Logvinov
7a8231435b Add forgotten file to git 2018-07-19 22:43:56 +02:00
Leonid Logvinov
b1aa7725df @0xproject/assert@1.0.0 2018-07-19 22:41:35 +02:00
Leonid Logvinov
bfe0ba3e9a Change all package to depend on the new @0xproject/sol-resolver@1.0.0 2018-07-19 22:39:42 +02:00
Leonid Logvinov
2d39329ee7 Add monorepo-scripts to sol-resolver 2018-07-19 22:38:19 +02:00
Leonid Logvinov
761b0063a0 @0xproject/sol-resolver@1.0.0 2018-07-19 22:33:24 +02:00
Leonid Logvinov
0f27ce3424 Change all package to depend on the new @0xproject/json-schemas@1.0.0-rc.1 2018-07-19 22:30:09 +02:00
Leonid Logvinov
2b0c0a6ff7 @0xproject/json-schemas@1.0.0-rc.1 2018-07-19 22:26:35 +02:00
Leonid Logvinov
5bd96f6fe9 Change the next @0xproject/json-schemas version to be 1.0.0-rc.1 2018-07-19 22:26:13 +02:00
Leonid Logvinov
37ac6749ba Change all package to depend on the new @0xproject/utils@1.0.0 2018-07-19 22:22:51 +02:00
Leonid Logvinov
bf955bd87f @0xproject/utils@1.0.0 2018-07-19 22:20:35 +02:00
Leonid Logvinov
6bd921d0bc Add a missing CHANGELOG entry 2018-07-19 22:20:08 +02:00
Leonid Logvinov
534decea95 Change all package to depend on the new @0xproject/types@1.0.0-rc.1 2018-07-19 22:17:55 +02:00
Leonid Logvinov
267830d463 FIx a typo 2018-07-19 22:15:31 +02:00
Leonid Logvinov
e82d0c21ec @0xproject/types@1.0.0-rc.1 2018-07-19 22:06:05 +02:00
Leonid Logvinov
ece6417699 Change the next @0xproject/types version to be 1.0.0-rc.1 2018-07-19 22:05:22 +02:00
Leonid Logvinov
74d5449719 Change all package to depend on the new @0xproject/tslint-config@1.0.0 2018-07-19 22:03:23 +02:00
Leonid Logvinov
4af7ff9cc3 @0xproject/tslint-config@1.0.0 2018-07-19 22:01:18 +02:00
Leonid Logvinov
46dedfcb67 Change the next @0xproject/tslint-config version to be 1.0.0 2018-07-19 22:00:58 +02:00
Leonid Logvinov
a9fa1a0df6 Change all package to depend on the new @0xproject/typescript-typings@1.0.0 2018-07-19 21:54:44 +02:00
Leonid Logvinov
a8572b4944 @0xproject/typescript-typings@1.0.0 2018-07-19 21:51:38 +02:00
Leonid Logvinov
91c0d47ad4 Change the next @0xproject/typescript-typings version to be 1.0.0 2018-07-19 21:51:12 +02:00
Leonid Logvinov
fd2611794a Change all package to depend on the new @0xproject/monorepo-scripts@1.0.0 2018-07-19 21:49:03 +02:00
Leonid Logvinov
1fe1c5321b @0xproject/monorepo-scripts@1.0.0 2018-07-19 21:45:38 +02:00
Leonid Logvinov
f063a5db0f Change all package to depend on the new ethereum-types@1.0.0 2018-07-19 21:44:09 +02:00
Leonid Logvinov
3883315447 Make PR numbers links on Github releases 2018-07-19 21:40:50 +02:00
Leonid Logvinov
7679e07957 v1.0.0 2018-07-19 21:28:51 +02:00
Leonid Logvinov
c39ba37ad8 Change the next ethereum-types version to be 1.0.0 2018-07-19 21:28:06 +02:00
Fabio Berger
f1c3840c3b Merge pull request #897 from 0xProject/doc-changes
Doc Changes for RC publish
2018-07-19 21:10:06 +02:00
Fabio Berger
e5c5b36a73 Specify exact version 2018-07-19 21:05:37 +02:00
Fabio Berger
c51f7a8375 Add PR nr. 2018-07-19 20:51:33 +02:00
Fabio Berger
e53e2ac31b Fix version dropdown so it also renders RC versions properly 2018-07-19 20:45:20 +02:00
Fabio Berger
b72857cd8b Update doc md files for v2 packages 2018-07-19 20:45:00 +02:00
Fabio Berger
cc223b9eab Compare host rather then origin so that it comes without the http/https prefix 2018-07-19 19:01:25 +02:00
Fabio Berger
f2c49e8b37 Merge branch 'v2-prototype' into doc-changes
* v2-prototype:
  Add missing import
  Remove comment and add assertion
  Add ability to nest doc ref markdown under specific versions
2018-07-19 18:15:35 +02:00
Fabio Berger
9b6476a6b7 Merge pull request #844 from 0xProject/support-multiple-doc-md
Support version-specific doc ref markdown sections
2018-07-19 18:14:58 +02:00
Fabio Berger
d8898cf9a3 merge v2-prototype 2018-07-19 17:48:06 +02:00
Fabio Berger
34df5af295 Don't export object literal because the docs cannot yet render them, moved type to types file 2018-07-19 17:46:24 +02:00
Fabio Berger
3de88d5345 Merge pull request #896 from 0xProject/update-lerna
Update Lerna & other small changes
2018-07-19 17:37:04 +02:00
Fabio Berger
9ab6ab1bf9 Improve log 2018-07-19 17:22:26 +02:00
Fabio Berger
b6de0bdd43 Merge branch 'v2-prototype' into update-lerna
* v2-prototype: (48 commits)
  Update CHANGELOG
  Rename call data schema id to CallData. Check for TypedArray when hashing data in order-utils crypto
  Fix broken links in sol-cov documentation
  Fix 0x.js ts warnings
  Update yarn.lock
  Fix 0x.js ts warnings
  Fix 0x.js tests on CI
  Fix a bad merge
  Update package versions
  Merge
  Update changelogs
  Add a test for ERC721 Allowance
  Use allowance instead of approval for all in fill-scenarios
  Upgrade sha3 to 1.2.2 to work with node v10
  Check if the token doesn't exist before minting in fill scenarios
  Make downlevelIteration a global config
  Fix tests descriptions
  DRY up the code in order-watcher collision-resistant abi decoder
  Await transactions in fillScenarios
  Rename decodeAssetData to decodeAssetDataOrThrow
  ...
2018-07-19 16:38:33 +02:00
Fabio Berger
a2b62fd808 Update yarn.lock 2018-07-19 16:38:02 +02:00
fragosti
fc166dea26 Add zIndex 1 to topbar and fix issue where no box-shadow present on /docs 2018-07-19 07:36:41 -07:00
Fabio Berger
f9c4d0925e Add additional pattern removal and added HACK comment 2018-07-19 16:32:03 +02:00
Fabio Berger
1df9370bc2 Renames to remove mention of Lerna 2018-07-19 16:26:45 +02:00
Fabio Berger
7d840c7a18 Remove unused declaration 2018-07-19 16:26:00 +02:00
fragosti
ff12aafc0f Remove TODO 2018-07-19 07:04:48 -07:00
fragosti
c08b4aa6a1 Remove unused Token import 2018-07-19 06:59:35 -07:00
fragosti
52a6e6357b Add lifecycle messages 2018-07-19 06:57:00 -07:00
Fabio Berger
74c0fd419b Upgrade Lerna to 3.0-Beta14 2018-07-19 15:51:38 +02:00
Fabio Berger
6f540e3e58 Replace lerna-get-packages with our own implementation 2018-07-19 15:50:21 +02:00
fragosti
dead04dce8 WIP for sending ether from portal (works) 2018-07-19 04:11:44 -07:00
Jacob Evans
886a03fdcd Merge pull request #894 from 0xProject/bug/minor-fixes-json-schema-order-utils
Rename json schema call data id to CallData.
2018-07-19 20:06:37 +10:00
Jacob Evans
81007c453c Update CHANGELOG 2018-07-19 19:51:07 +10:00
Jacob Evans
6529e06057 Rename call data schema id to CallData.
Check for TypedArray when hashing data in order-utils crypto
2018-07-19 17:51:03 +10:00
Brandon Millman
55336f96d7 Fix broken links in sol-cov documentation 2018-07-18 15:53:33 -07:00
Brandon Millman
938aabde3d Update hr color 2018-07-18 14:47:02 -07:00
Brandon Millman
c7f196b579 Fix lint errors 2018-07-18 14:30:44 -07:00
Brandon Millman
b28a88dbb2 Add /careers route and fix hr styling 2018-07-18 14:27:06 -07:00
Brandon Millman
e6558b7135 Fix typos 2018-07-18 14:10:17 -07:00
Brandon Millman
2c8fb9aa31 Fix key errors and typo 2018-07-18 13:59:50 -07:00
Brandon Millman
f48c6b6285 Fix padding on open positions section 2018-07-18 13:59:50 -07:00
Brandon Millman
4f42f60bde Add dots on hero 2018-07-18 13:59:50 -07:00
Brandon Millman
3942647910 Padding fixes 2018-07-18 13:59:50 -07:00
Brandon Millman
e0fbc78925 Update open positions section 2018-07-18 13:59:50 -07:00
Brandon Millman
f3e43d7d94 Benefits and values sections 2018-07-18 13:59:50 -07:00
Brandon Millman
f36547241c Remove sections 2018-07-18 13:59:49 -07:00
Brandon Millman
7ad29950a8 Update mission section 2018-07-18 13:59:49 -07:00
Brandon Millman
cbf91ad45c Updates to the Join 0x section 2018-07-18 13:59:49 -07:00
Brandon Millman
a039b66533 Fix development environment check 2018-07-18 13:59:49 -07:00
Fabio Berger
3a18c249f5 Merge pull request #889 from 0xProject/update_versions
Update Versions & Changelogs
2018-07-18 17:20:38 +02:00
Fabio Berger
7c0775aa1b Fix 0x.js ts warnings 2018-07-18 17:06:05 +02:00
fragosti
6514c34ed8 Make topbar zIndex 1 2018-07-18 08:05:19 -07:00
Fabio Berger
ba92754669 Update yarn.lock 2018-07-18 17:00:14 +02:00
Fabio Berger
30afd39129 Fix 0x.js ts warnings 2018-07-18 17:00:07 +02:00
Leonid Logvinov
41699406cf Fix 0x.js tests on CI 2018-07-18 16:44:45 +02:00
Greg Hysen
9aa49e59d0 Fixed merge errors 2018-07-18 16:44:24 +02:00
Fabio Berger
29d5034260 merge v2-prototype 2018-07-18 16:43:25 +02:00
Leonid Logvinov
00d1622b3f Merge pull request #887 from 0xProject/feature/order-watcher-v2
Order watcher v2
2018-07-18 16:38:16 +02:00
Leonid Logvinov
a1acf19ff3 Fix a bad merge 2018-07-18 16:31:17 +02:00
Greg Hysen
86328af6b7 Fixed merge error 2018-07-18 16:27:26 +02:00
Greg Hysen
36c27bdbf8 Ran prettier 2018-07-18 16:18:54 +02:00
Fabio Berger
c839965c05 Update to Lerna v3.0-beta 2018-07-18 16:06:39 +02:00
Greg Hysen
e1a9f3435f Removed receiverData from ERC721 Proxy Id generation 2018-07-18 15:52:14 +02:00
Greg Hysen
9f74feb347 Removed receiverData and onReceive callback from ERC721 proxy. 2018-07-18 15:50:58 +02:00
Fabio Berger
f99232095b Update package versions 2018-07-18 15:48:09 +02:00
Leonid Logvinov
5044fe4fe4 Merge branch 'v2-prototype' into feature/order-watcher-v2 2018-07-18 15:40:45 +02:00
Leonid Logvinov
8e49169e6b Merge branch 'feature/order-watcher-v2' of github.com:0xProject/0x-monorepo into feature/order-watcher-v2 2018-07-18 15:39:11 +02:00
Leonid Logvinov
c71781d9ab Merge 2018-07-18 15:38:10 +02:00
Fabio Berger
8a2a4052f3 Update changelogs 2018-07-18 15:30:38 +02:00
Leonid Logvinov
dad557164e Merge branch 'v2-prototype' into feature/order-watcher-v2 2018-07-18 15:27:38 +02:00
Fabio Berger
e2fb49a8f8 Merge pull request #884 from 0xProject/export-more-0x.js
Export missing V2 pieces from 0x.js
2018-07-18 15:18:54 +02:00
Leonid Logvinov
f3241ff86a Merge pull request #883 from 0xProject/feature/tslint-improvements
New tslint rules
2018-07-18 14:54:47 +02:00
Fabio Berger
b9e7973a0f edit changelog message 2018-07-18 14:53:38 +02:00
Fabio Berger
004b1f5288 Fix prettier 2018-07-18 14:53:31 +02:00
Leonid Logvinov
857bd24c6d Merge branch 'v2-prototype' into feature/order-watcher-v2 2018-07-18 14:51:24 +02:00
Leonid Logvinov
904968cf4a Fix an inconsistency in abi-gen CHANGELOG.json 2018-07-18 14:31:03 +02:00
Fabio Berger
83747934ad Fix linter 2018-07-18 12:11:11 +02:00
Fabio Berger
7f90f5ecd4 merge v2-prototype 2018-07-18 12:04:57 +02:00
Fabio Berger
12f02b9814 Rename decodeAssetDataId to decodeAssetProxyId for consistency 2018-07-18 11:49:30 +02:00
Fabio Berger
8931388309 Add java doc comments to assetDataUtils 2018-07-18 11:47:42 +02:00
Fabio Berger
25160d7344 Move encodeUint256 & decodeUint256 out of assetDataUtils since we don't want them exported 2018-07-18 11:32:01 +02:00
Leonid Logvinov
ab6bf6edc7 Merge pull request #879 from 0xProject/feature/order-watcher-erc721-tests
Add ERC721 tests for order watcher v2
2018-07-18 10:38:07 +02:00
Amir Bandeali
56a4a374cd Merge pull request #857 from 0xProject/feature/contracts/batchGetOrderInfo
Add getOrdersInfo function
2018-07-17 14:13:33 -07:00
Amir Bandeali
caa5b4e342 Add tests for getOrderInfo and getOrdersInfo 2018-07-17 13:59:14 -07:00
Amir Bandeali
b6172c3965 Reorder checks in getOrderInfo 2018-07-17 12:18:16 -07:00
Amir Bandeali
02ddfa07a7 Add getOrdersInfo function 2018-07-17 12:18:16 -07:00
Alex Browne
5022878680 Merge pull request #886 from 0xProject/fix/time-offset-accidental-revert
Mine a dummy block in blockchain_lifecycle to re-apply any time offset
2018-07-17 12:12:12 -07:00
Alex Browne
2bfacbb8ba Mine a dummy block in blockchain_lifecycle to re-apply any time offset 2018-07-17 11:48:39 -07:00
Alex Browne
b18d2b0274 Merge pull request #881 from 0xProject/fix/timestamp-conversions
Fix bugs having to do with block timestamps and order expirationTimes
2018-07-17 10:57:39 -07:00
Leonid Logvinov
f20b496dca Add a test for ERC721 Allowance 2018-07-17 18:46:58 +02:00
Leonid Logvinov
cca17f70b8 Use allowance instead of approval for all in fill-scenarios 2018-07-17 18:45:35 +02:00
Leonid Logvinov
b8e69718a1 Upgrade sha3 to 1.2.2 to work with node v10 2018-07-17 16:54:25 +02:00
Fabio Berger
50ed7d2af2 Export missing types and add to doc ref whitelist 2018-07-17 16:41:55 +02:00
Fabio Berger
698de932ed Remove unused dep 2018-07-17 16:27:59 +02:00
Fabio Berger
a3d8858bb1 Fix typing 2018-07-17 16:27:46 +02:00
Fabio Berger
83f3ba21b8 Move type decl. to typescript-typings 2018-07-17 16:01:01 +02:00
Leonid Logvinov
2aa729b212 Check if the token doesn't exist before minting in fill scenarios 2018-07-17 15:56:10 +02:00
Fabio Berger
1de70e4474 Add PR 2018-07-17 15:40:06 +02:00
Fabio Berger
f2393de59b Make assetData a static property and add to CHANGELOG 2018-07-17 15:33:49 +02:00
Fabio Berger
94ea7cc451 Export assetDataUtils from 0x.js 2018-07-17 15:31:25 +02:00
Fabio Berger
f8dbf57582 Rename assetProxyUtils to assetDataUtils 2018-07-17 15:26:55 +02:00
Leonid Logvinov
c59cd36da6 Make downlevelIteration a global config 2018-07-17 15:25:20 +02:00
Fabio Berger
15e92958d6 Merge pull request #875 from 0xProject/fix-order-watcher
OrderWatcher Fixes
2018-07-17 13:47:23 +02:00
Leonid Logvinov
96c648c4b4 Fix tests descriptions 2018-07-17 13:29:59 +02:00
Fabio Berger
f56a7d0cb2 Fix linter 2018-07-17 13:29:36 +02:00
Leonid Logvinov
01e617bb83 DRY up the code in order-watcher collision-resistant abi decoder 2018-07-17 13:28:27 +02:00
Fabio Berger
59fd5c69c0 Remove no-longer needed tests 2018-07-17 13:27:41 +02:00
Leonid Logvinov
28a9a8c380 Await transactions in fillScenarios 2018-07-17 13:26:49 +02:00
Leonid Logvinov
6c2796b433 Rename decodeAssetData to decodeAssetDataOrThrow 2018-07-17 13:16:47 +02:00
Leonid Logvinov
82ad5f7897 Use normalizedAddress 2018-07-17 13:13:05 +02:00
Leonid Logvinov
bf8ac3b9e6 Fix tslint issues 2018-07-17 12:59:02 +02:00
Leonid Logvinov
edcdc9b1b9 Upgrade tslint to the newest version 2018-07-17 12:58:42 +02:00
Leonid Logvinov
4227aaa68a Add new tslint rules 2018-07-17 12:58:04 +02:00
Fabio Berger
b750ce8be6 Stop subscriptions from unsubscribing on recoverable network issues 2018-07-17 12:33:43 +02:00
Fabio Berger
03a6a088c5 Merge branch 'v2-prototype' into fix-order-watcher
* v2-prototype: (39 commits)
  Add chris to website
  Fix ocean link
  Move update onboarding step tracking to onboarding flow code
  Bump npm-run-all from 4.1.2 to 4.1.3
  Move format to helper function
  Fix linter
  Add assertion to make sure caller to fetchAsync isn't trying to set timeout in a context-specific way
  Fix linter issues
  Remove unused import
  Switch conditional
  Update yarn.lock and artifact
  Fix abi-gen tests to not rely on sleep, since it causes intermittent failures
  Add missing assertion
  Move type defs to typescript-typingsd
  Fix linter
  Make createFinalPayload protected
  Replace process.browser with detect-node library
  Export Web3ProviderEngine and RPCSubprovider from 0x.js
  Export Web3ProviderEngine from subproviders package
  Update deps
  ...
2018-07-17 12:06:35 +02:00
Fabio Berger
1e787a7646 Remove stateLayer OrderWatcher config and instead temporarily hard-code until we get pending block to work with Blockstream 2018-07-17 12:04:29 +02:00
Fabio Berger
766ac3f1fe Remove blockRetention config 2018-07-17 11:57:52 +02:00
fragosti
a9038f2afc Add chris to website 2018-07-17 01:16:29 -07:00
Alex Browne
9828fa335e Fix bugs having to do with block timestamps and order expirationTimes 2018-07-16 18:41:37 -07:00
Brandon Millman
0c04d490bb Fix ocean link 2018-07-16 17:48:24 -07:00
F. Eugene Aumson
bffffffc95 make PR template checklist more useful
Goal is to make it so that every PR should check off every checklist
item before it is considered complete.

Removed mention of labels.  Since contributors outside the org don't
have permission to add labels, it's not possible for any such
contributor to ever check those items off.  Opted instead to prescribe
bracketed PR title prefixes, which are accessible to all.

Re-ordered checklist items to better represent chronological progress.
2018-07-16 17:50:24 -04:00
Leonid Logvinov
e9589ff786 Sort the config file lexicographically 2018-07-16 15:59:00 +02:00
Leonid Logvinov
c3bd3437f5 Make addOrder async 2018-07-16 15:50:06 +02:00
Leonid Logvinov
01789e6750 Merge pull request #800 from feuGeneA/patch-2
use bullets, not a task list, for Types of Changes
2018-07-16 15:24:18 +02:00
Leonid Logvinov
c3f7ba1b91 Merge pull request #872 from 0xProject/dependabot/npm_and_yarn/npm-run-all-4.1.3
Bump npm-run-all from 4.1.2 to 4.1.3
2018-07-16 15:22:58 +02:00
Leonid Logvinov
90d72a3683 Await the promise in order watcher assertion 2018-07-16 14:54:36 +02:00
Leonid Logvinov
f9bcf936ed Merge branch 'feature/order-watcher-v2' into feature/order-watcher-erc721-tests 2018-07-16 14:38:51 +02:00
Leonid Logvinov
acff177c54 Merge branch 'v2-prototype' into feature/order-watcher-v2 2018-07-16 14:38:27 +02:00
Leonid Logvinov
658214a2e2 Yarn lock changes 2018-07-16 14:31:46 +02:00
Leonid Logvinov
55f6f02c9b Import AssetproxyId 2018-07-16 14:31:33 +02:00
Leonid Logvinov
c5ba52910a Add ERC721 tests to order watcher 2018-07-16 14:30:48 +02:00
Leonid Logvinov
994ccd6694 Enable downlevelIteration 2018-07-16 14:29:59 +02:00
Leonid Logvinov
4921a83813 Register asset types within collisionResistantAbiDecoder 2018-07-16 14:29:23 +02:00
Leonid Logvinov
a97ba41b86 Add ERC721 support to fill-scenarios 2018-07-16 14:28:44 +02:00
Leonid Logvinov
67e2623d2c Remove no-unused-variable rule from tslint as it's buggy and has side-effects 2018-07-16 14:28:22 +02:00
Leonid Logvinov
4111095da3 Don't throw on transferFrom is the sender is an owner 2018-07-16 14:27:53 +02:00
Leonid Logvinov
6c21ddcedb Pass erc721ProxyAddress to fillScenarios 2018-07-16 14:27:34 +02:00
Leonid Logvinov
d86349658f Fix postinstall hook for contracts -> types 2018-07-16 14:26:23 +02:00
Fabio Berger
151ce6e3c7 Pass stateLater into getBlockAsync call 2018-07-16 10:24:34 +02:00
Francesco Agosti
6bdee26c30 Merge pull request #876 from 0xProject/feature/website/heap-tracking-sanity
Move update onboarding step tracking to onboarding flow code
2018-07-13 14:34:54 -07:00
fragosti
5e4b1eed30 Move update onboarding step tracking to onboarding flow code 2018-07-13 14:09:34 -07:00
Francesco Agosti
ab5cd95ccc Merge pull request #867 from 0xProject/bug/website/txhash-error
Only upload sourcemaps to rollbar on live deploys, and handle NaN error by using 0
2018-07-13 13:35:01 -07:00
dependabot[bot]
a3dc398da5 Bump npm-run-all from 4.1.2 to 4.1.3
Bumps [npm-run-all](https://github.com/mysticatea/npm-run-all) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/mysticatea/npm-run-all/releases)
- [Commits](https://github.com/mysticatea/npm-run-all/compare/v4.1.2...v4.1.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-13 18:25:06 +00:00
fragosti
b70f5d1a1e Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into bug/website/txhash-error 2018-07-13 11:15:50 -07:00
Francesco Agosti
26363931ed Merge pull request #866 from 0xProject/feature/website/integrate-heap
Integrate Heap analytics into the website
2018-07-13 11:14:38 -07:00
Fabio Berger
e2438330f5 Merge pull request #874 from 0xProject/fix/request-timeout-issue
Fix Fetch Timeout Issue
2018-07-13 20:12:37 +02:00
fragosti
c5fcdd0657 Move format to helper function 2018-07-13 11:11:49 -07:00
Fabio Berger
345f3c07a5 Add PR numbers 2018-07-13 20:04:21 +02:00
Fabio Berger
f3477ff28c Add changelog entries 2018-07-13 20:03:22 +02:00
Fabio Berger
7ac4fa50b5 Update yarn.lock 2018-07-13 19:55:45 +02:00
Fabio Berger
2f0a914838 Fix linter 2018-07-13 19:53:49 +02:00
Fabio Berger
5fc7d9a603 Fix bug that make all getBlock and getLog requests go to latest block 2018-07-13 19:44:56 +02:00
Fabio Berger
ced68e4e02 Expose Blockstreams blockRetention config as an OrderWatcher config 2018-07-13 19:44:21 +02:00
Fabio Berger
80071beaac Add assertion to make sure caller to fetchAsync isn't trying to set timeout in a context-specific way 2018-07-13 19:38:35 +02:00
Fabio Berger
de1029d5ef Fix linter issues 2018-07-13 18:51:21 +02:00
Leonid Logvinov
ffeb3194a8 Fix a dependency version 2018-07-13 17:46:53 +02:00
Leonid Logvinov
95e9f33f6a Migrate order-watcher to v2 2018-07-13 17:45:25 +02:00
Leonid Logvinov
c599a20b34 Enable prefer-readonly rule 2018-07-13 17:44:39 +02:00
Leonid Logvinov
ca59528a32 Add OrderWatcherPartialConfigSchema 2018-07-13 17:44:00 +02:00
Leonid Logvinov
6f4fd06d38 Use migrated package versions as order-watcher dependencies 2018-07-13 17:43:32 +02:00
Leonid Logvinov
4715c2d006 Update compact_artifacts in order-watcher 2018-07-13 17:42:50 +02:00
Leonid Logvinov
fcfa43b6f1 Export newly created store from order-utils 2018-07-13 17:42:27 +02:00
Leonid Logvinov
56b4c55654 Add OrderFilledCancelledLazyStore 2018-07-13 17:41:30 +02:00
Leonid Logvinov
830790eeac Add AbstractOrderFilledCancelledLazyStore 2018-07-13 17:39:41 +02:00
Leonid Logvinov
39de9c7879 Export forgotten stuff from contract-wrappers 2018-07-13 17:38:02 +02:00
Leonid Logvinov
7b6cc14b71 Make getZRXAssetData not async 2018-07-13 17:37:33 +02:00
Leonid Logvinov
ec749a4033 Add order-watcher to a postinstall HACK 2018-07-13 17:36:20 +02:00
Leonid Logvinov
fe32214613 Add no-return-await, no-duplicate-switch-case, no-implicit-dependencies rules 2018-07-13 17:30:44 +02:00
Leonid Logvinov
f6fcb775b7 Upgrade tslint to use prefer-readonly 2018-07-13 17:30:44 +02:00
Leonid Logvinov
d209108a95 Update contract artifacts 2018-07-13 17:30:00 +02:00
Fabio Berger
efc64cf17f Remove unused import 2018-07-13 17:17:45 +02:00
Fabio Berger
2f41ed50c1 Switch conditional 2018-07-13 16:47:32 +02:00
Fabio Berger
fcc8cdd36a Update yarn.lock and artifact 2018-07-13 16:40:06 +02:00
Fabio Berger
248632ce76 Merge branch 'v2-prototype' into fix/request-timeout-issue
* v2-prototype:
  Remove legacy portal code
2018-07-13 16:12:49 +02:00
Fabio Berger
25681754bd Fix abi-gen tests to not rely on sleep, since it causes intermittent failures 2018-07-13 16:06:15 +02:00
Fabio Berger
179c487da9 Add missing assertion 2018-07-13 15:25:48 +02:00
Fabio Berger
350989bbec Move type defs to typescript-typingsd 2018-07-13 15:25:37 +02:00
Fabio Berger
f5293e6c38 Fix linter 2018-07-13 15:09:51 +02:00
Fabio Berger
70c3515c94 Make createFinalPayload protected 2018-07-13 15:04:17 +02:00
Fabio Berger
4c7fd5a4e8 Replace process.browser with detect-node library 2018-07-13 15:03:13 +02:00
Fabio Berger
9d24341d94 Export Web3ProviderEngine and RPCSubprovider from 0x.js 2018-07-13 14:35:31 +02:00
Fabio Berger
512502ca08 Export Web3ProviderEngine from subproviders package 2018-07-13 14:26:02 +02:00
Fabio Berger
6ce662c7a4 Update deps 2018-07-13 13:05:38 +02:00
Fabio Berger
701ea5c46b Add typedoc for json-rpc-error package 2018-07-13 13:05:21 +02:00
Fabio Berger
2e5ff53d72 -fetch'; 2018-07-13 12:42:01 +02:00
Fabio Berger
1229c61ba4 Make timeout configurable on RPCSubprovider 2018-07-13 12:05:02 +02:00
fragosti
ee54438e92 Fix logging typo 2018-07-12 18:30:01 -07:00
fragosti
65af78c85d Fix indentify typo 2018-07-12 18:20:46 -07:00
fragosti
b4747c3f85 Refactor utils and add UNNKOWN environment type 2018-07-12 18:11:25 -07:00
fragosti
1df074b73e Make Analytics API non-async 2018-07-12 16:57:03 -07:00
fragosti
254d30b8df Fix linting errors 2018-07-12 15:56:01 -07:00
fragosti
ac5588c7c4 Make error reporter not return a promise and add more environment possibilities 2018-07-12 15:56:01 -07:00
fragosti
ddb70a89ad Do not crash on NaN, and provide default 2018-07-12 15:54:45 -07:00
fragosti
f4b2a9625d Only upload sourcemaps to rollbar on live deploys, and log NaN error for future debugging 2018-07-12 15:54:45 -07:00
Fabio Berger
c2a1317c38 Adjust timeout 2018-07-12 23:17:35 +02:00
Fabio Berger
49f1a6933c Add fetchAsync util and RPCSubprovider 2018-07-12 23:13:47 +02:00
Brandon Millman
9b387b8ec3 Merge pull request #865 from 0xProject/refactor/website/remove-legacy-portal
Remove legacy portal code
2018-07-12 11:01:14 -07:00
Fabio Berger
a45a29432e Merge pull request #863 from 0xProject/refactor/0x.js
Refactor 0x.js
2018-07-12 15:53:31 +02:00
Fabio Berger
819d069edc Add missing param 2018-07-12 15:25:35 +02:00
Fabio Berger
b0a57a5091 remove non-existent param comment 2018-07-12 15:25:25 +02:00
Fabio Berger
d8678d562d Add assertions to SignatureUtils exported methods 2018-07-12 15:22:21 +02:00
Leonid Logvinov
34a9035164 Merge pull request #788 from feuGeneA/abi-gen-ignore-unchanged
Using timestamps, skip generation of already-up-to-date contract wrappers
2018-07-12 11:53:21 +02:00
fragosti
0941e0a929 Add no-floating-promises ignore comments 2018-07-11 16:50:00 -07:00
fragosti
1ee78062d7 Remove unused configs and constants 2018-07-11 15:43:37 -07:00
Brandon Millman
09f5609618 Remove legacy portal code 2018-07-11 15:42:20 -07:00
fragosti
098322c564 Integrate heap analytics 2018-07-11 15:39:12 -07:00
Fabio Berger
365e24c1cd Fix prettier 2018-07-11 23:58:22 +02:00
Brandon Millman
b82fdd59e7 Merge pull request #626 from 0xProject/refactor/connect/browser-websocket-support
Add support for browser websocket client and fix multiple subscriptions bug
2018-07-11 14:40:19 -07:00
Brandon Millman
6190ac7791 Change version to 1.0.0 2018-07-11 14:31:39 -07:00
Brandon Millman
ed3aeb7997 Fix lint for order watcher 2018-07-11 13:35:21 -07:00
Brandon Millman
33f92b6bcf Fix lint for order-utils 2018-07-11 13:15:28 -07:00
fragosti
9131a72a47 Replace calls to google analytics with calls to heap 2018-07-11 12:14:23 -07:00
Brandon Millman
e5617dfe61 Lint fixes 2018-07-11 11:46:28 -07:00
Brandon Millman
e67d67419f Prettier 2018-07-11 11:29:34 -07:00
Brandon Millman
17c34716f9 Provide subscriptionOpts in error callback and include url in error messages 2018-07-11 11:16:45 -07:00
Brandon Millman
e12f7c3026 Remove outdated comments 2018-07-11 10:27:05 -07:00
Brandon Millman
af395eccda Update orderbook channel and factory tests 2018-07-11 10:25:54 -07:00
Brandon Millman
c403dcdabf Update tests 2018-07-11 10:25:54 -07:00
Brandon Millman
c500cc095f Enforce one handler per channel 2018-07-11 10:25:54 -07:00
Brandon Millman
6ecda647ad Add TODO comment for switching requestIds to strings 2018-07-11 10:25:54 -07:00
Brandon Millman
3e7ee1f090 Add explicit HACK comment when we import assert 2018-07-11 10:25:54 -07:00
Brandon Millman
0c120cb7a3 Assert that connection is opening before attempting to subscribe 2018-07-11 10:19:36 -07:00
Brandon Millman
cab6829df9 Remove unused import 2018-07-11 10:19:36 -07:00
Brandon Millman
0efe6df416 Add CHANGELOG entry 2018-07-11 10:19:36 -07:00
Brandon Millman
a4b6112a31 Consolidate back to one channel and expose only the factory 2018-07-11 10:18:15 -07:00
Brandon Millman
47debf0134 Initial implementation of OrderbookChannelFactory 2018-07-11 10:17:45 -07:00
Brandon Millman
16ddd1edfc Implement web browser socket 2018-07-11 10:17:45 -07:00
Fabio Berger
0f1fd0e90d prettier fix 2018-07-11 19:16:12 +02:00
Fabio Berger
ef76d83d2a Fix linter issues 2018-07-11 19:15:39 +02:00
Fabio Berger
df9f6004f2 Rename compact_artifacts to artifacts and update them 2018-07-11 19:09:02 +02:00
Fabio Berger
9a87f99dcd Add PR to changelog 2018-07-11 19:08:05 +02:00
Fabio Berger
30011db6d7 Add changelog entry 2018-07-11 19:06:38 +02:00
Fabio Berger
b6ac132c78 Refactor 0x.js to V2 2018-07-11 18:53:50 +02:00
Fabio Berger
abf87a643d Remove artifact tests since no testnet deployments are finalized 2018-07-11 18:49:37 +02:00
Fabio Berger
3824ea9079 Remove TokenRegistry from 0x.js 2018-07-11 18:46:12 +02:00
Fabio Berger
5e22ce05c5 Remove duplicate sol-compiler dep 2018-07-11 18:34:38 +02:00
Jacob Evans
8fcc7aefa7 Merge pull request #840 from 0xProject/feature/migrations/forwarder-migrations
Add Migrations for Forwarder and miscellaneous fixes
2018-07-11 20:59:23 +10:00
Jacob Evans
0b6ea1d046 Contract Wrappers - Ether token block range
Start after migrations to avoid any unexpected logs
2018-07-11 20:45:18 +10:00
Fabio Berger
22d3981a74 Temporarily remove OrderWatcher from 0x.js 2018-07-11 12:34:13 +02:00
Jacob Evans
81b4f4928d Remove extra ERC20ProxyId from Forwarder constructor 2018-07-11 20:16:59 +10:00
Jacob Evans
dd77a38535 Add Migrations for Forwarder 2018-07-11 20:16:04 +10:00
fragosti
d319b53e23 Add Heap snippet 2018-07-10 15:13:54 -07:00
Alex Browne
b9627e14d0 Merge pull request #848 from 0xProject/feature/contracts/safeMath
Add revert reasons and optimization to safeMath
2018-07-10 14:01:13 -07:00
Brandon Millman
56a96d36a1 Merge pull request #849 from 0xProject/feature/website/tokens-backend
Grab token registry information from our DB for mainnet
2018-07-10 13:57:14 -07:00
Amir Bandeali
e60630fa73 Update artifacts 2018-07-10 12:55:31 -07:00
Amir Bandeali
5ef6613024 Add revert reasons and optimization to safeMath 2018-07-10 12:53:47 -07:00
Amir Bandeali
af7e02de27 Merge pull request #837 from 0xProject/fix/contracts/assetProxyOwnerVersion
Use 0.4.10 in AssetProxyOwner
2018-07-10 12:46:53 -07:00
Brandon Millman
51d5b9d35d Grab token registry information from our DB for mainnet 2018-07-10 12:01:51 -07:00
Amir Bandeali
092ca6bcf5 Use 0.4.10 in AssetProxyOwner, add readBytes4 to contract and remove LibBytes 2018-07-10 11:24:22 -07:00
Francesco Agosti
2625cbbfed Merge pull request #846 from 0xProject/feature/website/add-peter-to-about
Add Peter to about page
2018-07-10 10:31:01 -07:00
fragosti
cedd1d5596 Add LinkedIn for Peter 2018-07-10 10:30:25 -07:00
Francesco Agosti
fb9e14a229 Merge pull request #845 from 0xProject/bug/website/portal-soft-launch-fixes
Enable sourceMaps on Rollbar and fix some small issues
2018-07-10 10:26:40 -07:00
fragosti
4e1bd7b5f0 Add Peter to about page 2018-07-09 19:02:50 -07:00
fragosti
5dfed8cd00 Update rollbar for telemetry 2018-07-09 18:17:14 -07:00
fragosti
a2672a0d78 Get rollbar uploads working by enabling sourcemaps 2018-07-09 18:04:55 -07:00
fragosti
ee5ac6b800 Fix unsubscribe bug 2018-07-09 16:16:48 -07:00
fragosti
a481d2ab46 Use JSON stringify around GIT_SHA 2018-07-09 16:07:16 -07:00
fragosti
c8bb21d12d Add sourcemaps for rollbar 2018-07-09 14:26:05 -07:00
fragosti
e817cd7d43 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into v2-prototype 2018-07-09 13:27:05 -07:00
fragosti
bd6085fffd Change Jacobs title to Ecosystem Engineer 2018-07-09 13:25:18 -07:00
Brandon Millman
7efe9a9385 Delete wings.png 2018-07-09 13:21:46 -07:00
Brandon Millman
50da40a727 Delete taas.png 2018-07-09 13:21:29 -07:00
Brandon Millman
48390a1875 Delete qtum.png 2018-07-09 13:21:12 -07:00
Brandon Millman
a3d27cd128 Delete eos.png 2018-07-09 13:20:49 -07:00
Brandon Millman
589c814ee6 Update icon file names 2018-07-09 13:17:57 -07:00
Leonid Logvinov
4b60a3cbab Merge branch 'v2-prototype' into abi-gen-ignore-unchanged 2018-07-09 20:08:28 +02:00
Fabio Berger
1aaf633df8 Add missing import 2018-07-09 19:59:26 +02:00
Fabio Berger
82771ec64a Remove comment and add assertion 2018-07-09 19:53:54 +02:00
Fabio Berger
ada8a402da merge v2-prototype 2018-07-09 19:46:28 +02:00
Fabio Berger
17956efe35 Merge pull request #843 from 0xProject/update-after-dev-publish
Update CHANGELOG & Versions After Development Publish
2018-07-09 19:40:37 +02:00
Fabio Berger
8378c9f85e Fix changelogs 2018-07-09 19:27:18 +02:00
Fabio Berger
324b1079e7 Add ability to nest doc ref markdown under specific versions 2018-07-09 19:05:38 +02:00
Fabio Berger
c6da829713 Remaining version fixes 2018-07-09 18:55:22 +02:00
Fabio Berger
844b0687a6 Update incorrect versions 2018-07-09 18:22:18 +02:00
Fabio Berger
2ed2dd2fb7 Update package versions 2018-07-09 18:16:02 +02:00
Fabio Berger
d2f7dd3d5a Update changelogs 2018-07-09 17:49:28 +02:00
F. Eugene Aumson
9f08916cf1 add tests of abi-gen 2018-07-09 10:56:18 -04:00
F. Eugene Aumson
a0e3676e3a move abi-gen funcs from index to utils for testing
preparing for unit testing. purely refactoring (no functionality
changed).
2018-07-09 10:45:21 -04:00
F. Eugene Aumson
2276793629 using timestamps, skip gen of up-to-date wrappers 2018-07-09 10:36:41 -04:00
Fabio Berger
a9b320e636 Add back timestamp 2018-07-09 15:49:24 +02:00
Leonid Logvinov
ecdc0636d8 Merge pull request #841 from 0xProject/feature/v2-contract-wrappers-validation
Feature/v2 contract wrappers validation
2018-07-09 12:21:32 +02:00
Leonid Logvinov
ea12e34809 Ignore coverage of generated files 2018-07-09 12:07:42 +02:00
Leonid Logvinov
9fb7865292 Dedupe AssetProxyId types 2018-07-09 11:43:00 +02:00
Leonid Logvinov
12f30c78ff Fix a typo 2018-07-09 11:29:42 +02:00
Leonid Logvinov
e3bed5cc71 Default shouldValidate to true 2018-07-09 11:29:09 +02:00
Leonid Logvinov
0f8f5ca5ff Add basic validation for exchange contract wrapper 2018-07-09 11:13:21 +02:00
Leonid Logvinov
0fe0433b9a Add type for AssetProxyId 2018-07-09 11:13:21 +02:00
Leonid Logvinov
ab1e38701d Add revert reason parsing to error handling decorator 2018-07-09 11:13:21 +02:00
Leonid Logvinov
258fe8ea50 Render callAsync in templates even if it returns nothing 2018-07-09 11:13:21 +02:00
Leonid Logvinov
813824868e Return AssetProxyId instead of string from proxy.getProxyIdAsync() 2018-07-09 11:13:21 +02:00
Fabio Berger
028184947f Merge pull request #833 from feuGeneA/issue-823
document how to check test coverage on a fork
2018-07-09 10:10:31 +02:00
Amir Bandeali
14c96e0b97 Merge pull request #839 from 0xProject/refactor/contracts/forwarder-interfaces
Refactor forwarder file structure
2018-07-08 20:29:31 -07:00
Brandon Millman
ef03d1ae13 Give environment enums string values 2018-07-08 01:37:22 -07:00
Amir Bandeali
f1613d36ac Move functions out of Forwarder.sol 2018-07-07 23:23:22 -07:00
Amir Bandeali
8314bbbbac Add interfaces and mixins 2018-07-07 22:57:09 -07:00
Amir Bandeali
462f1f00d8 Combine mixins 2018-07-07 22:11:36 -07:00
Amir Bandeali
1c80bba4dd Use interfaces instead of full contracts 2018-07-07 22:11:36 -07:00
fragosti
d22cff0976 Shim shouldShowPortalV2 to always return true 2018-07-06 16:08:35 -07:00
Francesco Agosti
269b56b907 Merge pull request #838 from 0xProject/feature/website/portal-final-touches
Some final polish touches for portal!
2018-07-06 15:38:51 -07:00
fragosti
60ebfcf36d Fix lint errors 2018-07-06 15:21:50 -07:00
fragosti
824c331ea0 Make unlock metamask step look more like mock 2018-07-06 15:17:23 -07:00
fragosti
b9e51d2fad Add updated asset for unlock metamask portal onboarding step 2018-07-06 14:23:00 -07:00
fragosti
9669a4d121 Create Balance component and make token symbols smaller than token amounts 2018-07-06 14:21:30 -07:00
Amir Bandeali
e929fb4337 Merge pull request #826 from 0xProject/refactor/contracts/todos
Address TODOs and small fixes
2018-07-06 13:41:06 -07:00
Brandon Millman
80da9cd31f Merge pull request #835 from 0xProject/feature/website/token-updates
Update token registry icons and asset picker flows
2018-07-06 13:24:55 -07:00
Amir Bandeali
5ed7a1baba Add lint-contracts to default lint command 2018-07-06 13:23:09 -07:00
Amir Bandeali
07c111d1f5 Remove TODOs that won't be addressed 2018-07-06 13:23:09 -07:00
Amir Bandeali
a2024da955 Remove AbiV2 where unused 2018-07-06 13:23:05 -07:00
fragosti
7418926ebb Give Wallet a min height 2018-07-06 13:17:28 -07:00
Brandon Millman
4cc33d270e Merge pull request #828 from 0xProject/feature/website/portal-improvements
Fix some portal bugs, and poll for best gas price
2018-07-06 13:05:27 -07:00
Brandon Millman
f767f5c12c Hard code exchange abi 2018-07-06 13:03:35 -07:00
Amir Bandeali
0ea3b10efd Only reset currentContextAddress if it was previously updated 2018-07-06 11:53:59 -07:00
Amir Bandeali
d634775d40 Change uint => uint256 2018-07-06 11:53:59 -07:00
Francesco Agosti
c4ab5bc653 Merge pull request #829 from 0xProject/bug/web3-wrapper/fix-invalid-transaction-format
Fix invalid transaction format errors when going through `SingerSubprovider`
2018-07-06 11:46:03 -07:00
Amir Bandeali
1d3bdfc374 Merge pull request #834 from 0xProject/fix/contracts/linter
Apply linter to nested contracts
2018-07-06 11:45:06 -07:00
fragosti
72fb1ee36f Fix linting issues 2018-07-06 11:30:01 -07:00
fragosti
afbc4989d5 address CR feedback 2018-07-06 11:23:41 -07:00
Amir Bandeali
d2e422cd5e Apply new linter rules 2018-07-06 10:58:28 -07:00
Brandon Millman
49c7365d93 Update token registry icons and asset picker flows 2018-07-06 10:51:46 -07:00
fragosti
c753e24f0a Export marshaller and use it to unmarshal tx dataa 2018-07-06 10:35:13 -07:00
fragosti
acfbba5476 Revert moving formatUtils into utils 2018-07-06 10:23:24 -07:00
Amir Bandeali
e796734659 Update linter config 2018-07-06 09:51:09 -07:00
F. Eugene Aumson
f172908bde document how to check test coverage on a fork 2018-07-06 10:26:24 -04:00
Leonid Logvinov
16dc4e9f66 Instantiate BlockAndLogStreamer with generic type parameters 2018-07-06 13:36:23 +02:00
Fabio Berger
8eefc89d55 Merge pull request #831 from 0xProject/fix-readme-intros
Update Package Descriptions
2018-07-06 13:10:00 +02:00
Fabio Berger
20d349cea7 Merge pull request #825 from 0xProject/fix-order-watcher
OrderWatcher Fixes
2018-07-06 13:06:12 +02:00
Fabio Berger
22f408f713 Update readme and doc intros 2018-07-06 13:05:13 +02:00
Fabio Berger
1e0fa776c1 Add isVerbose flag and log blockstream recoverable errors rather then bubbling them up 2018-07-06 12:34:03 +02:00
Leonid Logvinov
faf5c84082 Fix imports 2018-07-06 11:21:49 +02:00
Leonid Logvinov
b21f6e4d86 Merge pull request #822 from 0xProject/v2-contract-wrappers-WIP
V2 contract wrappers
2018-07-06 12:10:55 +03:00
Jacob Evans
bc52303402 Types: Move Forwarder Revert Reason into types package 2018-07-06 18:26:59 +10:00
Jacob Evans
2da705e81c Forwarder specify the revert reasons 2018-07-06 18:09:56 +10:00
Jacob Evans
a0601cd052 Forwarder fix linter error 2018-07-06 17:44:17 +10:00
Jacob Evans
ed2c06508b Update to new assertions 2018-07-06 17:43:15 +10:00
Jacob Evans
03b3d74748 Merge pull request #522 from 0xProject/feature/contracts/forwarder
Forwarding contract
2018-07-06 16:29:56 +10:00
Jacob Evans
0557d6a9bf Forwarding contract (squashed commits) 2018-07-06 15:30:07 +10:00
Brandon Millman
d975c0cef3 Merge pull request #827 from 0xProject/feature/website/landing-page-cta
Landing page CTA for portal
2018-07-05 22:03:13 -07:00
fragosti
188bf000b7 Add formatUtils 2018-07-05 18:59:01 -07:00
fragosti
608442b2e8 Add to changelog, rename to formatUtils and lint 2018-07-05 18:56:58 -07:00
fragosti
aefc122caf Add conversion utility file 2018-07-05 18:38:25 -07:00
fragosti
a72eae7ea8 Unmarshall txn data in SignerSubprovider before calling web3wrapper sendTransactionAsync 2018-07-05 18:32:28 -07:00
fragosti
30e3afc0fb Add unmarshallTxData to marshaller 2018-07-05 17:48:02 -07:00
fragosti
97809a03eb Make wallet height responsive 2018-07-05 17:11:50 -07:00
fragosti
f894ffc0cc Poll for gas prices and use fast instead of average for better UX 2018-07-05 15:37:35 -07:00
fragosti
127fbc6e94 Just disable closing onboarding by clicking outside for firefox 2018-07-05 15:16:46 -07:00
Brandon Millman
9f870b3d4e Change call to action link to /portal 2018-07-05 15:12:22 -07:00
Amir Bandeali
51b86742d1 Merge pull request #824 from protofire/v2-prototype-solhint
Add and apply solidity linter (V2, updated)
2018-07-05 15:09:41 -07:00
Brandon Millman
3a85b3212b Unify large and small padding in Portal 2018-07-05 14:42:22 -07:00
Brandon Millman
fd6445439e Implement landing page change in preperation for portal 2018-07-05 14:34:34 -07:00
Brandon Millman
51fa8d3e24 Merge pull request #820 from 0xProject/bug/website/top-bar-layout
Various mobile portal fixes and top bar layout refactor
2018-07-05 14:33:22 -07:00
Brandon Millman
7b8db1156d Various fixes for portal on mobile and top bar layout 2018-07-05 14:31:05 -07:00
Fabio Berger
32ad34d224 properly stop blockstream and pass stateLayer into blockstream 2018-07-05 23:18:55 +02:00
Fabio Berger
cfbb1c440e Add pr number 2018-07-05 22:33:11 +02:00
Fabio Berger
ade2f96ca3 Add changelog notes 2018-07-05 22:32:25 +02:00
Fabio Berger
abb38e1bc0 Don't unsubscribe on Blockstream errors 2018-07-05 22:25:47 +02:00
Fabio Berger
0df36471b7 Pass actual networkId 2018-07-05 22:24:21 +02:00
fragosti
97312c2656 Use default networkId of 1 for ledger dropdown 2018-07-05 11:45:54 -07:00
fragosti
e9e4df4891 Fix onboarding closing on unlock metamask step on click outside 2018-07-05 11:28:34 -07:00
Francesco Agosti
e0f80c5e6a Merge pull request #816 from 0xProject/feature/website/portal-mobile-improvements
Make onboarding and wallet copy dynamic based on OS
2018-07-05 11:09:25 -07:00
Alex Shafranovich
f21b042ed1 Contracts 2.0.0 were linted with solhint 2018-07-05 21:01:14 +03:00
Alex Shafranovich
d8c7c9803c Added Solhint package and 'lint-contracts' npm script 2018-07-05 20:58:52 +03:00
fragosti
302b9deef3 Rename getBestDownloadLink to getBestWalletDownloadLinkAndIsMobile 2018-07-05 10:54:13 -07:00
Leonid Logvinov
0c8264801a Fix tests 2018-07-05 19:11:41 +02:00
Leonid Logvinov
54d1a0359f Fix prettier 2018-07-05 17:09:14 +02:00
Leonid Logvinov
b87e48c113 Fix merge conflicts 2018-07-05 16:51:37 +02:00
Fabio Berger
a874cd2424 Remove legacy logic 2018-07-05 16:42:01 +02:00
Fabio Berger
d9e308e53a Refactor order-watcher to use Blockstream under-the-hood 2018-07-05 16:39:53 +02:00
Leonid Logvinov
efc3536283 Add CHANGELOG entries 2018-07-05 16:30:36 +02:00
Leonid Logvinov
4b7e669d29 Upgrade artifacts 2018-07-05 16:02:26 +02:00
Leonid Logvinov
01c6efeaf1 Merge branch 'v2-prototype' into v2-contract-wrappers-WIP 2018-07-05 17:00:50 +03:00
Leonid Logvinov
22cf7bee5b Merge pull request #814 from 0xProject/feature/fill-scenarios-v2
@0xproject/contract-wrappers V2 refactor. Part 2
2018-07-05 16:59:12 +03:00
Leonid Logvinov
ef890aeac4 Adjust comments 2018-07-05 15:58:42 +02:00
Leonid Logvinov
91e8c00076 Fix comments 2018-07-05 15:58:42 +02:00
Leonid Logvinov
20bf4d8ef9 Improve the comment 2018-07-05 15:58:42 +02:00
Leonid Logvinov
795da130a2 Rename Proxie to Proxy 2018-07-05 15:58:41 +02:00
Leonid Logvinov
51a625d4af Rename compact_artifacts to artifacts 2018-07-05 15:58:41 +02:00
Leonid Logvinov
ab8544b0ff Rearrange assertions t match parameter order 2018-07-05 15:58:41 +02:00
Leonid Logvinov
b68d16820f Fix match orders test and add a validation TODO 2018-07-05 15:58:41 +02:00
Leonid Logvinov
61d9cdced0 Add tests for exchange contract wrapper 2018-07-05 15:58:41 +02:00
Leonid Logvinov
714f9ed207 Add Exchange contract wrapper 2018-07-05 15:56:32 +02:00
Leonid Logvinov
ccccaf8e12 Pass through blockPollingInterval down to contract wrapper 2018-07-05 15:56:31 +02:00
Leonid Logvinov
c3ce9d6104 Export orderStatus and OrderInfo 2018-07-05 15:56:31 +02:00
Leonid Logvinov
d3f602f063 Add blockPollingInterval config to contractWrappers config type 2018-07-05 15:56:31 +02:00
Leonid Logvinov
6b379a8a0f Add contractWrappers.erc721Proxy.getproxyIdAsync 2018-07-05 15:56:31 +02:00
Leonid Logvinov
d1d636f1ca Add contractWrappers.erc20Proxy.getproxyIdAsync 2018-07-05 15:56:31 +02:00
Leonid Logvinov
ba9d3cbdb8 Make it possible to configure block polling interval in base contract wrapper 2018-07-05 15:56:31 +02:00
Leonid Logvinov
bcf8d51806 Add blockPollingIntervalMs as an optional field to contract-wrappers config schemas 2018-07-05 15:05:58 +02:00
Leonid Logvinov
66c0d6724a Add even more entries to postinstall hack 2018-07-05 15:05:58 +02:00
Leonid Logvinov
0f477607f9 Update dummy tokens addresses in token_utils 2018-07-05 15:05:58 +02:00
Leonid Logvinov
c1635f2656 Remove only from tests 2018-07-05 15:05:57 +02:00
Leonid Logvinov
029d91bd7a Add OrderInfo and OrderStatus to types 2018-07-05 15:05:57 +02:00
Leonid Logvinov
03dbad6813 Add OrderTxOptsSchema 2018-07-05 15:05:57 +02:00
Leonid Logvinov
c65b2573c4 Refactor fill-scenarios for V2 2018-07-05 15:05:57 +02:00
Leonid Logvinov
7fbee77875 Export ecSignatureParameterSchema from json-schemas 2018-07-05 15:05:57 +02:00
Leonid Logvinov
3cc1a952ca Add ordersSchema to json-schemas 2018-07-05 15:05:57 +02:00
Leonid Logvinov
9c8de3e933 Fix VRS signature generation in order-utils 2018-07-05 15:05:57 +02:00
Leonid Logvinov
cbdce6b67e Update ABI in compact_artifacts 2018-07-05 15:05:57 +02:00
Leonid Logvinov
a6746ae5cd Upgrade artifacts 2018-07-05 15:05:57 +02:00
Leonid Logvinov
7111f3ffc6 Dump assert version and make the order-watcher depend on the old assert version 2018-07-05 15:05:57 +02:00
Fabio Berger
87a7a4ad2d Merge pull request #821 from 0xProject/remove-web3-from-wrapper
Remove Web3.js From 0x-monorepo 🍾
2018-07-05 15:04:58 +02:00
Leonid Logvinov
1ee2d6ed54 Merge branch 'v2-prototype' into v2-contract-wrappers-WIP 2018-07-05 15:04:01 +02:00
Leonid Logvinov
1eba78e20a Revert all changes to the contracts 2018-07-05 14:49:05 +02:00
Fabio Berger
a1fb438a8c Prettier fixes 2018-07-05 13:03:33 +02:00
Fabio Berger
40d1b0a23c Update json-schema version used by web3-wrapper 2018-07-05 12:35:38 +02:00
Fabio Berger
1c9a657693 Add schema assertion checks for callData and txData 2018-07-05 12:35:16 +02:00
Fabio Berger
11747c6cf4 Make sure from is included in txData 2018-07-05 12:34:15 +02:00
Fabio Berger
2a7b3aecc3 Add CallData schema to json-schemas 2018-07-05 12:33:48 +02:00
Fabio Berger
75babed693 Update assert changelog 2018-07-05 12:07:17 +02:00
Fabio Berger
0a32ae6cb5 Add defaultBlock param to getBalanceInWeiAsync 2018-07-05 12:04:08 +02:00
Fabio Berger
3d67f122a5 Move 'from' check to sendTransaction 2018-07-05 12:03:34 +02:00
Fabio Berger
b0daec8384 Remove bn.js unused dep 2018-07-05 01:56:40 +02:00
Fabio Berger
f5b1fe0e6b Fix linter issues 2018-07-05 01:45:56 +02:00
Fabio Berger
139d289b01 remove stray console.log 2018-07-05 01:39:46 +02:00
Fabio Berger
fd242a9cba Remove web3Utils dep and write necessary utility methods 2018-07-05 01:38:14 +02:00
Fabio Berger
7efa17ef7d Add new param javadoc comment 2018-07-05 00:40:43 +02:00
Fabio Berger
a0b9c7777b merge v2-prototype 2018-07-05 00:38:15 +02:00
Fabio Berger
5204e4c08d Pass 'from' param to estimateGas since it is required 2018-07-05 00:36:30 +02:00
Fabio Berger
1050ecdf3c Refactor Web3Wrapper to no longer use Web3.js & add more test coverage 2018-07-05 00:36:01 +02:00
Fabio Berger
5176d929fa Merge pull request #817 from 0xProject/remove-web3
Remove Web3 Dependencies (exept for in web3-wrapper)
2018-07-04 18:51:17 +02:00
Fabio Berger
d712dc47d9 Removee getContractFromAbi method since we no longer use it and do not recommend others use it 2018-07-04 18:11:50 +02:00
Fabio Berger
8adc6f0faa merge v2-prototype 2018-07-04 16:35:49 +02:00
Fabio Berger
4e783fba57 Add missing undefined check 2018-07-04 16:34:03 +02:00
Jacob Evans
ade620f4f7 Merge pull request #775 from RadarRelay/eth-lightwallet-subprovider-final
Eth lightwallet subprovider (replaces #660)
2018-07-04 20:49:25 +10:00
Jacob Evans
5915f8430c Merge branch 'v2-prototype' into eth-lightwallet-subprovider-final 2018-07-04 20:29:54 +10:00
Jacob Evans
9e0f06d060 Specify the lint rule to disable 2018-07-04 20:06:10 +10:00
Fabio Berger
ce86ae0191 Add assert dep 2018-07-04 08:56:12 +02:00
Fabio Berger
2bec5cb7fd Fix bug in string enum assertion so that we check enum values not keys 2018-07-04 08:55:16 +02:00
Fabio Berger
cd766ea2a1 Add more assertions to Web3Wrapper public methods 2018-07-04 08:54:43 +02:00
Fabio Berger
aeea3817a4 Merge pull request #818 from 0xProject/fix-intermittent-test-failure
Fix intermittent test failure in Subproviders package
2018-07-04 07:48:37 +02:00
fragosti
0f11ae1875 No longer elevate relayer grid tile on long press 2018-07-03 18:22:19 -07:00
fragosti
6e87e3e1ac Fix issue where onboarding doesn't scroll to wallet when starting from relayers page 2018-07-03 18:05:00 -07:00
Fabio Berger
4ba108d12f Use stub in test to avoid difference in setup, how network requests take place 2018-07-04 00:59:18 +02:00
Fabio Berger
8ff17ff960 improve comment 2018-07-04 00:41:19 +02:00
Fabio Berger
0d56daf7ab remove console.log 2018-07-04 00:37:39 +02:00
Fabio Berger
9db0bc262b Fix conditional 2018-07-04 00:36:57 +02:00
Fabio Berger
f410903465 Rename to InjectedProvider and make publicConfigStore optional 2018-07-04 00:29:29 +02:00
Fabio Berger
5f2c303bd8 Remove hack since latest web3-provider-engine fixed underlying issue 2018-07-04 00:23:40 +02:00
Fabio Berger
6aa4984fed Fix instance variable name 2018-07-04 00:22:21 +02:00
Fabio Berger
f5cd1ac82e Fix linter 2018-07-04 00:18:09 +02:00
Fabio Berger
54c0b7b261 Fix type 2018-07-04 00:13:36 +02:00
Fabio Berger
a7902eca1f Fix package.json 2018-07-03 23:57:33 +02:00
Fabio Berger
2b4bb579d4 Rename subprovider in blockchain.ts 2018-07-03 23:57:19 +02:00
fragosti
52c956222e Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/portal-mobile-improvements 2018-07-03 14:43:23 -07:00
Francesco Agosti
0900e0c85e Merge pull request #811 from 0xProject/feature/website/onboarding-polish-2
Add Hotjar, and other small improvements
2018-07-03 14:43:02 -07:00
Fabio Berger
a5653337c1 Remove unused imported Web3.js 2018-07-03 23:36:14 +02:00
Fabio Berger
d097113639 Remove dep on Web3 in Website. Introduced InjectedWeb3 type. 2018-07-03 23:34:51 +02:00
fragosti
9389d64392 Add toshi logo asset 2018-07-03 14:32:11 -07:00
fragosti
931e7e7d71 Prompt user to download Toshi or MetaMask in install wallet onboarding step 2018-07-03 14:28:49 -07:00
Fabio Berger
cce2fb40a1 Fix import 2018-07-03 23:11:59 +02:00
Fabio Berger
547cf4bef3 Refactor testnet-faucet to use web3Wrapper instead of web3 directly 2018-07-03 23:11:49 +02:00
Fabio Berger
d528ce757c Replace use of web3 w/ web3wrapper in subproviders and rename injectedWeb3 to signer subprovider for clarity 2018-07-03 22:58:17 +02:00
fragosti
3b78188fec Show different download links and icons when on mobile 2018-07-03 13:51:58 -07:00
Alex Browne
d91b30faef Merge pull request #812 from 0xProject/fix/revert-assertions-improvements
Improve robustness of revert reason assertions
2018-07-03 13:42:30 -07:00
Alex Browne
dc956020ef Move NodeType caching out of web3-wrapper and into our internal code 2018-07-03 12:57:11 -07:00
fragosti
a52eb81380 Rename isMobile utility fn to be more specific and add isMobileOperatingSystem 2018-07-03 12:48:19 -07:00
fragosti
ab0055d5c6 Add OperatingSystemType and get OS util 2018-07-03 12:45:28 -07:00
fragosti
32c25a2034 Persist whether onboarding is open or close across refreshes 2018-07-03 11:48:34 -07:00
fragosti
c30b42434a Fix linting 2018-07-03 11:31:40 -07:00
fragosti
3c797a6e11 Merge branch 'fixed-position-onboarding' into feature/website/onboarding-polish-2 2018-07-03 11:26:26 -07:00
Brandon Millman
9b864517e2 Merge pull request #799 from 0xProject/feature/website/wallet-menu
Add menu for at the top of wallet and top right component
2018-07-03 11:19:52 -07:00
Fabio Berger
a858e2870b Merge pull request #815 from 0xProject/update-dependencies
Update Blockstream & ProviderEngine
2018-07-03 20:19:08 +02:00
Alex Browne
ce1542da4f Update CHANGELOG.json for ethereum-types and web3-wrapper 2018-07-03 10:59:45 -07:00
Alex Browne
d2ebf4a777 Add TransactionReceiptStatus type to ethereum-types 2018-07-03 10:49:35 -07:00
Alex Browne
c5fcea1dbd Actually cache node type in web3-wrapper 2018-07-03 10:40:54 -07:00
Fabio Berger
5e8ef070e2 Fix alignment 2018-07-03 18:26:12 +02:00
Brandon Millman
2d30c290e9 Remove InstallPrompt 2018-07-03 09:22:52 -07:00
Fabio Berger
688b34710e Update blockstream to latest version, propogate errors to top-level callers 2018-07-03 18:15:20 +02:00
Brandon Millman
afbfc8ba1c Implement clickaway for wallet menu on mobile 2018-07-03 09:06:29 -07:00
Fabio Berger
671f29774b Update web3-provider-engine version w/o caret 2018-07-03 16:56:49 +02:00
Fabio Berger
4c99ac0ca2 Update web3-provider-engine 2018-07-03 15:59:30 +02:00
Leonid Logvinov
0e690608d3 Merge pull request #782 from 0xProject/feature/contract-wrappers-v2
@0xproject/contract-wrappers V2 refactor. Part 1
2018-07-03 15:32:38 +03:00
Fabio Berger
92f6391df5 Merge pull request #801 from feuGeneA/patch-3
in subproviders/package.json, cite typescript-typings only once
2018-07-03 11:53:23 +02:00
Brandon Millman
f2af6e4b3a Add optional onClick to Link simple menu item 2018-07-03 01:51:59 -07:00
Jacob Evans
27c03cffe2 Fix unused imports 2018-07-03 17:01:08 +10:00
Jacob Evans
499915042e Merge branch 'v2-prototype' into eth-lightwallet-subprovider-final 2018-07-03 16:58:08 +10:00
Jacob Evans
1a901554cc compiler and ts lint are confused about ContractEventArgs 2018-07-03 15:39:15 +10:00
Alex Browne
5b64b3ea93 Improve robustness of revert reason assertions 2018-07-02 18:57:33 -07:00
fragosti
6fc5c0cd46 Remove unused import 2018-07-02 18:36:41 -07:00
Brandon Millman
328da21420 Merge pull request #806 from 0xProject/feature/website/mobile-readable-web3-names
Add detection logic for Toshi and Cipher
2018-07-02 18:26:16 -07:00
Brandon Millman
81062d20eb Merge pull request #808 from 0xProject/feature/website/better-balance-formatting
Add better balance formatting rules for balances and usd values
2018-07-02 18:25:58 -07:00
Brandon Millman
835d06dcdc Merge pull request #810 from 0xProject/feature/wesbite/remove-add-balance
Remove increase balance link from balance_bounded_input component
2018-07-02 18:25:43 -07:00
fragosti
8929543b55 Add end comment to hotjar tracking code 2018-07-02 18:15:41 -07:00
fragosti
f62044c1e3 Add media file and remove stray comment 2018-07-02 18:14:21 -07:00
fragosti
a31f7a5112 Implement fixed position onboarding option 2018-07-02 18:12:08 -07:00
Brandon Millman
fe68114f39 Use new lock svg 2018-07-02 17:56:37 -07:00
fragosti
a5231df6d9 Add media query abstraction around ScreenWidths and stop relayer grid hover effect on mobile 2018-07-02 17:26:48 -07:00
Brandon Millman
fd545ec00f Remove increase balance link from balance_bounded_input component 2018-07-02 17:14:46 -07:00
Brandon Millman
73d8a2adf7 Always show the wrap ether row in between ETH and WETH 2018-07-02 17:02:11 -07:00
Brandon Millman
04d11d6fac Add human readable names for Toshi and Cipher 2018-07-02 16:37:22 -07:00
Brandon Millman
2eede4a09e Update start onboarding copy and relayer grid empty color 2018-07-02 16:30:13 -07:00
Brandon Millman
bc7e8ff471 Add better balance formatting rules for balances and usd values 2018-07-02 16:08:02 -07:00
fragosti
73e81c62fb Remove max-width from onboarding card to support iPad 2018-07-02 15:58:53 -07:00
fragosti
8c5dc7cecd Only auto-start onboarding if blockchain is loaded 2018-07-02 15:52:59 -07:00
Francesco Agosti
300c9f09b9 Merge pull request #805 from 0xProject/feature/website/add-alex-to-about
Add Alex Browne to about page
2018-07-02 14:09:31 -07:00
fragosti
06f4427939 Add Alex Browne to about page 2018-07-02 13:15:40 -07:00
Amir Bandeali
b1dc20bbb3 Add developer mailing list link to README 2018-07-02 09:51:51 -07:00
F. Eugene Aumson
4887d1d42f in subproviders, cite typescript-typings only once
`yarn build` was giving the following warning:

warning package.json: "dependencies" has dependency "@0xproject/typescript-typings" with range "^0.4.1" that collides with a dependency in "devDependencies" of the same name with version "^0.4.2"
2018-07-02 11:23:33 -04:00
Fabio Berger
d247d72e3e Merge pull request #803 from 0xProject/fix/publishing/remote-tag-removal
Small publish fixes
2018-07-02 16:20:34 +02:00
Fabio Berger
50957e1d29 Update incorrect versions of deps 2018-07-02 16:04:48 +02:00
Fabio Berger
6aad12a52f Add new changelog entry 2018-07-02 14:26:52 +02:00
Fabio Berger
db0944acde fix prettier 2018-07-02 14:21:49 +02:00
Fabio Berger
e553ef83de Git command outputs logs to stdErr so only way to check for errors if with try/catch 2018-07-02 14:20:42 +02:00
Fabio Berger
a619949a56 Remove remote tag before local one 2018-07-02 14:19:30 +02:00
Fabio Berger
1346fa792a Add logs for when tags get removed 2018-07-02 13:53:44 +02:00
Fabio Berger
b763cdbd4c combine changelog entries since we haven't published yet 2018-07-02 13:53:24 +02:00
Fabio Berger
e4eac14dc9 version outdated 2018-07-02 13:53:05 +02:00
Fabio Berger
bdda1f2992 Throw if changelog version is below package.json version 2018-07-02 13:32:22 +02:00
Fabio Berger
9c7289d7a3 Update outdated changelogs 2018-07-02 13:31:34 +02:00
Fabio Berger
d861caca23 Fix bug where 18 decimal tokens instead of 5 decimal tokens created 2018-07-02 12:31:02 +02:00
Fabio Berger
590033bcb2 Merge pull request #802 from 0xProject/fix/five_decimal_scenario
FillOrder Combinatorial Testing Fixes
2018-07-02 12:24:57 +02:00
Fabio Berger
af1e4574a8 Disable custom-no-magic-number for block 2018-07-02 11:39:07 +02:00
Fabio Berger
7b806fe84d Remove unused variable 2018-07-02 11:18:48 +02:00
Fabio Berger
e54e2ac67b Add .vscode from .gitignore 2018-07-02 11:13:31 +02:00
Fabio Berger
de9f0732a0 Merge branch 'v2-prototype' into fix/five_decimal_scenario
* v2-prototype: (75 commits)
  Update relayer grid tiles to use Text
  Fix build
  Update file structure
  Update 2.0.0 artifacts
  Move ledgerhq module declarations to typescript-typings
  Export LedgerEthereumClient type in subproviders
  Update artifacts
  Add logging and updated artifacts
  Fix migrations
  Run prettier
  Add Kovan artifacts
  Use ledger subprovider
  Add Kovan migrations
  Remove state variable from Link component in Portal
  Make registerAssetProxy append only
  Update staging api link
  Change getTransactionReceipt to awaitTransactionMined
  Move /docs route to the end
  Remove extra call to scrollIntoView for wallet in onboarding
  Update expectRevertReasonOrAlwaysFailingTransactionAsync to check status codes
  ...
2018-07-02 11:12:01 +02:00
Fabio Berger
20acdbf6c3 Add commented out scenarios not run by default 2018-07-02 11:01:15 +02:00
Fabio Berger
6a6d2f73a8 Fix comment 2018-07-02 11:00:32 +02:00
Fabio Berger
f5a8f00af8 Fix validation logic by checking for 0 maker/taker amount before 0 fillTakerAssetAmount since one causes the other during combinatorial testing 2018-07-02 10:52:49 +02:00
Fabio Berger
018a437d62 Print out entire orderFill scenario 2018-07-02 10:51:28 +02:00
Fabio Berger
32d75b6483 Transfer ERC721 token instead of burning, so we can still set an allowance to it in tests 2018-07-02 10:50:48 +02:00
Fabio Berger
cb6cace910 Fix bug where using nullAddress for order instead of actual taker address 2018-07-02 10:49:41 +02:00
Fabio Berger
0326ddd79d Add maker and taker balance/allowance scenarios to generateFillOrderCombination 2018-07-02 10:48:59 +02:00
Jacob Evans
d6f40a9281 Remove duplicated typescript-typings in package.json 2018-07-02 18:14:19 +10:00
Jacob Evans
687802394a Remove duplicate type definitions.
Clear private key earlier
Fix changelog in typescript-typings from bad merge
2018-07-02 18:09:05 +10:00
Jacob Evans
ad570b8ae1 Merge branch 'v2-prototype' into eth-lightwallet-subprovider-final 2018-07-02 11:21:16 +10:00
Jacob Evans
b9165c03af Use PrivateKeySubprovider inside eth lightwallet
There's a loss of information when hex encoding and passing to eth light wallet (chain id is lost). This results in a different signature. While it may work on testnets it is not sufficient for our test cases. We can export the private key and use it in our PrivateKeyWalletSubprovider
2018-07-02 11:09:32 +10:00
F. Eugene Aumson
cfe57f52f4 use bullets, not a task list, for Types of Changes 2018-07-01 20:44:28 -04:00
Brandon Millman
86d4ffe7e5 Lint fixes 2018-07-01 14:51:02 -07:00
Brandon Millman
2dea179333 More cleanup 2018-07-01 14:51:02 -07:00
Brandon Millman
5a7908984e Consolidate logic for common menu items 2018-07-01 14:51:02 -07:00
Brandon Millman
955fdf5d13 Give connected header accessory more padding 2018-07-01 14:51:02 -07:00
Brandon Millman
a6f40d4187 Implement correct behavior for menu in the wallet 2018-07-01 14:50:55 -07:00
Brandon Millman
6daf754f5b Add menu to wallet 2018-07-01 14:50:55 -07:00
Brandon Millman
da8cf9981e Implement simple menu 2018-07-01 14:50:55 -07:00
Brandon Millman
be64184cfa Clean up a bit of the provider display logic 2018-07-01 14:50:55 -07:00
Brandon Millman
3031598843 Implement icon button 2018-07-01 14:50:55 -07:00
Brandon Millman
b9b00e10d3 Update relayer grid tiles to use Text 2018-06-30 12:37:34 -07:00
Amir Bandeali
6c34255a3e Merge pull request #781 from 0xProject/refactor/contracts/fileStructure
Update contracts file structure
2018-06-29 18:36:00 -07:00
Amir Bandeali
41064adc66 Fix build 2018-06-29 18:20:44 -07:00
Amir Bandeali
2fcc36bbad Update file structure 2018-06-29 18:05:40 -07:00
Amir Bandeali
762c0143eb Merge pull request #770 from 0xProject/feature/migrations/kovan-deploy
Add Kovan migrations
2018-06-29 17:49:15 -07:00
Amir Bandeali
6c6f34ee72 Update 2.0.0 artifacts 2018-06-29 17:41:25 -07:00
Francesco Agosti
42b7b0dab9 Merge pull request #787 from 0xProject/feature/website/portal-onboarding-polish
Portal v2 onboarding polish
2018-06-29 17:40:43 -07:00
Amir Bandeali
e58e35e098 Move ledgerhq module declarations to typescript-typings 2018-06-29 17:25:56 -07:00
Amir Bandeali
654b048602 Export LedgerEthereumClient type in subproviders 2018-06-29 17:25:56 -07:00
Amir Bandeali
3ece72af49 Update artifacts 2018-06-29 17:25:56 -07:00
Amir Bandeali
2ef31991c7 Add logging and updated artifacts 2018-06-29 17:25:56 -07:00
Amir Bandeali
d3293a5571 Fix migrations 2018-06-29 17:25:56 -07:00
Amir Bandeali
854752acdf Run prettier 2018-06-29 17:25:56 -07:00
Amir Bandeali
0c889385f1 Add Kovan artifacts 2018-06-29 17:25:56 -07:00
Amir Bandeali
6e1a549fcb Use ledger subprovider 2018-06-29 17:25:56 -07:00
Amir Bandeali
5f0a2953c6 Add Kovan migrations 2018-06-29 17:25:56 -07:00
Amir Bandeali
78b513c52a Merge pull request #797 from 0xProject/refactor/contracts/registerAssetProxy
Make registerAssetProxy append only
2018-06-29 17:25:21 -07:00
fragosti
8ffce78827 Remove state variable from Link component in Portal 2018-06-29 16:47:58 -07:00
Amir Bandeali
d4852092b8 Make registerAssetProxy append only 2018-06-29 16:25:16 -07:00
Brandon Millman
622ce0bf2e Update staging api link 2018-06-29 16:11:57 -07:00
Amir Bandeali
6a197a64e6 Merge pull request #793 from 0xProject/feature/contracts/transferFromFallback
Optimize transferFrom (saves ~2000 gas /fill)
2018-06-29 15:34:56 -07:00
Amir Bandeali
1e4c3ed22b Change getTransactionReceipt to awaitTransactionMined 2018-06-29 15:21:00 -07:00
Brandon Millman
e3521c6388 Move /docs route to the end 2018-06-29 15:20:44 -07:00
fragosti
9d81e069dc Remove extra call to scrollIntoView for wallet in onboarding 2018-06-29 14:04:41 -07:00
Amir Bandeali
8623a30763 Merge pull request #796 from 0xProject/fix/contracts/failingTransactionAssertions
Update expectRevertReasonOrAlwaysFailingTransactionAsync to check status codes
2018-06-29 14:03:28 -07:00
Alex Browne
6cf39896f1 Update expectRevertReasonOrAlwaysFailingTransactionAsync to check status codes 2018-06-29 13:46:42 -07:00
Amir Bandeali
44b6adaa29 Fix deployment to geth 2018-06-29 13:33:22 -07:00
Amir Bandeali
762a6199b2 Fix tests 2018-06-29 13:33:22 -07:00
Amir Bandeali
8da42b12f4 Remove transferFrom, implement in fallback function 2018-06-29 13:33:22 -07:00
fragosti
c473a0444c Bump automatic show onborading delay by 1000ms 2018-06-29 13:30:43 -07:00
fragosti
e693629bbd Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/portal-onboarding-polish 2018-06-29 13:27:19 -07:00
fragosti
0dbe883c3b Fix onboarding always starting 2018-06-29 13:24:31 -07:00
Brandon Millman
cc12bc9247 Merge pull request #792 from 0xProject/feature/website/wallet-polish
Various wallet polish items
2018-06-29 12:01:13 -07:00
Brandon Millman
ddec01e6c1 Change function to a const 2018-06-29 11:56:31 -07:00
Brandon Millman
03bc7bb935 Move wallet scrollIntoView into PortalOnboardingFlow 2018-06-29 11:55:00 -07:00
fragosti
5207dfdc0e Rename userHasAllowances bool to follow proper convention 2018-06-29 11:50:24 -07:00
fragosti
fc40efb761 Allow you to continue the onboarding flow once youve installed metamask and refreshed the page 2018-06-29 11:47:12 -07:00
Amir Bandeali
50556e2609 Merge pull request #774 from 0xProject/style/contracts/abiEncodeAsmComments
Added some comments for ASM hashing
2018-06-29 11:41:23 -07:00
Alex Browne
7a22298597 Merge pull request #794 from 0xProject/fix/devnet-minimum-blocks
Improve reliability of the minimum block number hack for devnet/geth
2018-06-29 11:21:17 -07:00
fragosti
36cadaae46 Use Image component where relevant and add back tracked token timestamp logic 2018-06-29 11:08:48 -07:00
Leonid Logvinov
09e921a562 Fix build after rebase 2018-06-29 17:52:55 +03:00
Leonid Logvinov
13cbaf56b2 Add a comment 2018-06-29 17:52:55 +03:00
Leonid Logvinov
62910c8e89 Assign true values to names vars 2018-06-29 17:52:55 +03:00
Leonid Logvinov
f20e1acad9 Fix a typo 2018-06-29 17:52:55 +03:00
Leonid Logvinov
5dea432ebf Set the interval to 0 in awaitTranscationSuccessAsync 2018-06-29 17:52:55 +03:00
Leonid Logvinov
016d82d766 Make promises dangerous 2018-06-29 17:52:54 +03:00
Leonid Logvinov
260c72cc20 Add a TODO comment 2018-06-29 17:52:54 +03:00
Leonid Logvinov
3d7bcd7ecb Add isSubscriptionToken assertion 2018-06-29 17:52:54 +03:00
Leonid Logvinov
ac9175bf88 Rename approved to approvedAddress 2018-06-29 17:52:54 +03:00
Leonid Logvinov
294d3bbdc1 Use removeUndefinedProperties for txOpts 2018-06-29 17:52:54 +03:00
Leonid Logvinov
6db614251e Rename getApprovedAsync to getApprovedIfExistsAsync 2018-06-29 17:52:54 +03:00
Leonid Logvinov
bcc588efe7 Add HACK comments 2018-06-29 17:52:54 +03:00
Leonid Logvinov
f7b3fc58bc Add assertions for txOpts and methodOpts 2018-06-29 17:52:54 +03:00
Leonid Logvinov
de40497330 Remove v2 artifact scripts 2018-06-29 17:52:54 +03:00
Leonid Logvinov
d84bb7ed7e Remove tokenTransferProxyAddress from config 2018-06-29 17:52:54 +03:00
Leonid Logvinov
f02ada2d11 Add a hack comment 2018-06-29 17:52:54 +03:00
Leonid Logvinov
48970d3424 Fix a typo 2018-06-29 17:52:54 +03:00
Leonid Logvinov
8940b1759d Fix linter errors 2018-06-29 17:52:54 +03:00
Leonid Logvinov
91a50d0f53 Fix addresses in WETH9 and ZRX token artifacts 2018-06-29 17:52:54 +03:00
Leonid Logvinov
ed4f8c5b66 Fix the token supply in migrations 2018-06-29 17:52:53 +03:00
Leonid Logvinov
2f07ee0a8f Dump assert version and make the order-watcher depend on the old assert version 2018-06-29 17:52:53 +03:00
Leonid Logvinov
8dd00a8eef Change event args names after templates change 2018-06-29 17:52:53 +03:00
Leonid Logvinov
d7845a177e Add contract-wrappers -> json-schemas and order-utils to postinstall hack 2018-06-29 17:52:53 +03:00
Leonid Logvinov
7a3be0a320 Change import paths from z_r_x and e_r_c to zrx and erc in migrations 2018-06-29 17:52:53 +03:00
Leonid Logvinov
14cebce304 Regenerate yarn.lock 2018-06-29 17:52:53 +03:00
Leonid Logvinov
9fcf9f2504 Export newly refactored contracts from contract-wrappers and index.ts 2018-06-29 17:52:53 +03:00
Leonid Logvinov
c466ab6cf2 Change artifacts list and add dependencies to package.json 2018-06-29 17:52:53 +03:00
Leonid Logvinov
01bf789ad4 Bump the version so that order-watcher doesn't pick it up 2018-06-29 17:52:53 +03:00
Leonid Logvinov
1a1ab5af54 Refactor event subscription tests 2018-06-29 17:52:53 +03:00
Leonid Logvinov
4089ad7b4b Refactor types 2018-06-29 17:52:53 +03:00
Leonid Logvinov
2adc299c78 Implement ERC721 token wrapper and token transfer proxy with tests 2018-06-29 17:52:53 +03:00
Leonid Logvinov
3aef323c13 Refactor ERC20 token transfer proxy and it's tests 2018-06-29 17:52:53 +03:00
Leonid Logvinov
a655cd046c Refactor ERC20 token wrapper and it's tests 2018-06-29 17:52:53 +03:00
Leonid Logvinov
9c8701f5f6 Refactor ether token wrapper test 2018-06-29 17:52:52 +03:00
Leonid Logvinov
7ac84aff0a Refactor base contract-wrapper class to use new names, artifact format and only decode logs from that contract 2018-06-29 17:52:52 +03:00
Leonid Logvinov
fd13c8f68c Refactor EtherToken contract wrapper to use new names and artifacts format 2018-06-29 17:52:52 +03:00
Leonid Logvinov
532964af42 Use new signature verification method in assertions 2018-06-29 17:52:52 +03:00
Leonid Logvinov
52d1407215 Export txDefaults from web3_wrapper.ts 2018-06-29 17:52:52 +03:00
Leonid Logvinov
ecb7356345 Refactor tokenUtils to not use tokenRegistry 2018-06-29 17:52:52 +03:00
Leonid Logvinov
edda7dae94 Add new test constants 2018-06-29 17:52:52 +03:00
Leonid Logvinov
32da0a376a Skip & refactor artifacts tests 2018-06-29 17:52:52 +03:00
Leonid Logvinov
073e76ee90 Run V2 migrations instead of V1 before tests 2018-06-29 17:52:52 +03:00
Leonid Logvinov
ceba82260f Remove unused params in filter_utils 2018-06-29 17:52:52 +03:00
Leonid Logvinov
a5a61c87fc Start unused parameter names with underscore 2018-06-29 17:52:52 +03:00
Leonid Logvinov
d34feb1e0a Remove old contracts and add new ones to/from artifacts.ts 2018-06-29 17:52:52 +03:00
Leonid Logvinov
6cc5e45183 Remove exchange-related functionality for now 2018-06-29 17:52:52 +03:00
Leonid Logvinov
618c7ef48a Update compact_wrtifacts 2018-06-29 17:52:52 +03:00
Leonid Logvinov
14047f9c7b Change import paths from z_r_x and e_r_c to zrx and erc. Also rename event args after templates change 2018-06-29 17:52:51 +03:00
Leonid Logvinov
f439f162d2 Change import paths from z_r_x and e_r_c to zrx and erc 2018-06-29 17:52:51 +03:00
Leonid Logvinov
5b685b32bd Rename TransferContractEventArgs to MetacoinTransferEventArgs after changing contracts templates 2018-06-29 17:52:51 +03:00
Leonid Logvinov
6ce151c676 Change import paths from z_r_x and e_r_c to zrx and erc 2018-06-29 17:52:51 +03:00
Leonid Logvinov
eb79b5d651 Pin contract-wrappers version 2018-06-29 17:52:51 +03:00
Leonid Logvinov
608e1c8960 Remove unused code/variables from abi-decoder 2018-06-29 17:52:51 +03:00
Leonid Logvinov
f8772d8850 Rename {{*}}ContractEventArgs to {{*}}EventArgs and append {{contractName}} to each event name (ERC721TransferEventArgs instead of TransferContractEventArgs) 2018-06-29 17:52:51 +03:00
Leonid Logvinov
ce2f408864 Update json-schema version to 1.0.0 2018-06-29 17:52:51 +03:00
Leonid Logvinov
c2a362e3ea Add to postinstall hack: rm fill-scenarios/node_modules/@0xproject 2018-06-29 17:52:51 +03:00
Leonid Logvinov
eafdd4d42d Remove generated contract directory before writing new contracts and replace z_r_x and e_r_c with zrx and erc accordingly 2018-06-29 17:52:51 +03:00
Fabio Berger
1a2c58494f Merge pull request #783 from 0xProject/miscenaleous-fixes
Migration Related Miscellaneous fixes
2018-06-29 11:59:49 +02:00
Fabio Berger
68c00976f1 Fix merge 2018-06-29 11:40:05 +02:00
Fabio Berger
aa2616b307 Merge v2-prototype 2018-06-29 11:34:38 +02:00
Jacob Evans
3062c18ebd Merge pull request #795 from 0xProject/miscellaneous-fixes/v2-exchange-register-assets
Register the asset proxies to exchange
2018-06-29 19:31:10 +10:00
Jacob Evans
a83f5241dc Register the asset proxies to exchange 2018-06-29 19:12:42 +10:00
Brandon Millman
f89acb49be Add dollar sign to NullTokenRow 2018-06-29 01:11:02 -07:00
Brandon Millman
2b5f45676f Remove unused imports and variables 2018-06-29 01:07:50 -07:00
Brandon Millman
aedd51a61b Refactor inline styles out of Wallet 2018-06-29 00:59:24 -07:00
Brandon Millman
0b5a49c17d Remove some hardcoded MetaMask colors 2018-06-28 23:31:17 -07:00
Brandon Millman
08f7666d21 Create AccountConnection component 2018-06-28 23:24:57 -07:00
Brandon Millman
81ff99276b Fix scrollbar bug 2018-06-28 23:03:30 -07:00
fragosti
e71862676c Bold all balances in onboarding 2018-06-28 18:02:32 -07:00
fragosti
67777c586d Customize allowance setting onboarding step if you have your allowances set 2018-06-28 18:00:10 -07:00
fragosti
9ada8e4ddf Re-center react-popper on every step 2018-06-28 17:51:39 -07:00
fragosti
0142e7fa8f Fix button hover and active hover state 2018-06-28 17:37:22 -07:00
fragosti
467e9abf5f Show eth balance in add eth balance onboarding step 2018-06-28 17:34:29 -07:00
fragosti
512980d9bd Change onboarding flow to communicate 3 steps 2018-06-28 17:25:58 -07:00
fragosti
e235a63119 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/portal-onboarding-polish 2018-06-28 17:20:05 -07:00
Alex Browne
4c28b66539 Add @0xproject/utils as dependency to dev-utils/package.json 2018-06-28 15:42:56 -07:00
Greg Hysen
46d79e5115 Updated hashing comments as-per PR 2018-06-28 15:41:06 -07:00
Alex Browne
d79994fbb2 Improve reliability of the minimum block number hack for the devnet/geth 2018-06-28 15:32:14 -07:00
Brandon Millman
518a2da027 Merge pull request #791 from 0xProject/bug/website/broken-not-found
Fix NotFound component and render 0x.js docs for /docs
2018-06-28 12:35:18 -07:00
Brandon Millman
71fa92dbeb Fix NotFound component and render 0x.js docs for /docs 2018-06-28 12:24:34 -07:00
Brandon Millman
172d2353dd Start onboarding from relayer index 2018-06-28 11:50:08 -07:00
Brandon Millman
3315006c45 Fix learn how to set up account layout 2018-06-28 11:50:08 -07:00
Brandon Millman
6700745585 Fix typo 2018-06-28 11:50:08 -07:00
Brandon Millman
0ff18058ab Get rid of unused stuff in wallet 2018-06-28 11:50:08 -07:00
Brandon Millman
1a11283086 Fix body overlay on mobile 2018-06-28 11:50:08 -07:00
Brandon Millman
ed559be47c Change learn how to update your account styling 2018-06-28 11:50:08 -07:00
Brandon Millman
a60dd1cbaf Fix key issue and remove WalletDisconnectedItem 2018-06-28 11:50:08 -07:00
Brandon Millman
7ee37fb62a Implement new locked and uninstalled states 2018-06-28 11:50:08 -07:00
Brandon Millman
2970e103db Fix off center icon in wallet 2018-06-28 11:50:08 -07:00
Brandon Millman
78333b3026 Change wallet margin based on hover to prevent re-layout 2018-06-28 11:50:08 -07:00
Brandon Millman
1ca182e741 Update ProviderDisplay with new design 2018-06-28 11:50:08 -07:00
Brandon Millman
8419db53bb Implement provider name in header 2018-06-28 11:50:08 -07:00
Brandon Millman
f76c9bc226 Implement loading body rows 2018-06-28 11:50:08 -07:00
Brandon Millman
6a39a69afe Added Circle component 2018-06-28 11:50:08 -07:00
Francesco Agosti
2474d1d2f4 Merge pull request #780 from 0xProject/feature/website/support-new-metamask
Refactor Blockchain.ts to allow arbitrary provider state changes
2018-06-28 11:36:49 -07:00
fragosti
e4188f5d4c Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/support-new-metamask 2018-06-28 11:17:30 -07:00
Brandon Millman
0fcbd02d50 Merge pull request #762 from 0xProject/feature/website/scroll-to-token
Sort wallet tokens by timestamp added and scroll to newly added token
2018-06-28 10:47:43 -07:00
Brandon Millman
4969797c23 Remove isTracked field on token in favor of trackedTimestamp 2018-06-28 10:39:16 -07:00
Brandon Millman
0e932286d2 Use moment and lodash 2018-06-28 10:38:07 -07:00
Brandon Millman
366a9502dd Sort wallet tokens by timestamp added and scroll to newly added token 2018-06-28 10:38:07 -07:00
Fabio Berger
988a334758 Merge pull request #707 from 0xProject/feature/combinatorial-testing
OrderFill Declarative Testing & Combinatorial Tests [Merge after #760]
2018-06-28 11:04:16 +02:00
Fabio Berger
4fe6269043 Remove unused constants 2018-06-28 10:45:28 +02:00
Fabio Berger
646927962a Reduce the userAddresses to the individual addresses actually used by tests, as well as only deploy the number of ERC20 tokens needed for each test suite 2018-06-28 10:43:37 +02:00
Fabio Berger
b56baefaa6 Add await time constant 2018-06-28 09:34:13 +02:00
Fabio Berger
f49a507297 Add missing awaitTransactionSuccessAsync calls 2018-06-28 09:13:56 +02:00
fragosti
c20549e88d Scroll to top when going to relayers page from onboarding 2018-06-27 19:23:51 -07:00
fragosti
cd16986942 Bring you directly to relayers page once you finish onboarding 2018-06-27 19:21:09 -07:00
fragosti
e481404a14 Remove period in title from last step 2018-06-27 19:07:53 -07:00
fragosti
3dfde15133 Always restart onboarding from 0 and other small improvements 2018-06-27 18:56:14 -07:00
fragosti
4454cfa65d Customize flow depending on what steps you've completed 2018-06-27 18:21:51 -07:00
fragosti
382839464f Break wrapping ETH into a 3rd step 2018-06-27 17:00:07 -07:00
fragosti
cce5585795 Fix animation when coming from bottom 2018-06-27 16:29:38 -07:00
fragosti
26a9fe9127 Fix width issue with onboarding card on mobile 2018-06-27 16:21:50 -07:00
fragosti
47a267c3fa Clicking overlay closes onboarding 2018-06-27 15:14:21 -07:00
fragosti
36836eb942 Fix z index issue with wrap buttons and onboarding cards 2018-06-27 14:45:01 -07:00
fragosti
aad0804a1e Break wrath ETH step into 2 2018-06-27 14:33:04 -07:00
fragosti
3c68d9c297 Fix skip button position on first step 2018-06-27 13:51:37 -07:00
fragosti
ffdc7d13a9 Make onboarding bounce around less 2018-06-27 13:40:52 -07:00
fragosti
c5085d8364 Scroll to wallet when onboarding automatically starts as well 2018-06-27 13:36:38 -07:00
fragosti
00ad7bc470 Change asset for final onboarding step 2018-06-27 13:23:17 -07:00
fragosti
360927ec77 Changing provider to ledger more consistent with previous experience 2018-06-27 11:37:24 -07:00
fragosti
b6f546ebe0 Fix convention stuff 2018-06-27 11:17:32 -07:00
fragosti
2a092143dc Remove IS_MAINNET_ENABLED config 2018-06-27 10:40:07 -07:00
fragosti
de50407953 Rename all corresponding bools to shouldUseLedgerProvider 2018-06-27 10:34:17 -07:00
Fabio Berger
57d5fbfbd8 Merge pull request #766 from perissology/feature/solcov-ignore
[sol-cov] add ability to ignore covering specific code blocks
2018-06-27 19:00:16 +02:00
Fabio Berger
92322c0e07 Remove network 50 details 2018-06-27 18:42:34 +02:00
Fabio Berger
97ed453eb4 Re-generate and clean up artifacts for 2.0.0 2018-06-27 18:34:44 +02:00
Fabio Berger
654b782810 Add missing AssetProxyOwner from compile:v2 command 2018-06-27 18:34:03 +02:00
Fabio Berger
51211a21ba Improve ganache-core's GanacheOpts type and require it instead of any 2018-06-27 18:33:32 +02:00
Fabio Berger
133b6fe240 Encode ZRX address as needed. 2018-06-27 18:32:48 +02:00
Fabio Berger
c824fe8718 Add optimizer settings to migrations compiler.json 2018-06-27 18:31:34 +02:00
Fabio Berger
26d3a487a5 Update ganache-cli to latest 2018-06-27 18:31:18 +02:00
perissology
e0a2afc068 rename function 2018-06-27 07:26:12 -07:00
Fabio Berger
f6e97bb284 Merge pull request #763 from prettymuchbryce/invalid-argument-error
Fix OrderWatcher uncaught Error
2018-06-27 11:55:04 +02:00
Fabio Berger
6c8b998505 Fix tslint 2018-06-27 11:28:41 +02:00
Fabio Berger
f9fab216e9 Merge branch 'v2-prototype' into invalid-argument-error 2018-06-27 11:02:40 +02:00
Fabio Berger
c308359f59 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype:
  Improve 'web3-provider-engine' typings
  Fix build
  Update artifacts
  Add more revert reasons to tests
  Make dispatchTransferFrom revert with reason from AssetProxy on failure
  Remove redundant files, hard code function selector in dispatchTransferFrom, and modify revert reason
  Updated offset of receiverData length to reflect new assetData encoding.
  ERC20 Custom storage layout
  Golf the authorization check
  ERC20 manual memory layout
  ERC20 inline return
  ERC721 inline return
  Golf ERC721 transferFrom
  Inline ERC20 tranferFrom selector constant
  Optimize ERC20 transferFrom
  Polish asset picker layout
  Update relayer grid fallback icon
  Change metamask install link based on browser
  Use ethereumjs-tx@1.3.5 instead of our fork

# Conflicts:
#	packages/contracts/test/asset_proxy/proxies.ts
#	packages/contracts/test/exchange/core.ts
#	packages/migrations/artifacts/2.0.0/DummyERC721Token.json
2018-06-27 10:59:37 +02:00
Fabio Berger
375d667144 Move combinatorial fillOrder tests into the fill_ordere test file 2018-06-27 10:43:12 +02:00
Nikita Galkin
84bd54ba40 Improve 'web3-provider-engine' typings 2018-06-27 09:26:48 +03:00
Amir Bandeali
73c36fe2d2 Merge pull request #773 from 0xProject/feature/contracts/abi-calldata-proxy
Optimize transfer
2018-06-26 18:38:30 -07:00
Amir Bandeali
ec3e9efdaa Fix build 2018-06-26 18:30:20 -07:00
Amir Bandeali
d5c389b7dc Update artifacts 2018-06-26 17:36:44 -07:00
Amir Bandeali
7f233dcb15 Add more revert reasons to tests 2018-06-26 17:34:43 -07:00
Fabio Berger
6a2421c683 Fix tests 2018-06-26 23:17:29 +02:00
Fabio Berger
d66ca7b5cb Fix enum name 2018-06-26 23:17:20 +02:00
fragosti
5e38cbd69c Never use trackedTokenState when fetching new token state 2018-06-26 13:58:31 -07:00
Amir Bandeali
b6d8dcb6e1 Make dispatchTransferFrom revert with reason from AssetProxy on failure 2018-06-26 13:57:55 -07:00
Amir Bandeali
08ee1ab2e6 Remove redundant files, hard code function selector in dispatchTransferFrom, and modify revert reason 2018-06-26 13:57:51 -07:00
fragosti
26edec5773 Fix bug where we are requesting tokens on a different network 2018-06-26 13:43:25 -07:00
fragosti
d72e06842f Remove unused variables 2018-06-26 12:48:00 -07:00
fragosti
0a0da63ac7 Make unsubscribing work 2018-06-26 12:33:38 -07:00
Greg Hysen
873ec898d8 Updated offset of receiverData length to reflect new assetData encoding. 2018-06-26 12:23:19 -07:00
Remco Bloemen
97a70d14a3 ERC20 Custom storage layout 2018-06-26 12:23:19 -07:00
Remco Bloemen
394fbebfa8 Golf the authorization check 2018-06-26 12:23:19 -07:00
Remco Bloemen
b79588c4a0 ERC20 manual memory layout 2018-06-26 12:23:19 -07:00
Remco Bloemen
3b46e82625 ERC20 inline return 2018-06-26 12:23:19 -07:00
Remco Bloemen
dbaf1fcd43 ERC721 inline return 2018-06-26 12:23:19 -07:00
Remco Bloemen
4caf1271e4 Golf ERC721 transferFrom 2018-06-26 12:23:19 -07:00
Remco Bloemen
6921943aff Inline ERC20 tranferFrom selector constant 2018-06-26 12:23:19 -07:00
Remco Bloemen
3ce90b8257 Optimize ERC20 transferFrom 2018-06-26 12:23:19 -07:00
fragosti
3866154b50 Fix stateful ledger dialog edge state 2018-06-26 12:16:10 -07:00
fragosti
64ed2464cf Get things working with legacy portal 2018-06-26 12:09:20 -07:00
fragosti
e27780aee9 Fix subtle issues with ledger config dialog 2018-06-26 11:59:23 -07:00
Brandon Millman
744e6e60c5 Polish asset picker layout 2018-06-26 11:17:00 -07:00
fragosti
f70c1ff009 Ledger to metamask to ledger working 2018-06-26 11:01:50 -07:00
Brandon Millman
3a808fe7fd Update relayer grid fallback icon 2018-06-26 10:40:59 -07:00
Brandon Millman
2ca169b3c4 Merge pull request #777 from 0xProject/feature/website/browser-detection
Change metamask install link based on browser
2018-06-26 10:29:26 -07:00
Alex Browne
098d486291 Merge pull request #776 from 0xProject/ethereum-js-tx-1.3.5
Use ethereumjs-tx@1.3.5 instead of our fork
2018-06-26 10:22:53 -07:00
Fabio Berger
ec4fb70b80 Merge pull request #760 from 0xProject/refactor/check-revert-reasons
Check Revert Reasons in Contract Tests
2018-06-26 19:20:19 +02:00
Fabio Berger
2a82807be4 Fix type issue 2018-06-26 19:16:57 +02:00
Fabio Berger
43ae868c69 Merge branch 'refactor/check-revert-reasons' into feature/combinatorial-testing
* refactor/check-revert-reasons:
  Temporarily switch revert reasons to `TransferFailed`. Should be `InvalidAmount` but because of an oversight in the assembly implementation of `dispatchTransferFrom`, it always throws `TransferFailed`
  Expect RevertReason be passed in, not string
  Rename RevertReasons to RevertReason since singular enum names are more common

# Conflicts:
#	packages/contracts/test/asset_proxy/proxies.ts
#	packages/contracts/test/exchange/core.ts
2018-06-26 18:53:44 +02:00
Fabio Berger
1bc742aed1 Temporarily switch revert reasons to TransferFailed. Should be InvalidAmount but because of an oversight in the assembly implementation of dispatchTransferFrom, it always throws TransferFailed 2018-06-26 18:49:10 +02:00
Fabio Berger
6dc852774e Update AbstractAssetWrapper 2018-06-26 08:52:25 +02:00
Fabio Berger
7967ebed57 Rename to singular 2018-06-26 08:51:40 +02:00
Fabio Berger
105b927397 Fix merge issues 2018-06-26 08:43:37 +02:00
Fabio Berger
9219f9d8ae Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (21 commits)
  Don't use variables for revert reasons
  Add comments to dispatchTransferFrom
  Document IAssetData
  Compute bytes4 proxyid constants
  Return inplace bytes in LibBytes.readBytesWithLength
  Add Greg's documentation to MixinErc721Transfer
  Add Greg's documentation to MixinErc20Transfer
  Gas golf the transfer success logic
  Optimize like in PR #767
  Run prettier and fix linting errors
  Fix tests
  Update tests
  Fix AssetProxyUtils
  Update tests
  Fix ERC721Proxy TokenId
  Update AssetProxyUtils
  Add IAssetData
  WIP
  ABI encoded asset data
  Remove proxyId argument from dispatchTransferFrom
  ...

# Conflicts:
#	packages/contracts/test/asset_proxy/proxies.ts
2018-06-26 08:13:59 +02:00
Fabio Berger
f780e6f235 Expect RevertReason be passed in, not string 2018-06-26 08:11:32 +02:00
Fabio Berger
27670f4da6 Rename RevertReasons to RevertReason since singular enum names are more common 2018-06-26 08:11:14 +02:00
Fabio Berger
e051743a3d Merge branch 'v2-prototype' into refactor/check-revert-reasons
* v2-prototype: (21 commits)
  Don't use variables for revert reasons
  Add comments to dispatchTransferFrom
  Document IAssetData
  Compute bytes4 proxyid constants
  Return inplace bytes in LibBytes.readBytesWithLength
  Add Greg's documentation to MixinErc721Transfer
  Add Greg's documentation to MixinErc20Transfer
  Gas golf the transfer success logic
  Optimize like in PR #767
  Run prettier and fix linting errors
  Fix tests
  Update tests
  Fix AssetProxyUtils
  Update tests
  Fix ERC721Proxy TokenId
  Update AssetProxyUtils
  Add IAssetData
  WIP
  ABI encoded asset data
  Remove proxyId argument from dispatchTransferFrom
  ...

# Conflicts:
#	packages/contracts/test/asset_proxy/proxies.ts
2018-06-26 08:07:37 +02:00
Fabio Berger
fb03003b3a Fix inconsistency between contract and reference implementation of order validation logic 2018-06-26 07:50:24 +02:00
Brandon Millman
e52d0a3512 Change metamask install link based on browser 2018-06-25 17:48:36 -07:00
Amir Bandeali
cba92a01b6 Merge pull request #743 from 0xProject/feature/contracts/abi-encoded
ABI encode assetData fields
2018-06-25 16:53:15 -07:00
Alex Browne
0a87364101 Use ethereumjs-tx@1.3.5 instead of our fork 2018-06-25 16:40:33 -07:00
Amir Bandeali
a89908540f Don't use variables for revert reasons 2018-06-25 16:34:06 -07:00
fragosti
c4e2dcafa4 Have basic network switching working 2018-06-25 16:26:34 -07:00
Amir Bandeali
0163984ea4 Add comments to dispatchTransferFrom 2018-06-25 16:19:08 -07:00
Remco Bloemen
db3ce08cab Document IAssetData 2018-06-25 16:19:08 -07:00
Remco Bloemen
1076959006 Compute bytes4 proxyid constants 2018-06-25 16:19:08 -07:00
Remco Bloemen
5127cbb22c Return inplace bytes in LibBytes.readBytesWithLength 2018-06-25 16:19:08 -07:00
Remco Bloemen
9175b43542 Add Greg's documentation to MixinErc721Transfer 2018-06-25 16:19:07 -07:00
Remco Bloemen
562fec01d8 Add Greg's documentation to MixinErc20Transfer 2018-06-25 16:19:07 -07:00
Remco Bloemen
b8051c8fed Gas golf the transfer success logic 2018-06-25 16:19:07 -07:00
Remco Bloemen
4df66a4802 Optimize like in PR #767 2018-06-25 16:19:07 -07:00
Amir Bandeali
a2ff63daa5 Run prettier and fix linting errors 2018-06-25 16:19:07 -07:00
Amir Bandeali
7ce0f9682f Fix tests 2018-06-25 16:19:07 -07:00
Remco Bloemen
3c6d0dc3e0 Update tests 2018-06-25 16:19:07 -07:00
Remco Bloemen
64a6fb2344 Fix AssetProxyUtils 2018-06-25 16:19:07 -07:00
Remco Bloemen
07734a5184 Update tests 2018-06-25 16:19:07 -07:00
Remco Bloemen
32d4994219 Fix ERC721Proxy TokenId 2018-06-25 16:19:07 -07:00
Remco Bloemen
08d22d2f3c Update AssetProxyUtils 2018-06-25 16:19:07 -07:00
Remco Bloemen
b7b0185baf Add IAssetData 2018-06-25 16:19:07 -07:00
Remco Bloemen
7b0c13c121 WIP 2018-06-25 16:19:07 -07:00
Remco Bloemen
a98ecc05af ABI encoded asset data 2018-06-25 16:19:07 -07:00
Remco Bloemen
f7337c1a05 Remove proxyId argument from dispatchTransferFrom 2018-06-25 16:19:07 -07:00
fragosti
53e2cda4c8 Remove existing networkId watching logic from BlockchainWatcher 2018-06-25 16:01:26 -07:00
Fabio Berger
8064914bb7 Prettier fixes 2018-06-25 23:17:56 +02:00
Fabio Berger
6bb2203f79 Small stylistic tweaks 2018-06-25 23:07:27 +02:00
Fabio Berger
3d56817da1 Update yarn.lock 2018-06-25 23:00:19 +02:00
Fabio Berger
31e3b9ff8b Fix and imprrove ethLightWalletSubprovider 2018-06-25 22:59:41 +02:00
Fabio Berger
b2e32aaf58 Remove legacy named subprovider 2018-06-25 22:59:24 +02:00
Fabio Berger
699de9174e Format type 2018-06-25 22:59:04 +02:00
Fabio Berger
1dd9ec4d5a Remove duplicate type 2018-06-25 22:58:50 +02:00
Fabio Berger
87d66ccf6c Fix Tslint issues 2018-06-25 22:58:36 +02:00
Fabio Berger
1134ff1075 Fix tslint issues 2018-06-25 20:17:00 +02:00
Fabio Berger
178676ef8c Fix lint errors 2018-06-25 20:08:00 +02:00
Greg Hysen
94740155e5 Comments for ASM hashing 2018-06-25 11:02:31 -07:00
Fabio Berger
9341afe764 Merge pull request #772 from 0xProject/add-coverage-instructions
Improve Contracts README Testing Section
2018-06-25 19:58:15 +02:00
Cavan
7ce1e9b18d Add eth-lightwallet subprovider and tests 2018-06-25 19:39:23 +02:00
Cavan
1821f60fb5 Move eth-lightwallet declaration to typings 2018-06-25 19:08:16 +02:00
Cavan
235d78565e Format subprovider using prettier 2018-06-25 19:06:22 +02:00
Cavan
db5880539b Update changelogs 2018-06-25 19:01:53 +02:00
Cavan
76f4d67f33 Remove timestamps and fix typings 2018-06-25 18:58:25 +02:00
Bryce
e59c57106c Run prettier 2018-06-25 09:44:56 -07:00
Cavan
bb4c748bf1 Formatting and standards updates 2018-06-25 18:42:13 +02:00
perissology
92cb9c3807 add /*solcov ignore next*/ tests 2018-06-25 08:18:02 -07:00
perissology
1a4e99431b support ignoring entire contracts 2018-06-25 07:55:19 -07:00
Fabio Berger
ec9d1ca57e Document all the contract test options in README 2018-06-25 15:18:02 +02:00
Fabio Berger
71c9b98896 Fix revertReason 2018-06-25 14:23:35 +02:00
Fabio Berger
71bac8c60b Update yarn.lock 2018-06-25 13:51:41 +02:00
Fabio Berger
7b0f7c2e5c Remove no longer used method 2018-06-25 13:51:18 +02:00
Fabio Berger
ad67a6add5 Check revert reasons in declarative and combinatorial tests 2018-06-25 13:51:00 +02:00
Fabio Berger
1353723b58 merge check-revert-reasons 2018-06-25 13:02:38 +02:00
Fabio Berger
f811c07454 Move RevertReasons to @0xproject/types package 2018-06-25 12:59:26 +02:00
Fabio Berger
bb85382824 Add missing import 2018-06-25 12:47:44 +02:00
Fabio Berger
3ed4a1ba20 Add missing import 2018-06-25 12:47:13 +02:00
Fabio Berger
c50da5d034 merge check-revert-reasons 2018-06-25 12:32:16 +02:00
Fabio Berger
9b196ba68c Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (97 commits)
  Fix typos in comments
  Add modifier and tests for removeAuthorizedAddressAtIndex
  Update and add tests
  Change removeAuthorizedAddress => removeAuthorizedAddressAtIndex
  Move isFunctionRemoveAuthorizedAddress to test
  Fix usage of `popLastByte`
  Fix LibBytes is a library
  Remove `areBytesEqual`
  Fix usage of `contentAddress()`
  Clean low bits in bytes4
  Clean high bits in address
  Refactor LibBytes.readBytes4 for consistency
  Fix LibBytes.equals
  Add trailing garbage testcase for LibBytes.equals
  Rename bytes.equals
  Add slice and sliceDestructive
  Rename bytes.rawAddress and add bytes.contentAddress
  Rename read/writeBytesWithLength
  Using LibBytes for bytes
  Make LibBytes a library
  ...

# Conflicts:
#	packages/contracts/src/utils/constants.ts
#	packages/contracts/test/exchange/core.ts
2018-06-25 11:49:14 +02:00
Fabio Berger
df79fb19af Merge branch 'v2-prototype' into refactor/check-revert-reasons
* v2-prototype: (48 commits)
  Fix typos in comments
  Add modifier and tests for removeAuthorizedAddressAtIndex
  Update and add tests
  Change removeAuthorizedAddress => removeAuthorizedAddressAtIndex
  Move isFunctionRemoveAuthorizedAddress to test
  Fix usage of `popLastByte`
  Fix LibBytes is a library
  Remove `areBytesEqual`
  Fix usage of `contentAddress()`
  Clean low bits in bytes4
  Clean high bits in address
  Refactor LibBytes.readBytes4 for consistency
  Fix LibBytes.equals
  Add trailing garbage testcase for LibBytes.equals
  Rename bytes.equals
  Add slice and sliceDestructive
  Rename bytes.rawAddress and add bytes.contentAddress
  Rename read/writeBytesWithLength
  Using LibBytes for bytes
  Make LibBytes a library
  ...

# Conflicts:
#	packages/contracts/src/contracts/current/utils/Ownable/Ownable.sol
#	packages/contracts/test/libraries/lib_bytes.ts
2018-06-25 11:45:17 +02:00
Leonid Logvinov
f8bde5ab9b Merge pull request #735 from feuGeneA/metacoin-independence
Metacoin independence
2018-06-25 11:35:24 +02:00
Jacob Evans
0cd37cbf7e Merge pull request #758 from 0xProject/fix/order-utils/known-order-hash
Fix known order hash value test in order-utils
2018-06-25 15:47:07 +10:00
Remco Bloemen
d621e4201d Merge pull request #698 from 0xProject/fix/contracts/using-libbytes
Fixes and refactoring regarding LibBytes
2018-06-23 14:08:40 +02:00
Remco Bloemen
82af1df3c3 Fix typos in comments 2018-06-23 13:55:02 +02:00
Amir Bandeali
ea8c2b8d69 Add modifier and tests for removeAuthorizedAddressAtIndex 2018-06-23 13:53:39 +02:00
Amir Bandeali
8ddcb6c841 Update and add tests 2018-06-23 13:53:39 +02:00
Amir Bandeali
1681361aed Change removeAuthorizedAddress => removeAuthorizedAddressAtIndex 2018-06-23 13:53:39 +02:00
Remco Bloemen
6a6f98299d Move isFunctionRemoveAuthorizedAddress to test 2018-06-23 13:53:39 +02:00
Remco Bloemen
19ba272d62 Fix usage of popLastByte 2018-06-23 13:53:39 +02:00
Remco Bloemen
2f8ceca2ef Fix LibBytes is a library 2018-06-23 13:53:39 +02:00
Remco Bloemen
ba1baafca5 Remove areBytesEqual 2018-06-23 13:53:38 +02:00
Remco Bloemen
20a07494f6 Fix usage of contentAddress() 2018-06-23 13:53:38 +02:00
Remco Bloemen
c66477c690 Clean low bits in bytes4 2018-06-23 13:53:38 +02:00
Remco Bloemen
5c612a186f Clean high bits in address 2018-06-23 13:53:38 +02:00
Remco Bloemen
943e556f43 Refactor LibBytes.readBytes4 for consistency 2018-06-23 13:53:38 +02:00
Remco Bloemen
4bf4f96f47 Fix LibBytes.equals 2018-06-23 13:53:38 +02:00
Remco Bloemen
384cd2f605 Add trailing garbage testcase for LibBytes.equals 2018-06-23 13:53:38 +02:00
Remco Bloemen
425af46f98 Rename bytes.equals 2018-06-23 13:53:38 +02:00
Remco Bloemen
c83ee04662 Add slice and sliceDestructive 2018-06-23 13:53:38 +02:00
Remco Bloemen
2054cd78da Rename bytes.rawAddress and add bytes.contentAddress 2018-06-23 13:53:38 +02:00
Remco Bloemen
88982f98ff Rename read/writeBytesWithLength 2018-06-23 13:53:38 +02:00
Remco Bloemen
2ea0b839d3 Using LibBytes for bytes 2018-06-23 13:53:38 +02:00
Remco Bloemen
afd83e59b8 Make LibBytes a library 2018-06-23 13:53:38 +02:00
Remco Bloemen
7f84049538 Merge LibMem and LibBytes 2018-06-23 13:53:38 +02:00
Remco Bloemen
98840c9c5f Use provided mem in refernce memcpy 2018-06-23 13:53:38 +02:00
Amir Bandeali
26cacfa247 Merge pull request #749 from 0xProject/feature/contracts/transactionHashAsm
Converted `hashZeroExTransaction` to assembly. Saves 1k gas
2018-06-22 16:57:50 -07:00
Bryce Neal
4b2d27b5e5 CHANGELOG spacing 2018-06-22 16:57:49 -07:00
Bryce
69625946b1 Typings and comment 2018-06-22 16:56:19 -07:00
Bryce
f7fe9b0961 Update at abi_decoder 2018-06-22 16:41:47 -07:00
Greg Hysen
7fcd34eb36 Apply mask to address to zero-out unused bytes. 2018-06-22 16:35:50 -07:00
Brandon Millman
1f5848ba82 Remove extra border from the bottom of the wallet 2018-06-22 16:07:07 -07:00
perissology
bbd414bdcd add ability to ignore covering specific code blocks 2018-06-22 15:59:36 -07:00
Brandon Millman
a1737a28d0 Do not render ZRX or WETH as removable tracked tokens 2018-06-22 15:57:34 -07:00
Brandon Millman
66be42d1f8 Center items in portal drawer header 2018-06-22 15:33:58 -07:00
Francesco Agosti
c984c0f2c0 Merge pull request #764 from 0xProject/feature/website/relay-grid-stacking-bug
Fix issue where hovered tiles appear over top bar
2018-06-22 15:16:13 -07:00
fragosti
89d2bb7ecd Fix issue where hovered tiles appear over top bar 2018-06-22 14:32:21 -07:00
Bryce Neal
9f8cad93f7 CHANGELOG spacing 2018-06-22 14:08:21 -07:00
Bryce Neal
a207260fe0 Fix CHANGELOG spacing. 2018-06-22 14:07:19 -07:00
Bryce
1ef4a47255 Fix spacing 2018-06-22 14:06:45 -07:00
Bryce
b8aa68b4d1 Add CHANGELOG entry 2018-06-22 14:05:23 -07:00
Bryce
61edbac6e5 Remove package-lock 2018-06-22 14:02:29 -07:00
Bryce
d315133d34 Re-throw if not INVALID_ARGUMENT 2018-06-22 14:01:14 -07:00
Bryce
82d59dbea8 Address INVALID_ARGUMENT issue 2018-06-22 13:35:49 -07:00
Francesco Agosti
42884e0871 Merge pull request #746 from 0xProject/feature/website/relayer-grid-polish
Relayer grid polish
2018-06-22 13:11:33 -07:00
fragosti
7fb8b546f9 Remove unecessary position relative rules 2018-06-22 12:22:31 -07:00
fragosti
80fe1938b8 Fix tslint error 2018-06-22 12:04:45 -07:00
fragosti
2409afae95 Merge https://github.com/0xProject/0x-monorepo into v2-prototype 2018-06-22 11:54:37 -07:00
fragosti
06705f9e88 Remove diverse from about page 2018-06-22 11:54:24 -07:00
fragosti
2b408e71ac Use Ops instead of Operations in Mels description 2018-06-22 11:47:57 -07:00
Brandon Millman
b097193486 Merge pull request #750 from 0xProject/bug/website/fix-add-token
Various add token flow bugs
2018-06-22 11:43:02 -07:00
Brandon Millman
543f2c91fe Pulled out reset AssetPicker state into a common variable 2018-06-22 11:37:57 -07:00
fragosti
05c0088445 Comment out Chris, and move Mel up in about page 2018-06-22 11:22:33 -07:00
Fabio Berger
2f6f815d81 Fix tslint 2018-06-22 18:54:18 +02:00
Fabio Berger
1e03fbe1a8 Fix prettier 2018-06-22 18:50:02 +02:00
Fabio Berger
4409f11b24 Rename ContractLibErrors to RevertReasons 2018-06-22 18:45:45 +02:00
Fabio Berger
7a216901be Remove revert reason 'Exchange' prefix 2018-06-22 18:41:55 +02:00
Fabio Berger
0e7c254b93 Move constants over to ContractLibError enum and update all tests 2018-06-22 18:36:15 +02:00
Fabio Berger
ba14850c9a Standardize ERC20 error strings given convention 2018-06-22 18:35:35 +02:00
Fabio Berger
59d3a21993 Fix test now that contract reverts with message 2018-06-22 17:39:41 +02:00
Fabio Berger
d2faa49bf4 Merge branch 'v2-prototype' into refactor/check-revert-reasons
* v2-prototype:
  Check that assetProxy exists before attempting transfer
2018-06-22 17:15:51 +02:00
Fabio Berger
438c0e27ea Merge pull request #748 from 0xProject/fix/contracts/nullAssetProxy
Check that assetProxy exists before attempting transfer
2018-06-22 17:14:22 +02:00
Fabio Berger
4c14372b4a Add revert reason checks to wrapper tests 2018-06-22 17:12:52 +02:00
Fabio Berger
8b4077d7de Fix tests 2018-06-22 17:12:31 +02:00
Fabio Berger
914b009361 Change Whitelist error messages to conform to rest and added revert reason checks to transactions tests 2018-06-22 17:12:17 +02:00
Jacob Evans
b2a4b7eb88 Fix known order hash value test 2018-06-22 23:00:22 +10:00
Fabio Berger
daa50442c9 Add revert reason checks to match_orders tests 2018-06-22 14:28:01 +02:00
Fabio Berger
76fd7f47eb Fix tests 2018-06-22 14:13:44 +02:00
Fabio Berger
fbf840cb68 Merge branch 'v2-prototype' into refactor/check-revert-reasons
* v2-prototype:
  Update ganache-core in yarn.lock
  Add coverage and test:circleci command to sra-report
  Add missing artifacts
  Skip failing tests temporarily
  Fix web3-wrapper test
  fix name
  Add missing package tests from circleci
2018-06-22 13:26:59 +02:00
Fabio Berger
798a647b71 Merge pull request #757 from 0xProject/fix/circle-ci
Add missing package tests from circleci
2018-06-22 13:26:12 +02:00
Fabio Berger
26a0b09064 Update ganache-core in yarn.lock 2018-06-22 13:12:55 +02:00
Fabio Berger
98570b5da1 Add coverage and test:circleci command to sra-report 2018-06-22 12:50:52 +02:00
Fabio Berger
e923d7dafb Add missing artifacts 2018-06-22 12:33:23 +02:00
Fabio Berger
64b6861880 Skip failing tests temporarily 2018-06-22 12:33:10 +02:00
Fabio Berger
c46e11cae2 Fix web3-wrapper test 2018-06-22 12:32:12 +02:00
Fabio Berger
82ccfa21e1 fix name 2018-06-22 12:02:40 +02:00
Fabio Berger
13f7fc1fd2 Add missing package tests from circleci 2018-06-22 11:59:14 +02:00
Fabio Berger
018cc14a87 Fix expected version in test 2018-06-22 10:47:38 +02:00
Fabio Berger
3ce295a2af Merge branch 'v2-prototype' into refactor/check-revert-reasons
* v2-prototype: (40 commits)
  Use make-promises-safe as a preloader instead of manually importing
  Updated compiler runs to be 1,000,000
  Add event to setSignatureValidatorApproval, rename signer => signerAddress accross all contracts
  Add senderAddress to Fill and Cancel logs, add comments to events and types
  Fix Island component
  Add missing image assets for Chris and Mel
  Fix some bugs in sol-cov
  Remove unreachable PreSigned check
  Fix linting
  Buttons look hella disabled now
  Remove border radius, fix width issue for unlock step
  Add Chris and Mel to about page
  fix linter issues
  only call getLocationByOffset if source if defined
  Set settleOrder and settleMatchedOrders to private
  Prevent prettier issue
  Support mobile friendly onboarding flows
  Removed MixinSettlement. Moved `settleOrder` into `MixinExchangeCore` and `settleMatchedOrders` into `MixinMatchOrders`
  Migrations after rebasing
  Linter
  ...
2018-06-22 10:39:07 +02:00
Fabio Berger
a30107ab86 Check revert reason in dispatcher tests 2018-06-22 10:38:08 +02:00
Fabio Berger
d8df6968d3 remove unused import 2018-06-22 10:37:25 +02:00
Fabio Berger
0515c6acde Merge pull request #752 from 0xProject/make-promises-safe-preloader
Use make-promises-safe as a preloader instead of manually importing
2018-06-22 10:32:06 +02:00
Amir Bandeali
607b44e01d Check that assetProxy exists before attempting transfer 2018-06-21 22:45:15 -07:00
Amir Bandeali
5c0bae2070 Merge pull request #751 from 0xProject/feature/contracts/compilerRuns
Updated compiler runs to be 1,000,000
2018-06-21 22:06:31 -07:00
Alex Browne
4012e31115 Use make-promises-safe as a preloader instead of manually importing 2018-06-21 19:17:33 -07:00
Greg Hysen
2d8e9eda56 Converted hashZeroExTransaction to assembly. Saves 1k gas 2018-06-21 18:49:17 -07:00
Brandon Millman
4375a0e07e Fix state mutation in reducer 2018-06-21 18:06:34 -07:00
Brandon Millman
a07cfb7abc Do not add empty token to local storage 2018-06-21 18:06:34 -07:00
Greg Hysen
c131d82699 Updated compiler runs to be 1,000,000 2018-06-21 17:58:39 -07:00
fragosti
de2dcbae5a Lint and fix typo 2018-06-21 17:42:37 -07:00
fragosti
b0000bb276 Fix z-index issues 2018-06-21 17:40:33 -07:00
fragosti
82789d5315 Fix issues that arose from merge 2018-06-21 17:40:33 -07:00
Brandon Millman
3df5882711 Remove Background component 2018-06-21 17:40:33 -07:00
Brandon Millman
b6765b849c Padding adjustment 2018-06-21 17:40:33 -07:00
Brandon Millman
df94e5f164 Remove styles from Portal component 2018-06-21 17:40:33 -07:00
Brandon Millman
79edc12c76 Add Background component 2018-06-21 17:40:33 -07:00
Brandon Millman
bd03151c2a Various relayer grid ui polish items 2018-06-21 17:40:33 -07:00
Amir Bandeali
7c0fdc7ecf Merge pull request #740 from 0xProject/feature/contracts/updateEvents
Update events
2018-06-21 17:14:14 -07:00
Amir Bandeali
b333ed91de Add event to setSignatureValidatorApproval, rename signer => signerAddress accross all contracts 2018-06-21 16:10:12 -07:00
Amir Bandeali
6a073d5f86 Add senderAddress to Fill and Cancel logs, add comments to events and types 2018-06-21 16:09:38 -07:00
Alex Browne
c7159b2be4 Merge pull request #747 from 0xProject/fix/sol-cov-bugs
Fix some bugs in sol-cov
2018-06-21 13:50:30 -07:00
Amir Bandeali
2d98193c83 Merge pull request #744 from NoteGio/v2-prototype-unreachable
Remove unreachable PreSigned check
2018-06-21 13:38:23 -07:00
fragosti
685756f9d5 Fix Island component 2018-06-21 13:26:33 -07:00
fragosti
535bb364b6 Add missing image assets for Chris and Mel 2018-06-21 13:17:51 -07:00
Francesco Agosti
c740539f48 Merge pull request #739 from 0xProject/feature/website/mobile-friendly-onboarding
Add support for mobile-friendly onboarding flows
2018-06-21 13:16:13 -07:00
Alex Browne
4cf331067b Fix some bugs in sol-cov 2018-06-21 13:14:13 -07:00
Austin Roberts
a3ba7683f4 Remove unreachable PreSigned check
This code was unreachable, as it had the exact same condition as line 206.
2018-06-21 14:15:20 -05:00
fragosti
5edfec68cf Fix linting 2018-06-21 12:12:44 -07:00
fragosti
eb494f78fa Buttons look hella disabled now 2018-06-21 12:09:38 -07:00
fragosti
d963941be0 Remove border radius, fix width issue for unlock step 2018-06-21 11:33:47 -07:00
Francesco Agosti
8ab65fdde4 Merge pull request #742 from 0xProject/feature/website/chris-mel-about-page
Add Chris and Mel to about page
2018-06-21 11:32:10 -07:00
fragosti
8e2c0bb977 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/mobile-friendly-onboarding 2018-06-21 11:06:53 -07:00
fragosti
f1f1064f70 Add Chris and Mel to about page 2018-06-21 10:57:26 -07:00
Brandon Millman
88500e3714 Merge pull request #734 from 0xProject/feature/website/shadow-styling
Update Island shadow styling and use Island in more places
2018-06-21 10:31:48 -07:00
Leonid Logvinov
eae2a4df8b Merge pull request #702 from perissology/feature/missing-sources
[sol-cov] Only collect coverage for provided sources
2018-06-21 19:28:35 +02:00
perissology
ade8e95d2e fix linter issues 2018-06-21 09:12:30 -07:00
Fabio Berger
a0b225b8b1 Test revert reasons in proxy tests 2018-06-21 17:43:48 +02:00
Fabio Berger
323e8756ba remove only 2018-06-21 17:27:26 +02:00
Fabio Berger
ada5428df7 Check revert reasons in Authorizable tests 2018-06-21 17:23:59 +02:00
Fabio Berger
7869c19245 Change revert reason in ownable to be similar to all other revert reasons 2018-06-21 17:23:42 +02:00
Fabio Berger
5706b29c8c remove .only 2018-06-21 17:06:44 +02:00
Fabio Berger
8ff7b2405f Update yarn.lock 2018-06-21 16:53:14 +02:00
Fabio Berger
eaabe15863 Update core tests to actually check revert message 2018-06-21 16:53:05 +02:00
Fabio Berger
63b2ae743b Add command to remove all node_modules, nested and hoisted 2018-06-21 16:52:01 +02:00
perissology
c5ea985a70 only call getLocationByOffset if source if defined 2018-06-21 06:24:50 -07:00
Remco Bloemen
11b35b89f5 Merge pull request #692 from 0xProject/refactor/contracts/RemovedMixinSettlement
Removed MixinSettlement
2018-06-21 13:26:40 +02:00
Greg Hysen
6d5b16725d Set settleOrder and settleMatchedOrders to private 2018-06-20 17:27:45 -07:00
fragosti
c34897036e Prevent prettier issue 2018-06-20 16:05:19 -07:00
fragosti
1e51af1d4b Support mobile friendly onboarding flows 2018-06-20 15:51:17 -07:00
Greg Hysen
8ee6e26608 Removed MixinSettlement. Moved settleOrder into MixinExchangeCore and settleMatchedOrders into MixinMatchOrders 2018-06-20 15:36:28 -07:00
Brandon Millman
4d36f38f96 Merge pull request #733 from 0xProject/bug/website/identicon-layout
Move some layout logic out of the Identicon component
2018-06-20 15:25:51 -07:00
Greg Hysen
d31ca444e1 Merge pull request #736 from 0xProject/feature/contracts/MixinSignatureValidatorTests
MixinSignatureValidator Test Cases + Bug Fixes
2018-06-20 14:18:13 -07:00
Greg Hysen
090b3014c0 Migrations after rebasing 2018-06-20 14:00:21 -07:00
Greg Hysen
491a322ceb Linter 2018-06-20 13:54:39 -07:00
Greg Hysen
12e16d532b Renamed constants in test wallet/validator 2018-06-20 13:54:39 -07:00
Greg Hysen
7814a391d8 Few more minor #nit wording changes 2018-06-20 13:54:39 -07:00
Greg Hysen
322151b0d5 Changed wording of two tests #nit 2018-06-20 13:54:39 -07:00
Greg Hysen
4a136cafda Minor improvements to MixinSignatureValidator tests 2018-06-20 13:54:39 -07:00
Greg Hysen
d0df25d9e2 Remove .only 2018-06-20 13:54:39 -07:00
Greg Hysen
8d003dbc30 Fixed two mislabelled revert reasons + Signature Validator revert tests working on Geth 2018-06-20 13:54:39 -07:00
Greg Hysen
2c7358d64f Minor style tweaks 2018-06-20 13:54:39 -07:00
Greg Hysen
94e260cec6 Fixed how trezor messages are signed in signature_utils. Now uses byteLength instead of length. 2018-06-20 13:54:39 -07:00
Greg Hysen
783ac3c105 Fixed callAsync template. Previously did not append callData, so we couldn’t specify from address 2018-06-20 13:54:39 -07:00
Greg Hysen
d46e3f6778 Twenty new tests for MixinSignatureValidator. Fixed handling of unsupported types. Fixed trezor prefix. 2018-06-20 13:54:39 -07:00
Alex Browne
6fe3158778 Merge pull request #725 from 0xProject/feature/revert-trace-code-snippets
Include source code snippets in revert stack traces
2018-06-20 12:36:04 -07:00
Alex Browne
bbd12e33ec Update version for @types/solidity-parser-antlr 2018-06-20 12:22:39 -07:00
Alex Browne
e4d55242d8 Update to match latest type definitions and other small changes 2018-06-20 12:22:39 -07:00
Alex Browne
dedddcfcf5 Update sol-cov CHANGELOG.json 2018-06-20 12:22:39 -07:00
Alex Browne
613a78bcf6 Include source code snippets in revert stack traces 2018-06-20 12:19:30 -07:00
Alex Browne
f5decb1d7e Merge pull request #738 from 0xProject/fix/changelogs
Fix CHANGELOG entries changed during incorrect merge (2a4456b)
2018-06-20 12:19:04 -07:00
Fabio Berger
47b4c236c3 Fix CHANGELOG entries changed during incorrect merge (2a4456b) 2018-06-20 20:29:22 +02:00
fragosti
39ccb2df0b Scroll to wallet for mobile onboarding 2018-06-20 11:25:59 -07:00
Fabio Berger
5bfdffda11 Add support for approveAll in assetWrapper and fillOrderScenarios 2018-06-20 19:14:04 +02:00
Fabio Berger
247f8c8557 Fix orderValidationUtils where was confusing a makerAssetAmount as a takerAssetAmount 2018-06-20 19:13:30 +02:00
Fabio Berger
3ce449e167 Improve verbose logging 2018-06-20 19:12:31 +02:00
F. Eugene Aumson
663f9657ea ethereum-types now only has v0.0.2, no 0.0.1 2018-06-20 09:06:38 -04:00
F. Eugene Aumson
457f951aaf add missing metacoin dependencies 2018-06-20 09:06:38 -04:00
F. Eugene Aumson
feafd57027 make metacoin tsconfig independent 2018-06-20 09:06:32 -04:00
Fabio Berger
5c0183c71e Fix merge variable name issue 2018-06-20 14:08:56 +02:00
Fabio Berger
fb7d425244 Add support for setting allowance to unlimited 2018-06-20 13:56:27 +02:00
Fabio Berger
3fab40efe5 Add noop conditionals for clarity 2018-06-20 13:55:45 +02:00
Fabio Berger
0bbdbc9e63 Rename for clarity 2018-06-20 13:55:28 +02:00
Fabio Berger
9bc481ff62 Split balance and allowance amount types in prep of adding the "unlimited" allowance enum value 2018-06-20 13:36:57 +02:00
Fabio Berger
32dea43d2e Remove unneeded explicit type def 2018-06-20 13:31:57 +02:00
Fabio Berger
632da71a8d Add TS 2.7 numeric separators to improve readability 2018-06-20 13:31:21 +02:00
Fabio Berger
2ffab22185 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (22 commits)
  Fix closing parens in liborder
  Update after rebase
  ERC721Proxy Always call safeTransferFrom
  Rename makerEpoch => orderEpoch
  Make cancelOrdersUpTo compatible with sender abstraction
  Update PR template
  Use Image component instead of img tag
  Assembler orderHash function
  Optimize and remove redundant encodePacked
  Fix linting issue
  Fix bug where we do fetch balances on wallet login
  Check network state immediately instead of waiting for delay
  Fix onboarding persisting when changing routes
  Consolidate account state messaging logic
  Only elevate wallet zIndex when onboarding is in progress
  Rebase and update feedback
  Run linter
  Add Portal v2 logging
  Simplified handling of source < 32 edge case
  Basic EIP712 encoder
  ...
2018-06-20 13:25:29 +02:00
Fabio Berger
5541327968 Add ability for verbose logging 2018-06-20 13:24:09 +02:00
Jacob Evans
096eaa20d7 Merge pull request #637 from 0xProject/bug/contracts/eip712-191-prefix
Add missing EIP191 prefix for EIP712 and Execute Transaction
2018-06-20 10:54:51 +10:00
fragosti
e5fe6b915e Change Island to use styled-components 2018-06-19 17:32:01 -07:00
Jacob Evans
512bd84cc2 Fix closing parens in liborder 2018-06-20 10:27:45 +10:00
Jacob Evans
ebbcbeedd2 Merge pull request #730 from 0xProject/bug/contracts/eip712-191-prefix-asm-orderhash
Assembler orderHash function
2018-06-20 10:25:31 +10:00
Jacob Evans
be17308e50 Merge pull request #717 from 0xProject/feature/contracts/erc721proxy-always-safeTransferFrom
ERC721Proxy Always call safeTransferFrom
2018-06-20 10:24:12 +10:00
Jacob Evans
25fa29e6e1 Update after rebase 2018-06-20 10:01:41 +10:00
Jacob Evans
bddc47f9b2 ERC721Proxy Always call safeTransferFrom 2018-06-20 10:00:59 +10:00
fragosti
51948d7760 Show start onboarding flow button on top of wallet on mobile 2018-06-19 16:39:52 -07:00
Brandon Millman
5817a30031 Update Island shadow styling and use Island in more places 2018-06-19 16:25:43 -07:00
Amir Bandeali
e216eb1e7b Merge pull request #714 from 0xProject/feature/contracts/cancelOrdersUpToSender
Make cancelOrdersUpTo compatible with sender abstraction
2018-06-19 15:23:28 -07:00
Brandon Millman
549c6afa0a Move some layout logic out of the Identicon component 2018-06-19 13:55:29 -07:00
Amir Bandeali
6b08e6b809 Rename makerEpoch => orderEpoch 2018-06-19 13:52:23 -07:00
Francesco Agosti
0438fdde49 Merge pull request #724 from 0xProject/bug/website/onboarding-improvements
Fix Wallet appearing over Drawer, and Onboarding not exiting when changing routes
2018-06-19 13:47:52 -07:00
Francesco Agosti
be4ea18119 Merge pull request #727 from 0xProject/bug/website/fix-fetching-balances-on-wallet-login
Fix bug where we do not fetch balances on wallet login
2018-06-19 13:43:08 -07:00
fragosti
a75d6531f2 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into bug/website/onboarding-improvements 2018-06-19 13:29:54 -07:00
Brandon Millman
da69ddc19b Merge pull request #732 from 0xProject/feature/update-pr-template
Update PR template
2018-06-19 13:16:42 -07:00
Amir Bandeali
e92926e881 Make cancelOrdersUpTo compatible with sender abstraction 2018-06-19 13:04:55 -07:00
Brandon Millman
7dd208fb49 Merge pull request #723 from 0xProject/bug/website/drawer-address
Consolidate account state display message logic
2018-06-19 10:44:18 -07:00
Brandon Millman
5305db689d Update PR template 2018-06-19 10:41:27 -07:00
Francesco Agosti
2338c7a3b3 Merge pull request #706 from 0xProject/feature/website/portal-v2-analytics
Add logging to Portal V2
2018-06-19 10:32:35 -07:00
Brandon Millman
829bc96209 Use Image component instead of img tag 2018-06-19 10:30:28 -07:00
fragosti
7454e16aae Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/portal-v2-analytics 2018-06-19 10:19:38 -07:00
Brandon Millman
e4acad60e9 Merge pull request #726 from 0xProject/bug/website/late-eth-balance
Check network state immediately instead of waiting for delay
2018-06-19 10:03:08 -07:00
Fabio Berger
f35af1fb6d Fix typo 2018-06-19 17:53:16 +02:00
Fabio Berger
c0e008c601 Rename NewOrderFactory to OrderFactoryFromScenario for clarity 2018-06-19 17:41:10 +02:00
Fabio Berger
9acf4458c0 Remove hack in ERC20Wrapper 2018-06-19 17:38:15 +02:00
Fabio Berger
70de264d4d Cleanup coreCombinatorialUtils 2018-06-19 17:31:26 +02:00
Fabio Berger
1a0b9e4612 Comments and cleanup 2018-06-19 17:25:08 +02:00
Remco Bloemen
66dc70c057 Merge pull request #683 from 0xProject/fix/contracts/memcpy
Simplified handling of source < 32 edge case
2018-06-19 13:53:25 +02:00
Fabio Berger
6641f34d76 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype:
  Prettier fix
  Update default params in sendRawPaylodAsync for improved JSON-RPC compatibility
  Fix missed merge conflicts
  Fix additional versions and update yarn.lock
  Add OrderWatcherConfig type to 0x.js docs page
  Export OrderWatcherConfig from 0x.js
  Update all package versions to match latest published to NPM
  Update CHANGELOG's with publishes performed on development branch
  Rebase with latest removing PROXY_ID from transfer
  Split transfer impl and AssetProxyMixin
  change @0xproject/types to ethereum-types
  remove mistaken comment
  workaround for TypeScript trailing comma bug
  Document contract_templates
2018-06-19 13:48:58 +02:00
Fabio Berger
f3ae5d8160 Prettier fix 2018-06-19 13:46:39 +02:00
Fabio Berger
d937541aa0 Merge pull request #701 from feuGeneA/v2-prototype
Document use of contract_templates (take 2; based on v2-prototype, not master)
2018-06-19 13:44:55 +02:00
Fabio Berger
21707d7ff6 Merge pull request #728 from 0xProject/fix/post-dev-publish
Update v2-prototype w/ development changes since publish
2018-06-19 13:18:36 +02:00
Leonid Logvinov
3002bc0eee Merge pull request #731 from avonian/v2-prototype
Fix sendRawPaylodAsync for improved JSON-RPC compatibility
2018-06-19 13:17:20 +02:00
Ara Kevonian
df50232ed9 Update default params in sendRawPaylodAsync for improved JSON-RPC compatibility 2018-06-19 04:13:32 -07:00
Fabio Berger
17d49067e9 Fix missed merge conflicts 2018-06-19 12:56:22 +02:00
Remco Bloemen
9a2e023a51 Assembler orderHash function 2018-06-19 12:55:04 +02:00
Jacob Evans
9c747f3160 Merge pull request #659 from 0xProject/feature/contracts/split-proxy-internal-logic
Split transfer implementation and AssetProxyMixin
2018-06-19 20:41:06 +10:00
Fabio Berger
08ea71cb24 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (40 commits)
  Increase number of columns in relayer grid for small screens
  Make isValidSignature public
  Make batchFill methods return FIllResults struct
  Remove remove_tags script
  Small fixes
  Use semver package instead of getNextPatchVersion
  Use semver library instead of semverUtils
  small fixes
  Show all errors of a given kind at once rather then throwing after the first instance is encountered
  fix package.json
  Add more prepublish checks
  remove remove_tags script
  Create a shared Image component
  Adjust version in changelog
  Update RelayerGridTile render logic to incorportate colors and logos
  Add max width to top bar
  Set max-width for LargeLayout
  Finish last onboarding step
  Finish set allowance step
  Add onboarding assets
  ...
2018-06-19 12:35:32 +02:00
Fabio Berger
a96abe2422 Fix additional versions and update yarn.lock 2018-06-19 12:32:43 +02:00
Fabio Berger
84a4a888e6 Add OrderWatcherConfig type to 0x.js docs page 2018-06-19 11:34:44 +02:00
Fabio Berger
e3299b546e Export OrderWatcherConfig from 0x.js 2018-06-19 11:33:46 +02:00
Fabio Berger
f2e0f1b2f1 Update all package versions to match latest published to NPM 2018-06-19 11:32:55 +02:00
Fabio Berger
2a4456b9ca Update CHANGELOG's with publishes performed on development branch 2018-06-19 11:16:30 +02:00
Jacob Evans
560a55bfd1 Optimize and remove redundant encodePacked 2018-06-19 17:32:17 +10:00
fragosti
d32f0fad12 Fix linting issue 2018-06-18 18:56:31 -07:00
fragosti
031e7d270d Fix bug where we do fetch balances on wallet login 2018-06-18 18:08:38 -07:00
Brandon Millman
3b73a0e269 Check network state immediately instead of waiting for delay 2018-06-18 18:01:38 -07:00
Brandon Millman
0bfcf79e79 Increase number of columns in relayer grid for small screens 2018-06-18 17:44:09 -07:00
fragosti
bdd299dd9e Fix onboarding persisting when changing routes 2018-06-18 17:24:31 -07:00
Brandon Millman
f97e605bf6 Consolidate account state messaging logic 2018-06-18 17:08:44 -07:00
fragosti
db9ff76754 Only elevate wallet zIndex when onboarding is in progress 2018-06-18 16:57:28 -07:00
Amir Bandeali
49f5495c45 Merge pull request #716 from 0xProject/feature/contracts/publicSignatureValidator
Make isValidSignature public
2018-06-18 16:20:16 -07:00
Amir Bandeali
9e431df848 Make isValidSignature public 2018-06-18 16:00:55 -07:00
Amir Bandeali
12476c52a4 Merge pull request #713 from 0xProject/feature/contracts/batchFillReturn
Make batchFill methods return FIllResults struct
2018-06-18 16:00:43 -07:00
Amir Bandeali
8fd9aebcb9 Make batchFill methods return FIllResults struct 2018-06-18 15:50:02 -07:00
Fabio Berger
8c83f4ba3b Merge pull request #722 from 0xProject/improvement/publishing-v2
Improvements to pre-publishing checks
2018-06-18 23:33:17 +02:00
Fabio Berger
25b6d1a232 Remove remove_tags script 2018-06-18 23:20:07 +02:00
Fabio Berger
880cbd88c2 Small fixes 2018-06-18 23:15:52 +02:00
Fabio Berger
dcd53c3c5b Use semver package instead of getNextPatchVersion 2018-06-18 23:08:44 +02:00
Fabio Berger
3e64b3da39 Use semver library instead of semverUtils 2018-06-18 23:08:33 +02:00
Fabio Berger
9a748c8bf1 small fixes 2018-06-18 23:07:03 +02:00
Fabio Berger
53eae14763 Show all errors of a given kind at once rather then throwing after the first instance is encountered 2018-06-18 23:06:55 +02:00
Fabio Berger
074c42e8b6 fix package.json 2018-06-18 23:06:48 +02:00
Fabio Berger
8633fa7024 Add more prepublish checks 2018-06-18 23:06:32 +02:00
Fabio Berger
19668b9b48 remove remove_tags script 2018-06-18 23:05:03 +02:00
Brandon Millman
3f02631b98 Merge pull request #712 from 0xProject/feature/website/portal-facelift
Change relayer grid tile to use logos and primary colors
2018-06-18 12:11:59 -07:00
Brandon Millman
da46eefe2e Create a shared Image component 2018-06-18 12:09:31 -07:00
Francesco Agosti
a3ca3ed33f Merge pull request #704 from 0xProject/bug/website/fix-filling-order
Fix filling orders on Portal
2018-06-18 10:24:42 -07:00
Francesco Agosti
efaa33c4d5 Merge pull request #711 from 0xProject/website/feature/prettier-onboarding-components
Made onboarding look like the mocks
2018-06-18 10:13:19 -07:00
fragosti
0cdfe7f458 Adjust version in changelog 2018-06-18 10:06:38 -07:00
Jacob Evans
190eafc30e Merge branch 'v2-prototype' into bug/contracts/eip712-191-prefix 2018-06-18 21:50:35 +10:00
Jacob Evans
d4ee0e8622 Rebase and update feedback
Cache the domain separator data with address this
Use the EIP712Types enum for types everywhere
Rename EIP712 struct ExecuteTransaction to ZeroExTransaction
2018-06-18 21:46:05 +10:00
Jacob Evans
96c90e6295 Rebase with latest removing PROXY_ID from transfer 2018-06-18 16:36:30 +10:00
Jacob Evans
ff95da411b Split transfer impl and AssetProxyMixin 2018-06-18 15:24:12 +10:00
Brandon Millman
2ad411ea29 Update RelayerGridTile render logic to incorportate colors and logos 2018-06-16 13:34:09 -07:00
Brandon Millman
55cbcd728d Add max width to top bar 2018-06-16 13:34:09 -07:00
Brandon Millman
8880860105 Set max-width for LargeLayout 2018-06-16 13:34:09 -07:00
Remco Bloemen
0c238448fd Merge pull request #700 from 0xProject/fix/contracts/tokenbugs
Handle tokens that do not return bool
2018-06-16 10:10:17 +02:00
fragosti
8a76fdc126 Finish last onboarding step 2018-06-15 18:34:57 -07:00
fragosti
433f830cf3 Finish set allowance step 2018-06-15 18:15:03 -07:00
fragosti
8893bc102c Add onboarding assets 2018-06-15 18:03:10 -07:00
fragosti
0cf9927132 Add all steps to their own file 2018-06-15 18:02:46 -07:00
fragosti
5993125cc7 Prettify account setup and add eth steps of onboarding 2018-06-15 15:17:20 -07:00
fragosti
0c34309133 Make metamask part of the fow pretty 2018-06-15 14:49:01 -07:00
fragosti
3d6ce0fb76 Make start onboarding button pretty 2018-06-15 14:06:17 -07:00
fragosti
54f79c2798 Improve styles of onboarding tooltip 2018-06-15 13:24:59 -07:00
F. Eugene Aumson
8bac1706a1 change @0xproject/types to ethereum-types 2018-06-15 10:37:37 -04:00
fragosti
d0a3779091 Add Pointer component 2018-06-14 18:19:07 -07:00
Alex Browne
ff0960b174 Merge pull request #705 from 0xProject/feature/revert-trace-subprovider
Introduce subprovider for printing revert stack traces
2018-06-14 17:07:03 -07:00
Alex Browne
7032825e35 Change wording of error message when you try to use more than one subprovider 2018-06-14 16:53:48 -07:00
Alex Browne
d118533d87 Remove redundant check in trace.ts and revert_trace.ts 2018-06-14 16:53:29 -07:00
fragosti
35f4f75733 Prettier 2018-06-14 16:49:06 -07:00
Alex Browne
ef61c3543f Fix linter errors 2018-06-14 16:38:21 -07:00
Alex Browne
897560745a De-duplicate code by refactoring subprovider classes 2018-06-14 16:33:09 -07:00
Alex Browne
5a8539a122 Fix linter errors and remove coverage.json 2018-06-14 16:04:08 -07:00
Alex Browne
d9292a70bf Remove unused variables and other small fixes 2018-06-14 16:00:24 -07:00
Alex Browne
a9c23b7c28 Reverse order of stack trace to match behavior of most other language stack traces 2018-06-14 15:50:54 -07:00
fragosti
2cc7289b7b Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/portal-v2-analytics 2018-06-14 15:50:46 -07:00
fragosti
81d6df925e Run linter 2018-06-14 15:47:59 -07:00
Alex Browne
263bfb1bda Fix a bug in revert_trace.ts 2018-06-14 15:46:59 -07:00
fragosti
677e77d0ae Add Portal v2 logging 2018-06-14 15:43:10 -07:00
Fabio Berger
0d0c1af7f7 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype:
  Run prettify
  Implement allowance and final flow step
  Render TokenAllowance
  Add utilities for getting tokens from tokensByAddress
  Wrap AllowanceToggle in redux container
2018-06-15 00:03:47 +02:00
Fabio Berger
fb55def54f Add ability to tweak the relevant balances/allowances for the maker and taker for a fillScenario. Convert more of the core tests to the declarative form. 2018-06-15 00:03:00 +02:00
Fabio Berger
eea86757d5 - Refactor assetWrapper to contain more of the normalizing logic instead of erc20Wrapper and erc721Wrapper
- Add burn method to DummyERC721Token
- Add additional methods to assetWrapper to set balance/allowances on ERC20 and ERC721 tokens
- Use approve instead of approveAll for ERC721 tokens
2018-06-15 00:00:02 +02:00
Francesco Agosti
e7eb220c50 Merge pull request #695 from 0xProject/feature/website/onboarding-flow-allowances
Implement allowances and final "congrats" onboarding flow step
2018-06-14 14:41:42 -07:00
fragosti
7d67005820 Run prettify 2018-06-14 14:26:17 -07:00
fragosti
fadd91b6a2 Add to changelog for contract-wrappers 2018-06-14 14:22:53 -07:00
fragosti
5fa6a2848f Fix typo 2018-06-14 14:07:41 -07:00
Alex Browne
7ab921669b Introduce subprovider for printing revert stack traces 2018-06-14 13:58:54 -07:00
fragosti
4811dfa663 Fix filling orders on Portal 2018-06-14 13:56:36 -07:00
perissology
7a41a5249f Collect coverage for provided sources
When solidity generates source maps during contract compilation, the
contracts are referred to by an id, which corresponds to an array index.

We may not want to cover all sources that were included in a compilation,
but because we use array indexes (vs. the id that is provided by solidity
compiler) to map the contract to the sourceMap, the provided sourceCodes
array must include the code at the correct index. This can result in
empty slots in the sourceCodes array.

This commit allows the coverage to only be collected for the contracts
with provided sourceCode.
2018-06-14 11:17:04 -07:00
F. Eugene Aumson
f9e05d0cad remove mistaken comment
It must have been left over from when an abi-gen output was modified to
be the source of this template.
2018-06-14 13:52:10 -04:00
F. Eugene Aumson
15a63c4bc5 workaround for TypeScript trailing comma bug
before this change, TypeScript compilation of the generated contract
wrapper was giving me the following errors:

$ abi-gen --abis 'build/contracts/*.json' --out build/types --template contract_templates/contract.handlebars --partials 'contract_templates/partials/*.handlebars'
Found 7 partial templates
Found 1 ABI files
Processing: Migrations...
Created: build/types/migrations.ts
$ tsc
build/types/migrations.ts(81,23): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
build/types/migrations.ts(108,23): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
build/types/migrations.ts(130,23): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
build/types/migrations.ts(146,25): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
build/types/migrations.ts(173,25): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
build/types/migrations.ts(195,25): error TS1013: A rest parameter or binding pattern may not have a trailing comma.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Here is the generated code around the first error:

74:    public setCompleted = {
75:        async sendTransactionAsync(
76:            completed: BigNumber,
77:            txData: Partial<TxData> = {},
78:        ): Promise<string> {
79:            const self = this as any as MigrationsContract;
80:            const inputAbi = self._lookupAbi('setCompleted(uint256)').inputs;
81:            [completed,
82:    ] = BaseContract._formatABIDataItemList(inputAbi, [completed,
83:    ], BaseContract._bigNumberToString.bind(self));

All of the other errors are the same, a destructuring assignment with a
single element but with a trailing comma.

This is legal JavaScript but it is not allowed by the TypeScript
compiler, apparently per the bug described at
https://github.com/Microsoft/TypeScript/issues/24628 .

While awaiting the 3.0 version of TypeScript, it's a simple enough
change to have the template not append a trailing comma.
2018-06-14 13:51:18 -04:00
F. Eugene Aumson
4a2e4d2b55 Document contract_templates 2018-06-14 13:51:10 -04:00
Fabio Berger
12033abe09 Rename OrderAmountScenario to OrderAssetAmountScenario and convert generateOrderCombinations to generateFillOrderCombinations 2018-06-14 12:07:57 +02:00
Fabio Berger
f9410d5d00 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (27 commits)
  Add back redirector behind feature flag
  Update minHeight in Text
  Use Text components in Values
  Use spread operator instead of React.createElement
  Fix issue with positions hash
  Revert localhost config
  Use Text in Teams
  Use Text in OpenPositions
  Use Text component for HeaderItem
  Remove FloatingImage
  Move FilledImage into components/ui
  Replace FlatButton with Button in Retry
  Fix incorrect colors
  Add font family to Button component and use in Join0x component
  Consolidate jobs page grey colors with shared colors
  Fix lint errors
  Remove extra packages
  Implement small open positions
  Implement large screen open positions
  Teams section
  ...
2018-06-14 11:17:58 +02:00
Fabio Berger
c232a32991 Use a defaultFillScenario in fillOrder tests 2018-06-14 11:17:13 +02:00
Fabio Berger
57f37939d5 Fix incorrect string values in enum 2018-06-14 11:16:51 +02:00
Fabio Berger
432ff58107 Fix calculation of expFilledTakerAmount and expected values in events emitted 2018-06-14 11:16:32 +02:00
Remco Bloemen
2c7d6a7711 Handle tokens that do not return bool 2018-06-14 10:54:54 +02:00
Fabio Berger
d31b051fc5 Replace initial set of legacy manually written fillOrder tests with declarative FillScenario tests 2018-06-14 10:41:04 +02:00
Fabio Berger
98405a39db Add ability to specify takerAssetFillAmount and taker scenarios as part of a FillScenario 2018-06-14 10:40:17 +02:00
Brandon Millman
0e354e5ea1 Merge pull request #685 from 0xProject/feature/website/jobs-page
Jobs page
2018-06-13 13:34:54 -07:00
Brandon Millman
d172a97247 Add back redirector behind feature flag 2018-06-13 12:29:36 -07:00
Brandon Millman
8a3df7e434 Update minHeight in Text 2018-06-13 12:19:14 -07:00
Brandon Millman
eafcbabaa2 Use Text components in Values 2018-06-13 12:10:21 -07:00
Brandon Millman
14071ea119 Use spread operator instead of React.createElement 2018-06-13 12:01:08 -07:00
Fabio Berger
6239686afa Fix divide by zero bug 2018-06-13 18:36:30 +02:00
Fabio Berger
45186b70ec Move orderFill combinatorialTests to exchange folder 2018-06-13 16:14:48 +02:00
Fabio Berger
b4fead9606 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (26 commits)
  Rename _coverageCollector -> _profilerCollector in TraceCollectionSubprovider
  Refactor sol-cov to de-duplicate code for coverage and profiling
  Rename popByte and popAddress
  Hard code test addresses/bytes32 instead of generating pseudorandom ones
  Update artifacts
  Rename computeCoverageAsync -> computeSingleTraceCoverageAsync
  Fix linter errors
  Refactor sol-cov to avoid keeping traceInfo in memory
  Unpop byte rather than making deep copy
  Pass gas in to marketBuyOrdersNoThrow
  Looks up the memory location of makerAssetData/takerAssetData
  Make ZRX_PROXY_ID constant rather than popping it from ZRX_ASSET_DATA
  Add tests for deepCopyBytes and missing write methods from LibBytes
  Pop id from assetData before dispatching to AssetProxies
  Upgrade solidity-parser-entlr 0.2.11 => 0.2.12
  Fix import order
  Fix typos
  Add CHANGELOGs
  Speed-up sol-cov
  Increase delay when sending transactions during devnet startup
  ...
2018-06-13 16:10:05 +02:00
Fabio Berger
61243b418e Implement initial set of orderFill combinatorial tests 2018-06-13 16:09:04 +02:00
Fabio Berger
fe75660e88 Refactor ERC20 and ERC721 wrappers for V2 and introduce the assetWrapper superset 2018-06-13 16:01:01 +02:00
Fabio Berger
946e6c1644 Remaining refactors of order-utils components for V2 2018-06-13 13:20:13 +02:00
Fabio Berger
3eb232b3fc For some reason order-watcher tests were timeing out so I increased the timeout limit 2018-06-13 13:18:19 +02:00
Fabio Berger
38de1c9a31 Remove comment since we have added the tests 2018-06-13 13:16:22 +02:00
Fabio Berger
78dcb87a75 Variable rename for clarity 2018-06-13 13:11:45 +02:00
fragosti
421e568232 Implement allowance and final flow step 2018-06-12 16:54:37 -07:00
Alex Browne
4efd28c092 Merge pull request #694 from 0xProject/refactor-sol-cov
Refactor sol-cov to de-duplicate code for coverage and profiling
2018-06-12 16:51:58 -07:00
Brandon Millman
d0bbee7e8c Fix issue with positions hash 2018-06-12 16:11:31 -07:00
Brandon Millman
7640563991 Revert localhost config 2018-06-12 16:09:23 -07:00
Amir Bandeali
90cf85c3f0 Merge pull request #682 from 0xProject/feature/contracts/popProxyId
Remove proxyId checks in AssetProxies
2018-06-12 16:05:46 -07:00
Brandon Millman
f1a98693d0 Use Text in Teams 2018-06-12 15:58:24 -07:00
Brandon Millman
2794d64d3e Use Text in OpenPositions 2018-06-12 15:54:27 -07:00
Alex Browne
82743cca92 Rename _coverageCollector -> _profilerCollector in TraceCollectionSubprovider 2018-06-12 15:46:41 -07:00
Alex Browne
d0c348e595 Refactor sol-cov to de-duplicate code for coverage and profiling 2018-06-12 15:40:18 -07:00
Alex Browne
f50d3088dc Merge pull request #691 from 0xProject/fix/sol-cov-memory
Refactor sol-cov to avoid keeping traceInfo in memory
2018-06-12 15:38:28 -07:00
Amir Bandeali
0917fa0d75 Rename popByte and popAddress 2018-06-12 15:30:46 -07:00
Amir Bandeali
cfb73dd534 Hard code test addresses/bytes32 instead of generating pseudorandom ones 2018-06-12 15:30:46 -07:00
Amir Bandeali
ef497b7989 Update artifacts 2018-06-12 15:30:41 -07:00
Brandon Millman
9d9341901f Use Text component for HeaderItem 2018-06-12 15:25:47 -07:00
Brandon Millman
155e3d225d Remove FloatingImage 2018-06-12 15:03:16 -07:00
Brandon Millman
ca41f100ab Move FilledImage into components/ui 2018-06-12 14:49:42 -07:00
Brandon Millman
084285a760 Replace FlatButton with Button in Retry 2018-06-12 14:26:48 -07:00
Brandon Millman
982391cd7c Fix incorrect colors 2018-06-12 14:23:47 -07:00
Brandon Millman
d206d0a3ae Add font family to Button component and use in Join0x component 2018-06-12 14:23:03 -07:00
Alex Browne
627ea6c860 Rename computeCoverageAsync -> computeSingleTraceCoverageAsync 2018-06-12 14:11:11 -07:00
Alex Browne
bcc76b3764 Fix linter errors 2018-06-12 14:09:42 -07:00
fragosti
39692a8b3f Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/onboarding-flow-allowances 2018-06-12 14:01:19 -07:00
Brandon Millman
eba8b4bf00 Consolidate jobs page grey colors with shared colors 2018-06-12 13:45:56 -07:00
Brandon Millman
f149665660 Fix lint errors 2018-06-12 13:40:15 -07:00
Brandon Millman
e3bb64cf35 Remove extra packages 2018-06-12 12:52:36 -07:00
Alex Browne
33f0669100 Refactor sol-cov to avoid keeping traceInfo in memory 2018-06-12 12:42:14 -07:00
Amir Bandeali
3a5f3e8b55 Unpop byte rather than making deep copy 2018-06-12 11:45:02 -07:00
Amir Bandeali
a0a90afbc0 Pass gas in to marketBuyOrdersNoThrow 2018-06-12 11:45:02 -07:00
Greg Hysen
2f96cb257c Looks up the memory location of makerAssetData/takerAssetData 2018-06-12 11:45:02 -07:00
Amir Bandeali
5910bec52e Make ZRX_PROXY_ID constant rather than popping it from ZRX_ASSET_DATA 2018-06-12 11:45:02 -07:00
Amir Bandeali
764b1c35cb Add tests for deepCopyBytes and missing write methods from LibBytes 2018-06-12 11:45:02 -07:00
Amir Bandeali
ee8c9b764d Pop id from assetData before dispatching to AssetProxies 2018-06-12 11:45:02 -07:00
Brandon Millman
7080f0c35a Implement small open positions 2018-06-12 10:44:03 -07:00
Brandon Millman
679d60cd5a Implement large screen open positions 2018-06-12 10:41:09 -07:00
Brandon Millman
bc36c0faed Teams section 2018-06-12 10:41:09 -07:00
Brandon Millman
3c073bc360 Benefits section 2018-06-12 10:41:08 -07:00
Brandon Millman
c52d5e1084 Refactor into BulletedItemList component 2018-06-12 10:41:08 -07:00
Brandon Millman
b7bb27fa21 Rework values section 2018-06-12 10:41:08 -07:00
Brandon Millman
087aaa2f94 Polish mission section and photo section 2018-06-12 10:41:08 -07:00
Brandon Millman
474b93a22f Add link to open positions section 2018-06-12 10:41:08 -07:00
Brandon Millman
0c2f002a7d Add scroll to top for jobs page 2018-06-12 10:41:08 -07:00
Brandon Millman
3d76d83a39 Skeleton for jobs page and initial implementation 2018-06-12 10:41:05 -07:00
Leonid Logvinov
787015f537 Upgrade solidity-parser-entlr 0.2.11 => 0.2.12 2018-06-12 10:22:15 -07:00
Leonid Logvinov
fb624fddc4 Fix import order 2018-06-11 22:30:14 -07:00
Leonid Logvinov
605ddacb71 Merge pull request #689 from 0xProject/geth-increase-startup-tx-delay
Increase delay when sending transactions during devnet startup
2018-06-11 22:15:51 -07:00
Leonid Logvinov
71934f05a8 Merge pull request #687 from 0xProject/feature/metacoin-docs
Add profiler and geth tests to metacoin
2018-06-11 22:03:22 -07:00
Leonid Logvinov
534a0d6836 Fix typos 2018-06-11 22:03:07 -07:00
Leonid Logvinov
746b1d0c4d Merge pull request #688 from 0xProject/feature/await-transaction-speedup
Speedup awaitTransactionMinedAsync and reduce polling interval in contracts tests
2018-06-11 21:56:56 -07:00
Leonid Logvinov
387c80e00a Merge pull request #690 from 0xProject/feature/truffle-sol-cov-fixes
Sol-cov fixes
2018-06-11 21:55:38 -07:00
Leonid Logvinov
05c914691f Add CHANGELOGs 2018-06-11 18:12:32 -07:00
Leonid Logvinov
94398d70f4 Speed-up sol-cov 2018-06-11 18:01:33 -07:00
Alex Browne
915ddb2b2b Increase delay when sending transactions during devnet startup 2018-06-11 17:26:10 -07:00
Alex Browne
b916e7f7ef Add note to web3-wrapper CHANGELOG.json 2018-06-11 17:13:58 -07:00
Alex Browne
3cc30f91a9 Speedup awaitTransactionMinedAsync and reduce polling interval in contracts tests 2018-06-11 17:07:28 -07:00
Leonid Logvinov
f4a61b4c70 Don't throw when no config file is found 2018-06-11 16:10:56 -07:00
Leonid Logvinov
6eebd693ce Fix solidityVersion schema regex 2018-06-11 16:10:15 -07:00
Fabio Berger
7e78f5941a Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (68 commits)
  Stop exporting ArtifactWriter
  Fix no-unused-variable tslint rule to include parameters and fix issues
  Fix linter exclude rule
  Validate all signature types rather then only ECSignatures
  Store the instantiated OrderValidationUtils
  Remove global hooks from tests and deploy contracts from within the specific tests
  Add EmitStatement to ASTVisitor
  Fix tslint issues
  Add back artifacts file
  Fix a bug in SolCompilerArtifacts adapter config overriding
  Move OrderValidationUtils (+ tests) and ExchangeTransferSimulator to order-utils
  export parseECSignature method
  Export ArtifactWriter from migrations package
  Remove unused artifact file
  Pass in generated contract wrapper to orderValidationUtils at instantiation
  Refactor orderValidationUtils to use the generated contract wrapper instead of the higher-level one
  Refactor ExchangeTransferSimulator public interface to accet an AbstractBalanceAndProxyAllowanceLazyStore so that this module could be re-used in different contexts.
  Increase timeout for contract migrations
  Remove some copy-paste code
  Await transactions in migrations
  ...
2018-06-12 00:23:48 +02:00
Fabio Berger
bc0ae6be31 Merge pull request #684 from 0xProject/fix/contract-wrappers/exchangeTransferSimulator
Move ExchangeTransferSimulator & OrderValidationUtils to Order-Utils
2018-06-12 00:14:19 +02:00
Fabio Berger
c03119d10a Stop exporting ArtifactWriter 2018-06-12 00:13:57 +02:00
Fabio Berger
e1879ef4d9 Fix no-unused-variable tslint rule to include parameters and fix issues 2018-06-11 23:42:30 +02:00
Fabio Berger
b6df727efb Fix linter exclude rule 2018-06-11 23:15:03 +02:00
Fabio Berger
fe58b44916 Validate all signature types rather then only ECSignatures 2018-06-11 22:14:03 +02:00
Fabio Berger
0a2694811d Store the instantiated OrderValidationUtils 2018-06-11 22:13:36 +02:00
Fabio Berger
31fe232bac Remove global hooks from tests and deploy contracts from within the specific tests 2018-06-11 22:13:12 +02:00
Leonid Logvinov
682f6d273c Fix linter issues 2018-06-11 12:49:46 -07:00
Leonid Logvinov
83ddaccf4a Add profiler and geth tests to metacoin 2018-06-11 11:59:48 -07:00
Leonid Logvinov
e0c0584c59 Add EmitStatement to ASTVisitor 2018-06-11 11:14:49 -07:00
Fabio Berger
60f5a52964 Merge branch 'v2-prototype' into fix/contract-wrappers/exchangeTransferSimulator
* v2-prototype:
  Fix a bug in SolCompilerArtifacts adapter config overriding
  Increase timeout for contract migrations
  Remove some copy-paste code
  Await transactions in migrations
  Fix typos
  Await transactions in migrations
  Await fake transactions
  Fix a typo
  Implement SolidityProfiler & adapt sol-cov to work with Geth

# Conflicts:
#	packages/migrations/CHANGELOG.json
2018-06-11 19:54:59 +02:00
Leonid Logvinov
7e5866ce3f Merge pull request #675 from 0xProject/feature/sol-cov-geth
`ProfilerSubprovider` & Geth-related fixes for `sol-cov`
2018-06-11 10:48:18 -07:00
Fabio Berger
89b7b56a2c Fix tslint issues 2018-06-11 19:43:40 +02:00
Fabio Berger
ae54b13d4b Add back artifacts file 2018-06-11 19:43:25 +02:00
Leonid Logvinov
927ccc489c Fix a bug in SolCompilerArtifacts adapter config overriding 2018-06-11 10:28:30 -07:00
Fabio Berger
21f7722f10 Move OrderValidationUtils (+ tests) and ExchangeTransferSimulator to order-utils 2018-06-11 19:21:32 +02:00
Fabio Berger
e4afe603f9 export parseECSignature method 2018-06-11 19:15:41 +02:00
Fabio Berger
30d15a1438 Export ArtifactWriter from migrations package 2018-06-11 19:12:55 +02:00
Fabio Berger
c84586dd66 Remove unused artifact file 2018-06-11 19:12:35 +02:00
Fabio Berger
e9f87c2026 Pass in generated contract wrapper to orderValidationUtils at instantiation 2018-06-11 14:44:53 +02:00
Fabio Berger
afa27a3c2a Refactor orderValidationUtils to use the generated contract wrapper instead of the higher-level one 2018-06-11 14:34:00 +02:00
Fabio Berger
ce6078ed94 Refactor ExchangeTransferSimulator public interface to accet an AbstractBalanceAndProxyAllowanceLazyStore so that this module could be re-used in different contexts. 2018-06-11 10:24:55 +02:00
Remco Bloemen
82d1412d45 Simplified handling of source < 32 edge case 2018-06-11 09:19:52 +02:00
Leonid Logvinov
6d5949ba9c Increase timeout for contract migrations 2018-06-08 15:27:59 -07:00
Leonid Logvinov
cdb165af7f Remove some copy-paste code 2018-06-08 14:56:46 -07:00
Leonid Logvinov
88a3f8e4aa Await transactions in migrations 2018-06-08 14:56:46 -07:00
Leonid Logvinov
1c3dc757c3 Fix typos 2018-06-08 14:56:45 -07:00
Leonid Logvinov
25866095db Await transactions in migrations 2018-06-08 14:56:45 -07:00
Leonid Logvinov
b6c8d8e971 Await fake transactions 2018-06-08 14:56:45 -07:00
Leonid Logvinov
ab94b0b231 Fix a typo 2018-06-08 14:56:45 -07:00
Leonid Logvinov
760bab8f86 Implement SolidityProfiler & adapt sol-cov to work with Geth 2018-06-08 14:56:45 -07:00
Greg Hysen
817c332d11 Merge pull request #627 from 0xProject/feature/contracts/erc721SafeTransferFrom
On-Chain AssetData Decoding Lib + safeTransferFrom for ERC721 + Memcpy
2018-06-08 11:58:23 -07:00
Greg Hysen
05fbc8e6b0 Linter changes to contracts 2018-06-08 11:43:47 -07:00
Greg Hysen
c39301b6da Fixed assetProxyUtils for linter 2018-06-08 11:04:07 -07:00
Alex Browne
add9a9db9b Merge pull request #674 from 0xProject/feature/geth-test-ci
Run contracts tests against Geth in CI
2018-06-08 10:53:22 -07:00
Greg Hysen
05123ea6f4 Updated LibBytes error messages 2018-06-07 16:32:42 -07:00
Jacob Evans
a8d328bfc9 Basic EIP712 encoder 2018-06-07 16:09:30 -07:00
Greg Hysen
d62ff34a5a Cleanup after last rebase 2018-06-07 15:53:30 -07:00
Alex Browne
a8b8d53d9d Run contracts tests against Geth in CI 2018-06-07 15:47:43 -07:00
Greg Hysen
0d4ff5a916 Updated tests to use new revert handler 2018-06-07 15:39:40 -07:00
Greg Hysen
8ace41d144 Minor fixes after rebase 2018-06-07 15:39:40 -07:00
Greg Hysen
5bb7219f4b Camelcase in memCopy 2018-06-07 15:39:40 -07:00
Greg Hysen
f0200ab697 Moved some constants to global scope in assetProxyUtils 2018-06-07 15:39:40 -07:00
Greg Hysen
f457a56d4a Style updates to contracts 2018-06-07 15:39:40 -07:00
Greg Hysen
db086de84a Union types for generalized decodeAssetData 2018-06-07 15:39:40 -07:00
Greg Hysen
37684c6af0 Fixed a styling throughout contracts. Moved closing parenthesis for long list of function parameters to next line. 2018-06-07 15:39:40 -07:00
Greg Hysen
3c75d4f1dd Removed setting makerAssetData/takerAssetData from tests where values are same as defaultOrderParams. 2018-06-07 15:39:40 -07:00
Greg Hysen
b19276bb0f Fixed merge error when rebasing wrt length variable in asset data decoders 2018-06-07 15:39:40 -07:00
Greg Hysen
774d831fae Style updates to ERC721 onReceiver 2018-06-07 15:39:40 -07:00
Greg Hysen
a1b49d8389 Fixed after rebase 2018-06-07 15:39:40 -07:00
Greg Hysen
12e2bfc794 Fixes after rebasing 2018-06-07 15:39:38 -07:00
Greg Hysen
6e5abade3c updated migrations artifacts 2018-06-07 15:38:48 -07:00
Greg Hysen
e4e3676095 Fixed up after rebasing. Contracts build and tests pass 2018-06-07 15:38:48 -07:00
Greg Hysen
3ed13150e1 Style audit for proxies + libmem + libbytes 2018-06-07 15:38:48 -07:00
Greg Hysen
f03e5c6bd1 Style audit proxies 2018-06-07 15:38:48 -07:00
Greg Hysen
8496c1cdd3 Call safeTransferFrom only when there is receiver data present 2018-06-07 15:38:48 -07:00
Greg Hysen
3c3851c221 Fixed formatting in memory layout 2018-06-07 15:38:48 -07:00
Greg Hysen
05f1e9e3b8 Resolved edge case in Memcpy where where send would eventually turn "negative" and wrap around. 2018-06-07 15:38:48 -07:00
Greg Hysen
249a1e6d8d Removed the LibAssetProxyDecoder. Merged decode functions into the proxies. This way they can still be used by the forwarding contract. TestAssetDataDecoders inherits them in the same way the forwarding contract would 2018-06-07 15:38:48 -07:00
Greg Hysen
e042e0ad32 Converged on naming scheme for asset data: renamed all instances of assetMetadata, proxyData, proxyMetadata to assetData 2018-06-07 15:38:48 -07:00
Greg Hysen
5db15ca54c proxyData -> assetData 2018-06-07 15:38:48 -07:00
Remco Bloemen
069b89b208 Implement memcpy using masking and end-aligned words 2018-06-07 15:38:48 -07:00
Remco Bloemen
63014aeb6b Add tests for word loop iteration 2018-06-07 15:38:48 -07:00
Remco Bloemen
31e21db5b5 Add test for zero-size overlap 2018-06-07 15:38:48 -07:00
Remco Bloemen
7f21872510 Add test cases 2018-06-07 15:38:47 -07:00
Remco Bloemen
27351c9a90 Cleanup test script 2018-06-07 15:38:47 -07:00
Remco Bloemen
76b918d40e Convert Solidity tests to vectors 2018-06-07 15:38:47 -07:00
Remco Bloemen
f5bc0b205c Generate tests from vectors 2018-06-07 15:38:47 -07:00
Greg Hysen
b3c253ea2a Tests for writing bytes to nested bytes 2018-06-07 15:38:47 -07:00
Greg Hysen
d17e031259 Fixed up wording in memcpy 2018-06-07 15:38:47 -07:00
Greg Hysen
842363200b Tons of tests around nested byte arrays and ERC721 receiver 2018-06-07 15:38:42 -07:00
Greg Hysen
d9f9895b2b Test for onReceived erc721 callback 2018-06-07 15:37:42 -07:00
Greg Hysen
bc0edd4042 LibAssetProxyDecoder tests 2018-06-07 15:36:18 -07:00
Greg Hysen
9b82e2df58 Foundation for TestLibAssetProxyDecoder 2018-06-07 15:36:18 -07:00
Greg Hysen
3d65341080 Tests for libMem 2018-06-07 15:36:18 -07:00
Greg Hysen
80215ea181 LibMem + TestLibMem + LibAssetProxyDecoder + DummyERC721Receiver 2018-06-07 15:36:17 -07:00
Leonid Logvinov
78d8526e41 Merge pull request #679 from 0xProject/fix/await-transactions
Add missing awaitTransactionSuccessAsync calls
2018-06-07 15:34:46 -07:00
Alex Browne
0ddaabe377 Add missing awaitTransactionSuccessAsync calls 2018-06-07 14:46:03 -07:00
Fabio Berger
20f9318597 Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype:
  Fix linter issue
  Fix linter issue
  Fix tslint issues
  Fix missing paths
  Fixed path
  Use source-map-support package to include correct line numbers in mocha
  move generated contract wrappers from `contract_wrappers/generated/` to `generated_contract_wrappers` in package with no non-generated contract wrappers
2018-06-07 21:45:48 +02:00
Fabio Berger
9bc6ebde4e Merge pull request #671 from 0xProject/refactor/move-spawn-switch-to-utils
Move spawnSwitchErr to @0xproject/utils
2018-06-07 21:44:22 +02:00
Fabio Berger
011f14d115 Fix linter issue 2018-06-07 21:24:27 +02:00
Fabio Berger
62a5cbb5ce Fix linter issue 2018-06-07 21:15:12 +02:00
Fabio Berger
5aaf87d612 Merge branch 'v2-prototype' into refactor/move-spawn-switch-to-utils
* v2-prototype:
  Fix tslint issues
  Fix tslint failure
  Pass in fee and assetAmount rather then the whole signedOrder
  Fix missing paths
  Revert to returning orderState on invalid order
  - Refactor remainingFillableCalculator so it can be used for the maker and taker side - Moved the tests over from order-watcher - Did some token -> asset renaming
  Update naming in orderStateUtils to use asset over token, also removed cancelledAmount since in V2 it's binary.
  Fixed path
  Use source-map-support package to include correct line numbers in mocha
  move generated contract wrappers from `contract_wrappers/generated/` to `generated_contract_wrappers` in package with no non-generated contract wrappers
2018-06-07 21:13:30 +02:00
Fabio Berger
96b31f3974 Merge pull request #678 from 0xProject/fix/order-utils/remaining-v2-changes
Remaining Order-utils V2 Changes
2018-06-07 21:12:21 +02:00
Fabio Berger
09e387bf09 Merge pull request #670 from 0xProject/fix/generated-nesting
Remove unnecessary folder nesting
2018-06-07 21:12:10 +02:00
Alex Browne
05fe8792ea Merge pull request #676 from 0xProject/feature/mocha-source-maps
Use source-map-support package to include correct line numbers in mocha
2018-06-07 11:55:47 -07:00
Fabio Berger
18ed45597a Fix tslint issues 2018-06-07 18:58:51 +02:00
Fabio Berger
b646c84414 Merge branch 'fix/order-utils/remaining-v2-changes' into feature/combinatorial-testing
* fix/order-utils/remaining-v2-changes:
  Fix tslint failure
  Pass in fee and assetAmount rather then the whole signedOrder
2018-06-07 18:52:14 +02:00
Fabio Berger
a200eaacaa Fix tslint failure 2018-06-07 18:51:52 +02:00
Fabio Berger
f5ad553be3 Pass in fee and assetAmount rather then the whole signedOrder 2018-06-07 18:33:42 +02:00
Fabio Berger
7b7664bd66 Merge branch 'fix/order-utils/remaining-v2-changes' into feature/combinatorial-testing
* fix/order-utils/remaining-v2-changes:
  Revert to returning orderState on invalid order
  - Refactor remainingFillableCalculator so it can be used for the maker and taker side - Moved the tests over from order-watcher - Did some token -> asset renaming
  Update naming in orderStateUtils to use asset over token, also removed cancelledAmount since in V2 it's binary.
2018-06-07 18:22:00 +02:00
Fabio Berger
4f4acc04fe Fix missing paths 2018-06-07 18:14:35 +02:00
Fabio Berger
dee0fec9e9 Revert to returning orderState on invalid order 2018-06-07 18:10:56 +02:00
Fabio Berger
73cc2a140c - Refactor remainingFillableCalculator so it can be used for the maker and taker side
- Moved the tests over from order-watcher
- Did some token -> asset renaming
2018-06-07 18:03:50 +02:00
Fabio Berger
6058a74da5 Update naming in orderStateUtils to use asset over token, also removed cancelledAmount since in V2 it's binary. 2018-06-07 18:02:48 +02:00
Fabio Berger
ab5e021bda POC: Generates an order from spec, get's the amount fillable 2018-06-07 18:00:13 +02:00
Fabio Berger
bd3b652cfc Fixed path 2018-06-07 13:15:13 +02:00
Fabio Berger
73429fc720 merge v2-prototype 2018-06-07 12:27:03 +02:00
Fabio Berger
10478a6b2f Merge branch 'v2-prototype' into refactor/move-spawn-switch-to-utils
* v2-prototype: (66 commits)
  Run prettier
  Remove unused variable
  Fix linting issues
  Change shouldRenderHeader prop to shouldHideHeader
  Get build and tests to pass
  typo
  Apply prettier
  Update contracts tests after rebase
  Apply various fixes based on PR feedback
  Document debug_increaseTime method and fix typo in devnet README
  Use an enum for ProviderType in contracts/src/utils/web3_wrapper
  Update contracts package README
  Update relevant changelogs
  Remove global gas estimate buffer
  Add Async suffix to relevant assertions
  Fix linter errors
  Update package.json and yarn.lock
  Update more things to work with both Geth and Ganache
  Small fixes and cleanup
  Add additional gas to calls to fillOrderNoThrow
  ...

# Conflicts:
#	packages/order-watcher/src/order_watcher/order_watcher.ts
#	packages/react-docs/src/components/type.tsx
#	packages/website/ts/components/ui/lifecycle_raised_button.tsx
#	packages/website/ts/components/wallet/wallet.tsx
2018-06-07 12:21:44 +02:00
Fabio Berger
0fc9814004 merge v2-prototype 2018-06-07 12:18:53 +02:00
Fabio Berger
e0bc01eea1 Merge pull request #673 from mohoff/patch-1
typo
2018-06-07 08:54:05 +01:00
fragosti
2af6d3f6bc Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/website/onboarding-flow-allowances 2018-06-06 18:07:22 -07:00
fragosti
cbe5438a31 Render TokenAllowance 2018-06-06 18:06:03 -07:00
Francesco Agosti
67c4ad128c Merge pull request #662 from 0xProject/feature/improve-linting
Tried enabling no-unused-variable...
2018-06-06 17:21:09 -07:00
fragosti
870eca0d9f Run prettier 2018-06-06 16:59:28 -07:00
Alex Browne
d299458084 Use source-map-support package to include correct line numbers in mocha 2018-06-06 16:54:20 -07:00
fragosti
e0cf68f1d5 Remove unused variable 2018-06-06 16:45:26 -07:00
fragosti
64906a1ba5 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/improve-linting 2018-06-06 16:43:37 -07:00
fragosti
e75721016e Fix linting issues 2018-06-06 16:43:05 -07:00
fragosti
e0d5b9daf8 Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/improve-linting 2018-06-06 16:36:11 -07:00
Brandon Millman
5989844f1c Merge pull request #672 from 0xProject/feature/website/account-management-polish
Account management polish
2018-06-06 16:12:47 -07:00
Brandon Millman
14e3f413a2 Change shouldRenderHeader prop to shouldHideHeader 2018-06-06 16:11:23 -07:00
fragosti
a97d77064a Get build and tests to pass 2018-06-06 15:26:40 -07:00
mohoff
3342dd4001 typo 2018-06-06 23:21:53 +02:00
Alex Browne
785b9811f3 Merge pull request #622 from 0xProject/geth-devnet-rebase-on-v2
Run contract tests against private Geth network
2018-06-06 13:43:29 -07:00
Alex Browne
643c77ded0 Apply prettier 2018-06-06 13:28:32 -07:00
Fabio Berger
e617da3bbf Implement initial generateOrder function that given the scenario values for an order, generates the actual order. 2018-06-06 22:13:50 +02:00
Alex Browne
76f01511a3 Update contracts tests after rebase 2018-06-06 13:10:59 -07:00
Alex Browne
dd8727d3ae Apply various fixes based on PR feedback 2018-06-06 12:41:15 -07:00
Alex Browne
b933946f33 Document debug_increaseTime method and fix typo in devnet README 2018-06-06 12:41:15 -07:00
Alex Browne
5d2f9d7a33 Use an enum for ProviderType in contracts/src/utils/web3_wrapper 2018-06-06 12:41:15 -07:00
Alex Browne
3baf14b793 Update contracts package README 2018-06-06 12:41:15 -07:00
Alex Browne
c57e4ba508 Update relevant changelogs 2018-06-06 12:41:14 -07:00
Alex Browne
98656289ea Remove global gas estimate buffer 2018-06-06 12:41:14 -07:00
Alex Browne
167a38e27d Add Async suffix to relevant assertions 2018-06-06 12:41:14 -07:00
Alex Browne
ba6806df5d Fix linter errors 2018-06-06 12:41:14 -07:00
Alex Browne
fe12101278 Update package.json and yarn.lock 2018-06-06 12:41:14 -07:00
Alex Browne
d6d7f4e875 Update more things to work with both Geth and Ganache 2018-06-06 12:40:31 -07:00
Alex Browne
63caddea62 Small fixes and cleanup 2018-06-06 12:40:31 -07:00
Alex Browne
36b01fbdcf Add additional gas to calls to fillOrderNoThrow 2018-06-06 12:40:31 -07:00
Alex Browne
45a3d8b75a Remove extra logs and other small fixes 2018-06-06 12:40:31 -07:00
Alex Browne
bca62c813d Throw in web3-wrapper when rawCallResult is '0x' 2018-06-06 12:40:30 -07:00
Alex Browne
ae1cf74dcd Remove outdated todo 2018-06-06 12:40:30 -07:00
Alex Browne
577a8dd005 Fix some more test cases, especially those that call increaseTime 2018-06-06 12:40:30 -07:00
Alex Browne
5900899c01 Add support for TEST_PROVIDER env var 2018-06-06 12:40:30 -07:00
Alex Browne
2dfc468094 Update more tests to pass on Geth 2018-06-06 12:40:30 -07:00
Alex Browne
98ffe9931d Get LibBytes tests working on both Ganache and Geth 2018-06-06 12:40:30 -07:00
Alex Browne
2004c0d739 Add ability to quickly switch between Geth and Ganache by changing a const 2018-06-06 12:39:44 -07:00
Alex Browne
cd7cb025ad Update exchange/transactions tests for Geth error messages 2018-06-06 12:39:43 -07:00
Alex Browne
96da267778 Fix ethers.js version override (the package is just called 'ethers') 2018-06-06 12:39:43 -07:00
Alex Browne
5816e410e9 Use our fork of ethers.js 2018-06-06 12:39:43 -07:00
Alex Browne
31c98fc0db Update some tests after rebase 2018-06-06 12:39:43 -07:00
Alex Browne
00bf957b53 Add more transactions to Geth on init. Skip tests that are failing. 2018-06-06 12:39:43 -07:00
Alex Browne
5b999c2f7d Increase gas limit to account for bigger ExchangeContract 2018-06-06 12:39:42 -07:00
Alex Browne
1cc9d9c071 Replace constant.REVERT test assertions with expectRevertOrAlwaysFailingTransaction 2018-06-06 12:39:42 -07:00
Alex Browne
72fb8460e9 Update code after rebase 2018-06-06 12:39:42 -07:00
Alex Browne
577156fe5f Use Geth for contract tests 2018-06-06 12:39:39 -07:00
fragosti
612cc96e41 Add utilities for getting tokens from tokensByAddress 2018-06-06 11:47:11 -07:00
Brandon Millman
da3f783a9f Merge pull request #669 from 0xProject/bug/website/fix-balance-rendering
Update balance amount rendering logic
2018-06-06 11:44:06 -07:00
Leonid Logvinov
b1e8545981 Merge pull request #653 from 0xProject/feature/ethereum-types-docs
Add a documentation page for ethereum-types package
2018-06-06 11:38:43 -07:00
fragosti
6a2da6dc06 Fix merge conflict 2018-06-06 11:23:57 -07:00
fragosti
58603e2a5a Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/improve-linting 2018-06-06 11:17:13 -07:00
fragosti
d97184880c Use CLI for exclude 2018-06-06 11:10:06 -07:00
Leonid Logvinov
625f40cfa6 Add EthereumTypes to _renderDrawer 2018-06-06 10:31:38 -07:00
Leonid Logvinov
49049b8c12 Merge pull request #657 from 0xProject/feature/build-speed
Speedup CI builds
2018-06-06 10:25:43 -07:00
fragosti
037912ccab Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into feature/improve-linting 2018-06-06 10:20:35 -07:00
Leonid Logvinov
8b05b864fb Don't build website if no changes were made to it 2018-06-06 10:11:51 -07:00
Leonid Logvinov
319135c8fe Remove lerna bootstrap 2018-06-06 10:11:51 -07:00
Leonid Logvinov
61d9e418e8 Fix linter issues in generated contract wrappers 2018-06-06 10:11:51 -07:00
Leonid Logvinov
475bb2845d Add generated contract artifacts to prettierignore 2018-06-06 10:11:51 -07:00
Leonid Logvinov
42f39de0f9 Stop running prettier on generated files 2018-06-06 10:11:51 -07:00
fragosti
3898b8e8ab Wrap AllowanceToggle in redux container 2018-06-06 10:11:30 -07:00
Leonid Logvinov
b1fd005c95 Enable skipLibCheck flag in ts 2018-06-06 10:00:21 -07:00
Fabio Berger
cf8fdd3a70 Move spawnSwitchErr to @0xproject/utils 2018-06-06 16:26:04 +02:00
Fabio Berger
cb754ee125 move generated contract wrappers from contract_wrappers/generated/ to generated_contract_wrappers in package with no non-generated contract wrappers 2018-06-06 15:39:38 +02:00
Fabio Berger
cea81df969 Add missing import 2018-06-06 14:49:41 +02:00
Fabio Berger
af1d5fce6e Merge pull request #665 from 0xProject/fix/fix-build-watch
Improve Build/Watch Commands
2018-06-06 13:46:52 +01:00
Fabio Berger
54b86b6131 Add missing yarn 2018-06-06 13:40:34 +02:00
Fabio Berger
ec2b83515b Add missing build:all command 2018-06-06 13:26:08 +02:00
Fabio Berger
2f2724dff5 Fix remaining tslint issues 2018-06-06 12:39:15 +02:00
Fabio Berger
271fa26890 merge v2-prototype 2018-06-06 12:31:30 +02:00
Fabio Berger
fe437da751 Exclude generate contract wrappers from tslint 2018-06-06 12:23:50 +02:00
Fabio Berger
129876d1be remove unused imports from 0x.js test 2018-06-06 12:22:15 +02:00
Fabio Berger
f2ced67a8d Remove unused imports from contract handlebar template 2018-06-06 12:21:12 +02:00
Fabio Berger
787eec8be4 Merge v2-prototype 2018-06-06 11:30:57 +02:00
Fabio Berger
cc39eea999 Merge pull request #664 from 0xProject/fixes/misc-small-fixes
Small miscellaneous fixes
2018-06-06 10:26:50 +01:00
Fabio Berger
cbfed99bc6 Merge branch 'v2-prototype' into fixes/misc-small-fixes
* v2-prototype:
  Remove TranslatedText
  Fix prettier
  Add back UMD bundles for 0x.js
  Move portal disclaimer to the account management section
  Move prices into portal
  Use stricter check for subscribe input text
  Make buttons stack on mobile
  Do not show subscribe form if language is not english
  Address PR feedback
  Lint and cleanup
  Implement subscription form
  Add styled-components and polished
  Have basic newsletter subscribe form working
2018-06-06 11:10:27 +02:00
Brandon Millman
2b4cd8b2ec Fix undefined ether balance 2018-06-06 01:33:35 -07:00
Brandon Millman
b5dc72b126 Make scrollability a prop on TradeHistory 2018-06-06 01:33:35 -07:00
Brandon Millman
ab4d2faea3 Fix EthWrappers background color 2018-06-06 01:33:35 -07:00
Brandon Millman
1677817d9f Update GenerateOrderForm and FillOrder components 2018-06-06 01:33:35 -07:00
Brandon Millman
03854baf53 Update EthWrappers component 2018-06-06 01:33:35 -07:00
Brandon Millman
61dc253de1 Update TradeHistory component 2018-06-06 01:33:35 -07:00
Brandon Millman
a0e8f410d1 Hide action column on mainnet 2018-06-06 01:33:35 -07:00
Brandon Millman
2865f63c5d Fix TokenBalances background color 2018-06-06 01:33:35 -07:00
Brandon Millman
3f19ab1a87 Add isFullWidth prop to TokenBalances component 2018-06-06 01:33:35 -07:00
Brandon Millman
d75fec0cee Update balance amount rendering logic 2018-06-05 22:03:26 -07:00
fragosti
39570a9663 Remove TranslatedText 2018-06-05 21:49:14 -07:00
Brandon Millman
479c18e21f Fix prettier 2018-06-05 16:41:17 -07:00
Brandon Millman
fd4453d85e Merge pull request #668 from 0xProject/feature/website/move-disclaimer
Move portal disclaimer to the account management section
2018-06-05 16:40:08 -07:00
Leonid Logvinov
7ee7f99780 Add back UMD bundles for 0x.js 2018-06-05 16:29:18 -07:00
Brandon Millman
4c0b8e3113 Merge pull request #666 from 0xProject/bug/website/fix-missing-prices
Move price fetching from wallet into portal
2018-06-05 16:11:04 -07:00
Brandon Millman
e0af60d8a7 Move portal disclaimer to the account management section 2018-06-05 16:10:15 -07:00
Brandon Millman
afcb7f00da Move prices into portal 2018-06-05 15:37:51 -07:00
Jacob Evans
a59e9f024e Update Order utils to use eip712 2018-06-05 14:08:04 -07:00
Francesco Agosti
e1b06bfce2 Merge pull request #652 from 0xProject/feature/website/landing-subscribe-button-2
Implement subscribe form on landing page
2018-06-05 13:16:10 -07:00
fragosti
8de3f03b49 Use stricter check for subscribe input text 2018-06-05 12:59:10 -07:00
fragosti
db8f018b42 Some cleanup 2018-06-05 11:51:07 -07:00
fragosti
59cb2132f2 Linter now passes 2018-06-05 11:46:05 -07:00
Fabio Berger
25f62daf14 - Rename watch to watch_without_deps in sub-packages, so dev's don't confuse running watch from root dir, with sub-package dir
- stop using special prebuild script name and run pre_build steps for `watch` and `build` commands
- Remove `clean` step from `build`/`watch`
2018-06-05 15:38:40 +02:00
Fabio Berger
05b9dfbe30 Mention the gasLimit until in the doc comment 2018-06-05 12:29:32 +02:00
Fabio Berger
3db4e2ee2f Merge branch 'v2-prototype' into fixes/misc-small-fixes
* v2-prototype:
  Fix broken link to `contract_templates`

# Conflicts:
#	packages/abi-gen/README.md
2018-06-05 12:22:24 +02:00
Fabio Berger
86a6a5b826 Replace - with _ in yarn script name so that we are consistent across yarn script names 2018-06-05 12:20:23 +02:00
Fabio Berger
cc6338d048 Add switch-default tslint rule and add missing default statement 2018-06-05 12:19:28 +02:00
Fabio Berger
57b65726d6 Remove outdated link in ABI-gen README 2018-06-05 12:16:25 +02:00
Fabio Berger
44a736c53b Merge pull request #661 from feuGeneA/patch-1
Fix broken link to `contract_templates`
2018-06-05 02:47:45 -07:00
Fabio Berger
38cbd42d81 Merge pull request #656 from 0xProject/refactor/fill-scenarios/for-v2
Refactor fill-scenarios for v2
2018-06-05 02:15:27 -07:00
Fabio Berger
28d019f824 Use _.omit for conciseness 2018-06-05 11:13:55 +02:00
Alex Browne
54b8e1be89 Merge pull request #658 from 0xProject/dont-automatically-rebuild-for-tests
Don't automatically rebuild when running yarn test
2018-06-05 01:00:51 -07:00
fragosti
9778695b4a Try enabling no-unused-variable... 2018-06-04 19:48:21 -07:00
Alex Browne
44b6285268 Remove duplicate cleans in package.json when clean is called in prebuild 2018-06-04 18:40:16 -07:00
F. Eugene Aumson
6c6fb2e287 Fix broken link to contract_templates
Note there is still a broken link here, the "wrapper files" one in the second paragraph.
2018-06-04 21:37:47 -04:00
Alex Browne
ecdfde8c38 Remove common-js/umd differentiation from 0x.js/package.json 2018-06-04 18:24:20 -07:00
fragosti
ea2d5b9d4a Make buttons stack on mobile 2018-06-04 17:52:39 -07:00
Jacob Evans
4670cc1a5f Add missing EIP191 prefix for EIP712 2018-06-04 17:41:00 -07:00
Leonid Logvinov
1e0522fe8f Add a TODO comment on StructLog type in the docs 2018-06-04 17:31:30 -07:00
Jacob Evans
70858603ed Merge pull request #633 from 0xProject/feature/contracts/errors
Update error handling
2018-06-04 17:25:45 -07:00
fragosti
3c508c1d27 Do not show subscribe form if language is not english 2018-06-04 17:06:23 -07:00
Jacob Evans
5c44db341f rename GT to GREATER_THAN 2018-06-04 17:04:16 -07:00
fragosti
cf73363016 Address PR feedback 2018-06-04 17:02:10 -07:00
Jacob Evans
351173e554 Rebase from v2-prototype 2018-06-04 16:55:22 -07:00
Amir Bandeali
342432dc76 Update Exchange statuses, revert instead of emmitting event on fill/cancel failures, and remove redundant logic in matchOrders 2018-06-04 15:55:28 -07:00
Alex Browne
c4538cada7 Don't automatically rebuild when running yarn test 2018-06-04 14:13:17 -07:00
Fabio Berger
de532bb2fc revert multisig change 2018-06-04 21:54:16 +01:00
Fabio Berger
f525afa5de reset multisign 2018-06-04 21:49:04 +01:00
Fabio Berger
9fba470364 Add PR to changelog 2018-06-04 21:29:17 +01:00
Fabio Berger
6cd5bf31c9 Update fill-scenarios for V2 and add CHANGELOG entry 2018-06-04 20:54:39 +01:00
Fabio Berger
321c0a8537 Remove unused compact artifacts from order-utils 2018-06-04 20:54:04 +01:00
Fabio Berger
b9bc58ef10 Add missing exports to order-utils and add CHANGELOG entry 2018-06-04 20:53:48 +01:00
Fabio Berger
7bcf05fd19 Add new 2.0 artifacts to migrations 2018-06-04 20:53:08 +01:00
Fabio Berger
f816bdf541 Remove compact_artifacts and replace with updated artifacts 2018-06-04 20:52:37 +01:00
Alex Browne
79472552aa Merge pull request #655 from 0xProject/update-migrations
Update artifacts in migrations
2018-06-04 12:47:11 -07:00
Fabio Berger
c5e5c8288e Update fill-scenarios to depend on v2 updated order-utils and types. Needed to re-employ the symlink hack. 2018-06-04 20:45:35 +01:00
Alex Browne
fd1c7f7169 Update artifacts in migrations 2018-06-04 12:45:23 -07:00
Leonid Logvinov
9212d67e2f Add a documentation page for ethereum types 2018-06-04 10:54:14 -07:00
Francesco Agosti
f5c74d123a Merge pull request #644 from 0xProject/feature/website/refactor-token-state-fetching
Move TokenState fetching logic up into Portal.tsx so it can be used by Wallet and PortalOnboardingFlow
2018-06-04 10:46:08 -07:00
fragosti
c8421efcd3 Address feedback 2018-06-04 10:27:24 -07:00
fragosti
f382609d01 Implement WETH step logic for continue 2018-06-04 10:25:38 -07:00
fragosti
f9615c18a1 Move trackedTokenStateByAddress logic into portal 2018-06-04 10:25:38 -07:00
fragosti
a74597c7cd Lint and cleanup 2018-06-01 17:37:32 -07:00
Fabio Berger
d50fbac5f9 Merge pull request #636 from 0xProject/refactor/order-utils/for-v2
Refactor order-utils for v2
2018-06-01 17:29:44 -07:00
fragosti
95086a75e6 Merge branch 'feature/website/landing-subscribe-button' into feature/website/landing-subscribe-button-2 2018-06-01 17:28:04 -07:00
fragosti
073a96cf63 Implement subscription form 2018-06-01 17:25:50 -07:00
Fabio Berger
d3c64bd5b4 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype:
  Set contract expiration time to a constant 10 minutes
  Remove unused promises array
  Make erc20_wrapper and erc721_wrapper serial
  Rename changelogs to changelog
  Add CHANGELOG entry
  Check that git branch is up to date before publishing
  Move prepublish checks before building packages for publishing
  Refactor changelog utils to a separate module
2018-06-01 17:13:02 -07:00
Fabio Berger
7024a7468a Improve comments and remove unused imports 2018-06-01 17:02:54 -07:00
Alex Browne
62e60e2ba6 Merge pull request #651 from 0xProject/serial-contract-wrappers
Make erc20_wrapper and erc721_wrapper serial and increase contract expiration time
2018-06-01 16:56:32 -07:00
Alex Browne
fb3860757c Set contract expiration time to a constant 10 minutes 2018-06-01 16:40:38 -07:00
Alex Browne
e4a8b17522 Remove unused promises array 2018-06-01 16:18:22 -07:00
Alex Browne
448df1bb9c Make erc20_wrapper and erc721_wrapper serial 2018-06-01 16:09:49 -07:00
Leonid Logvinov
bf6900fb2a Merge pull request #650 from 0xProject/feature/publishing
Improve publishing flow
2018-06-01 15:50:13 -07:00
Leonid Logvinov
50552546f3 Rename changelogs to changelog 2018-06-01 15:46:16 -07:00
Fabio Berger
324fab8186 Fix tslint issues 2018-06-01 14:12:18 -07:00
Fabio Berger
7ab80f01b5 Add comment to exported method 2018-06-01 14:09:47 -07:00
Fabio Berger
9ce4a5c7b1 Add missing dep 2018-06-01 14:09:16 -07:00
Fabio Berger
c9a0525a10 Fix types version 2018-06-01 14:02:15 -07:00
Fabio Berger
83465bb7f5 Also manually symlink types package in contracts 2018-06-01 14:02:00 -07:00
Leonid Logvinov
e8771fb36a Add CHANGELOG entry 2018-06-01 13:59:45 -07:00
Leonid Logvinov
d4d03f3d7f Check that git branch is up to date before publishing 2018-06-01 13:55:40 -07:00
Fabio Berger
d567d667e8 Remove usage of prebuild since it doesn't run on watch 2018-06-01 13:49:30 -07:00
Fabio Berger
3d55bbbc29 remove artifactsDir and contracts from compiler.json 2018-06-01 13:42:06 -07:00
Leonid Logvinov
2f8e52f905 Move prepublish checks before building packages for publishing 2018-06-01 13:39:04 -07:00
Fabio Berger
a5896ac6b6 Add postinstall hack to get around yarn not setting up symlinks properly. This is a temporary fix while we wait on: https://github.com/yarnpkg/yarn/issues/5907 2018-06-01 13:36:22 -07:00
Fabio Berger
94b9d5644c Fix type imports 2018-06-01 13:33:46 -07:00
Leonid Logvinov
06e5fc233c Refactor changelog utils to a separate module 2018-06-01 13:12:45 -07:00
Fabio Berger
aefb922a05 Remove ISigner artifact 2018-06-01 13:11:18 -07:00
Fabio Berger
a22434fd73 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype:
  Update v2 artifacts
  Add IWallet and IValidator to compiled contracts
  Split migrations compile command into one for V1 and another for V2

# Conflicts:
#	packages/migrations/artifacts/2.0.0/Exchange.json
#	packages/migrations/artifacts/2.0.0/TestSignatureValidator.json
2018-06-01 13:08:38 -07:00
Fabio Berger
c41846805d Merge pull request #649 from 0xProject/addArtifacts
Add Updated V2 Artifacts
2018-06-01 13:06:42 -07:00
Fabio Berger
b7b45b69a6 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype: (33 commits)
  Only show ProviderDisplay in portal
  Improve sol-cov docs
  Remove old parse code
  Refactor order parser and add shared order support to new portal
  Add generate and fill order routes
  Address feedback
  Override ethereumjs-tx version
  Fix missing key
  Update placeholder param ordering
  Change userEtherBalanceInWei to optional so we can know if its loading
  Add loading state to ProviderDisplay
  Tweaks
  Add Placeholder component
  Add StandardIconRow
  Split render into loading and loaaded
  Fix linter errors
  Fix linter errors
  Add ethereum-types to extraFileIncludes
  Introduce ethereum-types package
  Remove merge conflicts from yarn.lock
  ...

# Conflicts:
#	packages/contracts/src/utils/exchange_wrapper.ts
#	packages/contracts/src/utils/match_order_tester.ts
#	packages/contracts/src/utils/types.ts
#	packages/contracts/test/exchange/core.ts
#	packages/contracts/test/exchange/match_orders.ts
#	packages/contracts/test/libraries/lib_bytes.ts
#	packages/sol-cov/package.json
2018-06-01 13:05:17 -07:00
Fabio Berger
ed5528664c Update v2 artifacts 2018-06-01 12:20:54 -07:00
Fabio Berger
fe88d3c225 Add IWallet and IValidator to compiled contracts 2018-06-01 12:20:36 -07:00
Fabio Berger
aed4ee8694 Split migrations compile command into one for V1 and another for V2 2018-06-01 12:05:57 -07:00
fragosti
817d9b0d3e Add styled-components and polished 2018-06-01 11:49:58 -07:00
Fabio Berger
df9cfe7840 Update json-schemas version to 1.0.0 to avoid possible conflicts 2018-06-01 11:48:55 -07:00
Fabio Berger
8cd4578d83 Add signature specific validation methods, and other refactors 2018-06-01 11:34:12 -07:00
Brandon Millman
9ca41b9536 Merge pull request #648 from 0xProject/feature/website/fill-order
Add shared order support
2018-06-01 11:22:25 -07:00
Brandon Millman
559743c911 Only show ProviderDisplay in portal 2018-06-01 11:05:01 -07:00
fragosti
3a7f26f620 Have basic newsletter subscribe form working 2018-06-01 11:04:56 -07:00
Leonid Logvinov
04a0eae241 Improve sol-cov docs 2018-06-01 10:43:33 -07:00
Brandon Millman
0500d2fb6e Remove old parse code 2018-06-01 10:37:44 -07:00
Brandon Millman
31f1a9e5aa Refactor order parser and add shared order support to new portal 2018-06-01 10:37:44 -07:00
Brandon Millman
6387aae471 Add generate and fill order routes 2018-06-01 10:37:44 -07:00
Fabio Berger
152082e182 Fix TODOs 2018-05-31 21:32:20 -07:00
Fabio Berger
08eb2b3df7 Update all artifacts 2018-05-31 21:32:13 -07:00
Fabio Berger
846ec87249 List V2 contracts in compile.json now 2018-05-31 21:28:58 -07:00
Fabio Berger
62690b5159 Fix sol-cov issue by changing it's dep to current version of types 2018-05-31 21:23:28 -07:00
Fabio Berger
719c432ca8 Rename ISigner to IWallet and implement SignatureType.Validator 2018-05-31 21:23:08 -07:00
Fabio Berger
e654616b6d Bump types to a major version to avoid the caret 2018-05-31 20:39:10 -07:00
Fabio Berger
f0473b0320 Fix metadata offsets 2018-05-31 16:12:56 -07:00
Fabio Berger
fcc627e6e1 fix method rename 2018-05-31 16:12:36 -07:00
Fabio Berger
fe17802cd2 Rename Ecrecover to EthSign 2018-05-31 16:12:21 -07:00
Leonid Logvinov
384c05ccc7 Merge pull request #642 from 0xProject/feature/ethereum-types
Introduce ethereum-types package
2018-05-31 14:33:28 -07:00
Leonid Logvinov
193e4f3275 Address feedback 2018-05-31 13:43:53 -07:00
Brandon Millman
6fd87568e7 Merge pull request #643 from 0xProject/feature/website/wallet-loading
Add loading states to wallet and provider display
2018-05-31 13:34:12 -07:00
Alex Browne
484fd68495 Merge pull request #647 from 0xProject/override-ethereumjs-tx-version
Override ethereumjs-tx version
2018-05-31 12:19:37 -07:00
Alex Browne
792be54443 Override ethereumjs-tx version 2018-05-31 12:05:13 -07:00
Brandon Millman
00df102c29 Fix missing key 2018-05-31 11:54:25 -07:00
Brandon Millman
90e68ddd73 Update placeholder param ordering 2018-05-31 11:54:25 -07:00
Brandon Millman
df27f4f118 Change userEtherBalanceInWei to optional so we can know if its loading 2018-05-31 11:54:25 -07:00
Brandon Millman
bee26daf0c Add loading state to ProviderDisplay 2018-05-31 11:54:25 -07:00
Brandon Millman
b76c738785 Tweaks 2018-05-31 11:54:25 -07:00
Brandon Millman
8ca9fb0251 Add Placeholder component 2018-05-31 11:54:25 -07:00
Brandon Millman
3b26a656f7 Add StandardIconRow 2018-05-31 11:54:25 -07:00
Brandon Millman
2f5ac5d993 Split render into loading and loaaded 2018-05-31 11:54:25 -07:00
Leonid Logvinov
a2fc9a964b Fix linter errors 2018-05-31 11:19:18 -07:00
Leonid Logvinov
b8a267370d Fix linter errors 2018-05-31 11:04:06 -07:00
Leonid Logvinov
fa3d011f68 Add ethereum-types to extraFileIncludes 2018-05-31 11:04:05 -07:00
Leonid Logvinov
a7fc9caacb Introduce ethereum-types package 2018-05-31 11:04:05 -07:00
Leonid Logvinov
c284f6dcd4 Merge pull request #624 from 0xProject/feature/fast-ci2
Rebalance CI tests to run faster
2018-05-31 11:02:56 -07:00
Fabio Berger
368d59c3ca Update artifacts 2018-05-31 11:02:45 -07:00
Fabio Berger
94ee82e076 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype: (45 commits)
  Check length before accessing indices, add awaitTransactionSuccess where needed, and rename function
  Add back before/after snapshots for each test
  Rename Signer to Wallet, rename GAS_ESTIMATE to GAS_LIMIT
  Make preSigned and allowedValidators mappings public
  Change names of signature types
  Fix formatting and tests
  Make AssetProxyId last byte of assetData
  Add signer to txHash, allow approveValidator to be used with executeTransaction
  Update Whitelist
  Fix Exchange interface
  Increase block gas limit
  Use last byte of signature as signature type
  Remove TxOrigin signature type, modify whitelist to use Validator signature type
  Update Whitelist contract with comments, also require maker to be whitelisted
  Fix build
  Add example whitelist contract and minimum tests
  Add sample whitelist contract
  Add TxOrigin signature type and rearrange order of types
  Add approveValidator function
  Add Validator signature type
  ...

# Conflicts:
#	packages/contracts/src/contracts/current/protocol/Exchange/MixinSignatureValidator.sol
#	packages/contracts/src/utils/types.ts
#	packages/contracts/test/exchange/transactions.ts
#	packages/order-utils/src/asset_proxy_utils.ts
2018-05-31 10:45:34 -07:00
Leonid Logvinov
bfefb6e696 Remove merge conflicts from yarn.lock 2018-05-31 10:36:34 -07:00
Leonid Logvinov
95b7601e2b Don't wait con contract tests to submit coverage 2018-05-31 10:34:24 -07:00
Leonid Logvinov
f9c8bd868c Keep node versions consistent 2018-05-31 10:33:56 -07:00
Leonid Logvinov
a773973b1b Split tests into two buckets 2018-05-31 10:33:56 -07:00
Leonid Logvinov
a60006366b Use a newer version of node/yarn to speed-up deps instaation 2018-05-31 10:33:56 -07:00
Leonid Logvinov
a66bb7889a Try to cache dependencies 2018-05-31 10:32:43 -07:00
Leonid Logvinov
adfba06e85 Combine lint and pretttier tests together 2018-05-31 10:32:43 -07:00
Leonid Logvinov
6ee4e954f6 Rebalance tests 2018-05-31 10:32:43 -07:00
Leonid Logvinov
a11d139ff6 Merge pull request #641 from 0xProject/feature/remove-types
Remove types
2018-05-31 10:29:42 -07:00
Leonid Logvinov
85a3e66314 Add changelog entry for typescript-typings 2018-05-31 10:29:05 -07:00
Leonid Logvinov
1a3958ed60 Remove some types 2018-05-31 10:20:36 -07:00
Leonid Logvinov
743c957918 Remove published types 2018-05-31 10:20:35 -07:00
Amir Bandeali
224a6c192b Fix build 2018-05-31 10:19:10 -07:00
Alex Browne
ae47da3801 Merge pull request #640 from 0xProject/await-transaction-success
Add awaitTransactionSuccess where needed
2018-05-30 22:28:37 -07:00
Alex Browne
a6d669453f Pass in a provider and instantiate a new web3Wrapper in token_registry_wrapper 2018-05-30 22:27:07 -07:00
Fabio Berger
0beab9eec4 Expose isValidPresignedSignatureAsync method 2018-05-30 17:55:33 -07:00
Fabio Berger
aa997f1be5 Move isValidOrderHash to the order_hash_test file 2018-05-30 17:55:16 -07:00
Fabio Berger
4eb58a70bb Decide to throw for Caller signature type for now 2018-05-30 17:54:59 -07:00
Amir Bandeali
5b31d0aa36 Merge pull request #561 from 0xProject/feature/contracts/txorigin
Add Validator signature type
2018-05-30 17:53:22 -07:00
Amir Bandeali
79e7c44884 Check length before accessing indices, add awaitTransactionSuccess where needed, and rename function 2018-05-30 17:52:37 -07:00
Amir Bandeali
1382c1243a Add back before/after snapshots for each test 2018-05-30 17:11:31 -07:00
Amir Bandeali
8f2fd9b603 Rename Signer to Wallet, rename GAS_ESTIMATE to GAS_LIMIT 2018-05-30 17:11:31 -07:00
Amir Bandeali
d625b65a09 Make preSigned and allowedValidators mappings public 2018-05-30 17:11:31 -07:00
Amir Bandeali
101e9be7b9 Change names of signature types 2018-05-30 17:11:31 -07:00
Amir Bandeali
9f93d8f533 Fix formatting and tests 2018-05-30 17:11:31 -07:00
Amir Bandeali
6050a59e4a Make AssetProxyId last byte of assetData 2018-05-30 17:11:30 -07:00
Amir Bandeali
e5b7e29113 Add signer to txHash, allow approveValidator to be used with executeTransaction 2018-05-30 17:11:30 -07:00
Amir Bandeali
ecdd0ce9f2 Update Whitelist 2018-05-30 17:11:30 -07:00
Amir Bandeali
fc5c598f8f Fix Exchange interface 2018-05-30 17:11:30 -07:00
Amir Bandeali
18ebed3c5d Increase block gas limit 2018-05-30 17:11:30 -07:00
Amir Bandeali
822e319efe Use last byte of signature as signature type 2018-05-30 17:11:30 -07:00
Amir Bandeali
6d462fc961 Remove TxOrigin signature type, modify whitelist to use Validator signature type 2018-05-30 17:11:30 -07:00
Amir Bandeali
4b71c65aea Update Whitelist contract with comments, also require maker to be whitelisted 2018-05-30 17:11:30 -07:00
Amir Bandeali
34ab53173d Fix build 2018-05-30 17:11:30 -07:00
Amir Bandeali
d6be6f79ce Add example whitelist contract and minimum tests 2018-05-30 17:11:30 -07:00
Amir Bandeali
87d36f06fd Add sample whitelist contract 2018-05-30 17:11:30 -07:00
Amir Bandeali
3eb05b4505 Add TxOrigin signature type and rearrange order of types 2018-05-30 17:11:30 -07:00
Amir Bandeali
0789c6a3d8 Add approveValidator function 2018-05-30 17:11:30 -07:00
Amir Bandeali
b587f076fe Add Validator signature type 2018-05-30 17:11:30 -07:00
Amir Bandeali
a5a7217c8f Add deepCopyBytes method to LibBytes 2018-05-30 17:11:30 -07:00
Amir Bandeali
c0cf55b40b Merge pull request #639 from 0xProject/fix/contracts/multisigWrapper
Update LogDecoder
2018-05-30 17:10:39 -07:00
Fabio Berger
9200ed2216 Introduce OrderWithoutExchangeAddress type since this is what get's sent to the smart contracts 2018-05-30 14:45:20 -07:00
Fabio Berger
e1f7dd1372 Add ISigner artifacts 2018-05-30 14:08:58 -07:00
Fabio Berger
32833b7301 Fix order-utils tests 2018-05-30 14:08:43 -07:00
Fabio Berger
3302c89284 Revivie the ECSignatureSchema 2018-05-30 13:52:27 -07:00
Francesco Agosti
e18d61b31a Merge pull request #635 from 0xProject/feature/website/custom-onboarding-tooltip
Remove react-joyride and some more refactoring
2018-05-30 11:49:04 -07:00
Francesco Agosti
61cd1ae525 Merge pull request #638 from 0xProject/feature/website/onboarding-eth-flow
Onboarding: implement add ETH step, and stub for add WETH step
2018-05-30 11:17:38 -07:00
Alex Browne
064608a8ef Add awaitTransactionSuccess where needed 2018-05-30 11:10:30 -07:00
Amir Bandeali
5a840c88b5 Change logDecoder back into class, remove awaitTransactionMined from multiSigWrapper 2018-05-30 10:00:58 -07:00
fragosti
b14c3fe48d Onboarding: implement add ETH step, and stub for add WETH step 2018-05-29 17:57:22 -07:00
Fabio Berger
4874d55d03 Initial refactor of order-utils. Move many utils from contracts into this package. 2018-05-29 16:58:30 -07:00
Brandon Millman
b20e40dd6f Fix unselected relayer drawer item 2018-05-29 16:04:25 -07:00
fragosti
bc28a08dd0 Address PR feedback 2018-05-29 15:49:13 -07:00
fragosti
0d3010f6fc Remove react-joyride from deps 2018-05-29 15:27:30 -07:00
fragosti
399a651fa3 Add entry to CHANGELOG.json 2018-05-29 15:24:10 -07:00
fragosti
30ac5fcb5e Remove blacklist concept 2018-05-29 15:18:43 -07:00
fragosti
92cb5e10be Some cleanup 2018-05-29 14:26:38 -07:00
Fabio Berger
10faa47495 Freeze order-utils at 0.0.5 for all packages except contracts 2018-05-29 13:38:19 -07:00
fragosti
f0bbf2cab0 Improve tooltip look 2018-05-29 12:53:18 -07:00
fragosti
338e8be327 Add types for react-popper, remove types for react-joyride 2018-05-29 11:21:14 -07:00
Leonid Logvinov
a4726a0e0d Merge pull request #621 from 0xProject/feature/compiler-assertions
Add schema assertions on public methods of @0xproject/sol-compiler
2018-05-29 10:58:46 -07:00
fragosti
d4a366aeb1 Replace react-joyride with react-popper 2018-05-29 10:48:44 -07:00
Leonid Logvinov
98652997f9 Add a CHANGELOG entry 2018-05-29 10:09:09 -07:00
Leonid Logvinov
f5a39c2f7b Make opts param optional in Compiler 2018-05-29 10:09:09 -07:00
Leonid Logvinov
9854db0a63 Throw if trying to schema-validate an undefined 2018-05-29 10:09:09 -07:00
Leonid Logvinov
cc7b0f4623 Add CHANGELOG entry 2018-05-29 10:09:09 -07:00
Leonid Logvinov
549e6d57c4 Add schema assertions on public methods of @0xproject/sol-compiler 2018-05-29 10:09:07 -07:00
Fabio Berger
dea322e2c5 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype:
  Hide wallet management option and expand component on small screens
  Remove registry override
  Revert "Change the registry in yarn.lock"
  Change the registry in yarn.lock
  Remove contracts -> @0xproject/order-utils dependency
2018-05-25 19:54:11 -07:00
Fabio Berger
ed5b9c2b56 Merge pull request #625 from 0xProject/feature/contracts-without-contract-wrappers
Remove contracts -> @0xproject/contract-wrappers dependency
2018-05-25 19:52:47 -07:00
Brandon Millman
c31ca4af90 Hide wallet management option and expand component on small screens 2018-05-25 18:34:07 -07:00
Leonid Logvinov
2c9ec4bee8 Remove registry override 2018-05-25 17:01:50 -07:00
Leonid Logvinov
6dcfc36a4a Revert "Change the registry in yarn.lock"
This reverts commit 76579a3004.
2018-05-25 16:36:56 -07:00
Leonid Logvinov
76579a3004 Change the registry in yarn.lock 2018-05-25 16:13:48 -07:00
Leonid Logvinov
1d68692bb6 Remove contracts -> @0xproject/order-utils dependency 2018-05-25 16:09:17 -07:00
Fabio Berger
790af0fd72 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype:
  Fix imports in order_utils
  Use web3-wrapper instead of 0x.js, update logDecoder
  Cleanup tests
  Add errMsg when throwing on unrecognized error
  Move readFirst4 to LibBytes
  Add old MultiSig to previous contracts, cleanup file structure
  Fix build
  Address feedback, rename contract to AssetProxyOwner
  Update multisig tests and utils
  Update MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress to use a mapping of registered proxies
  Implement design for relayers with no volume or tokens
2018-05-25 15:39:02 -07:00
fragosti
39008372e5 Write custom tooltip component 2018-05-25 15:31:27 -07:00
fragosti
1026952f26 Run linter 2018-05-25 13:13:06 -07:00
fragosti
9631927a8c Add localstorage helper 2018-05-25 12:03:18 -07:00
fragosti
b0e6ce581a Add next button 2018-05-25 12:03:18 -07:00
fragosti
e575323c60 Auto-show onboarding flow on first page view 2018-05-25 12:03:18 -07:00
fragosti
809ac3340c Add ability to blacklist onboarding steps 2018-05-25 12:03:18 -07:00
fragosti
f0af638874 Fix PortalOnboardingFlowProps 2018-05-25 12:03:18 -07:00
fragosti
b49148ec54 Implement metamask installation flow 2018-05-25 12:03:18 -07:00
Brandon Millman
c7f5e77b3f Merge pull request #620 from 0xProject/feature/website/relayer-empty
Implement design for relayers with no volume or tokens
2018-05-24 23:16:44 -07:00
Leonid Logvinov
817248369a Fix imports in order_utils 2018-05-24 18:30:48 -07:00
Amir Bandeali
654698b208 Merge pull request #571 from 0xProject/feature/contracts/proxyOwner
Update MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress
2018-05-24 17:24:52 -07:00
Fabio Berger
4e5bfae332 Merge branch 'v2-prototype' into refactor/order-utils/for-v2
* v2-prototype:
  Temporarily disable installation tests
  Use domain separator for exchange address
  publicGetOrderSchemaHash -> getOrderSchemaHash
  Update order hash to match latest eip712
  Pin connect in sra-report
  Fix a typo
  Pin types in sra-report
  Fix linter issues
  Unpin types version in @0xproject/connect
  Pin types version in website
  Do a fake version bump on types so that yarn doesn't try to install updated version for not yet migrated packages
  Migrate migrations to v2
2018-05-24 16:31:21 -07:00
Fabio Berger
895a9093aa Merge pull request #575 from 0xProject/feature/contracts/eip712-order-hash
Update order hash to match latest eip712
2018-05-24 16:30:46 -07:00
Fabio Berger
35121f0b78 Merge branch 'v2-prototype' into feature/contracts/eip712-order-hash
* v2-prototype:
  Temporarily disable installation tests
  Pin connect in sra-report
  Fix a typo
  Pin types in sra-report
  Fix linter issues
  Unpin types version in @0xproject/connect
  Pin types version in website
  Do a fake version bump on types so that yarn doesn't try to install updated version for not yet migrated packages
  Migrate migrations to v2

# Conflicts:
#	packages/contracts/src/utils/order_utils.ts
2018-05-24 16:30:30 -07:00
Leonid Logvinov
c4a7574f7b Merge pull request #618 from 0xProject/feature/v2-migrations
Migrate migrations, types to v2
2018-05-24 16:18:44 -07:00
Leonid Logvinov
4ee636ecca Temporarily disable installation tests 2018-05-24 16:07:11 -07:00
Fabio Berger
662dc12877 Add senderAddress to order schema 2018-05-24 16:05:07 -07:00
Jacob Evans
3cc8af819c Use domain separator for exchange address 2018-05-24 16:00:22 -07:00
Jacob Evans
fcf4a958c3 publicGetOrderSchemaHash -> getOrderSchemaHash 2018-05-24 16:00:22 -07:00
Jacob Evans
65676c22f9 Update order hash to match latest eip712 2018-05-24 16:00:22 -07:00
Leonid Logvinov
3e907d7f4f Pin connect in sra-report 2018-05-24 15:45:11 -07:00
Leonid Logvinov
9fa567aa78 Fix a typo 2018-05-24 15:42:29 -07:00
Amir Bandeali
237ebb0716 Use web3-wrapper instead of 0x.js, update logDecoder 2018-05-24 15:39:19 -07:00
Amir Bandeali
fdea260e41 Cleanup tests 2018-05-24 15:39:19 -07:00
Amir Bandeali
9af77dc835 Add errMsg when throwing on unrecognized error 2018-05-24 15:39:19 -07:00
Amir Bandeali
d4aacd218a Move readFirst4 to LibBytes 2018-05-24 15:39:19 -07:00
Amir Bandeali
326a566db2 Add old MultiSig to previous contracts, cleanup file structure 2018-05-24 15:39:19 -07:00
Amir Bandeali
84257dac2b Fix build 2018-05-24 15:39:19 -07:00
Amir Bandeali
22ad9e1e1a Address feedback, rename contract to AssetProxyOwner 2018-05-24 15:39:19 -07:00
Amir Bandeali
cc44f5f75d Update multisig tests and utils 2018-05-24 15:39:19 -07:00
Amir Bandeali
23df5cc201 Update MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress to use a mapping of registered proxies 2018-05-24 15:39:19 -07:00
Brandon Millman
dab2d5db44 Implement design for relayers with no volume or tokens 2018-05-24 15:37:04 -07:00
Leonid Logvinov
1717c5c00d Pin types in sra-report 2018-05-24 15:28:37 -07:00
Leonid Logvinov
ea3f82ccc2 Fix linter issues 2018-05-24 14:56:20 -07:00
Leonid Logvinov
fd6ce470e7 Unpin types version in @0xproject/connect 2018-05-24 14:40:53 -07:00
Leonid Logvinov
6d3fbbe256 Pin types version in website 2018-05-24 14:40:32 -07:00
Leonid Logvinov
45c4de16d2 Do a fake version bump on types so that yarn doesn't try to install updated version for not yet migrated packages 2018-05-24 14:33:48 -07:00
Leonid Logvinov
92b0efff5a Migrate migrations to v2 2018-05-24 13:59:30 -07:00
Leonid Logvinov
bc550c3265 Merge pull request #617 from 0xProject/feature/no-coverage-ci-contracts
Disable contracts coverage on CI
2018-05-24 13:37:55 -07:00
Francesco Agosti
b39aa5d359 Merge pull request #607 from 0xProject/feature/website/onboarding-setup
Set up structure for onboarding flow along with basic step 0
2018-05-24 13:02:45 -07:00
fragosti
f8f8bd95ca Improve OnboardingFlow API and typescript types 2018-05-24 11:24:10 -07:00
fragosti
d057b77dc5 Address PR feedback 2018-05-24 10:53:13 -07:00
fragosti
27d637195d Undo change to react-highlight 2018-05-24 10:52:11 -07:00
fragosti
46919ce797 Fix build errors 2018-05-24 10:52:11 -07:00
fragosti
b4e1ce59f9 Fix issue where modal can be out of sync with app state 2018-05-24 10:52:11 -07:00
fragosti
7af77d3eb0 Basic onboarding flow infrastructure set up 2018-05-24 10:51:06 -07:00
Francesco Agosti
de1ff52de3 Merge pull request #612 from 0xProject/feature/website/add-redux-devtools
Add redux-devtools-extension to project
2018-05-24 10:12:57 -07:00
Leonid Logvinov
69c1df68c8 Disable contracts coverage on CI 2018-05-24 09:57:13 -07:00
Fabio Berger
62431fee8e Merge pull request #615 from 0xProject/refactor/json-schemas/for-v2
Refactor order schemas in json-schemas for v2
2018-05-24 09:39:28 -07:00
Fabio Berger
357201869a Change all wsrun commands so that they fast-exit (e.g any one failing stops the entire process from executing) 2018-05-23 21:27:37 -07:00
Fabio Berger
a88e8ffe79 Have source-map-loader ignore node_modules packages 2018-05-23 21:27:08 -07:00
Fabio Berger
5c88f43e15 Revert to an earlier version that works 2018-05-23 21:26:17 -07:00
Alex Browne
2f7ab3e32d Merge pull request #613 from 0xProject/check-tx-receipt-status
Check transaction receipt status
2018-05-23 18:12:41 -07:00
Fabio Berger
3ec05bb5d8 Force hex to have at least two hex values after the prefix, but it could be two zeros 2018-05-23 17:36:34 -07:00
Fabio Berger
59890f2c83 Fix Hex regex and tests 2018-05-23 17:28:17 -07:00
Fabio Berger
2c70162bee Remove the caret so it actually installs this version 2018-05-23 17:28:03 -07:00
Brandon Millman
2f1a4042bf Merge pull request #603 from 0xProject/feature/website/wallet-flex-box
Improve wallet layout using flexbox
2018-05-23 17:03:54 -07:00
Fabio Berger
4af7740907 Merge branch 'v2-prototype' into refactor/json-schemas/for-v2
* v2-prototype:
  Ignore v2 artifacts
2018-05-23 17:01:14 -07:00
Fabio Berger
f64ea361d4 Add CHANGELOG entry 2018-05-23 17:00:32 -07:00
Fabio Berger
9c850d152c Updated Order, SignedOrder schemas, removed ECSignature schema types and added Hex basic type 2018-05-23 16:52:41 -07:00
Fabio Berger
71266c0220 Merge pull request #614 from 0xProject/bug/prettier/ignore-v2-artifacts
Ignore v2 artifacts
2018-05-23 15:47:43 -07:00
Brandon Millman
0801457ff0 Use visibility property instead of placeholder div in wrap ether item 2018-05-23 15:28:51 -07:00
Jacob Evans
ba7c9ceccc Ignore v2 artifacts 2018-05-23 15:21:43 -07:00
Alex Browne
f6f2818a02 Change error message for awaitTransactionSuccessAsync 2018-05-23 15:09:19 -07:00
Alex Browne
b05a3b7aed Check transaction receipt status codes where applicable 2018-05-23 15:09:17 -07:00
Brandon Millman
3fe94891d3 Merge branch 'v2-prototype' into feature/website/wallet-flex-box
* v2-prototype: (95 commits)
  Add missing dep to website
  Upgrade solidity parser
  Fix trace test
  Fix linter issues
  Move contract utils
  Fix prettier
  Fix NameResolver
  Fix prettier
  Remove 0x.js as a dependency from website
  Enable 0x.js tests
  Fix small bug in order-utils
  Address feedback
  Fix Tslint error caused by "PromiseLike" value
  Fix Tslint error caused by "PromiseLike" value
  Update dogfood url
  fix contract-wrappers version
  Parse compiler.json in SolCompilerArtifactsAdapter
  Fix TokenTransferProxy artifact name since it's now suffixed with _v1
  Update yarn.lock
  Fix signature verification test
  ...
2018-05-23 14:16:32 -07:00
Fabio Berger
9d11028fce Bump all dependencies on json-schemas down a patch version so that they don't auto-magically get upgraded to the next version during the next publish 2018-05-23 13:56:52 -07:00
Fabio Berger
f6b81f588d Add missing dep to website 2018-05-23 13:30:09 -07:00
Fabio Berger
513007a82c Merge pull request #589 from 0xProject/feature/truffle-sol-cov
Sol-cov artifact Adapters (truffle)
2018-05-23 12:01:38 -07:00
Leonid Logvinov
bf18a90da7 Upgrade solidity parser 2018-05-23 11:21:33 -07:00
Leonid Logvinov
2ddd53b355 Fix trace test 2018-05-23 10:49:08 -07:00
Leonid Logvinov
c9aef16649 Fix linter issues 2018-05-23 10:39:56 -07:00
Leonid Logvinov
6a77e0fe56 Move contract utils 2018-05-23 10:32:14 -07:00
Leonid Logvinov
0a725415a4 Merge branch 'v2-prototype' into feature/truffle-sol-cov 2018-05-23 10:19:10 -07:00
Leonid Logvinov
af0d9439d4 Merge pull request #611 from 0xProject/feature/remove-0x-from=-website
Remove 0x.js as a dependency from website
2018-05-23 10:16:00 -07:00
Leonid Logvinov
65f09d0528 Fix prettier 2018-05-23 10:15:03 -07:00
Leonid Logvinov
48e6695447 Fix NameResolver 2018-05-23 09:57:43 -07:00
Leonid Logvinov
e3604c1662 Fix prettier 2018-05-23 09:41:35 -07:00
Leonid Logvinov
5913d654bd Remove 0x.js as a dependency from website 2018-05-23 09:41:35 -07:00
Fabio Berger
f3fe9661f6 Merge pull request #609 from 0xProject/refactor/contracts/remove0xjsDep
Remove 0x.js dep from Contracts
2018-05-23 09:04:59 -07:00
Fabio Berger
17cfd7b001 Enable 0x.js tests 2018-05-23 08:37:43 -07:00
Fabio Berger
e941bdd945 Merge branch 'v2-prototype' into refactor/contracts/remove0xjsDep
* v2-prototype:
  Fix small bug in order-utils
  Fix Tslint error caused by "PromiseLike" value
  Update dogfood url
2018-05-22 18:15:38 -07:00
Alex Browne
e7e8773cd4 Fix small bug in order-utils 2018-05-22 18:14:23 -07:00
Leonid Logvinov
ebc750d5bf Address feedback 2018-05-22 17:41:48 -07:00
Fabio Berger
3507fe6d5b Merge branch 'v2-prototype' of github.com:0xProject/0x-monorepo into v2-prototype
* 'v2-prototype' of github.com:0xProject/0x-monorepo:
  Update dogfood url
2018-05-22 17:37:23 -07:00
Fabio Berger
f9ef6491e6 Fix Tslint error caused by "PromiseLike" value 2018-05-22 17:37:06 -07:00
Fabio Berger
61e487224f Fix Tslint error caused by "PromiseLike" value 2018-05-22 17:36:41 -07:00
Brandon Millman
85eb82acb2 Update dogfood url 2018-05-22 17:36:22 -07:00
Fabio Berger
4d364ea261 fix contract-wrappers version 2018-05-22 17:18:09 -07:00
Fabio Berger
577528bb9c merge v2-prototype 2018-05-22 16:56:09 -07:00
Leonid Logvinov
d49f2c40ae Parse compiler.json in SolCompilerArtifactsAdapter 2018-05-22 16:41:50 -07:00
Fabio Berger
706bfafe74 Fix TokenTransferProxy artifact name since it's now suffixed with _v1 2018-05-22 16:38:26 -07:00
Fabio Berger
1b8204dabe Update yarn.lock 2018-05-22 16:37:33 -07:00
Fabio Berger
05cabded02 Fix signature verification test 2018-05-22 16:37:17 -07:00
Fabio Berger
1578402cbe Fix TokenTransferProxy artifact name since it's now suffixed with _v1 2018-05-22 16:37:04 -07:00
fragosti
49ee56b22c Move to deps from devDeps and use in development only 2018-05-22 16:32:26 -07:00
Leonid Logvinov
8c7f0902c0 Add a more verbose comment for self-destruct 2018-05-22 16:29:10 -07:00
Leonid Logvinov
056ef9ccd1 Merge pull request #610 from 0xProject/feature/sra-report-without-0x
Remove 0x.js dependency from sra-report
2018-05-22 16:18:42 -07:00
fragosti
dfc635b451 Add redux-devtools-extension to project 2018-05-22 16:08:04 -07:00
Leonid Logvinov
68321362c5 Remove 0x.js dependency from sra-report 2018-05-22 15:45:44 -07:00
Leonid Logvinov
f7560036b8 Merge branch 'v2-prototype' into feature/truffle-sol-cov 2018-05-22 15:33:36 -07:00
Leonid Logvinov
fc87caa348 Merge branch 'development' into v2-prototype 2018-05-22 15:30:39 -07:00
Leonid Logvinov
6e0aef5f2b Fix depth tracking in a tracer 2018-05-22 15:27:18 -07:00
Leonid Logvinov
127b3e7d60 Fix sol-compiler version 2018-05-22 15:27:17 -07:00
Leonid Logvinov
9740199870 Fix sol-cov tests 2018-05-22 15:27:17 -07:00
Leonid Logvinov
06be580d2c Fix a bug in CALL-like opcode handling 2018-05-22 15:27:17 -07:00
Leonid Logvinov
6540343f45 Remove trace.json 2018-05-22 15:27:17 -07:00
Leonid Logvinov
447b305e3c Suppport subcalls in constructor 2018-05-22 15:27:17 -07:00
Leonid Logvinov
0c53d276f8 Use BlockParamLiteral.Latest 2018-05-22 15:27:17 -07:00
Leonid Logvinov
83c37c6a7a Address feedback 2018-05-22 15:27:17 -07:00
Leonid Logvinov
ac52ad88a1 Use loglevel instead of verbose flag 2018-05-22 15:26:29 -07:00
Leonid Logvinov
84a1b5612d Publish
- 0x.js@0.38.0
 - @0xproject/abi-gen@0.3.0
 - @0xproject/assert@0.2.10
 - @0xproject/base-contract@0.3.2
 - @0xproject/connect@0.6.13
 - @0xproject/contract-wrappers@0.0.2
 - contracts@2.1.29
 - @0xproject/dev-utils@0.4.2
 - @0xproject/fill-scenarios@0.0.2
 - @0xproject/json-schemas@0.7.24
 - @0xproject/metacoin@0.0.7
 - @0xproject/migrations@0.0.6
 - @0xproject/monorepo-scripts@0.1.20
 - @0xproject/order-utils@0.0.5
 - @0xproject/order-watcher@0.0.2
 - @0xproject/react-docs-example@0.0.12
 - @0xproject/react-docs@0.0.12
 - @0xproject/react-shared@0.1.7
 - @0xproject/sol-compiler@0.5.0
 - @0xproject/sol-cov@0.0.11
 - @0xproject/sol-resolver@0.0.5
 - @0xproject/sra-report@0.1.0
 - @0xproject/subproviders@0.10.2
 - @0xproject/testnet-faucets@1.0.30
 - @0xproject/tslint-config@0.4.18
 - @0xproject/types@0.7.0
 - @0xproject/typescript-typings@0.3.2
 - @0xproject/utils@0.6.2
 - @0xproject/web3-wrapper@0.6.4
 - @0xproject/website@0.0.33
2018-05-22 15:25:47 -07:00
Leonid Logvinov
fa4e694859 Updated CHANGELOGS 2018-05-22 15:22:38 -07:00
Leonid Logvinov
f8c628b0c7 Updated CHANGELOGS 2018-05-22 15:22:12 -07:00
Leonid Logvinov
2f35e4789c Change publish command name 2018-05-22 15:20:35 -07:00
Leonid Logvinov
253bada643 Fix import paths 2018-05-22 15:20:35 -07:00
Leonid Logvinov
e4fe497504 Refactor ContractData lookup 2018-05-22 15:20:35 -07:00
Leonid Logvinov
5c9bde203e Remove a comment 2018-05-22 15:20:35 -07:00
Leonid Logvinov
d9907f227e Use a hidden directory for temp artifacts 2018-05-22 15:20:34 -07:00
Leonid Logvinov
08b08ef1d0 Match class names with file names 2018-05-22 15:20:34 -07:00
Leonid Logvinov
334ef5c3eb Improve a CHANGELOG comment 2018-05-22 15:20:34 -07:00
Leonid Logvinov
ac925aa226 Improve a CHANGELOG comment 2018-05-22 15:20:34 -07:00
Leonid Logvinov
86f17fb466 Rename ZeroExArtifactAdapter to SolCompilerArtifactAdapter 2018-05-22 15:20:34 -07:00
Leonid Logvinov
6aafda4517 Assign then pass 2018-05-22 15:20:34 -07:00
Leonid Logvinov
8267950dbc Assign then return 2018-05-22 15:20:34 -07:00
Leonid Logvinov
56d1b0103f Introduce CONFIG_FILE 2018-05-22 15:20:34 -07:00
Leonid Logvinov
1ff34bd0f4 Remove web3Factory.create and remove dev-tools dependency on sol-cov 2018-05-22 15:20:34 -07:00
Leonid Logvinov
b86248f13f Add CHANGELOG entries 2018-05-22 15:20:34 -07:00
Leonid Logvinov
427a29145d Support all opcodes in a trace parser 2018-05-22 15:20:34 -07:00
Leonid Logvinov
974575b695 Make sol-cov work with truffle and other artifact adapters 2018-05-22 15:20:34 -07:00
Leonid Logvinov
60b1fdd367 Only look at *.sol files in NameResolver 2018-05-22 15:20:33 -07:00
Leonid Logvinov
842f2ea5cc Fix a bug in FS resolver causing it to try reading directories 2018-05-22 15:20:33 -07:00
Leonid Logvinov
ae220c37df Add solcVersion to CompilerOpts 2018-05-22 15:20:33 -07:00
Fabio Berger
6f57f52ac2 Fix dep version 2018-05-22 13:44:35 -07:00
Fabio Berger
4897513d7d Fix import 2018-05-22 13:19:35 -07:00
Fabio Berger
c8dad01137 Fix await calls 2018-05-22 13:19:29 -07:00
Fabio Berger
5a09063adb Refactor etherToken test to use contract-wrappers 2018-05-22 13:15:16 -07:00
Fabio Berger
9de9bf651b Fix ExchangeWrapper 2018-05-22 13:15:01 -07:00
Fabio Berger
09d80b1e50 Fix imports 2018-05-22 13:14:38 -07:00
Fabio Berger
2b793f372a Merge branch 'v2-prototype' into refactor/contracts/remove0xjsDep
* v2-prototype:
  Fix tslint issues
  Add `are` to boolean naming conventions
  Fix tslint
  Fix the tsutils version, fixing ts typings issue
  Rename some variables in multi_sig_with_time_lock.ts
  Remove extra awaitTransactionMinedAsync calls
  Update artifacts
  Update yarn.lock
  Fix warnings in Metacoin
  Upgrade UglifyJS to include ES6 support
  Add CancelOrder and MatchOrder types
  Add missing return types
  Ignore classnames linter rule
  Apply changes to test/exchange/match_orders.ts
  Fix some unhandled promise rejections
  Add awaitTransactionMinedAsync after every sent transaction
  Add missing blockchainLifecycle calls to contracts tests

# Conflicts:
#	packages/contracts/src/utils/exchange_wrapper.ts
#	packages/contracts/test/asset_proxy/proxies.ts
#	packages/contracts/test/exchange/dispatcher.ts
#	packages/contracts/test/multi_sig_with_time_lock.ts
2018-05-22 13:02:21 -07:00
Fabio Berger
4cfeb6b8ac Merge branch 'v2-prototype' of github.com:0xProject/0x-monorepo into v2-prototype
* 'v2-prototype' of github.com:0xProject/0x-monorepo:
  Rename some variables in multi_sig_with_time_lock.ts
  Remove extra awaitTransactionMinedAsync calls
  Apply changes to test/exchange/match_orders.ts
  Fix some unhandled promise rejections
  Add awaitTransactionMinedAsync after every sent transaction
  Add missing blockchainLifecycle calls to contracts tests
2018-05-22 11:58:50 -07:00
Fabio Berger
9373451ca8 Fix tslint issues 2018-05-22 11:58:42 -07:00
Fabio Berger
15c199d5a2 Add are to boolean naming conventions 2018-05-22 11:58:35 -07:00
Alex Browne
cde85243d6 Merge pull request #601 from 0xProject/contracts-test-fixes
Contracts test fixes
2018-05-22 11:48:41 -07:00
Fabio Berger
c579db1a7b Merge branch 'v2-prototype' of github.com:0xProject/0x-monorepo into v2-prototype
* 'v2-prototype' of github.com:0xProject/0x-monorepo:
  Update artifacts
  Update yarn.lock
  Fix warnings in Metacoin
  Upgrade UglifyJS to include ES6 support
  Add CancelOrder and MatchOrder types
  Add missing return types
  Ignore classnames linter rule
2018-05-22 11:42:58 -07:00
Fabio Berger
61fa34e2ce Fix tslint 2018-05-22 11:42:52 -07:00
Fabio Berger
96febf6639 Merge pull request #605 from 0xProject/fix/multiple/build-errors
Fix build/lint errors and warnings
2018-05-22 11:40:27 -07:00
Fabio Berger
09e59cf677 Fix the tsutils version, fixing ts typings issue 2018-05-22 11:23:14 -07:00
Fabio Berger
9119ee14b6 Update artifact 2018-05-22 11:19:19 -07:00
Fabio Berger
2ac2ae3eee Fix tsutils version 2018-05-22 11:19:09 -07:00
Fabio Berger
a682b5d90e Remove 0x.js dep from contracts 2018-05-22 11:18:50 -07:00
Alex Browne
e26c0c58ae Rename some variables in multi_sig_with_time_lock.ts 2018-05-22 11:02:29 -07:00
Alex Browne
187fa71526 Remove extra awaitTransactionMinedAsync calls 2018-05-22 10:58:34 -07:00
Leonid Logvinov
031f97e97c Publish
- 0x.js@0.38.0
 - @0xproject/abi-gen@0.3.0
 - @0xproject/assert@0.2.10
 - @0xproject/base-contract@0.3.2
 - @0xproject/connect@0.6.13
 - @0xproject/contract-wrappers@0.0.2
 - contracts@2.1.29
 - @0xproject/dev-utils@0.4.2
 - @0xproject/fill-scenarios@0.0.2
 - @0xproject/json-schemas@0.7.24
 - @0xproject/metacoin@0.0.7
 - @0xproject/migrations@0.0.6
 - @0xproject/monorepo-scripts@0.1.20
 - @0xproject/order-utils@0.0.5
 - @0xproject/order-watcher@0.0.2
 - @0xproject/react-docs-example@0.0.12
 - @0xproject/react-docs@0.0.12
 - @0xproject/react-shared@0.1.7
 - @0xproject/sol-compiler@0.5.0
 - @0xproject/sol-cov@0.0.11
 - @0xproject/sol-resolver@0.0.5
 - @0xproject/sra-report@0.1.0
 - @0xproject/subproviders@0.10.2
 - @0xproject/testnet-faucets@1.0.30
 - @0xproject/tslint-config@0.4.18
 - @0xproject/types@0.7.0
 - @0xproject/typescript-typings@0.3.2
 - @0xproject/utils@0.6.2
 - @0xproject/web3-wrapper@0.6.4
 - @0xproject/website@0.0.33
2018-05-22 10:26:47 -07:00
Leonid Logvinov
b9e1c3c34f Updated CHANGELOGS 2018-05-22 10:26:39 -07:00
Leonid Logvinov
1a35107a1d Updated CHANGELOGS 2018-05-22 10:16:53 -07:00
Leonid Logvinov
d3e086c850 Change publish command name 2018-05-22 10:16:53 -07:00
Fabio Berger
4a0c8d72b0 merge development 2018-05-22 09:25:02 -07:00
Fabio Berger
ab9cfd293b remove generated contract_wrappers during clean 2018-05-22 09:21:20 -07:00
Fabio Berger
cc840a6911 Merge pull request #594 from 0xProject/improvement/addCustomTslintRules
Add more tslint rules
2018-05-22 18:04:50 +02:00
Remco Bloemen
5456187dd0 Update artifacts 2018-05-22 17:13:04 +02:00
Remco Bloemen
73c95c328d Update yarn.lock 2018-05-22 17:08:47 +02:00
Remco Bloemen
4a971be168 Fix warnings in Metacoin 2018-05-22 15:19:40 +02:00
Remco Bloemen
f657a3d811 Upgrade UglifyJS to include ES6 support 2018-05-22 15:19:40 +02:00
Remco Bloemen
b39f75a2e3 Add CancelOrder and MatchOrder types 2018-05-22 15:15:14 +02:00
Remco Bloemen
1dad14f8ea Add missing return types 2018-05-22 13:50:07 +02:00
Remco Bloemen
5cc2e8de7b Ignore classnames linter rule 2018-05-22 13:45:18 +02:00
Brandon Millman
d0abc60176 Add missing key 2018-05-21 21:41:03 -07:00
Brandon Millman
130e83d9b2 Use flexbox for wrapped ether item 2018-05-21 21:25:43 -07:00
Brandon Millman
ed8acdb11c Re add wrapped ether item 2018-05-21 21:25:43 -07:00
Brandon Millman
26370da13d Rewrite balance rows using flex box 2018-05-21 21:25:42 -07:00
Fabio Berger
c4a2f70017 Make lint run in parallel 2018-05-21 18:36:06 -07:00
Alex Browne
a5d315ee2a Apply changes to test/exchange/match_orders.ts 2018-05-21 16:58:29 -07:00
Alex Browne
4fa57f55e6 Fix some unhandled promise rejections 2018-05-21 16:52:49 -07:00
Alex Browne
2c496a92ad Add awaitTransactionMinedAsync after every sent transaction 2018-05-21 16:52:49 -07:00
Alex Browne
4ca8903a21 Add missing blockchainLifecycle calls to contracts tests 2018-05-21 16:52:49 -07:00
Greg Hysen
d460c0e8b9 Merge pull request #572 from 0xProject/feature/contracts/atomicMatching
Atomic Order Matching
2018-05-21 14:29:56 -07:00
Greg Hysen
11b6d290da Removed debug line from chai_setup. Its failing linter and does not appear to be used (it was from an old PR I merged in). 2018-05-21 14:25:39 -07:00
Greg Hysen
d83902834f Ran prettier 2018-05-21 13:54:11 -07:00
Fabio Berger
0fdf32cf6f merge development 2018-05-21 13:38:12 -07:00
Greg Hysen
f4ebbfabf4 Added getNullFillResults 2018-05-18 17:07:00 -07:00
Greg Hysen
b5bcfc8fe7 orderFilledAmount -> orderTakerAssetFilledAmount 2018-05-18 17:07:00 -07:00
Greg Hysen
d13c08cc0d Style improvements to order matching 2018-05-18 17:07:00 -07:00
Greg Hysen
89abd76570 Upgraded to Solidity 0.4.24 2018-05-18 17:07:00 -07:00
Greg Hysen
8c1ae35088 Rebased against v2-prototype 2018-05-18 17:05:36 -07:00
Greg Hysen
bb74789b42 Changed calculateFillResults to public visibility so that it can be used by the Forwarding Contract. 2018-05-18 17:01:06 -07:00
Greg Hysen
dbbd32d2ce Moved feeTokenAddress to MatchOrderTester constructor. Since it is constant, we dont need to pass it in on each call. 2018-05-18 17:01:06 -07:00
Greg Hysen
80285a300d Wording of calculateMatchedFillResults 2018-05-18 17:01:06 -07:00
Greg Hysen
2eb5819851 Cleaned up interface for decoding proxy data. Added a general decoder, which should be useful for the forwarding contract code. 2018-05-18 17:01:06 -07:00
Greg Hysen
e748e1891b Style improvements to the match orders typescript test class 2018-05-18 17:01:06 -07:00
Greg Hysen
28bb11217c Removed redundant log decode call 2018-05-18 17:01:06 -07:00
Greg Hysen
636dae6a79 The OrderInfo struct is now returned by the getOrderInfo function 2018-05-18 17:01:06 -07:00
Greg Hysen
c8f65a1bf9 Updated order of settleMatchedOrders to align with settleOrder 2018-05-18 17:01:06 -07:00
Greg Hysen
ce177ae6f6 IExchange inherits from all other interfaces (in the same order as Exchange inherits Mixins) 2018-05-18 17:01:06 -07:00
Greg Hysen
c79f3501cd Renamed takerAssetFilledAmount to orderFilledAmount to more easily distinguish between fill results and order state 2018-05-18 17:01:06 -07:00
Greg Hysen
80114edc71 Comments for readability in exchange core and mixin match orders 2018-05-18 17:01:06 -07:00
Greg Hysen
71483e2865 Renamed "validate" functions to "assert" in mixin match. 2018-05-18 17:01:06 -07:00
Greg Hysen
93087324d9 Throw if the left or right orders do not compute the correct fill results. I like this better than just logging an error and failing silently. 2018-05-18 17:01:06 -07:00
Greg Hysen
061facdcce Removed redundant status checks in matchOrders. Saves gas, plus follows pattern of fillOrder more closely. 2018-05-18 17:01:06 -07:00
Greg Hysen
3e6e7fb272 Token -> Asset in fillOrder spec 2018-05-18 17:01:06 -07:00
Greg Hysen
12d8c2398f Reordered functions in mixin exchange core -- getOrderInfo is at the bottom 2018-05-18 17:01:06 -07:00
Greg Hysen
bb73963421 Changes based on style guidelines put out by Amir 2018-05-18 17:01:06 -07:00
Greg Hysen
1dd7688bdd Reordered fund transfers for matched orders, plus added an extra sanity check to order matching calculations 2018-05-18 17:01:06 -07:00
Greg Hysen
5735095521 Style changes to atomic order matching 2018-05-18 17:01:06 -07:00
Greg Hysen
fa7570352c Added require reasons to MixinMatchOrders and cleaned up some comments. 2018-05-18 17:01:06 -07:00
Greg Hysen
f378406d15 Updated remaining contracts to v0.4.23 2018-05-18 17:01:05 -07:00
Greg Hysen
68fa7ae2a3 Removed isRoundingError from mixin header 2018-05-18 17:01:05 -07:00
Greg Hysen
9b1015bbce Atomic Order Matching - Tests 2018-05-18 17:01:05 -07:00
Greg Hysen
a4c821eb60 Atomic Order Matching - Smart Contracts. 2018-05-18 17:01:05 -07:00
Brandon Millman
c70540e7f4 Merge pull request #598 from 0xProject/feature/website/mobile-optimize
Mobile optimize the portal layout
2018-05-18 15:38:04 -07:00
Brandon Millman
e291146443 Prettier 2018-05-18 11:36:17 -07:00
Brandon Millman
faa2b6237f Change number of columns in relayer index for small screens 2018-05-18 11:35:13 -07:00
Brandon Millman
26661f3091 Wallet instead of balances for small screens 2018-05-18 11:35:13 -07:00
Brandon Millman
e6e8d49d72 Close drawer when new path is chosen 2018-05-18 11:35:13 -07:00
Brandon Millman
b9ca055586 Fix styling of portal menu 2018-05-18 11:35:13 -07:00
Brandon Millman
9ce7be050a Refactor portal specific colors out of react-shared 2018-05-18 11:35:13 -07:00
Brandon Millman
1d2617c826 Add custom styling for drawer 2018-05-18 11:35:13 -07:00
Brandon Millman
7c8e9ddc42 Fix key issue for portal routes 2018-05-18 11:35:13 -07:00
Brandon Millman
157764c0d9 Fix responsiveness broken in rebase 2018-05-18 11:35:13 -07:00
Brandon Millman
317ff81744 Set up scaffolding for new drawer 2018-05-18 11:35:13 -07:00
Brandon Millman
bd7fc780cb Hide wallet component for small screens 2018-05-18 11:35:13 -07:00
Brandon Millman
4b343d9dcf Fix token link key 2018-05-18 11:35:13 -07:00
Brandon Millman
7a6a5d7595 Modulate number of columns based on screenwidth 2018-05-18 11:35:13 -07:00
Brandon Millman
85020c74cf Fix prettier 2018-05-18 11:33:46 -07:00
Jacob Evans
0137c0da8c Merge pull request #583 from 0xProject/bug/contracts/erc721-encoded-pad
ERC721Proxy Pad to 32 if asset ids are small
2018-05-18 12:26:31 +10:00
fragosti
407731ab16 Change my title to clarify 2018-05-17 16:33:09 -07:00
Francesco Agosti
72503c0689 Merge pull request #596 from 0xProject/feature/website/weth-eth-conversion-errors
Show error messages in the wrapped ether item
2018-05-17 13:15:24 -07:00
fragosti
e9e570db4f Center all the things 2018-05-17 13:04:39 -07:00
fragosti
5bc83fceaa Refactor code in response to CR feedback 2018-05-17 13:04:39 -07:00
fragosti
e7fd501200 Remove duplicate function call to validate 2018-05-17 13:04:39 -07:00
fragosti
ea0067d999 Show error messages in the wrapped ether item 2018-05-17 13:04:39 -07:00
fragosti
ec49ca6480 Improve about page descriptions 2018-05-17 13:04:39 -07:00
Alex Browne
a26cc7c14d Merge pull request #597 from 0xProject/make-promises-safe
Use make-promises-safe to catch unhandled rejections in tests
2018-05-17 11:58:31 -07:00
Brandon Millman
c9d3041460 Merge pull request #586 from 0xProject/feature/website/manage-wallet-2
Manage your wallet section of portal
2018-05-17 11:05:58 -07:00
Brandon Millman
943b7d39c6 Fix tslint false positive 2018-05-17 11:02:55 -07:00
Brandon Millman
6b1a911604 Fix spread 2018-05-17 11:02:55 -07:00
Brandon Millman
3d4e03f2cd Refactor account management itmes 2018-05-17 11:02:55 -07:00
Brandon Millman
48b0b54819 Add loading component 2018-05-17 11:02:55 -07:00
Brandon Millman
00515eb6f9 Refactor a bunch of layouts into their own files 2018-05-17 11:02:55 -07:00
Brandon Millman
63e7391981 Add portal layout component 2018-05-17 11:02:55 -07:00
Brandon Millman
b6776f53ab Get rid of extra curly brackets 2018-05-17 11:02:55 -07:00
Brandon Millman
6a0cda7396 Fix lint error 2018-05-17 11:02:55 -07:00
Brandon Millman
09692dc70e Fix comments 2018-05-17 11:02:55 -07:00
Brandon Millman
e0482f5400 Wait for blockchain to display the account management routes 2018-05-17 11:02:55 -07:00
Brandon Millman
c787dc7356 Fix linter errors and relayer index reloading 2018-05-17 11:02:55 -07:00
Brandon Millman
ea948ac2c8 Trade direct route 2018-05-17 11:02:55 -07:00
Brandon Millman
d6e321e97f Add manage you wallet footer 2018-05-17 11:02:55 -07:00
Brandon Millman
807250510a Add props to back button 2018-05-17 11:02:55 -07:00
Brandon Millman
ef1e974346 Back button and title components 2018-05-17 11:02:55 -07:00
Brandon Millman
55d1228abb Implement new menu styling 2018-05-17 11:02:55 -07:00
Brandon Millman
9e76d2ca63 Add menu 2018-05-17 11:02:55 -07:00
Brandon Millman
d53915e7e3 Add routes 2018-05-17 11:02:55 -07:00
Fabio Berger
7fab782907 Improve naming 2018-05-17 14:07:55 +02:00
Fabio Berger
cf7967e629 Disable magic number rule in more places where it isn't helping code readability 2018-05-17 14:07:44 +02:00
Fabio Berger
0eacbac8f6 Merge branch 'development' into improvement/addCustomTslintRules
* development:
  Remove "Order utils" from menu for now
  Fix top tokens key
  Improve about page descriptions
  Do not remove artifacts when running `clean`
2018-05-17 13:57:51 +02:00
Fabio Berger
cec76c33b6 Remove "Order utils" from menu for now 2018-05-17 13:21:37 +02:00
Brandon Millman
18dcf98998 Fix top tokens key 2018-05-16 18:07:47 -07:00
Alex Browne
251218af8b Use make-promises-safe to catch unhandled rejections in tests 2018-05-16 17:36:37 -07:00
Fabio Berger
e2cbe42ed0 Update yarn.lock 2018-05-16 20:44:16 +02:00
fragosti
c06ed58582 Improve about page descriptions 2018-05-16 10:15:04 -07:00
Fabio Berger
78623ae3bd Merge branch 'development' into v2-prototype
* development: (29 commits)
  Do not remove artifacts when running `clean`
  fix style errors
  Fix circular dependency
  Add my profile image to images
  Add myself to about page
  Add dogfood configs to website
  Revert to lerna:run lint
  Do lint sequentially
  Exclude monorepo-scripts from tslint as test
  Fix prettier
  Add hover state to top tokens
  Change to weekly txn volume
  Change minimum Node version to 6.12
  Document Node.js version requirement and add it to package.json
  Apply prettier to some files which were not formatted correctly
  Fix TSLint issues
  Fix TSLint issues
  Update ethereeumjs-testrpc to ganache-cli
  Fix infinite loop
  Add changelog entries for packages where executable binary exporting fixed
  ...

# Conflicts:
#	packages/contracts/package.json
#	packages/contracts/util/formatters.ts
#	packages/contracts/util/signed_order_utils.ts
#	packages/migrations/package.json
#	yarn.lock
2018-05-16 16:18:47 +02:00
Fabio Berger
4de6221825 Do not remove artifacts when running clean 2018-05-16 16:08:15 +02:00
Fabio Berger
136c6d01b3 Do not remove artifacts when running clean 2018-05-16 16:01:37 +02:00
Fabio Berger
22f3f57f44 Merge branch 'development' into improvement/addCustomTslintRules
* development:
  fix style errors
  Fix circular dependency
  Add my profile image to images
  Add myself to about page
  Add dogfood configs to website
  Change minimum Node version to 6.12
  Document Node.js version requirement and add it to package.json
2018-05-16 15:15:23 +02:00
Fabio Berger
b2f362225c Fix comments 2018-05-16 15:14:31 +02:00
Fabio Berger
40ed59ce28 Improve name 2018-05-16 15:14:24 +02:00
Fabio Berger
839db68571 Fix TSLint rules 2018-05-16 14:59:10 +02:00
Fabio Berger
fec6ac3ff0 Enforce new rules, including no-switch-case-fall-through 2018-05-16 14:58:28 +02:00
Fabio Berger
45fa26dc6c Implement boolean variable naming custom TSLint rule 2018-05-16 14:58:01 +02:00
Fabio Berger
f49d432fdc Implement custom no-magic-numbers rule that doesn't include magic numbers passed into BigNumber instantiations (e.g const amount = new BigNumber(5); ) 2018-05-16 14:57:28 +02:00
Fabio Berger
1a31ceff8e Run linter sequentially 2018-05-16 14:56:11 +02:00
Francesco Agosti
cc486cb86d Merge pull request #593 from 0xProject/bug/website/fix-cirular-dependency
Fix circular dependency
2018-05-15 16:35:05 -07:00
Francesco Agosti
7a45a579c0 Merge pull request #592 from 0xProject/feature/website/add-francesco-about
Add myself to about page
2018-05-15 15:59:24 -07:00
fragosti
dc58d539c2 fix style errors 2018-05-15 15:54:17 -07:00
fragosti
2ba78eb740 Fix circular dependency 2018-05-15 15:27:27 -07:00
fragosti
f43b275f16 Add my profile image to images 2018-05-15 14:50:33 -07:00
fragosti
509a81a572 Add myself to about page 2018-05-15 14:44:57 -07:00
Brandon Millman
184232ba4f Add dogfood configs to website 2018-05-15 13:51:43 -07:00
Amir Bandeali
9e0471bfbb Merge branch 'development' into v2-prototype 2018-05-15 15:52:49 -04:00
Alex Browne
0bc338ba42 Merge pull request #578 from 0xProject/document-node-version
Document Node.js version requirement and add it to package.json
2018-05-15 10:51:49 -07:00
Fabio Berger
406e91d387 Merge pull request #588 from 0xProject/improvement/use-wsrun
Individual package building & watching!!! 💪 🌹
2018-05-15 11:41:51 +02:00
Fabio Berger
473acafd14 Revert to lerna:run lint 2018-05-15 11:21:49 +02:00
Fabio Berger
7474e6b1c9 Do lint sequentially 2018-05-15 11:05:02 +02:00
Fabio Berger
323955277c Exclude monorepo-scripts from tslint as test 2018-05-15 10:47:00 +02:00
Fabio Berger
03b5b09122 Fix prettier 2018-05-15 10:43:41 +02:00
Fabio Berger
fe00c06d4b Merge development 2018-05-15 10:22:22 +02:00
Brandon Millman
ca08dd9705 Add hover state to top tokens 2018-05-15 00:52:51 -07:00
Brandon Millman
b3e53b609b Change to weekly txn volume 2018-05-14 22:49:08 -07:00
Alex Browne
fdeab0475c Change minimum Node version to 6.12 2018-05-14 18:46:53 -07:00
Alex Browne
f86cc0dc7a Document Node.js version requirement and add it to package.json 2018-05-14 18:46:52 -07:00
Alex Browne
0457c959dd Merge pull request #590 from 0xProject/fix-prettier
Apply prettier to some files which were not formatted correctly
2018-05-14 18:41:45 -07:00
Alex Browne
c520b7f1fb Apply prettier to some files which were not formatted correctly 2018-05-14 15:44:09 -07:00
Fabio Berger
5422bf5733 Fix TSLint issues 2018-05-14 23:27:41 +02:00
Fabio Berger
a703160226 Merge branch 'development' into improvement/use-wsrun
* development:
  Update ethereeumjs-testrpc to ganache-cli

# Conflicts:
#	package.json
2018-05-14 22:31:53 +02:00
Fabio Berger
d0905eda49 Fix TSLint issues 2018-05-14 21:48:46 +02:00
Leonid Logvinov
da60008048 Update ethereeumjs-testrpc to ganache-cli 2018-05-14 20:16:13 +02:00
Fabio Berger
7c023233f2 Fix infinite loop 2018-05-14 20:02:41 +02:00
Fabio Berger
1e7003a307 Add changelog entries for packages where executable binary exporting fixed 2018-05-14 19:57:41 +02:00
Fabio Berger
8cb074657d Rename bin to server in testnet-faucets since bin is no longer gitignored 2018-05-14 19:33:45 +02:00
Fabio Berger
5f72b86ce4 Fix sra-report binary 2018-05-14 19:33:23 +02:00
Fabio Berger
09d33792f3 rename build:watch to watch and remove build from docs:stage 2018-05-14 19:32:52 +02:00
Fabio Berger
a6773b85d2 Fix sol-compiler binary so it can be called directly from packages 2018-05-14 19:32:32 +02:00
Fabio Berger
5f678acf46 Fix abi-gen binary so it can be called directly from packages 2018-05-14 19:31:56 +02:00
Fabio Berger
76f9ad0705 Remove build from docs:stage commands 2018-05-14 19:24:47 +02:00
Fabio Berger
478f6ed011 Move from using lerna multi-package commands to wsrun, update README's accordingly 2018-05-14 19:23:50 +02:00
Fabio Berger
c94d1b2275 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Add missing type definitions
2018-05-14 11:30:51 +02:00
Fabio Berger
7d60356fac Remove tslint-config as dep to monorepo-scripts to avoid circular dependency. Since monorepo-scripts is only expected to be used from within the monorepo, we reference tslint-config w/ a relative path 2018-05-14 11:30:15 +02:00
Leonid Logvinov
58fa35641d Merge pull request #585 from 0xProject/feature/typedef
Add missing type definitions. Enable typedef linter rule
2018-05-14 10:36:13 +02:00
Leonid Logvinov
b74957acdf Add missing type definitions 2018-05-14 10:35:13 +02:00
Fabio Berger
6aed4fb1ae Merge pull request #579 from 0xProject/breakUp0xjs
Split 0x.js into: contract-wrappers & order-watcher
2018-05-11 19:11:27 +02:00
Fabio Berger
ad8e12eeae Add missing .gitkeeps 2018-05-11 18:54:33 +02:00
Fabio Berger
31763a018c Revert "Remove gitkeeps"
This reverts commit 3f6876c419.
2018-05-11 18:50:50 +02:00
Fabio Berger
bc20f8a004 improve wording 2018-05-11 18:24:07 +02:00
Fabio Berger
3f6876c419 Remove gitkeeps 2018-05-11 17:41:35 +02:00
Fabio Berger
fb9c774558 Create coverage dir if doesn't exist 2018-05-11 17:41:25 +02:00
Fabio Berger
7df9393d29 Add compilerSettings to compiler.json 2018-05-11 16:26:08 +02:00
Fabio Berger
c6439def2c Add deployedBytecode to artifacts since it is needed by sol-cov 2018-05-11 16:25:52 +02:00
Fabio Berger
273d3445e4 Revert throw conditions since it messes with the expected test timing 2018-05-11 16:04:03 +02:00
Fabio Berger
bc3dc52377 Revert back to hack, we need the configured web3Wrapper 2018-05-11 15:40:19 +02:00
Fabio Berger
ef1d484d9e Add comment to TransactionReceiptWithDecodedLogs explaining that it doesn't always return "decodedLogs" 2018-05-11 15:39:15 +02:00
Fabio Berger
63cd5a6296 Get rid of hack 2018-05-11 15:24:31 +02:00
Fabio Berger
657dc785ea Get networkId from web3Wrapper 2018-05-11 15:23:50 +02:00
Fabio Berger
461e74d8be Throw if tx reverts 2018-05-11 15:23:34 +02:00
Fabio Berger
a7daea1728 Remove unused methods and imports 2018-05-11 15:22:57 +02:00
Fabio Berger
c4416f9696 Prettier ignore artifact files 2018-05-11 14:45:50 +02:00
Fabio Berger
f9ad34170d Add compiler dep 2018-05-11 14:25:48 +02:00
Fabio Berger
45f2a8ad06 Update yarn.lock 2018-05-11 13:31:49 +02:00
Fabio Berger
3dad802c90 Fix version 2018-05-11 13:18:13 +02:00
Fabio Berger
735166f06c remove unused modules 2018-05-11 13:15:41 +02:00
Fabio Berger
042df52e5c Fix deps 2018-05-11 13:15:21 +02:00
Fabio Berger
294a65f842 Fix prettier 2018-05-11 13:11:50 +02:00
Fabio Berger
bf8550ae1e Update artifacts 2018-05-11 12:59:14 +02:00
Fabio Berger
91549ef28c Update yarn.lock 2018-05-11 12:58:45 +02:00
Fabio Berger
95956eff64 Update global_hooks 2018-05-11 12:58:34 +02:00
Fabio Berger
bcae71dfa4 Remove legacy test 2018-05-11 12:33:39 +02:00
Fabio Berger
d370296e82 Merge branch 'development' into breakUp0xjs
* development:
  Fix ganache subprovider config
  Fix a bug in compiler config precedence
  Fix linter errors
  Fix templates
  Remove unused deployer docs configs
  Add a legacy endpoint for the deployer
  Add a check for compiler output
  Add a comment
  Put ARTIFACTS_VERSION in a config
  Improve a comment
  Remove _applyDefaultsToDeployTxDataAsync
  Add a HACK comment
  Fix linter issues
  Rename deployer to sol-compiler
  Remove deployer
  Remove deployer from 0x.js and migrations
  Configure migrations with a compiler.json
  Remove deployer from metacoin and contract tests
  Update wallet footer and add remove token functionality

# Conflicts:
#	.gitignore
#	packages/0x.js/package.json
#	packages/0x.js/src/0x.ts
#	packages/contracts/package.json
#	packages/contracts/test/multi_sig_with_time_lock.ts
#	packages/contracts/test/multi_sig_with_time_lock_except_remove_auth_addr.ts
#	packages/contracts/util/artifacts.ts
#	packages/deployer/test/deployer_test.ts
#	packages/migrations/package.json
2018-05-11 12:32:57 +02:00
Leonid Logvinov
f42f608f3f Merge pull request #574 from 0xProject/feature/rm-rf-deployer
Remove @0xproject/deployer.Deployer. Make contracts able to deploy themselves
2018-05-11 12:12:39 +02:00
Fabio Berger
f78b5741c3 Add missing version directory to path 2018-05-11 12:05:46 +02:00
Fabio Berger
733fe5b335 Add artifacts to clean command 2018-05-11 12:05:32 +02:00
Leonid Logvinov
c093aab350 Fix ganache subprovider config 2018-05-11 11:59:08 +02:00
Brandon Millman
44f17c1706 Merge pull request #580 from 0xProject/feature/website/remove-tokens
Update wallet footer and add remove token functionality
2018-05-10 10:55:17 -07:00
Fabio Berger
8302e1687a Remove unnecessary compile command 2018-05-10 19:03:58 +02:00
Fabio Berger
7ad4380653 Standardize gitignores and remove migrations/artifacts 2018-05-10 19:02:59 +02:00
Fabio Berger
bea185ce8b Commit v1 artifacts to migrations package and remove compile step from prebuild 2018-05-10 19:02:41 +02:00
Fabio Berger
5a73b8a8e6 Replace mkdir with mkdirp so it also created any missing intermediate directories 2018-05-10 18:56:32 +02:00
Fabio Berger
da62a0af3b Fix path to artifacts 2018-05-10 18:55:30 +02:00
Leonid Logvinov
1137abfd33 Fix a bug in compiler config precedence 2018-05-10 18:26:44 +02:00
Leonid Logvinov
e972ed8456 Fix linter errors 2018-05-10 18:12:34 +02:00
Leonid Logvinov
2e1c2d9dfe Fix templates 2018-05-10 17:56:57 +02:00
Fabio Berger
83dd333eba Fix tslint errors 2018-05-10 17:55:27 +02:00
Leonid Logvinov
f854f3ee2b Remove unused deployer docs configs 2018-05-10 17:47:38 +02:00
Leonid Logvinov
1055ca6d44 Add a legacy endpoint for the deployer 2018-05-10 17:47:38 +02:00
Leonid Logvinov
a5fea3b9c3 Add a check for compiler output 2018-05-10 17:47:38 +02:00
Leonid Logvinov
62f1430a2c Add a comment 2018-05-10 17:47:38 +02:00
Leonid Logvinov
1dec6a442e Put ARTIFACTS_VERSION in a config 2018-05-10 17:47:38 +02:00
Leonid Logvinov
97831e3702 Improve a comment 2018-05-10 17:47:38 +02:00
Leonid Logvinov
7eb9444458 Remove _applyDefaultsToDeployTxDataAsync 2018-05-10 17:47:38 +02:00
Leonid Logvinov
ebc296ea31 Add a HACK comment 2018-05-10 17:47:38 +02:00
Leonid Logvinov
75d24dea0e Fix linter issues 2018-05-10 17:47:38 +02:00
Leonid Logvinov
a6f72de09d Rename deployer to sol-compiler 2018-05-10 17:47:38 +02:00
Leonid Logvinov
96037aed52 Remove deployer 2018-05-10 17:46:57 +02:00
Leonid Logvinov
f9d80adaee Remove deployer from 0x.js and migrations 2018-05-10 17:46:57 +02:00
Leonid Logvinov
422e5a19d4 Configure migrations with a compiler.json 2018-05-10 17:46:57 +02:00
Leonid Logvinov
3d58b38e4e Remove deployer from metacoin and contract tests 2018-05-10 17:46:57 +02:00
Fabio Berger
0a044199a1 Add missing DummyToken 2018-05-10 17:29:59 +02:00
Fabio Berger
cd5f00ac4d Merge branch 'development' into breakUp0xjs
* development: (38 commits)
  Add fallback image support to relayer grid tile
  Clear relayer grid state when fetching
  Configure the compiler to generate artifacts with deployedBytecode
  Implement loading and error state for relayer grid
  Fallback image for relayer grid tile
  Change relayer grid tile to link on header
  Display top tokens from backend
  Remove overflowZ property from portal
  Suggestions and fix bad merge
  Fix typo
  Only show untracked tokens
  Make wallet scrollable
  Add token flow
  Update The Ocean logo
  Fix artifacts paths
  Create an artifacts folder
  Introduce a var
  Add removeHexPrefix util method
  CHeck if ABI exists
  Improve the readability of the check for should compile
  ...

# Conflicts:
#	.gitignore
#	packages/contracts/test/multi_sig_with_time_lock.ts
#	packages/contracts/test/multi_sig_with_time_lock_except_remove_auth_addr.ts
#	packages/contracts/util/artifacts.ts
2018-05-10 17:08:07 +02:00
Fabio Berger
23c4027c83 Add missing uuid types 2018-05-10 16:53:12 +02:00
Fabio Berger
eeb08b7fae Fix type error for latched on property 2018-05-10 16:53:03 +02:00
Fabio Berger
20beb2bdb6 Add generated contracts in contract-wrappers to gitignore 2018-05-10 16:52:47 +02:00
Fabio Berger
c6882d0bd8 Rename zeroExContract... to contractWrappers... 2018-05-10 16:51:45 +02:00
Fabio Berger
ce47e83939 Update yarn.lock 2018-05-10 16:41:05 +02:00
Fabio Berger
832e1e2cf7 Add missing quote 2018-05-10 15:26:19 +02:00
Fabio Berger
6d61616492 Add PR number 2018-05-10 15:23:17 +02:00
Fabio Berger
d5304fb5bd Remove provider instance variable 2018-05-10 15:23:04 +02:00
Fabio Berger
13a61db289 Add var returns 2018-05-10 15:22:51 +02:00
Fabio Berger
93b74cc766 Remove unneeded tslint disable 2018-05-10 15:22:33 +02:00
Fabio Berger
28e83c21e2 Remove uneeded tslint config 2018-05-10 15:22:13 +02:00
Fabio Berger
33ed5cd437 Remove generated contract wrappers 2018-05-10 15:21:37 +02:00
Fabio Berger
37c8e21f25 Remove extra tslint config 2018-05-10 15:00:06 +02:00
Fabio Berger
7b726650e9 Improve createOrderWatcherAsync 2018-05-10 14:59:54 +02:00
Fabio Berger
d3adb48c2e Fix no-any-propagation 2018-05-10 14:59:37 +02:00
Fabio Berger
9838124abc Remove unnecessary tslint config 2018-05-10 14:59:10 +02:00
Fabio Berger
4df847c349 Add pr number to changelogs 2018-05-10 14:58:15 +02:00
Jacob Evans
f9d2689a12 Pad to 32 if asset ids are small 2018-05-10 15:59:44 +10:00
Brandon Millman
c64ad1af28 Add fallback image support to relayer grid tile 2018-05-09 17:29:02 -07:00
Brandon Millman
e83b056bd4 Clear relayer grid state when fetching 2018-05-09 15:59:53 -07:00
Brandon Millman
eba6dcc497 Update wallet footer and add remove token functionality 2018-05-09 15:46:18 -07:00
Fabio Berger
017b5a23d8 Fix website and 0x.js docs 2018-05-09 23:26:51 +02:00
Leonid Logvinov
c7a147f49d Configure the compiler to generate artifacts with deployedBytecode 2018-05-09 23:14:44 +02:00
Fabio Berger
f84a466d16 Remove last artifact 2018-05-09 22:15:35 +02:00
Fabio Berger
382a805c7e Remove artifacts 2018-05-09 22:14:19 +02:00
Fabio Berger
0b38e575d6 Fix package.json 2018-05-09 22:08:41 +02:00
Fabio Berger
209266dbed Split 0x.js into contract-wrappers, order-watcher but keep 0x.js as a unifying library with the same interface 2018-05-09 20:36:28 +02:00
Brandon Millman
20f6d8d3d0 Implement loading and error state for relayer grid 2018-05-09 10:57:26 -07:00
Brandon Millman
09b26645ee Fallback image for relayer grid tile 2018-05-09 10:04:28 -07:00
Brandon Millman
9f2258ebd9 Change relayer grid tile to link on header 2018-05-09 09:28:57 -07:00
Amir Bandeali
9744b1906a Merge pull request #546 from 0xProject/feature/contracts/solidity-0.4.23
Use Solidity 0.4.23
2018-05-08 17:20:23 -07:00
Brandon Millman
71e2ee62e4 Merge pull request #576 from 0xProject/feature/website/top-tokens
Display top tokens from backend
2018-05-08 14:30:26 -07:00
Brandon Millman
6c8ee4d55d Merge pull request #557 from 0xProject/feature/website/top-bar-redesign
Redesign top bar for portal v2
2018-05-08 14:29:30 -07:00
Amir Bandeali
5198c56db9 Add revert variables, change lib => libs to get around gitignore 2018-05-08 13:10:09 -07:00
Brandon Millman
f94d4b492d Display top tokens from backend 2018-05-08 11:32:44 -07:00
Brandon Millman
e01a4fcbb4 Merge branch 'development' into feature/website/top-bar-redesign
* development:
  Remove overflowZ property from portal
  Fix typo
  Only show untracked tokens
  Make wallet scrollable
  Add token flow
2018-05-08 11:17:00 -07:00
Brandon Millman
5ed9b8b1dc Remove overflowZ property from portal 2018-05-08 11:16:12 -07:00
Brandon Millman
17f3d5f6ba Suggestions and fix bad merge 2018-05-08 11:12:46 -07:00
Brandon Millman
607d738342 Merge branch 'development' into feature/website/top-bar-redesign
* development: (63 commits)
  Update The Ocean logo
  Fix artifacts paths
  Create an artifacts folder
  Introduce a var
  Add removeHexPrefix util method
  CHeck if ABI exists
  Improve the readability of the check for should compile
  Use named constants
  Add a comment
  Fix comments
  Rename args to constructor-args
  Fix a typo
  Define a separator const
  Move artifacts from src/artifacts to artifacts/v1
  Fix sol-cov to work with the new artifacts format
  Implement new artifacts format
  Publish
  Updated CHANGELOGS
  Make node types a dependency
  Fix type errors in CSS properties
  ...
2018-05-08 11:04:31 -07:00
Brandon Millman
1b102f9ed3 Merge pull request #570 from 0xProject/feature/website/wallet-add-tokens
Portal v2 add tokens flow
2018-05-08 11:01:40 -07:00
Brandon Millman
6c38481550 Fix typo 2018-05-08 10:17:04 -07:00
Brandon Millman
9cbd151658 Only show untracked tokens 2018-05-08 10:16:08 -07:00
Brandon Millman
419b670aa3 Make wallet scrollable 2018-05-08 10:16:08 -07:00
Brandon Millman
a44874d2eb Add token flow 2018-05-08 10:16:08 -07:00
Brandon Millman
e9d70b7b1e Merge pull request #556 from 0xProject/feature/website/portal-v2
Add new top-level portal component with wallet and relayer index layout
2018-05-08 10:14:33 -07:00
Fabio Berger
73c6f11c9c Update The Ocean logo 2018-05-08 10:47:35 +02:00
Amir Bandeali
7e7364fc83 Move Authorizable to AssetProxy dir, rename to MixinAuthorizable 2018-05-07 11:20:53 -07:00
Leonid Logvinov
a9c5488620 Merge pull request #537 from 0xProject/feature/artifacts-v2
Implement the new artifacts format
2018-05-07 14:46:28 +02:00
Leonid Logvinov
906af858a5 Fix artifacts paths 2018-05-07 14:32:17 +02:00
Leonid Logvinov
b699a61f56 Create an artifacts folder 2018-05-07 14:23:24 +02:00
Leonid Logvinov
8eabc49e9d Introduce a var 2018-05-07 14:06:00 +02:00
Leonid Logvinov
9e67e12732 Add removeHexPrefix util method 2018-05-07 14:04:58 +02:00
Leonid Logvinov
2d30183d65 CHeck if ABI exists 2018-05-07 13:57:03 +02:00
Leonid Logvinov
fcb0a05880 Improve the readability of the check for should compile 2018-05-07 13:49:21 +02:00
Leonid Logvinov
fad7dc9f04 Use named constants 2018-05-07 13:46:44 +02:00
Leonid Logvinov
7c1e05d33c Add a comment 2018-05-07 13:42:47 +02:00
Leonid Logvinov
02147f546e Fix comments 2018-05-07 13:41:50 +02:00
Leonid Logvinov
3d51bc1ada Rename args to constructor-args 2018-05-07 13:40:53 +02:00
Leonid Logvinov
95df4433dc Fix a typo 2018-05-07 13:40:05 +02:00
Leonid Logvinov
0f1589a43f Define a separator const 2018-05-07 13:37:21 +02:00
Leonid Logvinov
27262c4e56 Move artifacts from src/artifacts to artifacts/v1 2018-05-07 13:32:24 +02:00
Leonid Logvinov
c9b8f2a397 Fix sol-cov to work with the new artifacts format 2018-05-07 10:52:28 +02:00
Leonid Logvinov
72b2a1c66f Implement new artifacts format 2018-05-07 10:23:08 +02:00
Amir Bandeali
395d060427 Split up mixins and interfaces 2018-05-04 17:10:25 -07:00
Amir Bandeali
bbf088d903 Make LibBytes methods internal, add TestLibBytes 2018-05-04 17:00:24 -07:00
Leonid Logvinov
69a6166b6a Publish
- 0x.js@0.37.2
 - @0xproject/abi-gen@0.2.13
 - @0xproject/assert@0.2.9
 - @0xproject/base-contract@0.3.1
 - @0xproject/connect@0.6.12
 - contracts@2.1.28
 - @0xproject/deployer@0.4.3
 - @0xproject/dev-utils@0.4.1
 - @0xproject/json-schemas@0.7.23
 - @0xproject/metacoin@0.0.6
 - @0xproject/migrations@0.0.5
 - @0xproject/order-utils@0.0.4
 - @0xproject/react-docs-example@0.0.11
 - @0xproject/react-docs@0.0.11
 - @0xproject/react-shared@0.1.6
 - @0xproject/sol-cov@0.0.10
 - @0xproject/sol-resolver@0.0.4
 - @0xproject/sra-report@0.0.14
 - @0xproject/subproviders@0.10.1
 - @0xproject/testnet-faucets@1.0.29
 - @0xproject/types@0.6.3
 - @0xproject/typescript-typings@0.3.1
 - @0xproject/utils@0.6.1
 - @0xproject/web3-wrapper@0.6.3
 - @0xproject/website@0.0.32
2018-05-05 01:55:12 +02:00
Leonid Logvinov
bf87b1a6af Updated CHANGELOGS 2018-05-05 01:55:04 +02:00
Leonid Logvinov
2e8a5602b2 Make node types a dependency 2018-05-05 01:33:35 +02:00
Leonid Logvinov
0ec1c4ad6d Fix type errors in CSS properties 2018-05-05 01:26:02 +02:00
Leonid Logvinov
15a3a8c62f Use a single version of react types 2018-05-05 01:13:22 +02:00
Leonid Logvinov
f001181e39 Revert yarn.lock changes 2018-05-05 01:10:48 +02:00
Leonid Logvinov
2c659d3d82 Publish
- @0xproject/react-docs-example@0.0.10
 - @0xproject/react-docs@0.0.10
 - @0xproject/react-shared@0.1.5
 - @0xproject/website@0.0.31
2018-05-04 23:55:03 +02:00
Leonid Logvinov
5ffff7397e Updated CHANGELOGS 2018-05-04 23:54:57 +02:00
Leonid Logvinov
1a36459ab8 Fix property name 2018-05-04 22:41:39 +02:00
Leonid Logvinov
33cc79c13b Upgrade react types version 2018-05-04 21:17:07 +02:00
Leonid Logvinov
b4cb21b55e Publish
- 0x.js@0.37.1
 - contracts@2.1.27
 - @0xproject/order-utils@0.0.3
 - @0xproject/sra-report@0.0.13
 - @0xproject/testnet-faucets@1.0.28
 - @0xproject/website@0.0.30
2018-05-04 20:44:18 +02:00
Leonid Logvinov
ae68c3abe4 Updated CHANGELOGS 2018-05-04 20:44:12 +02:00
Brandon Millman
939e2c70c4 Add headers to wallet and relayer index 2018-05-04 11:04:58 -07:00
Brandon Millman
14b29172b1 Add scrolling to relayer index 2018-05-04 11:04:58 -07:00
Brandon Millman
58794fc8e9 Lay out wallet and relayers 2018-05-04 11:04:58 -07:00
Leonid Logvinov
91fdd6fc29 Make a negligible change to order-utils to publish a new version 2018-05-04 19:07:02 +02:00
Leonid Logvinov
8dd9124863 Publish
- 0x.js@0.37.0
 - @0xproject/abi-gen@0.2.12
 - @0xproject/assert@0.2.8
 - @0xproject/base-contract@0.3.0
 - @0xproject/connect@0.6.11
 - contracts@2.1.26
 - @0xproject/deployer@0.4.2
 - @0xproject/dev-utils@0.4.0
 - @0xproject/json-schemas@0.7.22
 - @0xproject/metacoin@0.0.5
 - @0xproject/migrations@0.0.4
 - @0xproject/monorepo-scripts@0.1.19
 - @0xproject/order-utils@0.0.2
 - @0xproject/react-docs-example@0.0.9
 - @0xproject/react-docs@0.0.9
 - @0xproject/react-shared@0.1.4
 - @0xproject/sol-cov@0.0.9
 - @0xproject/sol-resolver@0.0.3
 - @0xproject/sra-report@0.0.12
 - @0xproject/subproviders@0.10.0
 - @0xproject/testnet-faucets@1.0.27
 - @0xproject/tslint-config@0.4.17
 - @0xproject/types@0.6.2
 - @0xproject/typescript-typings@0.3.0
 - @0xproject/utils@0.6.0
 - @0xproject/web3-wrapper@0.6.2
 - @0xproject/website@0.0.29
2018-05-04 12:16:17 +02:00
Amir Bandeali
c84be8ddb3 Update contracts with revert reasons and constructor keyword 2018-05-02 15:23:05 -07:00
Amir Bandeali
853b5e1b72 Merge pull request #569 from 0xProject/feature/contracts/batchTransfer
Batch transfers in proxies
2018-05-02 11:32:27 -07:00
Amir Bandeali
3355a39fe0 Add MixinAssetProxy to reuse redundant code 2018-05-02 11:30:26 -07:00
Amir Bandeali
0cb357a0e9 Add tests for batchTransferFrom 2018-05-01 13:39:55 -07:00
Amir Bandeali
668dcb7cf0 Add batchTransferFrom to asset proxies 2018-05-01 13:38:41 -07:00
Amir Bandeali
b5c4b81aac Merge pull request #563 from 0xProject/feature/contracts/proxyIds
Add hard coded proxyId into each AssetProxy
2018-04-30 16:44:38 -07:00
Amir Bandeali
c849c8ef08 Remove outdated comment 2018-04-30 16:40:27 -07:00
Amir Bandeali
bbb3d5bb67 Add hard coded proxyId into each AssetProxy 2018-04-30 16:40:27 -07:00
Amir Bandeali
63ad2ebf0b Merge pull request #560 from 0xProject/refactor/contracts/structure
Update contracts structure
2018-04-30 09:53:03 -07:00
Amir Bandeali
e4f8ea2f7c Move TokenRegistry to 'previous' directory 2018-04-26 11:11:54 -07:00
Amir Bandeali
599d34f1c0 Make all lib functions internal, add contracts for testing 2018-04-26 11:11:54 -07:00
Amir Bandeali
31411dd11b Add LibFillResults 2018-04-26 11:09:53 -07:00
Amir Bandeali
b7781108ae Add ERC721 contracts from zeppelin-solidity 2018-04-26 10:59:27 -07:00
Amir Bandeali
35ca7d1826 Merge pull request #498 from 0xProject/feature/contracts/takerAbstraction
Sender abstraction
2018-04-26 10:59:03 -07:00
Amir Bandeali
9ddec32260 Add tests and comments 2018-04-26 10:56:44 -07:00
Amir Bandeali
185e7d43fb Add tests 2018-04-26 10:33:37 -07:00
Amir Bandeali
0e0a46f373 Update tests and utils 2018-04-26 10:33:37 -07:00
Amir Bandeali
732202fe8e Implement sender abstraction 2018-04-26 10:33:37 -07:00
Fabio Berger
e1cab78c09 Remove remenants of MaliciousToken contract 2018-04-26 10:06:32 +09:00
Fabio Berger
9dc4ec6fb5 Fix prettier 2018-04-25 18:07:22 +09:00
Fabio Berger
0baaf1767b Fix merge conflict issues 2018-04-24 20:01:04 +09:00
Fabio Berger
eab76c5819 Fix @types/react version to avoid accidental minor version bumps with breaking changes 2018-04-24 19:54:22 +09:00
Fabio Berger
ebd6f7ace0 Merge pull request #549 from 0xProject/feature/contracts/combineAssetProxyDispatcher
Merge Exchange and AssetProxyDispatcher (depends on #548)
2018-04-24 18:38:11 +09:00
Fabio Berger
a6d5cd4b39 Fix CI failures caused by Webkit css properties not being recognized by React types. This is a hack. 2018-04-24 17:38:25 +09:00
Fabio Berger
4c5a632095 Revert "Fix CI test failure"
This reverts commit 870693b968.
2018-04-24 17:28:18 +09:00
Brandon Millman
b8c611de2b ProviderDisplay changes 2018-04-24 01:11:01 -07:00
Fabio Berger
870693b968 Fix CI test failure 2018-04-24 16:54:08 +09:00
Fabio Berger
b24b98a365 merge v2-prototype 2018-04-24 16:51:32 +09:00
Fabio Berger
fd041e2997 Merge pull request #548 from 0xProject/refactor/contracts/test-cleanup
Cleanup tests
2018-04-24 16:46:40 +09:00
Brandon Millman
9c827a0298 Top bar expanded display type 2018-04-23 23:47:37 -07:00
Brandon Millman
766aeaa9e1 Relayer grid spacing tweaks 2018-04-23 23:47:04 -07:00
Amir Bandeali
27a44f0e77 Rename variables, create private validation methods in token wrappers 2018-04-23 23:23:01 -07:00
Brandon Millman
567768c66a Add headers to wallet and relayer index 2018-04-23 22:17:26 -07:00
Brandon Millman
deaa5f3211 Add scrolling to relayer index 2018-04-23 21:45:05 -07:00
Brandon Millman
11f1ccf3ff Lay out wallet and relayers 2018-04-23 21:17:23 -07:00
Amir Bandeali
432b064601 Fix tests 2018-04-23 10:50:09 -07:00
Amir Bandeali
a8a0a5cbfb Combine Exchange with AssetProxyDispatcher 2018-04-23 10:50:09 -07:00
Amir Bandeali
32e77753b5 Define numbers of dummy tokens to deploy in constants 2018-04-23 09:57:13 -07:00
Amir Bandeali
f427a736a3 Remove type assertions 2018-04-23 09:57:13 -07:00
Amir Bandeali
afb02b8bd1 Fix and cleanup tests 2018-04-23 09:57:13 -07:00
Amir Bandeali
48b44342ab Add ERC721 wrapper 2018-04-23 09:57:13 -07:00
Amir Bandeali
1f968fa4fd Add ERC20Wrapper 2018-04-23 09:57:13 -07:00
Amir Bandeali
ebf5077e1a Merge pull request #547 from 0xProject/refactor/contracts/cleanup
Cleanup contracts
2018-04-23 09:56:20 -07:00
Amir Bandeali
7d26b96d42 Rename proxyUtils => assetProxyUtils 2018-04-22 18:53:13 -07:00
Amir Bandeali
08208acf53 Rename missed variables 2018-04-22 14:44:56 -07:00
Amir Bandeali
46653a0268 Reorder event args 2018-04-21 17:31:17 -07:00
Amir Bandeali
fcef1819b1 Add missing async suffix 2018-04-21 17:31:17 -07:00
Amir Bandeali
3335fc7baf Rename token => asset 2018-04-21 17:31:17 -07:00
Amir Bandeali
63abf34664 Rename Token => IERC20Token 2018-04-21 17:31:17 -07:00
Amir Bandeali
120ca5b1ec Rename DummyToken => DummyERC20Token 2018-04-21 17:31:17 -07:00
Amir Bandeali
1c94ab7cc3 export proxyUtils instead of individual functions 2018-04-21 17:31:17 -07:00
Amir Bandeali
aa3be51980 Fix names and visibilities, use address type over contract type for function args and returns 2018-04-21 17:31:11 -07:00
Amir Bandeali
fe6c77cafb Remove unused constructor arguments 2018-04-21 15:42:09 -07:00
Amir Bandeali
67117913dd Add presigned signature type 2018-04-20 13:57:18 -07:00
Amir Bandeali
e532f2c165 Fix zeppelin imports, run prettier 2018-04-20 13:57:18 -07:00
Greg Hysen
a0c7da95c2 Added tests for (most functions in) LibBytes. The write methods are not currently compatible with our generated contract wrappers. 2018-04-20 13:56:18 -07:00
Greg Hysen
95dbc0f5bc Added description for the DummyERC721Token constructor 2018-04-20 13:56:18 -07:00
Greg Hysen
ab13ce96cc Renamed addAssetProxy back to registerAssetProxy; this seemed to cause less confusion. Also updated the function description. 2018-04-20 13:56:18 -07:00
Greg Hysen
ac0c35424b Reverting earlier change: interfaces now inherit from other interfaces 2018-04-20 13:56:18 -07:00
Greg Hysen
41242a6660 Clarified that 0x0 could be passed into AssetProxyDispatcher 2018-04-20 13:56:18 -07:00
Greg Hysen
e80f203efc Inlined decodeMetadata in the proxies and removed encodeMetadata (already exists in Typescript). This simplifies the code. 2018-04-20 13:56:18 -07:00
Greg Hysen
dbd65cdb04 Added @TODO for safeTransferFrom support in ERC721 proxy 2018-04-20 13:56:18 -07:00
Greg Hysen
e4dd33a675 Removed outdated TODO comment in MixinSettlementProxy 2018-04-20 13:56:18 -07:00
Greg Hysen
0e3544e1f9 Miscellaneous style changes to the contracts package; specifically tests 2018-04-20 13:56:18 -07:00
Greg Hysen
f4589b5bd4 Ran prettier 2018-04-20 13:56:18 -07:00
Greg Hysen
3b7068e8d0 renaming after tokenTransferProxy was removed 2018-04-20 13:56:18 -07:00
Greg Hysen
2a8fc705c7 Commented out 0x.js tests until migration package is ready. 2018-04-20 13:56:18 -07:00
Greg Hysen
c19fb1dffc Removed ERC20 V1 Proxy + TokenTransferProxy 2018-04-20 13:56:18 -07:00
Greg Hysen
436a6605fb Updated commenting. Noted that transferFrom succeeds or throws on all transferFrom implementations. 2018-04-20 13:56:18 -07:00
Greg Hysen
84eddc3d94 switched to constants in default order params. 2018-04-20 13:56:18 -07:00
Greg Hysen
dfe6b2844b Reverted change that allowed ERC721 transfer proxy to be called with amount 0. This now throws. 2018-04-20 13:56:18 -07:00
Greg Hysen
6be5fe928e Removed takerTokenAddress and makerTokenAddress from Order struct. 2018-04-20 13:56:18 -07:00
Greg Hysen
167654c9a0 Added clarity to not-authorized test case in dispatcher 2018-04-20 13:56:18 -07:00
Greg Hysen
6d6179fb2c toUnsigned -> toBuffer in assetProxyUtils 2018-04-20 13:56:18 -07:00
Greg Hysen
80d06d358a Unrolled the loop that copies the Order struct in FillOrderNoThrow. Saves 900 gas 2018-04-20 13:56:18 -07:00
Greg Hysen
1cace49b74 address -> IAssetProxy where possible for clarity 2018-04-20 13:56:18 -07:00
Greg Hysen
7ab5442163 Reverted to calling read/write uint256 2018-04-20 13:56:18 -07:00
Greg Hysen
4d42f64fa3 More testing of common functionality across proxies 2018-04-20 13:56:17 -07:00
Greg Hysen
8d83243378 Updates to proxy tests. 2018-04-20 13:56:17 -07:00
Greg Hysen
e1a74b6bdd More authorized -> owner in test comments 2018-04-20 13:56:17 -07:00
Greg Hysen
44919c353e Removed unnecessary deployments in test 2018-04-20 13:56:17 -07:00
Greg Hysen
cf8523da5f Moved ERC721 FillOrderNoThrow tests into wrapper 2018-04-20 13:56:17 -07:00
Greg Hysen
10707ebc3a Style improvements to the Asset Proxy tests 2018-04-20 13:56:17 -07:00
Greg Hysen
8374a51e6a Replaced instances of accounts[0] with owner in contracts test cases 2018-04-20 13:56:17 -07:00
Greg Hysen
4e48de1116 Minor changes to typescript tests 2018-04-20 13:56:17 -07:00
Greg Hysen
b3b29f527e Minor fixes to the contracts 2018-04-20 13:56:17 -07:00
Greg Hysen
37cfeed0f5 Rearranged preconditions in ERC721 proxy 2018-04-20 13:56:17 -07:00
Greg Hysen
cb27fe17cd Changed order of encode/decode functions in token proxies 2018-04-20 13:56:17 -07:00
Greg Hysen
682ab76ba1 Updated name of AssetProxyChanged -> AssetProxySet 2018-04-20 13:56:17 -07:00
Greg Hysen
c811b710eb Explicity declare memory for complex types, where possible 2018-04-20 13:56:17 -07:00
Greg Hysen
d0930b9048 Improved readability of FillOrderNoThrow II 2018-04-20 13:56:17 -07:00
Greg Hysen
591645758a Improved readability of FillOrderNoThrow 2018-04-20 13:56:17 -07:00
Greg Hysen
4e093369f6 Updated ERC20 v1 proxy names in tests 2018-04-20 13:56:17 -07:00
Greg Hysen
be8e8791b7 Ran prettier/linter on new contract tests 2018-04-20 13:56:17 -07:00
Greg Hysen
b13a2e71ad Added comments around deploying contracts to helper/wrapper tests 2018-04-20 13:56:17 -07:00
Greg Hysen
28678214d2 TS styles in core contract tests 2018-04-20 13:56:17 -07:00
Greg Hysen
f75d03c9ae Added more comments to proxy tests 2018-04-20 13:56:17 -07:00
Greg Hysen
51508a732d Cleaned up TS in dispatcher tests 2018-04-20 13:56:17 -07:00
Greg Hysen
326d8d3976 Proxy Metadata -> Data 2018-04-20 13:56:17 -07:00
Greg Hysen
f559a5510b Cleaning up some wording 2018-04-20 13:56:17 -07:00
Greg Hysen
bf8b123dfc Removed some unused ERC721 tokens 2018-04-20 13:56:17 -07:00
Greg Hysen
32a7442845 Minor style improvements to asset proxy utils 2018-04-20 13:56:17 -07:00
Greg Hysen
a0dfdefd16 ethereum-js for encoding/decoding asset proxy data 2018-04-20 13:56:17 -07:00
Greg Hysen
e7b0c24d9d Added memory to bytes arrays, where possible 2018-04-20 13:56:17 -07:00
Greg Hysen
1707f1940d Replaced read/write Uint256 with generic bytes32, plus casting 2018-04-20 13:56:17 -07:00
Greg Hysen
5dd708aae8 Updated public -> external 2018-04-20 13:56:17 -07:00
Greg Hysen
2477ea2fcf Removed unused dependency 2018-04-20 13:56:17 -07:00
Greg Hysen
9b624a884b snake case to camel case 2018-04-20 13:56:17 -07:00
Greg Hysen
bc7672652e makerAssetProxyData/takerAssetProxyData -> makerAssetData/takerAssetData 2018-04-20 13:56:17 -07:00
Greg Hysen
cc77f8489e nilAddress to ZeroEx.NULL_ADDRESS 2018-04-20 13:56:17 -07:00
Greg Hysen
564ddff4c7 IAssetProxyDispatcher to IAssetProxy in MixinSettlement layer + allowing 0-condition in ERC721 transfer 2018-04-20 13:56:17 -07:00
Greg Hysen
023ea94f07 Removed Log prefix from events 2018-04-20 13:56:17 -07:00
Greg Hysen
adad76eca6 Removed unnecessary assetProxyManagerAddress 2018-04-20 13:56:17 -07:00
Greg Hysen
772bb65237 removed unnecessary import 2018-04-20 13:56:17 -07:00
Greg Hysen
d72a731865 setAssetProxy to addAssetProxy 2018-04-20 13:56:17 -07:00
Greg Hysen
f35fe56d9b Renamed TransferProxy to Proxy 2018-04-20 13:56:17 -07:00
Greg Hysen
1ab70f130d Renaming TransferProxy to Proxy 2018-04-20 13:56:17 -07:00
Greg Hysen
86f79949ea ERC20 V1 proxy compiling 2018-04-20 13:56:17 -07:00
Greg Hysen
219d6c294d Changed order of write parameters in LibBytes. Now ordered by most generalized to most specific 2018-04-20 13:56:17 -07:00
Greg Hysen
78d81f193f Asset Proxy Dispatcher 2018-04-20 13:56:17 -07:00
Fabio Berger
b9e0cd4512 Fix type issue 2018-04-20 13:56:17 -07:00
Fabio Berger
f9d4966000 Fix merge 2018-04-20 13:56:17 -07:00
Amir Bandeali
ad2289935d Use addFillResults function and add comments to all marketFill functions 2018-04-20 13:56:17 -07:00
Amir Bandeali
fd47b3fac5 Fix EtherDelta imports 2018-04-20 13:56:17 -07:00
Amir Bandeali
84d836f22b Add back require statements and tests (will move to another PR) 2018-04-20 13:56:17 -07:00
Amir Bandeali
5d05a2da74 Revert variable naming 2018-04-20 13:56:17 -07:00
Amir Bandeali
2f639b77bb Update Solidity syntax and comments 2018-04-20 13:56:17 -07:00
Amir Bandeali
8b5b371821 Return all amounts traded and fees paid 2018-04-20 13:56:17 -07:00
Amir Bandeali
0c74a3bc66 Add tests for marketBuyOrders 2018-04-20 13:56:17 -07:00
Amir Bandeali
75f77f3e86 Add marketBuyOrders, rename variables, and fx old tests 2018-04-20 13:56:17 -07:00
Amir Bandeali
7a66da5a51 Fix build errors 2018-04-20 13:56:17 -07:00
Amir Bandeali
3541f5e1da Separate filled/cancelled errors 2018-04-20 13:56:17 -07:00
Amir Bandeali
8f809e3a29 Remove partial cancels 2018-04-20 13:56:17 -07:00
Greg Hysen
3f76985435 updated test name to reflect smart contracts 2018-04-20 13:56:17 -07:00
Greg Hysen
751f9b9240 Change from cancelOrdersBefore to cancelOrdersUpTo. The effect is that orders with salt <= to maker epoch will be cancelled (previously, it was salt < maker epoch) 2018-04-20 13:56:17 -07:00
Greg Hysen
1efba5979f Renamed all instances of timestamp to salt. Clarified test case wording. 2018-04-20 13:56:17 -07:00
Greg Hysen
bf3c4f4743 Fixed spacing 2018-04-20 13:56:17 -07:00
Greg Hysen
aeb0742434 Implementation and tests in the protocol for cancelling all orders up to a specific time 2018-04-20 13:56:17 -07:00
Amir Bandeali
e98b4ea26d Fix build errors 2018-04-20 13:56:17 -07:00
Amir Bandeali
1729cfaea9 Update copyright headers 2018-04-20 13:56:17 -07:00
Amir Bandeali
56ade9c44e Add private keys for testrpc mnemonic 2018-04-20 13:56:17 -07:00
Amir Bandeali
6db0b2e398 Address feedback and lint 2018-04-20 13:56:16 -07:00
Amir Bandeali
2bd1ddd129 Add tests for fillOrderNoThrow based functions 2018-04-20 13:56:16 -07:00
Amir Bandeali
20a37bdd1d Fix fillOrderNoThrow 2018-04-20 13:56:16 -07:00
Amir Bandeali
234447cb3d Add logging to testrpc script 2018-04-20 13:56:16 -07:00
Amir Bandeali
97232145a4 Fix package.json 2018-04-20 13:56:16 -07:00
Amir Bandeali
056ec6d2b3 Bump Solidity version to 0.4.21 2018-04-20 13:56:16 -07:00
Amir Bandeali
2c44c7ea83 Add fillOrderNoThrow to exchange wrapper and add test 2018-04-20 13:56:16 -07:00
Amir Bandeali
9cc1956b4b Update formatting 2018-04-20 13:56:16 -07:00
Amir Bandeali
a35138e2b9 Update fillOrderNoThrow 2018-04-20 13:56:16 -07:00
Amir Bandeali
49f6c20b20 Update order utils 2018-04-20 13:56:16 -07:00
Amir Bandeali
6bfc02d79d Modify tests to work with new utils 2018-04-20 13:56:16 -07:00
Amir Bandeali
7b166837d3 Add script for starting testrpc with preconfigured private keys 2018-04-20 13:56:16 -07:00
Amir Bandeali
3ff8a319c5 Add utils for hashing and signing orders, update wrappers 2018-04-20 13:56:16 -07:00
Amir Bandeali
cd8f8e1e4a Modify utils to work with new signature format 2018-04-20 13:56:16 -07:00
Amir Bandeali
ed43d8d08b Change order field names 2018-04-20 13:56:16 -07:00
Amir Bandeali
ca786cdd11 Fix log decoding 2018-04-20 13:56:16 -07:00
Amir Bandeali
3e659f0de8 Revert getOrderHash to old logic 2018-04-20 13:56:16 -07:00
Amir Bandeali
795a357595 Fix compile errors 2018-04-20 13:56:16 -07:00
Remco Bloemen
5737365b2d Update fillOrderNoThrow 2018-04-20 13:56:16 -07:00
Remco Bloemen
8dff54de42 Use ABIv2 exchange core in wrapper functions 2018-04-20 13:56:16 -07:00
Remco Bloemen
c1b8a7fbb7 Implement ABIv2 in ExchangeCore 2018-04-20 13:56:16 -07:00
Remco Bloemen
6f3c6f7599 Implement EIP712 and ABIv2 in LibOrder 2018-04-20 13:56:16 -07:00
Amir Bandeali
246eca91aa Add logDecoder, remove outdated tests 2018-04-20 13:56:16 -07:00
Amir Bandeali
5fd378e4ce Merge development 2018-04-20 13:56:16 -07:00
Amir Bandeali
382f24c556 Run prettier 2018-04-20 13:56:16 -07:00
Amir Bandeali
0773fcf66f Fix utils to work with new ABI 2018-04-20 13:56:16 -07:00
Amir Bandeali
650a24ba87 Add fillOrderNoThrow and wrapper functions 2018-04-20 13:56:16 -07:00
Amir Bandeali
d2be2ee6cd Fix compile errors 2018-04-20 13:56:16 -07:00
Remco Bloemen
7d63c5d982 Fix spelling of latter 2018-04-20 13:56:16 -07:00
Remco Bloemen
a4f294c090 Add offset to signature 2018-04-20 13:56:16 -07:00
Remco Bloemen
58c5e800d0 Document noThrow wrapper and correct fixed array offset 2018-04-20 13:56:16 -07:00
Remco Bloemen
6d7097eed5 Add Trezor signatures 2018-04-20 13:56:16 -07:00
Remco Bloemen
55da59a537 Add Todos 2018-04-20 13:56:16 -07:00
Remco Bloemen
012ee310a4 Fix documentation 2018-04-20 13:56:16 -07:00
Remco Bloemen
1e07fcacac Verify length on EIP712 signatures 2018-04-20 13:56:16 -07:00
Remco Bloemen
69ab913bc6 Remove unused return value 2018-04-20 13:56:16 -07:00
Remco Bloemen
83a63f64b1 Spelling fixes 2018-04-20 13:56:16 -07:00
Remco Bloemen
8f7e67367a Add documentation 2018-04-20 13:56:16 -07:00
Remco Bloemen
0dad3fecb6 Make wrappers external again 2018-04-20 13:56:16 -07:00
Remco Bloemen
09b99bbf8b Explicit returns 2018-04-20 13:56:16 -07:00
Remco Bloemen
92e112dc63 Revert cancel order signature abstraction 2018-04-20 13:56:16 -07:00
Remco Bloemen
6f5a84703e Fix hash argument name 2018-04-20 13:56:16 -07:00
Remco Bloemen
c0de35e71c Fix batchFillOrdersNoThrow name 2018-04-20 13:56:16 -07:00
Remco Bloemen
f7dd6f7a7e Fix input length in fillOrderNoThrow 2018-04-20 13:56:16 -07:00
Remco Bloemen
655c1eb90f Add SignatureType.Invalid and documentation 2018-04-20 13:56:16 -07:00
Remco Bloemen
af6885db81 Make first value illegal 2018-04-20 13:56:16 -07:00
Remco Bloemen
78e216d157 Implement EIP712 at verify-signature call site 2018-04-20 13:56:16 -07:00
Remco Bloemen
61726d84ac Cancel signature abstraction 2018-04-20 13:56:16 -07:00
Remco Bloemen
60d3bed393 Cache order maker signature (ZEIP-15) 2018-04-20 13:56:16 -07:00
Remco Bloemen
3133ca0081 Add EIP712 signatures (implements ZEIP-17) 2018-04-20 13:56:16 -07:00
Remco Bloemen
0f720223a9 Add external contract call signatures (relates to ZEIP 1 and 7) 2018-04-20 13:56:16 -07:00
Remco Bloemen
6bb93b8170 Revert after cascade 2018-04-20 13:56:16 -07:00
Remco Bloemen
d0f32d1865 Add 'caller' signature type 2018-04-20 13:56:16 -07:00
Remco Bloemen
2fe4e380d1 Abstract signature to opaque bytearray 2018-04-20 13:56:16 -07:00
Remco Bloemen
a7f4701698 Use interfaces for contract types 2018-04-20 13:56:16 -07:00
Amir Bandeali
f12e4f8889 Use new logDecoder interface 2018-04-20 13:56:16 -07:00
Amir Bandeali
df99a360fb Rename variables 2018-04-20 13:56:16 -07:00
Amir Bandeali
4c76ad072a Move log decoding logic to exchange wrapper 2018-04-20 13:56:16 -07:00
Amir Bandeali
edf837ed62 Add logDecoder, remove outdated tests 2018-04-20 13:56:16 -07:00
Amir Bandeali
7201a74aea Move utils dir into src 2018-04-20 13:56:16 -07:00
Amir Bandeali
9e2f8bead9 Merge development 2018-04-20 13:56:16 -07:00
Amir Bandeali
942867179c Run prettier 2018-04-20 13:56:16 -07:00
Amir Bandeali
6b897f6fd2 Get tests to build 2018-04-20 13:56:16 -07:00
Amir Bandeali
389f1cde51 Fix utils to work with new ABI 2018-04-20 13:56:16 -07:00
Amir Bandeali
1ad31ab007 Add fillOrderNoThrow and wrapper functions 2018-04-20 13:56:15 -07:00
Remco Bloemen
914db52c4d Move order settlement to MSettlement 2018-04-20 13:56:15 -07:00
Remco Bloemen
fe51ec906e Exchange refactor using mixin pattern 2018-04-20 13:56:15 -07:00
Remco Bloemen
85551f4994 Fix compiler warnings 2018-04-20 13:56:15 -07:00
Remco Bloemen
fc1cfcceca Update exchange to use interfaces and current SafeMath 2018-04-20 13:56:15 -07:00
Remco Bloemen
6b4d4b9246 Copy Exchange and deps to previous as Exchange_v1 2018-04-20 13:56:15 -07:00
Remco Bloemen
b06ba55be3 Add interfaces for Exchange, TokenRegistery and TokenTransferProxy 2018-04-20 13:56:15 -07:00
1670 changed files with 105024 additions and 54102 deletions

View File

@@ -1,219 +1,350 @@
version: 2
jobs:
build:
docker:
- image: circleci/node:6.12
environment:
CONTRACTS_COMMIT_HASH: '9ed05f5'
working_directory: ~/repo
steps:
- checkout
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
- restore_cache:
key: dependency-cache-{{ checksum "package.json" }}
- run:
name: yarn
command: yarn --frozen-lockfile
- save_cache:
key: dependency-cache-{{ checksum "package.json" }}
paths:
- ./node_modules
- run: wget https://s3.amazonaws.com/testrpc-shapshots/${CONTRACTS_COMMIT_HASH}.zip
- run: unzip ${CONTRACTS_COMMIT_HASH}.zip -d testrpc_snapshot
- run: node ./node_modules/lerna/bin/lerna.js bootstrap
- run: yarn lerna:run build
- save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo
test-installation:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn test:installation
test-0xjs:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: testrpc
command: npm run testrpc -- --db testrpc_snapshot
background: true
- run: yarn lerna:run --scope 0x.js test:circleci
- save_cache:
key: coverage-0xjs-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/0x.js/coverage/lcov.info
test-contracts:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: testrpc
command: npm run testrpc -- --db testrpc_snapshot
background: true
- run: yarn lerna:run --scope contracts test:circleci
- save_cache:
key: coverage-contracts-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/contracts/coverage/lcov.info
test-deployer:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: testrpc
command: npm run testrpc -- --db testrpc_snapshot
background: true
- run: yarn lerna:run --scope @0xproject/deployer test:circleci
- save_cache:
key: coverage-deployer-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/deployer/coverage/lcov.info
test-rest:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run:
name: testrpc
command: npm run testrpc -- --db testrpc_snapshot
background: true
- run: yarn lerna:run --ignore contracts --ignore 0x.js --ignore @0xproject/deployer test:circleci
- save_cache:
key: coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/assert/coverage/lcov.info
- save_cache:
key: coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/connect/coverage/lcov.info
- save_cache:
key: coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/dev-utils/coverage/lcov.info
- save_cache:
key: coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/json-schemas/coverage/lcov.info
- save_cache:
key: coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/subproviders/coverage/lcov.info
- save_cache:
key: coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/sol-cov/coverage/lcov.info
- save_cache:
key: coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/metacoin/coverage/lcov.info
lint:
working_directory: ~/repo
docker:
- image: circleci/node:6.12
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn lerna:run lint
prettier:
working_directory: ~/repo
docker:
- image: circleci/node:6.12
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn prettier:ci
submit-coverage:
docker:
- image: circleci/node:6.12
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-contracts-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-deployer-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-0xjs-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn report_coverage
build:
resource_class: medium+
docker:
- image: circleci/node:9
environment:
CONTRACTS_COMMIT_HASH: '9ed05f5'
working_directory: ~/repo
steps:
- checkout
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
- run:
name: install-yarn
command: sudo npm install --global yarn@1.9.4
- run:
name: yarn
command: yarn --frozen-lockfile install || yarn --frozen-lockfile install
- run: yarn build:ci:no_website
- save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo
build-website:
resource_class: medium+
docker:
- image: circleci/node:9
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: cd packages/website && yarn build
test-contracts-ganache:
docker:
- image: circleci/node:9
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci contracts
test-contracts-geth:
docker:
- image: circleci/node:9
- image: 0xorg/devnet
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
# HACK(albrow): we need to sleep 10 seconds to ensure the devnet is
# initialized
- run: sleep 10 && TEST_PROVIDER=geth yarn wsrun test contracts
test-publish:
resource_class: medium+
docker:
- image: circleci/node:9
- image: 0xorg/verdaccio
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn test:publish:circleci
test-doc-generation:
docker:
- image: circleci/node:9
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn test:generate_docs:circleci
test-rest:
docker:
- image: circleci/node:9
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/abi-gen
- run: yarn wsrun test:circleci @0x/assert
- run: yarn wsrun test:circleci @0x/base-contract
- run: yarn wsrun test:circleci @0x/connect
- run: yarn wsrun test:circleci @0x/contract-wrappers
- run: yarn wsrun test:circleci @0x/dev-utils
- run: yarn wsrun test:circleci @0x/json-schemas
- run: yarn wsrun test:circleci @0x/metacoin
- run: yarn wsrun test:circleci @0x/order-utils
- run: yarn wsrun test:circleci @0x/order-watcher
- run: yarn wsrun test:circleci @0x/sol-compiler
- run: yarn wsrun test:circleci @0x/sol-cov
- run: yarn wsrun test:circleci @0x/sol-doc
- run: yarn wsrun test:circleci @0x/subproviders
- run: yarn wsrun test:circleci @0x/web3-wrapper
- run: yarn wsrun test:circleci @0x/utils
- run: yarn wsrun test:circleci @0x/instant
- save_cache:
key: coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/abi-gen/coverage/lcov.info
- save_cache:
key: coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/assert/coverage/lcov.info
- save_cache:
key: coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/base-contract/coverage/lcov.info
- save_cache:
key: coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/connect/coverage/lcov.info
- save_cache:
key: coverage-contract-wrappers-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/contract-wrappers/coverage/lcov.info
- save_cache:
key: coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/dev-utils/coverage/lcov.info
- save_cache:
key: coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/json-schemas/coverage/lcov.info
- save_cache:
key: coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/metacoin/coverage/lcov.info
- save_cache:
key: coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/order-utils/coverage/lcov.info
- save_cache:
key: coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/order-watcher/coverage/lcov.info
- save_cache:
key: coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/sol-compiler/coverage/lcov.info
- save_cache:
key: coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/sol-cov/coverage/lcov.info
- save_cache:
key: coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/sol-doc/coverage/lcov.info
- save_cache:
key: coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/subproviders/coverage/lcov.info
- save_cache:
key: coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/web3-wrapper/coverage/lcov.info
test-python:
working_directory: ~/repo
docker:
- image: circleci/python
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
python -m ensurepip
python -m pip install -e .[dev]
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- '/usr/local/bin'
- '/usr/local/lib/python3.7/site-packages'
- '.eggs'
- '.mypy_cache'
- '.pytest_cache'
- '.tox'
- run:
command: |
cd python-packages/order_utils
coverage run setup.py test
- save_cache:
key: coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/order_utils/.coverage
test-rest-python:
working_directory: ~/repo
docker:
- image: circleci/python
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
python -m ensurepip
python -m pip install -e .[dev]
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- '/usr/local/bin'
- '/usr/local/lib/python3.7/site-packages'
- '.eggs'
- '.mypy_cache'
- '.pytest_cache'
- '.tox'
- run:
command: |
cd python-packages/order_utils
tox
static-tests-python:
working_directory: ~/repo
docker:
- image: circleci/python
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
python -m ensurepip
python -m pip install -e .[dev]
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- '/usr/local/bin'
- '/usr/local/lib/python3.7/site-packages'
- run:
command: |
cd python-packages/order_utils
python setup.py lint
static-tests:
working_directory: ~/repo
docker:
- image: circleci/node:9
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn lerna run lint
- run: yarn prettier:ci
- run: cd packages/0x.js && yarn build:umd:prod
- run: yarn bundlewatch
submit-coverage:
docker:
- image: circleci/node:9
working_directory: ~/repo
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-contract-wrappers-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-contracts-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn report_coverage
workflows:
version: 2
main:
jobs:
- build
- test-installation:
requires:
version: 2
main:
jobs:
- build
- test-0xjs:
requires:
- build
- test-contracts:
requires:
- build
- test-deployer:
requires:
- build
- test-rest:
requires:
- build
- prettier:
requires:
- build
- lint:
requires:
- build
- submit-coverage:
requires:
- test-0xjs
- test-deployer
- test-rest
- test-contracts
- build-website:
requires:
- build
- test-contracts-ganache:
requires:
- build
- test-contracts-geth:
requires:
- build
- test-rest:
requires:
- build
- static-tests:
requires:
- build
- test-publish:
requires:
- build
- test-doc-generation:
requires:
- build
- submit-coverage:
requires:
- test-rest
- test-python
- test-python
- static-tests-python
# skip python tox run for now, as we don't yet have multiple test environments to support.
#- test-rest-python

6
.gitattributes vendored
View File

@@ -1 +1,7 @@
*.sol linguist-language=Solidity
# Automatically collapse generated files in GitHub.
*.svg linguist-generated
packages/contract-artifacts/artifacts/*json linguist-generated
packages/abi-gen-wrappers/wrappers/*.ts liguist-generated

35
.gitignore vendored
View File

@@ -41,6 +41,7 @@ typings/
# Optional npm cache directory
.npm
.npmrc
# Optional eslint cache
.eslintcache
@@ -67,25 +68,37 @@ generated_docs/
TODO.md
# VSCode file
.vscode
packages/website/public/bundle*
packages/dev-tools-pages/public/bundle*
packages/react-docs/example/public/bundle*
# generated binaries
bin/
# server cli
packages/testnet-faucets/server/
# generated contract artifacts
packages/sol-cov/test/fixtures/artifacts
packages/metacoin/artifacts
packages/0x.js/test/artifacts
packages/migrations/src/artifacts
# generated contract artifacts/
packages/contracts/generated-artifacts/
packages/sol-cov/test/fixtures/artifacts/
packages/metacoin/artifacts/
# generated contract wrappers
packages/0x.js/src/contract_wrappers/generated/
packages/contracts/src/contract_wrappers/generated/
packages/abi-gen-wrappers/wrappers
packages/contracts/generated-wrappers/
packages/metacoin/src/contract_wrappers
# solc-bin in deployer
packages/deployer/solc_bin/
# solc-bin in sol-compiler
packages/sol-compiler/solc_bin/
# Monorepo scripts
packages/*/scripts/
# python stuff
.eggs
.mypy_cache
.tox
python-packages/*/build
__pycache__
python-packages/*/src/*.egg-info
python-packages/*/.coverage

View File

@@ -1,7 +1,13 @@
lib
.nyc_output
/packages/contracts/src/artifacts
/packages/contracts/generated-wrappers
/packages/contracts/generated-artifacts
/packages/abi-gen-wrappers/src/generated-wrappers
/packages/contract-artifacts/artifacts
/packages/json-schemas/schemas
/packages/metacoin/src/contract_wrappers
/packages/metacoin/artifacts
/packages/migrations/src/artifacts
/packages/sra-spec/public/
package.json
scripts/postpublish_utils.js
packages/sol-cov/test/fixtures/artifacts

28
CODEOWNERS Normal file
View File

@@ -0,0 +1,28 @@
# See https://help.github.com/articles/about-codeowners/
# for more info about CODEOWNERS file
# It uses the same pattern rule for gitignore file
# https://git-scm.com/docs/gitignore#_pattern_format
# Website
packages/asset-buyer/ @BMillman19 @fragosti @steveklebanoff
packages/instant/ @BMillman19 @fragosti @steveklebanoff
packages/website/ @BMillman19 @fragosti @fabioberger @steveklebanoff
# Dev tools & setup
packages/abi-gen/ @LogvinovLeon
packages/base-contract/ @LogvinovLeon
packages/contract_templates/ @LogvinovLeon
packages/dev-utils/ @LogvinovLeon @fabioberger
packages/ethereum-types/ @LogvinovLeon
packages/metacoin/ @LogvinovLeon
packages/sol-compiler/ @LogvinovLeon
packages/sol-cov/ @LogvinovLeon
packages/sol-resolver/ @LogvinovLeon
packages/web3-wrapper/ @LogvinovLeon @fabioberger
.circleci/ @LogvinovLeon
packages/subproviders/ @fabioberger @dekz
packages/connect/ @fragosti
packages/monorepo-scripts/ @fabioberger
packages/order-utils/ @fabioberger @LogvinovLeon

View File

@@ -21,6 +21,18 @@ If you're adding a new public function/member, make sure you document it with Ja
If the sub-package you are modifying has a `CHANGELOG.md` file, make sure to add an entry in it for the change made to the package. For published packages, only changes that modify the public interface or behavior of the package need a CHANGELOG entry.
#### Enabling code coverage checks on your fork
If you simply fork the repo and then create a PR sourced from it, your PR will fail its test coverage check. This is because the 0x CircleCI configuration sets the `COVERALLS_REPO_TOKEN` environment variable to the token for 0xProject/0x-monorepo, but when running the check against your fork the token needs to match the repo that is your fork, rather than the 0x repo.
To facilitate this check, after creating your fork, but before creating the branch for your PR, do the following:
1. Log in to [coveralls.io](https://coveralls.io/), go to Add Repos, and enable your fork. Then go to the settings for that repo, and copy the Repo Token identifier.
2. Log in to [CircleCI](https://circleci.com/login), go to Add Projects, click the Set Up Project button corresponding to your fork, and then click Start Building. (Aside from step 3 below, no actual set up is needed, since it will use the `.circleci/config.yml` file in 0x-monorepo, so you can ignore all of the instruction/explanation given on the page with the Start Building button.)
3. In CircleCI, configure your project to add an Environment Variable, with name `COVERALLS_REPO_TOKEN`, and for the value paste in the Repo Token you copied in step 1.
Now, when you push to your branch, CircleCI will automatically run all of the checks in your own instance, and the coverage check will work since it has the proper Repo Token, and the PR will magically refer to your own checks rather than running them in the 0x CircleCI instance.
### Styleguide
We use [TSLint](https://palantir.github.io/tslint/) with [custom configs](https://github.com/0xProject/0x-monorepo/tree/development/packages/tslint-config) to keep our code style consistent.

View File

@@ -1,41 +1,27 @@
<!--- Thank you for taking the time to submit a Pull Request -->
<!--- Provide a general summary of the issue in the Title above -->
## Description
<!--- Describe your changes in detail -->
## Motivation and Context
## Testing instructions
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
<!--- Please describe how reviewers can test your changes -->
## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
<!--- What types of changes does your code introduce? Uncomment all the bullets that apply: -->
* [ ] Bug fix (non-breaking change which fixes an issue)
* [ ] New feature (non-breaking change which adds functionality)
* [ ] Breaking change (fix or feature that would cause existing functionality to change)
<!-- * Bug fix (non-breaking change which fixes an issue) -->
<!-- * New feature (non-breaking change which adds functionality) -->
<!-- * Breaking change (fix or feature that would cause existing functionality to change) -->
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
* [ ] Change requires a change to the documentation.
* [ ] Added tests to cover my changes.
* [ ] Added new entries to the relevant CHANGELOG.jsons.
* [ ] Labeled this PR with the 'WIP' label if it is a work in progress.
* [ ] Labeled this PR with the labels corresponding to the changed package.
* [ ] Prefix PR title with `[WIP]` if necessary.
* [ ] Prefix PR title with bracketed package name(s) corresponding to the changed package(s). For example: `[sol-cov] Fixed bug`.
* [ ] Add tests to cover changes as needed.
* [ ] Update documentation as needed.
* [ ] Add new entries to the relevant CHANGELOG.jsons.

152
README.md
View File

@@ -6,8 +6,11 @@
This repository is a monorepo including the 0x protocol smart contracts and numerous developer tools. Each public sub-package is independently published to NPM.
[website-url]: https://0xproject.com/
If you're developing on 0x now or are interested in using 0x infrastructure in the future, please join our [developer mailing list][dev-mailing-list-url] for updates.
[website-url]: https://0xproject.com
[whitepaper-url]: https://0xproject.com/pdfs/0x_white_paper.pdf
[dev-mailing-list-url]: http://eepurl.com/dx4cPf
[![CircleCI](https://circleci.com/gh/0xProject/0x-monorepo.svg?style=svg&circle-token=61bf7cd8c9b4e11b132089dfcffdd1be277d1e0c)](https://circleci.com/gh/0xProject/0x-monorepo)
[![Coverage Status](https://coveralls.io/repos/github/0xProject/0x-monorepo/badge.svg?branch=development)](https://coveralls.io/github/0xProject/0x-monorepo?branch=development)
@@ -17,36 +20,38 @@ This repository is a monorepo including the 0x protocol smart contracts and nume
### Published Packages
| Package | Version | Description |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [`0x.js`](/packages/0x.js) | [![npm](https://img.shields.io/npm/v/0x.js.svg)](https://www.npmjs.com/package/0x.js) | A Javascript library for interacting with the 0x protocol |
| [`@0xproject/abi-gen`](/packages/abi-gen) | [![npm](https://img.shields.io/npm/v/@0xproject/abi-gen.svg)](https://www.npmjs.com/package/@0xproject/abi-gen) | Tool to generate TS wrappers from smart contract ABIs |
| [`@0xproject/assert`](/packages/assert) | [![npm](https://img.shields.io/npm/v/@0xproject/assert.svg)](https://www.npmjs.com/package/@0xproject/assert) | Type and schema assertions used by our packages |
| [`@0xproject/base-contract`](/packages/base-contract) | [![npm](https://img.shields.io/npm/v/@0xproject/base-contract.svg)](https://www.npmjs.com/package/@0xproject/base-contract) | BaseContract used by auto-generated `abi-gen` wrapper contracts |
| [`@0xproject/connect`](/packages/connect) | [![npm](https://img.shields.io/npm/v/@0xproject/connect.svg)](https://www.npmjs.com/package/@0xproject/connect) | A Javascript library for interacting with the Standard Relayer API |
| [`@0xproject/deployer`](/packages/deployer) | [![npm](https://img.shields.io/npm/v/@0xproject/deployer.svg)](https://www.npmjs.com/package/@0xproject/deployer) | Solidity project compiler and deployer framework |
| [`@0xproject/dev-utils`](/packages/dev-utils) | [![npm](https://img.shields.io/npm/v/@0xproject/dev-utils.svg)](https://www.npmjs.com/package/@0xproject/dev-utils) | Dev utils to be shared across 0x projects and packages |
| [`@0xproject/json-schemas`](/packages/json-schemas) | [![npm](https://img.shields.io/npm/v/@0xproject/json-schemas.svg)](https://www.npmjs.com/package/@0xproject/json-schemas) | 0x-related json schemas |
| [`@0xproject/monorepo-scripts`](/packages/monorepo-scripts) | [![npm](https://img.shields.io/npm/v/@0xproject/monorepo-scripts.svg)](https://www.npmjs.com/package/@0xproject/monorepo-scripts) | Monorepo scripts |
| [`@0xproject/react-docs`](/packages/react-docs) | [![npm](https://img.shields.io/npm/v/@0xproject/react-docs.svg)](https://www.npmjs.com/package/@0xproject/react-docs) | React documentation component for rendering TypeDoc & Doxity generated JSON |
| [`@0xproject/react-shared`](/packages/react-shared) | [![npm](https://img.shields.io/npm/v/@0xproject/react-shared.svg)](https://www.npmjs.com/package/@0xproject/react-shared) | 0x shared react components |
| [`@0xproject/sra-report`](/packages/sra-report) | [![npm](https://img.shields.io/npm/v/@0xproject/sra-report.svg)](https://www.npmjs.com/package/@0xproject/sra-report) | Generate reports for standard relayer API compliance |
| [`@0xproject/sol-cov`](/packages/sol-cov) | [![npm](https://img.shields.io/npm/v/@0xproject/sol-cov.svg)](https://www.npmjs.com/package/@0xproject/sol-cov) | Solidity test coverage tool |
| [`@0xproject/subproviders`](/packages/subproviders) | [![npm](https://img.shields.io/npm/v/@0xproject/subproviders.svg)](https://www.npmjs.com/package/@0xproject/subproviders) | Useful web3 subproviders (e.g LedgerSubprovider) |
| [`@0xproject/tslint-config`](/packages/tslint-config) | [![npm](https://img.shields.io/npm/v/@0xproject/tslint-config.svg)](https://www.npmjs.com/package/@0xproject/tslint-config) | Custom 0x development TSLint rules |
| [`@0xproject/types`](/packages/types) | [![npm](https://img.shields.io/npm/v/@0xproject/types.svg)](https://www.npmjs.com/package/@0xproject/types) | Shared type declarations |
| [`@0xproject/typescript-typings`](/packages/typescript-typings) | [![npm](https://img.shields.io/npm/v/@0xproject/typescript-typings.svg)](https://www.npmjs.com/package/@0xproject/typescript-typings) | Repository of types for external packages |
| [`@0xproject/utils`](/packages/utils) | [![npm](https://img.shields.io/npm/v/@0xproject/utils.svg)](https://www.npmjs.com/package/@0xproject/utils) | Shared utilities |
| [`@0xproject/web3-wrapper`](/packages/web3-wrapper) | [![npm](https://img.shields.io/npm/v/@0xproject/web3-wrapper.svg)](https://www.npmjs.com/package/@0xproject/web3-wrapper) | Web3 wrapper |
| Package | Version | Description |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| [`0x.js`](/packages/0x.js) | [![npm](https://img.shields.io/npm/v/0x.js.svg)](https://www.npmjs.com/package/0x.js) | A Javascript library for interacting with the 0x protocol |
| [`@0x/abi-gen`](/packages/abi-gen) | [![npm](https://img.shields.io/npm/v/@0x/abi-gen.svg)](https://www.npmjs.com/package/@0x/abi-gen) | Tool to generate TS wrappers from smart contract ABIs |
| [`@0x/assert`](/packages/assert) | [![npm](https://img.shields.io/npm/v/@0x/assert.svg)](https://www.npmjs.com/package/@0x/assert) | Type and schema assertions used by our packages |
| [`@0x/asset-buyer`](/packages/asset-buyer) | [![npm](https://img.shields.io/npm/v/@0x/asset-buyer.svg)](https://www.npmjs.com/package/@0x/asset-buyer) | Convenience package for discovering and buying assets with Ether. |
| [`@0x/base-contract`](/packages/base-contract) | [![npm](https://img.shields.io/npm/v/@0x/base-contract.svg)](https://www.npmjs.com/package/@0x/base-contract) | BaseContract used by auto-generated `abi-gen` wrapper contracts |
| [`@0x/connect`](/packages/connect) | [![npm](https://img.shields.io/npm/v/@0x/connect.svg)](https://www.npmjs.com/package/@0x/connect) | A Javascript library for interacting with the Standard Relayer API |
| [`@0x/dev-utils`](/packages/dev-utils) | [![npm](https://img.shields.io/npm/v/@0x/dev-utils.svg)](https://www.npmjs.com/package/@0x/dev-utils) | Dev utils to be shared across 0x projects and packages |
| [`@0x/json-schemas`](/packages/json-schemas) | [![npm](https://img.shields.io/npm/v/@0x/json-schemas.svg)](https://www.npmjs.com/package/@0x/json-schemas) | 0x-related json schemas |
| [`@0x/monorepo-scripts`](/packages/monorepo-scripts) | [![npm](https://img.shields.io/npm/v/@0x/monorepo-scripts.svg)](https://www.npmjs.com/package/@0x/monorepo-scripts) | Monorepo scripts |
| [`@0x/order-utils`](/packages/order-utils) | [![npm](https://img.shields.io/npm/v/@0x/order-utils.svg)](https://www.npmjs.com/package/@0x/order-utils) | A set of utilities for generating, parsing, signing and validating 0x orders. |
| [`@0x/react-docs`](/packages/react-docs) | [![npm](https://img.shields.io/npm/v/@0x/react-docs.svg)](https://www.npmjs.com/package/@0x/react-docs) | React documentation component for rendering TypeDoc & Doxity generated JSON |
| [`@0x/react-shared`](/packages/react-shared) | [![npm](https://img.shields.io/npm/v/@0x/react-shared.svg)](https://www.npmjs.com/package/@0x/react-shared) | 0x shared react components |
| [`@0x/sol-compiler`](/packages/sol-compiler) | [![npm](https://img.shields.io/npm/v/@0x/sol-compiler.svg)](https://www.npmjs.com/package/@0x/sol-compiler) | A thin wrapper around Solc.js that outputs artifacts, resolves imports, only re-compiles when needed, and other niceties. |
| [`@0x/sol-cov`](/packages/sol-cov) | [![npm](https://img.shields.io/npm/v/@0x/sol-cov.svg)](https://www.npmjs.com/package/@0x/sol-cov) | Solidity test coverage tool |
| [`@0x/sra-spec`](/packages/sra-spec) | [![npm](https://img.shields.io/npm/v/@0x/sra-spec.svg)](https://www.npmjs.com/package/@0x/sra-spec) | OpenAPI specification for the standard relayer API |
| [`@0x/subproviders`](/packages/subproviders) | [![npm](https://img.shields.io/npm/v/@0x/subproviders.svg)](https://www.npmjs.com/package/@0x/subproviders) | Useful web3 subproviders (e.g LedgerSubprovider) |
| [`@0x/tslint-config`](/packages/tslint-config) | [![npm](https://img.shields.io/npm/v/@0x/tslint-config.svg)](https://www.npmjs.com/package/@0x/tslint-config) | Custom 0x development TSLint rules |
| [`@0x/types`](/packages/types) | [![npm](https://img.shields.io/npm/v/@0x/types.svg)](https://www.npmjs.com/package/@0x/types) | Shared type declarations |
| [`@0x/typescript-typings`](/packages/typescript-typings) | [![npm](https://img.shields.io/npm/v/@0x/typescript-typings.svg)](https://www.npmjs.com/package/@0x/typescript-typings) | Repository of types for external packages |
| [`@0x/utils`](/packages/utils) | [![npm](https://img.shields.io/npm/v/@0x/utils.svg)](https://www.npmjs.com/package/@0x/utils) | Shared utilities |
| [`@0x/web3-wrapper`](/packages/web3-wrapper) | [![npm](https://img.shields.io/npm/v/@0x/web3-wrapper.svg)](https://www.npmjs.com/package/@0x/web3-wrapper) | Web3 wrapper |
### Private Packages
| Package | Description |
| --------------------------------------------------------------- | ---------------------------------------------------------------- |
| [`@0xproject/contracts`](/packages/contracts) | 0x solidity smart contracts & tests |
| [`@0xproject/react-docs-example`](/packages/react-docs-example) | Example documentation site created with `@0xproject/react-docs` |
| [`@0xproject/testnet-faucets`](/packages/testnet-faucets) | A faucet micro-service that dispenses test ERC20 tokens or Ether |
| [`@0xproject/website`](/packages/website) | 0x website & Portal DApp |
| Package | Description |
| -------------------------------------------------------- | ---------------------------------------------------------------- |
| [`@0x/contracts`](/packages/contracts) | 0x solidity smart contracts & tests |
| [`@0x/react-docs-example`](/packages/react-docs-example) | Example documentation site created with `@0x/react-docs` |
| [`@0x/testnet-faucets`](/packages/testnet-faucets) | A faucet micro-service that dispenses test ERC20 tokens or Ether |
| [`@0x/website`](/packages/website) | 0x website & Portal DApp |
## Usage
@@ -56,17 +61,19 @@ Dedicated documentation pages:
* [0x Connect](https://0xproject.com/docs/connect)
* [Smart contracts](https://0xproject.com/docs/contracts)
* [Subproviders](https://0xproject.com/docs/subproviders)
* [Deployer](https://0xproject.com/docs/deployer)
* [Sol Compiler](https://0xproject.com/docs/sol-compiler)
* [Web3-wrapper](https://0xproject.com/docs/web3-wrapper)
* [JSON-schemas](https://0xproject.com/docs/json-schemas)
* [Sol-cov](https://0xproject.com/docs/sol-cov)
* [Standard Relayer API](https://github.com/0xProject/standard-relayer-api/blob/master/README.md)
Node version >= 6.12 is required.
Most of the packages require additional typings for external dependencies.
You can include those by prepending @0xproject/typescript-typings package to your [`typeRoots`](http://www.typescriptlang.org/docs/handbook/tsconfig-json.html) config.
You can include those by prepending the `@0x/typescript-typings` package to your [`typeRoots`](http://www.typescriptlang.org/docs/handbook/tsconfig-json.html) config.
```json
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
"typeRoots": ["node_modules/@0x/typescript-typings/types", "node_modules/@types"],
```
## Contributing
@@ -77,11 +84,7 @@ We strongly recommend that the community help us make improvements and determine
### Install dependencies
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
```bash
yarn config set workspaces-experimental true
```
Make sure you are using Yarn v1.9.4. To install using brew:
Then install dependencies
@@ -91,32 +94,87 @@ yarn install
### Build
Build all packages. You need to do this before working on any given package. Although these packages
as independent, when run from within the monorepo, they are internally symlinked, to make development
easier. You can change several packages and run the changes without publishing them first to NPM. When
running `rebuild`, Lerna will figure out the dependency order of all the packages, and build them in
this order.
To build all packages:
```bash
yarn lerna:rebuild
yarn build
```
Or continuously rebuild on change:
To build a specific package:
```bash
yarn dev
PKG=@0x/web3-wrapper yarn build
```
### Watch
To re-build all packages on change:
```bash
yarn watch
```
To watch a specific package and all it's dependent packages:
```bash
PKG=[NPM_PACKAGE_NAME] yarn watch
e.g
PKG=@0x/web3-wrapper yarn watch
```
### Clean
Clean all packages:
```bash
yarn clean
```
Clean a specific package
```bash
PKG=0x.js yarn clean
```
### Rebuild
To re-build (clean & build) all packages:
```bash
yarn rebuild
```
To re-build (clean & build) a specific package & it's deps:
```bash
PKG=0x.js yarn rebuild
```
### Lint
Lint all packages
Lint all packages:
```bash
yarn lerna:run lint
yarn lint
```
Lint a specific package:
```bash
PKG=0x.js yarn lint
```
### Run Tests
Run all tests:
```bash
yarn lerna:test
yarn test
```
Run a specific package's test:
```bash
PKG=@0x/web3-wrapper yarn test
```

View File

@@ -1,15 +1,10 @@
{
"lerna": "2.5.1",
"lerna": "3.0.0-beta.23",
"packages": ["packages/*"],
"commands": {
"publish": {
"allowBranch": "development"
}
},
"version": "independent",
"commands": {
"command": {
"publish": {
"ignore": ["test/**/*", "*.md", "scripts", "lib", "tslint.json", "tsconfig.json"]
"ignoreChanges": ["test/**/*", "*.md", "scripts", "lib", "tslint.json", "tsconfig.json"]
}
},
"npmClient": "yarn",

View File

@@ -1,38 +1,79 @@
{
"private": true,
"name": "0x-monorepo",
"engines": {
"node": ">=6.12"
},
"workspaces": [
"packages/*"
],
"scripts": {
"dev": "lerna run --parallel build:watch",
"testrpc": "testrpc -p 8545 --networkId 50 -m \"${npm_package_config_mnemonic}\"",
"ganache": "ganache-cli -p 8545 --networkId 50 -m \"${npm_package_config_mnemonic}\"",
"prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc",
"prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}' --config .prettierrc",
"report_coverage": "lcov-result-merger 'packages/*/coverage/lcov.info' | coveralls",
"report_coverage": "lcov-result-merger './{packages/*/coverage/lcov.info,python-packages/*/.coverage}' | coveralls",
"test:installation": "node ./packages/monorepo-scripts/lib/test_installation.js",
"lerna:install": "yarn install",
"lerna:run": "lerna run",
"lerna:test": "lerna run test",
"lerna:clean": "lerna run clean",
"lerna:build": "lerna run build",
"lerna:rebuild": "run-s lerna:clean lerna:build",
"lerna:publish": "run-s lerna:install lerna:rebuild script:publish",
"lerna:publish:dry": "run-s lerna:install lerna:rebuild script:publish:dry",
"lerna:stage_docs": "lerna run docs:stage",
"test:installation:local": "IS_LOCAL_PUBLISH=true node ./packages/monorepo-scripts/lib/test_installation.js",
"test:publish:circleci": "yarn npm-cli-login -u test -p test -e test@example.com -r http://localhost:4873 && IS_LOCAL_PUBLISH=true run-s script:publish test:installation:local",
"run:publish": "run-s install:all build:monorepo_scripts script:prepublish_checks rebuild:no_website script:publish",
"run:publish:local": "IS_LOCAL_PUBLISH=true yarn run:publish",
"script:prepublish_checks": "node ./packages/monorepo-scripts/lib/prepublish_checks.js",
"script:publish": "node ./packages/monorepo-scripts/lib/publish.js",
"script:publish:dry": "IS_DRY_RUN=true yarn script:publish"
"install:all": "yarn install",
"wsrun": "wsrun",
"lerna": "lerna",
"build": "wsrun build $PKG --fast-exit -r --stages",
"build:no_website": "wsrun build $PKG --fast-exit -r --stages --exclude @0x/website",
"build:ci:no_website": "wsrun build:ci $PKG --fast-exit -r --stages --exclude @0x/website",
"build:monorepo_scripts": "PKG=@0x/monorepo-scripts yarn build",
"build:ts": "tsc -b",
"watch:ts": "tsc -b -w",
"clean": "wsrun clean $PKG --fast-exit -r --parallel",
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
"rebuild": "run-s clean build",
"rebuild:no_website": "run-s clean build:no_website",
"test": "wsrun test $PKG --fast-exit --serial --exclude-missing",
"generate_doc": "node ./packages/monorepo-scripts/lib/doc_generate_and_upload.js",
"test:generate_docs:circleci": "for i in ${npm_package_config_packagesWithDocPages}; do yarn generate_doc --package $i --shouldUpload false --isStaging true || break -1; done;",
"bundlewatch": "bundlewatch",
"lint": "wsrun lint $PKG --fast-exit --parallel --exclude-missing"
},
"config": {
"mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic"
"mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic",
"packagesWithDocPages": "0x.js connect json-schemas subproviders web3-wrapper contract-wrappers order-utils order-watcher sol-compiler sol-cov ethereum-types asset-buyer"
},
"bundlewatch": {
"files": [
{
"path": "packages/0x.js/_bundles/index.min.js",
"maxSize": "700kB"
},
{
"path": "packages/instant/public/main.bundle.js",
"maxSize": "500kB"
}
],
"ci": {
"trackBranches": [
"master",
"development"
],
"repoBranchBase": "development"
}
},
"devDependencies": {
"@0x-lerna-fork/lerna": "3.0.0-beta.25",
"@0xproject/npm-cli-login": "^0.0.11",
"async-child-process": "^1.1.1",
"bundlewatch": "^0.2.1",
"coveralls": "^3.0.0",
"ethereumjs-testrpc": "^6.0.3",
"lcov-result-merger": "^2.0.0",
"lerna": "^2.5.1",
"ganache-cli": "6.1.8",
"lcov-result-merger": "^3.0.0",
"lerna": "^3.0.0-beta.25",
"npm-run-all": "^4.1.2",
"prettier": "^1.11.1"
"prettier": "^1.11.1",
"source-map-support": "^0.5.6",
"typescript": "3.0.1",
"wsrun": "^2.2.0"
}
}

View File

@@ -4,7 +4,6 @@ webpack.config.js
yarn-error.log
test/
/src/
/_bundles/
/contract_templates/
/generated_docs/
/scripts/

View File

@@ -1,4 +1,315 @@
[
{
"version": "2.0.0",
"changes": [
{
"note": "Add support for `eth_signTypedData`.",
"pr": 1102
},
{
"note":
"Added `MetamaskSubprovider` to handle inconsistencies in Metamask's signing JSON RPC endpoints.",
"pr": 1102
},
{
"note":
"Removed `SignerType` (including `SignerType.Metamask`). Please use the `MetamaskSubprovider` to wrap `web3.currentProvider`.",
"pr": 1102
},
{
"note":
"Updated to use new modularized artifacts and the latest version of @0xproject/contract-wrappers",
"pr": 1105
},
{
"note": "Make web3-provider-engine types a 'dependency' so it's available to users of the library",
"pr": 1105
},
{
"note": "Export new `AssetData` type from types",
"pr": 1131
}
],
"timestamp": 1539871071
},
{
"version": "1.0.8",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1538693146
},
{
"timestamp": 1538157789,
"version": "1.0.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537907159,
"version": "1.0.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537875740,
"version": "1.0.5",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537541580,
"version": "1.0.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.3",
"changes": [
{
"note": "Drastically reduce the bundle size by removing unused parts of included contract artifacts."
}
],
"timestamp": 1537369748
},
{
"version": "1.0.2",
"changes": [
{
"note": "Add ZRX & WETH mainnet contract addresses into the included artifacts"
}
],
"timestamp": 1537265493
},
{
"timestamp": 1536142250,
"version": "1.0.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.1-rc.6",
"changes": [
{
"note": "Fix missing `BlockParamLiteral` type import issue"
}
],
"timestamp": 1535377027
},
{
"version": "1.0.1-rc.5",
"changes": [
{
"note":
"Fix `main` and `types` package.json entries so that they point to the new location of index.d.ts and index.js"
}
]
},
{
"version": "1.0.1-rc.4",
"changes": [
{
"note":
"Re-organize the exported interface of 0x.js. Remove the `ZeroEx` class, and instead export the same exports as `0x.js`'s sub-packages: `@0xproject/contract-wrappers`, `@0xproject/order-utils` and `@0xproject/order-watcher`",
"pr": 963
}
],
"timestamp": 1535133899
},
{
"version": "1.0.1-rc.3",
"changes": [
{
"note": "Dependencies updated"
},
{
"pr": 914,
"note": "Update ecSignOrderHashAsync to return the signature as a string for immediate use in contracts"
}
],
"timestamp": 1534210131
},
{
"version": "1.0.1-rc.2",
"changes": [
{
"note": "Fixed bug caused by importing non-existent dep"
}
],
"timestamp": 1532619515
},
{
"version": "1.0.1-rc.1",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1532605697
},
{
"timestamp": 1532357734,
"version": "1.0.0",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1532043100,
"version": "1.0.0-rc.2",
"changes": [
{
"note": "Remove `zeroEx.assetData` and instead re-export it's static functions directly off `ZeroEx`"
}
]
},
{
"timestamp": 1532043000,
"version": "1.0.0-rc.1",
"changes": [
{
"note": "Remove tokenRegistry wrapper",
"pr": 863
},
{
"note": "Rename `zeroEx.token` to `zeroEx.erc20Token`, and add `zeroEx.erc721Token`",
"pr": 863
},
{
"note": "Rename `zeroEx.proxy` to `zeroEx.erc20Proxy` and add `zeroEx.erc721Proxy`",
"pr": 863
},
{
"note":
"Refactored `ZeroEx.isValidSignature` to `zeroEx.isValidSignatureAsync`. It is now async so that it can verify contract-dependent signature types",
"pr": 863
},
{
"note":
"Refactored `signOrderHashAsync` to `ecSignOrderHashAsync`. There are now many non-ECSignature ways to sign orders too.",
"pr": 863
},
{
"note":
"Removed `createOrderWatcherAsync` method. Will be added back once OrderWatcher is refactored for V2",
"pr": 863
},
{
"note": "0x.js exports renamed contract events and event arg types",
"pr": 863
},
{
"note": "Export `ZeroEx.assetData` with methods to decode/encode assetData fields found in 0x orders",
"pr": 884
}
]
},
{
"timestamp": 1531919263,
"version": "0.38.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1531149657,
"version": "0.38.5",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1529397769,
"version": "0.38.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1527617805,
"version": "0.38.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1527617227,
"version": "0.38.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1527616612,
"version": "0.38.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "0.38.0",
"changes": [
{
"note": "Renamed createOrderStateWatcher to createOrderWatcherAsync since it is now async",
"pr": 579
},
{
"note":
"Renamed ZeroExError to ContractWrappersErrors since they now lives in the @0xproject/contract-wrappers subpackage",
"pr": 579
}
],
"timestamp": 1527008270
},
{
"timestamp": 1525477860,
"version": "0.37.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1525453812,
"version": "0.37.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "0.37.0",
"changes": [

View File

@@ -1,10 +1,132 @@
<!--
This file is auto-generated using the monorepo-scripts package. Don't edit directly.
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
Edit the package's CHANGELOG.json file only.
-->
CHANGELOG
## v2.0.0 - _October 18, 2018_
* Add support for `eth_signTypedData`. (#1102)
* Added `MetamaskSubprovider` to handle inconsistencies in Metamask's signing JSON RPC endpoints. (#1102)
* Removed `SignerType` (including `SignerType.Metamask`). Please use the `MetamaskSubprovider` to wrap `web3.currentProvider`. (#1102)
* Updated to use new modularized artifacts and the latest version of @0xproject/contract-wrappers (#1105)
* Make web3-provider-engine types a 'dependency' so it's available to users of the library (#1105)
* Export new `AssetData` type from types (#1131)
## v1.0.8 - _October 4, 2018_
* Dependencies updated
## v1.0.7 - _September 28, 2018_
* Dependencies updated
## v1.0.6 - _September 25, 2018_
* Dependencies updated
## v1.0.5 - _September 25, 2018_
* Dependencies updated
## v1.0.4 - _September 21, 2018_
* Dependencies updated
## v1.0.3 - _September 19, 2018_
* Drastically reduce the bundle size by removing unused parts of included contract artifacts.
## v1.0.2 - _September 18, 2018_
* Add ZRX & WETH mainnet contract addresses into the included artifacts
## v1.0.1 - _September 5, 2018_
* Dependencies updated
## v1.0.1-rc.6 - _August 27, 2018_
* Fix missing `BlockParamLiteral` type import issue
## v1.0.1-rc.5 - _Invalid date_
* Fix `main` and `types` package.json entries so that they point to the new location of index.d.ts and index.js
## v1.0.1-rc.4 - _August 24, 2018_
* Re-organize the exported interface of 0x.js. Remove the `ZeroEx` class, and instead export the same exports as `0x.js`'s sub-packages: `@0xproject/contract-wrappers`, `@0xproject/order-utils` and `@0xproject/order-watcher` (#963)
## v1.0.1-rc.3 - _August 14, 2018_
* Dependencies updated
* Update ecSignOrderHashAsync to return the signature as a string for immediate use in contracts (#914)
## v1.0.1-rc.2 - _July 26, 2018_
* Fixed bug caused by importing non-existent dep
## v1.0.1-rc.1 - _July 26, 2018_
* Dependencies updated
## v1.0.0 - _July 23, 2018_
* Dependencies updated
## v1.0.0-rc.2 - _July 19, 2018_
* Remove `zeroEx.assetData` and instead re-export it's static functions directly off `ZeroEx`
## v1.0.0-rc.1 - _July 19, 2018_
* Remove tokenRegistry wrapper (#863)
* Rename `zeroEx.token` to `zeroEx.erc20Token`, and add `zeroEx.erc721Token` (#863)
* Rename `zeroEx.proxy` to `zeroEx.erc20Proxy` and add `zeroEx.erc721Proxy` (#863)
* Refactored `ZeroEx.isValidSignature` to `zeroEx.isValidSignatureAsync`. It is now async so that it can verify contract-dependent signature types (#863)
* Refactored `signOrderHashAsync` to `ecSignOrderHashAsync`. There are now many non-ECSignature ways to sign orders too. (#863)
* Removed `createOrderWatcherAsync` method. Will be added back once OrderWatcher is refactored for V2 (#863)
* 0x.js exports renamed contract events and event arg types (#863)
* Export `ZeroEx.assetData` with methods to decode/encode assetData fields found in 0x orders (#884)
## v0.38.6 - _July 18, 2018_
* Dependencies updated
## v0.38.5 - _July 9, 2018_
* Dependencies updated
## v0.38.4 - _June 19, 2018_
* Dependencies updated
## v0.38.3 - _May 29, 2018_
* Dependencies updated
## v0.38.2 - _May 29, 2018_
* Dependencies updated
## v0.38.1 - _May 29, 2018_
* Dependencies updated
## v0.38.0 - _May 22, 2018_
* Renamed createOrderStateWatcher to createOrderWatcherAsync since it is now async (#579)
* Renamed ZeroExError to ContractWrappersErrors since they now lives in the @0xproject/contract-wrappers subpackage (#579)
## v0.37.2 - _May 4, 2018_
* Dependencies updated
## v0.37.1 - _May 4, 2018_
* Dependencies updated
## v0.37.0 - _May 4, 2018_
* Fixed expiration watcher comparator to handle orders with equal expiration times (#526)

View File

@@ -1,6 +1,6 @@
## 0x.js
A TypeScript/Javascript library for interacting with the 0x protocol.
A TypeScript/Javascript library for interacting with the 0x protocol. It is a high level package which combines a number of underlying packages such as order-utils and order-watcher.
### Read the [Documentation](https://0xproject.com/docs/0x.js).
@@ -19,14 +19,21 @@ npm install 0x.js --save
**Import**
```javascript
import { ZeroEx } from '0x.js';
import {
assetDataUtils,
BigNumber,
ContractWrappers,
generatePseudoRandomSalt,
orderHashUtils,
signatureUtils,
} from '0x.js';
```
If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`:
```json
"compilerOptions": {
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
"typeRoots": ["node_modules/@0x/typescript-typings/types", "node_modules/@types"],
}
```
@@ -44,7 +51,7 @@ Download the UMD module from our [releases page](https://github.com/0xProject/0x
## Contributing
We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.
We strongly recommend that the community help us make improvements and determine the future direction of 0x protocol. To report bugs within this package, please create an issue in this repository.
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
@@ -64,28 +71,16 @@ yarn install
### Build
If this is your **first** time building this package, you must first build **all** packages within the monorepo. This is because packages that depend on other packages located inside this monorepo are symlinked when run from **within** the monorepo. This allows you to make changes across multiple packages without first publishing dependent packages to NPM. To build all packages, run the following from the monorepo root directory:
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
```bash
yarn lerna:rebuild
PKG=0x.js yarn build
```
Or continuously rebuild on change:
```bash
yarn dev
```
You can also build this specific package by running the following from within its directory:
```bash
yarn build
```
or continuously rebuild on change:
```bash
yarn build:watch
PKG=0x.js yarn watch
```
### Clean

View File

@@ -1,6 +1,9 @@
{
"name": "0x.js",
"version": "0.36.3",
"version": "2.0.0",
"engines": {
"node": ">=6.12"
},
"description": "A javascript library for interacting with the 0x protocol",
"keywords": [
"0x.js",
@@ -9,47 +12,28 @@
"tokens",
"exchange"
],
"main": "lib/src/index.js",
"types": "lib/src/index.d.ts",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"scripts": {
"build:watch": "tsc -w",
"prebuild": "run-s clean generate_contract_wrappers",
"build": "run-p build:umd:prod build:commonjs; exit 0;",
"generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/compact_artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
"lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'",
"build": "yarn build:all",
"build:ci": "yarn build:commonjs",
"build:all": "run-p build:umd:prod build:commonjs",
"lint": "tslint --project . --exclude **/src/generated_contract_wrappers/**/*",
"test:circleci": "run-s test:coverage",
"test": "run-s clean test:commonjs",
"rebuild_and_test": "run-s build test",
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
"update_artifacts": "for i in ${npm_package_config_contracts}; do copyfiles -u 4 ../migrations/src/artifacts/$i.json test/artifacts; done;",
"clean": "shx rm -rf _bundles lib test_temp scripts",
"clean": "shx rm -rf _bundles lib test_temp src/generated_contract_wrappers generated_docs",
"build:umd:prod": "NODE_ENV=production webpack",
"build:commonjs": "tsc && yarn update_artifacts && copyfiles -u 2 './src/compact_artifacts/**/*.json' ./lib/src/compact_artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts",
"test:commonjs": "run-s build:commonjs run_mocha",
"run_mocha": "mocha lib/test/**/*_test.js lib/test/global_hooks.js --timeout 10000 --bail --exit",
"manual:postpublish": "yarn build; node ./scripts/postpublish.js",
"docs:stage": "yarn build && node ./scripts/stage_docs.js",
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_FILES",
"upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json"
"build:commonjs": "tsc -b",
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
},
"config": {
"compact_artifacts": "Exchange DummyToken ZRXToken Token EtherToken TokenTransferProxy TokenRegistry",
"contracts": "Exchange DummyToken ZRXToken Token WETH9 TokenTransferProxy MultiSigWallet MultiSigWalletWithTimeLock MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress MaliciousToken TokenRegistry Arbitrage EtherDelta AccountLevels",
"postpublish": {
"assets": [
"packages/0x.js/_bundles/index.js",
"packages/0x.js/_bundles/index.min.js"
],
"docPublishConfigs": {
"extraFileIncludes": [
"../types/src/index.ts",
"./src/contract_wrappers/generated/ether_token.ts",
"./src/contract_wrappers/generated/token.ts",
"./src/contract_wrappers/generated/exchange.ts"
],
"s3BucketPath": "s3://doc-jsons/0x.js/",
"s3StagingBucketPath": "s3://staging-doc-jsons/0x.js/"
}
]
}
},
"repository": {
@@ -57,64 +41,54 @@
"url": "https://github.com/0xProject/0x-monorepo"
},
"license": "Apache-2.0",
"engines": {
"node": ">=6.0.0"
},
"devDependencies": {
"@0xproject/deployer": "^0.4.1",
"@0xproject/dev-utils": "^0.3.6",
"@0xproject/migrations": "^0.0.3",
"@0xproject/monorepo-scripts": "^0.1.18",
"@0xproject/subproviders": "^0.9.0",
"@0xproject/tslint-config": "^0.4.16",
"@types/bintrees": "^1.0.2",
"@0x/abi-gen": "^1.0.14",
"@0x/abi-gen-wrappers": "^1.0.1",
"@0x/contract-addresses": "^1.0.1",
"@0x/dev-utils": "^1.0.13",
"@0x/migrations": "^2.0.0",
"@0x/monorepo-scripts": "^1.0.12",
"@0x/tslint-config": "^1.0.9",
"@types/lodash": "4.14.104",
"@types/mocha": "^2.2.42",
"@types/node": "^8.0.53",
"@types/request": "2.47.0",
"@types/node": "*",
"@types/sinon": "^2.2.2",
"@types/uuid": "^3.4.2",
"awesome-typescript-loader": "^3.1.3",
"awesome-typescript-loader": "^5.2.1",
"chai": "^4.0.1",
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^2.0.1",
"copyfiles": "^1.2.0",
"copyfiles": "^2.0.0",
"dirty-chai": "^2.0.1",
"json-loader": "^0.5.4",
"mocha": "^4.0.1",
"make-promises-safe": "^1.1.0",
"mocha": "^4.1.0",
"npm-run-all": "^4.1.2",
"nyc": "^11.0.1",
"opn-cli": "^3.1.0",
"prettier": "^1.11.1",
"request": "^2.81.0",
"shx": "^0.2.2",
"sinon": "^4.0.0",
"source-map-support": "^0.5.0",
"tslint": "5.8.0",
"typedoc": "0xProject/typedoc",
"typescript": "2.7.1",
"web3-provider-engine": "^14.0.4",
"webpack": "^3.1.0"
"tslint": "5.11.0",
"typedoc": "0.13.0",
"typescript": "3.0.1",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "^4.20.2"
},
"dependencies": {
"@0xproject/assert": "^0.2.7",
"@0xproject/base-contract": "^0.2.1",
"@0xproject/json-schemas": "^0.7.21",
"@0xproject/types": "^0.6.1",
"@0xproject/typescript-typings": "^0.2.0",
"@0xproject/utils": "^0.5.2",
"@0xproject/order-utils": "^0.0.1",
"@0xproject/web3-wrapper": "^0.6.1",
"bintrees": "^1.0.2",
"bn.js": "^4.11.8",
"ethereumjs-abi": "^0.6.4",
"ethereumjs-blockstream": "^2.0.6",
"ethereumjs-util": "^5.1.1",
"ethers": "^3.0.15",
"js-sha3": "^0.7.0",
"lodash": "^4.17.4",
"uuid": "^3.1.0",
"web3": "^0.20.0"
"@0x/assert": "^1.0.14",
"@0x/base-contract": "^3.0.2",
"@0x/contract-wrappers": "^3.0.0",
"@0x/order-utils": "^2.0.0",
"@0x/order-watcher": "^2.2.0",
"@0x/subproviders": "^2.1.0",
"@0x/types": "^1.2.0",
"@0x/typescript-typings": "^3.0.3",
"@0x/utils": "^2.0.3",
"@0x/web3-wrapper": "^3.1.0",
"@types/web3-provider-engine": "^14.0.0",
"ethereum-types": "^1.1.1",
"ethers": "~4.0.4",
"lodash": "^4.17.5",
"web3-provider-engine": "14.0.6"
},
"publishConfig": {
"access": "public"

View File

@@ -1,270 +0,0 @@
import { schemas, SchemaValidator } from '@0xproject/json-schemas';
import {
generatePseudoRandomSalt,
getOrderHashHex,
isValidOrderHash,
isValidSignature,
signOrderHashAsync,
} from '@0xproject/order-utils';
import { ECSignature, Order, Provider, SignedOrder, TransactionReceiptWithDecodedLogs } from '@0xproject/types';
import { AbiDecoder, BigNumber, intervalUtils } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as ethUtil from 'ethereumjs-util';
import * as _ from 'lodash';
import { artifacts } from './artifacts';
import { EtherTokenWrapper } from './contract_wrappers/ether_token_wrapper';
import { ExchangeWrapper } from './contract_wrappers/exchange_wrapper';
import { TokenRegistryWrapper } from './contract_wrappers/token_registry_wrapper';
import { TokenTransferProxyWrapper } from './contract_wrappers/token_transfer_proxy_wrapper';
import { TokenWrapper } from './contract_wrappers/token_wrapper';
import { OrderStateWatcher } from './order_watcher/order_state_watcher';
import { zeroExConfigSchema } from './schemas/zero_ex_config_schema';
import { zeroExPrivateNetworkConfigSchema } from './schemas/zero_ex_private_network_config_schema';
import { zeroExPublicNetworkConfigSchema } from './schemas/zero_ex_public_network_config_schema';
import { OrderStateWatcherConfig, ZeroExConfig, ZeroExError } from './types';
import { assert } from './utils/assert';
import { constants } from './utils/constants';
import { decorators } from './utils/decorators';
import { utils } from './utils/utils';
/**
* The ZeroEx class is the single entry-point into the 0x.js library. It contains all of the library's functionality
* and all calls to the library should be made through a ZeroEx instance.
*/
export class ZeroEx {
/**
* When creating an order without a specified taker or feeRecipient you must supply the Solidity
* address null type (as opposed to Javascripts `null`, `undefined` or empty string). We expose
* this constant for your convenience.
*/
public static NULL_ADDRESS = constants.NULL_ADDRESS;
/**
* An instance of the ExchangeWrapper class containing methods for interacting with the 0x Exchange smart contract.
*/
public exchange: ExchangeWrapper;
/**
* An instance of the TokenRegistryWrapper class containing methods for interacting with the 0x
* TokenRegistry smart contract.
*/
public tokenRegistry: TokenRegistryWrapper;
/**
* An instance of the TokenWrapper class containing methods for interacting with any ERC20 token smart contract.
*/
public token: TokenWrapper;
/**
* An instance of the EtherTokenWrapper class containing methods for interacting with the
* wrapped ETH ERC20 token smart contract.
*/
public etherToken: EtherTokenWrapper;
/**
* An instance of the TokenTransferProxyWrapper class containing methods for interacting with the
* tokenTransferProxy smart contract.
*/
public proxy: TokenTransferProxyWrapper;
private _web3Wrapper: Web3Wrapper;
/**
* Generates a pseudo-random 256-bit salt.
* The salt can be included in a 0x order, ensuring that the order generates a unique orderHash
* and will not collide with other outstanding orders that are identical in all other parameters.
* @return A pseudo-random 256-bit number that can be used as a salt.
*/
public static generatePseudoRandomSalt(): BigNumber {
return generatePseudoRandomSalt();
}
/**
* Verifies that the elliptic curve signature `signature` was generated
* by signing `data` with the private key corresponding to the `signerAddress` address.
* @param data The hex encoded data signed by the supplied signature.
* @param signature An object containing the elliptic curve signature parameters.
* @param signerAddress The hex encoded address that signed the data, producing the supplied signature.
* @return Whether the signature is valid for the supplied signerAddress and data.
*/
public static isValidSignature(data: string, signature: ECSignature, signerAddress: string): boolean {
return isValidSignature(data, signature, signerAddress);
}
/**
* Computes the orderHash for a supplied order.
* @param order An object that conforms to the Order or SignedOrder interface definitions.
* @return The resulting orderHash from hashing the supplied order.
*/
public static getOrderHashHex(order: Order | SignedOrder): string {
return getOrderHashHex(order);
}
/**
* Checks if the supplied hex encoded order hash is valid.
* Note: Valid means it has the expected format, not that an order with the orderHash exists.
* Use this method when processing orderHashes submitted as user input.
* @param orderHash Hex encoded orderHash.
* @return Whether the supplied orderHash has the expected format.
*/
public static isValidOrderHash(orderHash: string): boolean {
return isValidOrderHash(orderHash);
}
/**
* A unit amount is defined as the amount of a token above the specified decimal places (integer part).
* E.g: If a currency has 18 decimal places, 1e18 or one quintillion of the currency is equivalent
* to 1 unit.
* @param amount The amount in baseUnits that you would like converted to units.
* @param decimals The number of decimal places the unit amount has.
* @return The amount in units.
*/
public static toUnitAmount(amount: BigNumber, decimals: number): BigNumber {
assert.isValidBaseUnitAmount('amount', amount);
assert.isNumber('decimals', decimals);
const unitAmount = Web3Wrapper.toUnitAmount(amount, decimals);
return unitAmount;
}
/**
* A baseUnit is defined as the smallest denomination of a token. An amount expressed in baseUnits
* is the amount expressed in the smallest denomination.
* E.g: 1 unit of a token with 18 decimal places is expressed in baseUnits as 1000000000000000000
* @param amount The amount of units that you would like converted to baseUnits.
* @param decimals The number of decimal places the unit amount has.
* @return The amount in baseUnits.
*/
public static toBaseUnitAmount(amount: BigNumber, decimals: number): BigNumber {
assert.isBigNumber('amount', amount);
assert.isNumber('decimals', decimals);
const baseUnitAmount = Web3Wrapper.toBaseUnitAmount(amount, decimals);
return baseUnitAmount;
}
/**
* Instantiates a new ZeroEx instance that provides the public interface to the 0x.js library.
* @param provider The Provider instance you would like the 0x.js library to use for interacting with
* the Ethereum network.
* @param config The configuration object. Look up the type for the description.
* @return An instance of the 0x.js ZeroEx class.
*/
constructor(provider: Provider, config: ZeroExConfig) {
assert.isWeb3Provider('provider', provider);
assert.doesConformToSchema('config', config, zeroExConfigSchema, [
zeroExPrivateNetworkConfigSchema,
zeroExPublicNetworkConfigSchema,
]);
const artifactJSONs = _.values(artifacts);
const abiArrays = _.map(artifactJSONs, artifact => artifact.abi);
const defaults = {
gasPrice: config.gasPrice,
};
this._web3Wrapper = new Web3Wrapper(provider, defaults);
_.forEach(abiArrays, abi => {
this._web3Wrapper.abiDecoder.addABI(abi);
});
this.proxy = new TokenTransferProxyWrapper(
this._web3Wrapper,
config.networkId,
config.tokenTransferProxyContractAddress,
);
this.token = new TokenWrapper(this._web3Wrapper, config.networkId, this.proxy);
this.exchange = new ExchangeWrapper(
this._web3Wrapper,
config.networkId,
this.token,
config.exchangeContractAddress,
config.zrxContractAddress,
);
this.tokenRegistry = new TokenRegistryWrapper(
this._web3Wrapper,
config.networkId,
config.tokenRegistryContractAddress,
);
this.etherToken = new EtherTokenWrapper(this._web3Wrapper, config.networkId, this.token);
}
/**
* Sets a new web3 provider for 0x.js. Updating the provider will stop all
* subscriptions so you will need to re-subscribe to all events relevant to your app after this call.
* @param provider The Web3Provider you would like the 0x.js library to use from now on.
* @param networkId The id of the network your provider is connected to
*/
public setProvider(provider: Provider, networkId: number): void {
this._web3Wrapper.setProvider(provider);
(this.exchange as any)._invalidateContractInstances();
(this.exchange as any)._setNetworkId(networkId);
(this.tokenRegistry as any)._invalidateContractInstance();
(this.tokenRegistry as any)._setNetworkId(networkId);
(this.token as any)._invalidateContractInstances();
(this.token as any)._setNetworkId(networkId);
(this.proxy as any)._invalidateContractInstance();
(this.proxy as any)._setNetworkId(networkId);
(this.etherToken as any)._invalidateContractInstance();
(this.etherToken as any)._setNetworkId(networkId);
}
/**
* Get the provider instance currently used by 0x.js
* @return Web3 provider instance
*/
public getProvider(): Provider {
return this._web3Wrapper.getProvider();
}
/**
* Get user Ethereum addresses available through the supplied web3 provider available for sending transactions.
* @return An array of available user Ethereum addresses.
*/
public async getAvailableAddressesAsync(): Promise<string[]> {
const availableAddresses = await this._web3Wrapper.getAvailableAddressesAsync();
return availableAddresses;
}
/**
* Signs an orderHash and returns it's elliptic curve signature.
* This method currently supports TestRPC, Geth and Parity above and below V1.6.6
* @param orderHash Hex encoded orderHash to sign.
* @param signerAddress The hex encoded Ethereum address you wish to sign it with. This address
* must be available via the Provider supplied to 0x.js.
* @param shouldAddPersonalMessagePrefix Some signers add the personal message prefix `\x19Ethereum Signed Message`
* themselves (e.g Parity Signer, Ledger, TestRPC) and others expect it to already be done by the client
* (e.g Metamask). Depending on which signer this request is going to, decide on whether to add the prefix
* before sending the request.
* @return An object containing the Elliptic curve signature parameters generated by signing the orderHash.
*/
public async signOrderHashAsync(
orderHash: string,
signerAddress: string,
shouldAddPersonalMessagePrefix: boolean,
): Promise<ECSignature> {
return signOrderHashAsync(
this._web3Wrapper.getProvider(),
orderHash,
signerAddress,
shouldAddPersonalMessagePrefix,
);
}
/**
* Waits for a transaction to be mined and returns the transaction receipt.
* @param txHash Transaction hash
* @param pollingIntervalMs How often (in ms) should we check if the transaction is mined.
* @param timeoutMs How long (in ms) to poll for transaction mined until aborting.
* @return Transaction receipt with decoded log args.
*/
public async awaitTransactionMinedAsync(
txHash: string,
pollingIntervalMs = 1000,
timeoutMs?: number,
): Promise<TransactionReceiptWithDecodedLogs> {
const transactionReceiptWithDecodedLogs = await this._web3Wrapper.awaitTransactionMinedAsync(
txHash,
pollingIntervalMs,
timeoutMs,
);
return transactionReceiptWithDecodedLogs;
}
/**
* Instantiates and returns a new OrderStateWatcher instance.
* Defaults to watching the pending state.
* @param config The configuration object. Look up the type for the description.
* @return An instance of the 0x.js OrderStateWatcher class.
*/
public createOrderStateWatcher(config?: OrderStateWatcherConfig) {
return new OrderStateWatcher(this._web3Wrapper, this.token, this.exchange, config);
}
/*
* HACK: `TokenWrapper` needs a token transfer proxy address. `TokenTransferProxy` address is fetched from
* an `ExchangeWrapper`. `ExchangeWrapper` needs `TokenWrapper` to validate orders, creating a dependency cycle.
* In order to break this - we create this function here and pass it as a parameter to the `TokenWrapper`
* and `ProxyWrapper`.
*/
private async _getTokenTransferProxyAddressAsync(): Promise<string> {
const tokenTransferProxyAddress = await (this.exchange as any)._getTokenTransferProxyAddressAsync();
return tokenTransferProxyAddress;
}
}

View File

@@ -1,6 +0,0 @@
import { BigNumber } from '@0xproject/utils';
export abstract class BalanceAndProxyAllowanceFetcher {
public abstract async getBalanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber>;
public abstract async getProxyAllowanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber>;
}

View File

@@ -1,6 +0,0 @@
import { BigNumber } from '@0xproject/utils';
export abstract class OrderFilledCancelledFetcher {
public abstract async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
public abstract async getCancelledTakerAmountAsync(orderHash: string): Promise<BigNumber>;
}

View File

@@ -1,18 +0,0 @@
import * as DummyTokenArtifact from './compact_artifacts/DummyToken.json';
import * as EtherTokenArtifact from './compact_artifacts/EtherToken.json';
import * as ExchangeArtifact from './compact_artifacts/Exchange.json';
import * as TokenArtifact from './compact_artifacts/Token.json';
import * as TokenRegistryArtifact from './compact_artifacts/TokenRegistry.json';
import * as TokenTransferProxyArtifact from './compact_artifacts/TokenTransferProxy.json';
import * as ZRXArtifact from './compact_artifacts/ZRX.json';
import { Artifact } from './types';
export const artifacts = {
ZRXArtifact: (ZRXArtifact as any) as Artifact,
DummyTokenArtifact: (DummyTokenArtifact as any) as Artifact,
TokenArtifact: (TokenArtifact as any) as Artifact,
ExchangeArtifact: (ExchangeArtifact as any) as Artifact,
EtherTokenArtifact: (EtherTokenArtifact as any) as Artifact,
TokenRegistryArtifact: (TokenRegistryArtifact as any) as Artifact,
TokenTransferProxyArtifact: (TokenTransferProxyArtifact as any) as Artifact,
};

View File

@@ -1,22 +0,0 @@
{
"contract_name": "DummyToken",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_target",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "setBalance",
"outputs": [],
"payable": false,
"type": "function"
}
]
}

View File

@@ -1,287 +0,0 @@
{
"contract_name": "EtherToken",
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "deposit",
"outputs": [],
"payable": true,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"payable": true,
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Withdrawal",
"type": "event"
}
],
"networks": {
"1": {
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
"3": {
"address": "0xc00fd9820cd2898cc4c054b7bf142de637ad129a"
},
"4": {
"address": "0xc778417e063141139fce010982780140aa0cd5ab"
},
"42": {
"address": "0x653e49e301e508a13237c0ddc98ae7d4cd2667a1"
},
"50": {
"address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c"
}
}
}

View File

@@ -1,610 +0,0 @@
{
"contract_name": "Exchange",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "isRoundingError",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "filled",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "cancelled",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5][]"
},
{
"name": "orderValues",
"type": "uint256[6][]"
},
{
"name": "fillTakerTokenAmount",
"type": "uint256"
},
{
"name": "shouldThrowOnInsufficientBalanceOrAllowance",
"type": "bool"
},
{
"name": "v",
"type": "uint8[]"
},
{
"name": "r",
"type": "bytes32[]"
},
{
"name": "s",
"type": "bytes32[]"
}
],
"name": "fillOrdersUpTo",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5]"
},
{
"name": "orderValues",
"type": "uint256[6]"
},
{
"name": "cancelTakerTokenAmount",
"type": "uint256"
}
],
"name": "cancelOrder",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ZRX_TOKEN_CONTRACT",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5][]"
},
{
"name": "orderValues",
"type": "uint256[6][]"
},
{
"name": "fillTakerTokenAmounts",
"type": "uint256[]"
},
{
"name": "v",
"type": "uint8[]"
},
{
"name": "r",
"type": "bytes32[]"
},
{
"name": "s",
"type": "bytes32[]"
}
],
"name": "batchFillOrKillOrders",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5]"
},
{
"name": "orderValues",
"type": "uint256[6]"
},
{
"name": "fillTakerTokenAmount",
"type": "uint256"
},
{
"name": "v",
"type": "uint8"
},
{
"name": "r",
"type": "bytes32"
},
{
"name": "s",
"type": "bytes32"
}
],
"name": "fillOrKillOrder",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "orderHash",
"type": "bytes32"
}
],
"name": "getUnavailableTakerTokenAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "signer",
"type": "address"
},
{
"name": "hash",
"type": "bytes32"
},
{
"name": "v",
"type": "uint8"
},
{
"name": "r",
"type": "bytes32"
},
{
"name": "s",
"type": "bytes32"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "numerator",
"type": "uint256"
},
{
"name": "denominator",
"type": "uint256"
},
{
"name": "target",
"type": "uint256"
}
],
"name": "getPartialAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "TOKEN_TRANSFER_PROXY_CONTRACT",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5][]"
},
{
"name": "orderValues",
"type": "uint256[6][]"
},
{
"name": "fillTakerTokenAmounts",
"type": "uint256[]"
},
{
"name": "shouldThrowOnInsufficientBalanceOrAllowance",
"type": "bool"
},
{
"name": "v",
"type": "uint8[]"
},
{
"name": "r",
"type": "bytes32[]"
},
{
"name": "s",
"type": "bytes32[]"
}
],
"name": "batchFillOrders",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5][]"
},
{
"name": "orderValues",
"type": "uint256[6][]"
},
{
"name": "cancelTakerTokenAmounts",
"type": "uint256[]"
}
],
"name": "batchCancelOrders",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5]"
},
{
"name": "orderValues",
"type": "uint256[6]"
},
{
"name": "fillTakerTokenAmount",
"type": "uint256"
},
{
"name": "shouldThrowOnInsufficientBalanceOrAllowance",
"type": "bool"
},
{
"name": "v",
"type": "uint8"
},
{
"name": "r",
"type": "bytes32"
},
{
"name": "s",
"type": "bytes32"
}
],
"name": "fillOrder",
"outputs": [
{
"name": "filledTakerTokenAmount",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "orderAddresses",
"type": "address[5]"
},
{
"name": "orderValues",
"type": "uint256[6]"
}
],
"name": "getOrderHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EXTERNAL_QUERY_GAS_LIMIT",
"outputs": [
{
"name": "",
"type": "uint16"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"inputs": [
{
"name": "_zrxToken",
"type": "address"
},
{
"name": "_tokenTransferProxy",
"type": "address"
}
],
"payable": false,
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "maker",
"type": "address"
},
{
"indexed": false,
"name": "taker",
"type": "address"
},
{
"indexed": true,
"name": "feeRecipient",
"type": "address"
},
{
"indexed": false,
"name": "makerToken",
"type": "address"
},
{
"indexed": false,
"name": "takerToken",
"type": "address"
},
{
"indexed": false,
"name": "filledMakerTokenAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "filledTakerTokenAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "paidMakerFee",
"type": "uint256"
},
{
"indexed": false,
"name": "paidTakerFee",
"type": "uint256"
},
{
"indexed": true,
"name": "tokens",
"type": "bytes32"
},
{
"indexed": false,
"name": "orderHash",
"type": "bytes32"
}
],
"name": "LogFill",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "maker",
"type": "address"
},
{
"indexed": true,
"name": "feeRecipient",
"type": "address"
},
{
"indexed": false,
"name": "makerToken",
"type": "address"
},
{
"indexed": false,
"name": "takerToken",
"type": "address"
},
{
"indexed": false,
"name": "cancelledMakerTokenAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "cancelledTakerTokenAmount",
"type": "uint256"
},
{
"indexed": true,
"name": "tokens",
"type": "bytes32"
},
{
"indexed": false,
"name": "orderHash",
"type": "bytes32"
}
],
"name": "LogCancel",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "errorId",
"type": "uint8"
},
{
"indexed": true,
"name": "orderHash",
"type": "bytes32"
}
],
"name": "LogError",
"type": "event"
}
],
"networks": {
"1": {
"address": "0x12459c951127e0c374ff9105dda097662a027093"
},
"3": {
"address": "0x479cc461fecd078f766ecc58533d6f69580cf3ac"
},
"4": {
"address": "0x1d16ef40fac01cec8adac2ac49427b9384192c05"
},
"42": {
"address": "0x90fe2af704b34e0224bf2299c838e04d4dcf1364"
},
"50": {
"address": "0x48bacb9266a570d521063ef5dd96e61686dbe788"
}
}
}

View File

@@ -1,172 +0,0 @@
{
"contract_name": "Token",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "supply",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
]
}

View File

@@ -1,547 +0,0 @@
{
"contract_name": "TokenRegistry",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_index",
"type": "uint256"
}
],
"name": "removeToken",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_name",
"type": "string"
}
],
"name": "getTokenAddressByName",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_symbol",
"type": "string"
}
],
"name": "getTokenAddressBySymbol",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_swarmHash",
"type": "bytes"
}
],
"name": "setTokenSwarmHash",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "getTokenMetaData",
"outputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "uint8"
},
{
"name": "",
"type": "bytes"
},
{
"name": "",
"type": "bytes"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_symbol",
"type": "string"
},
{
"name": "_decimals",
"type": "uint8"
},
{
"name": "_ipfsHash",
"type": "bytes"
},
{
"name": "_swarmHash",
"type": "bytes"
}
],
"name": "addToken",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_name",
"type": "string"
}
],
"name": "setTokenName",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "tokens",
"outputs": [
{
"name": "token",
"type": "address"
},
{
"name": "name",
"type": "string"
},
{
"name": "symbol",
"type": "string"
},
{
"name": "decimals",
"type": "uint8"
},
{
"name": "ipfsHash",
"type": "bytes"
},
{
"name": "swarmHash",
"type": "bytes"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "tokenAddresses",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_name",
"type": "string"
}
],
"name": "getTokenByName",
"outputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "uint8"
},
{
"name": "",
"type": "bytes"
},
{
"name": "",
"type": "bytes"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getTokenAddresses",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_ipfsHash",
"type": "bytes"
}
],
"name": "setTokenIpfsHash",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_symbol",
"type": "string"
}
],
"name": "getTokenBySymbol",
"outputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "string"
},
{
"name": "",
"type": "uint8"
},
{
"name": "",
"type": "bytes"
},
{
"name": "",
"type": "bytes"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_symbol",
"type": "string"
}
],
"name": "setTokenSymbol",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "name",
"type": "string"
},
{
"indexed": false,
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"name": "decimals",
"type": "uint8"
},
{
"indexed": false,
"name": "ipfsHash",
"type": "bytes"
},
{
"indexed": false,
"name": "swarmHash",
"type": "bytes"
}
],
"name": "LogAddToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "name",
"type": "string"
},
{
"indexed": false,
"name": "symbol",
"type": "string"
},
{
"indexed": false,
"name": "decimals",
"type": "uint8"
},
{
"indexed": false,
"name": "ipfsHash",
"type": "bytes"
},
{
"indexed": false,
"name": "swarmHash",
"type": "bytes"
}
],
"name": "LogRemoveToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "oldName",
"type": "string"
},
{
"indexed": false,
"name": "newName",
"type": "string"
}
],
"name": "LogTokenNameChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "oldSymbol",
"type": "string"
},
{
"indexed": false,
"name": "newSymbol",
"type": "string"
}
],
"name": "LogTokenSymbolChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "oldIpfsHash",
"type": "bytes"
},
{
"indexed": false,
"name": "newIpfsHash",
"type": "bytes"
}
],
"name": "LogTokenIpfsHashChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "oldSwarmHash",
"type": "bytes"
},
{
"indexed": false,
"name": "newSwarmHash",
"type": "bytes"
}
],
"name": "LogTokenSwarmHashChange",
"type": "event"
}
],
"networks": {
"1": {
"address": "0x926a74c5c36adf004c87399e65f75628b0f98d2c"
},
"3": {
"address": "0x6b1a50f0bb5a7995444bd3877b22dc89c62843ed"
},
"4": {
"address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6"
},
"42": {
"address": "0xf18e504561f4347bea557f3d4558f559dddbae7f"
},
"50": {
"address": "0x0b1ba0af832d7c05fd64161e0db78e85978e8082"
}
}
}

View File

@@ -1,187 +0,0 @@
{
"contract_name": "TokenTransferProxy",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "token",
"type": "address"
},
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "target",
"type": "address"
}
],
"name": "addAuthorizedAddress",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "authorities",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "target",
"type": "address"
}
],
"name": "removeAuthorizedAddress",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "authorized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getAuthorizedAddresses",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "target",
"type": "address"
},
{
"indexed": true,
"name": "caller",
"type": "address"
}
],
"name": "LogAuthorizedAddressAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "target",
"type": "address"
},
{
"indexed": true,
"name": "caller",
"type": "address"
}
],
"name": "LogAuthorizedAddressRemoved",
"type": "event"
}
],
"networks": {
"1": {
"address": "0x8da0d80f5007ef1e431dd2127178d224e32c2ef4"
},
"3": {
"address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6"
},
"4": {
"address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d"
},
"42": {
"address": "0x087eed4bc1ee3de49befbd66c662b434b15d49d4"
},
"50": {
"address": "0x1dc4c1cefef38a777b15aa20260a54e584b16c48"
}
}
}

View File

@@ -1,20 +0,0 @@
{
"contract_name": "ZRX",
"networks": {
"1": {
"address": "0xe41d2489571d322189246dafa5ebde1f4699f498"
},
"3": {
"address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d"
},
"4": {
"address": "0x00f58d6d585f84b2d7267940cede30ce2fe6eae8"
},
"42": {
"address": "0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570"
},
"50": {
"address": "0x1d7022f5b17d2f8b695918fb48fa1089c9f85401"
}
}
}

View File

@@ -1,964 +0,0 @@
import { schemas } from '@0xproject/json-schemas';
import { getOrderHashHex } from '@0xproject/order-utils';
import {
BlockParamLiteral,
DecodedLogArgs,
ECSignature,
LogEntry,
LogWithDecodedArgs,
Order,
SignedOrder,
} from '@0xproject/types';
import { AbiDecoder, BigNumber } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { artifacts } from '../artifacts';
import { SimpleBalanceAndProxyAllowanceFetcher } from '../fetchers/simple_balance_and_proxy_allowance_fetcher';
import { SimpleOrderFilledCancelledFetcher } from '../fetchers/simple_order_filled_cancelled_fetcher';
import {
BlockRange,
EventCallback,
ExchangeContractErrCodes,
ExchangeContractErrs,
IndexedFilterValues,
MethodOpts,
OrderAddresses,
OrderCancellationRequest,
OrderFillRequest,
OrderState,
OrderTransactionOpts,
OrderValues,
ValidateOrderFillableOpts,
} from '../types';
import { assert } from '../utils/assert';
import { decorators } from '../utils/decorators';
import { ExchangeTransferSimulator } from '../utils/exchange_transfer_simulator';
import { OrderStateUtils } from '../utils/order_state_utils';
import { OrderValidationUtils } from '../utils/order_validation_utils';
import { utils } from '../utils/utils';
import { ContractWrapper } from './contract_wrapper';
import {
ExchangeContract,
ExchangeContractEventArgs,
ExchangeEvents,
LogErrorContractEventArgs,
} from './generated/exchange';
import { TokenWrapper } from './token_wrapper';
const SHOULD_VALIDATE_BY_DEFAULT = true;
interface ExchangeContractErrCodesToMsgs {
[exchangeContractErrCodes: number]: string;
}
/**
* This class includes all the functionality related to calling methods and subscribing to
* events of the 0x Exchange smart contract.
*/
export class ExchangeWrapper extends ContractWrapper {
private _exchangeContractIfExists?: ExchangeContract;
private _orderValidationUtils: OrderValidationUtils;
private _tokenWrapper: TokenWrapper;
private _exchangeContractErrCodesToMsg: ExchangeContractErrCodesToMsgs = {
[ExchangeContractErrCodes.ERROR_FILL_EXPIRED]: ExchangeContractErrs.OrderFillExpired,
[ExchangeContractErrCodes.ERROR_CANCEL_EXPIRED]: ExchangeContractErrs.OrderFillExpired,
[ExchangeContractErrCodes.ERROR_FILL_NO_VALUE]: ExchangeContractErrs.OrderRemainingFillAmountZero,
[ExchangeContractErrCodes.ERROR_CANCEL_NO_VALUE]: ExchangeContractErrs.OrderRemainingFillAmountZero,
[ExchangeContractErrCodes.ERROR_FILL_TRUNCATION]: ExchangeContractErrs.OrderFillRoundingError,
[ExchangeContractErrCodes.ERROR_FILL_BALANCE_ALLOWANCE]: ExchangeContractErrs.FillBalanceAllowanceError,
};
private _contractAddressIfExists?: string;
private _zrxContractAddressIfExists?: string;
private static _getOrderAddressesAndValues(order: Order): [OrderAddresses, OrderValues] {
const orderAddresses: OrderAddresses = [
order.maker,
order.taker,
order.makerTokenAddress,
order.takerTokenAddress,
order.feeRecipient,
];
const orderValues: OrderValues = [
order.makerTokenAmount,
order.takerTokenAmount,
order.makerFee,
order.takerFee,
order.expirationUnixTimestampSec,
order.salt,
];
return [orderAddresses, orderValues];
}
constructor(
web3Wrapper: Web3Wrapper,
networkId: number,
tokenWrapper: TokenWrapper,
contractAddressIfExists?: string,
zrxContractAddressIfExists?: string,
) {
super(web3Wrapper, networkId);
this._tokenWrapper = tokenWrapper;
this._orderValidationUtils = new OrderValidationUtils(this);
this._contractAddressIfExists = contractAddressIfExists;
this._zrxContractAddressIfExists = zrxContractAddressIfExists;
}
/**
* Returns the unavailable takerAmount of an order. Unavailable amount is defined as the total
* amount that has been filled or cancelled. The remaining takerAmount can be calculated by
* subtracting the unavailable amount from the total order takerAmount.
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
* unavailable takerAmount.
* @param methodOpts Optional arguments this method accepts.
* @return The amount of the order (in taker tokens) that has either been filled or cancelled.
*/
public async getUnavailableTakerAmountAsync(orderHash: string, methodOpts?: MethodOpts): Promise<BigNumber> {
assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema);
const exchangeContract = await this._getExchangeContractAsync();
const defaultBlock = _.isUndefined(methodOpts) ? undefined : methodOpts.defaultBlock;
const txData = {};
let unavailableTakerTokenAmount = await exchangeContract.getUnavailableTakerTokenAmount.callAsync(
orderHash,
txData,
defaultBlock,
);
// Wrap BigNumbers returned from web3 with our own (later) version of BigNumber
unavailableTakerTokenAmount = new BigNumber(unavailableTakerTokenAmount);
return unavailableTakerTokenAmount;
}
/**
* Retrieve the takerAmount of an order that has already been filled.
* @param orderHash The hex encoded orderHash for which you would like to retrieve the filled takerAmount.
* @param methodOpts Optional arguments this method accepts.
* @return The amount of the order (in taker tokens) that has already been filled.
*/
public async getFilledTakerAmountAsync(orderHash: string, methodOpts?: MethodOpts): Promise<BigNumber> {
assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema);
const exchangeContract = await this._getExchangeContractAsync();
const defaultBlock = _.isUndefined(methodOpts) ? undefined : methodOpts.defaultBlock;
const txData = {};
let fillAmountInBaseUnits = await exchangeContract.filled.callAsync(orderHash, txData, defaultBlock);
// Wrap BigNumbers returned from web3 with our own (later) version of BigNumber
fillAmountInBaseUnits = new BigNumber(fillAmountInBaseUnits);
return fillAmountInBaseUnits;
}
/**
* Retrieve the takerAmount of an order that has been cancelled.
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
* cancelled takerAmount.
* @param methodOpts Optional arguments this method accepts.
* @return The amount of the order (in taker tokens) that has been cancelled.
*/
public async getCancelledTakerAmountAsync(orderHash: string, methodOpts?: MethodOpts): Promise<BigNumber> {
assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema);
const exchangeContract = await this._getExchangeContractAsync();
const defaultBlock = _.isUndefined(methodOpts) ? undefined : methodOpts.defaultBlock;
const txData = {};
let cancelledAmountInBaseUnits = await exchangeContract.cancelled.callAsync(orderHash, txData, defaultBlock);
// Wrap BigNumbers returned from web3 with our own (later) version of BigNumber
cancelledAmountInBaseUnits = new BigNumber(cancelledAmountInBaseUnits);
return cancelledAmountInBaseUnits;
}
/**
* Fills a signed order with an amount denominated in baseUnits of the taker token.
* Since the order in which transactions are included in the next block is indeterminate, race-conditions
* could arise where a users balance or allowance changes before the fillOrder executes. Because of this,
* we allow you to specify `shouldThrowOnInsufficientBalanceOrAllowance`.
* If false, the smart contract will not throw if the parties
* do not have sufficient balances/allowances, preserving gas costs. Setting it to true forgoes this check
* and causes the smart contract to throw (using all the gas supplied) instead.
* @param signedOrder An object that conforms to the SignedOrder interface.
* @param fillTakerTokenAmount The amount of the order (in taker tokens baseUnits) that
* you wish to fill.
* @param shouldThrowOnInsufficientBalanceOrAllowance Whether or not you wish for the contract call to throw
* if upon execution the tokens cannot be transferred.
* @param takerAddress The user Ethereum address who would like to fill this order.
* Must be available via the supplied Provider
* passed to 0x.js.
* @param orderTransactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async fillOrderAsync(
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
shouldThrowOnInsufficientBalanceOrAllowance: boolean,
takerAddress: string,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const exchangeInstance = await this._getExchangeContractAsync();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
await this._orderValidationUtils.validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(signedOrder);
const txHash: string = await exchangeInstance.fillOrder.sendTransactionAsync(
orderAddresses,
orderValues,
fillTakerTokenAmount,
shouldThrowOnInsufficientBalanceOrAllowance,
signedOrder.ecSignature.v,
signedOrder.ecSignature.r,
signedOrder.ecSignature.s,
{
from: normalizedTakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Sequentially and atomically fills signedOrders up to the specified takerTokenFillAmount.
* If the fill amount is reached - it succeeds and does not fill the rest of the orders.
* If fill amount is not reached - it fills as much of the fill amount as possible and succeeds.
* @param signedOrders The array of signedOrders that you would like to fill until
* takerTokenFillAmount is reached.
* @param fillTakerTokenAmount The total amount of the takerTokens you would like to fill.
* @param shouldThrowOnInsufficientBalanceOrAllowance Whether or not you wish for the contract call to throw if
* upon execution any of the tokens cannot be transferred.
* If set to false, the call will continue to fill subsequent
* signedOrders even when some cannot be filled.
* @param takerAddress The user Ethereum address who would like to fill these
* orders. Must be available via the supplied Provider
* passed to 0x.js.
* @param orderTransactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async fillOrdersUpToAsync(
signedOrders: SignedOrder[],
fillTakerTokenAmount: BigNumber,
shouldThrowOnInsufficientBalanceOrAllowance: boolean,
takerAddress: string,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('signedOrders', signedOrders, schemas.signedOrdersSchema);
const takerTokenAddresses = _.map(signedOrders, signedOrder => signedOrder.takerTokenAddress);
assert.hasAtMostOneUniqueValue(
takerTokenAddresses,
ExchangeContractErrs.MultipleTakerTokensInFillUpToDisallowed,
);
const exchangeContractAddresses = _.map(signedOrders, signedOrder => signedOrder.exchangeContractAddress);
assert.hasAtMostOneUniqueValue(
exchangeContractAddresses,
ExchangeContractErrs.BatchOrdersMustHaveSameExchangeAddress,
);
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
let filledTakerTokenAmount = new BigNumber(0);
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
for (const signedOrder of signedOrders) {
const singleFilledTakerTokenAmount = await this._orderValidationUtils.validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount.minus(filledTakerTokenAmount),
normalizedTakerAddress,
zrxTokenAddress,
);
filledTakerTokenAmount = filledTakerTokenAmount.plus(singleFilledTakerTokenAmount);
if (filledTakerTokenAmount.eq(fillTakerTokenAmount)) {
break;
}
}
}
if (_.isEmpty(signedOrders)) {
throw new Error(ExchangeContractErrs.BatchOrdersMustHaveAtLeastOneItem);
}
const orderAddressesValuesAndSignatureArray = _.map(signedOrders, signedOrder => {
return [
...ExchangeWrapper._getOrderAddressesAndValues(signedOrder),
signedOrder.ecSignature.v,
signedOrder.ecSignature.r,
signedOrder.ecSignature.s,
];
});
// We use _.unzip<any> because _.unzip doesn't type check if values have different types :'(
const [orderAddressesArray, orderValuesArray, vArray, rArray, sArray] = _.unzip<any>(
orderAddressesValuesAndSignatureArray,
);
const exchangeInstance = await this._getExchangeContractAsync();
const txHash = await exchangeInstance.fillOrdersUpTo.sendTransactionAsync(
orderAddressesArray,
orderValuesArray,
fillTakerTokenAmount,
shouldThrowOnInsufficientBalanceOrAllowance,
vArray,
rArray,
sArray,
{
from: normalizedTakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Batch version of fillOrderAsync.
* Executes multiple fills atomically in a single transaction.
* If shouldThrowOnInsufficientBalanceOrAllowance is set to false, it will continue filling subsequent orders even
* when earlier ones fail.
* When shouldThrowOnInsufficientBalanceOrAllowance is set to true, if any fill fails, the entire batch fails.
* @param orderFillRequests An array of objects that conform to the
* OrderFillRequest interface.
* @param shouldThrowOnInsufficientBalanceOrAllowance Whether or not you wish for the contract call to throw
* if upon execution any of the tokens cannot be
* transferred. If set to false, the call will continue to
* fill subsequent signedOrders even when some
* cannot be filled.
* @param takerAddress The user Ethereum address who would like to fill
* these orders. Must be available via the supplied
* Provider passed to 0x.js.
* @param orderTransactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async batchFillOrdersAsync(
orderFillRequests: OrderFillRequest[],
shouldThrowOnInsufficientBalanceOrAllowance: boolean,
takerAddress: string,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('orderFillRequests', orderFillRequests, schemas.orderFillRequestsSchema);
const exchangeContractAddresses = _.map(
orderFillRequests,
orderFillRequest => orderFillRequest.signedOrder.exchangeContractAddress,
);
assert.hasAtMostOneUniqueValue(
exchangeContractAddresses,
ExchangeContractErrs.BatchOrdersMustHaveSameExchangeAddress,
);
assert.isBoolean('shouldThrowOnInsufficientBalanceOrAllowance', shouldThrowOnInsufficientBalanceOrAllowance);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
for (const orderFillRequest of orderFillRequests) {
await this._orderValidationUtils.validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
orderFillRequest.signedOrder,
orderFillRequest.takerTokenFillAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
}
if (_.isEmpty(orderFillRequests)) {
throw new Error(ExchangeContractErrs.BatchOrdersMustHaveAtLeastOneItem);
}
const orderAddressesValuesAmountsAndSignatureArray = _.map(orderFillRequests, orderFillRequest => {
return [
...ExchangeWrapper._getOrderAddressesAndValues(orderFillRequest.signedOrder),
orderFillRequest.takerTokenFillAmount,
orderFillRequest.signedOrder.ecSignature.v,
orderFillRequest.signedOrder.ecSignature.r,
orderFillRequest.signedOrder.ecSignature.s,
];
});
// We use _.unzip<any> because _.unzip doesn't type check if values have different types :'(
const [orderAddressesArray, orderValuesArray, fillTakerTokenAmounts, vArray, rArray, sArray] = _.unzip<any>(
orderAddressesValuesAmountsAndSignatureArray,
);
const exchangeInstance = await this._getExchangeContractAsync();
const txHash = await exchangeInstance.batchFillOrders.sendTransactionAsync(
orderAddressesArray,
orderValuesArray,
fillTakerTokenAmounts,
shouldThrowOnInsufficientBalanceOrAllowance,
vArray,
rArray,
sArray,
{
from: normalizedTakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Attempts to fill a specific amount of an order. If the entire amount specified cannot be filled,
* the fill order is abandoned.
* @param signedOrder An object that conforms to the SignedOrder interface. The
* signedOrder you wish to fill.
* @param fillTakerTokenAmount The total amount of the takerTokens you would like to fill.
* @param takerAddress The user Ethereum address who would like to fill this order.
* Must be available via the supplied Provider passed to 0x.js.
* @param orderTransactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async fillOrKillOrderAsync(
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
takerAddress: string,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const exchangeInstance = await this._getExchangeContractAsync();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
await this._orderValidationUtils.validateFillOrKillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(signedOrder);
const txHash = await exchangeInstance.fillOrKillOrder.sendTransactionAsync(
orderAddresses,
orderValues,
fillTakerTokenAmount,
signedOrder.ecSignature.v,
signedOrder.ecSignature.r,
signedOrder.ecSignature.s,
{
from: normalizedTakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Batch version of fillOrKill. Allows a taker to specify a batch of orders that will either be atomically
* filled (each to the specified fillAmount) or aborted.
* @param orderFillRequests An array of objects that conform to the OrderFillRequest interface.
* @param takerAddress The user Ethereum address who would like to fill there orders.
* Must be available via the supplied Provider passed to 0x.js.
* @param orderTransactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async batchFillOrKillAsync(
orderFillRequests: OrderFillRequest[],
takerAddress: string,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('orderFillRequests', orderFillRequests, schemas.orderFillRequestsSchema);
const exchangeContractAddresses = _.map(
orderFillRequests,
orderFillRequest => orderFillRequest.signedOrder.exchangeContractAddress,
);
assert.hasAtMostOneUniqueValue(
exchangeContractAddresses,
ExchangeContractErrs.BatchOrdersMustHaveSameExchangeAddress,
);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
if (_.isEmpty(orderFillRequests)) {
throw new Error(ExchangeContractErrs.BatchOrdersMustHaveAtLeastOneItem);
}
const exchangeInstance = await this._getExchangeContractAsync();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
for (const orderFillRequest of orderFillRequests) {
await this._orderValidationUtils.validateFillOrKillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
orderFillRequest.signedOrder,
orderFillRequest.takerTokenFillAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
}
const orderAddressesValuesAndTakerTokenFillAmounts = _.map(orderFillRequests, request => {
return [
...ExchangeWrapper._getOrderAddressesAndValues(request.signedOrder),
request.takerTokenFillAmount,
request.signedOrder.ecSignature.v,
request.signedOrder.ecSignature.r,
request.signedOrder.ecSignature.s,
];
});
// We use _.unzip<any> because _.unzip doesn't type check if values have different types :'(
const [orderAddresses, orderValues, fillTakerTokenAmounts, vParams, rParams, sParams] = _.unzip<any>(
orderAddressesValuesAndTakerTokenFillAmounts,
);
const txHash = await exchangeInstance.batchFillOrKillOrders.sendTransactionAsync(
orderAddresses,
orderValues,
fillTakerTokenAmounts,
vParams,
rParams,
sParams,
{
from: normalizedTakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Cancel a given fill amount of an order. Cancellations are cumulative.
* @param order An object that conforms to the Order or SignedOrder interface.
* The order you would like to cancel.
* @param cancelTakerTokenAmount The amount (specified in taker tokens) that you would like to cancel.
* @param transactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async cancelOrderAsync(
order: Order | SignedOrder,
cancelTakerTokenAmount: BigNumber,
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema('order', order, schemas.orderSchema);
assert.isValidBaseUnitAmount('takerTokenCancelAmount', cancelTakerTokenAmount);
await assert.isSenderAddressAsync('order.maker', order.maker, this._web3Wrapper);
const normalizedMakerAddress = order.maker.toLowerCase();
const exchangeInstance = await this._getExchangeContractAsync();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
const orderHash = getOrderHashHex(order);
const unavailableTakerTokenAmount = await this.getUnavailableTakerAmountAsync(orderHash);
OrderValidationUtils.validateCancelOrderThrowIfInvalid(
order,
cancelTakerTokenAmount,
unavailableTakerTokenAmount,
);
}
const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(order);
const txHash = await exchangeInstance.cancelOrder.sendTransactionAsync(
orderAddresses,
orderValues,
cancelTakerTokenAmount,
{
from: normalizedMakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Batch version of cancelOrderAsync. Atomically cancels multiple orders in a single transaction.
* All orders must be from the same maker.
* @param orderCancellationRequests An array of objects that conform to the OrderCancellationRequest
* interface.
* @param transactionOpts Optional arguments this method accepts.
* @return Transaction hash.
*/
@decorators.asyncZeroExErrorHandler
public async batchCancelOrdersAsync(
orderCancellationRequests: OrderCancellationRequest[],
orderTransactionOpts: OrderTransactionOpts = {},
): Promise<string> {
assert.doesConformToSchema(
'orderCancellationRequests',
orderCancellationRequests,
schemas.orderCancellationRequestsSchema,
);
const exchangeContractAddresses = _.map(
orderCancellationRequests,
orderCancellationRequest => orderCancellationRequest.order.exchangeContractAddress,
);
assert.hasAtMostOneUniqueValue(
exchangeContractAddresses,
ExchangeContractErrs.BatchOrdersMustHaveSameExchangeAddress,
);
const makers = _.map(orderCancellationRequests, cancellationRequest => cancellationRequest.order.maker);
assert.hasAtMostOneUniqueValue(makers, ExchangeContractErrs.MultipleMakersInSingleCancelBatchDisallowed);
const maker = makers[0];
await assert.isSenderAddressAsync('maker', maker, this._web3Wrapper);
const normalizedMakerAddress = maker.toLowerCase();
const shouldValidate = _.isUndefined(orderTransactionOpts.shouldValidate)
? SHOULD_VALIDATE_BY_DEFAULT
: orderTransactionOpts.shouldValidate;
if (shouldValidate) {
for (const orderCancellationRequest of orderCancellationRequests) {
const orderHash = getOrderHashHex(orderCancellationRequest.order);
const unavailableTakerTokenAmount = await this.getUnavailableTakerAmountAsync(orderHash);
OrderValidationUtils.validateCancelOrderThrowIfInvalid(
orderCancellationRequest.order,
orderCancellationRequest.takerTokenCancelAmount,
unavailableTakerTokenAmount,
);
}
}
if (_.isEmpty(orderCancellationRequests)) {
throw new Error(ExchangeContractErrs.BatchOrdersMustHaveAtLeastOneItem);
}
const exchangeInstance = await this._getExchangeContractAsync();
const orderAddressesValuesAndTakerTokenCancelAmounts = _.map(orderCancellationRequests, cancellationRequest => {
return [
...ExchangeWrapper._getOrderAddressesAndValues(cancellationRequest.order),
cancellationRequest.takerTokenCancelAmount,
];
});
// We use _.unzip<any> because _.unzip doesn't type check if values have different types :'(
const [orderAddresses, orderValues, cancelTakerTokenAmounts] = _.unzip<any>(
orderAddressesValuesAndTakerTokenCancelAmounts,
);
const txHash = await exchangeInstance.batchCancelOrders.sendTransactionAsync(
orderAddresses,
orderValues,
cancelTakerTokenAmounts,
{
from: normalizedMakerAddress,
gas: orderTransactionOpts.gasLimit,
gasPrice: orderTransactionOpts.gasPrice,
},
);
return txHash;
}
/**
* Subscribe to an event type emitted by the Exchange contract.
* @param eventName The exchange contract event you would like to subscribe to.
* @param indexFilterValues An object where the keys are indexed args returned by the event and
* the value is the value you are interested in. E.g `{maker: aUserAddressHex}`
* @param callback Callback that gets called when a log is added/removed
* @return Subscription token used later to unsubscribe
*/
public subscribe<ArgsType extends ExchangeContractEventArgs>(
eventName: ExchangeEvents,
indexFilterValues: IndexedFilterValues,
callback: EventCallback<ArgsType>,
): string {
assert.doesBelongToStringEnum('eventName', eventName, ExchangeEvents);
assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema);
assert.isFunction('callback', callback);
const exchangeContractAddress = this.getContractAddress();
const subscriptionToken = this._subscribe<ArgsType>(
exchangeContractAddress,
eventName,
indexFilterValues,
artifacts.ExchangeArtifact.abi,
callback,
);
return subscriptionToken;
}
/**
* Cancel a subscription
* @param subscriptionToken Subscription token returned by `subscribe()`
*/
public unsubscribe(subscriptionToken: string): void {
this._unsubscribe(subscriptionToken);
}
/**
* Cancels all existing subscriptions
*/
public unsubscribeAll(): void {
super._unsubscribeAll();
}
/**
* Gets historical logs without creating a subscription
* @param eventName The exchange contract event you would like to subscribe to.
* @param blockRange Block range to get logs from.
* @param indexFilterValues An object where the keys are indexed args returned by the event and
* the value is the value you are interested in. E.g `{_from: aUserAddressHex}`
* @return Array of logs that match the parameters
*/
public async getLogsAsync<ArgsType extends ExchangeContractEventArgs>(
eventName: ExchangeEvents,
blockRange: BlockRange,
indexFilterValues: IndexedFilterValues,
): Promise<Array<LogWithDecodedArgs<ArgsType>>> {
assert.doesBelongToStringEnum('eventName', eventName, ExchangeEvents);
assert.doesConformToSchema('blockRange', blockRange, schemas.blockRangeSchema);
assert.doesConformToSchema('indexFilterValues', indexFilterValues, schemas.indexFilterValuesSchema);
const exchangeContractAddress = this.getContractAddress();
const logs = await this._getLogsAsync<ArgsType>(
exchangeContractAddress,
eventName,
blockRange,
indexFilterValues,
artifacts.ExchangeArtifact.abi,
);
return logs;
}
/**
* Retrieves the Ethereum address of the Exchange contract deployed on the network
* that the user-passed web3 provider is connected to.
* @returns The Ethereum address of the Exchange contract being used.
*/
public getContractAddress(): string {
const contractAddress = this._getContractAddress(artifacts.ExchangeArtifact, this._contractAddressIfExists);
return contractAddress;
}
/**
* Checks if order is still fillable and throws an error otherwise. Useful for orderbook
* pruning where you want to remove stale orders without knowing who the taker will be.
* @param signedOrder An object that conforms to the SignedOrder interface. The
* signedOrder you wish to validate.
* @param opts An object that conforms to the ValidateOrderFillableOpts
* interface. Allows specifying a specific fillTakerTokenAmount
* to validate for.
*/
public async validateOrderFillableOrThrowAsync(
signedOrder: SignedOrder,
opts?: ValidateOrderFillableOpts,
): Promise<void> {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
const zrxTokenAddress = this.getZRXTokenAddress();
const expectedFillTakerTokenAmount = !_.isUndefined(opts) ? opts.expectedFillTakerTokenAmount : undefined;
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
await this._orderValidationUtils.validateOrderFillableOrThrowAsync(
exchangeTradeEmulator,
signedOrder,
zrxTokenAddress,
expectedFillTakerTokenAmount,
);
}
/**
* Checks if order fill will succeed and throws an error otherwise.
* @param signedOrder An object that conforms to the SignedOrder interface. The
* signedOrder you wish to fill.
* @param fillTakerTokenAmount The total amount of the takerTokens you would like to fill.
* @param takerAddress The user Ethereum address who would like to fill this order.
* Must be available via the supplied Provider passed to 0x.js.
*/
public async validateFillOrderThrowIfInvalidAsync(
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
takerAddress: string,
): Promise<void> {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
await this._orderValidationUtils.validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
/**
* Checks if cancelling a given order will succeed and throws an informative error if it won't.
* @param order An object that conforms to the Order or SignedOrder interface.
* The order you would like to cancel.
* @param cancelTakerTokenAmount The amount (specified in taker tokens) that you would like to cancel.
*/
public async validateCancelOrderThrowIfInvalidAsync(
order: Order,
cancelTakerTokenAmount: BigNumber,
): Promise<void> {
assert.doesConformToSchema('order', order, schemas.orderSchema);
assert.isValidBaseUnitAmount('cancelTakerTokenAmount', cancelTakerTokenAmount);
const orderHash = getOrderHashHex(order);
const unavailableTakerTokenAmount = await this.getUnavailableTakerAmountAsync(orderHash);
OrderValidationUtils.validateCancelOrderThrowIfInvalid(
order,
cancelTakerTokenAmount,
unavailableTakerTokenAmount,
);
}
/**
* Checks if calling fillOrKill on a given order will succeed and throws an informative error if it won't.
* @param signedOrder An object that conforms to the SignedOrder interface. The
* signedOrder you wish to fill.
* @param fillTakerTokenAmount The total amount of the takerTokens you would like to fill.
* @param takerAddress The user Ethereum address who would like to fill this order.
* Must be available via the supplied Provider passed to 0x.js.
*/
public async validateFillOrKillOrderThrowIfInvalidAsync(
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
takerAddress: string,
): Promise<void> {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
await assert.isSenderAddressAsync('takerAddress', takerAddress, this._web3Wrapper);
const normalizedTakerAddress = takerAddress.toLowerCase();
const zrxTokenAddress = this.getZRXTokenAddress();
const exchangeTradeEmulator = new ExchangeTransferSimulator(this._tokenWrapper, BlockParamLiteral.Latest);
await this._orderValidationUtils.validateFillOrKillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
normalizedTakerAddress,
zrxTokenAddress,
);
}
/**
* Checks if rounding error will be > 0.1% when computing makerTokenAmount by doing:
* `(fillTakerTokenAmount * makerTokenAmount) / takerTokenAmount`.
* 0x Protocol does not accept any trades that result in large rounding errors. This means that tokens with few or
* no decimals can only be filled in quantities and ratios that avoid large rounding errors.
* @param fillTakerTokenAmount The amount of the order (in taker tokens baseUnits) that you wish to fill.
* @param takerTokenAmount The order size on the taker side
* @param makerTokenAmount The order size on the maker side
*/
public async isRoundingErrorAsync(
fillTakerTokenAmount: BigNumber,
takerTokenAmount: BigNumber,
makerTokenAmount: BigNumber,
): Promise<boolean> {
assert.isValidBaseUnitAmount('fillTakerTokenAmount', fillTakerTokenAmount);
assert.isValidBaseUnitAmount('takerTokenAmount', takerTokenAmount);
assert.isValidBaseUnitAmount('makerTokenAmount', makerTokenAmount);
const exchangeInstance = await this._getExchangeContractAsync();
const isRoundingError = await exchangeInstance.isRoundingError.callAsync(
fillTakerTokenAmount,
takerTokenAmount,
makerTokenAmount,
);
return isRoundingError;
}
/**
* Checks if logs contain LogError, which is emitted by Exchange contract on transaction failure.
* @param logs Transaction logs as returned by `zeroEx.awaitTransactionMinedAsync`
*/
public throwLogErrorsAsErrors(logs: Array<LogWithDecodedArgs<DecodedLogArgs> | LogEntry>): void {
const errLog = _.find(logs, {
event: ExchangeEvents.LogError,
});
if (!_.isUndefined(errLog)) {
const logArgs = (errLog as LogWithDecodedArgs<LogErrorContractEventArgs>).args;
const errCode = logArgs.errorId;
const errMessage = this._exchangeContractErrCodesToMsg[errCode];
throw new Error(errMessage);
}
}
/**
* Gets the latest OrderState of a signedOrder
* @param signedOrder The signedOrder
* @param stateLayer Optional, desired blockchain state layer (defaults to latest).
* @return OrderState of the signedOrder
*/
public async getOrderStateAsync(
signedOrder: SignedOrder,
stateLayer: BlockParamLiteral = BlockParamLiteral.Latest,
): Promise<OrderState> {
const simpleBalanceAndProxyAllowanceFetcher = new SimpleBalanceAndProxyAllowanceFetcher(
this._tokenWrapper,
stateLayer,
);
const simpleOrderFilledCancelledFetcher = new SimpleOrderFilledCancelledFetcher(this, stateLayer);
const orderStateUtils = new OrderStateUtils(
simpleBalanceAndProxyAllowanceFetcher,
simpleOrderFilledCancelledFetcher,
);
const orderState = orderStateUtils.getOrderStateAsync(signedOrder);
return orderState;
}
/**
* Returns the ZRX token address used by the exchange contract.
* @return Address of ZRX token
*/
public getZRXTokenAddress(): string {
const contractAddress = this._getContractAddress(artifacts.ZRXArtifact, this._zrxContractAddressIfExists);
return contractAddress;
}
private _invalidateContractInstances(): void {
this.unsubscribeAll();
delete this._exchangeContractIfExists;
}
private async _isValidSignatureUsingContractCallAsync(
dataHex: string,
ecSignature: ECSignature,
signerAddressHex: string,
): Promise<boolean> {
assert.isHexString('dataHex', dataHex);
assert.doesConformToSchema('ecSignature', ecSignature, schemas.ecSignatureSchema);
assert.isETHAddressHex('signerAddressHex', signerAddressHex);
const normalizedSignerAddress = signerAddressHex.toLowerCase();
const exchangeInstance = await this._getExchangeContractAsync();
const isValidSignature = await exchangeInstance.isValidSignature.callAsync(
normalizedSignerAddress,
dataHex,
ecSignature.v,
ecSignature.r,
ecSignature.s,
);
return isValidSignature;
}
private async _getOrderHashHexUsingContractCallAsync(order: Order | SignedOrder): Promise<string> {
const exchangeInstance = await this._getExchangeContractAsync();
const [orderAddresses, orderValues] = ExchangeWrapper._getOrderAddressesAndValues(order);
const orderHashHex = await exchangeInstance.getOrderHash.callAsync(orderAddresses, orderValues);
return orderHashHex;
}
private async _getExchangeContractAsync(): Promise<ExchangeContract> {
if (!_.isUndefined(this._exchangeContractIfExists)) {
return this._exchangeContractIfExists;
}
const [abi, address] = await this._getContractAbiAndAddressFromArtifactsAsync(
artifacts.ExchangeArtifact,
this._contractAddressIfExists,
);
const contractInstance = new ExchangeContract(
abi,
address,
this._web3Wrapper.getProvider(),
this._web3Wrapper.getContractDefaults(),
);
this._exchangeContractIfExists = contractInstance;
return this._exchangeContractIfExists;
}
private async _getTokenTransferProxyAddressAsync(): Promise<string> {
const exchangeInstance = await this._getExchangeContractAsync();
const tokenTransferProxyAddress = await exchangeInstance.TOKEN_TRANSFER_PROXY_CONTRACT.callAsync();
const tokenTransferProxyAddressLowerCase = tokenTransferProxyAddress.toLowerCase();
return tokenTransferProxyAddressLowerCase;
}
} // tslint:disable:max-file-line-count

View File

@@ -1,133 +0,0 @@
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { artifacts } from '../artifacts';
import { Token, TokenMetadata } from '../types';
import { assert } from '../utils/assert';
import { constants } from '../utils/constants';
import { ContractWrapper } from './contract_wrapper';
import { TokenRegistryContract } from './generated/token_registry';
/**
* This class includes all the functionality related to interacting with the 0x Token Registry smart contract.
*/
export class TokenRegistryWrapper extends ContractWrapper {
private _tokenRegistryContractIfExists?: TokenRegistryContract;
private _contractAddressIfExists?: string;
private static _createTokenFromMetadata(metadata: TokenMetadata): Token | undefined {
if (metadata[0] === constants.NULL_ADDRESS) {
return undefined;
}
const token = {
address: metadata[0],
name: metadata[1],
symbol: metadata[2],
decimals: metadata[3],
};
return token;
}
constructor(web3Wrapper: Web3Wrapper, networkId: number, contractAddressIfExists?: string) {
super(web3Wrapper, networkId);
this._contractAddressIfExists = contractAddressIfExists;
}
/**
* Retrieves all the tokens currently listed in the Token Registry smart contract
* @return An array of objects that conform to the Token interface.
*/
public async getTokensAsync(): Promise<Token[]> {
const addresses = await this.getTokenAddressesAsync();
const tokenPromises: Array<Promise<Token | undefined>> = _.map(addresses, async (address: string) =>
this.getTokenIfExistsAsync(address),
);
const tokens = await Promise.all(tokenPromises);
return tokens as Token[];
}
/**
* Retrieves all the addresses of the tokens currently listed in the Token Registry smart contract
* @return An array of token addresses.
*/
public async getTokenAddressesAsync(): Promise<string[]> {
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const addresses = await tokenRegistryContract.getTokenAddresses.callAsync();
const lowerCaseAddresses = _.map(addresses, address => address.toLowerCase());
return lowerCaseAddresses;
}
/**
* Retrieves a token by address currently listed in the Token Registry smart contract
* @return An object that conforms to the Token interface or undefined if token not found.
*/
public async getTokenIfExistsAsync(address: string): Promise<Token | undefined> {
assert.isETHAddressHex('address', address);
const normalizedAddress = address.toLowerCase();
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const metadata = await tokenRegistryContract.getTokenMetaData.callAsync(normalizedAddress);
const token = TokenRegistryWrapper._createTokenFromMetadata(metadata);
return token;
}
public async getTokenAddressBySymbolIfExistsAsync(symbol: string): Promise<string | undefined> {
assert.isString('symbol', symbol);
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const addressIfExists = await tokenRegistryContract.getTokenAddressBySymbol.callAsync(symbol);
if (addressIfExists === constants.NULL_ADDRESS) {
return undefined;
}
return addressIfExists;
}
public async getTokenAddressByNameIfExistsAsync(name: string): Promise<string | undefined> {
assert.isString('name', name);
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const addressIfExists = await tokenRegistryContract.getTokenAddressByName.callAsync(name);
if (addressIfExists === constants.NULL_ADDRESS) {
return undefined;
}
return addressIfExists;
}
public async getTokenBySymbolIfExistsAsync(symbol: string): Promise<Token | undefined> {
assert.isString('symbol', symbol);
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const metadata = await tokenRegistryContract.getTokenBySymbol.callAsync(symbol);
const token = TokenRegistryWrapper._createTokenFromMetadata(metadata);
return token;
}
public async getTokenByNameIfExistsAsync(name: string): Promise<Token | undefined> {
assert.isString('name', name);
const tokenRegistryContract = await this._getTokenRegistryContractAsync();
const metadata = await tokenRegistryContract.getTokenByName.callAsync(name);
const token = TokenRegistryWrapper._createTokenFromMetadata(metadata);
return token;
}
/**
* Retrieves the Ethereum address of the TokenRegistry contract deployed on the network
* that the user-passed web3 provider is connected to.
* @returns The Ethereum address of the TokenRegistry contract being used.
*/
public getContractAddress(): string {
const contractAddress = this._getContractAddress(
artifacts.TokenRegistryArtifact,
this._contractAddressIfExists,
);
return contractAddress;
}
private _invalidateContractInstance(): void {
delete this._tokenRegistryContractIfExists;
}
private async _getTokenRegistryContractAsync(): Promise<TokenRegistryContract> {
if (!_.isUndefined(this._tokenRegistryContractIfExists)) {
return this._tokenRegistryContractIfExists;
}
const [abi, address] = await this._getContractAbiAndAddressFromArtifactsAsync(
artifacts.TokenRegistryArtifact,
this._contractAddressIfExists,
);
const contractInstance = new TokenRegistryContract(
abi,
address,
this._web3Wrapper.getProvider(),
this._web3Wrapper.getContractDefaults(),
);
this._tokenRegistryContractIfExists = contractInstance;
return this._tokenRegistryContractIfExists;
}
}

View File

@@ -1,75 +0,0 @@
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { artifacts } from '../artifacts';
import { assert } from '../utils/assert';
import { ContractWrapper } from './contract_wrapper';
import { TokenTransferProxyContract } from './generated/token_transfer_proxy';
/**
* This class includes the functionality related to interacting with the TokenTransferProxy contract.
*/
export class TokenTransferProxyWrapper extends ContractWrapper {
private _tokenTransferProxyContractIfExists?: TokenTransferProxyContract;
private _contractAddressIfExists?: string;
constructor(web3Wrapper: Web3Wrapper, networkId: number, contractAddressIfExists?: string) {
super(web3Wrapper, networkId);
this._contractAddressIfExists = contractAddressIfExists;
}
/**
* Check if the Exchange contract address is authorized by the TokenTransferProxy contract.
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
* @return Whether the exchangeContractAddress is authorized.
*/
public async isAuthorizedAsync(exchangeContractAddress: string): Promise<boolean> {
assert.isETHAddressHex('exchangeContractAddress', exchangeContractAddress);
const normalizedExchangeContractAddress = exchangeContractAddress.toLowerCase();
const tokenTransferProxyContractInstance = await this._getTokenTransferProxyContractAsync();
const isAuthorized = await tokenTransferProxyContractInstance.authorized.callAsync(
normalizedExchangeContractAddress,
);
return isAuthorized;
}
/**
* Get the list of all Exchange contract addresses authorized by the TokenTransferProxy contract.
* @return The list of authorized addresses.
*/
public async getAuthorizedAddressesAsync(): Promise<string[]> {
const tokenTransferProxyContractInstance = await this._getTokenTransferProxyContractAsync();
const authorizedAddresses = await tokenTransferProxyContractInstance.getAuthorizedAddresses.callAsync();
return authorizedAddresses;
}
/**
* Retrieves the Ethereum address of the TokenTransferProxy contract deployed on the network
* that the user-passed web3 provider is connected to.
* @returns The Ethereum address of the TokenTransferProxy contract being used.
*/
public getContractAddress(): string {
const contractAddress = this._getContractAddress(
artifacts.TokenTransferProxyArtifact,
this._contractAddressIfExists,
);
return contractAddress;
}
private _invalidateContractInstance(): void {
delete this._tokenTransferProxyContractIfExists;
}
private async _getTokenTransferProxyContractAsync(): Promise<TokenTransferProxyContract> {
if (!_.isUndefined(this._tokenTransferProxyContractIfExists)) {
return this._tokenTransferProxyContractIfExists;
}
const [abi, address] = await this._getContractAbiAndAddressFromArtifactsAsync(
artifacts.TokenTransferProxyArtifact,
this._contractAddressIfExists,
);
const contractInstance = new TokenTransferProxyContract(
abi,
address,
this._web3Wrapper.getProvider(),
this._web3Wrapper.getContractDefaults(),
);
this._tokenTransferProxyContractIfExists = contractInstance;
return this._tokenTransferProxyContractIfExists;
}
}

View File

@@ -1,28 +0,0 @@
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import { BalanceAndProxyAllowanceFetcher } from '../abstract/balance_and_proxy_allowance_fetcher';
import { TokenWrapper } from '../contract_wrappers/token_wrapper';
export class SimpleBalanceAndProxyAllowanceFetcher implements BalanceAndProxyAllowanceFetcher {
private _tokenWrapper: TokenWrapper;
private _defaultBlock: BlockParamLiteral;
constructor(token: TokenWrapper, defaultBlock: BlockParamLiteral) {
this._tokenWrapper = token;
this._defaultBlock = defaultBlock;
}
public async getBalanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber> {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const balance = this._tokenWrapper.getBalanceAsync(tokenAddress, userAddress, methodOpts);
return balance;
}
public async getProxyAllowanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber> {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const proxyAllowance = this._tokenWrapper.getProxyAllowanceAsync(tokenAddress, userAddress, methodOpts);
return proxyAllowance;
}
}

View File

@@ -1,28 +0,0 @@
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import { OrderFilledCancelledFetcher } from '../abstract/order_filled_cancelled_fetcher';
import { ExchangeWrapper } from '../contract_wrappers/exchange_wrapper';
export class SimpleOrderFilledCancelledFetcher implements OrderFilledCancelledFetcher {
private _exchangeWrapper: ExchangeWrapper;
private _defaultBlock: BlockParamLiteral;
constructor(exchange: ExchangeWrapper, defaultBlock: BlockParamLiteral) {
this._exchangeWrapper = exchange;
this._defaultBlock = defaultBlock;
}
public async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber> {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const filledTakerAmount = this._exchangeWrapper.getFilledTakerAmountAsync(orderHash, methodOpts);
return filledTakerAmount;
}
public async getCancelledTakerAmountAsync(orderHash: string): Promise<BigNumber> {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const cancelledTakerAmount = this._exchangeWrapper.getCancelledTakerAmountAsync(orderHash, methodOpts);
return cancelledTakerAmount;
}
}

View File

@@ -1,61 +1,117 @@
export { ZeroEx } from './0x';
export { ContractAddresses } from '@0x/contract-addresses';
export { assetDataUtils, signatureUtils, generatePseudoRandomSalt, orderHashUtils } from '@0x/order-utils';
export {
ZeroExError,
EventCallback,
ExchangeContractErrs,
ContractEvent,
Token,
ContractWrappers,
ERC20TokenWrapper,
ERC721TokenWrapper,
EtherTokenWrapper,
ExchangeWrapper,
ERC20ProxyWrapper,
ERC721ProxyWrapper,
ForwarderWrapper,
OrderValidatorWrapper,
IndexedFilterValues,
BlockRange,
OrderCancellationRequest,
OrderFillRequest,
ContractEventArgs,
ZeroExConfig,
ContractWrappersConfig,
MethodOpts,
OrderTransactionOpts,
TransactionOpts,
LogEvent,
OrderStatus,
OrderInfo,
EventCallback,
DecodedLogEvent,
EventWatcherCallback,
OnOrderStateChangeCallback,
TransactionEncoder,
BalanceAndAllowance,
OrderAndTraderInfo,
TraderInfo,
ValidateOrderFillableOpts,
} from '@0x/contract-wrappers';
export {
WETH9Events,
WETH9WithdrawalEventArgs,
WETH9ApprovalEventArgs,
WETH9EventArgs,
WETH9DepositEventArgs,
WETH9TransferEventArgs,
ERC20TokenTransferEventArgs,
ERC20TokenApprovalEventArgs,
ERC20TokenEvents,
ERC20TokenEventArgs,
ERC721TokenApprovalEventArgs,
ERC721TokenApprovalForAllEventArgs,
ERC721TokenTransferEventArgs,
ERC721TokenEvents,
ERC721TokenEventArgs,
ExchangeCancelUpToEventArgs,
ExchangeAssetProxyRegisteredEventArgs,
ExchangeSignatureValidatorApprovalEventArgs,
ExchangeFillEventArgs,
ExchangeCancelEventArgs,
ExchangeEventArgs,
ExchangeEvents,
} from '@0x/abi-gen-wrappers';
export { OrderWatcher, OnOrderStateChangeCallback, OrderWatcherConfig } from '@0x/order-watcher';
export import Web3ProviderEngine = require('web3-provider-engine');
export {
RPCSubprovider,
Callback,
JSONRPCRequestPayloadWithMethod,
ErrorCallback,
MetamaskSubprovider,
} from '@0x/subproviders';
export { AbiDecoder } from '@0x/utils';
export { BigNumber } from '@0x/utils';
export {
ExchangeContractErrs,
Order,
SignedOrder,
ECSignature,
OrderStateValid,
OrderStateInvalid,
OrderState,
} from './types';
AssetProxyId,
AssetData,
ERC20AssetData,
ERC721AssetData,
SignatureType,
OrderRelevantState,
Stats,
} from '@0x/types';
export {
BlockParamLiteral,
FilterObject,
ContractAbi,
BlockParam,
ContractEventArg,
LogWithDecodedArgs,
Order,
ContractEventArg,
Provider,
SignedOrder,
ECSignature,
TransactionReceipt,
TransactionReceiptWithDecodedLogs,
} from '@0xproject/types';
export {
EtherTokenContractEventArgs,
WithdrawalContractEventArgs,
DepositContractEventArgs,
EtherTokenEvents,
} from './contract_wrappers/generated/ether_token';
export {
TransferContractEventArgs,
ApprovalContractEventArgs,
TokenContractEventArgs,
TokenEvents,
} from './contract_wrappers/generated/token';
export {
LogErrorContractEventArgs,
LogCancelContractEventArgs,
LogFillContractEventArgs,
ExchangeContractEventArgs,
ExchangeEvents,
} from './contract_wrappers/generated/exchange';
JSONRPCRequestPayload,
JSONRPCResponsePayload,
JSONRPCErrorCallback,
JSONRPCResponseError,
LogEntry,
DecodedLogArgs,
LogEntryEvent,
DecodedLogEntry,
DecodedLogEntryEvent,
RawLog,
AbiDefinition,
FunctionAbi,
EventAbi,
EventParameter,
MethodAbi,
ConstructorAbi,
FallbackAbi,
DataItem,
ConstructorStateMutability,
StateMutability,
} from 'ethereum-types';

View File

@@ -1,8 +0,0 @@
import { postpublishUtils } from '@0xproject/monorepo-scripts';
import * as packageJSON from '../package.json';
import * as tsConfigJSON from '../tsconfig.json';
const cwd = `${__dirname}/..`;
// tslint:disable-next-line:no-floating-promises
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);

View File

@@ -1,8 +0,0 @@
import { postpublishUtils } from '@0xproject/monorepo-scripts';
import * as packageJSON from '../package.json';
import * as tsConfigJSON from '../tsconfig.json';
const cwd = `${__dirname}/..`;
// tslint:disable-next-line:no-floating-promises
postpublishUtils.publishDocsToStagingAsync(packageJSON, tsConfigJSON, cwd);

View File

@@ -1,99 +0,0 @@
import { BlockParamLiteral, LogEntry } from '@0xproject/types';
import { intervalUtils } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { EventWatcherCallback, ZeroExError } from '../types';
import { assert } from '../utils/assert';
const DEFAULT_EVENT_POLLING_INTERVAL_MS = 200;
enum LogEventState {
Removed,
Added,
}
/**
* The EventWatcher watches for blockchain events at the specified block confirmation
* depth.
*/
export class EventWatcher {
private _web3Wrapper: Web3Wrapper;
private _pollingIntervalMs: number;
private _intervalIdIfExists?: NodeJS.Timer;
private _lastEvents: LogEntry[] = [];
private _stateLayer: BlockParamLiteral;
constructor(
web3Wrapper: Web3Wrapper,
pollingIntervalIfExistsMs: undefined | number,
stateLayer: BlockParamLiteral = BlockParamLiteral.Latest,
) {
this._web3Wrapper = web3Wrapper;
this._stateLayer = stateLayer;
this._pollingIntervalMs = _.isUndefined(pollingIntervalIfExistsMs)
? DEFAULT_EVENT_POLLING_INTERVAL_MS
: pollingIntervalIfExistsMs;
}
public subscribe(callback: EventWatcherCallback): void {
assert.isFunction('callback', callback);
if (!_.isUndefined(this._intervalIdIfExists)) {
throw new Error(ZeroExError.SubscriptionAlreadyPresent);
}
this._intervalIdIfExists = intervalUtils.setAsyncExcludingInterval(
this._pollForBlockchainEventsAsync.bind(this, callback),
this._pollingIntervalMs,
(err: Error) => {
this.unsubscribe();
callback(err);
},
);
}
public unsubscribe(): void {
this._lastEvents = [];
if (!_.isUndefined(this._intervalIdIfExists)) {
intervalUtils.clearAsyncExcludingInterval(this._intervalIdIfExists);
delete this._intervalIdIfExists;
}
}
private async _pollForBlockchainEventsAsync(callback: EventWatcherCallback): Promise<void> {
const pendingEvents = await this._getEventsAsync();
if (_.isUndefined(pendingEvents)) {
// HACK: This should never happen, but happens frequently on CI due to a ganache bug
return;
}
if (pendingEvents.length === 0) {
// HACK: Sometimes when node rebuilds the pending block we get back the empty result.
// We don't want to emit a lot of removal events and bring them back after a couple of miliseconds,
// that's why we just ignore those cases.
return;
}
const removedEvents = _.differenceBy(this._lastEvents, pendingEvents, JSON.stringify);
const newEvents = _.differenceBy(pendingEvents, this._lastEvents, JSON.stringify);
await this._emitDifferencesAsync(removedEvents, LogEventState.Removed, callback);
await this._emitDifferencesAsync(newEvents, LogEventState.Added, callback);
this._lastEvents = pendingEvents;
}
private async _getEventsAsync(): Promise<LogEntry[]> {
const eventFilter = {
fromBlock: this._stateLayer,
toBlock: this._stateLayer,
};
const events = await this._web3Wrapper.getLogsAsync(eventFilter);
return events;
}
private async _emitDifferencesAsync(
logs: LogEntry[],
logEventState: LogEventState,
callback: EventWatcherCallback,
): Promise<void> {
for (const log of logs) {
const logEvent = {
removed: logEventState === LogEventState.Removed,
...log,
};
if (!_.isUndefined(this._intervalIdIfExists)) {
callback(null, logEvent);
}
}
}
}

View File

@@ -1,381 +0,0 @@
import { schemas } from '@0xproject/json-schemas';
import { BlockParamLiteral, LogWithDecodedArgs, SignedOrder } from '@0xproject/types';
import { AbiDecoder, intervalUtils } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { ZeroEx } from '../0x';
import { ExchangeWrapper } from '../contract_wrappers/exchange_wrapper';
import {
DepositContractEventArgs,
EtherTokenEvents,
WithdrawalContractEventArgs,
} from '../contract_wrappers/generated/ether_token';
import {
ExchangeEvents,
LogCancelContractEventArgs,
LogFillContractEventArgs,
} from '../contract_wrappers/generated/exchange';
import {
ApprovalContractEventArgs,
TokenEvents,
TransferContractEventArgs,
} from '../contract_wrappers/generated/token';
import { TokenWrapper } from '../contract_wrappers/token_wrapper';
import { BalanceAndProxyAllowanceLazyStore } from '../stores/balance_proxy_allowance_lazy_store';
import { OrderFilledCancelledLazyStore } from '../stores/order_filled_cancelled_lazy_store';
import {
ContractEventArgs,
ExchangeContractErrs,
LogEvent,
OnOrderStateChangeCallback,
OrderState,
OrderStateWatcherConfig,
ZeroExError,
} from '../types';
import { assert } from '../utils/assert';
import { OrderStateUtils } from '../utils/order_state_utils';
import { utils } from '../utils/utils';
import { EventWatcher } from './event_watcher';
import { ExpirationWatcher } from './expiration_watcher';
interface DependentOrderHashes {
[makerAddress: string]: {
[makerToken: string]: Set<string>;
};
}
interface OrderByOrderHash {
[orderHash: string]: SignedOrder;
}
interface OrderStateByOrderHash {
[orderHash: string]: OrderState;
}
const DEFAULT_CLEANUP_JOB_INTERVAL_MS = 1000 * 60 * 60; // 1h
/**
* This class includes all the functionality related to watching a set of orders
* for potential changes in order validity/fillability. The orderWatcher notifies
* the subscriber of these changes so that a final decision can be made on whether
* the order should be deemed invalid.
*/
export class OrderStateWatcher {
private _orderStateByOrderHashCache: OrderStateByOrderHash = {};
private _orderByOrderHash: OrderByOrderHash = {};
private _dependentOrderHashes: DependentOrderHashes = {};
private _callbackIfExists?: OnOrderStateChangeCallback;
private _eventWatcher: EventWatcher;
private _web3Wrapper: Web3Wrapper;
private _expirationWatcher: ExpirationWatcher;
private _orderStateUtils: OrderStateUtils;
private _orderFilledCancelledLazyStore: OrderFilledCancelledLazyStore;
private _balanceAndProxyAllowanceLazyStore: BalanceAndProxyAllowanceLazyStore;
private _cleanupJobInterval: number;
private _cleanupJobIntervalIdIfExists?: NodeJS.Timer;
constructor(
web3Wrapper: Web3Wrapper,
token: TokenWrapper,
exchange: ExchangeWrapper,
config?: OrderStateWatcherConfig,
) {
this._web3Wrapper = web3Wrapper;
const pollingIntervalIfExistsMs = _.isUndefined(config) ? undefined : config.eventPollingIntervalMs;
const stateLayer =
_.isUndefined(config) || _.isUndefined(config.stateLayer) ? BlockParamLiteral.Latest : config.stateLayer;
this._eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalIfExistsMs, stateLayer);
this._balanceAndProxyAllowanceLazyStore = new BalanceAndProxyAllowanceLazyStore(token, stateLayer);
this._orderFilledCancelledLazyStore = new OrderFilledCancelledLazyStore(exchange, stateLayer);
this._orderStateUtils = new OrderStateUtils(
this._balanceAndProxyAllowanceLazyStore,
this._orderFilledCancelledLazyStore,
);
const orderExpirationCheckingIntervalMsIfExists = _.isUndefined(config)
? undefined
: config.orderExpirationCheckingIntervalMs;
const expirationMarginIfExistsMs = _.isUndefined(config) ? undefined : config.expirationMarginMs;
this._expirationWatcher = new ExpirationWatcher(
expirationMarginIfExistsMs,
orderExpirationCheckingIntervalMsIfExists,
);
this._cleanupJobInterval =
_.isUndefined(config) || _.isUndefined(config.cleanupJobIntervalMs)
? DEFAULT_CLEANUP_JOB_INTERVAL_MS
: config.cleanupJobIntervalMs;
}
/**
* Add an order to the orderStateWatcher. Before the order is added, it's
* signature is verified.
* @param signedOrder The order you wish to start watching.
*/
public addOrder(signedOrder: SignedOrder): void {
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
assert.isValidSignature(orderHash, signedOrder.ecSignature, signedOrder.maker);
this._orderByOrderHash[orderHash] = signedOrder;
this._addToDependentOrderHashes(signedOrder, orderHash);
const expirationUnixTimestampMs = signedOrder.expirationUnixTimestampSec.times(1000);
this._expirationWatcher.addOrder(orderHash, expirationUnixTimestampMs);
}
/**
* Removes an order from the orderStateWatcher
* @param orderHash The orderHash of the order you wish to stop watching.
*/
public removeOrder(orderHash: string): void {
assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema);
const signedOrder = this._orderByOrderHash[orderHash];
if (_.isUndefined(signedOrder)) {
return; // noop
}
delete this._orderByOrderHash[orderHash];
delete this._orderStateByOrderHashCache[orderHash];
const exchange = (this._orderFilledCancelledLazyStore as any)._exchangeWrapper as ExchangeWrapper;
const zrxTokenAddress = exchange.getZRXTokenAddress();
this._removeFromDependentOrderHashes(signedOrder.maker, zrxTokenAddress, orderHash);
if (zrxTokenAddress !== signedOrder.makerTokenAddress) {
this._removeFromDependentOrderHashes(signedOrder.maker, signedOrder.makerTokenAddress, orderHash);
}
this._expirationWatcher.removeOrder(orderHash);
}
/**
* Starts an orderStateWatcher subscription. The callback will be called every time a watched order's
* backing blockchain state has changed. This is a call-to-action for the caller to re-validate the order.
* @param callback Receives the orderHash of the order that should be re-validated, together
* with all the order-relevant blockchain state needed to re-validate the order.
*/
public subscribe(callback: OnOrderStateChangeCallback): void {
assert.isFunction('callback', callback);
if (!_.isUndefined(this._callbackIfExists)) {
throw new Error(ZeroExError.SubscriptionAlreadyPresent);
}
this._callbackIfExists = callback;
this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this));
this._expirationWatcher.subscribe(this._onOrderExpired.bind(this));
this._cleanupJobIntervalIdIfExists = intervalUtils.setAsyncExcludingInterval(
this._cleanupAsync.bind(this),
this._cleanupJobInterval,
(err: Error) => {
this.unsubscribe();
callback(err);
},
);
}
/**
* Ends an orderStateWatcher subscription.
*/
public unsubscribe(): void {
if (_.isUndefined(this._callbackIfExists) || _.isUndefined(this._cleanupJobIntervalIdIfExists)) {
throw new Error(ZeroExError.SubscriptionNotFound);
}
this._balanceAndProxyAllowanceLazyStore.deleteAll();
this._orderFilledCancelledLazyStore.deleteAll();
delete this._callbackIfExists;
this._eventWatcher.unsubscribe();
this._expirationWatcher.unsubscribe();
intervalUtils.clearAsyncExcludingInterval(this._cleanupJobIntervalIdIfExists);
}
private async _cleanupAsync(): Promise<void> {
for (const orderHash of _.keys(this._orderByOrderHash)) {
this._cleanupOrderRelatedState(orderHash);
await this._emitRevalidateOrdersAsync([orderHash]);
}
}
private _cleanupOrderRelatedState(orderHash: string): void {
const signedOrder = this._orderByOrderHash[orderHash];
this._orderFilledCancelledLazyStore.deleteFilledTakerAmount(orderHash);
this._orderFilledCancelledLazyStore.deleteCancelledTakerAmount(orderHash);
this._balanceAndProxyAllowanceLazyStore.deleteBalance(signedOrder.makerTokenAddress, signedOrder.maker);
this._balanceAndProxyAllowanceLazyStore.deleteProxyAllowance(signedOrder.makerTokenAddress, signedOrder.maker);
this._balanceAndProxyAllowanceLazyStore.deleteBalance(signedOrder.takerTokenAddress, signedOrder.taker);
this._balanceAndProxyAllowanceLazyStore.deleteProxyAllowance(signedOrder.takerTokenAddress, signedOrder.taker);
const zrxTokenAddress = this._getZRXTokenAddress();
if (!signedOrder.makerFee.isZero()) {
this._balanceAndProxyAllowanceLazyStore.deleteBalance(zrxTokenAddress, signedOrder.maker);
this._balanceAndProxyAllowanceLazyStore.deleteProxyAllowance(zrxTokenAddress, signedOrder.maker);
}
if (!signedOrder.takerFee.isZero()) {
this._balanceAndProxyAllowanceLazyStore.deleteBalance(zrxTokenAddress, signedOrder.taker);
this._balanceAndProxyAllowanceLazyStore.deleteProxyAllowance(zrxTokenAddress, signedOrder.taker);
}
}
private _onOrderExpired(orderHash: string): void {
const orderState: OrderState = {
isValid: false,
orderHash,
error: ExchangeContractErrs.OrderFillExpired,
};
if (!_.isUndefined(this._orderByOrderHash[orderHash])) {
this.removeOrder(orderHash);
if (!_.isUndefined(this._callbackIfExists)) {
this._callbackIfExists(null, orderState);
}
}
}
private async _onEventWatcherCallbackAsync(err: Error | null, logIfExists?: LogEvent): Promise<void> {
if (!_.isNull(err)) {
if (!_.isUndefined(this._callbackIfExists)) {
this._callbackIfExists(err);
this.unsubscribe();
}
return;
}
const log = logIfExists as LogEvent; // At this moment we are sure that no error occured and log is defined.
const maybeDecodedLog = this._web3Wrapper.abiDecoder.tryToDecodeLogOrNoop<ContractEventArgs>(log);
const isLogDecoded = !_.isUndefined(((maybeDecodedLog as any) as LogWithDecodedArgs<ContractEventArgs>).event);
if (!isLogDecoded) {
return; // noop
}
const decodedLog = (maybeDecodedLog as any) as LogWithDecodedArgs<ContractEventArgs>;
let makerToken: string;
let makerAddress: string;
switch (decodedLog.event) {
case TokenEvents.Approval: {
// Invalidate cache
const args = decodedLog.args as ApprovalContractEventArgs;
this._balanceAndProxyAllowanceLazyStore.deleteProxyAllowance(decodedLog.address, args._owner);
// Revalidate orders
makerToken = decodedLog.address;
makerAddress = args._owner;
if (
!_.isUndefined(this._dependentOrderHashes[makerAddress]) &&
!_.isUndefined(this._dependentOrderHashes[makerAddress][makerToken])
) {
const orderHashes = Array.from(this._dependentOrderHashes[makerAddress][makerToken]);
await this._emitRevalidateOrdersAsync(orderHashes);
}
break;
}
case TokenEvents.Transfer: {
// Invalidate cache
const args = decodedLog.args as TransferContractEventArgs;
this._balanceAndProxyAllowanceLazyStore.deleteBalance(decodedLog.address, args._from);
this._balanceAndProxyAllowanceLazyStore.deleteBalance(decodedLog.address, args._to);
// Revalidate orders
makerToken = decodedLog.address;
makerAddress = args._from;
if (
!_.isUndefined(this._dependentOrderHashes[makerAddress]) &&
!_.isUndefined(this._dependentOrderHashes[makerAddress][makerToken])
) {
const orderHashes = Array.from(this._dependentOrderHashes[makerAddress][makerToken]);
await this._emitRevalidateOrdersAsync(orderHashes);
}
break;
}
case EtherTokenEvents.Deposit: {
// Invalidate cache
const args = decodedLog.args as DepositContractEventArgs;
this._balanceAndProxyAllowanceLazyStore.deleteBalance(decodedLog.address, args._owner);
// Revalidate orders
makerToken = decodedLog.address;
makerAddress = args._owner;
if (
!_.isUndefined(this._dependentOrderHashes[makerAddress]) &&
!_.isUndefined(this._dependentOrderHashes[makerAddress][makerToken])
) {
const orderHashes = Array.from(this._dependentOrderHashes[makerAddress][makerToken]);
await this._emitRevalidateOrdersAsync(orderHashes);
}
break;
}
case EtherTokenEvents.Withdrawal: {
// Invalidate cache
const args = decodedLog.args as WithdrawalContractEventArgs;
this._balanceAndProxyAllowanceLazyStore.deleteBalance(decodedLog.address, args._owner);
// Revalidate orders
makerToken = decodedLog.address;
makerAddress = args._owner;
if (
!_.isUndefined(this._dependentOrderHashes[makerAddress]) &&
!_.isUndefined(this._dependentOrderHashes[makerAddress][makerToken])
) {
const orderHashes = Array.from(this._dependentOrderHashes[makerAddress][makerToken]);
await this._emitRevalidateOrdersAsync(orderHashes);
}
break;
}
case ExchangeEvents.LogFill: {
// Invalidate cache
const args = decodedLog.args as LogFillContractEventArgs;
this._orderFilledCancelledLazyStore.deleteFilledTakerAmount(args.orderHash);
// Revalidate orders
const orderHash = args.orderHash;
const isOrderWatched = !_.isUndefined(this._orderByOrderHash[orderHash]);
if (isOrderWatched) {
await this._emitRevalidateOrdersAsync([orderHash]);
}
break;
}
case ExchangeEvents.LogCancel: {
// Invalidate cache
const args = decodedLog.args as LogCancelContractEventArgs;
this._orderFilledCancelledLazyStore.deleteCancelledTakerAmount(args.orderHash);
// Revalidate orders
const orderHash = args.orderHash;
const isOrderWatched = !_.isUndefined(this._orderByOrderHash[orderHash]);
if (isOrderWatched) {
await this._emitRevalidateOrdersAsync([orderHash]);
}
break;
}
case ExchangeEvents.LogError:
return; // noop
default:
throw utils.spawnSwitchErr('decodedLog.event', decodedLog.event);
}
}
private async _emitRevalidateOrdersAsync(orderHashes: string[]): Promise<void> {
for (const orderHash of orderHashes) {
const signedOrder = this._orderByOrderHash[orderHash];
// Most of these calls will never reach the network because the data is fetched from stores
// and only updated when cache is invalidated
const orderState = await this._orderStateUtils.getOrderStateAsync(signedOrder);
if (_.isUndefined(this._callbackIfExists)) {
break; // Unsubscribe was called
}
if (_.isEqual(orderState, this._orderStateByOrderHashCache[orderHash])) {
// Actual order state didn't change
continue;
} else {
this._orderStateByOrderHashCache[orderHash] = orderState;
}
this._callbackIfExists(null, orderState);
}
}
private _addToDependentOrderHashes(signedOrder: SignedOrder, orderHash: string): void {
if (_.isUndefined(this._dependentOrderHashes[signedOrder.maker])) {
this._dependentOrderHashes[signedOrder.maker] = {};
}
if (_.isUndefined(this._dependentOrderHashes[signedOrder.maker][signedOrder.makerTokenAddress])) {
this._dependentOrderHashes[signedOrder.maker][signedOrder.makerTokenAddress] = new Set();
}
this._dependentOrderHashes[signedOrder.maker][signedOrder.makerTokenAddress].add(orderHash);
const zrxTokenAddress = this._getZRXTokenAddress();
if (_.isUndefined(this._dependentOrderHashes[signedOrder.maker][zrxTokenAddress])) {
this._dependentOrderHashes[signedOrder.maker][zrxTokenAddress] = new Set();
}
this._dependentOrderHashes[signedOrder.maker][zrxTokenAddress].add(orderHash);
}
private _removeFromDependentOrderHashes(makerAddress: string, tokenAddress: string, orderHash: string) {
this._dependentOrderHashes[makerAddress][tokenAddress].delete(orderHash);
if (this._dependentOrderHashes[makerAddress][tokenAddress].size === 0) {
delete this._dependentOrderHashes[makerAddress][tokenAddress];
}
if (_.isEmpty(this._dependentOrderHashes[makerAddress])) {
delete this._dependentOrderHashes[makerAddress];
}
}
private _getZRXTokenAddress(): string {
const exchange = (this._orderFilledCancelledLazyStore as any)._exchangeWrapper as ExchangeWrapper;
const zrxTokenAddress = exchange.getZRXTokenAddress();
return zrxTokenAddress;
}
}

View File

@@ -1,95 +0,0 @@
import { SignedOrder } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
export class RemainingFillableCalculator {
private _signedOrder: SignedOrder;
private _isMakerTokenZRX: boolean;
// Transferrable Amount is the minimum of Approval and Balance
private _transferrableMakerTokenAmount: BigNumber;
private _transferrableMakerFeeTokenAmount: BigNumber;
private _remainingMakerTokenAmount: BigNumber;
private _remainingMakerFeeAmount: BigNumber;
constructor(
signedOrder: SignedOrder,
isMakerTokenZRX: boolean,
transferrableMakerTokenAmount: BigNumber,
transferrableMakerFeeTokenAmount: BigNumber,
remainingMakerTokenAmount: BigNumber,
) {
this._signedOrder = signedOrder;
this._isMakerTokenZRX = isMakerTokenZRX;
this._transferrableMakerTokenAmount = transferrableMakerTokenAmount;
this._transferrableMakerFeeTokenAmount = transferrableMakerFeeTokenAmount;
this._remainingMakerTokenAmount = remainingMakerTokenAmount;
this._remainingMakerFeeAmount = remainingMakerTokenAmount
.times(signedOrder.makerFee)
.dividedToIntegerBy(signedOrder.makerTokenAmount);
}
public computeRemainingMakerFillable(): BigNumber {
if (this._hasSufficientFundsForFeeAndTransferAmount()) {
return this._remainingMakerTokenAmount;
}
if (this._signedOrder.makerFee.isZero()) {
return BigNumber.min(this._remainingMakerTokenAmount, this._transferrableMakerTokenAmount);
}
return this._calculatePartiallyFillableMakerTokenAmount();
}
public computeRemainingTakerFillable(): BigNumber {
return this.computeRemainingMakerFillable()
.times(this._signedOrder.takerTokenAmount)
.dividedToIntegerBy(this._signedOrder.makerTokenAmount);
}
private _hasSufficientFundsForFeeAndTransferAmount(): boolean {
if (this._isMakerTokenZRX) {
const totalZRXTransferAmountRequired = this._remainingMakerTokenAmount.plus(this._remainingMakerFeeAmount);
const hasSufficientFunds = this._transferrableMakerTokenAmount.greaterThanOrEqualTo(
totalZRXTransferAmountRequired,
);
return hasSufficientFunds;
} else {
const hasSufficientFundsForTransferAmount = this._transferrableMakerTokenAmount.greaterThanOrEqualTo(
this._remainingMakerTokenAmount,
);
const hasSufficientFundsForFeeAmount = this._transferrableMakerFeeTokenAmount.greaterThanOrEqualTo(
this._remainingMakerFeeAmount,
);
const hasSufficientFunds = hasSufficientFundsForTransferAmount && hasSufficientFundsForFeeAmount;
return hasSufficientFunds;
}
}
private _calculatePartiallyFillableMakerTokenAmount(): BigNumber {
// Given an order for 200 wei for 2 ZRXwei fee, find 100 wei for 1 ZRXwei. Order ratio is then 100:1
const orderToFeeRatio = this._signedOrder.makerTokenAmount.dividedBy(this._signedOrder.makerFee);
// The number of times the maker can fill the order, if each fill only required the transfer of a single
// baseUnit of fee tokens.
// Given 2 ZRXwei, the maximum amount of times Maker can fill this order, in terms of fees, is 2
const fillableTimesInFeeTokenBaseUnits = BigNumber.min(
this._transferrableMakerFeeTokenAmount,
this._remainingMakerFeeAmount,
);
// The number of times the Maker can fill the order, given the Maker Token Balance
// Assuming a balance of 150 wei, and an orderToFeeRatio of 100:1, maker can fill this order 1 time.
let fillableTimesInMakerTokenUnits = this._transferrableMakerTokenAmount.dividedBy(orderToFeeRatio);
if (this._isMakerTokenZRX) {
// If ZRX is the maker token, the Fee and the Maker amount need to be removed from the same pool;
// 200 ZRXwei for 2ZRXwei fee can only be filled once (need 202 ZRXwei)
const totalZRXTokenPooled = this._transferrableMakerTokenAmount;
// The purchasing power here is less as the tokens are taken from the same Pool
// For every one number of fills, we have to take an extra ZRX out of the pool
fillableTimesInMakerTokenUnits = totalZRXTokenPooled.dividedBy(orderToFeeRatio.plus(new BigNumber(1)));
}
// When Ratio is not fully divisible there can be remainders which cannot be represented, so they are floored.
// This can result in a RoundingError being thrown by the Exchange Contract.
const partiallyFillableMakerTokenAmount = fillableTimesInMakerTokenUnits
.times(this._signedOrder.makerTokenAmount)
.dividedToIntegerBy(this._signedOrder.makerFee);
const partiallyFillableFeeTokenAmount = fillableTimesInFeeTokenBaseUnits
.times(this._signedOrder.makerTokenAmount)
.dividedToIntegerBy(this._signedOrder.makerFee);
const partiallyFillableAmount = BigNumber.min(
partiallyFillableMakerTokenAmount,
partiallyFillableFeeTokenAmount,
);
return partiallyFillableAmount;
}
}

View File

@@ -1,5 +0,0 @@
export const zeroExConfigSchema = {
id: '/ZeroExConfig',
oneOf: [{ $ref: '/ZeroExPrivateNetworkConfig' }, { $ref: '/ZeroExPublicNetworkConfig' }],
type: 'object',
};

View File

@@ -1,35 +0,0 @@
export const zeroExPrivateNetworkConfigSchema = {
id: '/ZeroExPrivateNetworkConfig',
properties: {
networkId: {
type: 'number',
minimum: 1,
},
gasPrice: { $ref: '/Number' },
zrxContractAddress: { $ref: '/Address' },
exchangeContractAddress: { $ref: '/Address' },
tokenRegistryContractAddress: { $ref: '/Address' },
tokenTransferProxyContractAddress: { $ref: '/Address' },
orderWatcherConfig: {
type: 'object',
properties: {
pollingIntervalMs: {
type: 'number',
minimum: 0,
},
numConfirmations: {
type: 'number',
minimum: 0,
},
},
},
},
type: 'object',
required: [
'networkId',
'zrxContractAddress',
'exchangeContractAddress',
'tokenRegistryContractAddress',
'tokenTransferProxyContractAddress',
],
};

View File

@@ -1,29 +0,0 @@
export const zeroExPublicNetworkConfigSchema = {
id: '/ZeroExPublicNetworkConfig',
properties: {
networkId: {
type: 'number',
enum: [1, 3, 4, 42, 50],
},
gasPrice: { $ref: '/Number' },
zrxContractAddress: { $ref: '/Address' },
exchangeContractAddress: { $ref: '/Address' },
tokenRegistryContractAddress: { $ref: '/Address' },
tokenTransferProxyContractAddress: { $ref: '/Address' },
orderWatcherConfig: {
type: 'object',
properties: {
pollingIntervalMs: {
type: 'number',
minimum: 0,
},
numConfirmations: {
type: 'number',
minimum: 0,
},
},
},
},
type: 'object',
required: ['networkId'],
};

View File

@@ -1,91 +0,0 @@
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';
import { BalanceAndProxyAllowanceFetcher } from '../abstract/balance_and_proxy_allowance_fetcher';
import { TokenWrapper } from '../contract_wrappers/token_wrapper';
/**
* Copy on read store for balances/proxyAllowances of tokens/accounts
*/
export class BalanceAndProxyAllowanceLazyStore implements BalanceAndProxyAllowanceFetcher {
private _tokenWrapper: TokenWrapper;
private _defaultBlock: BlockParamLiteral;
private _balance: {
[tokenAddress: string]: {
[userAddress: string]: BigNumber;
};
};
private _proxyAllowance: {
[tokenAddress: string]: {
[userAddress: string]: BigNumber;
};
};
constructor(token: TokenWrapper, defaultBlock: BlockParamLiteral) {
this._tokenWrapper = token;
this._defaultBlock = defaultBlock;
this._balance = {};
this._proxyAllowance = {};
}
public async getBalanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber> {
if (_.isUndefined(this._balance[tokenAddress]) || _.isUndefined(this._balance[tokenAddress][userAddress])) {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const balance = await this._tokenWrapper.getBalanceAsync(tokenAddress, userAddress, methodOpts);
this.setBalance(tokenAddress, userAddress, balance);
}
const cachedBalance = this._balance[tokenAddress][userAddress];
return cachedBalance;
}
public setBalance(tokenAddress: string, userAddress: string, balance: BigNumber): void {
if (_.isUndefined(this._balance[tokenAddress])) {
this._balance[tokenAddress] = {};
}
this._balance[tokenAddress][userAddress] = balance;
}
public deleteBalance(tokenAddress: string, userAddress: string): void {
if (!_.isUndefined(this._balance[tokenAddress])) {
delete this._balance[tokenAddress][userAddress];
if (_.isEmpty(this._balance[tokenAddress])) {
delete this._balance[tokenAddress];
}
}
}
public async getProxyAllowanceAsync(tokenAddress: string, userAddress: string): Promise<BigNumber> {
if (
_.isUndefined(this._proxyAllowance[tokenAddress]) ||
_.isUndefined(this._proxyAllowance[tokenAddress][userAddress])
) {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const proxyAllowance = await this._tokenWrapper.getProxyAllowanceAsync(
tokenAddress,
userAddress,
methodOpts,
);
this.setProxyAllowance(tokenAddress, userAddress, proxyAllowance);
}
const cachedProxyAllowance = this._proxyAllowance[tokenAddress][userAddress];
return cachedProxyAllowance;
}
public setProxyAllowance(tokenAddress: string, userAddress: string, proxyAllowance: BigNumber): void {
if (_.isUndefined(this._proxyAllowance[tokenAddress])) {
this._proxyAllowance[tokenAddress] = {};
}
this._proxyAllowance[tokenAddress][userAddress] = proxyAllowance;
}
public deleteProxyAllowance(tokenAddress: string, userAddress: string): void {
if (!_.isUndefined(this._proxyAllowance[tokenAddress])) {
delete this._proxyAllowance[tokenAddress][userAddress];
if (_.isEmpty(this._proxyAllowance[tokenAddress])) {
delete this._proxyAllowance[tokenAddress];
}
}
}
public deleteAll(): void {
this._balance = {};
this._proxyAllowance = {};
}
}

View File

@@ -1,67 +0,0 @@
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';
import { OrderFilledCancelledFetcher } from '../abstract/order_filled_cancelled_fetcher';
import { ExchangeWrapper } from '../contract_wrappers/exchange_wrapper';
/**
* Copy on read store for filled/cancelled taker amounts
*/
export class OrderFilledCancelledLazyStore implements OrderFilledCancelledFetcher {
private _exchangeWrapper: ExchangeWrapper;
private _defaultBlock: BlockParamLiteral;
private _filledTakerAmount: {
[orderHash: string]: BigNumber;
};
private _cancelledTakerAmount: {
[orderHash: string]: BigNumber;
};
constructor(exchange: ExchangeWrapper, defaultBlock: BlockParamLiteral) {
this._exchangeWrapper = exchange;
this._defaultBlock = defaultBlock;
this._filledTakerAmount = {};
this._cancelledTakerAmount = {};
}
public async getFilledTakerAmountAsync(orderHash: string): Promise<BigNumber> {
if (_.isUndefined(this._filledTakerAmount[orderHash])) {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const filledTakerAmount = await this._exchangeWrapper.getFilledTakerAmountAsync(orderHash, methodOpts);
this.setFilledTakerAmount(orderHash, filledTakerAmount);
}
const cachedFilled = this._filledTakerAmount[orderHash];
return cachedFilled;
}
public setFilledTakerAmount(orderHash: string, filledTakerAmount: BigNumber): void {
this._filledTakerAmount[orderHash] = filledTakerAmount;
}
public deleteFilledTakerAmount(orderHash: string): void {
delete this._filledTakerAmount[orderHash];
}
public async getCancelledTakerAmountAsync(orderHash: string): Promise<BigNumber> {
if (_.isUndefined(this._cancelledTakerAmount[orderHash])) {
const methodOpts = {
defaultBlock: this._defaultBlock,
};
const cancelledTakerAmount = await this._exchangeWrapper.getCancelledTakerAmountAsync(
orderHash,
methodOpts,
);
this.setCancelledTakerAmount(orderHash, cancelledTakerAmount);
}
const cachedCancelled = this._cancelledTakerAmount[orderHash];
return cachedCancelled;
}
public setCancelledTakerAmount(orderHash: string, cancelledTakerAmount: BigNumber): void {
this._cancelledTakerAmount[orderHash] = cancelledTakerAmount;
}
public deleteCancelledTakerAmount(orderHash: string): void {
delete this._cancelledTakerAmount[orderHash];
}
public deleteAll(): void {
this._filledTakerAmount = {};
this._cancelledTakerAmount = {};
}
}

View File

@@ -1,276 +0,0 @@
import { BigNumber } from '@0xproject/utils';
import {
BlockParam,
BlockParamLiteral,
ContractAbi,
ContractEventArg,
FilterObject,
LogEntryEvent,
LogWithDecodedArgs,
Order,
SignedOrder,
} from '@0xproject/types';
import * as Web3 from 'web3';
import { EtherTokenContractEventArgs, EtherTokenEvents } from './contract_wrappers/generated/ether_token';
import { ExchangeContractEventArgs, ExchangeEvents } from './contract_wrappers/generated/exchange';
import { TokenContractEventArgs, TokenEvents } from './contract_wrappers/generated/token';
export enum ZeroExError {
ExchangeContractDoesNotExist = 'EXCHANGE_CONTRACT_DOES_NOT_EXIST',
ZRXContractDoesNotExist = 'ZRX_CONTRACT_DOES_NOT_EXIST',
EtherTokenContractDoesNotExist = 'ETHER_TOKEN_CONTRACT_DOES_NOT_EXIST',
TokenTransferProxyContractDoesNotExist = 'TOKEN_TRANSFER_PROXY_CONTRACT_DOES_NOT_EXIST',
TokenRegistryContractDoesNotExist = 'TOKEN_REGISTRY_CONTRACT_DOES_NOT_EXIST',
TokenContractDoesNotExist = 'TOKEN_CONTRACT_DOES_NOT_EXIST',
UnhandledError = 'UNHANDLED_ERROR',
UserHasNoAssociatedAddress = 'USER_HAS_NO_ASSOCIATED_ADDRESSES',
ContractNotDeployedOnNetwork = 'CONTRACT_NOT_DEPLOYED_ON_NETWORK',
InsufficientAllowanceForTransfer = 'INSUFFICIENT_ALLOWANCE_FOR_TRANSFER',
InsufficientBalanceForTransfer = 'INSUFFICIENT_BALANCE_FOR_TRANSFER',
InsufficientEthBalanceForDeposit = 'INSUFFICIENT_ETH_BALANCE_FOR_DEPOSIT',
InsufficientWEthBalanceForWithdrawal = 'INSUFFICIENT_WETH_BALANCE_FOR_WITHDRAWAL',
InvalidJump = 'INVALID_JUMP',
OutOfGas = 'OUT_OF_GAS',
NoNetworkId = 'NO_NETWORK_ID',
SubscriptionNotFound = 'SUBSCRIPTION_NOT_FOUND',
SubscriptionAlreadyPresent = 'SUBSCRIPTION_ALREADY_PRESENT',
}
export enum InternalZeroExError {
NoAbiDecoder = 'NO_ABI_DECODER',
ZrxNotInTokenRegistry = 'ZRX_NOT_IN_TOKEN_REGISTRY',
WethNotInTokenRegistry = 'WETH_NOT_IN_TOKEN_REGISTRY',
}
export type OrderAddresses = [string, string, string, string, string];
export type OrderValues = [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber];
export type LogEvent = LogEntryEvent;
export interface DecodedLogEvent<ArgsType> {
isRemoved: boolean;
log: LogWithDecodedArgs<ArgsType>;
}
export type EventCallback<ArgsType> = (err: null | Error, log?: DecodedLogEvent<ArgsType>) => void;
export type EventWatcherCallback = (err: null | Error, log?: LogEvent) => void;
export enum ExchangeContractErrCodes {
ERROR_FILL_EXPIRED, // Order has already expired
ERROR_FILL_NO_VALUE, // Order has already been fully filled or cancelled
ERROR_FILL_TRUNCATION, // Rounding error too large
ERROR_FILL_BALANCE_ALLOWANCE, // Insufficient balance or allowance for token transfer
ERROR_CANCEL_EXPIRED, // Order has already expired
ERROR_CANCEL_NO_VALUE, // Order has already been fully filled or cancelled
}
export enum ExchangeContractErrs {
OrderFillExpired = 'ORDER_FILL_EXPIRED',
OrderCancelExpired = 'ORDER_CANCEL_EXPIRED',
OrderCancelAmountZero = 'ORDER_CANCEL_AMOUNT_ZERO',
OrderAlreadyCancelledOrFilled = 'ORDER_ALREADY_CANCELLED_OR_FILLED',
OrderFillAmountZero = 'ORDER_FILL_AMOUNT_ZERO',
OrderRemainingFillAmountZero = 'ORDER_REMAINING_FILL_AMOUNT_ZERO',
OrderFillRoundingError = 'ORDER_FILL_ROUNDING_ERROR',
FillBalanceAllowanceError = 'FILL_BALANCE_ALLOWANCE_ERROR',
InsufficientTakerBalance = 'INSUFFICIENT_TAKER_BALANCE',
InsufficientTakerAllowance = 'INSUFFICIENT_TAKER_ALLOWANCE',
InsufficientMakerBalance = 'INSUFFICIENT_MAKER_BALANCE',
InsufficientMakerAllowance = 'INSUFFICIENT_MAKER_ALLOWANCE',
InsufficientTakerFeeBalance = 'INSUFFICIENT_TAKER_FEE_BALANCE',
InsufficientTakerFeeAllowance = 'INSUFFICIENT_TAKER_FEE_ALLOWANCE',
InsufficientMakerFeeBalance = 'INSUFFICIENT_MAKER_FEE_BALANCE',
InsufficientMakerFeeAllowance = 'INSUFFICIENT_MAKER_FEE_ALLOWANCE',
TransactionSenderIsNotFillOrderTaker = 'TRANSACTION_SENDER_IS_NOT_FILL_ORDER_TAKER',
MultipleMakersInSingleCancelBatchDisallowed = 'MULTIPLE_MAKERS_IN_SINGLE_CANCEL_BATCH_DISALLOWED',
InsufficientRemainingFillAmount = 'INSUFFICIENT_REMAINING_FILL_AMOUNT',
MultipleTakerTokensInFillUpToDisallowed = 'MULTIPLE_TAKER_TOKENS_IN_FILL_UP_TO_DISALLOWED',
BatchOrdersMustHaveSameExchangeAddress = 'BATCH_ORDERS_MUST_HAVE_SAME_EXCHANGE_ADDRESS',
BatchOrdersMustHaveAtLeastOneItem = 'BATCH_ORDERS_MUST_HAVE_AT_LEAST_ONE_ITEM',
}
export interface ContractEvent {
logIndex: number;
transactionIndex: number;
transactionHash: string;
blockHash: string;
blockNumber: number;
address: string;
type: string;
event: string;
args: ContractEventArgs;
}
export type ContractEventArgs = ExchangeContractEventArgs | TokenContractEventArgs | EtherTokenContractEventArgs;
// [address, name, symbol, decimals, ipfsHash, swarmHash]
export type TokenMetadata = [string, string, string, number, string, string];
export interface Token {
name: string;
address: string;
symbol: string;
decimals: number;
}
export interface TxOpts {
from: string;
gas?: number;
value?: BigNumber;
gasPrice?: BigNumber;
}
export interface TokenAddressBySymbol {
[symbol: string]: string;
}
export type ContractEvents = TokenEvents | ExchangeEvents | EtherTokenEvents;
export interface IndexedFilterValues {
[index: string]: ContractEventArg;
}
export interface BlockRange {
fromBlock: BlockParam;
toBlock: BlockParam;
}
export type DoneCallback = (err?: Error) => void;
export interface OrderCancellationRequest {
order: Order | SignedOrder;
takerTokenCancelAmount: BigNumber;
}
export interface OrderFillRequest {
signedOrder: SignedOrder;
takerTokenFillAmount: BigNumber;
}
export type AsyncMethod = (...args: any[]) => Promise<any>;
export type SyncMethod = (...args: any[]) => any;
/**
* orderExpirationCheckingIntervalMs: How often to check for expired orders. Default=50.
* eventPollingIntervalMs: How often to poll the Ethereum node for new events. Default=200.
* expirationMarginMs: Amount of time before order expiry that you'd like to be notified
* of an orders expiration. Default=0.
* cleanupJobIntervalMs: How often to run a cleanup job which revalidates all the orders. Default=1hr.
* stateLayer: Optional blockchain state layer OrderWatcher will monitor for new events. Default=latest.
*/
export interface OrderStateWatcherConfig {
orderExpirationCheckingIntervalMs?: number;
eventPollingIntervalMs?: number;
expirationMarginMs?: number;
cleanupJobIntervalMs?: number;
stateLayer: BlockParamLiteral;
}
/**
* networkId: The id of the underlying ethereum network your provider is connected to. (1-mainnet, 3-ropsten, 4-rinkeby, 42-kovan, 50-testrpc)
* gasPrice: Gas price to use with every transaction
* exchangeContractAddress: The address of an exchange contract to use
* zrxContractAddress: The address of the ZRX contract to use
* tokenRegistryContractAddress: The address of a token registry contract to use
* tokenTransferProxyContractAddress: The address of the token transfer proxy contract to use
* orderWatcherConfig: All the configs related to the orderWatcher
*/
export interface ZeroExConfig {
networkId: number;
gasPrice?: BigNumber;
exchangeContractAddress?: string;
zrxContractAddress?: string;
tokenRegistryContractAddress?: string;
tokenTransferProxyContractAddress?: string;
orderWatcherConfig?: OrderStateWatcherConfig;
}
export type ArtifactContractName = 'ZRX' | 'TokenTransferProxy' | 'TokenRegistry' | 'Token' | 'Exchange' | 'EtherToken';
export interface Artifact {
contract_name: ArtifactContractName;
abi: ContractAbi;
networks: {
[networkId: number]: {
address: string;
};
};
}
/**
* expectedFillTakerTokenAmount: If specified, the validation method will ensure that the
* supplied order maker has a sufficient allowance/balance to fill this amount of the order's
* takerTokenAmount. If not specified, the validation method ensures that the maker has a sufficient
* allowance/balance to fill the entire remaining order amount.
*/
export interface ValidateOrderFillableOpts {
expectedFillTakerTokenAmount?: BigNumber;
}
/**
* defaultBlock: The block up to which to query the blockchain state. Setting this to a historical block number
* let's the user query the blockchain's state at an arbitrary point in time. In order for this to work, the
* backing Ethereum node must keep the entire historical state of the chain (e.g setting `--pruning=archive`
* flag when running Parity).
*/
export interface MethodOpts {
defaultBlock?: BlockParam;
}
/**
* gasPrice: Gas price in Wei to use for a transaction
* gasLimit: The amount of gas to send with a transaction
*/
export interface TransactionOpts {
gasPrice?: BigNumber;
gasLimit?: number;
}
/**
* shouldValidate: Flag indicating whether the library should make attempts to validate a transaction before
* broadcasting it. For example, order has a valid signature, maker has sufficient funds, etc. Default=true.
*/
export interface OrderTransactionOpts extends TransactionOpts {
shouldValidate?: boolean;
}
export enum TradeSide {
Maker = 'maker',
Taker = 'taker',
}
export enum TransferType {
Trade = 'trade',
Fee = 'fee',
}
export interface OrderRelevantState {
makerBalance: BigNumber;
makerProxyAllowance: BigNumber;
makerFeeBalance: BigNumber;
makerFeeProxyAllowance: BigNumber;
filledTakerTokenAmount: BigNumber;
cancelledTakerTokenAmount: BigNumber;
remainingFillableMakerTokenAmount: BigNumber;
remainingFillableTakerTokenAmount: BigNumber;
}
export interface OrderStateValid {
isValid: true;
orderHash: string;
orderRelevantState: OrderRelevantState;
}
export interface OrderStateInvalid {
isValid: false;
orderHash: string;
error: ExchangeContractErrs;
}
export type OrderState = OrderStateValid | OrderStateInvalid;
export type OnOrderStateChangeCallback = (err: Error | null, orderState?: OrderState) => void;
// tslint:disable:max-file-line-count

View File

@@ -1,31 +0,0 @@
import { assert as sharedAssert } from '@0xproject/assert';
// We need those two unused imports because they're actually used by sharedAssert which gets injected here
// tslint:disable-next-line:no-unused-variable
import { Schema } from '@0xproject/json-schemas';
// tslint:disable-next-line:no-unused-variable
import { ECSignature } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as _ from 'lodash';
import { isValidSignature } from '@0xproject/order-utils';
export const assert = {
...sharedAssert,
isValidSignature(orderHash: string, ecSignature: ECSignature, signerAddress: string) {
const isValid = isValidSignature(orderHash, ecSignature, signerAddress);
this.assert(isValid, `Expected order with hash '${orderHash}' to have a valid signature`);
},
async isSenderAddressAsync(
variableName: string,
senderAddressHex: string,
web3Wrapper: Web3Wrapper,
): Promise<void> {
sharedAssert.isETHAddressHex(variableName, senderAddressHex);
const isSenderAddressAvailable = await web3Wrapper.isSenderAddressAvailableAsync(senderAddressHex);
sharedAssert.assert(
isSenderAddressAvailable,
`Specified ${variableName} ${senderAddressHex} isn't available through the supplied web3 provider`,
);
},
};

View File

@@ -1,138 +0,0 @@
import { SignedOrder } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';
import { ZeroEx } from '../0x';
import { BalanceAndProxyAllowanceFetcher } from '../abstract/balance_and_proxy_allowance_fetcher';
import { OrderFilledCancelledFetcher } from '../abstract/order_filled_cancelled_fetcher';
import { ExchangeWrapper } from '../contract_wrappers/exchange_wrapper';
import { RemainingFillableCalculator } from '../order_watcher/remaining_fillable_calculator';
import { ExchangeContractErrs, OrderRelevantState, OrderState, OrderStateInvalid, OrderStateValid } from '../types';
const ACCEPTABLE_RELATIVE_ROUNDING_ERROR = 0.0001;
export class OrderStateUtils {
private _balanceAndProxyAllowanceFetcher: BalanceAndProxyAllowanceFetcher;
private _orderFilledCancelledFetcher: OrderFilledCancelledFetcher;
private static _validateIfOrderIsValid(signedOrder: SignedOrder, orderRelevantState: OrderRelevantState): void {
const unavailableTakerTokenAmount = orderRelevantState.cancelledTakerTokenAmount.add(
orderRelevantState.filledTakerTokenAmount,
);
const availableTakerTokenAmount = signedOrder.takerTokenAmount.minus(unavailableTakerTokenAmount);
if (availableTakerTokenAmount.eq(0)) {
throw new Error(ExchangeContractErrs.OrderRemainingFillAmountZero);
}
if (orderRelevantState.makerBalance.eq(0)) {
throw new Error(ExchangeContractErrs.InsufficientMakerBalance);
}
if (orderRelevantState.makerProxyAllowance.eq(0)) {
throw new Error(ExchangeContractErrs.InsufficientMakerAllowance);
}
if (!signedOrder.makerFee.eq(0)) {
if (orderRelevantState.makerFeeBalance.eq(0)) {
throw new Error(ExchangeContractErrs.InsufficientMakerFeeBalance);
}
if (orderRelevantState.makerFeeProxyAllowance.eq(0)) {
throw new Error(ExchangeContractErrs.InsufficientMakerFeeAllowance);
}
}
const minFillableTakerTokenAmountWithinNoRoundingErrorRange = signedOrder.takerTokenAmount
.dividedBy(ACCEPTABLE_RELATIVE_ROUNDING_ERROR)
.dividedBy(signedOrder.makerTokenAmount);
if (
orderRelevantState.remainingFillableTakerTokenAmount.lessThan(
minFillableTakerTokenAmountWithinNoRoundingErrorRange,
)
) {
throw new Error(ExchangeContractErrs.OrderFillRoundingError);
}
}
constructor(
balanceAndProxyAllowanceFetcher: BalanceAndProxyAllowanceFetcher,
orderFilledCancelledFetcher: OrderFilledCancelledFetcher,
) {
this._balanceAndProxyAllowanceFetcher = balanceAndProxyAllowanceFetcher;
this._orderFilledCancelledFetcher = orderFilledCancelledFetcher;
}
public async getOrderStateAsync(signedOrder: SignedOrder): Promise<OrderState> {
const orderRelevantState = await this.getOrderRelevantStateAsync(signedOrder);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
try {
OrderStateUtils._validateIfOrderIsValid(signedOrder, orderRelevantState);
const orderState: OrderStateValid = {
isValid: true,
orderHash,
orderRelevantState,
};
return orderState;
} catch (err) {
const orderState: OrderStateInvalid = {
isValid: false,
orderHash,
error: err.message,
};
return orderState;
}
}
public async getOrderRelevantStateAsync(signedOrder: SignedOrder): Promise<OrderRelevantState> {
// HACK: We access the private property here but otherwise the interface will be less nice.
// If we pass it from the instantiator - there is no opportunity to get it there
// because JS doesn't support async constructors.
// Moreover - it's cached under the hood so it's equivalent to an async constructor.
const exchange = (this._orderFilledCancelledFetcher as any)._exchangeWrapper as ExchangeWrapper;
const zrxTokenAddress = exchange.getZRXTokenAddress();
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
const makerBalance = await this._balanceAndProxyAllowanceFetcher.getBalanceAsync(
signedOrder.makerTokenAddress,
signedOrder.maker,
);
const makerProxyAllowance = await this._balanceAndProxyAllowanceFetcher.getProxyAllowanceAsync(
signedOrder.makerTokenAddress,
signedOrder.maker,
);
const makerFeeBalance = await this._balanceAndProxyAllowanceFetcher.getBalanceAsync(
zrxTokenAddress,
signedOrder.maker,
);
const makerFeeProxyAllowance = await this._balanceAndProxyAllowanceFetcher.getProxyAllowanceAsync(
zrxTokenAddress,
signedOrder.maker,
);
const filledTakerTokenAmount = await this._orderFilledCancelledFetcher.getFilledTakerAmountAsync(orderHash);
const cancelledTakerTokenAmount = await this._orderFilledCancelledFetcher.getCancelledTakerAmountAsync(
orderHash,
);
const unavailableTakerTokenAmount = await exchange.getUnavailableTakerAmountAsync(orderHash);
const totalMakerTokenAmount = signedOrder.makerTokenAmount;
const totalTakerTokenAmount = signedOrder.takerTokenAmount;
const remainingTakerTokenAmount = totalTakerTokenAmount.minus(unavailableTakerTokenAmount);
const remainingMakerTokenAmount = remainingTakerTokenAmount
.times(totalMakerTokenAmount)
.dividedToIntegerBy(totalTakerTokenAmount);
const transferrableMakerTokenAmount = BigNumber.min([makerProxyAllowance, makerBalance]);
const transferrableFeeTokenAmount = BigNumber.min([makerFeeProxyAllowance, makerFeeBalance]);
const isMakerTokenZRX = signedOrder.makerTokenAddress === zrxTokenAddress;
const remainingFillableCalculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableFeeTokenAmount,
remainingMakerTokenAmount,
);
const remainingFillableMakerTokenAmount = remainingFillableCalculator.computeRemainingMakerFillable();
const remainingFillableTakerTokenAmount = remainingFillableCalculator.computeRemainingTakerFillable();
const orderRelevantState = {
makerBalance,
makerProxyAllowance,
makerFeeBalance,
makerFeeProxyAllowance,
filledTakerTokenAmount,
cancelledTakerTokenAmount,
remainingFillableMakerTokenAmount,
remainingFillableTakerTokenAmount,
};
return orderRelevantState;
}
}

View File

@@ -1,199 +0,0 @@
import { getOrderHashHex, OrderError } from '@0xproject/order-utils';
import { Order, SignedOrder } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';
import { ZeroEx } from '../0x';
import { ExchangeWrapper } from '../contract_wrappers/exchange_wrapper';
import { ExchangeContractErrs, TradeSide, TransferType, ZeroExError } from '../types';
import { constants } from '../utils/constants';
import { utils } from '../utils/utils';
import { ExchangeTransferSimulator } from './exchange_transfer_simulator';
export class OrderValidationUtils {
private _exchangeWrapper: ExchangeWrapper;
public static validateCancelOrderThrowIfInvalid(
order: Order,
cancelTakerTokenAmount: BigNumber,
unavailableTakerTokenAmount: BigNumber,
): void {
if (cancelTakerTokenAmount.eq(0)) {
throw new Error(ExchangeContractErrs.OrderCancelAmountZero);
}
if (order.takerTokenAmount.eq(unavailableTakerTokenAmount)) {
throw new Error(ExchangeContractErrs.OrderAlreadyCancelledOrFilled);
}
const currentUnixTimestampSec = utils.getCurrentUnixTimestampSec();
if (order.expirationUnixTimestampSec.lessThan(currentUnixTimestampSec)) {
throw new Error(ExchangeContractErrs.OrderCancelExpired);
}
}
public static async validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTradeEmulator: ExchangeTransferSimulator,
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
senderAddress: string,
zrxTokenAddress: string,
): Promise<void> {
const fillMakerTokenAmount = OrderValidationUtils._getPartialAmount(
fillTakerTokenAmount,
signedOrder.takerTokenAmount,
signedOrder.makerTokenAmount,
);
await exchangeTradeEmulator.transferFromAsync(
signedOrder.makerTokenAddress,
signedOrder.maker,
senderAddress,
fillMakerTokenAmount,
TradeSide.Maker,
TransferType.Trade,
);
await exchangeTradeEmulator.transferFromAsync(
signedOrder.takerTokenAddress,
senderAddress,
signedOrder.maker,
fillTakerTokenAmount,
TradeSide.Taker,
TransferType.Trade,
);
const makerFeeAmount = OrderValidationUtils._getPartialAmount(
fillTakerTokenAmount,
signedOrder.takerTokenAmount,
signedOrder.makerFee,
);
await exchangeTradeEmulator.transferFromAsync(
zrxTokenAddress,
signedOrder.maker,
signedOrder.feeRecipient,
makerFeeAmount,
TradeSide.Maker,
TransferType.Fee,
);
const takerFeeAmount = OrderValidationUtils._getPartialAmount(
fillTakerTokenAmount,
signedOrder.takerTokenAmount,
signedOrder.takerFee,
);
await exchangeTradeEmulator.transferFromAsync(
zrxTokenAddress,
senderAddress,
signedOrder.feeRecipient,
takerFeeAmount,
TradeSide.Taker,
TransferType.Fee,
);
}
private static _validateRemainingFillAmountNotZeroOrThrow(
takerTokenAmount: BigNumber,
unavailableTakerTokenAmount: BigNumber,
) {
if (takerTokenAmount.eq(unavailableTakerTokenAmount)) {
throw new Error(ExchangeContractErrs.OrderRemainingFillAmountZero);
}
}
private static _validateOrderNotExpiredOrThrow(expirationUnixTimestampSec: BigNumber) {
const currentUnixTimestampSec = utils.getCurrentUnixTimestampSec();
if (expirationUnixTimestampSec.lessThan(currentUnixTimestampSec)) {
throw new Error(ExchangeContractErrs.OrderFillExpired);
}
}
private static _getPartialAmount(numerator: BigNumber, denominator: BigNumber, target: BigNumber): BigNumber {
const fillMakerTokenAmount = numerator
.mul(target)
.div(denominator)
.round(0);
return fillMakerTokenAmount;
}
constructor(exchangeWrapper: ExchangeWrapper) {
this._exchangeWrapper = exchangeWrapper;
}
public async validateOrderFillableOrThrowAsync(
exchangeTradeEmulator: ExchangeTransferSimulator,
signedOrder: SignedOrder,
zrxTokenAddress: string,
expectedFillTakerTokenAmount?: BigNumber,
): Promise<void> {
const orderHash = getOrderHashHex(signedOrder);
const unavailableTakerTokenAmount = await this._exchangeWrapper.getUnavailableTakerAmountAsync(orderHash);
OrderValidationUtils._validateRemainingFillAmountNotZeroOrThrow(
signedOrder.takerTokenAmount,
unavailableTakerTokenAmount,
);
OrderValidationUtils._validateOrderNotExpiredOrThrow(signedOrder.expirationUnixTimestampSec);
let fillTakerTokenAmount = signedOrder.takerTokenAmount.minus(unavailableTakerTokenAmount);
if (!_.isUndefined(expectedFillTakerTokenAmount)) {
fillTakerTokenAmount = expectedFillTakerTokenAmount;
}
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
signedOrder.taker,
zrxTokenAddress,
);
}
public async validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator: ExchangeTransferSimulator,
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
takerAddress: string,
zrxTokenAddress: string,
): Promise<BigNumber> {
if (fillTakerTokenAmount.eq(0)) {
throw new Error(ExchangeContractErrs.OrderFillAmountZero);
}
const orderHash = getOrderHashHex(signedOrder);
if (!ZeroEx.isValidSignature(orderHash, signedOrder.ecSignature, signedOrder.maker)) {
throw new Error(OrderError.InvalidSignature);
}
const unavailableTakerTokenAmount = await this._exchangeWrapper.getUnavailableTakerAmountAsync(orderHash);
OrderValidationUtils._validateRemainingFillAmountNotZeroOrThrow(
signedOrder.takerTokenAmount,
unavailableTakerTokenAmount,
);
if (signedOrder.taker !== constants.NULL_ADDRESS && signedOrder.taker !== takerAddress) {
throw new Error(ExchangeContractErrs.TransactionSenderIsNotFillOrderTaker);
}
OrderValidationUtils._validateOrderNotExpiredOrThrow(signedOrder.expirationUnixTimestampSec);
const remainingTakerTokenAmount = signedOrder.takerTokenAmount.minus(unavailableTakerTokenAmount);
const filledTakerTokenAmount = remainingTakerTokenAmount.lessThan(fillTakerTokenAmount)
? remainingTakerTokenAmount
: fillTakerTokenAmount;
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
filledTakerTokenAmount,
takerAddress,
zrxTokenAddress,
);
const wouldRoundingErrorOccur = await this._exchangeWrapper.isRoundingErrorAsync(
filledTakerTokenAmount,
signedOrder.takerTokenAmount,
signedOrder.makerTokenAmount,
);
if (wouldRoundingErrorOccur) {
throw new Error(ExchangeContractErrs.OrderFillRoundingError);
}
return filledTakerTokenAmount;
}
public async validateFillOrKillOrderThrowIfInvalidAsync(
exchangeTradeEmulator: ExchangeTransferSimulator,
signedOrder: SignedOrder,
fillTakerTokenAmount: BigNumber,
takerAddress: string,
zrxTokenAddress: string,
): Promise<void> {
const filledTakerTokenAmount = await this.validateFillOrderThrowIfInvalidAsync(
exchangeTradeEmulator,
signedOrder,
fillTakerTokenAmount,
takerAddress,
zrxTokenAddress,
);
if (filledTakerTokenAmount !== fillTakerTokenAmount) {
throw new Error(ExchangeContractErrs.InsufficientRemainingFillAmount);
}
}
}

View File

@@ -1,13 +0,0 @@
import { BigNumber } from '@0xproject/utils';
export const utils = {
spawnSwitchErr(name: string, value: any): Error {
return new Error(`Unexpected switch value: ${value} encountered for ${name}`);
},
getCurrentUnixTimestampSec(): BigNumber {
return new BigNumber(Date.now() / 1000).round();
},
getCurrentUnixTimestampMs(): BigNumber {
return new BigNumber(Date.now());
},
};

View File

@@ -1,165 +0,0 @@
import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils';
import { BigNumber } from '@0xproject/utils';
import * as chai from 'chai';
import * as _ from 'lodash';
import 'mocha';
import * as path from 'path';
import * as Sinon from 'sinon';
import { ApprovalContractEventArgs, LogWithDecodedArgs, Order, TokenEvents, ZeroEx } from '../src';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { TokenUtils } from './utils/token_utils';
import { provider, web3Wrapper } from './utils/web3_wrapper';
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
chaiSetup.configure();
const expect = chai.expect;
describe('ZeroEx library', () => {
let zeroEx: ZeroEx;
before(async () => {
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
zeroEx = new ZeroEx(provider, config);
});
describe('#setProvider', () => {
it('overrides provider in nested web3s and invalidates contractInstances', async () => {
// Instantiate the contract instances with the current provider
await (zeroEx.exchange as any)._getExchangeContractAsync();
await (zeroEx.tokenRegistry as any)._getTokenRegistryContractAsync();
expect((zeroEx.exchange as any)._exchangeContractIfExists).to.not.be.undefined();
expect((zeroEx.tokenRegistry as any)._tokenRegistryContractIfExists).to.not.be.undefined();
// Add property to newProvider so that we can differentiate it from old provider
(provider as any).zeroExTestId = 1;
zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID);
// Check that contractInstances with old provider are removed after provider update
expect((zeroEx.exchange as any)._exchangeContractIfExists).to.be.undefined();
expect((zeroEx.tokenRegistry as any)._tokenRegistryContractIfExists).to.be.undefined();
// Check that all nested web3 wrapper instances return the updated provider
const nestedWeb3WrapperProvider = (zeroEx as any)._web3Wrapper.getProvider();
expect(nestedWeb3WrapperProvider.zeroExTestId).to.be.a('number');
const exchangeWeb3WrapperProvider = (zeroEx.exchange as any)._web3Wrapper.getProvider();
expect(exchangeWeb3WrapperProvider.zeroExTestId).to.be.a('number');
const tokenRegistryWeb3WrapperProvider = (zeroEx.tokenRegistry as any)._web3Wrapper.getProvider();
expect(tokenRegistryWeb3WrapperProvider.zeroExTestId).to.be.a('number');
});
});
describe('#isValidSignature', () => {
// The Exchange smart contract `isValidSignature` method only validates orderHashes and assumes
// the length of the data is exactly 32 bytes. Thus for these tests, we use data of this size.
const dataHex = '0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b0';
const signature = {
v: 27,
r: '0x61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33',
s: '0x40349190569279751135161d22529dc25add4f6069af05be04cacbda2ace2254',
};
const address = '0x5409ed021d9299bf6814279a6a1411a7e866a631';
it("should return false if the data doesn't pertain to the signature & address", async () => {
return expect(
(zeroEx.exchange as any)._isValidSignatureUsingContractCallAsync('0x0', signature, address),
).to.become(false);
});
it("should return false if the address doesn't pertain to the signature & data", async () => {
const validUnrelatedAddress = '0x8b0292b11a196601ed2ce54b665cafeca0347d42';
return expect(
(zeroEx.exchange as any)._isValidSignatureUsingContractCallAsync(
dataHex,
signature,
validUnrelatedAddress,
),
).to.become(false);
});
it("should return false if the signature doesn't pertain to the dataHex & address", async () => {
const wrongSignature = _.assign({}, signature, { v: 28 });
return expect(
(zeroEx.exchange as any)._isValidSignatureUsingContractCallAsync(dataHex, wrongSignature, address),
).to.become(false);
});
it('should return true if the signature does pertain to the dataHex & address', async () => {
return expect(
(zeroEx.exchange as any)._isValidSignatureUsingContractCallAsync(dataHex, signature, address),
).to.become(true);
});
});
describe('#toUnitAmount', () => {
it('should throw if invalid baseUnit amount supplied as argument', () => {
const invalidBaseUnitAmount = new BigNumber(1000000000.4);
const decimals = 6;
expect(() => ZeroEx.toUnitAmount(invalidBaseUnitAmount, decimals)).to.throw(
'amount should be in baseUnits (no decimals), found value: 1000000000.4',
);
});
it('Should return the expected unit amount for the decimals passed in', () => {
const baseUnitAmount = new BigNumber(1000000000);
const decimals = 6;
const unitAmount = ZeroEx.toUnitAmount(baseUnitAmount, decimals);
const expectedUnitAmount = new BigNumber(1000);
expect(unitAmount).to.be.bignumber.equal(expectedUnitAmount);
});
});
describe('#toBaseUnitAmount', () => {
it('Should return the expected base unit amount for the decimals passed in', () => {
const unitAmount = new BigNumber(1000);
const decimals = 6;
const baseUnitAmount = ZeroEx.toBaseUnitAmount(unitAmount, decimals);
const expectedUnitAmount = new BigNumber(1000000000);
expect(baseUnitAmount).to.be.bignumber.equal(expectedUnitAmount);
});
it('should throw if unitAmount has more decimals then specified as the max decimal precision', () => {
const unitAmount = new BigNumber(0.823091);
const decimals = 5;
expect(() => ZeroEx.toBaseUnitAmount(unitAmount, decimals)).to.throw(
'Invalid unit amount: 0.823091 - Too many decimal places',
);
});
});
describe('#awaitTransactionMinedAsync', () => {
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
it('returns transaction receipt with decoded logs', async () => {
const availableAddresses = await zeroEx.getAvailableAddressesAsync();
const coinbase = availableAddresses[0];
const tokens = await zeroEx.tokenRegistry.getTokensAsync();
const tokenUtils = new TokenUtils(tokens);
const zrxTokenAddress = tokenUtils.getProtocolTokenOrThrow().address;
const proxyAddress = zeroEx.proxy.getContractAddress();
const txHash = await zeroEx.token.setUnlimitedProxyAllowanceAsync(zrxTokenAddress, coinbase);
const txReceiptWithDecodedLogs = await zeroEx.awaitTransactionMinedAsync(txHash);
const log = txReceiptWithDecodedLogs.logs[0] as LogWithDecodedArgs<ApprovalContractEventArgs>;
expect(log.event).to.be.equal(TokenEvents.Approval);
expect(log.args._owner).to.be.equal(coinbase);
expect(log.args._spender).to.be.equal(proxyAddress);
expect(log.args._value).to.be.bignumber.equal(zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS);
});
});
describe('#config', () => {
it('allows to specify exchange contract address', async () => {
const zeroExConfig = {
exchangeContractAddress: ZeroEx.NULL_ADDRESS,
networkId: constants.TESTRPC_NETWORK_ID,
};
const zeroExWithWrongExchangeAddress = new ZeroEx(provider, zeroExConfig);
expect(zeroExWithWrongExchangeAddress.exchange.getContractAddress()).to.be.equal(ZeroEx.NULL_ADDRESS);
});
it('allows to specify token registry token contract address', async () => {
const zeroExConfig = {
tokenRegistryContractAddress: ZeroEx.NULL_ADDRESS,
networkId: constants.TESTRPC_NETWORK_ID,
};
const zeroExWithWrongTokenRegistryAddress = new ZeroEx(provider, zeroExConfig);
expect(zeroExWithWrongTokenRegistryAddress.tokenRegistry.getContractAddress()).to.be.equal(
ZeroEx.NULL_ADDRESS,
);
});
});
});

View File

@@ -1,49 +0,0 @@
import { web3Factory } from '@0xproject/dev-utils';
import * as fs from 'fs';
import { ZeroEx } from '../src';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
chaiSetup.configure();
// Those tests are slower cause they're talking to a remote node
const TIMEOUT = 10000;
describe('Artifacts', () => {
describe('contracts are deployed on kovan', () => {
const kovanRpcUrl = constants.KOVAN_RPC_URL;
const provider = web3Factory.create({ rpcUrl: kovanRpcUrl }).currentProvider;
const config = {
networkId: constants.KOVAN_NETWORK_ID,
};
const zeroEx = new ZeroEx(provider, config);
it('token registry contract is deployed', async () => {
await (zeroEx.tokenRegistry as any)._getTokenRegistryContractAsync();
}).timeout(TIMEOUT);
it('proxy contract is deployed', async () => {
await (zeroEx.proxy as any)._getTokenTransferProxyContractAsync();
}).timeout(TIMEOUT);
it('exchange contract is deployed', async () => {
await (zeroEx.exchange as any)._getExchangeContractAsync();
}).timeout(TIMEOUT);
});
describe('contracts are deployed on ropsten', () => {
const ropstenRpcUrl = constants.ROPSTEN_RPC_URL;
const provider = web3Factory.create({ rpcUrl: ropstenRpcUrl }).currentProvider;
const config = {
networkId: constants.ROPSTEN_NETWORK_ID,
};
const zeroEx = new ZeroEx(provider, config);
it('token registry contract is deployed', async () => {
await (zeroEx.tokenRegistry as any)._getTokenRegistryContractAsync();
}).timeout(TIMEOUT);
it('proxy contract is deployed', async () => {
await (zeroEx.proxy as any)._getTokenTransferProxyContractAsync();
}).timeout(TIMEOUT);
it('exchange contract is deployed', async () => {
await (zeroEx.exchange as any)._getExchangeContractAsync();
}).timeout(TIMEOUT);
});
});

View File

@@ -1,125 +0,0 @@
import { web3Factory } from '@0xproject/dev-utils';
import { LogEntry } from '@0xproject/types';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import * as chai from 'chai';
import * as _ from 'lodash';
import 'mocha';
import * as Sinon from 'sinon';
import { LogEvent } from '../src';
import { EventWatcher } from '../src/order_watcher/event_watcher';
import { DoneCallback } from '../src/types';
import { chaiSetup } from './utils/chai_setup';
import { reportNodeCallbackErrors } from './utils/report_callback_errors';
import { provider } from './utils/web3_wrapper';
chaiSetup.configure();
const expect = chai.expect;
describe('EventWatcher', () => {
let stubs: Sinon.SinonStub[] = [];
let eventWatcher: EventWatcher;
let web3Wrapper: Web3Wrapper;
const logA: LogEntry = {
address: '0x71d271f8b14adef568f8f28f1587ce7271ac4ca5',
blockHash: null,
blockNumber: null,
data: '',
logIndex: null,
topics: [],
transactionHash: '0x004881d38cd4a8f72f1a0d68c8b9b8124504706041ff37019c1d1ed6bfda8e17',
transactionIndex: 0,
};
const logB: LogEntry = {
address: '0x8d12a197cb00d4747a1fe03395095ce2a5cc6819',
blockHash: null,
blockNumber: null,
data: '',
logIndex: null,
topics: ['0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567'],
transactionHash: '0x01ef3c048b18d9b09ea195b4ed94cf8dd5f3d857a1905ff886b152cfb1166f25',
transactionIndex: 0,
};
const logC: LogEntry = {
address: '0x1d271f8b174adef58f1587ce68f8f27271ac4ca5',
blockHash: null,
blockNumber: null,
data: '',
logIndex: null,
topics: ['0xf341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567'],
transactionHash: '0x01ef3c048b18d9b09ea195b4ed94cf8dd5f3d857a1905ff886b152cfb1166f25',
transactionIndex: 0,
};
before(async () => {
const pollingIntervalMs = 10;
web3Wrapper = new Web3Wrapper(provider);
eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalMs);
});
afterEach(() => {
// clean up any stubs after the test has completed
_.each(stubs, s => s.restore());
stubs = [];
eventWatcher.unsubscribe();
});
it('correctly emits initial log events', (done: DoneCallback) => {
const logs: LogEntry[] = [logA, logB];
const expectedLogEvents = [
{
removed: false,
...logA,
},
{
removed: false,
...logB,
},
];
const getLogsStub = Sinon.stub(web3Wrapper, 'getLogsAsync');
getLogsStub.onCall(0).returns(logs);
stubs.push(getLogsStub);
const expectedToBeCalledOnce = false;
const callback = reportNodeCallbackErrors(done, expectedToBeCalledOnce)((event: LogEvent) => {
const expectedLogEvent = expectedLogEvents.shift();
expect(event).to.be.deep.equal(expectedLogEvent);
if (_.isEmpty(expectedLogEvents)) {
done();
}
});
eventWatcher.subscribe(callback);
});
it('correctly computes the difference and emits only changes', (done: DoneCallback) => {
const initialLogs: LogEntry[] = [logA, logB];
const changedLogs: LogEntry[] = [logA, logC];
const expectedLogEvents = [
{
removed: false,
...logA,
},
{
removed: false,
...logB,
},
{
removed: true,
...logB,
},
{
removed: false,
...logC,
},
];
const getLogsStub = Sinon.stub(web3Wrapper, 'getLogsAsync');
getLogsStub.onCall(0).returns(initialLogs);
getLogsStub.onCall(1).returns(changedLogs);
stubs.push(getLogsStub);
const expectedToBeCalledOnce = false;
const callback = reportNodeCallbackErrors(done, expectedToBeCalledOnce)((event: LogEvent) => {
const expectedLogEvent = expectedLogEvents.shift();
expect(event).to.be.deep.equal(expectedLogEvent);
if (_.isEmpty(expectedLogEvents)) {
done();
}
});
eventWatcher.subscribe(callback);
});
});

View File

@@ -1,117 +0,0 @@
import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils';
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as chai from 'chai';
import { ExchangeContractErrs, Token, ZeroEx } from '../src';
import { TradeSide, TransferType } from '../src/types';
import { ExchangeTransferSimulator } from '../src/utils/exchange_transfer_simulator';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { provider, web3Wrapper } from './utils/web3_wrapper';
chaiSetup.configure();
const expect = chai.expect;
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
describe('ExchangeTransferSimulator', () => {
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
const zeroEx = new ZeroEx(provider, config);
const transferAmount = new BigNumber(5);
let userAddresses: string[];
let tokens: Token[];
let coinbase: string;
let sender: string;
let recipient: string;
let exampleTokenAddress: string;
let exchangeTransferSimulator: ExchangeTransferSimulator;
let txHash: string;
before(async () => {
userAddresses = await zeroEx.getAvailableAddressesAsync();
[coinbase, sender, recipient] = userAddresses;
tokens = await zeroEx.tokenRegistry.getTokensAsync();
exampleTokenAddress = tokens[0].address;
});
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
describe('#transferFromAsync', () => {
beforeEach(() => {
exchangeTransferSimulator = new ExchangeTransferSimulator(zeroEx.token, BlockParamLiteral.Latest);
});
it("throws if the user doesn't have enough allowance", async () => {
return expect(
exchangeTransferSimulator.transferFromAsync(
exampleTokenAddress,
sender,
recipient,
transferAmount,
TradeSide.Taker,
TransferType.Trade,
),
).to.be.rejectedWith(ExchangeContractErrs.InsufficientTakerAllowance);
});
it("throws if the user doesn't have enough balance", async () => {
txHash = await zeroEx.token.setProxyAllowanceAsync(exampleTokenAddress, sender, transferAmount);
await zeroEx.awaitTransactionMinedAsync(txHash);
return expect(
exchangeTransferSimulator.transferFromAsync(
exampleTokenAddress,
sender,
recipient,
transferAmount,
TradeSide.Maker,
TransferType.Trade,
),
).to.be.rejectedWith(ExchangeContractErrs.InsufficientMakerBalance);
});
it('updates balances and proxyAllowance after transfer', async () => {
txHash = await zeroEx.token.transferAsync(exampleTokenAddress, coinbase, sender, transferAmount);
await zeroEx.awaitTransactionMinedAsync(txHash);
txHash = await zeroEx.token.setProxyAllowanceAsync(exampleTokenAddress, sender, transferAmount);
await zeroEx.awaitTransactionMinedAsync(txHash);
await exchangeTransferSimulator.transferFromAsync(
exampleTokenAddress,
sender,
recipient,
transferAmount,
TradeSide.Taker,
TransferType.Trade,
);
const store = (exchangeTransferSimulator as any)._store;
const senderBalance = await store.getBalanceAsync(exampleTokenAddress, sender);
const recipientBalance = await store.getBalanceAsync(exampleTokenAddress, recipient);
const senderProxyAllowance = await store.getProxyAllowanceAsync(exampleTokenAddress, sender);
expect(senderBalance).to.be.bignumber.equal(0);
expect(recipientBalance).to.be.bignumber.equal(transferAmount);
expect(senderProxyAllowance).to.be.bignumber.equal(0);
});
it("doesn't update proxyAllowance after transfer if unlimited", async () => {
txHash = await zeroEx.token.transferAsync(exampleTokenAddress, coinbase, sender, transferAmount);
await zeroEx.awaitTransactionMinedAsync(txHash);
txHash = await zeroEx.token.setUnlimitedProxyAllowanceAsync(exampleTokenAddress, sender);
await zeroEx.awaitTransactionMinedAsync(txHash);
await exchangeTransferSimulator.transferFromAsync(
exampleTokenAddress,
sender,
recipient,
transferAmount,
TradeSide.Taker,
TransferType.Trade,
);
const store = (exchangeTransferSimulator as any)._store;
const senderBalance = await store.getBalanceAsync(exampleTokenAddress, sender);
const recipientBalance = await store.getBalanceAsync(exampleTokenAddress, recipient);
const senderProxyAllowance = await store.getProxyAllowanceAsync(exampleTokenAddress, sender);
expect(senderBalance).to.be.bignumber.equal(0);
expect(recipientBalance).to.be.bignumber.equal(transferAmount);
expect(senderProxyAllowance).to.be.bignumber.equal(zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS);
});
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +0,0 @@
import { runMigrationsAsync } from '@0xproject/migrations';
import { deployer } from './utils/deployer';
before('migrate contracts', async () => {
await runMigrationsAsync(deployer);
});

View File

@@ -1,558 +0,0 @@
import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils';
import { BigNumber } from '@0xproject/utils';
import * as chai from 'chai';
import * as _ from 'lodash';
import 'mocha';
import {
ExchangeContractErrs,
OrderState,
OrderStateInvalid,
OrderStateValid,
SignedOrder,
Token,
ZeroEx,
ZeroExError,
} from '../src';
import { OrderStateWatcher } from '../src/order_watcher/order_state_watcher';
import { DoneCallback } from '../src/types';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { FillScenarios } from './utils/fill_scenarios';
import { reportNodeCallbackErrors } from './utils/report_callback_errors';
import { TokenUtils } from './utils/token_utils';
import { provider, web3Wrapper } from './utils/web3_wrapper';
const TIMEOUT_MS = 150;
chaiSetup.configure();
const expect = chai.expect;
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
describe('OrderStateWatcher', () => {
let zeroEx: ZeroEx;
let tokens: Token[];
let tokenUtils: TokenUtils;
let fillScenarios: FillScenarios;
let userAddresses: string[];
let zrxTokenAddress: string;
let exchangeContractAddress: string;
let makerToken: Token;
let takerToken: Token;
let maker: string;
let taker: string;
let signedOrder: SignedOrder;
let orderStateWatcher: OrderStateWatcher;
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
const decimals = constants.ZRX_DECIMALS;
const fillableAmount = ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals);
before(async () => {
zeroEx = new ZeroEx(provider, config);
orderStateWatcher = zeroEx.createOrderStateWatcher();
exchangeContractAddress = zeroEx.exchange.getContractAddress();
userAddresses = await zeroEx.getAvailableAddressesAsync();
[, maker, taker] = userAddresses;
tokens = await zeroEx.tokenRegistry.getTokensAsync();
tokenUtils = new TokenUtils(tokens);
zrxTokenAddress = tokenUtils.getProtocolTokenOrThrow().address;
fillScenarios = new FillScenarios(zeroEx, userAddresses, tokens, zrxTokenAddress, exchangeContractAddress);
await fillScenarios.initTokenBalancesAsync();
[makerToken, takerToken] = tokenUtils.getDummyTokens();
});
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
describe('#removeOrder', async () => {
it('should successfully remove existing order', async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
expect((orderStateWatcher as any)._orderByOrderHash).to.include({
[orderHash]: signedOrder,
});
let dependentOrderHashes = (orderStateWatcher as any)._dependentOrderHashes;
expect(dependentOrderHashes[signedOrder.maker][signedOrder.makerTokenAddress]).to.have.keys(orderHash);
orderStateWatcher.removeOrder(orderHash);
expect((orderStateWatcher as any)._orderByOrderHash).to.not.include({
[orderHash]: signedOrder,
});
dependentOrderHashes = (orderStateWatcher as any)._dependentOrderHashes;
expect(dependentOrderHashes[signedOrder.maker]).to.be.undefined();
});
it('should no-op when removing a non-existing order', async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
const nonExistentOrderHash = `0x${orderHash
.substr(2)
.split('')
.reverse()
.join('')}`;
orderStateWatcher.removeOrder(nonExistentOrderHash);
});
});
describe('#subscribe', async () => {
afterEach(async () => {
orderStateWatcher.unsubscribe();
});
it('should fail when trying to subscribe twice', async () => {
orderStateWatcher.subscribe(_.noop);
expect(() => orderStateWatcher.subscribe(_.noop)).to.throw(ZeroExError.SubscriptionAlreadyPresent);
});
});
describe('tests with cleanup', async () => {
afterEach(async () => {
orderStateWatcher.unsubscribe();
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.removeOrder(orderHash);
});
it('should emit orderStateInvalid when maker allowance set to 0 for watched order', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.false();
const invalidOrderState = orderState as OrderStateInvalid;
expect(invalidOrderState.orderHash).to.be.equal(orderHash);
expect(invalidOrderState.error).to.be.equal(ExchangeContractErrs.InsufficientMakerAllowance);
});
orderStateWatcher.subscribe(callback);
await zeroEx.token.setProxyAllowanceAsync(makerToken.address, maker, new BigNumber(0));
})().catch(done);
});
it('should not emit an orderState event when irrelevant Transfer event received', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
throw new Error('OrderState callback fired for irrelevant order');
});
orderStateWatcher.subscribe(callback);
const notTheMaker = userAddresses[0];
const anyRecipient = taker;
const transferAmount = new BigNumber(2);
await zeroEx.token.transferAsync(makerToken.address, notTheMaker, anyRecipient, transferAmount);
setTimeout(() => {
done();
}, TIMEOUT_MS);
})().catch(done);
});
it('should emit orderStateInvalid when maker moves balance backing watched order', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.false();
const invalidOrderState = orderState as OrderStateInvalid;
expect(invalidOrderState.orderHash).to.be.equal(orderHash);
expect(invalidOrderState.error).to.be.equal(ExchangeContractErrs.InsufficientMakerBalance);
});
orderStateWatcher.subscribe(callback);
const anyRecipient = taker;
const makerBalance = await zeroEx.token.getBalanceAsync(makerToken.address, maker);
await zeroEx.token.transferAsync(makerToken.address, maker, anyRecipient, makerBalance);
})().catch(done);
});
it('should emit orderStateInvalid when watched order fully filled', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.false();
const invalidOrderState = orderState as OrderStateInvalid;
expect(invalidOrderState.orderHash).to.be.equal(orderHash);
expect(invalidOrderState.error).to.be.equal(ExchangeContractErrs.OrderRemainingFillAmountZero);
});
orderStateWatcher.subscribe(callback);
const shouldThrowOnInsufficientBalanceOrAllowance = true;
await zeroEx.exchange.fillOrderAsync(
signedOrder,
fillableAmount,
shouldThrowOnInsufficientBalanceOrAllowance,
taker,
);
})().catch(done);
});
it('should emit orderStateValid when watched order partially filled', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const makerBalance = await zeroEx.token.getBalanceAsync(makerToken.address, maker);
const fillAmountInBaseUnits = new BigNumber(2);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.true();
const validOrderState = orderState as OrderStateValid;
expect(validOrderState.orderHash).to.be.equal(orderHash);
const orderRelevantState = validOrderState.orderRelevantState;
const remainingMakerBalance = makerBalance.sub(fillAmountInBaseUnits);
const remainingFillable = fillableAmount.minus(fillAmountInBaseUnits);
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
remainingFillable,
);
expect(orderRelevantState.remainingFillableTakerTokenAmount).to.be.bignumber.equal(
remainingFillable,
);
expect(orderRelevantState.makerBalance).to.be.bignumber.equal(remainingMakerBalance);
});
orderStateWatcher.subscribe(callback);
const shouldThrowOnInsufficientBalanceOrAllowance = true;
await zeroEx.exchange.fillOrderAsync(
signedOrder,
fillAmountInBaseUnits,
shouldThrowOnInsufficientBalanceOrAllowance,
taker,
);
})().catch(done);
});
it('should trigger the callback when orders backing ZRX allowance changes', (done: DoneCallback) => {
(async () => {
const makerFee = ZeroEx.toBaseUnitAmount(new BigNumber(2), 18);
const takerFee = ZeroEx.toBaseUnitAmount(new BigNumber(0), 18);
signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerToken.address,
takerToken.address,
makerFee,
takerFee,
maker,
taker,
fillableAmount,
taker,
);
const callback = reportNodeCallbackErrors(done)();
orderStateWatcher.addOrder(signedOrder);
orderStateWatcher.subscribe(callback);
await zeroEx.token.setProxyAllowanceAsync(zrxTokenAddress, maker, new BigNumber(0));
})().catch(done);
});
describe('remainingFillable(M|T)akerTokenAmount', () => {
it('should calculate correct remaining fillable', (done: DoneCallback) => {
(async () => {
const takerFillableAmount = ZeroEx.toBaseUnitAmount(new BigNumber(10), decimals);
const makerFillableAmount = ZeroEx.toBaseUnitAmount(new BigNumber(20), decimals);
signedOrder = await fillScenarios.createAsymmetricFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
makerFillableAmount,
takerFillableAmount,
);
const fillAmountInBaseUnits = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.true();
const validOrderState = orderState as OrderStateValid;
expect(validOrderState.orderHash).to.be.equal(orderHash);
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
ZeroEx.toBaseUnitAmount(new BigNumber(16), decimals),
);
expect(orderRelevantState.remainingFillableTakerTokenAmount).to.be.bignumber.equal(
ZeroEx.toBaseUnitAmount(new BigNumber(8), decimals),
);
});
orderStateWatcher.subscribe(callback);
const shouldThrowOnInsufficientBalanceOrAllowance = true;
await zeroEx.exchange.fillOrderAsync(
signedOrder,
fillAmountInBaseUnits,
shouldThrowOnInsufficientBalanceOrAllowance,
taker,
);
})().catch(done);
});
it('should equal approved amount when approved amount is lowest', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const changedMakerApprovalAmount = ZeroEx.toBaseUnitAmount(new BigNumber(3), decimals);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
const validOrderState = orderState as OrderStateValid;
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
changedMakerApprovalAmount,
);
expect(orderRelevantState.remainingFillableTakerTokenAmount).to.be.bignumber.equal(
changedMakerApprovalAmount,
);
});
orderStateWatcher.subscribe(callback);
await zeroEx.token.setProxyAllowanceAsync(makerToken.address, maker, changedMakerApprovalAmount);
})().catch(done);
});
it('should equal balance amount when balance amount is lowest', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const makerBalance = await zeroEx.token.getBalanceAsync(makerToken.address, maker);
const remainingAmount = ZeroEx.toBaseUnitAmount(new BigNumber(1), decimals);
const transferAmount = makerBalance.sub(remainingAmount);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.true();
const validOrderState = orderState as OrderStateValid;
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
remainingAmount,
);
expect(orderRelevantState.remainingFillableTakerTokenAmount).to.be.bignumber.equal(
remainingAmount,
);
});
orderStateWatcher.subscribe(callback);
await zeroEx.token.transferAsync(makerToken.address, maker, ZeroEx.NULL_ADDRESS, transferAmount);
})().catch(done);
});
it('should equal remaining amount when partially cancelled and order has fees', (done: DoneCallback) => {
(async () => {
const takerFee = ZeroEx.toBaseUnitAmount(new BigNumber(0), decimals);
const makerFee = ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals);
const feeRecipient = taker;
signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerToken.address,
takerToken.address,
makerFee,
takerFee,
maker,
taker,
fillableAmount,
feeRecipient,
);
const remainingTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(4), decimals);
const transferTokenAmount = makerFee.sub(remainingTokenAmount);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.true();
const validOrderState = orderState as OrderStateValid;
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
remainingTokenAmount,
);
});
orderStateWatcher.subscribe(callback);
await zeroEx.exchange.cancelOrderAsync(signedOrder, transferTokenAmount);
})().catch(done);
});
it('should equal ratio amount when fee balance is lowered', (done: DoneCallback) => {
(async () => {
const takerFee = ZeroEx.toBaseUnitAmount(new BigNumber(0), decimals);
const makerFee = ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals);
const feeRecipient = taker;
signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerToken.address,
takerToken.address,
makerFee,
takerFee,
maker,
taker,
fillableAmount,
feeRecipient,
);
const remainingFeeAmount = ZeroEx.toBaseUnitAmount(new BigNumber(3), decimals);
const remainingTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(4), decimals);
const transferTokenAmount = makerFee.sub(remainingTokenAmount);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
const validOrderState = orderState as OrderStateValid;
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
remainingFeeAmount,
);
});
orderStateWatcher.subscribe(callback);
await zeroEx.token.setProxyAllowanceAsync(zrxTokenAddress, maker, remainingFeeAmount);
await zeroEx.token.transferAsync(
makerToken.address,
maker,
ZeroEx.NULL_ADDRESS,
transferTokenAmount,
);
})().catch(done);
});
it('should calculate full amount when all available and non-divisible', (done: DoneCallback) => {
(async () => {
const takerFee = ZeroEx.toBaseUnitAmount(new BigNumber(0), decimals);
const makerFee = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
const feeRecipient = taker;
signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerToken.address,
takerToken.address,
makerFee,
takerFee,
maker,
taker,
fillableAmount,
feeRecipient,
);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
const validOrderState = orderState as OrderStateValid;
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.remainingFillableMakerTokenAmount).to.be.bignumber.equal(
fillableAmount,
);
});
orderStateWatcher.subscribe(callback);
await zeroEx.token.setProxyAllowanceAsync(
makerToken.address,
maker,
ZeroEx.toBaseUnitAmount(new BigNumber(100), decimals),
);
})().catch(done);
});
});
it('should emit orderStateInvalid when watched order cancelled', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.false();
const invalidOrderState = orderState as OrderStateInvalid;
expect(invalidOrderState.orderHash).to.be.equal(orderHash);
expect(invalidOrderState.error).to.be.equal(ExchangeContractErrs.OrderRemainingFillAmountZero);
});
orderStateWatcher.subscribe(callback);
await zeroEx.exchange.cancelOrderAsync(signedOrder, fillableAmount);
})().catch(done);
});
it('should emit orderStateInvalid when within rounding error range', (done: DoneCallback) => {
(async () => {
const remainingFillableAmountInBaseUnits = new BigNumber(100);
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.false();
const invalidOrderState = orderState as OrderStateInvalid;
expect(invalidOrderState.orderHash).to.be.equal(orderHash);
expect(invalidOrderState.error).to.be.equal(ExchangeContractErrs.OrderFillRoundingError);
});
orderStateWatcher.subscribe(callback);
await zeroEx.exchange.cancelOrderAsync(
signedOrder,
fillableAmount.minus(remainingFillableAmountInBaseUnits),
);
})().catch(done);
});
it('should emit orderStateValid when watched order partially cancelled', (done: DoneCallback) => {
(async () => {
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerToken.address,
takerToken.address,
maker,
taker,
fillableAmount,
);
const cancelAmountInBaseUnits = new BigNumber(2);
const orderHash = ZeroEx.getOrderHashHex(signedOrder);
orderStateWatcher.addOrder(signedOrder);
const callback = reportNodeCallbackErrors(done)((orderState: OrderState) => {
expect(orderState.isValid).to.be.true();
const validOrderState = orderState as OrderStateValid;
expect(validOrderState.orderHash).to.be.equal(orderHash);
const orderRelevantState = validOrderState.orderRelevantState;
expect(orderRelevantState.cancelledTakerTokenAmount).to.be.bignumber.equal(cancelAmountInBaseUnits);
});
orderStateWatcher.subscribe(callback);
await zeroEx.exchange.cancelOrderAsync(signedOrder, cancelAmountInBaseUnits);
})().catch(done);
});
});
}); // tslint:disable:max-file-line-count

View File

@@ -1,507 +0,0 @@
import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils';
import { OrderError } from '@0xproject/order-utils';
import { BlockParamLiteral } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as chai from 'chai';
import * as Sinon from 'sinon';
import { ExchangeContractErrs, SignedOrder, Token, ZeroEx, ZeroExError } from '../src';
import { TradeSide, TransferType } from '../src/types';
import { ExchangeTransferSimulator } from '../src/utils/exchange_transfer_simulator';
import { OrderValidationUtils } from '../src/utils/order_validation_utils';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { FillScenarios } from './utils/fill_scenarios';
import { TokenUtils } from './utils/token_utils';
import { provider, web3Wrapper } from './utils/web3_wrapper';
chaiSetup.configure();
const expect = chai.expect;
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
describe('OrderValidation', () => {
let zeroEx: ZeroEx;
let userAddresses: string[];
let tokens: Token[];
let tokenUtils: TokenUtils;
let exchangeContractAddress: string;
let zrxTokenAddress: string;
let fillScenarios: FillScenarios;
let makerTokenAddress: string;
let takerTokenAddress: string;
let coinbase: string;
let makerAddress: string;
let takerAddress: string;
let feeRecipient: string;
const fillableAmount = new BigNumber(5);
const fillTakerAmount = new BigNumber(5);
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
before(async () => {
zeroEx = new ZeroEx(provider, config);
exchangeContractAddress = zeroEx.exchange.getContractAddress();
userAddresses = await zeroEx.getAvailableAddressesAsync();
[coinbase, makerAddress, takerAddress, feeRecipient] = userAddresses;
tokens = await zeroEx.tokenRegistry.getTokensAsync();
tokenUtils = new TokenUtils(tokens);
zrxTokenAddress = tokenUtils.getProtocolTokenOrThrow().address;
fillScenarios = new FillScenarios(zeroEx, userAddresses, tokens, zrxTokenAddress, exchangeContractAddress);
const [makerToken, takerToken] = tokenUtils.getDummyTokens();
makerTokenAddress = makerToken.address;
takerTokenAddress = takerToken.address;
});
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
describe('validateOrderFillableOrThrowAsync', () => {
it('should succeed if the order is fillable', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
await zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder);
});
it('should succeed if the maker is buying ZRX and has no ZRX balance', async () => {
const makerFee = new BigNumber(2);
const takerFee = new BigNumber(2);
const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerTokenAddress,
zrxTokenAddress,
makerFee,
takerFee,
makerAddress,
takerAddress,
fillableAmount,
feeRecipient,
);
const zrxMakerBalance = await zeroEx.token.getBalanceAsync(zrxTokenAddress, makerAddress);
await zeroEx.token.transferAsync(zrxTokenAddress, makerAddress, takerAddress, zrxMakerBalance);
await zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder);
});
it('should succeed if the maker is buying ZRX and has no ZRX balance and there is no specified taker', async () => {
const makerFee = new BigNumber(2);
const takerFee = new BigNumber(2);
const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerTokenAddress,
zrxTokenAddress,
makerFee,
takerFee,
makerAddress,
constants.NULL_ADDRESS,
fillableAmount,
feeRecipient,
);
const zrxMakerBalance = await zeroEx.token.getBalanceAsync(zrxTokenAddress, makerAddress);
await zeroEx.token.transferAsync(zrxTokenAddress, makerAddress, takerAddress, zrxMakerBalance);
await zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder);
});
it('should succeed if the order is asymmetric and fillable', async () => {
const makerFillableAmount = fillableAmount;
const takerFillableAmount = fillableAmount.minus(4);
const signedOrder = await fillScenarios.createAsymmetricFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
makerFillableAmount,
takerFillableAmount,
);
await zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder);
});
it('should throw when the order is fully filled or cancelled', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
await zeroEx.exchange.cancelOrderAsync(signedOrder, fillableAmount);
return expect(zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder)).to.be.rejectedWith(
ExchangeContractErrs.OrderRemainingFillAmountZero,
);
});
it('should throw when order is expired', async () => {
const expirationInPast = new BigNumber(1496826058); // 7th Jun 2017
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
expirationInPast,
);
return expect(zeroEx.exchange.validateOrderFillableOrThrowAsync(signedOrder)).to.be.rejectedWith(
ExchangeContractErrs.OrderFillExpired,
);
});
});
describe('validateFillOrderAndThrowIfInvalidAsync', () => {
it('should throw when the fill amount is zero', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
const zeroFillAmount = new BigNumber(0);
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(signedOrder, zeroFillAmount, takerAddress),
).to.be.rejectedWith(ExchangeContractErrs.OrderFillAmountZero);
});
it('should throw when the signature is invalid', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
// 27 <--> 28
signedOrder.ecSignature.v = 28 - signedOrder.ecSignature.v + 27;
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(signedOrder, fillableAmount, takerAddress),
).to.be.rejectedWith(OrderError.InvalidSignature);
});
it('should throw when the order is fully filled or cancelled', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
await zeroEx.exchange.cancelOrderAsync(signedOrder, fillableAmount);
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(signedOrder, fillableAmount, takerAddress),
).to.be.rejectedWith(ExchangeContractErrs.OrderRemainingFillAmountZero);
});
it('should throw when sender is not a taker', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
const nonTakerAddress = userAddresses[6];
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(signedOrder, fillTakerAmount, nonTakerAddress),
).to.be.rejectedWith(ExchangeContractErrs.TransactionSenderIsNotFillOrderTaker);
});
it('should throw when order is expired', async () => {
const expirationInPast = new BigNumber(1496826058); // 7th Jun 2017
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
expirationInPast,
);
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(signedOrder, fillTakerAmount, takerAddress),
).to.be.rejectedWith(ExchangeContractErrs.OrderFillExpired);
});
it('should throw when there a rounding error would have occurred', async () => {
const makerAmount = new BigNumber(3);
const takerAmount = new BigNumber(5);
const signedOrder = await fillScenarios.createAsymmetricFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
makerAmount,
takerAmount,
);
const fillTakerAmountThatCausesRoundingError = new BigNumber(3);
return expect(
zeroEx.exchange.validateFillOrderThrowIfInvalidAsync(
signedOrder,
fillTakerAmountThatCausesRoundingError,
takerAddress,
),
).to.be.rejectedWith(ExchangeContractErrs.OrderFillRoundingError);
});
});
describe('#validateFillOrKillOrderAndThrowIfInvalidAsync', () => {
it('should throw if remaining fillAmount is less then the desired fillAmount', async () => {
const signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
const tooLargeFillAmount = new BigNumber(7);
const fillAmountDifference = tooLargeFillAmount.minus(fillableAmount);
await zeroEx.token.transferAsync(takerTokenAddress, coinbase, takerAddress, fillAmountDifference);
await zeroEx.token.setProxyAllowanceAsync(takerTokenAddress, takerAddress, tooLargeFillAmount);
await zeroEx.token.transferAsync(makerTokenAddress, coinbase, makerAddress, fillAmountDifference);
await zeroEx.token.setProxyAllowanceAsync(makerTokenAddress, makerAddress, tooLargeFillAmount);
return expect(
zeroEx.exchange.validateFillOrKillOrderThrowIfInvalidAsync(
signedOrder,
tooLargeFillAmount,
takerAddress,
),
).to.be.rejectedWith(ExchangeContractErrs.InsufficientRemainingFillAmount);
});
});
describe('validateCancelOrderAndThrowIfInvalidAsync', () => {
let signedOrder: SignedOrder;
const cancelAmount = new BigNumber(3);
beforeEach(async () => {
[coinbase, makerAddress, takerAddress] = userAddresses;
const [makerToken, takerToken] = tokenUtils.getDummyTokens();
makerTokenAddress = makerToken.address;
takerTokenAddress = takerToken.address;
signedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
);
});
it('should throw when cancel amount is zero', async () => {
const zeroCancelAmount = new BigNumber(0);
return expect(
zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync(signedOrder, zeroCancelAmount),
).to.be.rejectedWith(ExchangeContractErrs.OrderCancelAmountZero);
});
it('should throw when order is expired', async () => {
const expirationInPast = new BigNumber(1496826058); // 7th Jun 2017
const expiredSignedOrder = await fillScenarios.createFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
expirationInPast,
);
return expect(
zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync(expiredSignedOrder, cancelAmount),
).to.be.rejectedWith(ExchangeContractErrs.OrderCancelExpired);
});
it('should throw when order is already cancelled or filled', async () => {
await zeroEx.exchange.cancelOrderAsync(signedOrder, fillableAmount);
return expect(
zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync(signedOrder, fillableAmount),
).to.be.rejectedWith(ExchangeContractErrs.OrderAlreadyCancelledOrFilled);
});
});
describe('#validateFillOrderBalancesAllowancesThrowIfInvalidAsync', () => {
let exchangeTransferSimulator: ExchangeTransferSimulator;
let transferFromAsync: Sinon.SinonSpy;
const bigNumberMatch = (expected: BigNumber) => {
return Sinon.match((value: BigNumber) => value.eq(expected));
};
beforeEach('create exchangeTransferSimulator', async () => {
exchangeTransferSimulator = new ExchangeTransferSimulator(zeroEx.token, BlockParamLiteral.Latest);
transferFromAsync = Sinon.spy();
exchangeTransferSimulator.transferFromAsync = transferFromAsync as any;
});
it('should call exchangeTransferSimulator.transferFrom in a correct order', async () => {
const makerFee = new BigNumber(2);
const takerFee = new BigNumber(2);
const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerTokenAddress,
takerTokenAddress,
makerFee,
takerFee,
makerAddress,
takerAddress,
fillableAmount,
feeRecipient,
);
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTransferSimulator,
signedOrder,
fillableAmount,
takerAddress,
zrxTokenAddress,
);
expect(transferFromAsync.callCount).to.be.equal(4);
expect(
transferFromAsync
.getCall(0)
.calledWith(
makerTokenAddress,
makerAddress,
takerAddress,
bigNumberMatch(fillableAmount),
TradeSide.Maker,
TransferType.Trade,
),
).to.be.true();
expect(
transferFromAsync
.getCall(1)
.calledWith(
takerTokenAddress,
takerAddress,
makerAddress,
bigNumberMatch(fillableAmount),
TradeSide.Taker,
TransferType.Trade,
),
).to.be.true();
expect(
transferFromAsync
.getCall(2)
.calledWith(
zrxTokenAddress,
makerAddress,
feeRecipient,
bigNumberMatch(makerFee),
TradeSide.Maker,
TransferType.Fee,
),
).to.be.true();
expect(
transferFromAsync
.getCall(3)
.calledWith(
zrxTokenAddress,
takerAddress,
feeRecipient,
bigNumberMatch(takerFee),
TradeSide.Taker,
TransferType.Fee,
),
).to.be.true();
});
it('should call exchangeTransferSimulator.transferFrom with correct values for an open order', async () => {
const makerFee = new BigNumber(2);
const takerFee = new BigNumber(2);
const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerTokenAddress,
takerTokenAddress,
makerFee,
takerFee,
makerAddress,
ZeroEx.NULL_ADDRESS,
fillableAmount,
feeRecipient,
);
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTransferSimulator,
signedOrder,
fillableAmount,
takerAddress,
zrxTokenAddress,
);
expect(transferFromAsync.callCount).to.be.equal(4);
expect(
transferFromAsync
.getCall(0)
.calledWith(
makerTokenAddress,
makerAddress,
takerAddress,
bigNumberMatch(fillableAmount),
TradeSide.Maker,
TransferType.Trade,
),
).to.be.true();
expect(
transferFromAsync
.getCall(1)
.calledWith(
takerTokenAddress,
takerAddress,
makerAddress,
bigNumberMatch(fillableAmount),
TradeSide.Taker,
TransferType.Trade,
),
).to.be.true();
expect(
transferFromAsync
.getCall(2)
.calledWith(
zrxTokenAddress,
makerAddress,
feeRecipient,
bigNumberMatch(makerFee),
TradeSide.Maker,
TransferType.Fee,
),
).to.be.true();
expect(
transferFromAsync
.getCall(3)
.calledWith(
zrxTokenAddress,
takerAddress,
feeRecipient,
bigNumberMatch(takerFee),
TradeSide.Taker,
TransferType.Fee,
),
).to.be.true();
});
it('should correctly round the fillMakerTokenAmount', async () => {
const makerTokenAmount = new BigNumber(3);
const takerTokenAmount = new BigNumber(1);
const signedOrder = await fillScenarios.createAsymmetricFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
makerTokenAmount,
takerTokenAmount,
);
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTransferSimulator,
signedOrder,
takerTokenAmount,
takerAddress,
zrxTokenAddress,
);
expect(transferFromAsync.callCount).to.be.equal(4);
const makerFillAmount = transferFromAsync.getCall(0).args[3];
expect(makerFillAmount).to.be.bignumber.equal(makerTokenAmount);
});
it('should correctly round the makerFeeAmount', async () => {
const makerFee = new BigNumber(2);
const takerFee = new BigNumber(4);
const signedOrder = await fillScenarios.createFillableSignedOrderWithFeesAsync(
makerTokenAddress,
takerTokenAddress,
makerFee,
takerFee,
makerAddress,
takerAddress,
fillableAmount,
ZeroEx.NULL_ADDRESS,
);
const fillTakerTokenAmount = fillableAmount.div(2).round(0);
await OrderValidationUtils.validateFillOrderBalancesAllowancesThrowIfInvalidAsync(
exchangeTransferSimulator,
signedOrder,
fillTakerTokenAmount,
takerAddress,
zrxTokenAddress,
);
const makerPartialFee = makerFee.div(2);
const takerPartialFee = takerFee.div(2);
expect(transferFromAsync.callCount).to.be.equal(4);
const partialMakerFee = transferFromAsync.getCall(2).args[3];
expect(partialMakerFee).to.be.bignumber.equal(makerPartialFee);
const partialTakerFee = transferFromAsync.getCall(3).args[3];
expect(partialTakerFee).to.be.bignumber.equal(takerPartialFee);
});
});
}); // tslint:disable-line:max-file-line-count

View File

@@ -1,234 +0,0 @@
import { ECSignature, SignedOrder } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils';
import * as chai from 'chai';
import 'mocha';
import { ZeroEx } from '../src/0x';
import { RemainingFillableCalculator } from '../src/order_watcher/remaining_fillable_calculator';
import { chaiSetup } from './utils/chai_setup';
chaiSetup.configure();
const expect = chai.expect;
describe('RemainingFillableCalculator', () => {
let calculator: RemainingFillableCalculator;
let signedOrder: SignedOrder;
let transferrableMakerTokenAmount: BigNumber;
let transferrableMakerFeeTokenAmount: BigNumber;
let remainingMakerTokenAmount: BigNumber;
let makerAmount: BigNumber;
let takerAmount: BigNumber;
let makerFeeAmount: BigNumber;
let isMakerTokenZRX: boolean;
const makerToken: string = '0x1';
const takerToken: string = '0x2';
const decimals: number = 4;
const zero: BigNumber = new BigNumber(0);
const zeroAddress = '0x0';
const signature: ECSignature = { v: 27, r: '', s: '' };
beforeEach(async () => {
[makerAmount, takerAmount, makerFeeAmount] = [
ZeroEx.toBaseUnitAmount(new BigNumber(50), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(1), decimals),
];
[transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount] = [
ZeroEx.toBaseUnitAmount(new BigNumber(50), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals),
];
});
function buildSignedOrder(): SignedOrder {
return {
ecSignature: signature,
exchangeContractAddress: zeroAddress,
feeRecipient: zeroAddress,
maker: zeroAddress,
taker: zeroAddress,
makerFee: makerFeeAmount,
takerFee: zero,
makerTokenAmount: makerAmount,
takerTokenAmount: takerAmount,
makerTokenAddress: makerToken,
takerTokenAddress: takerToken,
salt: zero,
expirationUnixTimestampSec: zero,
};
}
describe('Maker token is NOT ZRX', () => {
before(async () => {
isMakerTokenZRX = false;
});
it('calculates the correct amount when unfilled and funds available', () => {
signedOrder = buildSignedOrder();
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount);
});
it('calculates the correct amount when partially filled and funds available', () => {
signedOrder = buildSignedOrder();
remainingMakerTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(1), decimals);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount);
});
it('calculates the amount to be 0 when all fee funds are transferred', () => {
signedOrder = buildSignedOrder();
transferrableMakerFeeTokenAmount = zero;
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero);
});
it('calculates the correct amount when balance is less than remaining fillable', () => {
signedOrder = buildSignedOrder();
const partiallyFilledAmount = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
remainingMakerTokenAmount = signedOrder.makerTokenAmount.minus(partiallyFilledAmount);
transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(partiallyFilledAmount);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(transferrableMakerTokenAmount);
});
describe('Order to Fee Ratio is < 1', () => {
beforeEach(async () => {
[makerAmount, takerAmount, makerFeeAmount] = [
ZeroEx.toBaseUnitAmount(new BigNumber(3), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(6), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(6), decimals),
];
});
it('calculates the correct amount when funds unavailable', () => {
signedOrder = buildSignedOrder();
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
const transferredAmount = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(transferredAmount);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(transferrableMakerTokenAmount);
});
});
describe('Ratio is not evenly divisble', () => {
beforeEach(async () => {
[makerAmount, takerAmount, makerFeeAmount] = [
ZeroEx.toBaseUnitAmount(new BigNumber(3), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(7), decimals),
ZeroEx.toBaseUnitAmount(new BigNumber(7), decimals),
];
});
it('calculates the correct amount when funds unavailable', () => {
signedOrder = buildSignedOrder();
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
const transferredAmount = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(transferredAmount);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
const calculatedFillableAmount = calculator.computeRemainingMakerFillable();
expect(calculatedFillableAmount.lessThanOrEqualTo(transferrableMakerTokenAmount)).to.be.true();
expect(calculatedFillableAmount).to.be.bignumber.greaterThan(new BigNumber(0));
const orderToFeeRatio = signedOrder.makerTokenAmount.dividedBy(signedOrder.makerFee);
const calculatedFeeAmount = calculatedFillableAmount.dividedBy(orderToFeeRatio);
expect(calculatedFeeAmount).to.be.bignumber.lessThan(transferrableMakerFeeTokenAmount);
});
});
});
describe('Maker Token is ZRX', () => {
before(async () => {
isMakerTokenZRX = true;
});
it('calculates the correct amount when unfilled and funds available', () => {
signedOrder = buildSignedOrder();
transferrableMakerTokenAmount = makerAmount.plus(makerFeeAmount);
transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount;
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount);
});
it('calculates the correct amount when partially filled and funds available', () => {
signedOrder = buildSignedOrder();
remainingMakerTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(1), decimals);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount);
});
it('calculates the amount to be 0 when all fee funds are transferred', () => {
signedOrder = buildSignedOrder();
transferrableMakerTokenAmount = zero;
transferrableMakerFeeTokenAmount = zero;
remainingMakerTokenAmount = signedOrder.makerTokenAmount;
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero);
});
it('calculates the correct amount when balance is less than remaining fillable', () => {
signedOrder = buildSignedOrder();
const partiallyFilledAmount = ZeroEx.toBaseUnitAmount(new BigNumber(2), decimals);
remainingMakerTokenAmount = signedOrder.makerTokenAmount.minus(partiallyFilledAmount);
transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(partiallyFilledAmount);
transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount;
const orderToFeeRatio = signedOrder.makerTokenAmount.dividedToIntegerBy(signedOrder.makerFee);
const expectedFillableAmount = new BigNumber(450980);
calculator = new RemainingFillableCalculator(
signedOrder,
isMakerTokenZRX,
transferrableMakerTokenAmount,
transferrableMakerFeeTokenAmount,
remainingMakerTokenAmount,
);
const calculatedFillableAmount = calculator.computeRemainingMakerFillable();
const numberOfFillsInRatio = calculatedFillableAmount.dividedToIntegerBy(orderToFeeRatio);
const calculatedFillableAmountPlusFees = calculatedFillableAmount.plus(numberOfFillsInRatio);
expect(calculatedFillableAmountPlusFees).to.be.bignumber.lessThan(transferrableMakerTokenAmount);
expect(calculatedFillableAmountPlusFees).to.be.bignumber.lessThan(remainingMakerTokenAmount);
expect(calculatedFillableAmount).to.be.bignumber.equal(expectedFillableAmount);
expect(numberOfFillsInRatio.decimalPlaces()).to.be.equal(0);
});
});
});

View File

@@ -1,82 +0,0 @@
import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';
import 'mocha';
import * as Sinon from 'sinon';
import { ApprovalContractEventArgs, DecodedLogEvent, Token, TokenEvents, ZeroEx } from '../src';
import { DoneCallback } from '../src/types';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { assertNodeCallbackError } from './utils/report_callback_errors';
import { provider, web3Wrapper } from './utils/web3_wrapper';
chaiSetup.configure();
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
describe('SubscriptionTest', () => {
let zeroEx: ZeroEx;
let userAddresses: string[];
let tokens: Token[];
let coinbase: string;
let addressWithoutFunds: string;
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
before(async () => {
zeroEx = new ZeroEx(provider, config);
userAddresses = await zeroEx.getAvailableAddressesAsync();
tokens = await zeroEx.tokenRegistry.getTokensAsync();
coinbase = userAddresses[0];
addressWithoutFunds = userAddresses[1];
});
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
describe('#subscribe', () => {
const indexFilterValues = {};
let tokenAddress: string;
const allowanceAmount = new BigNumber(42);
let stubs: Sinon.SinonStub[] = [];
before(() => {
const token = tokens[0];
tokenAddress = token.address;
});
afterEach(() => {
zeroEx.token.unsubscribeAll();
_.each(stubs, s => s.restore());
stubs = [];
});
it('Should receive the Error when an error occurs while fetching the block', (done: DoneCallback) => {
(async () => {
const errMsg = 'Error fetching block';
const callback = assertNodeCallbackError(done, errMsg);
stubs = [Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync').throws(new Error(errMsg))];
zeroEx.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
await zeroEx.token.setAllowanceAsync(tokenAddress, coinbase, addressWithoutFunds, allowanceAmount);
})().catch(done);
});
it('Should receive the Error when an error occurs while reconciling the new block', (done: DoneCallback) => {
(async () => {
const errMsg = 'Error fetching logs';
const callback = assertNodeCallbackError(done, errMsg);
stubs = [Sinon.stub((zeroEx as any)._web3Wrapper, 'getLogsAsync').throws(new Error(errMsg))];
zeroEx.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
await zeroEx.token.setAllowanceAsync(tokenAddress, coinbase, addressWithoutFunds, allowanceAmount);
})().catch(done);
});
it('Should allow unsubscribeAll to be called successfully after an error', (done: DoneCallback) => {
(async () => {
const callback = (err: Error | null, logEvent?: DecodedLogEvent<ApprovalContractEventArgs>) => _.noop;
zeroEx.token.subscribe(tokenAddress, TokenEvents.Approval, indexFilterValues, callback);
stubs = [Sinon.stub((zeroEx as any)._web3Wrapper, 'getBlockAsync').throws(new Error('JSON RPC error'))];
zeroEx.token.unsubscribeAll();
done();
})().catch(done);
});
});
});

View File

@@ -1,128 +0,0 @@
import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils';
import { schemas, SchemaValidator } from '@0xproject/json-schemas';
import * as chai from 'chai';
import * as _ from 'lodash';
import 'mocha';
import { Token, ZeroEx } from '../src';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { provider, web3Wrapper } from './utils/web3_wrapper';
chaiSetup.configure();
const expect = chai.expect;
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
const TOKEN_REGISTRY_SIZE_AFTER_MIGRATION = 7;
describe('TokenRegistryWrapper', () => {
let zeroEx: ZeroEx;
let tokens: Token[];
const tokenAddressBySymbol: { [symbol: string]: string } = {};
const tokenAddressByName: { [symbol: string]: string } = {};
const tokenBySymbol: { [symbol: string]: Token } = {};
const tokenByName: { [symbol: string]: Token } = {};
const registeredSymbol = 'ZRX';
const registeredName = '0x Protocol Token';
const unregisteredSymbol = 'MAL';
const unregisteredName = 'Malicious Token';
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
before(async () => {
zeroEx = new ZeroEx(provider, config);
tokens = await zeroEx.tokenRegistry.getTokensAsync();
_.map(tokens, token => {
tokenAddressBySymbol[token.symbol] = token.address;
tokenAddressByName[token.name] = token.address;
tokenBySymbol[token.symbol] = token;
tokenByName[token.name] = token;
});
});
beforeEach(async () => {
await blockchainLifecycle.startAsync();
});
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
describe('#getTokensAsync', () => {
it('should return all the tokens added to the tokenRegistry during the migration', async () => {
expect(tokens).to.have.lengthOf(TOKEN_REGISTRY_SIZE_AFTER_MIGRATION);
const schemaValidator = new SchemaValidator();
_.each(tokens, token => {
const validationResult = schemaValidator.validate(token, schemas.tokenSchema);
expect(validationResult.errors).to.have.lengthOf(0);
});
});
});
describe('#getTokenAddressesAsync', () => {
it('should return all the token addresses added to the tokenRegistry during the migration', async () => {
const tokenAddresses = await zeroEx.tokenRegistry.getTokenAddressesAsync();
expect(tokenAddresses).to.have.lengthOf(TOKEN_REGISTRY_SIZE_AFTER_MIGRATION);
const schemaValidator = new SchemaValidator();
_.each(tokenAddresses, tokenAddress => {
const validationResult = schemaValidator.validate(tokenAddress, schemas.addressSchema);
expect(validationResult.errors).to.have.lengthOf(0);
expect(tokenAddress).to.not.be.equal(ZeroEx.NULL_ADDRESS);
});
});
});
describe('#getTokenAddressBySymbol', () => {
it('should return correct address for a token in the registry', async () => {
const tokenAddress = await zeroEx.tokenRegistry.getTokenAddressBySymbolIfExistsAsync(registeredSymbol);
expect(tokenAddress).to.be.equal(tokenAddressBySymbol[registeredSymbol]);
});
it('should return undefined for a token out of registry', async () => {
const tokenAddress = await zeroEx.tokenRegistry.getTokenAddressBySymbolIfExistsAsync(unregisteredSymbol);
expect(tokenAddress).to.be.undefined();
});
});
describe('#getTokenAddressByName', () => {
it('should return correct address for a token in the registry', async () => {
const tokenAddress = await zeroEx.tokenRegistry.getTokenAddressByNameIfExistsAsync(registeredName);
expect(tokenAddress).to.be.equal(tokenAddressByName[registeredName]);
});
it('should return undefined for a token out of registry', async () => {
const tokenAddress = await zeroEx.tokenRegistry.getTokenAddressByNameIfExistsAsync(unregisteredName);
expect(tokenAddress).to.be.undefined();
});
});
describe('#getTokenBySymbol', () => {
it('should return correct token for a token in the registry', async () => {
const token = await zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync(registeredSymbol);
expect(token).to.be.deep.equal(tokenBySymbol[registeredSymbol]);
});
it('should return undefined for a token out of registry', async () => {
const token = await zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync(unregisteredSymbol);
expect(token).to.be.undefined();
});
});
describe('#getTokenByName', () => {
it('should return correct token for a token in the registry', async () => {
const token = await zeroEx.tokenRegistry.getTokenByNameIfExistsAsync(registeredName);
expect(token).to.be.deep.equal(tokenByName[registeredName]);
});
it('should return undefined for a token out of registry', async () => {
const token = await zeroEx.tokenRegistry.getTokenByNameIfExistsAsync(unregisteredName);
expect(token).to.be.undefined();
});
});
describe('#getTokenIfExistsAsync', () => {
it('should return the token added to the tokenRegistry during the migration', async () => {
const aToken = tokens[0];
const token = await zeroEx.tokenRegistry.getTokenIfExistsAsync(aToken.address);
const schemaValidator = new SchemaValidator();
const validationResult = schemaValidator.validate(token, schemas.tokenSchema);
expect(validationResult.errors).to.have.lengthOf(0);
});
it('should return return undefined when passed a token address not in the tokenRegistry', async () => {
const unregisteredTokenAddress = '0x5409ed021d9299bf6814279a6a1411a7e866a631';
const tokenIfExists = await zeroEx.tokenRegistry.getTokenIfExistsAsync(unregisteredTokenAddress);
expect(tokenIfExists).to.be.undefined();
});
});
});

View File

@@ -1,35 +0,0 @@
import * as chai from 'chai';
import { ZeroEx } from '../src';
import { chaiSetup } from './utils/chai_setup';
import { constants } from './utils/constants';
import { provider } from './utils/web3_wrapper';
chaiSetup.configure();
const expect = chai.expect;
describe('TokenTransferProxyWrapper', () => {
let zeroEx: ZeroEx;
const config = {
networkId: constants.TESTRPC_NETWORK_ID,
};
before(async () => {
zeroEx = new ZeroEx(provider, config);
});
describe('#isAuthorizedAsync', () => {
it('should return false if the address is not authorized', async () => {
const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(ZeroEx.NULL_ADDRESS);
expect(isAuthorized).to.be.false();
});
});
describe('#getAuthorizedAddressesAsync', () => {
it('should return the list of authorized addresses', async () => {
const authorizedAddresses = await zeroEx.proxy.getAuthorizedAddressesAsync();
for (const authorizedAddress of authorizedAddresses) {
const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(authorizedAddress);
expect(isAuthorized).to.be.true();
}
});
});
});

View File

@@ -1,9 +0,0 @@
export const constants = {
NULL_ADDRESS: '0x0000000000000000000000000000000000000000',
ROPSTEN_NETWORK_ID: 3,
KOVAN_NETWORK_ID: 42,
TESTRPC_NETWORK_ID: 50,
KOVAN_RPC_URL: 'https://kovan.infura.io/',
ROPSTEN_RPC_URL: 'https://ropsten.infura.io/',
ZRX_DECIMALS: 18,
};

View File

@@ -1,18 +0,0 @@
import { Deployer } from '@0xproject/deployer';
import { devConstants } from '@0xproject/dev-utils';
import * as path from 'path';
import { constants } from './constants';
import { provider } from './web3_wrapper';
const artifactsDir = path.resolve('test', 'artifacts');
const deployerOpts = {
artifactsDir,
provider,
networkId: constants.TESTRPC_NETWORK_ID,
defaults: {
gas: devConstants.GAS_ESTIMATE,
},
};
export const deployer = new Deployer(deployerOpts);

View File

@@ -1,203 +0,0 @@
import { orderFactory } from '@0xproject/order-utils';
import { BigNumber } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
import { SignedOrder, Token, ZeroEx } from '../../src';
import { artifacts } from '../../src/artifacts';
import { DummyTokenContract } from '../../src/contract_wrappers/generated/dummy_token';
import { constants } from './constants';
const INITIAL_COINBASE_TOKEN_SUPPLY_IN_UNITS = new BigNumber(100);
export class FillScenarios {
private _zeroEx: ZeroEx;
private _userAddresses: string[];
private _tokens: Token[];
private _coinbase: string;
private _zrxTokenAddress: string;
private _exchangeContractAddress: string;
constructor(
zeroEx: ZeroEx,
userAddresses: string[],
tokens: Token[],
zrxTokenAddress: string,
exchangeContractAddress: string,
) {
this._zeroEx = zeroEx;
this._userAddresses = userAddresses;
this._tokens = tokens;
this._coinbase = userAddresses[0];
this._zrxTokenAddress = zrxTokenAddress;
this._exchangeContractAddress = exchangeContractAddress;
}
public async initTokenBalancesAsync() {
const web3Wrapper = (this._zeroEx as any)._web3Wrapper as Web3Wrapper;
for (const token of this._tokens) {
if (token.symbol !== 'ZRX' && token.symbol !== 'WETH') {
const defaults = {};
const dummyToken = new DummyTokenContract(
artifacts.DummyTokenArtifact.abi,
token.address,
web3Wrapper.getProvider(),
web3Wrapper.getContractDefaults(),
);
const tokenSupply = ZeroEx.toBaseUnitAmount(INITIAL_COINBASE_TOKEN_SUPPLY_IN_UNITS, token.decimals);
const txHash = await dummyToken.setBalance.sendTransactionAsync(this._coinbase, tokenSupply, {
from: this._coinbase,
});
await this._zeroEx.awaitTransactionMinedAsync(txHash);
}
}
}
public async createFillableSignedOrderAsync(
makerTokenAddress: string,
takerTokenAddress: string,
makerAddress: string,
takerAddress: string,
fillableAmount: BigNumber,
expirationUnixTimestampSec?: BigNumber,
): Promise<SignedOrder> {
return this.createAsymmetricFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
fillableAmount,
expirationUnixTimestampSec,
);
}
public async createFillableSignedOrderWithFeesAsync(
makerTokenAddress: string,
takerTokenAddress: string,
makerFee: BigNumber,
takerFee: BigNumber,
makerAddress: string,
takerAddress: string,
fillableAmount: BigNumber,
feeRecepient: string,
expirationUnixTimestampSec?: BigNumber,
): Promise<SignedOrder> {
return this._createAsymmetricFillableSignedOrderWithFeesAsync(
makerTokenAddress,
takerTokenAddress,
makerFee,
takerFee,
makerAddress,
takerAddress,
fillableAmount,
fillableAmount,
feeRecepient,
expirationUnixTimestampSec,
);
}
public async createAsymmetricFillableSignedOrderAsync(
makerTokenAddress: string,
takerTokenAddress: string,
makerAddress: string,
takerAddress: string,
makerFillableAmount: BigNumber,
takerFillableAmount: BigNumber,
expirationUnixTimestampSec?: BigNumber,
): Promise<SignedOrder> {
const makerFee = new BigNumber(0);
const takerFee = new BigNumber(0);
const feeRecepient = constants.NULL_ADDRESS;
return this._createAsymmetricFillableSignedOrderWithFeesAsync(
makerTokenAddress,
takerTokenAddress,
makerFee,
takerFee,
makerAddress,
takerAddress,
makerFillableAmount,
takerFillableAmount,
feeRecepient,
expirationUnixTimestampSec,
);
}
public async createPartiallyFilledSignedOrderAsync(
makerTokenAddress: string,
takerTokenAddress: string,
takerAddress: string,
fillableAmount: BigNumber,
partialFillAmount: BigNumber,
) {
const [makerAddress] = this._userAddresses;
const signedOrder = await this.createAsymmetricFillableSignedOrderAsync(
makerTokenAddress,
takerTokenAddress,
makerAddress,
takerAddress,
fillableAmount,
fillableAmount,
);
const shouldThrowOnInsufficientBalanceOrAllowance = false;
await this._zeroEx.exchange.fillOrderAsync(
signedOrder,
partialFillAmount,
shouldThrowOnInsufficientBalanceOrAllowance,
takerAddress,
);
return signedOrder;
}
private async _createAsymmetricFillableSignedOrderWithFeesAsync(
makerTokenAddress: string,
takerTokenAddress: string,
makerFee: BigNumber,
takerFee: BigNumber,
makerAddress: string,
takerAddress: string,
makerFillableAmount: BigNumber,
takerFillableAmount: BigNumber,
feeRecepient: string,
expirationUnixTimestampSec?: BigNumber,
): Promise<SignedOrder> {
await Promise.all([
this._increaseBalanceAndAllowanceAsync(makerTokenAddress, makerAddress, makerFillableAmount),
this._increaseBalanceAndAllowanceAsync(takerTokenAddress, takerAddress, takerFillableAmount),
]);
await Promise.all([
this._increaseBalanceAndAllowanceAsync(this._zrxTokenAddress, makerAddress, makerFee),
this._increaseBalanceAndAllowanceAsync(this._zrxTokenAddress, takerAddress, takerFee),
]);
const signedOrder = await orderFactory.createSignedOrderAsync(
this._zeroEx.getProvider(),
makerAddress,
takerAddress,
makerFee,
takerFee,
makerFillableAmount,
makerTokenAddress,
takerFillableAmount,
takerTokenAddress,
this._exchangeContractAddress,
feeRecepient,
expirationUnixTimestampSec,
);
return signedOrder;
}
private async _increaseBalanceAndAllowanceAsync(
tokenAddress: string,
address: string,
amount: BigNumber,
): Promise<void> {
if (amount.isZero() || address === ZeroEx.NULL_ADDRESS) {
return; // noop
}
await Promise.all([
this._increaseBalanceAsync(tokenAddress, address, amount),
this._increaseAllowanceAsync(tokenAddress, address, amount),
]);
}
private async _increaseBalanceAsync(tokenAddress: string, address: string, amount: BigNumber): Promise<void> {
await this._zeroEx.token.transferAsync(tokenAddress, this._coinbase, address, amount);
}
private async _increaseAllowanceAsync(tokenAddress: string, address: string, amount: BigNumber): Promise<void> {
const oldMakerAllowance = await this._zeroEx.token.getProxyAllowanceAsync(tokenAddress, address);
const newMakerAllowance = oldMakerAllowance.plus(amount);
await this._zeroEx.token.setProxyAllowanceAsync(tokenAddress, address, newMakerAllowance);
}
}

View File

@@ -1,66 +0,0 @@
import * as chai from 'chai';
import * as _ from 'lodash';
import { DoneCallback } from '../../src/types';
const expect = chai.expect;
export const reportNoErrorCallbackErrors = (done: DoneCallback, expectToBeCalledOnce = true) => {
return <T>(f?: (value: T) => void) => {
const wrapped = (value: T) => {
if (_.isUndefined(f)) {
done();
return;
}
try {
f(value);
if (expectToBeCalledOnce) {
done();
}
} catch (err) {
done(err);
}
};
return wrapped;
};
};
export const reportNodeCallbackErrors = (done: DoneCallback, expectToBeCalledOnce = true) => {
return <T>(f?: (value: T) => void) => {
const wrapped = (error: Error | null, value: T | undefined) => {
if (!_.isNull(error)) {
done(error);
} else {
if (_.isUndefined(f)) {
done();
return;
}
try {
f(value as T);
if (expectToBeCalledOnce) {
done();
}
} catch (err) {
done(err);
}
}
};
return wrapped;
};
};
export const assertNodeCallbackError = (done: DoneCallback, errMsg: string) => {
const wrapped = <T>(error: Error | null, value: T | undefined) => {
if (_.isNull(error)) {
done(new Error('Expected callback to receive an error'));
} else {
try {
expect(error.message).to.be.equal(errMsg);
done();
} catch (err) {
done(err);
}
}
};
return wrapped;
};

View File

@@ -1,33 +0,0 @@
import * as _ from 'lodash';
import { InternalZeroExError, Token } from '../../src/types';
const PROTOCOL_TOKEN_SYMBOL = 'ZRX';
const WETH_TOKEN_SYMBOL = 'WETH';
export class TokenUtils {
private _tokens: Token[];
constructor(tokens: Token[]) {
this._tokens = tokens;
}
public getProtocolTokenOrThrow(): Token {
const zrxToken = _.find(this._tokens, { symbol: PROTOCOL_TOKEN_SYMBOL });
if (_.isUndefined(zrxToken)) {
throw new Error(InternalZeroExError.ZrxNotInTokenRegistry);
}
return zrxToken;
}
public getWethTokenOrThrow(): Token {
const wethToken = _.find(this._tokens, { symbol: WETH_TOKEN_SYMBOL });
if (_.isUndefined(wethToken)) {
throw new Error(InternalZeroExError.WethNotInTokenRegistry);
}
return wethToken;
}
public getDummyTokens(): Token[] {
const dummyTokens = _.filter(this._tokens, token => {
return !_.includes([PROTOCOL_TOKEN_SYMBOL, WETH_TOKEN_SYMBOL], token.symbol);
});
return dummyTokens;
}
}

View File

@@ -1,9 +0,0 @@
import { devConstants, web3Factory } from '@0xproject/dev-utils';
import { Provider } from '@0xproject/types';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
const web3 = web3Factory.create({ shouldUseInProcessGanache: true });
const provider: Provider = web3.currentProvider;
const web3Wrapper = new Web3Wrapper(web3.currentProvider);
export { provider, web3Wrapper };

View File

@@ -1,7 +1,8 @@
{
"extends": "../../tsconfig",
"compilerOptions": {
"outDir": "lib"
"outDir": "lib",
"rootDir": "src"
},
"include": ["./src/**/*", "./test/**/*"]
"include": ["./src/**/*"]
}

View File

@@ -1,3 +1,3 @@
{
"extends": ["@0xproject/tslint-config"]
"extends": ["@0x/tslint-config"]
}

View File

@@ -0,0 +1,7 @@
{
"extends": "../../typedoc-tsconfig",
"compilerOptions": {
"outDir": "lib"
},
"include": ["./src/**/*"]
}

View File

@@ -2,7 +2,7 @@
* This is to generate the umd bundle only
*/
const _ = require('lodash');
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
const path = require('path');
const production = process.env.NODE_ENV === 'production';
@@ -15,6 +15,7 @@ if (production) {
module.exports = {
entry,
mode: 'production',
output: {
path: path.resolve(__dirname, '_bundles'),
filename: '[name].js',
@@ -26,13 +27,18 @@ module.exports = {
extensions: ['.ts', '.js', '.json'],
},
devtool: 'source-map',
plugins: [
new webpack.optimize.UglifyJsPlugin({
minimize: true,
sourceMap: true,
include: /\.min\.js$/,
}),
],
optimization: {
minimizer: [
new TerserPlugin({
sourceMap: true,
terserOptions: {
mangle: {
reserved: ['BigNumber'],
},
},
}),
],
},
module: {
rules: [
{
@@ -40,17 +46,18 @@ module.exports = {
use: [
{
loader: 'awesome-typescript-loader',
// tsconfig.json contains some options required for
// project references which do not work with webback.
// We override those options here.
query: {
declaration: false,
declarationMap: false,
composite: false,
},
},
],
exclude: /node_modules/,
},
{
test: /\.json$/,
loader: 'json-loader',
},
],
},
};

View File

@@ -0,0 +1,20 @@
[
{
"timestamp": 1539871071,
"version": "1.0.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.0",
"changes": [
{
"pr": 1105,
"note": "Initial release"
}
]
}
]

View File

@@ -0,0 +1,14 @@
<!--
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
Edit the package's CHANGELOG.json file only.
-->
CHANGELOG
## v1.0.1 - _October 18, 2018_
* Dependencies updated
## v1.0.0 - _Invalid date_
* Initial release (#1105)

View File

@@ -0,0 +1,73 @@
## @0x/abi-gen-wrappers
Low-level 0x smart contract wrappers generated using @0x/abi-gen. These
low-level wrappers are imported by other packages in the 0x monorepo and
application developers are not expected to import this package directly.
You may also be interested in the
[@0x/contract-wrappers](../contract-wrappers/README.md) package which
includes some higher-level features.
## Installation
```bash
yarn add @0x/abi-gen-wrappers
```
**Import**
```typescript
import * as wrappers from '@0x/abi-gen-wrappers';
```
or
```javascript
var wrappers = require('@0x/abi-gen-wrappers');
```
## Contributing
We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
### Install dependencies
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
```bash
yarn config set workspaces-experimental true
```
Then install dependencies
```bash
yarn install
```
### Build
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
```bash
PKG=@0x/abi-gen-wrappers yarn build
```
### Clean
```bash
yarn clean
```
### Lint
```bash
yarn lint
```
### Run Tests
```bash
yarn test
```

View File

@@ -0,0 +1,48 @@
{
"name": "@0x/abi-gen-wrappers",
"version": "1.0.1",
"engines": {
"node": ">=6.12"
},
"description": "Low-level 0x smart contract wrappers generated using @0x/abi-gen",
"main": "lib/src/index.js",
"directories": {
"test": "test"
},
"scripts": {
"build": "yarn pre_build && tsc -b",
"build:ci": "yarn build",
"lint": "tslint --project .",
"pre_build": "yarn generate_contract_wrappers",
"clean": "shx rm -rf lib wrappers",
"generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/generated-wrappers --backend ethers"
},
"config": {
"abis": "../contract-artifacts/artifacts/@(AssetProxyOwner|DummyERC20Token|DummyERC721Token|ERC20Proxy|ERC20Token|ERC721Proxy|ERC721Token|Exchange|Forwarder|IValidator|IWallet|OrderValidator|WETH9|ZRXToken).json"
},
"repository": {
"type": "git",
"url": "https://github.com/0xProject/0x-monorepo.git"
},
"license": "Apache-2.0",
"bugs": {
"url": "https://github.com/0xProject/0x-monorepo/issues"
},
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen-wrappers/README.md",
"devDependencies": {
"@0x/abi-gen": "^1.0.14",
"@0x/tslint-config": "^1.0.9",
"@0x/utils": "^2.0.3",
"@0x/web3-wrapper": "^3.1.0",
"ethereum-types": "^1.1.1",
"ethers": "~4.0.4",
"lodash": "^4.17.5",
"shx": "^0.2.2"
},
"dependencies": {
"@0x/base-contract": "^3.0.2"
},
"publishConfig": {
"access": "public"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,649 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC20ProxyEventArgs =
| ERC20ProxyAuthorizedAddressAddedEventArgs
| ERC20ProxyAuthorizedAddressRemovedEventArgs;
export enum ERC20ProxyEvents {
AuthorizedAddressAdded = 'AuthorizedAddressAdded',
AuthorizedAddressRemoved = 'AuthorizedAddressRemoved',
}
export interface ERC20ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
export interface ERC20ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC20ProxyContract extends BaseContract {
public addAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.addAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'addAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.addAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'addAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorities = {
async callAsync(
index_0: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'authorities(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorities;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorities'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'removeAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddressAtIndex = {
async sendTransactionAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(
self,
target,
index
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
index: BigNumber,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
index: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'removeAuthorizedAddressAtIndex(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddressAtIndex;
const encodedData = ethersFunction.encode([target,
index
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddressAtIndex'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getProxyId = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'getProxyId()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getProxyId;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getProxyId'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public authorized = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'authorized(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorized;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorized'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAuthorizedAddresses = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string[]
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'getAuthorizedAddresses()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAuthorizedAddresses;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAuthorizedAddresses'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20ProxyContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC20ProxyContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20ProxyContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC20Proxy successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC20ProxyContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC20Proxy', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,556 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC20TokenEventArgs =
| ERC20TokenTransferEventArgs
| ERC20TokenApprovalEventArgs;
export enum ERC20TokenEvents {
Transfer = 'Transfer',
Approval = 'Approval',
}
export interface ERC20TokenTransferEventArgs extends DecodedLogArgs {
_from: string;
_to: string;
_value: BigNumber;
}
export interface ERC20TokenApprovalEventArgs extends DecodedLogArgs {
_owner: string;
_spender: string;
_value: BigNumber;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC20TokenContract extends BaseContract {
public approve = {
async sendTransactionAsync(
_spender: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_spender,
_value
]);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.approve.estimateGasAsync.bind(
self,
_spender,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_spender: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_spender: string,
_value: BigNumber,
): string {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_spender: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'approve(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_spender,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.approve;
const encodedData = ethersFunction.encode([_spender,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'approve'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public totalSupply = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'totalSupply()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.totalSupply;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'totalSupply'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferFrom = {
async sendTransactionAsync(
_from: string,
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_value
]);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferFrom.estimateGasAsync.bind(
self,
_from,
_to,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_from: string,
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_from: string,
_to: string,
_value: BigNumber,
): string {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_from: string,
_to: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'transferFrom(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferFrom;
const encodedData = ethersFunction.encode([_from,
_to,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public balanceOf = {
async callAsync(
_owner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'balanceOf(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner
] = BaseContract._formatABIDataItemList(inputAbi, [_owner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.balanceOf;
const encodedData = ethersFunction.encode([_owner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'balanceOf'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transfer = {
async sendTransactionAsync(
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_to,
_value
]);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transfer.estimateGasAsync.bind(
self,
_to,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_to: string,
_value: BigNumber,
): string {
const self = this as any as ERC20TokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_to: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'transfer(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_to,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transfer;
const encodedData = ethersFunction.encode([_to,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transfer'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public allowance = {
async callAsync(
_owner: string,
_spender: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ERC20TokenContract;
const functionSignature = 'allowance(address,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner,
_spender
] = BaseContract._formatABIDataItemList(inputAbi, [_owner,
_spender
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner,
_spender
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.allowance;
const encodedData = ethersFunction.encode([_owner,
_spender
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'allowance'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20TokenContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC20TokenContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20TokenContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC20Token successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC20TokenContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC20Token', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,649 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC721ProxyEventArgs =
| ERC721ProxyAuthorizedAddressAddedEventArgs
| ERC721ProxyAuthorizedAddressRemovedEventArgs;
export enum ERC721ProxyEvents {
AuthorizedAddressAdded = 'AuthorizedAddressAdded',
AuthorizedAddressRemoved = 'AuthorizedAddressRemoved',
}
export interface ERC721ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
export interface ERC721ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC721ProxyContract extends BaseContract {
public addAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.addAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'addAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.addAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'addAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorities = {
async callAsync(
index_0: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'authorities(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorities;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorities'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'removeAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddressAtIndex = {
async sendTransactionAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(
self,
target,
index
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
index: BigNumber,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
index: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'removeAuthorizedAddressAtIndex(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddressAtIndex;
const encodedData = ethersFunction.encode([target,
index
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddressAtIndex'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getProxyId = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'getProxyId()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getProxyId;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getProxyId'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public authorized = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'authorized(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorized;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorized'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAuthorizedAddresses = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string[]
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'getAuthorizedAddresses()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAuthorizedAddresses;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAuthorizedAddresses'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721ProxyContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC721ProxyContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721ProxyContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC721Proxy successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC721ProxyContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC721Proxy', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,893 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC721TokenEventArgs =
| ERC721TokenTransferEventArgs
| ERC721TokenApprovalEventArgs
| ERC721TokenApprovalForAllEventArgs;
export enum ERC721TokenEvents {
Transfer = 'Transfer',
Approval = 'Approval',
ApprovalForAll = 'ApprovalForAll',
}
export interface ERC721TokenTransferEventArgs extends DecodedLogArgs {
_from: string;
_to: string;
_tokenId: BigNumber;
}
export interface ERC721TokenApprovalEventArgs extends DecodedLogArgs {
_owner: string;
_approved: string;
_tokenId: BigNumber;
}
export interface ERC721TokenApprovalForAllEventArgs extends DecodedLogArgs {
_owner: string;
_operator: string;
_approved: boolean;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC721TokenContract extends BaseContract {
public getApproved = {
async callAsync(
_tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'getApproved(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getApproved;
const encodedData = ethersFunction.encode([_tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getApproved'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public approve = {
async sendTransactionAsync(
_approved: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_approved,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_approved,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_approved,
_tokenId
]);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_approved,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.approve.estimateGasAsync.bind(
self,
_approved,
_tokenId
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_approved: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_approved,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_approved,
_tokenId
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_approved,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_approved: string,
_tokenId: BigNumber,
): string {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_approved,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_approved,
_tokenId
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_approved,
_tokenId
]);
return abiEncodedTransactionData;
},
async callAsync(
_approved: string,
_tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'approve(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_approved,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_approved,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_approved,
_tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.approve;
const encodedData = ethersFunction.encode([_approved,
_tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'approve'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transferFrom = {
async sendTransactionAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId
]);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferFrom.estimateGasAsync.bind(
self,
_from,
_to,
_tokenId
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_from: string,
_to: string,
_tokenId: BigNumber,
): string {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_tokenId
]);
return abiEncodedTransactionData;
},
async callAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'transferFrom(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferFrom;
const encodedData = ethersFunction.encode([_from,
_to,
_tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public safeTransferFrom1 = {
async sendTransactionAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId
]);
const encodedData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.safeTransferFrom1.estimateGasAsync.bind(
self,
_from,
_to,
_tokenId
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_from: string,
_to: string,
_tokenId: BigNumber,
): string {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256)').inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId
]);
return abiEncodedTransactionData;
},
async callAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'safeTransferFrom(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_from,
_to,
_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.safeTransferFrom;
const encodedData = ethersFunction.encode([_from,
_to,
_tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'safeTransferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public ownerOf = {
async callAsync(
_tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'ownerOf(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [_tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.ownerOf;
const encodedData = ethersFunction.encode([_tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'ownerOf'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public balanceOf = {
async callAsync(
_owner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'balanceOf(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner
] = BaseContract._formatABIDataItemList(inputAbi, [_owner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.balanceOf;
const encodedData = ethersFunction.encode([_owner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'balanceOf'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public setApprovalForAll = {
async sendTransactionAsync(
_operator: string,
_approved: boolean,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('setApprovalForAll(address,bool)').inputs;
[_operator,
_approved
] = BaseContract._formatABIDataItemList(inputAbi, [_operator,
_approved
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_operator,
_approved
]);
const encodedData = self._lookupEthersInterface('setApprovalForAll(address,bool)').functions.setApprovalForAll.encode([_operator,
_approved
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.setApprovalForAll.estimateGasAsync.bind(
self,
_operator,
_approved
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_operator: string,
_approved: boolean,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('setApprovalForAll(address,bool)').inputs;
[_operator,
_approved
] = BaseContract._formatABIDataItemList(inputAbi, [_operator,
_approved
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('setApprovalForAll(address,bool)').functions.setApprovalForAll.encode([_operator,
_approved
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_operator: string,
_approved: boolean,
): string {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('setApprovalForAll(address,bool)').inputs;
[_operator,
_approved
] = BaseContract._formatABIDataItemList(inputAbi, [_operator,
_approved
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('setApprovalForAll(address,bool)').functions.setApprovalForAll.encode([_operator,
_approved
]);
return abiEncodedTransactionData;
},
async callAsync(
_operator: string,
_approved: boolean,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'setApprovalForAll(address,bool)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_operator,
_approved
] = BaseContract._formatABIDataItemList(inputAbi, [_operator,
_approved
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_operator,
_approved
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.setApprovalForAll;
const encodedData = ethersFunction.encode([_operator,
_approved
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'setApprovalForAll'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public safeTransferFrom2 = {
async sendTransactionAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
_data: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256,bytes)').inputs;
[_from,
_to,
_tokenId,
_data
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId,
_data
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId,
_data
]);
const encodedData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256,bytes)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId,
_data
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.safeTransferFrom2.estimateGasAsync.bind(
self,
_from,
_to,
_tokenId,
_data
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
_data: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256,bytes)').inputs;
[_from,
_to,
_tokenId,
_data
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId,
_data
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256,bytes)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId,
_data
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_from: string,
_to: string,
_tokenId: BigNumber,
_data: string,
): string {
const self = this as any as ERC721TokenContract;
const inputAbi = self._lookupAbi('safeTransferFrom(address,address,uint256,bytes)').inputs;
[_from,
_to,
_tokenId,
_data
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId,
_data
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('safeTransferFrom(address,address,uint256,bytes)').functions.safeTransferFrom.encode([_from,
_to,
_tokenId,
_data
]);
return abiEncodedTransactionData;
},
async callAsync(
_from: string,
_to: string,
_tokenId: BigNumber,
_data: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'safeTransferFrom(address,address,uint256,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_from,
_to,
_tokenId,
_data
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_tokenId,
_data
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_tokenId,
_data
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.safeTransferFrom;
const encodedData = ethersFunction.encode([_from,
_to,
_tokenId,
_data
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'safeTransferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public isApprovedForAll = {
async callAsync(
_owner: string,
_operator: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC721TokenContract;
const functionSignature = 'isApprovedForAll(address,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner,
_operator
] = BaseContract._formatABIDataItemList(inputAbi, [_owner,
_operator
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner,
_operator
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isApprovedForAll;
const encodedData = ethersFunction.encode([_owner,
_operator
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isApprovedForAll'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721TokenContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC721TokenContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721TokenContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC721Token successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC721TokenContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC721Token', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,730 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ForwarderContract extends BaseContract {
public marketBuyOrdersWithEth = {
async sendTransactionAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxDataPayable> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const encodedData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.marketBuyOrdersWithEth.estimateGasAsync.bind(
self,
orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
return abiEncodedTransactionData;
},
async callAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}, {makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}]
> {
const self = this as any as ForwarderContract;
const functionSignature = 'marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.marketBuyOrdersWithEth;
const encodedData = ethersFunction.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'marketBuyOrdersWithEth'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public withdrawAsset = {
async sendTransactionAsync(
assetData: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
amount
]);
const encodedData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.withdrawAsset.estimateGasAsync.bind(
self,
assetData,
amount
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
assetData: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
assetData: string,
amount: BigNumber,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
return abiEncodedTransactionData;
},
async callAsync(
assetData: string,
amount: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ForwarderContract;
const functionSignature = 'withdrawAsset(bytes,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
amount
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.withdrawAsset;
const encodedData = ethersFunction.encode([assetData,
amount
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'withdrawAsset'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ForwarderContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public marketSellOrdersWithEth = {
async sendTransactionAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxDataPayable> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const encodedData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.marketSellOrdersWithEth.estimateGasAsync.bind(
self,
orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
return abiEncodedTransactionData;
},
async callAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
signatures: string[],
feeOrders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}, {makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}]
> {
const self = this as any as ForwarderContract;
const functionSignature = 'marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.marketSellOrdersWithEth;
const encodedData = ethersFunction.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'marketSellOrdersWithEth'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ForwarderContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
_wethAssetData: string,
): Promise<ForwarderContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ForwarderContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange,
_zrxAssetData,
_wethAssetData
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
_wethAssetData: string,
): Promise<ForwarderContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange,
_zrxAssetData,
_wethAssetData
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange,
_zrxAssetData,
_wethAssetData
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange,
_zrxAssetData,
_wethAssetData
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`Forwarder successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ForwarderContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange,
_zrxAssetData,
_wethAssetData
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('Forwarder', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,108 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class IValidatorContract extends BaseContract {
public isValidSignature = {
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as IValidatorContract;
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<IValidatorContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return IValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<IValidatorContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`IValidator successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new IValidatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('IValidator', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,103 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class IWalletContract extends BaseContract {
public isValidSignature = {
async callAsync(
hash: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as IWalletContract;
const functionSignature = 'isValidSignature(bytes32,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<IWalletContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return IWalletContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<IWalletContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`IWallet successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new IWalletContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('IWallet', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,357 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class OrderValidatorContract extends BaseContract {
public getOrderAndTraderInfo = {
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAddress: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{orderStatus: number;orderHash: string;orderTakerAssetFilledAmount: BigNumber}, {makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getOrderAndTraderInfo({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAddress
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAddress
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAddress
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getOrderAndTraderInfo;
const encodedData = ethersFunction.encode([order,
takerAddress
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getOrderAndTraderInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getBalanceAndAllowance = {
async callAsync(
target: string,
assetData: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber, BigNumber]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getBalanceAndAllowance(address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
assetData
] = BaseContract._formatABIDataItemList(inputAbi, [target,
assetData
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
assetData
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getBalanceAndAllowance;
const encodedData = ethersFunction.encode([target,
assetData
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getBalanceAndAllowance'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getOrdersAndTradersInfo = {
async callAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
takerAddresses: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[Array<{orderStatus: number;orderHash: string;orderTakerAssetFilledAmount: BigNumber}>, Array<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}>]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getOrdersAndTradersInfo(tuple[],address[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
takerAddresses
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
takerAddresses
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
takerAddresses
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getOrdersAndTradersInfo;
const encodedData = ethersFunction.encode([orders,
takerAddresses
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getOrdersAndTradersInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getTradersInfo = {
async callAsync(
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>,
takerAddresses: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<Array<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}>
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getTradersInfo(tuple[],address[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
takerAddresses
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
takerAddresses
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
takerAddresses
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getTradersInfo;
const encodedData = ethersFunction.encode([orders,
takerAddresses
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getTradersInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getERC721TokenOwner = {
async callAsync(
token: string,
tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getERC721TokenOwner(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[token,
tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [token,
tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [token,
tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getERC721TokenOwner;
const encodedData = ethersFunction.encode([token,
tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getERC721TokenOwner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getBalancesAndAllowances = {
async callAsync(
target: string,
assetData: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber[], BigNumber[]]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getBalancesAndAllowances(address,bytes[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
assetData
] = BaseContract._formatABIDataItemList(inputAbi, [target,
assetData
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
assetData
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getBalancesAndAllowances;
const encodedData = ethersFunction.encode([target,
assetData
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getBalancesAndAllowances'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getTraderInfo = {
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAddress: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getTraderInfo({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAddress
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAddress
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAddress
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getTraderInfo;
const encodedData = ethersFunction.encode([order,
takerAddress
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getTraderInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
): Promise<OrderValidatorContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return OrderValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange,
_zrxAssetData
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
): Promise<OrderValidatorContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange,
_zrxAssetData
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange,
_zrxAssetData
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange,
_zrxAssetData
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`OrderValidator successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new OrderValidatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange,
_zrxAssetData
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('OrderValidator', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,835 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type WETH9EventArgs =
| WETH9ApprovalEventArgs
| WETH9TransferEventArgs
| WETH9DepositEventArgs
| WETH9WithdrawalEventArgs;
export enum WETH9Events {
Approval = 'Approval',
Transfer = 'Transfer',
Deposit = 'Deposit',
Withdrawal = 'Withdrawal',
}
export interface WETH9ApprovalEventArgs extends DecodedLogArgs {
_owner: string;
_spender: string;
_value: BigNumber;
}
export interface WETH9TransferEventArgs extends DecodedLogArgs {
_from: string;
_to: string;
_value: BigNumber;
}
export interface WETH9DepositEventArgs extends DecodedLogArgs {
_owner: string;
_value: BigNumber;
}
export interface WETH9WithdrawalEventArgs extends DecodedLogArgs {
_owner: string;
_value: BigNumber;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class WETH9Contract extends BaseContract {
public name = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as WETH9Contract;
const functionSignature = 'name()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.name;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'name'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public approve = {
async sendTransactionAsync(
guy: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[guy,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [guy,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [guy,
wad
]);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([guy,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.approve.estimateGasAsync.bind(
self,
guy,
wad
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
guy: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[guy,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [guy,
wad
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([guy,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
guy: string,
wad: BigNumber,
): string {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[guy,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [guy,
wad
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([guy,
wad
]);
return abiEncodedTransactionData;
},
async callAsync(
guy: string,
wad: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WETH9Contract;
const functionSignature = 'approve(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[guy,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [guy,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [guy,
wad
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.approve;
const encodedData = ethersFunction.encode([guy,
wad
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'approve'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public totalSupply = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as WETH9Contract;
const functionSignature = 'totalSupply()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.totalSupply;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'totalSupply'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferFrom = {
async sendTransactionAsync(
src: string,
dst: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[src,
dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [src,
dst,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [src,
dst,
wad
]);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([src,
dst,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferFrom.estimateGasAsync.bind(
self,
src,
dst,
wad
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
src: string,
dst: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[src,
dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [src,
dst,
wad
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([src,
dst,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
src: string,
dst: string,
wad: BigNumber,
): string {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[src,
dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [src,
dst,
wad
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([src,
dst,
wad
]);
return abiEncodedTransactionData;
},
async callAsync(
src: string,
dst: string,
wad: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WETH9Contract;
const functionSignature = 'transferFrom(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[src,
dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [src,
dst,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [src,
dst,
wad
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferFrom;
const encodedData = ethersFunction.encode([src,
dst,
wad
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public withdraw = {
async sendTransactionAsync(
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('withdraw(uint256)').inputs;
[wad
] = BaseContract._formatABIDataItemList(inputAbi, [wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [wad
]);
const encodedData = self._lookupEthersInterface('withdraw(uint256)').functions.withdraw.encode([wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.withdraw.estimateGasAsync.bind(
self,
wad
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('withdraw(uint256)').inputs;
[wad
] = BaseContract._formatABIDataItemList(inputAbi, [wad
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('withdraw(uint256)').functions.withdraw.encode([wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
wad: BigNumber,
): string {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('withdraw(uint256)').inputs;
[wad
] = BaseContract._formatABIDataItemList(inputAbi, [wad
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('withdraw(uint256)').functions.withdraw.encode([wad
]);
return abiEncodedTransactionData;
},
async callAsync(
wad: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as WETH9Contract;
const functionSignature = 'withdraw(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[wad
] = BaseContract._formatABIDataItemList(inputAbi, [wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [wad
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.withdraw;
const encodedData = ethersFunction.encode([wad
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'withdraw'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public decimals = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<number
> {
const self = this as any as WETH9Contract;
const functionSignature = 'decimals()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.decimals;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'decimals'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public balanceOf = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as WETH9Contract;
const functionSignature = 'balanceOf(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.balanceOf;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'balanceOf'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public symbol = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as WETH9Contract;
const functionSignature = 'symbol()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.symbol;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'symbol'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transfer = {
async sendTransactionAsync(
dst: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [dst,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [dst,
wad
]);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([dst,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transfer.estimateGasAsync.bind(
self,
dst,
wad
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
dst: string,
wad: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [dst,
wad
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([dst,
wad
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
dst: string,
wad: BigNumber,
): string {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [dst,
wad
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([dst,
wad
]);
return abiEncodedTransactionData;
},
async callAsync(
dst: string,
wad: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WETH9Contract;
const functionSignature = 'transfer(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[dst,
wad
] = BaseContract._formatABIDataItemList(inputAbi, [dst,
wad
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [dst,
wad
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transfer;
const encodedData = ethersFunction.encode([dst,
wad
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transfer'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public deposit = {
async sendTransactionAsync(
txData: Partial<TxDataPayable> = {},
): Promise<string> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('deposit()').inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const encodedData = self._lookupEthersInterface('deposit()').functions.deposit.encode([]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.deposit.estimateGasAsync.bind(
self,
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('deposit()').inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('deposit()').functions.deposit.encode([]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
): string {
const self = this as any as WETH9Contract;
const inputAbi = self._lookupAbi('deposit()').inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('deposit()').functions.deposit.encode([]);
return abiEncodedTransactionData;
},
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as WETH9Contract;
const functionSignature = 'deposit()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.deposit;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'deposit'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public allowance = {
async callAsync(
index_0: string,
index_1: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as WETH9Contract;
const functionSignature = 'allowance(address,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0,
index_1
] = BaseContract._formatABIDataItemList(inputAbi, [index_0,
index_1
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0,
index_1
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.allowance;
const encodedData = ethersFunction.encode([index_0,
index_1
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'allowance'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<WETH9Contract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return WETH9Contract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<WETH9Contract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`WETH9 successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new WETH9Contract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('WETH9', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,646 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ZRXTokenEventArgs =
| ZRXTokenTransferEventArgs
| ZRXTokenApprovalEventArgs;
export enum ZRXTokenEvents {
Transfer = 'Transfer',
Approval = 'Approval',
}
export interface ZRXTokenTransferEventArgs extends DecodedLogArgs {
_from: string;
_to: string;
_value: BigNumber;
}
export interface ZRXTokenApprovalEventArgs extends DecodedLogArgs {
_owner: string;
_spender: string;
_value: BigNumber;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ZRXTokenContract extends BaseContract {
public name = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'name()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.name;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'name'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public approve = {
async sendTransactionAsync(
_spender: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_spender,
_value
]);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.approve.estimateGasAsync.bind(
self,
_spender,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_spender: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_spender: string,
_value: BigNumber,
): string {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('approve(address,uint256)').inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('approve(address,uint256)').functions.approve.encode([_spender,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_spender: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'approve(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_spender,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_spender,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_spender,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.approve;
const encodedData = ethersFunction.encode([_spender,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'approve'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public totalSupply = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'totalSupply()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.totalSupply;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'totalSupply'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferFrom = {
async sendTransactionAsync(
_from: string,
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_value
]);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferFrom.estimateGasAsync.bind(
self,
_from,
_to,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_from: string,
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_from: string,
_to: string,
_value: BigNumber,
): string {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transferFrom(address,address,uint256)').inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferFrom(address,address,uint256)').functions.transferFrom.encode([_from,
_to,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_from: string,
_to: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'transferFrom(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_from,
_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_from,
_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_from,
_to,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferFrom;
const encodedData = ethersFunction.encode([_from,
_to,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public decimals = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<number
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'decimals()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.decimals;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'decimals'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public balanceOf = {
async callAsync(
_owner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'balanceOf(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner
] = BaseContract._formatABIDataItemList(inputAbi, [_owner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.balanceOf;
const encodedData = ethersFunction.encode([_owner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'balanceOf'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public symbol = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'symbol()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.symbol;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'symbol'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transfer = {
async sendTransactionAsync(
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_to,
_value
]);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transfer.estimateGasAsync.bind(
self,
_to,
_value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
_to: string,
_value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
_to: string,
_value: BigNumber,
): string {
const self = this as any as ZRXTokenContract;
const inputAbi = self._lookupAbi('transfer(address,uint256)').inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transfer(address,uint256)').functions.transfer.encode([_to,
_value
]);
return abiEncodedTransactionData;
},
async callAsync(
_to: string,
_value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'transfer(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_to,
_value
] = BaseContract._formatABIDataItemList(inputAbi, [_to,
_value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_to,
_value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transfer;
const encodedData = ethersFunction.encode([_to,
_value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transfer'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public allowance = {
async callAsync(
_owner: string,
_spender: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<BigNumber
> {
const self = this as any as ZRXTokenContract;
const functionSignature = 'allowance(address,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[_owner,
_spender
] = BaseContract._formatABIDataItemList(inputAbi, [_owner,
_spender
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [_owner,
_spender
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.allowance;
const encodedData = ethersFunction.encode([_owner,
_spender
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'allowance'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ZRXTokenContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ZRXTokenContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ZRXTokenContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ZRXToken successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ZRXTokenContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ZRXToken', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1,14 @@
export * from './generated-wrappers/asset_proxy_owner';
export * from './generated-wrappers/dummy_erc20_token';
export * from './generated-wrappers/dummy_erc721_token';
export * from './generated-wrappers/erc20_proxy';
export * from './generated-wrappers/erc20_token';
export * from './generated-wrappers/erc721_proxy';
export * from './generated-wrappers/erc721_token';
export * from './generated-wrappers/exchange';
export * from './generated-wrappers/forwarder';
export * from './generated-wrappers/i_validator';
export * from './generated-wrappers/i_wallet';
export * from './generated-wrappers/order_validator';
export * from './generated-wrappers/weth9';
export * from './generated-wrappers/zrx_token';

View File

@@ -0,0 +1,8 @@
{
"extends": "../../tsconfig",
"compilerOptions": {
"outDir": "lib",
"rootDir": "."
},
"include": ["./src/**/*"]
}

View File

@@ -0,0 +1,3 @@
{
"extends": ["@0x/tslint-config"]
}

View File

@@ -1,4 +1,204 @@
[
{
"timestamp": 1539871071,
"version": "1.0.14",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.13",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1538693146
},
{
"timestamp": 1538157789,
"version": "1.0.12",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537907159,
"version": "1.0.11",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537875740,
"version": "1.0.10",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1537541580,
"version": "1.0.9",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1536142250,
"version": "1.0.8",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1535377027,
"version": "1.0.7",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1535133899,
"version": "1.0.6",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1534210131,
"version": "1.0.5",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1532619515,
"version": "1.0.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1532614997,
"version": "1.0.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1532605697,
"version": "1.0.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.1",
"changes": [
{
"note": "Fix the abi-gen entry point in package.json",
"pr": 901
}
],
"timestamp": 1532357734
},
{
"timestamp": 1532043000,
"version": "1.0.0",
"changes": [
{
"note": "Convert e_r_c to erc in generated file names",
"pr": 822
},
{
"note": "Remove the output directory before writing to it",
"pr": 822
},
{
"note": "skip generation of wrappers that are already up to date",
"pr": 788
}
]
},
{
"timestamp": 1531919263,
"version": "0.3.4",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1531149657,
"version": "0.3.3",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1529397769,
"version": "0.3.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "0.3.1",
"changes": [
{
"note": "Incorrect publish that was unpublished"
}
],
"timestamp": 1527810075
},
{
"version": "0.3.0",
"changes": [
{
"note": "Properly export the executable binary",
"pr": 588
}
],
"timestamp": 1527008270
},
{
"timestamp": 1525477860,
"version": "0.2.13",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1525428773,
"version": "0.2.12",

View File

@@ -1,10 +1,96 @@
<!--
This file is auto-generated using the monorepo-scripts package. Don't edit directly.
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
Edit the package's CHANGELOG.json file only.
-->
CHANGELOG
## v1.0.14 - _October 18, 2018_
* Dependencies updated
## v1.0.13 - _October 4, 2018_
* Dependencies updated
## v1.0.12 - _September 28, 2018_
* Dependencies updated
## v1.0.11 - _September 25, 2018_
* Dependencies updated
## v1.0.10 - _September 25, 2018_
* Dependencies updated
## v1.0.9 - _September 21, 2018_
* Dependencies updated
## v1.0.8 - _September 5, 2018_
* Dependencies updated
## v1.0.7 - _August 27, 2018_
* Dependencies updated
## v1.0.6 - _August 24, 2018_
* Dependencies updated
## v1.0.5 - _August 14, 2018_
* Dependencies updated
## v1.0.4 - _July 26, 2018_
* Dependencies updated
## v1.0.3 - _July 26, 2018_
* Dependencies updated
## v1.0.2 - _July 26, 2018_
* Dependencies updated
## v1.0.1 - _July 23, 2018_
* Fix the abi-gen entry point in package.json (#901)
## v1.0.0 - _July 19, 2018_
* Convert e_r_c to erc in generated file names (#822)
* Remove the output directory before writing to it (#822)
* skip generation of wrappers that are already up to date (#788)
## v0.3.4 - _July 18, 2018_
* Dependencies updated
## v0.3.3 - _July 9, 2018_
* Dependencies updated
## v0.3.2 - _June 19, 2018_
* Dependencies updated
## v0.3.1 - _May 31, 2018_
* Incorrect publish that was unpublished
## v0.3.0 - _May 22, 2018_
* Properly export the executable binary (#588)
## v0.2.13 - _May 4, 2018_
* Dependencies updated
## v0.2.12 - _May 4, 2018_
* Dependencies updated

View File

@@ -4,12 +4,11 @@ This package allows you to generate TypeScript contract wrappers from ABI files.
It's heavily inspired by [Geth abigen](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) but takes a different approach.
You can write your custom handlebars templates which will allow you to seamlessly integrate the generated code into your existing codebase with existing conventions.
For an example of the generated [wrapper files](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/src/contract_wrappers/generated) check out 0x.js.
[Here](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/contract_templates) are the templates used to generate those files.
[Here](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/contract_templates) are the templates used to generate the contract wrappers used by 0x.js.e
## Installation
`yarn add -g @0xproject/abi-gen`
`yarn add -g @0x/abi-gen`
## Usage
@@ -45,7 +44,7 @@ You need to also specify the location of your main template used for every contr
## How to write custom templates?
The best way to get started is to copy [0x.js templates](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/contract_templates) and start adjusting them for your needs.
The best way to get started is to copy [0x.js templates](https://github.com/0xProject/0x-monorepo/tree/development/packages/contract_templates) and start adjusting them for your needs.
We use [handlebars](http://handlebarsjs.com/) template engine under the hood.
You need to have a master template called `contract.mustache`. it will be used to generate each contract wrapper. Although - you don't need and probably shouldn't write all your logic in a single template file. You can write [partial templates](http://handlebarsjs.com/partials.html) and as long as they are within a partials folder - they will be registered and available.
@@ -80,28 +79,16 @@ yarn install
### Build
If this is your **first** time building this package, you must first build **all** packages within the monorepo. This is because packages that depend on other packages located inside this monorepo are symlinked when run from **within** the monorepo. This allows you to make changes across multiple packages without first publishing dependent packages to NPM. To build all packages, run the following from the monorepo root directory:
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
```bash
yarn lerna:rebuild
PKG=@0x/abi-gen yarn build
```
Or continuously rebuild on change:
```bash
yarn dev
```
You can also build this specific package by running the following from within its directory:
```bash
yarn build
```
or continuously rebuild on change:
```bash
yarn build:watch
PKG=@0x/abi-gen yarn watch
```
### Clean

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env node
require('../lib/src/index.js');

View File

@@ -1,18 +1,25 @@
{
"name": "@0xproject/abi-gen",
"version": "0.2.11",
"name": "@0x/abi-gen",
"version": "1.0.14",
"engines": {
"node": ">=6.12"
},
"description": "Generate contract wrappers from ABI and handlebars templates",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"main": "lib/src/index.js",
"types": "lib/src/index.d.ts",
"scripts": {
"build:watch": "tsc -w",
"lint": "tslint --project . 'src/**/*.ts'",
"clean": "shx rm -rf lib scripts",
"build": "tsc && copyfiles -u 2 './lib/monorepo_scripts/**/*' ./scripts",
"manual:postpublish": "yarn build; node ./scripts/postpublish.js"
"lint": "tslint --project .",
"clean": "shx rm -rf lib",
"build": "tsc -b",
"build:ci": "yarn build",
"test": "yarn run_mocha",
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --bail --exit",
"test:circleci": "yarn test:coverage",
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info"
},
"bin": {
"abi-gen": "lib/index.js"
"abi-gen": "bin/abi-gen.js"
},
"repository": {
"type": "git",
@@ -24,30 +31,36 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md",
"dependencies": {
"@0xproject/types": "^0.6.1",
"@0xproject/typescript-typings": "^0.2.0",
"@0xproject/utils": "^0.5.2",
"@0x/typescript-typings": "^3.0.3",
"@0x/utils": "^2.0.3",
"chalk": "^2.3.0",
"ethereum-types": "^1.1.1",
"glob": "^7.1.2",
"handlebars": "^4.0.11",
"lodash": "^4.17.4",
"lodash": "^4.17.5",
"mkdirp": "^0.5.1",
"sleep": "^5.1.1",
"tmp": "^0.0.33",
"to-snake-case": "^1.0.0",
"yargs": "^10.0.3"
},
"devDependencies": {
"@0xproject/monorepo-scripts": "^0.1.18",
"@0xproject/tslint-config": "^0.4.16",
"@types/glob": "^5.0.33",
"@0x/tslint-config": "^1.0.9",
"@types/glob": "5.0.35",
"@types/handlebars": "^4.0.36",
"@types/mkdirp": "^0.5.1",
"@types/node": "^8.0.53",
"@types/node": "*",
"@types/sleep": "^0.0.7",
"@types/tmp": "^0.0.33",
"@types/yargs": "^10.0.0",
"copyfiles": "^1.2.0",
"chai": "^4.1.2",
"dirty-chai": "^2.0.1",
"make-promises-safe": "^1.1.0",
"mocha": "^5.2.0",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
"tslint": "5.8.0",
"typescript": "2.7.1"
"tslint": "5.11.0",
"typescript": "3.0.1"
},
"publishConfig": {
"access": "public"

View File

@@ -1,18 +1,15 @@
#!/usr/bin/env node
import { AbiDefinition, ConstructorAbi, EventAbi, MethodAbi } from '@0xproject/types';
import { abiUtils, logUtils } from '@0xproject/utils';
import { abiUtils, logUtils } from '@0x/utils';
import chalk from 'chalk';
import * as fs from 'fs';
import { AbiDefinition, ConstructorAbi, EventAbi, MethodAbi } from 'ethereum-types';
import { sync as globSync } from 'glob';
import * as Handlebars from 'handlebars';
import * as _ from 'lodash';
import * as mkdirp from 'mkdirp';
import * as yargs from 'yargs';
import toSnakeCase = require('to-snake-case');
import { ContextData, ContractsBackend, Method, ParamKind } from './types';
import { ContextData, ContractsBackend, ParamKind } from './types';
import { utils } from './utils';
const ABI_TYPE_CONSTRUCTOR = 'constructor';
@@ -61,24 +58,13 @@ const args = yargs
'Full usage example',
).argv;
function registerPartials(partialsGlob: string) {
function registerPartials(partialsGlob: string): void {
const partialTemplateFileNames = globSync(partialsGlob);
logUtils.log(`Found ${chalk.green(`${partialTemplateFileNames.length}`)} ${chalk.bold('partial')} templates`);
for (const partialTemplateFileName of partialTemplateFileNames) {
const namedContent = utils.getNamedContent(partialTemplateFileName);
Handlebars.registerPartial(namedContent.name, namedContent.content);
}
return partialsGlob;
}
function writeOutputFile(name: string, renderedTsCode: string): void {
let fileName = toSnakeCase(name);
if (fileName === 'z_r_x_token') {
fileName = 'zrx_token';
}
const filePath = `${args.output}/${fileName}.ts`;
fs.writeFileSync(filePath, renderedTsCode);
logUtils.log(`Created: ${chalk.bold(filePath)}`);
}
Handlebars.registerHelper('parameterType', utils.solTypeToTsType.bind(utils, ParamKind.Input, args.backend));
@@ -108,17 +94,25 @@ for (const abiFileName of abiFileNames) {
ABI = parsedContent; // ABI file
} else if (!_.isUndefined(parsedContent.abi)) {
ABI = parsedContent.abi; // Truffle artifact
} else if (!_.isUndefined(parsedContent.networks) && !_.isUndefined(parsedContent.networks[args.networkId])) {
ABI = parsedContent.networks[args.networkId].abi; // 0x contracts package artifact
} else if (!_.isUndefined(parsedContent.compilerOutput.abi)) {
ABI = parsedContent.compilerOutput.abi; // 0x artifact
}
if (_.isUndefined(ABI)) {
logUtils.log(`${chalk.red(`ABI not found in ${abiFileName}.`)}`);
logUtils.log(
`Please make sure your ABI file is either an array with ABI entries or a truffle artifact or 0x deployer artifact`,
`Please make sure your ABI file is either an array with ABI entries or a truffle artifact or 0x sol-compiler artifact`,
);
process.exit(1);
}
const outFileName = utils.makeOutputFileName(namedContent.name);
const outFilePath = `${args.output}/${outFileName}.ts`;
if (utils.isOutputFileUpToDate(abiFileName, outFilePath)) {
logUtils.log(`Already up to date: ${chalk.bold(outFilePath)}`);
continue;
}
let ctor = ABI.find((abi: AbiDefinition) => abi.type === ABI_TYPE_CONSTRUCTOR) as ConstructorAbi;
if (_.isUndefined(ctor)) {
ctor = utils.getEmptyConstructor(); // The constructor exists, but it's implicit in JSON's ABI definition
@@ -153,5 +147,6 @@ for (const abiFileName of abiFileNames) {
events: eventAbis,
};
const renderedTsCode = template(contextData);
writeOutputFile(namedContent.name, renderedTsCode);
utils.writeOutputFile(outFilePath, renderedTsCode);
logUtils.log(`Created: ${chalk.bold(outFilePath)}`);
}

View File

@@ -1,8 +0,0 @@
import { postpublishUtils } from '@0xproject/monorepo-scripts';
import * as packageJSON from '../package.json';
import * as tsConfigJSON from '../tsconfig.json';
const cwd = `${__dirname}/..`;
// tslint:disable-next-line:no-floating-promises
postpublishUtils.runAsync(packageJSON, tsConfigJSON, cwd);

View File

@@ -1,4 +1,4 @@
import { EventAbi, MethodAbi } from '@0xproject/types';
import { EventAbi, MethodAbi } from 'ethereum-types';
export enum ParamKind {
Input = 'input',

View File

@@ -1,7 +1,8 @@
import { AbiType, ConstructorAbi, DataItem } from '@0xproject/types';
import { AbiType, ConstructorAbi, DataItem } from 'ethereum-types';
import * as fs from 'fs';
import * as _ from 'lodash';
import * as path from 'path';
import toSnakeCase = require('to-snake-case');
import { ContractsBackend, ParamKind } from './types';
@@ -56,7 +57,7 @@ export const utils = {
const componentType = `${component.name}: ${componentValueType}`;
return componentType;
});
const tsType = `{${componentsType}}`;
const tsType = `{${componentsType.join(';')}}`;
return tsType;
}
throw new Error(`Unknown Solidity type found: ${solType}`);
@@ -92,4 +93,27 @@ export const utils = {
inputs: [],
};
},
makeOutputFileName(name: string): string {
let fileName = toSnakeCase(name);
// HACK: Snake case doesn't make a lot of sense for abbreviated names but we can't reliably detect abbreviations
// so we special-case the abbreviations we use.
fileName = fileName.replace('z_r_x', 'zrx').replace('e_r_c', 'erc');
return fileName;
},
writeOutputFile(filePath: string, renderedTsCode: string): void {
fs.writeFileSync(filePath, renderedTsCode);
},
isOutputFileUpToDate(abiFile: string, outputFile: string): boolean {
const abiFileModTimeMs = fs.statSync(abiFile).mtimeMs;
try {
const outFileModTimeMs = fs.statSync(outputFile).mtimeMs;
return outFileModTimeMs > abiFileModTimeMs;
} catch (err) {
if (err.code === 'ENOENT') {
return false;
} else {
throw err;
}
}
},
};

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