35 lines
		
	
	
		
			828 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			828 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var resolve = require('./resolve'); | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |   Validation: errorSubclass(ValidationError), | ||
|  |   MissingRef: errorSubclass(MissingRefError) | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | function ValidationError(errors) { | ||
|  |   this.message = 'validation failed'; | ||
|  |   this.errors = errors; | ||
|  |   this.ajv = this.validation = true; | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | MissingRefError.message = function (baseId, ref) { | ||
|  |   return 'can\'t resolve reference ' + ref + ' from id ' + baseId; | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | function MissingRefError(baseId, ref, message) { | ||
|  |   this.message = message || MissingRefError.message(baseId, ref); | ||
|  |   this.missingRef = resolve.url(baseId, ref); | ||
|  |   this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function errorSubclass(Subclass) { | ||
|  |   Subclass.prototype = Object.create(Error.prototype); | ||
|  |   Subclass.prototype.constructor = Subclass; | ||
|  |   return Subclass; | ||
|  | } |