aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/0x.ts4
-rw-r--r--src/schemas/zero_ex_config_schema.ts10
2 files changed, 14 insertions, 0 deletions
diff --git a/src/0x.ts b/src/0x.ts
index 70d0c7acf..ce2738a20 100644
--- a/src/0x.ts
+++ b/src/0x.ts
@@ -32,6 +32,7 @@ import {
TransactionReceiptWithDecodedLogs,
LogWithDecodedArgs,
} from './types';
+import {zeroExConfigSchema} from './schemas/zero_ex_config_schema';
// Customize our BigNumber instances
bigNumberConfigs.configure();
@@ -180,6 +181,9 @@ export class ZeroEx {
*/
constructor(provider: Web3Provider, config?: ZeroExConfig) {
assert.isWeb3Provider('provider', provider);
+ if (!_.isUndefined(config)) {
+ assert.doesConformToSchema('config', config, zeroExConfigSchema);
+ }
if (_.isUndefined((provider as any).sendAsync)) {
// Web3@1.0 provider doesn't support synchronous http requests,
// so it only has an async `send` method, instead of a `send` and `sendAsync` in web3@0.x.x`
diff --git a/src/schemas/zero_ex_config_schema.ts b/src/schemas/zero_ex_config_schema.ts
new file mode 100644
index 000000000..179e29c31
--- /dev/null
+++ b/src/schemas/zero_ex_config_schema.ts
@@ -0,0 +1,10 @@
+export const zeroExConfigSchema = {
+ id: '/ZeroExConfig',
+ properties: {
+ gasPrice: {$ref: '/Number'},
+ exchangeContractAddress: {$ref: '/Address'},
+ tokenRegistryContractAddress: {$ref: '/Address'},
+ etherTokenContractAddress: {$ref: '/Address'},
+ },
+ type: 'object',
+};