Add assertions library and add them for all function args
This commit is contained in:
parent
140a160ba0
commit
755c980a56
@ -31,6 +31,7 @@
|
|||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/bignumber.js": "^4.0.2",
|
||||||
"@types/chai": "^3.5.2",
|
"@types/chai": "^3.5.2",
|
||||||
"@types/mocha": "^2.2.41",
|
"@types/mocha": "^2.2.41",
|
||||||
"@types/node": "^7.0.22",
|
"@types/node": "^7.0.22",
|
||||||
@ -46,9 +47,12 @@
|
|||||||
"tslint-config-0xproject": "^0.0.2",
|
"tslint-config-0xproject": "^0.0.2",
|
||||||
"typedoc": "^0.7.1",
|
"typedoc": "^0.7.1",
|
||||||
"typescript": "^2.3.3",
|
"typescript": "^2.3.3",
|
||||||
|
"web3-typescript-typings": "0.0.3",
|
||||||
"webpack": "^2.6.0"
|
"webpack": "^2.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ethereumjs-util": "^5.1.1"
|
"bignumber.js": "^4.0.2",
|
||||||
|
"ethereumjs-util": "^5.1.1",
|
||||||
|
"web3": "^0.19.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
import * as BigNumber from 'bignumber.js';
|
||||||
import * as ethUtil from 'ethereumjs-util';
|
import * as ethUtil from 'ethereumjs-util';
|
||||||
|
import {assert} from './utils/assert';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Elliptic Curve signature
|
* Elliptic Curve signature
|
||||||
@ -15,6 +17,10 @@ export class ZeroEx {
|
|||||||
* by signing `data` with the private key corresponding to the `signer` address.
|
* by signing `data` with the private key corresponding to the `signer` address.
|
||||||
*/
|
*/
|
||||||
public static isValidSignature(data: string, signature: ECSignature, signer: ETHAddressHex): boolean {
|
public static isValidSignature(data: string, signature: ECSignature, signer: ETHAddressHex): boolean {
|
||||||
|
assert.isString('data', data);
|
||||||
|
assert.isObject('signature', signature);
|
||||||
|
assert.isETHAddressHex('signer', signer);
|
||||||
|
|
||||||
const dataBuff = ethUtil.toBuffer(data);
|
const dataBuff = ethUtil.toBuffer(data);
|
||||||
const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff);
|
const msgHashBuff = ethUtil.hashPersonalMessage(dataBuff);
|
||||||
try {
|
try {
|
||||||
|
31
src/ts/utils/assert.ts
Normal file
31
src/ts/utils/assert.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import * as _ from 'lodash';
|
||||||
|
import * as BigNumber from 'bignumber.js';
|
||||||
|
import Web3 = require('web3');
|
||||||
|
|
||||||
|
export const assert = {
|
||||||
|
isBigNumber(variableName: string, value: BigNumber.BigNumber) {
|
||||||
|
const isBigNumber = _.isObject(value) && value.isBigNumber;
|
||||||
|
this.assert(isBigNumber, this.typeAssertionMessage(variableName, 'BigNumber', value));
|
||||||
|
},
|
||||||
|
isString(variableName: string, value: string) {
|
||||||
|
this.assert(_.isString(value), this.typeAssertionMessage(variableName, 'string', value));
|
||||||
|
},
|
||||||
|
isETHAddressHex(variableName: string, value: ETHAddressHex) {
|
||||||
|
const web3 = new Web3();
|
||||||
|
this.assert(web3.isAddress(value), this.typeAssertionMessage(variableName, 'ETHAddressHex', value));
|
||||||
|
},
|
||||||
|
isObject(variableName: string, value: object) {
|
||||||
|
this.assert(_.isObject(value), this.typeAssertionMessage(variableName, 'object', value));
|
||||||
|
},
|
||||||
|
isNumber(variableName: string, value: number) {
|
||||||
|
this.assert(_.isFinite(value), this.typeAssertionMessage(variableName, 'number', value));
|
||||||
|
},
|
||||||
|
assert(condition: boolean, message: string) {
|
||||||
|
if (!condition) {
|
||||||
|
throw new Error(message);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
typeAssertionMessage(variableName: string, type: string, value: any) {
|
||||||
|
return `Expected ${variableName} to be of type ${type}, encountered: ${value}`;
|
||||||
|
},
|
||||||
|
};
|
@ -11,6 +11,7 @@
|
|||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"./src/**/*",
|
"./src/**/*",
|
||||||
"./test/**/*"
|
"./test/**/*",
|
||||||
|
"./node_modules/web3-typescript-typings/index.d.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user