mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 01:15:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 |