aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web3-wrapper
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web3-wrapper')
-rw-r--r--packages/web3-wrapper/CHANGELOG.md3
-rw-r--r--packages/web3-wrapper/README.md55
-rw-r--r--packages/web3-wrapper/package.json69
-rw-r--r--packages/web3-wrapper/scripts/postpublish.js14
-rw-r--r--packages/web3-wrapper/src/index.ts99
-rw-r--r--packages/web3-wrapper/tsconfig.json19
-rw-r--r--packages/web3-wrapper/tslint.json4
7 files changed, 157 insertions, 106 deletions
diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md
new file mode 100644
index 000000000..899482c4c
--- /dev/null
+++ b/packages/web3-wrapper/CHANGELOG.md
@@ -0,0 +1,3 @@
+# CHANGELOG
+
+## vx.x.x
diff --git a/packages/web3-wrapper/README.md b/packages/web3-wrapper/README.md
index 0df8c6333..5b22aefd4 100644
--- a/packages/web3-wrapper/README.md
+++ b/packages/web3-wrapper/README.md
@@ -1,10 +1,57 @@
-Web3 wrapper
-------
+## @0xproject/web3-wrapper
-Wrapped version of web3 with nicer interface to be used across 0x projects and packages
+Wrapped version of web3 with a nicer interface that is used across 0x projects and packages
-## Install
+## Installation
```bash
yarn add @0xproject/web3-wrapper
```
+
+## Usage
+
+```typescript
+import {Web3Wrapper} from '@0xproject/web3-wrapper';
+
+const web3 = ...;
+const web3Wrapper = new Web3Wrapper(web3.currentProvider);
+const availableAddresses = await web3Wrapper.getAvailableAddressesAsync();
+```
+
+## Contributing
+
+We strongly encourage 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.
+
+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
+
+```bash
+yarn build
+```
+
+### Lint
+
+```bash
+yarn lint
+```
+
+### Run Tests
+
+```bash
+yarn test
+```
diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json
index 4eea7ed31..a0e15b48d 100644
--- a/packages/web3-wrapper/package.json
+++ b/packages/web3-wrapper/package.json
@@ -1,37 +1,36 @@
{
- "name": "@0xproject/web3-wrapper",
- "version": "0.0.1",
- "description": "Wraps around web3 and gives a nicer interface",
- "main": "lib/index.js",
- "types": "lib/index.d.ts",
- "scripts": {
- "build": "tsc",
- "clean": "shx rm -rf lib",
- "lint": "tslint --project . 'src/**/*.ts'"
- },
- "license": "Apache-2.0",
- "repository": {
- "type": "git",
- "url": "https://github.com/0xProject/0x.js.git"
- },
- "bugs": {
- "url": "https://github.com/0xProject/0x.js/issues"
- },
- "homepage": "https://github.com/0xProject/0x.js/packages/web3-wrapper/README.md",
- "devDependencies": {
- "@0xproject/tslint-config": "^0.2.0",
- "@0xproject/types": "^0.0.1",
- "@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.7.2"
- },
- "dependencies": {
- "@0xproject/utils": "^0.0.1",
- "bignumber.js": "~4.1.0",
- "lodash": "^4.17.4",
- "web3": "^0.20.0"
- }
+ "name": "@0xproject/web3-wrapper",
+ "version": "0.1.6",
+ "description": "Wraps around web3 and gives a nicer interface",
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "scripts": {
+ "build": "tsc",
+ "clean": "shx rm -rf lib",
+ "lint": "tslint --project . 'src/**/*.ts'"
+ },
+ "license": "Apache-2.0",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/0xProject/0x.js.git"
+ },
+ "bugs": {
+ "url": "https://github.com/0xProject/0x.js/issues"
+ },
+ "homepage": "https://github.com/0xProject/0x.js/packages/web3-wrapper/README.md",
+ "devDependencies": {
+ "@0xproject/tslint-config": "^0.4.3",
+ "@0xproject/types": "^0.1.5",
+ "@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.5"
+ },
+ "dependencies": {
+ "@0xproject/utils": "^0.2.1",
+ "lodash": "^4.17.4",
+ "web3": "^0.20.0"
+ }
}
diff --git a/packages/web3-wrapper/scripts/postpublish.js b/packages/web3-wrapper/scripts/postpublish.js
new file mode 100644
index 000000000..7fa452b08
--- /dev/null
+++ b/packages/web3-wrapper/scripts/postpublish.js
@@ -0,0 +1,14 @@
+const postpublish_utils = require('../../../scripts/postpublish_utils');
+const packageJSON = require('../package.json');
+
+const subPackageName = packageJSON.name;
+
+postpublish_utils.getLatestTagAndVersionAsync(subPackageName)
+ .then(function(result) {
+ const releaseName = postpublish_utils.getReleaseName(subPackageName, result.version);
+ const assets = [];
+ return postpublish_utils.publishReleaseNotes(result.tag, releaseName, assets);
+ })
+ .catch (function(err) {
+ throw err;
+ });
diff --git a/packages/web3-wrapper/src/index.ts b/packages/web3-wrapper/src/index.ts
index 7df24e9a5..c4826f2be 100644
--- a/packages/web3-wrapper/src/index.ts
+++ b/packages/web3-wrapper/src/index.ts
@@ -1,24 +1,23 @@
-import {TransactionReceipt, TxData} from '@0xproject/types';
-import {promisify} from '@0xproject/utils';
-import BigNumber from 'bignumber.js';
+import { TransactionReceipt, TxData } from '@0xproject/types';
+import { BigNumber, promisify } from '@0xproject/utils';
import * as _ from 'lodash';
import * as Web3 from 'web3';
interface RawLogEntry {
- logIndex: string|null;
- transactionIndex: string|null;
+ logIndex: string | null;
+ transactionIndex: string | null;
transactionHash: string;
- blockHash: string|null;
- blockNumber: string|null;
+ blockHash: string | null;
+ blockNumber: string | null;
address: string;
data: string;
topics: string[];
}
export class Web3Wrapper {
- private web3: Web3;
- private defaults: Partial<TxData>;
- private jsonRpcRequestId: number;
+ private _web3: Web3;
+ private _defaults: Partial<TxData>;
+ private _jsonRpcRequestId: number;
constructor(provider: Web3.Provider, defaults?: Partial<TxData>) {
if (_.isUndefined((provider as any).sendAsync)) {
// Web3@1.0 provider doesn't support synchronous http requests,
@@ -26,87 +25,87 @@ export class Web3Wrapper {
// We re-assign the send method so that Web3@1.0 providers work with 0x.js
(provider as any).sendAsync = (provider as any).send;
}
- this.web3 = new Web3();
- this.web3.setProvider(provider);
- this.defaults = defaults || {};
- this.jsonRpcRequestId = 0;
+ this._web3 = new Web3();
+ this._web3.setProvider(provider);
+ this._defaults = defaults || {};
+ this._jsonRpcRequestId = 0;
}
public getContractDefaults(): Partial<TxData> {
- return this.defaults;
+ return this._defaults;
}
- public setProvider(provider: Web3.Provider, networkId: number) {
- this.web3.setProvider(provider);
+ public setProvider(provider: Web3.Provider) {
+ this._web3.setProvider(provider);
}
public isAddress(address: string): boolean {
- return this.web3.isAddress(address);
+ return this._web3.isAddress(address);
}
public async isSenderAddressAvailableAsync(senderAddress: string): Promise<boolean> {
const addresses = await this.getAvailableAddressesAsync();
return _.includes(addresses, senderAddress);
}
public async getNodeVersionAsync(): Promise<string> {
- const nodeVersion = await promisify<string>(this.web3.version.getNode)();
+ const nodeVersion = await promisify<string>(this._web3.version.getNode)();
return nodeVersion;
}
public async getNetworkIdAsync(): Promise<number> {
- const networkIdStr = await promisify<string>(this.web3.version.getNetwork)();
+ const networkIdStr = await promisify<string>(this._web3.version.getNetwork)();
const networkId = _.parseInt(networkIdStr);
return networkId;
}
public async getTransactionReceiptAsync(txHash: string): Promise<TransactionReceipt> {
- const transactionReceipt = await promisify<TransactionReceipt>(this.web3.eth.getTransactionReceipt)(txHash);
+ const transactionReceipt = await promisify<TransactionReceipt>(this._web3.eth.getTransactionReceipt)(txHash);
if (!_.isNull(transactionReceipt)) {
- transactionReceipt.status = this.normalizeTxReceiptStatus(transactionReceipt.status);
+ transactionReceipt.status = this._normalizeTxReceiptStatus(transactionReceipt.status);
}
return transactionReceipt;
}
public getCurrentProvider(): Web3.Provider {
- return this.web3.currentProvider;
+ return this._web3.currentProvider;
}
public toWei(ethAmount: BigNumber): BigNumber {
- const balanceWei = this.web3.toWei(ethAmount, 'ether');
+ const balanceWei = this._web3.toWei(ethAmount, 'ether');
return balanceWei;
}
public async getBalanceInWeiAsync(owner: string): Promise<BigNumber> {
- let balanceInWei = await promisify<BigNumber>(this.web3.eth.getBalance)(owner);
+ let balanceInWei = await promisify<BigNumber>(this._web3.eth.getBalance)(owner);
// Rewrap in a new BigNumber
balanceInWei = new BigNumber(balanceInWei);
return balanceInWei;
}
public async doesContractExistAtAddressAsync(address: string): Promise<boolean> {
- const code = await promisify<string>(this.web3.eth.getCode)(address);
+ const code = await promisify<string>(this._web3.eth.getCode)(address);
// Regex matches 0x0, 0x00, 0x in order to accommodate poorly implemented clients
const codeIsEmpty = /^0x0{0,40}$/i.test(code);
return !codeIsEmpty;
}
public async signTransactionAsync(address: string, message: string): Promise<string> {
- const signData = await promisify<string>(this.web3.eth.sign)(address, message);
+ const signData = await promisify<string>(this._web3.eth.sign)(address, message);
return signData;
}
public async getBlockNumberAsync(): Promise<number> {
- const blockNumber = await promisify<number>(this.web3.eth.getBlockNumber)();
+ const blockNumber = await promisify<number>(this._web3.eth.getBlockNumber)();
return blockNumber;
}
- public async getBlockAsync(blockParam: string|Web3.BlockParam): Promise<Web3.BlockWithoutTransactionData> {
- const block = await promisify<Web3.BlockWithoutTransactionData>(this.web3.eth.getBlock)(blockParam);
+ public async getBlockAsync(blockParam: string | Web3.BlockParam): Promise<Web3.BlockWithoutTransactionData> {
+ const block = await promisify<Web3.BlockWithoutTransactionData>(this._web3.eth.getBlock)(blockParam);
return block;
}
- public async getBlockTimestampAsync(blockParam: string|Web3.BlockParam): Promise<number> {
- const {timestamp} = await this.getBlockAsync(blockParam);
+ public async getBlockTimestampAsync(blockParam: string | Web3.BlockParam): Promise<number> {
+ const { timestamp } = await this.getBlockAsync(blockParam);
return timestamp;
}
public async getAvailableAddressesAsync(): Promise<string[]> {
- const addresses = await promisify<string[]>(this.web3.eth.getAccounts)();
+ const addresses = await promisify<string[]>(this._web3.eth.getAccounts)();
return addresses;
}
public async getLogsAsync(filter: Web3.FilterObject): Promise<Web3.LogEntry[]> {
let fromBlock = filter.fromBlock;
if (_.isNumber(fromBlock)) {
- fromBlock = this.web3.toHex(fromBlock);
+ fromBlock = this._web3.toHex(fromBlock);
}
let toBlock = filter.toBlock;
if (_.isNumber(toBlock)) {
- toBlock = this.web3.toHex(toBlock);
+ toBlock = this._web3.toHex(toBlock);
}
const serializedFilter = {
...filter,
@@ -115,16 +114,16 @@ export class Web3Wrapper {
};
const payload = {
jsonrpc: '2.0',
- id: this.jsonRpcRequestId++,
+ id: this._jsonRpcRequestId++,
method: 'eth_getLogs',
params: [serializedFilter],
};
- const rawLogs = await this.sendRawPayloadAsync<RawLogEntry[]>(payload);
- const formattedLogs = _.map(rawLogs, this.formatLog.bind(this));
+ const rawLogs = await this._sendRawPayloadAsync<RawLogEntry[]>(payload);
+ const formattedLogs = _.map(rawLogs, this._formatLog.bind(this));
return formattedLogs;
}
public getContractFromAbi(abi: Web3.ContractAbi): Web3.Contract<any> {
- const web3Contract = this.web3.eth.contract(abi);
+ const web3Contract = this._web3.eth.contract(abi);
return web3Contract;
}
public getContractInstance(abi: Web3.ContractAbi, address: string): Web3.ContractInstance {
@@ -132,43 +131,43 @@ export class Web3Wrapper {
return web3ContractInstance;
}
public async estimateGasAsync(data: string): Promise<number> {
- const gas = await promisify<number>(this.web3.eth.estimateGas)({data});
+ const gas = await promisify<number>(this._web3.eth.estimateGas)({ data });
return gas;
}
- private async sendRawPayloadAsync<A>(payload: Web3.JSONRPCRequestPayload): Promise<A> {
- const sendAsync = this.web3.currentProvider.sendAsync.bind(this.web3.currentProvider);
+ private async _sendRawPayloadAsync<A>(payload: Web3.JSONRPCRequestPayload): Promise<A> {
+ const sendAsync = this._web3.currentProvider.sendAsync.bind(this._web3.currentProvider);
const response = await promisify<Web3.JSONRPCResponsePayload>(sendAsync)(payload);
const result = response.result;
return result;
}
- private normalizeTxReceiptStatus(status: undefined|null|string|0|1): null|0|1 {
+ private _normalizeTxReceiptStatus(status: undefined | null | string | 0 | 1): null | 0 | 1 {
// Transaction status might have four values
// undefined - Testrpc and other old clients
// null - New clients on old transactions
// number - Parity
// hex - Geth
if (_.isString(status)) {
- return this.web3.toDecimal(status) as 0|1;
+ return this._web3.toDecimal(status) as 0 | 1;
} else if (_.isUndefined(status)) {
return null;
} else {
return status;
}
}
- private formatLog(rawLog: RawLogEntry): Web3.LogEntry {
+ private _formatLog(rawLog: RawLogEntry): Web3.LogEntry {
const formattedLog = {
...rawLog,
- logIndex: this.hexToDecimal(rawLog.logIndex),
- blockNumber: this.hexToDecimal(rawLog.blockNumber),
- transactionIndex: this.hexToDecimal(rawLog.transactionIndex),
+ logIndex: this._hexToDecimal(rawLog.logIndex),
+ blockNumber: this._hexToDecimal(rawLog.blockNumber),
+ transactionIndex: this._hexToDecimal(rawLog.transactionIndex),
};
return formattedLog;
}
- private hexToDecimal(hex: string|null): number|null {
+ private _hexToDecimal(hex: string | null): number | null {
if (_.isNull(hex)) {
return null;
}
- const decimal = this.web3.toDecimal(hex);
+ const decimal = this._web3.toDecimal(hex);
return decimal;
}
}
diff --git a/packages/web3-wrapper/tsconfig.json b/packages/web3-wrapper/tsconfig.json
index de186cfc4..3d967d05f 100644
--- a/packages/web3-wrapper/tsconfig.json
+++ b/packages/web3-wrapper/tsconfig.json
@@ -1,16 +1,7 @@
{
- "compilerOptions": {
- "module": "commonjs",
- "target": "es5",
- "lib": [ "es2017", "dom"],
- "outDir": "lib",
- "sourceMap": true,
- "declaration": true,
- "noImplicitAny": true,
- "strictNullChecks": true
- },
- "include": [
- "./src/**/*",
- "../../node_modules/web3-typescript-typings/index.d.ts"
- ]
+ "extends": "../../tsconfig",
+ "compilerOptions": {
+ "outDir": "lib"
+ },
+ "include": ["./src/**/*", "../../node_modules/web3-typescript-typings/index.d.ts"]
}
diff --git a/packages/web3-wrapper/tslint.json b/packages/web3-wrapper/tslint.json
index a07795151..ffaefe83a 100644
--- a/packages/web3-wrapper/tslint.json
+++ b/packages/web3-wrapper/tslint.json
@@ -1,5 +1,3 @@
{
- "extends": [
- "@0xproject/tslint-config"
- ]
+ "extends": ["@0xproject/tslint-config"]
}