25 lines
610 B
JavaScript
25 lines
610 B
JavaScript
|
var utils = require('../utils');
|
||
|
|
||
|
/**
|
||
|
* Merge the object `dest` with the given args.
|
||
|
*
|
||
|
* @param {Object} dest
|
||
|
* @param {Object} ...
|
||
|
* @return {Object} dest
|
||
|
* @api public
|
||
|
*/
|
||
|
|
||
|
(module.exports = function merge(dest){
|
||
|
utils.assertPresent(dest, 'dest');
|
||
|
dest = utils.unwrap(dest).first;
|
||
|
utils.assertType(dest, 'object', 'dest');
|
||
|
|
||
|
var last = utils.unwrap(arguments[arguments.length - 1]).first
|
||
|
, deep = (true === last.val);
|
||
|
|
||
|
for (var i = 1, len = arguments.length - deep; i < len; ++i) {
|
||
|
utils.merge(dest.vals, utils.unwrap(arguments[i]).first.vals, deep);
|
||
|
}
|
||
|
return dest;
|
||
|
}).raw = true;
|