| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import Ajv from 'ajv/dist/2020.js';
- import _ from "lodash";
- import commonDefinitions from "../../schema/common.json" with { type: "json" };
- import errs from "../error.js";
- 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}
- */
- const validator = (schema, payload) => {
- return new Promise((resolve, reject) => {
- if (!payload) {
- reject(new errs.InternalValidationError("Payload is falsy"));
- } else {
- try {
- const validate = ajv.compile(schema);
- const valid = validate(payload);
- if (valid && !validate.errors) {
- resolve(_.cloneDeep(payload));
- } else {
- const message = ajv.errorsText(validate.errors);
- reject(new errs.InternalValidationError(message));
- }
- } catch (err) {
- reject(err);
- }
- }
- });
- };
- export default validator;
|