UNPKG

apemanerror

Version:
90 lines (83 loc) 2.32 kB
/** * Convert errors from tv4 * @function fromTv4 * @see https://github.com/geraintluff/tv4 */ 'use strict' const tv4 = require('tv4') const ErrorCodes = require('./error_codes') const create = require('./create') /** @lends fromTv4 */ function fromTv4 (error, options) { options = options || {} if (!error) { return null } if (Array.isArray(error)) { return error.map((data) => fromTv4(data, options) ) } let code = fromTv4.parseCode(error.code) let pointer = error.dataPath let params = error.params if (params.key) { pointer += params.key } return create(code, pointer, { trigger: 'JSONSchema', context: params, namespace: options.namespace }) } Object.assign(fromTv4, { parseCode (code) { const a = ErrorCodes const t = tv4.errorCodes switch (code) { case t.INVALID_TYPE: return a.VALUE_TYPE_INVALID_ERROR case t.ENUM_MISMATCH: case t.ANY_OF_MISSING: case t.ONE_OF_MISSING: case t.ONE_OF_MULTIPLE: case t.NOT_PASSED: return a.VALUE_ERROR case t.NUMBER_MULTIPLE_OF: case t.NUMBER_NOT_A_NUMBER: return a.VALUE_NUMBER_ERROR case t.NUMBER_MINIMUM: case t.NUMBER_MINIMUM_EXCLUSIVE: return a.VALUE_NUMBER_TOO_SMALL_ERROR case t.NUMBER_MAXIMUM: case t.NUMBER_MAXIMUM_EXCLUSIVE: return a.VALUE_NUMBER_TOO_LARGE_ERROR case t.STRING_LENGTH_SHORT: return a.VALUE_STRING_TOO_SHORT_ERROR case t.STRING_LENGTH_LONG: return a.VALUE_STRING_TOO_LONG_ERROR case t.STRING_PATTERN: return a.VALUE_STRING_ERROR case t.OBJECT_REQUIRED: return a.VALUE_MISSING_ERROR case t.OBJECT_PROPERTIES_MINIMUM: case t.OBJECT_PROPERTIES_MAXIMUM: case t.OBJECT_ADDITIONAL_PROPERTIES: case t.OBJECT_DEPENDENCY_KEY: case t.ARRAY_LENGTH_SHORT: case t.ARRAY_LENGTH_LONG: case t.ARRAY_UNIQUE: case t.ARRAY_ADDITIONAL_ITEMS: case t.FORMAT_CUSTOM: case t.KEYWORD_CUSTOM: case t.CIRCULAR_REFERENCE: case t.UNKNOWN_PROPERTY: return a.SOMETHING_WRONG_ERROR default: console.warn(`[apemanerror] Unknown tv4 error code : ${code}`) return a.SOMETHING_WRONG_ERROR } } }) module.exports = fromTv4