All files / validator/yupSource ValidationError.js

89.66% Statements 26/29
69.57% Branches 16/23
80% Functions 4/5
92% Lines 23/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46    3x     55x 55x 55x 55x 55x 55x   55x 55x 55x   55x       55x         55x     3x 3x   3x 334x     3x 55x 55x   55x 4x 51x        
import printValue from './util/printValue'
 
let strReg = /\$\{\s*(\w+)\s*\}/g
 
export default function ValidationError(errors, value, field, type) {
  this.name = 'ValidationError'
  this.value = value
  this.path = field
  this.type = type
  this.errors = []
  this.inner = []
 
  if (errors)
    [].concat(errors).forEach(err => {
      this.errors = this.errors.concat(err.errors || err)
 
      Iif (err.inner)
        this.inner = this.inner.concat(err.inner.length ? err.inner : err)
    })
 
  this.message =
    this.errors.length > 1
      ? `${this.errors.length} errors occurred`
      : this.errors[0]
 
  if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError)
}
 
ValidationError.prototype = Object.create(Error.prototype)
ValidationError.prototype.constructor = ValidationError
 
ValidationError.isError = function (err) {
  return err && err.name === 'ValidationError'
}
 
ValidationError.formatError = function (message, params) {
  const path = params.label || params.path || 'this'
  if (path !== params.path) params = { ...params, path }
 
  if (typeof message === 'string')
    return message.replace(strReg, (_, key) => printValue(params[key]))
  if (typeof message === 'function') return message(params)
 
  return message
}