| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | const _                 = require('lodash');const Ajv               = require('ajv/dist/2020');const error             = require('../error');const commonDefinitions = require('../../schema/common.json');RegExp.prototype.toJSON = RegExp.prototype.toString;const ajv = new Ajv({	verbose:         true,	allErrors:       true,	allowUnionTypes: true,	coerceTypes:     true,	strict:          false,	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;
 |