author inspired by [jhildenbiddle](https://stackoverflow.com/a/48218209).
  const deepMerge = ( target , source ) => { const isObject = ( obj ) => obj && typeof obj === 'object' ; if ( ! isObject ( target ) || ! isObject ( source ) ) { return source ; } Object . keys ( source ) . forEach ( key => { const targetValue = target [ key ] ; const sourceValue = source [ key ] ; if ( Array . isArray ( targetValue ) && Array . isArray ( sourceValue ) ) { target [ key ] = targetValue . concat ( sourceValue ) ; } else if ( isObject ( targetValue ) && isObject ( sourceValue ) ) { target [ key ] = deepMerge ( Object . assign ( { } , targetValue ) , sourceValue ) ; } else { target [ key ] = sourceValue ; } } ) ; return target ; } ; export default deepMerge ;