UNPKG

obey

Version:

Data modelling and validation library

42 lines (36 loc) 1.29 kB
/* * Copyright (c) 2015 TechnologyAdvice */ const util = require('util') /** * Compiles array items into string error messages * @param {Array<{type: string, sub: string|number, key: string, value: *, message: string}>} msgObjs Original array * of error message objects * @returns {Array<string>} */ const getMessages = (msgObjs) => { const messages = [] msgObjs.forEach(obj => { messages.push((obj.key ? `${obj.key} (${obj.value}):` : `${obj.value}:`) + ` ${obj.message}`) }) return messages } /** * Creates ValidationError object for throwing * @param {Array<{type: string, sub: string|number, key: string, value: *, message: string}>} message Raw array of * error objects */ function ValidationError(message) { Object.defineProperty(this, 'name', { value: 'ValidationError' }) Object.defineProperty(this, 'message', { value: getMessages(message).join('\n') }) Object.defineProperty(this, 'collection', { value: message }) // Fixes captureStackTrace missing on Safari if (typeof Error.captureStackTrace === 'function') { Error.captureStackTrace(this, ValidationError) } else { this.stack = new Error().stack } } // Creates instance of ValidationError as Error object util.inherits(ValidationError, Error) module.exports = ValidationError