| '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; |
| } |