You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 04:11:42 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 |