aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'packages/website/ts/schemas')
-rw-r--r--packages/website/ts/schemas/order_schema.ts24
-rw-r--r--packages/website/ts/schemas/order_taker_schema.ts11
-rw-r--r--packages/website/ts/schemas/signature_data_schema.ts11
-rw-r--r--packages/website/ts/schemas/token_schema.ts11
-rw-r--r--packages/website/ts/schemas/validator.ts19
5 files changed, 76 insertions, 0 deletions
diff --git a/packages/website/ts/schemas/order_schema.ts b/packages/website/ts/schemas/order_schema.ts
new file mode 100644
index 000000000..61b93d273
--- /dev/null
+++ b/packages/website/ts/schemas/order_schema.ts
@@ -0,0 +1,24 @@
+export const orderSchema = {
+ id: '/Order',
+ properties: {
+ maker: {$ref: '/OrderTaker'},
+ taker: {$ref: '/OrderTaker'},
+ salt: {type: 'string'},
+ signature: {$ref: '/SignatureData'},
+ expiration: {type: 'string'},
+ feeRecipient: {type: 'string'},
+ exchangeContract: {type: 'string'},
+ networkId: {type: 'number'},
+ },
+ required: [
+ 'maker',
+ 'taker',
+ 'salt',
+ 'signature',
+ 'expiration',
+ 'feeRecipient',
+ 'exchangeContract',
+ 'networkId',
+ ],
+ type: 'object',
+};
diff --git a/packages/website/ts/schemas/order_taker_schema.ts b/packages/website/ts/schemas/order_taker_schema.ts
new file mode 100644
index 000000000..6b484a60d
--- /dev/null
+++ b/packages/website/ts/schemas/order_taker_schema.ts
@@ -0,0 +1,11 @@
+export const orderTakerSchema = {
+ id: '/OrderTaker',
+ properties: {
+ address: {type: 'string'},
+ token: {$ref: '/Token'},
+ amount: {type: 'string'},
+ feeAmount: {type: 'string'},
+ },
+ required: ['address', 'token', 'amount', 'feeAmount'],
+ type: 'object',
+};
diff --git a/packages/website/ts/schemas/signature_data_schema.ts b/packages/website/ts/schemas/signature_data_schema.ts
new file mode 100644
index 000000000..d208cc438
--- /dev/null
+++ b/packages/website/ts/schemas/signature_data_schema.ts
@@ -0,0 +1,11 @@
+export const signatureDataSchema = {
+ id: '/SignatureData',
+ properties: {
+ hash: {type: 'string'},
+ r: {type: 'string'},
+ s: {type: 'string'},
+ v: {type: 'number'},
+ },
+ required: ['hash', 'r', 's', 'v'],
+ type: 'object',
+};
diff --git a/packages/website/ts/schemas/token_schema.ts b/packages/website/ts/schemas/token_schema.ts
new file mode 100644
index 000000000..c15f57429
--- /dev/null
+++ b/packages/website/ts/schemas/token_schema.ts
@@ -0,0 +1,11 @@
+export const tokenSchema = {
+ id: '/Token',
+ properties: {
+ name: {type: 'string'},
+ symbol: {type: 'string'},
+ decimals: {type: 'number'},
+ address: {type: 'string'},
+ },
+ required: ['name', 'symbol', 'decimals', 'address'],
+ type: 'object',
+};
diff --git a/packages/website/ts/schemas/validator.ts b/packages/website/ts/schemas/validator.ts
new file mode 100644
index 000000000..bf6ba4044
--- /dev/null
+++ b/packages/website/ts/schemas/validator.ts
@@ -0,0 +1,19 @@
+import {Validator, Schema as JSONSchema} from 'jsonschema';
+import {signatureDataSchema} from 'ts/schemas/signature_data_schema';
+import {orderSchema} from 'ts/schemas/order_schema';
+import {tokenSchema} from 'ts/schemas/token_schema';
+import {orderTakerSchema} from 'ts/schemas/order_taker_schema';
+
+export class SchemaValidator {
+ private validator: Validator;
+ constructor() {
+ this.validator = new Validator();
+ this.validator.addSchema(signatureDataSchema as JSONSchema, signatureDataSchema.id);
+ this.validator.addSchema(tokenSchema as JSONSchema, tokenSchema.id);
+ this.validator.addSchema(orderTakerSchema as JSONSchema, orderTakerSchema.id);
+ this.validator.addSchema(orderSchema as JSONSchema, orderSchema.id);
+ }
+ public validate(instance: object, schema: Schema) {
+ return this.validator.validate(instance, schema);
+ }
+}