src/config/defaultsDeep.js
'use strict';
module.exports = function defaultsDeep(target, objects) {
target = target || {};
function copy(target, current) {
for (var key in current) {
if (current.hasOwnProperty(key)) {
var value = current[key]
if (key === '__proto__') {
continue;
}
var val = target[key];
// add the missing property, or allow a null property to be updated
if (val == null) {
target[key] = value;
} else if (typeof val === 'object' && val !== null && typeof value === 'object' && value !== null) {
defaultsDeep(val, value);
}
}
}
}
var len = arguments.length, i = 0;
while (i < len) {
var obj = arguments[i++];
if (obj) {
copy(target, obj);
}
}
return target;
};