Files
nginx-proxy-manager/backend/lib/validator/index.js
T

46 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-10-09 18:05:15 +10:00
const _ = require('lodash');
2024-10-10 15:53:11 +10:00
const Ajv = require('ajv/dist/2020');
2024-10-09 18:05:15 +10:00
const error = require('../error');
const commonDefinitions = require('../../schema/common.json');
2020-02-19 15:55:06 +11:00
RegExp.prototype.toJSON = RegExp.prototype.toString;
2024-10-10 15:53:11 +10:00
const ajv = new Ajv({
verbose: true,
allErrors: true,
allowUnionTypes: true,
coerceTypes: true,
strict: false,
schemas: [commonDefinitions]
2020-02-19 15:55:06 +11:00
});
/**
*
* @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);
2024-10-09 18:05:15 +10:00
let valid = validate(payload);
2020-02-19 15:55:06 +11:00
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;