_mergeDefaults.js 836 B

123456789101112131415161718192021222324
  1. var baseMerge = require('./_baseMerge'),
  2. isObject = require('./isObject');
  3. /**
  4. * Used by `_.defaultsDeep` to customize its `_.merge` use.
  5. *
  6. * @private
  7. * @param {*} objValue The destination value.
  8. * @param {*} srcValue The source value.
  9. * @param {string} key The key of the property to merge.
  10. * @param {Object} object The parent object of `objValue`.
  11. * @param {Object} source The parent object of `srcValue`.
  12. * @param {Object} [stack] Tracks traversed source values and their merged
  13. * counterparts.
  14. * @returns {*} Returns the value to assign.
  15. */
  16. function mergeDefaults(objValue, srcValue, key, object, source, stack) {
  17. if (isObject(objValue) && isObject(srcValue)) {
  18. baseMerge(objValue, srcValue, undefined, mergeDefaults, stack.set(srcValue, objValue));
  19. }
  20. return objValue;
  21. }
  22. module.exports = mergeDefaults;