You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							28 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							28 lines
						
					
					
						
							1.0 KiB
						
					
					
				var baseMerge = require('./_baseMerge'), | 
						|
    isObject = require('./isObject'); | 
						|
 | 
						|
/** | 
						|
 * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source | 
						|
 * objects into destination objects that are passed thru. | 
						|
 * | 
						|
 * @private | 
						|
 * @param {*} objValue The destination value. | 
						|
 * @param {*} srcValue The source value. | 
						|
 * @param {string} key The key of the property to merge. | 
						|
 * @param {Object} object The parent object of `objValue`. | 
						|
 * @param {Object} source The parent object of `srcValue`. | 
						|
 * @param {Object} [stack] Tracks traversed source values and their merged | 
						|
 *  counterparts. | 
						|
 * @returns {*} Returns the value to assign. | 
						|
 */ | 
						|
function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { | 
						|
  if (isObject(objValue) && isObject(srcValue)) { | 
						|
    // Recursively merge objects and arrays (susceptible to call stack limits). | 
						|
    stack.set(srcValue, objValue); | 
						|
    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); | 
						|
    stack['delete'](srcValue); | 
						|
  } | 
						|
  return objValue; | 
						|
} | 
						|
 | 
						|
module.exports = customDefaultsMerge;
 | 
						|
 |