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.
20 lines
441 B
20 lines
441 B
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; |
|
} |
|
}
|
|
|