mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-09-14 10:52:34 +00:00
41 lines
905 B
JavaScript
41 lines
905 B
JavaScript
import Ajv from "ajv/dist/2020.js";
|
|
import errs from "../error.js";
|
|
|
|
const ajv = new Ajv({
|
|
verbose: true,
|
|
allErrors: true,
|
|
allowUnionTypes: true,
|
|
strict: false,
|
|
coerceTypes: true,
|
|
});
|
|
|
|
/**
|
|
* @param {Object} schema
|
|
* @param {Object} payload
|
|
* @returns {Promise}
|
|
*/
|
|
const apiValidator = async (schema, payload /*, description*/) => {
|
|
if (!schema) {
|
|
throw new errs.ValidationError("Schema is undefined");
|
|
}
|
|
|
|
// Can't use falsy check here as valid payload could be `0` or `false`
|
|
if (typeof payload === "undefined") {
|
|
throw new errs.ValidationError("Payload is undefined");
|
|
}
|
|
|
|
const validate = ajv.compile(schema);
|
|
const valid = validate(payload);
|
|
|
|
if (valid && !validate.errors) {
|
|
return payload;
|
|
}
|
|
|
|
const message = ajv.errorsText(validate.errors);
|
|
const err = new errs.ValidationError(message);
|
|
err.debug = [validate.errors, payload];
|
|
throw err;
|
|
};
|
|
|
|
export default apiValidator;
|