1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const _ = require('lodash');
- const error = require('../error');
- const commonDefinitions = require('../../schema/common.json');
- RegExp.prototype.toJSON = RegExp.prototype.toString;
- const ajv = require('ajv')({
- verbose: true,
- allErrors: true,
- format: 'full', // strict regexes for format checks
- coerceTypes: true,
- schemas: [commonDefinitions]
- });
- /**
- *
- * @param {Object} schema
- * @param {Object} payload
- * @returns {Promise}
- */
- function validator (schema, payload) {
- return new Promise(function (resolve, reject) {
- if (!payload) {
- reject(new error.InternalValidationError('Payload is falsy'));
- } else {
- try {
- let validate = ajv.compile(schema);
- let valid = validate(payload);
- if (valid && !validate.errors) {
- resolve(_.cloneDeep(payload));
- } else {
- let message = ajv.errorsText(validate.errors);
- reject(new error.InternalValidationError(message));
- }
- } catch (err) {
- reject(err);
- }
- }
- });
- }
- module.exports = validator;
|