A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
441 B
21 lines
441 B
5 years ago
|
import Ajv from 'ajv';
|
||
|
|
||
|
export default class Validator<T> {
|
||
|
constructor(
|
||
|
private schema: object | boolean,
|
||
|
) {
|
||
|
}
|
||
|
|
||
|
validate(data: any): T {
|
||
|
let ajv = new Ajv();
|
||
|
let valid = ajv.validate(this.schema, data);
|
||
|
if (!valid) {
|
||
|
let message = ajv.errors!!
|
||
|
.map(err => `'${err.dataPath}' of ${err.keyword} ${err.message}`)
|
||
|
.join('; ');
|
||
|
throw new TypeError(message);
|
||
|
}
|
||
|
return data as T;
|
||
|
}
|
||
|
}
|