client/src/utils.js
function deepExtend(target, source) {
  _.each(source, function(value, key) {
    if (_.has(target, key) && isObject(target[key]) && isObject(source[key])) {
      deepExtend(target[key], source[key]);
    } else {
      target[key] = source[key];
    }
  });
  return target;
}
function deepExtend(target, source) {
  _.each(source, function(value, key) {
    if (_.has(target, key) && isObject(target[key]) && isObject(source[key])) {
      deepExtend(target[key], source[key]);
    } else {
      target[key] = source[key];
    }
  });
  return target;
}
function deepExtend ( target , source ) { _ . each ( source , function ( value , key ) { if ( _ . has ( target , key ) && isObject ( target [ key ] ) && isObject ( source [ key ] ) ) { deepExtend ( target [ key ] , source [ key ] ) ; } else { target [ key ] = source [ key ] ; } } ) ; return target ; }
Performs a deep merge of two objects, source into target.

@param  {Object} target
@param  {Object} source
@return {Object}
Performs a deep merge of two objects source into target .