All files / validator/yupSource/util prependDeep.js

5% Statements 1/20
0% Branches 0/18
0% Functions 0/2
6.25% Lines 1/16

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      3x                                              
import { has } from '../../../utils'
import isSchema from './isSchema'
 
let isObject = obj => Object.prototype.toString.call(obj) === '[object Object]'
 
export default function prependDeep(target, source) {
  for (var key in source)
    if (has(source, key)) {
      var sourceVal = source[key],
        targetVal = target[key]
 
      if (targetVal === undefined) {
        target[key] = sourceVal
      } else if (targetVal === sourceVal) {
        continue
      } else if (isSchema(targetVal)) {
        if (isSchema(sourceVal)) target[key] = sourceVal.concat(targetVal)
      } else if (isObject(targetVal)) {
        if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal)
      } else if (Array.isArray(targetVal)) {
        if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal)
      }
    }
 
  return target
}