assign.js
1001 Bytes
'use strict';
module.exports = assign;
/**
* Copies properties from source objects to target objects
*/
function assign( /* target, ... sources */ ) {
var args = Array.prototype.slice.call(arguments);
var target = args.shift() || {};
args.forEach(function (source) {
Object.keys(source || {}).forEach(function (key) {
if (['tls', 'auth'].indexOf(key) >= 0 && source[key] && typeof source[key] === 'object') {
// tls and auth are special keys that need to be enumerated separately
// other objects are passed as is
if (!target[key]) {
// esnure that target has this key
target[key] = {};
}
Object.keys(source[key]).forEach(function (subKey) {
target[key][subKey] = source[key][subKey];
});
} else {
target[key] = source[key];
}
});
});
return target;
}