diff options
49 files changed, 344 insertions, 224 deletions
@@ -40,8 +40,8 @@ This repository contains all the 0x developer tools written in TypeScript. Our h | Package | Description | | ----------------------------------------------------------- | ---------------------------------------------------------------- | | [`@0xproject/contracts`](/packages/contracts) | 0x solidity smart contracts & tests | -| [`@0xproject/kovan_faucets`](/packages/kovan-faucets) | A faucet micro-service that dispenses test ERC20 tokens or Ether | | [`@0xproject/monorepo-scripts`](/packages/monorepo-scripts) | Shared monorepo scripts | +| [`@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 | ## Usage diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index 1a09eaf28..ec44bfc16 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -1,8 +1,10 @@ # CHANGELOG -## v0.30.1 - _January 18, 2018_ +## v0.30.1 - _TBD, 2018_ * Fix a bug allowing negative fill values (#212) + * Fix a bug that made it impossible to pass a custom ZRX address (#341) + * Add Rinkeby testnet addresses to artifacts (#337) ## v0.30.0 - _January 17, 2018_ diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 1405e1bf7..10d923501 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,25 +1,28 @@ { "name": "0x.js", - "version": "0.30.0", + "version": "0.30.2", "description": "A javascript library for interacting with the 0x protocol", - "keywords": ["0x.js", "0xproject", "ethereum", "tokens", "exchange"], + "keywords": [ + "0x.js", + "0xproject", + "ethereum", + "tokens", + "exchange" + ], "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "scripts": { "prebuild": "run-s clean generate_contract_wrappers", "build": "run-p build:umd:prod build:commonjs; exit 0;", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_DIR", - "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", - "generate_contract_wrappers": - "node ../abi-gen/lib/index.js --abiGlob 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --templates contract_templates --output src/contract_wrappers/generated", + "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", + "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abiGlob 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --templates contract_templates --output src/contract_wrappers/generated", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", "test:circleci": "run-s test:coverage report_test_coverage", "test": "run-s clean test:commonjs", "test:coverage": "nyc npm run test --all", "report_test_coverage": "nyc report --reporter=text-lcov | coveralls", - "update_contracts": - "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", + "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp", "build:umd:prod": "NODE_ENV=production webpack", "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts;", @@ -38,10 +41,9 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0xproject/abi-gen": "^0.1.2", - "@0xproject/dev-utils": "^0.0.5", - "@0xproject/tslint-config": "^0.4.2", - "@0xproject/types": "^0.1.4", + "@0xproject/abi-gen": "^0.1.4", + "@0xproject/dev-utils": "^0.0.7", + "@0xproject/tslint-config": "^0.4.4", "@types/bintrees": "^1.0.2", "@types/jsonschema": "^1.1.1", "@types/lodash": "^4.14.86", @@ -52,7 +54,7 @@ "awesome-typescript-loader": "^3.1.3", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", - "chai-as-promised-typescript-typings": "^0.0.4", + "chai-as-promised-typescript-typings": "^0.0.6", "chai-bignumber": "^2.0.1", "chai-typescript-typings": "^0.0.2", "copyfiles": "^1.2.0", @@ -73,14 +75,15 @@ "typedoc": "~0.8.0", "typescript": "~2.6.1", "web3-provider-engine": "^13.0.1", - "web3-typescript-typings": "^0.9.4", + "web3-typescript-typings": "^0.9.6", "webpack": "^3.1.0" }, "dependencies": { - "@0xproject/assert": "^0.0.11", - "@0xproject/json-schemas": "^0.7.3", - "@0xproject/utils": "^0.2.0", - "@0xproject/web3-wrapper": "^0.1.5", + "@0xproject/assert": "^0.0.13", + "@0xproject/json-schemas": "^0.7.5", + "@0xproject/types": "^0.1.6", + "@0xproject/utils": "^0.2.2", + "@0xproject/web3-wrapper": "^0.1.7", "bintrees": "^1.0.2", "bn.js": "^4.11.8", "ethereumjs-abi": "^0.6.4", diff --git a/packages/0x.js/src/0x.ts b/packages/0x.js/src/0x.ts index e1b0ef08e..503a937c4 100644 --- a/packages/0x.js/src/0x.ts +++ b/packages/0x.js/src/0x.ts @@ -191,6 +191,7 @@ export class ZeroEx { this._abiDecoder, this.token, config.exchangeContractAddress, + config.zrxContractAddress, ); this.tokenRegistry = new TokenRegistryWrapper( this._web3Wrapper, diff --git a/packages/0x.js/src/artifacts/EtherToken.json b/packages/0x.js/src/artifacts/EtherToken.json index 91fba7f0a..26cca57cd 100644 --- a/packages/0x.js/src/artifacts/EtherToken.json +++ b/packages/0x.js/src/artifacts/EtherToken.json @@ -274,6 +274,9 @@ "3": { "address": "0xc00fd9820cd2898cc4c054b7bf142de637ad129a" }, + "4": { + "address": "0xc778417e063141139fce010982780140aa0cd5ab" + }, "42": { "address": "0x653e49e301e508a13237c0ddc98ae7d4cd2667a1" }, diff --git a/packages/0x.js/src/artifacts/Exchange.json b/packages/0x.js/src/artifacts/Exchange.json index 45e277c45..af8db7360 100644 --- a/packages/0x.js/src/artifacts/Exchange.json +++ b/packages/0x.js/src/artifacts/Exchange.json @@ -597,6 +597,9 @@ "3": { "address": "0x479cc461fecd078f766ecc58533d6f69580cf3ac" }, + "4": { + "address": "0x1d16ef40fac01cec8adac2ac49427b9384192c05" + }, "42": { "address": "0x90fe2af704b34e0224bf2299c838e04d4dcf1364" }, diff --git a/packages/0x.js/src/artifacts/TokenRegistry.json b/packages/0x.js/src/artifacts/TokenRegistry.json index 81780074c..0f583628c 100644 --- a/packages/0x.js/src/artifacts/TokenRegistry.json +++ b/packages/0x.js/src/artifacts/TokenRegistry.json @@ -534,6 +534,9 @@ "3": { "address": "0x6b1a50f0bb5a7995444bd3877b22dc89c62843ed" }, + "4": { + "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" + }, "42": { "address": "0xf18e504561f4347bea557f3d4558f559dddbae7f" }, diff --git a/packages/0x.js/src/artifacts/TokenTransferProxy.json b/packages/0x.js/src/artifacts/TokenTransferProxy.json index 9b6a6cdf9..8cf551ddb 100644 --- a/packages/0x.js/src/artifacts/TokenTransferProxy.json +++ b/packages/0x.js/src/artifacts/TokenTransferProxy.json @@ -174,6 +174,9 @@ "3": { "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" }, + "4": { + "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" + }, "42": { "address": "0x087eed4bc1ee3de49befbd66c662b434b15d49d4" }, diff --git a/packages/0x.js/src/artifacts/ZRX.json b/packages/0x.js/src/artifacts/ZRX.json index 1bd973178..e40b8f268 100644 --- a/packages/0x.js/src/artifacts/ZRX.json +++ b/packages/0x.js/src/artifacts/ZRX.json @@ -7,6 +7,9 @@ "3": { "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" }, + "4": { + "address": "0x00f58d6d585f84b2d7267940cede30ce2fe6eae8" + }, "42": { "address": "0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570" }, diff --git a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts index be88cdb20..2b6117729 100644 --- a/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts +++ b/packages/0x.js/src/contract_wrappers/exchange_wrapper.ts @@ -87,11 +87,13 @@ export class ExchangeWrapper extends ContractWrapper { abiDecoder: AbiDecoder, tokenWrapper: TokenWrapper, contractAddressIfExists?: string, + zrxContractAddressIfExists?: string, ) { super(web3Wrapper, networkId, abiDecoder); 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 diff --git a/packages/0x.js/src/types.ts b/packages/0x.js/src/types.ts index 2decd92ba..3c93910e9 100644 --- a/packages/0x.js/src/types.ts +++ b/packages/0x.js/src/types.ts @@ -290,6 +290,7 @@ export interface OrderStateWatcherConfig { * networkId: The id of the underlying ethereum network your provider is connected to. (1-mainnet, 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 @@ -298,6 +299,7 @@ export interface ZeroExConfig { networkId: number; gasPrice?: BigNumber; exchangeContractAddress?: string; + zrxContractAddress?: string; tokenRegistryContractAddress?: string; tokenTransferProxyContractAddress?: string; orderWatcherConfig?: OrderStateWatcherConfig; diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index 87364c73e..31a0f7f55 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/abi-gen", - "version": "0.1.2", + "version": "0.1.4", "description": "Generate contract wrappers from ABI and handlebars templates", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -22,7 +22,7 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/abi-gen/README.md", "dependencies": { - "@0xproject/utils": "^0.2.0", + "@0xproject/utils": "^0.2.2", "chalk": "^2.3.0", "glob": "^7.1.2", "handlebars": "^4.0.11", @@ -33,7 +33,7 @@ "yargs": "^10.0.3" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/glob": "^5.0.33", "@types/handlebars": "^4.0.36", "@types/mkdirp": "^0.5.1", @@ -43,6 +43,6 @@ "shx": "^0.2.2", "tslint": "5.8.0", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4" + "web3-typescript-typings": "^0.9.6" } } diff --git a/packages/assert/package.json b/packages/assert/package.json index 5d1f9b4d2..a2d195728 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/assert", - "version": "0.0.11", + "version": "0.0.13", "description": "Provides a standard way of performing type and schema validation across 0x projects", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -23,7 +23,7 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/assert/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/lodash": "^4.14.86", "@types/mocha": "^2.2.42", "@types/valid-url": "^1.0.2", @@ -37,8 +37,8 @@ "typescript": "~2.6.1" }, "dependencies": { - "@0xproject/json-schemas": "^0.7.3", - "@0xproject/utils": "^0.2.0", + "@0xproject/json-schemas": "^0.7.5", + "@0xproject/utils": "^0.2.2", "lodash": "^4.17.4", "valid-url": "^1.0.9" } diff --git a/packages/chai-as-promised-typescript-typings/package.json b/packages/chai-as-promised-typescript-typings/package.json index 8c5314be5..bde308547 100644 --- a/packages/chai-as-promised-typescript-typings/package.json +++ b/packages/chai-as-promised-typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "chai-as-promised-typescript-typings", - "version": "0.0.4", + "version": "0.0.6", "description": "Typescript type definitions for chai-as-promised", "main": "index.d.ts", "types": "index.d.ts", @@ -9,7 +9,9 @@ "url": "git+https://github.com/0xProject/0x.js.git" }, "author": "Fabio Berger", - "contributors": ["Leonid Logvinov <logvinov.leon@gmail.com>"], + "contributors": [ + "Leonid Logvinov <logvinov.leon@gmail.com>" + ], "license": "Apache-2.0", "bugs": { "url": "https://github.com/0xProject/0x.js/issues" diff --git a/packages/connect/package.json b/packages/connect/package.json index 45a01b475..e67947dd4 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,16 +1,21 @@ { "name": "@0xproject/connect", - "version": "0.5.0", + "version": "0.5.2", "description": "A javascript library for interacting with the standard relayer api", - "keywords": ["connect", "0xproject", "ethereum", "tokens", "exchange"], + "keywords": [ + "connect", + "0xproject", + "ethereum", + "tokens", + "exchange" + ], "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "scripts": { "build": "tsc", "clean": "shx rm -rf _bundles lib test_temp", "docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json $JSON_FILE_PATH $PROJECT_DIR", - "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", + "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", "copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", "run_mocha": "mocha lib/test/**/*_test.js", @@ -31,16 +36,16 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/connect/README.md", "dependencies": { - "@0xproject/assert": "^0.0.11", - "@0xproject/json-schemas": "^0.7.3", - "@0xproject/utils": "^0.2.0", + "@0xproject/assert": "^0.0.13", + "@0xproject/json-schemas": "^0.7.5", + "@0xproject/utils": "^0.2.2", "isomorphic-fetch": "^2.2.1", "lodash": "^4.17.4", "query-string": "^5.0.1", "websocket": "^1.0.25" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/fetch-mock": "^5.12.1", "@types/lodash": "^4.14.86", "@types/mocha": "^2.2.42", @@ -48,7 +53,7 @@ "@types/websocket": "^0.0.34", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", - "chai-as-promised-typescript-typings": "^0.0.4", + "chai-as-promised-typescript-typings": "^0.0.6", "chai-typescript-typings": "^0.0.2", "copyfiles": "^1.2.0", "dirty-chai": "^2.0.1", @@ -59,6 +64,6 @@ "tslint": "5.8.0", "typedoc": "~0.8.0", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4" + "web3-typescript-typings": "^0.9.6" } } diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 3049c1666..b3af7c55d 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,18 +1,16 @@ { "private": true, "name": "contracts", - "version": "2.1.4", + "version": "2.1.6", "description": "Smart contract components of 0x protocol", "main": "index.js", "directories": { "test": "test" }, "scripts": { - "build": - "rm -rf ./lib; copyfiles ./build/**/* ./deploy/solc/solc_bin/* ./deploy/test/fixtures/contracts/**/* ./deploy/test/fixtures/contracts/* ./lib; tsc;", + "build": "rm -rf ./lib; copyfiles ./build/**/* ./deploy/solc/solc_bin/* ./deploy/test/fixtures/contracts/**/* ./deploy/test/fixtures/contracts/* ./lib; tsc;", "test": "npm run build; truffle test", - "compile:comment": - "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", + "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", "compile": "node ../deployer/lib/src/cli.js compile", "clean": "rm -rf ./lib", "migrate": "node ../deployer/lib/src/cli.js migrate", @@ -30,9 +28,9 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/contracts/README.md", "devDependencies": { - "@0xproject/dev-utils": "^0.0.5", - "@0xproject/tslint-config": "^0.4.2", - "@0xproject/types": "^0.1.4", + "@0xproject/dev-utils": "^0.0.7", + "@0xproject/tslint-config": "^0.4.4", + "@0xproject/types": "^0.1.6", "@types/bluebird": "^3.5.3", "@types/lodash": "^4.14.86", "@types/node": "^8.0.53", @@ -40,7 +38,7 @@ "@types/yargs": "^10.0.0", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", - "chai-as-promised-typescript-typings": "^0.0.4", + "chai-as-promised-typescript-typings": "^0.0.6", "chai-bignumber": "^2.0.1", "chai-typescript-typings": "^0.0.2", "copyfiles": "^1.2.0", @@ -52,15 +50,15 @@ "types-bn": "^0.0.1", "types-ethereumjs-util": "0xProject/types-ethereumjs-util", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4", + "web3-typescript-typings": "^0.9.6", "yargs": "^10.0.3" }, "dependencies": { - "0x.js": "^0.30.0", - "@0xproject/deployer": "*", - "@0xproject/json-schemas": "^0.7.3", - "@0xproject/utils": "^0.2.0", - "@0xproject/web3-wrapper": "^0.1.5", + "0x.js": "^0.30.2", + "@0xproject/deployer": "^0.0.3", + "@0xproject/json-schemas": "^0.7.5", + "@0xproject/utils": "^0.2.2", + "@0xproject/web3-wrapper": "^0.1.7", "bluebird": "^3.5.0", "bn.js": "^4.11.8", "ethereumjs-abi": "^0.6.4", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index b359382c5..423d3bad8 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/deployer", - "version": "0.0.1", + "version": "0.0.3", "description": "Smart contract deployer of 0x protocol", "main": "lib/src/cli.js", "scripts": { @@ -27,17 +27,17 @@ "homepage": "https://github.com/0xProject/0x.js/packages/deployer/README.md", "devDependencies": { "copyfiles": "^1.2.0", - "web3-typescript-typings": "^0.9.3", "types-bn": "^0.0.1", - "typescript": "~2.6.1" + "typescript": "~2.6.1", + "web3-typescript-typings": "^0.9.6" }, "dependencies": { "@0xproject/utils": "^0.1.3", - "@0xproject/web3-wrapper": "^0.1.4", + "@0xproject/web3-wrapper": "^0.1.7", "lodash": "^4.17.4", "solc": "^0.4.18", - "yargs": "^10.0.3", + "web3": "^0.20.0", "web3-eth-abi": "^1.0.0-beta.24", - "web3": "^0.20.0" + "yargs": "^10.0.3" } } diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 4a68dc2d4..ea940fb1d 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/dev-utils", - "version": "0.0.5", + "version": "0.0.7", "description": "0x dev TS utils", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -19,7 +19,7 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/dev-utils/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/lodash": "^4.14.86", "npm-run-all": "^4.1.2", "shx": "^0.2.2", @@ -29,7 +29,7 @@ "typescript": "~2.6.1" }, "dependencies": { - "@0xproject/utils": "^0.2.0", + "@0xproject/utils": "^0.2.2", "ethereumjs-util": "^5.1.2", "lodash": "^4.17.4", "request-promise-native": "^1.0.5" diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index 0f2fd156a..d67cb64f7 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/json-schemas", - "version": "0.7.3", + "version": "0.7.5", "description": "0x-related json schemas", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -27,8 +27,8 @@ "lodash.values": "^4.3.0" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", - "@0xproject/utils": "^0.2.0", + "@0xproject/tslint-config": "^0.4.4", + "@0xproject/utils": "^0.2.2", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/kovan-faucets/src/ts/handler.ts b/packages/kovan-faucets/src/ts/handler.ts deleted file mode 100644 index 4bf776264..000000000 --- a/packages/kovan-faucets/src/ts/handler.ts +++ /dev/null @@ -1,93 +0,0 @@ -import * as express from 'express'; -import * as _ from 'lodash'; -import ProviderEngine = require('web3-provider-engine'); -import HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet'); -import NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); - -import { configs } from './configs'; -import { EtherRequestQueue } from './ether_request_queue'; -import { idManagement } from './id_management'; -import { utils } from './utils'; -import { ZRXRequestQueue } from './zrx_request_queue'; - -// HACK: web3 leaks XMLHttpRequest into the global scope and causes requests to hang -// because they are using the wrong XHR package. -// Filed issue: https://github.com/ethereum/web3.js/issues/844 -// tslint:disable-next-line:ordered-imports -import * as Web3 from 'web3'; - -export class Handler { - private _etherRequestQueue: EtherRequestQueue; - private _zrxRequestQueue: ZRXRequestQueue; - private _web3: Web3; - constructor() { - // Setup provider engine to talk with RPC node - const providerObj = this._createProviderEngine(configs.RPC_URL); - this._web3 = new Web3(providerObj); - - this._etherRequestQueue = new EtherRequestQueue(this._web3); - this._zrxRequestQueue = new ZRXRequestQueue(this._web3); - } - public dispenseEther(req: express.Request, res: express.Response) { - const recipientAddress = req.params.recipient; - if (_.isUndefined(recipientAddress) || !this._isValidEthereumAddress(recipientAddress)) { - res.status(400).send('INVALID_REQUEST'); - return; - } - const lowerCaseRecipientAddress = recipientAddress.toLowerCase(); - const didAddToQueue = this._etherRequestQueue.add(lowerCaseRecipientAddress); - if (!didAddToQueue) { - res.status(503).send('QUEUE_IS_FULL'); - return; - } - utils.consoleLog(`Added ${lowerCaseRecipientAddress} to the ETH queue`); - res.status(200).end(); - } - public dispenseZRX(req: express.Request, res: express.Response) { - const recipientAddress = req.params.recipient; - if (_.isUndefined(recipientAddress) || !this._isValidEthereumAddress(recipientAddress)) { - res.status(400).send('INVALID_REQUEST'); - return; - } - const lowerCaseRecipientAddress = recipientAddress.toLowerCase(); - const didAddToQueue = this._zrxRequestQueue.add(lowerCaseRecipientAddress); - if (!didAddToQueue) { - res.status(503).send('QUEUE_IS_FULL'); - return; - } - utils.consoleLog(`Added ${lowerCaseRecipientAddress} to the ZRX queue`); - res.status(200).end(); - } - public getQueueInfo(req: express.Request, res: express.Response) { - res.setHeader('Content-Type', 'application/json'); - const payload = JSON.stringify({ - ether: { - full: this._etherRequestQueue.isFull(), - size: this._etherRequestQueue.size(), - }, - zrx: { - full: this._zrxRequestQueue.isFull(), - size: this._zrxRequestQueue.size(), - }, - }); - res.status(200).send(payload); - } - // tslint:disable-next-line:prefer-function-over-method - private _createProviderEngine(rpcUrl: string) { - const engine = new ProviderEngine(); - engine.addProvider(new NonceSubprovider()); - engine.addProvider(new HookedWalletSubprovider(idManagement)); - engine.addProvider( - new RpcSubprovider({ - rpcUrl, - }), - ); - engine.start(); - return engine; - } - private _isValidEthereumAddress(address: string): boolean { - const lowercaseAddress = address.toLowerCase(); - return this._web3.isAddress(lowercaseAddress); - } -} diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index 6a62e22dd..2bf2aa796 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/monorepo-scripts", - "version": "0.1.4", + "version": "0.1.6", "private": true, "description": "Helper scripts for the monorepo", "scripts": { @@ -19,7 +19,7 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/monorepo-scripts/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/glob": "^5.0.33", "@types/node": "^8.0.53", "shx": "^0.2.2", diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index 05464a11e..146c94496 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/subproviders", - "version": "0.3.1", + "version": "0.3.3", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "license": "Apache-2.0", @@ -17,8 +17,8 @@ "test:integration": "run-s clean build run_mocha_integration" }, "dependencies": { - "@0xproject/assert": "^0.0.11", - "@0xproject/utils": "^0.2.0", + "@0xproject/assert": "^0.0.13", + "@0xproject/utils": "^0.2.2", "bn.js": "^4.11.8", "es6-promisify": "^5.0.0", "ethereumjs-tx": "^1.3.3", @@ -31,15 +31,15 @@ "web3-provider-engine": "^13.0.1" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", - "@0xproject/utils": "^0.2.0", + "@0xproject/tslint-config": "^0.4.4", + "@0xproject/utils": "^0.2.2", "@types/lodash": "^4.14.86", "@types/mocha": "^2.2.42", "@types/node": "^8.0.53", "awesome-typescript-loader": "^3.1.3", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", - "chai-as-promised-typescript-typings": "^0.0.4", + "chai-as-promised-typescript-typings": "^0.0.6", "chai-typescript-typings": "^0.0.2", "dirty-chai": "^2.0.1", "mocha": "^4.0.1", diff --git a/packages/kovan-faucets/Dockerfile b/packages/testnet-faucets/Dockerfile index 6d6ddc192..6d6ddc192 100644 --- a/packages/kovan-faucets/Dockerfile +++ b/packages/testnet-faucets/Dockerfile diff --git a/packages/kovan-faucets/README.md b/packages/testnet-faucets/README.md index 07bd23575..a52d16a00 100644 --- a/packages/kovan-faucets/README.md +++ b/packages/testnet-faucets/README.md @@ -1,4 +1,4 @@ -## @0xproject/kovan_faucets +## @0xproject/testnet-faucets This faucet dispenses 0.1 test ether to one recipient per second and 0.1 test ZRX every 5 seconds. It has a max queue size of 1000. @@ -31,14 +31,19 @@ yarn install Set the following environment variables: ```bash -export FAUCET_ENVIRONMENT=development export DISPENSER_ADDRESS=0x5409ed021d9299bf6814279a6a1411a7e866a631 export DISPENSER_PRIVATE_KEY=f2f48ee19680706196e2e339e5da3491186e0c4c5030670656b0e0164837257d export FAUCET_ROLLBAR_ACCESS_KEY={GET_THIS_FROM_ROLLBAR_ACCOUNT_SETTINGS} export INFURA_API_KEY={GET_THIS_FROM_INFURA} ``` -Infura API Key can be requested here: https://infura.io/register.html +If you want to talk to testrpc, set the following environment variable: + +```bash +export FAUCET_ENVIRONMENT=development +``` + +Infura API Key can be requested here: https://infura.io/signup Note: The above public/private keys exist when running `testrpc` with the following option `--mnemonic concert load couple harbor equip island argue ramp clarify fence smart topic`. @@ -48,27 +53,73 @@ yarn dev ### Endpoints +`GET /ping` + +Returns `pong` + +`GET /info` + +Returns a JSON payload describing the state of the queues for each network. For example: + +```json +{ + "3": { + "ether": { + "full": false, + "size": 4 + }, + "zrx": { + "full": false, + "size": 6 + } + }, + "42": { + "ether": { + "full": false, + "size": 8 + }, + "zrx": { + "full": false, + "size": 20 + } + } +} +``` + `GET /ether/:recipient` -Where recipient_address is a hex encoded Ethereum address prefixed with `0x`. +Where recipient is a hex encoded Ethereum address prefixed with `0x`. `GET /zrx/:recipient` -Where recipient_address is a hex encoded Ethereum address prefixed with `0x`. +Where recipient is a hex encoded Ethereum address prefixed with `0x`. + +#### Parameters + +The endpoints `/ether` and `/zrx` take a query parameter named `networkId` to specify the desired network where you would like to receive the ETH or ZRX. For example: + +```bash +curl -i http://localhost:3000/ether/0x14e2F1F157E7DD4057D02817436D628A37120FD1\?networkId=3 +``` + +This command will request the local server to initiate a transfer of 0.1 ETH from the dispensing address to `0x14e2F1F157E7DD4057D02817436D628A37120FD1` on the Ropsten testnet. + +If no `networkId` is provided via query parameters the faucet will default to network 42 (Kovan) ### Docker configs ``` docker run -d \ -p 80:3000 \ ---name kovan-faucets \ +--name testnet-faucets \ --log-opt max-size=100m \ --log-opt max-file=20 \ -e DISPENSER_ADDRESS=$DISPENSER_ADDRESS \ -e DISPENSER_PRIVATE_KEY=$DISPENSER_PRIVATE_KEY \ -e FAUCET_ROLLBAR_ACCESS_KEY=$FAUCET_ROLLBAR_ACCESS_KEY \ -e FAUCET_ENVIRONMENT=production \ -kovan-faucets +-e INFURA_API_KEY=$INFURA_API_KEY \ +testnet-faucets ``` ### Lint diff --git a/packages/kovan-faucets/gulpfile.js b/packages/testnet-faucets/gulpfile.js index 773faf33a..773faf33a 100644 --- a/packages/kovan-faucets/gulpfile.js +++ b/packages/testnet-faucets/gulpfile.js diff --git a/packages/kovan-faucets/package.json b/packages/testnet-faucets/package.json index eab0dc677..6c27df0d5 100644 --- a/packages/kovan-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -1,7 +1,7 @@ { "private": true, - "name": "@0xproject/kovan_faucets", - "version": "1.0.5", + "name": "@0xproject/testnet-faucets", + "version": "1.0.7", "description": "A faucet micro-service that dispenses test ERC20 tokens or Ether", "main": "server.js", "scripts": { @@ -14,8 +14,8 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^0.30.0", - "@0xproject/utils": "^0.2.0", + "0x.js": "^0.30.2", + "@0xproject/utils": "^0.2.2", "body-parser": "^1.17.1", "ethereumjs-tx": "^1.3.3", "express": "^4.15.2", @@ -25,7 +25,7 @@ "web3-provider-engine": "^13.0.1" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/body-parser": "^1.16.1", "@types/express": "^4.0.35", "@types/lodash": "^4.14.86", @@ -36,7 +36,7 @@ "source-map-loader": "^0.1.6", "tslint": "5.8.0", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4", + "web3-typescript-typings": "^0.9.6", "webpack": "^3.1.0", "webpack-node-externals": "^1.6.0" } diff --git a/packages/kovan-faucets/scripts/postpublish.js b/packages/testnet-faucets/scripts/postpublish.js index 16d67e03f..16d67e03f 100644 --- a/packages/kovan-faucets/scripts/postpublish.js +++ b/packages/testnet-faucets/scripts/postpublish.js diff --git a/packages/kovan-faucets/src/ts/configs.ts b/packages/testnet-faucets/src/ts/configs.ts index 2e5a7f64d..038c8e22a 100644 --- a/packages/kovan-faucets/src/ts/configs.ts +++ b/packages/testnet-faucets/src/ts/configs.ts @@ -2,11 +2,6 @@ export const configs = { DISPENSER_ADDRESS: (process.env.DISPENSER_ADDRESS as string).toLowerCase(), DISPENSER_PRIVATE_KEY: process.env.DISPENSER_PRIVATE_KEY, ENVIRONMENT: process.env.FAUCET_ENVIRONMENT, + INFURA_API_KEY: process.env.INFURA_API_KEY, ROLLBAR_ACCESS_KEY: process.env.FAUCET_ROLLBAR_ACCESS_KEY, - RPC_URL: - process.env.FAUCET_ENVIRONMENT === 'development' - ? 'http://127.0.0.1:8545' - : `https://kovan.infura.io/${process.env.INFURA_API_KEY}`, - ZRX_TOKEN_ADDRESS: '0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570', - KOVAN_NETWORK_ID: 42, }; diff --git a/packages/kovan-faucets/src/ts/error_reporter.ts b/packages/testnet-faucets/src/ts/error_reporter.ts index 6865d3893..6865d3893 100644 --- a/packages/kovan-faucets/src/ts/error_reporter.ts +++ b/packages/testnet-faucets/src/ts/error_reporter.ts diff --git a/packages/kovan-faucets/src/ts/ether_request_queue.ts b/packages/testnet-faucets/src/ts/ether_request_queue.ts index 1c4b19ab9..1c4b19ab9 100644 --- a/packages/kovan-faucets/src/ts/ether_request_queue.ts +++ b/packages/testnet-faucets/src/ts/ether_request_queue.ts diff --git a/packages/kovan-faucets/src/ts/global.d.ts b/packages/testnet-faucets/src/ts/global.d.ts index 97cd35680..97cd35680 100644 --- a/packages/kovan-faucets/src/ts/global.d.ts +++ b/packages/testnet-faucets/src/ts/global.d.ts diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts new file mode 100644 index 000000000..bf5b3e81e --- /dev/null +++ b/packages/testnet-faucets/src/ts/handler.ts @@ -0,0 +1,114 @@ +import { addressUtils } from '@0xproject/utils'; +import * as express from 'express'; +import * as _ from 'lodash'; +import ProviderEngine = require('web3-provider-engine'); +import HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet'); +import NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker'); +import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); + +import { EtherRequestQueue } from './ether_request_queue'; +import { idManagement } from './id_management'; +import { RequestQueue } from './request_queue'; +import { rpcUrls } from './rpc_urls'; +import { utils } from './utils'; +import { ZRXRequestQueue } from './zrx_request_queue'; + +// HACK: web3 leaks XMLHttpRequest into the global scope and causes requests to hang +// because they are using the wrong XHR package. +// Filed issue: https://github.com/ethereum/web3.js/issues/844 +// tslint:disable-next-line:ordered-imports +import * as Web3 from 'web3'; + +interface RequestQueueByNetworkId { + [networkId: string]: RequestQueue; +} + +enum QueueType { + ETH = 'ETH', + ZRX = 'ZRX', +} + +const DEFAULT_NETWORK_ID = 42; // kovan + +export class Handler { + private _etherRequestQueueByNetworkId: RequestQueueByNetworkId = {}; + private _zrxRequestQueueByNetworkId: RequestQueueByNetworkId = {}; + constructor() { + _.forIn(rpcUrls, (rpcUrl: string, networkId: string) => { + const providerObj = this._createProviderEngine(rpcUrl); + const web3 = new Web3(providerObj); + this._etherRequestQueueByNetworkId[networkId] = new EtherRequestQueue(web3); + this._zrxRequestQueueByNetworkId[networkId] = new ZRXRequestQueue(web3, +networkId); + }); + } + public getQueueInfo(req: express.Request, res: express.Response) { + res.setHeader('Content-Type', 'application/json'); + const queueInfo = _.mapValues(rpcUrls, (rpcUrl: string, networkId: string) => { + utils.consoleLog(networkId); + const etherRequestQueue = this._etherRequestQueueByNetworkId[networkId]; + const zrxRequestQueue = this._zrxRequestQueueByNetworkId[networkId]; + return { + ether: { + full: etherRequestQueue.isFull(), + size: etherRequestQueue.size(), + }, + zrx: { + full: zrxRequestQueue.isFull(), + size: zrxRequestQueue.size(), + }, + }; + }); + const payload = JSON.stringify(queueInfo); + res.status(200).send(payload); + } + public dispenseEther(req: express.Request, res: express.Response) { + this._dispense(req, res, this._etherRequestQueueByNetworkId, QueueType.ETH); + } + public dispenseZRX(req: express.Request, res: express.Response) { + this._dispense(req, res, this._zrxRequestQueueByNetworkId, QueueType.ZRX); + } + private _dispense( + req: express.Request, + res: express.Response, + requestQueueByNetworkId: RequestQueueByNetworkId, + queueType: QueueType, + ) { + const recipientAddress = req.params.recipient; + if (_.isUndefined(recipientAddress) || !this._isValidEthereumAddress(recipientAddress)) { + res.status(400).send('INVALID_RECIPIENT_ADDRESS'); + return; + } + const networkId = _.get(req.query, 'networkId', DEFAULT_NETWORK_ID); + const requestQueue = _.get(requestQueueByNetworkId, networkId); + if (_.isUndefined(requestQueue)) { + res.status(400).send('INVALID_NETWORK_ID'); + return; + } + const lowerCaseRecipientAddress = recipientAddress.toLowerCase(); + const didAddToQueue = requestQueue.add(lowerCaseRecipientAddress); + if (!didAddToQueue) { + res.status(503).send('QUEUE_IS_FULL'); + return; + } + utils.consoleLog(`Added ${lowerCaseRecipientAddress} to queue: ${queueType} networkId: ${networkId}`); + res.status(200).end(); + } + // tslint:disable-next-line:prefer-function-over-method + private _createProviderEngine(rpcUrl: string) { + const engine = new ProviderEngine(); + engine.addProvider(new NonceSubprovider()); + engine.addProvider(new HookedWalletSubprovider(idManagement)); + engine.addProvider( + new RpcSubprovider({ + rpcUrl, + }), + ); + engine.start(); + return engine; + } + // tslint:disable-next-line:prefer-function-over-method + private _isValidEthereumAddress(address: string): boolean { + const lowercaseAddress = address.toLowerCase(); + return addressUtils.isAddress(lowercaseAddress); + } +} diff --git a/packages/kovan-faucets/src/ts/id_management.ts b/packages/testnet-faucets/src/ts/id_management.ts index 930821172..db9b610a3 100644 --- a/packages/kovan-faucets/src/ts/id_management.ts +++ b/packages/testnet-faucets/src/ts/id_management.ts @@ -1,13 +1,11 @@ import EthereumTx = require('ethereumjs-tx'); import { configs } from './configs'; -import { utils } from './utils'; type Callback = (err: Error | null, accounts: any) => void; export const idManagement = { getAccounts(callback: Callback) { - utils.consoleLog(`configs.DISPENSER_ADDRESS: ${configs.DISPENSER_ADDRESS}`); callback(null, [configs.DISPENSER_ADDRESS]); }, approveTransaction(txData: object, callback: Callback) { diff --git a/packages/kovan-faucets/src/ts/request_queue.ts b/packages/testnet-faucets/src/ts/request_queue.ts index 2b42ca4bf..20f2833a1 100644 --- a/packages/kovan-faucets/src/ts/request_queue.ts +++ b/packages/testnet-faucets/src/ts/request_queue.ts @@ -51,6 +51,6 @@ export class RequestQueue { } // tslint:disable-next-line:prefer-function-over-method protected async processNextRequestFireAndForgetAsync(recipientAddress: string) { - throw new Error('Expected processNextRequestFireAndForgetAsync to be implemented by a superclass'); + throw new Error('Expected processNextRequestFireAndForgetAsync to be implemented by a subclass'); } } diff --git a/packages/testnet-faucets/src/ts/rpc_urls.ts b/packages/testnet-faucets/src/ts/rpc_urls.ts new file mode 100644 index 000000000..25a3b938f --- /dev/null +++ b/packages/testnet-faucets/src/ts/rpc_urls.ts @@ -0,0 +1,13 @@ +import { configs } from './configs'; + +const productionRpcUrls = { + '2': `https://ropsten.infura.io/${configs.INFURA_API_KEY}`, + '3': `https://rinkeby.infura.io/${configs.INFURA_API_KEY}`, + '42': `https://kovan.infura.io/${configs.INFURA_API_KEY}`, +}; + +const developmentRpcUrls = { + '50': 'http://127.0.0.1:8545', +}; + +export const rpcUrls = configs.ENVIRONMENT === 'development' ? developmentRpcUrls : productionRpcUrls; diff --git a/packages/kovan-faucets/src/ts/server.ts b/packages/testnet-faucets/src/ts/server.ts index 23642787d..26edfff5a 100644 --- a/packages/kovan-faucets/src/ts/server.ts +++ b/packages/testnet-faucets/src/ts/server.ts @@ -19,6 +19,7 @@ const handler = new Handler(); app.get('/ping', (req: express.Request, res: express.Response) => { res.status(200).send('pong'); }); +app.get('/info', handler.getQueueInfo.bind(handler)); app.get('/ether/:recipient', handler.dispenseEther.bind(handler)); app.get('/zrx/:recipient', handler.dispenseZRX.bind(handler)); diff --git a/packages/kovan-faucets/src/ts/utils.ts b/packages/testnet-faucets/src/ts/utils.ts index 893f82ca3..893f82ca3 100644 --- a/packages/kovan-faucets/src/ts/utils.ts +++ b/packages/testnet-faucets/src/ts/utils.ts diff --git a/packages/kovan-faucets/src/ts/zrx_request_queue.ts b/packages/testnet-faucets/src/ts/zrx_request_queue.ts index bbc06f1de..3d73f9dd2 100644 --- a/packages/kovan-faucets/src/ts/zrx_request_queue.ts +++ b/packages/testnet-faucets/src/ts/zrx_request_queue.ts @@ -18,11 +18,11 @@ const QUEUE_INTERVAL_MS = 5000; export class ZRXRequestQueue extends RequestQueue { private _zeroEx: ZeroEx; - constructor(web3: Web3) { + constructor(web3: Web3, networkId: number) { super(web3); this.queueIntervalMs = QUEUE_INTERVAL_MS; const zeroExConfig = { - networkId: configs.KOVAN_NETWORK_ID, + networkId, }; this._zeroEx = new ZeroEx(web3.currentProvider, zeroExConfig); } @@ -30,13 +30,14 @@ export class ZRXRequestQueue extends RequestQueue { utils.consoleLog(`Processing ZRX ${recipientAddress}`); const baseUnitAmount = ZeroEx.toBaseUnitAmount(DISPENSE_AMOUNT_ZRX, 18); try { - await this._zeroEx.token.transferAsync( - configs.ZRX_TOKEN_ADDRESS, + const zrxTokenAddress = this._zeroEx.exchange.getZRXTokenAddress(); + const txHash = await this._zeroEx.token.transferAsync( + zrxTokenAddress, configs.DISPENSER_ADDRESS, recipientAddress, baseUnitAmount, ); - utils.consoleLog(`Sent ${DISPENSE_AMOUNT_ZRX} ZRX to ${recipientAddress}`); + utils.consoleLog(`Sent ${DISPENSE_AMOUNT_ZRX} ZRX to ${recipientAddress} tx: ${txHash}`); } catch (err) { utils.consoleLog(`Unexpected err: ${err} - ${JSON.stringify(err)}`); await errorReporter.reportAsync(err); diff --git a/packages/kovan-faucets/tsconfig.json b/packages/testnet-faucets/tsconfig.json index 7f0c084ff..7f0c084ff 100644 --- a/packages/kovan-faucets/tsconfig.json +++ b/packages/testnet-faucets/tsconfig.json diff --git a/packages/kovan-faucets/tslint.json b/packages/testnet-faucets/tslint.json index ffaefe83a..ffaefe83a 100644 --- a/packages/kovan-faucets/tslint.json +++ b/packages/testnet-faucets/tslint.json diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json index a53a8ab8a..fc015de26 100644 --- a/packages/tslint-config/package.json +++ b/packages/tslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/tslint-config", - "version": "0.4.2", + "version": "0.4.4", "description": "Lint rules related to 0xProject for TSLint", "main": "tslint.json", "scripts": { @@ -8,12 +8,22 @@ "clean": "shx rm -rf lib", "lint": "tslint --project . 'rules/**/*.ts'" }, - "files": ["tslint.js", "README.md", "LICENSE"], + "files": [ + "tslint.js", + "README.md", + "LICENSE" + ], "repository": { "type": "git", "url": "git://github.com/0xProject/0x.js.git" }, - "keywords": ["tslint", "config", "0xProject", "typescript", "ts"], + "keywords": [ + "tslint", + "config", + "0xProject", + "typescript", + "ts" + ], "author": { "name": "Fabio Berger", "email": "fabio@0xproject.com" diff --git a/packages/types/package.json b/packages/types/package.json index ef8c29c7c..42a2be4e0 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/types", - "version": "0.1.4", + "version": "0.1.6", "description": "0x types", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -19,13 +19,13 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/types/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "shx": "^0.2.2", "tslint": "5.8.0", "typescript": "~2.6.1" }, "dependencies": { - "@0xproject/utils": "^0.2.0", + "@0xproject/utils": "^0.2.2", "web3": "^0.20.0" } } diff --git a/packages/utils/package.json b/packages/utils/package.json index 7cc58c35b..47a297859 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/utils", - "version": "0.2.0", + "version": "0.2.2", "description": "0x TS utils", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -19,7 +19,7 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/utils/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", + "@0xproject/tslint-config": "^0.4.4", "@types/lodash": "^4.14.86", "npm-run-all": "^4.1.2", "shx": "^0.2.2", diff --git a/packages/web3-typescript-typings/CHANGELOG.md b/packages/web3-typescript-typings/CHANGELOG.md index 46f70d864..56bb4ed48 100644 --- a/packages/web3-typescript-typings/CHANGELOG.md +++ b/packages/web3-typescript-typings/CHANGELOG.md @@ -2,5 +2,6 @@ ## v0.9.3 - _January 11, 2018_ +* Fix `getTransactionReceipt` not returning null (#338) * Add type for getData on a contract * Fixed the `defaultAccount` not allowing for `undefined` value (#320) diff --git a/packages/web3-typescript-typings/index.d.ts b/packages/web3-typescript-typings/index.d.ts index ff379cb3d..cd34759ed 100644 --- a/packages/web3-typescript-typings/index.d.ts +++ b/packages/web3-typescript-typings/index.d.ts @@ -257,10 +257,10 @@ declare module 'web3' { sign(address: string, data: string): string; sign(address: string, data: string, callback: (err: Error, signature: string) => void): void; - getTransactionReceipt(txHash: string): Web3.TransactionReceipt; + getTransactionReceipt(txHash: string): Web3.TransactionReceipt | null; getTransactionReceipt( txHash: string, - callback: (err: Error, receipt: Web3.TransactionReceipt) => void, + callback: (err: Error, receipt: Web3.TransactionReceipt | null) => void, ): void; // TODO block param diff --git a/packages/web3-typescript-typings/package.json b/packages/web3-typescript-typings/package.json index 5bf357566..958a4a646 100644 --- a/packages/web3-typescript-typings/package.json +++ b/packages/web3-typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "web3-typescript-typings", - "version": "0.9.4", + "version": "0.9.6", "description": "Typescript type definitions for web3", "main": "index.d.ts", "types": "index.d.ts", @@ -12,7 +12,9 @@ "url": "git+https://github.com/0xProject/0x.js.git" }, "author": "Fabio Berger", - "contributors": ["Leonid Logvinov <logvinov.leon@gmail.com>"], + "contributors": [ + "Leonid Logvinov <logvinov.leon@gmail.com>" + ], "license": "Apache-2.0", "bugs": { "url": "https://github.com/0xProject/0x.js/issues" diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index f2802bfbf..6a65582f9 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/web3-wrapper", - "version": "0.1.5", + "version": "0.1.7", "description": "Wraps around web3 and gives a nicer interface", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -19,17 +19,17 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/web3-wrapper/README.md", "devDependencies": { - "@0xproject/tslint-config": "^0.4.2", - "@0xproject/types": "^0.1.4", + "@0xproject/tslint-config": "^0.4.4", + "@0xproject/types": "^0.1.6", "@types/lodash": "^4.14.86", "npm-run-all": "^4.1.2", "shx": "^0.2.2", "tslint": "5.8.0", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4" + "web3-typescript-typings": "^0.9.6" }, "dependencies": { - "@0xproject/utils": "^0.2.0", + "@0xproject/utils": "^0.2.2", "lodash": "^4.17.4", "web3": "^0.20.0" } diff --git a/packages/website/package.json b/packages/website/package.json index 7d0f775d4..678893f59 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/website", - "version": "0.0.7", + "version": "0.0.9", "private": true, "description": "Website and 0x portal dapp", "scripts": { @@ -8,12 +8,9 @@ "clean": "shx rm -f public/bundle*", "lint": "tslint --project . 'ts/**/*.ts' 'ts/**/*.tsx'", "dev": "webpack-dev-server --content-base public --https", - "update_contracts": - "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../website/contracts; done;", - "deploy_staging": - "npm run build; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", - "deploy_live": - "npm run build; aws s3 sync ./public/. s3://0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers" + "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../website/contracts; done;", + "deploy_staging": "npm run build; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", + "deploy_live": "npm run build; aws s3 sync ./public/. s3://0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers" }, "config": { "artifacts": "Mintable" @@ -21,9 +18,9 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^0.30.0", - "@0xproject/subproviders": "^0.3.1", - "@0xproject/utils": "^0.2.0", + "0x.js": "^0.30.2", + "@0xproject/subproviders": "^0.3.3", + "@0xproject/utils": "^0.2.2", "accounting": "^0.4.1", "basscss": "^8.0.3", "blockies": "^0.0.2", @@ -101,7 +98,7 @@ "style-loader": "0.13.x", "tslint": "5.8.0", "typescript": "~2.6.1", - "web3-typescript-typings": "^0.9.4", + "web3-typescript-typings": "^0.9.6", "webpack": "^3.1.0", "webpack-dev-middleware": "^1.10.0", "webpack-dev-server": "^2.5.0" @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@0xproject/utils@^0.1.0", "@0xproject/utils@^0.1.3": +"@0xproject/utils@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@0xproject/utils/-/utils-0.1.3.tgz#58a9c7e19ab7710e0af17a0c2f1c7fc1b3140e85" dependencies: |