From 49a06792ce6a317936921df0abb944a0302d311e Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 14:36:22 +0000 Subject: [PATCH 01/15] Readme for types --- packages/web3-utils/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web3-utils/README.md b/packages/web3-utils/README.md index 9afef5b9975..d182757659d 100644 --- a/packages/web3-utils/README.md +++ b/packages/web3-utils/README.md @@ -39,6 +39,10 @@ console.log(Utils); } ``` +## Types + +If you are using TypeScript all the types are defined in `src > types` - please use them :) + [docs]: http://web3js.readthedocs.io/en/1.0/ [repo]: https://github.com/ethereum/web3.js From ef58beae7e624871046026d348e82a0574c3d72e Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 14:36:32 +0000 Subject: [PATCH 02/15] define the types location --- packages/web3-utils/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json index d34991541f3..b71293ebb73 100644 --- a/packages/web3-utils/package.json +++ b/packages/web3-utils/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/ethereum/web3.js/tree/master/packages/web3-utils", "license": "LGPL-3.0", "main": "src/index.js", + "types": "src/types/utils.d.ts", "dependencies": { "bn.js": "4.11.8", "eth-lib": "0.2.8", From 82d2d0ca249b6395a69eb2d402b75a02c9d2a97b Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 14:36:48 +0000 Subject: [PATCH 03/15] fix returns value on `hexToNumber` --- packages/web3-utils/src/Utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-utils/src/Utils.js b/packages/web3-utils/src/Utils.js index 4f647717817..de2783b02ad 100644 --- a/packages/web3-utils/src/Utils.js +++ b/packages/web3-utils/src/Utils.js @@ -256,7 +256,7 @@ export const hexToUtf8 = (hex) => { * * @param {String|Number|BN} value * - * @returns {String} + * @returns {Number} */ export const hexToNumber = (value) => { if (!value) { From 75ccad982800474c3121742a02dcc9a747aff886 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 14:37:15 +0000 Subject: [PATCH 04/15] fix `randomHex` export intellisense issue --- packages/web3-utils/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-utils/src/index.js b/packages/web3-utils/src/index.js index 169b2e00359..baebdfc391e 100644 --- a/packages/web3-utils/src/index.js +++ b/packages/web3-utils/src/index.js @@ -25,7 +25,7 @@ import {isObject, isString, isArray, isFunction} from 'underscore'; import * as utils from './Utils'; export {soliditySha3} from './SoliditySha3'; -export randomHex from 'randomhex'; +export {randomHex} from 'randomhex'; export * from './Utils'; export const unitMap = { From d05b57a952cd32a17daf5f6158b6bd44df6780ff Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 14:37:46 +0000 Subject: [PATCH 05/15] write `utils.d.ts` types within `web3-utils` --- packages/web3-utils/src/types/utils.d.ts | 109 +++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 packages/web3-utils/src/types/utils.d.ts diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/src/types/utils.d.ts new file mode 100644 index 00000000000..b59bc1a41bb --- /dev/null +++ b/packages/web3-utils/src/types/utils.d.ts @@ -0,0 +1,109 @@ +import BigNumber from "bn.js"; +import us from "underscore"; + +type Unit = + | "noether" + | "wei" + | "kwei" + | "Kwei" + | "babbage" + | "femtoether" + | "mwei" + | "Mwei" + | "lovelace" + | "picoether" + | "gwei" + | "Gwei" + | "shannon" + | "nanoether" + | "nano" + | "szabo" + | "microether" + | "micro" + | "finney" + | "milliether" + | "milli" + | "ether" + | "kether" + | "grand" + | "mether" + | "gether" + | "tether"; + +type Mixed = + | string + | number + | BigNumber + | { + type: string; + value: string; + } + | { + t: string; + v: string; + }; + +type Hex = string | number; + +export default interface Utils { + BN: BigNumber; + isBN(any: any): boolean; + isBigNumber(any: any): boolean; + toBN(number: number | string | BigNumber): BigNumber; + toTwosComplement(number: number | string | BigNumber): string; + isAddress(address: string): boolean; + isHex(hex: Hex): boolean; + isHexStrict(hex: Hex): boolean; + _: us.UnderscoreStatic; + asciiToHex(str: string): string; + hexToAscii(val: string): string; + bytesToHex(bytes: number[]): string; + numberToHex(value: number | string | BigNumber): string; + checkAddressChecksum(address: string): boolean; + fromAscii(value: string): string; + fromDecimal(value: string | number | BigNumber): string; + fromUtf8(value: string): string; + fromWei(value: BigNumber, unit?: Unit): BigNumber; + fromWei(value: string | number, unit?: Unit): string; + hexToBytes(hex: string): number[]; + hexToNumber(value: string | number | BigNumber): number; + hexToNumberString(value: string | number | BigNumber): string; + hexToString(value: string): string; + hexToUtf8(hex: string): string; + keccak256(value: string): string; + leftPad(string: string, chars: number, sign: string): string; + padLeft(string: string, chars: number, sign: string): string; + rightPad(string: string, chars: number, sign: string): string; + padRight(string: string, chars: number, sign: string): string; + sha3( + val: string, + val2?: string, + val3?: string, + val4?: string, + val5?: string + ): string; + randomHex(bytes: number): string; + stringToHex(val: string): string; + toAscii(hex: string): string; + toChecksumAddress(address: string): string; + toDecimal(val: any): number; + toHex(value: any, returnType: boolean): string; + toUtf8(val: any): string; + toWei(val: string | number, unit?: Unit): string; + toWei(val: BigNumber, unit?: Unit): BigNumber; + unitMap: any; + utf8ToHex(str: string): string; + isBloom(bloom: string): boolean; + isTopic(topic: string): boolean; + _fireError(error: Object, emitter: Object, reject: Function, callback: Function): Object; + _jsonInterfaceMethodToString(json: Object): string; + _flattenTypes(includeTuple: boolean, puts: Object): string[]; + getUnitValue(unit: string): string; + soliditySha3(...val: Mixed[]): string; + +} + +export default interface BloomFilter { + testAddress(bloom: string, address: string): boolean; + testTopic(bloom: string, topic: string): boolean; +} \ No newline at end of file From 76234ecb91a387d9734e4494bcceaf589f6121ec Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Sun, 18 Nov 2018 17:07:32 +0000 Subject: [PATCH 06/15] Fix merge conflicts with package.json --- packages/web3-utils/package.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json index b71293ebb73..e5340500da2 100644 --- a/packages/web3-utils/package.json +++ b/packages/web3-utils/package.json @@ -5,7 +5,13 @@ "description": "Collection of utility functions used in web3.js.", "repository": "https://github.com/ethereum/web3.js/tree/master/packages/web3-utils", "license": "LGPL-3.0", - "main": "src/index.js", + "main": "dist/web3-utils.cjs.js", + "module": "dist/web3-utils.esm.js", + "browser": "dist/web3-utils.umd.js", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w" + }, "types": "src/types/utils.d.ts", "dependencies": { "bn.js": "4.11.8", From 1cdcdcafbdb14255a85af01cd69dbdd5a7f35bab Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 08:52:59 +0000 Subject: [PATCH 07/15] remove whitespace in `Utils` types --- packages/web3-utils/src/types/utils.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/src/types/utils.d.ts index b59bc1a41bb..9258a460f2f 100644 --- a/packages/web3-utils/src/types/utils.d.ts +++ b/packages/web3-utils/src/types/utils.d.ts @@ -100,7 +100,6 @@ export default interface Utils { _flattenTypes(includeTuple: boolean, puts: Object): string[]; getUnitValue(unit: string): string; soliditySha3(...val: Mixed[]): string; - } export default interface BloomFilter { From 2839db3428076218690e21664dea1b7a911208fd Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 08:54:09 +0000 Subject: [PATCH 08/15] add whitespace to the end of the `utils.d.ts` file --- packages/web3-utils/src/types/utils.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/src/types/utils.d.ts index 9258a460f2f..1967386ebe1 100644 --- a/packages/web3-utils/src/types/utils.d.ts +++ b/packages/web3-utils/src/types/utils.d.ts @@ -105,4 +105,4 @@ export default interface Utils { export default interface BloomFilter { testAddress(bloom: string, address: string): boolean; testTopic(bloom: string, topic: string): boolean; -} \ No newline at end of file +} From ff4bb4945e8bba90b10100478523a36eb51eebba Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 10:06:47 +0000 Subject: [PATCH 09/15] wrote `types` in a nicer way allowing people to import only what they need --- packages/web3-utils/src/types/utils.d.ts | 154 ++++++++++++++--------- 1 file changed, 92 insertions(+), 62 deletions(-) diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/src/types/utils.d.ts index 1967386ebe1..9f19043d1fb 100644 --- a/packages/web3-utils/src/types/utils.d.ts +++ b/packages/web3-utils/src/types/utils.d.ts @@ -1,7 +1,7 @@ import BigNumber from "bn.js"; import us from "underscore"; -type Unit = +export type Unit = | "noether" | "wei" | "kwei" @@ -30,7 +30,7 @@ type Unit = | "gether" | "tether"; -type Mixed = +export type Mixed = | string | number | BigNumber @@ -43,66 +43,96 @@ type Mixed = v: string; }; -type Hex = string | number; +export type Hex = string | number; -export default interface Utils { - BN: BigNumber; - isBN(any: any): boolean; - isBigNumber(any: any): boolean; - toBN(number: number | string | BigNumber): BigNumber; - toTwosComplement(number: number | string | BigNumber): string; - isAddress(address: string): boolean; - isHex(hex: Hex): boolean; - isHexStrict(hex: Hex): boolean; - _: us.UnderscoreStatic; - asciiToHex(str: string): string; - hexToAscii(val: string): string; - bytesToHex(bytes: number[]): string; - numberToHex(value: number | string | BigNumber): string; - checkAddressChecksum(address: string): boolean; - fromAscii(value: string): string; - fromDecimal(value: string | number | BigNumber): string; - fromUtf8(value: string): string; - fromWei(value: BigNumber, unit?: Unit): BigNumber; - fromWei(value: string | number, unit?: Unit): string; - hexToBytes(hex: string): number[]; - hexToNumber(value: string | number | BigNumber): number; - hexToNumberString(value: string | number | BigNumber): string; - hexToString(value: string): string; - hexToUtf8(hex: string): string; - keccak256(value: string): string; - leftPad(string: string, chars: number, sign: string): string; - padLeft(string: string, chars: number, sign: string): string; - rightPad(string: string, chars: number, sign: string): string; - padRight(string: string, chars: number, sign: string): string; - sha3( - val: string, - val2?: string, - val3?: string, - val4?: string, - val5?: string - ): string; - randomHex(bytes: number): string; - stringToHex(val: string): string; - toAscii(hex: string): string; - toChecksumAddress(address: string): string; - toDecimal(val: any): number; - toHex(value: any, returnType: boolean): string; - toUtf8(val: any): string; - toWei(val: string | number, unit?: Unit): string; - toWei(val: BigNumber, unit?: Unit): BigNumber; - unitMap: any; - utf8ToHex(str: string): string; - isBloom(bloom: string): boolean; - isTopic(topic: string): boolean; - _fireError(error: Object, emitter: Object, reject: Function, callback: Function): Object; - _jsonInterfaceMethodToString(json: Object): string; - _flattenTypes(includeTuple: boolean, puts: Object): string[]; - getUnitValue(unit: string): string; - soliditySha3(...val: Mixed[]): string; -} +export declare class BN extends BigNumber { + constructor( + number: number | string | number[] | Buffer | BN, + base?: number | 'hex', + endian?: Endianness + ) { + super(number, base, endian); + } + } + +export interface _ extends us.UnderscoreStatic { } + +// utils types +export declare function isBN(value: string | number): boolean; +export declare function isBigNumber(value: BigNumber): boolean; +export declare function toBN(number: number | string): BigNumber; +export declare function toTwosComplement(number: number | string | BigNumber): string; +export declare function isAddress(address: string): boolean; +export declare function isHex(hex: Hex): boolean; +export declare function isHexStrict(hex: Hex): boolean; +export declare function asciiToHex(string: string): string; +export declare function hexToAscii(string: string): string; +export declare function toAscii(string: string): string; +export declare function bytesToHex(bytes: number[]): string; +export declare function numberToHex(value: number | string | BigNumber): string; +export declare function checkAddressChecksum(address: string): boolean; +export declare function fromAscii(string: string): string; +export declare function fromDecimal(value: string | number | BigNumber): string; +export declare function fromUtf8(string: string): string; +export declare function fromWei(value: BigNumber, unit?: Unit): BigNumber | string; +export declare function hexToBytes(hex: Hex): number[]; +export declare function hexToNumber(hex: Hex): number; +export declare function hexToNumberString(hex: Hex): string; +export declare function hexToString(hex: Hex): string; +export declare function hexToUtf8(string: string): string; +export declare function keccak256(string: string): string; +export declare function padLeft(string: string, characterAmount: number, sign?: string): string; +export declare function leftPad(string: string, characterAmount: number, sign?: string): string; +export declare function rightPad(string: string, characterAmount: number, sign?: string): string; +export declare function padRight(string: string, characterAmount: number, sign?: string): string; +export declare function sha3(value: Mixed): string; +export declare function randomHex(bytesSize: number): string; +export declare function utf8ToHex(string: string): string; +export declare function stringToHex(string: string): string; +export declare function toChecksumAddress(address: string): string; +export declare function toDecimal(hex: Hex): number; +export declare function toHex(value: Mixed): string; +export declare function toUtf8(string: string): string; +export declare function toWei(value: number | string | BigNumber, unit?: Unit): BigNumber | string; +export declare function isBloom(bloom: string): boolean; +export declare function isTopic(topic: string): boolean; +export declare function _fireError(error: Object, emitter: Object, reject: Function, callback: Function): Object; +export declare function _jsonInterfaceMethodToString(json: Object): string; +export declare function _flattenTypes(includeTuple: boolean, puts: Object): string[]; +export declare function soliditySha3(...val: Mixed[]): string; +export declare function getUnitValue(unit: string): string; +export declare function unitMap(): IUnits; + +// bloom types +export declare function testAddress(bloom: string, address: string): boolean; +export declare function testTopic(bloom: string, topic: string): boolean; -export default interface BloomFilter { - testAddress(bloom: string, address: string): boolean; - testTopic(bloom: string, topic: string): boolean; +export interface IUnits { + noether: string; + wei: string; + kwei: string; + Kwei: string; + babbage: string; + femtoether: string; + mwei: string; + Mwei: string; + lovelace: string; + picoether: string; + gwei: string; + Gwei: string; + shannon: string; + nanoether: string; + nano: string; + szabo: string; + microether: string; + micro: string; + finney: string; + milliether: string; + milli: string; + ether: string; + kether: string; + grand: string; + mether: string; + gether: string; + tether: string; } From 9d2c46b1cbdb55f40f4f3efe36f8b2dd80873ad0 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 10:11:15 +0000 Subject: [PATCH 10/15] fix to `Endianness` type + constructor --- packages/web3-utils/src/types/utils.d.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/src/types/utils.d.ts index 9f19043d1fb..5ac5154530e 100644 --- a/packages/web3-utils/src/types/utils.d.ts +++ b/packages/web3-utils/src/types/utils.d.ts @@ -49,10 +49,9 @@ export declare class BN extends BigNumber { constructor( number: number | string | number[] | Buffer | BN, base?: number | 'hex', - endian?: Endianness - ) { - super(number, base, endian); - } + endian?: 'le' | 'be' + ) + super(number, base, endian); } export interface _ extends us.UnderscoreStatic { } From 3dbbec25a6e0a19f8b3e195580aa00d750dd3865 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 18:05:45 +0000 Subject: [PATCH 11/15] Move types in default index.d.ts as TS like you do to it that way --- packages/web3-utils/{src/types/utils.d.ts => index.d.ts} | 0 packages/web3-utils/package.json | 1 - 2 files changed, 1 deletion(-) rename packages/web3-utils/{src/types/utils.d.ts => index.d.ts} (100%) diff --git a/packages/web3-utils/src/types/utils.d.ts b/packages/web3-utils/index.d.ts similarity index 100% rename from packages/web3-utils/src/types/utils.d.ts rename to packages/web3-utils/index.d.ts diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json index e5340500da2..2622ddda4a6 100644 --- a/packages/web3-utils/package.json +++ b/packages/web3-utils/package.json @@ -12,7 +12,6 @@ "build": "rollup -c", "dev": "rollup -c -w" }, - "types": "src/types/utils.d.ts", "dependencies": { "bn.js": "4.11.8", "eth-lib": "0.2.8", From 0dd45c6c3e37891eba4045a69f46d9375aab3046 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Fri, 23 Nov 2018 22:44:37 +0000 Subject: [PATCH 12/15] Update README.md --- packages/web3-utils/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-utils/README.md b/packages/web3-utils/README.md index d182757659d..7fa3596c8cc 100644 --- a/packages/web3-utils/README.md +++ b/packages/web3-utils/README.md @@ -41,7 +41,7 @@ console.log(Utils); ## Types -If you are using TypeScript all the types are defined in `src > types` - please use them :) +If you are using TypeScript all the types are defined in the `index.d.ts` - please use them :) [docs]: http://web3js.readthedocs.io/en/1.0/ From 7ebe543999f2e0d33808fa6df1396d54186d0065 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Tue, 27 Nov 2018 21:08:30 +0000 Subject: [PATCH 13/15] package-lock.json --- package-lock.json | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23a2abd2797..a4daafdd597 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4143,12 +4143,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4163,17 +4165,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4290,7 +4295,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4302,6 +4308,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4316,6 +4323,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4323,12 +4331,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4347,6 +4357,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4427,7 +4438,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4439,6 +4451,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4560,6 +4573,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", From b13780e7eb8f3081227abd3ca1dbaf174a30f1dd Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Tue, 27 Nov 2018 21:08:36 +0000 Subject: [PATCH 14/15] updated readme --- packages/web3-utils/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-utils/README.md b/packages/web3-utils/README.md index 7fa3596c8cc..8faea3d06a1 100644 --- a/packages/web3-utils/README.md +++ b/packages/web3-utils/README.md @@ -41,7 +41,7 @@ console.log(Utils); ## Types -If you are using TypeScript all the types are defined in the `index.d.ts` - please use them :) +If you are using TypeScript all the types are defined in the `index.d.ts` file [docs]: http://web3js.readthedocs.io/en/1.0/ From b91eb95747fd96ea727f89be50a22292d9b26a72 Mon Sep 17 00:00:00 2001 From: Josh Stevens Date: Tue, 27 Nov 2018 21:08:47 +0000 Subject: [PATCH 15/15] removed `underscore` as not needed anymore --- packages/web3-utils/index.d.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/web3-utils/index.d.ts b/packages/web3-utils/index.d.ts index 5ac5154530e..f50df22e6cb 100644 --- a/packages/web3-utils/index.d.ts +++ b/packages/web3-utils/index.d.ts @@ -1,5 +1,4 @@ import BigNumber from "bn.js"; -import us from "underscore"; export type Unit = | "noether" @@ -54,8 +53,6 @@ export declare class BN extends BigNumber { super(number, base, endian); } -export interface _ extends us.UnderscoreStatic { } - // utils types export declare function isBN(value: string | number): boolean; export declare function isBigNumber(value: BigNumber): boolean;