mondorepo
Version:
Management for collections of packages across teams
58 lines (47 loc) • 1.43 kB
JavaScript
const Util = {
clone (item) {
if (item == null) {
return item;
}
const type = Object.prototype.toString.call(item);
let clone = item;
let i, key;
if (type === '[object Date]') {
clone = new Date(item.getTime());
}
else if (type === '[object Array]') {
clone = [];
for (i = item.length; i--; ) {
clone[i] = Util.clone(item[i]);
}
}
else if (type === '[object Object]' && item.constructor === Object) {
clone = {};
for (key in item) {
clone[key] = Util.clone(item[key]);
}
}
return clone;
},
merge (destination, source) {
if (source) {
for (let key in source) {
let value = source[key];
if (value && value.constructor === Object) {
let sourceKey = destination[key];
if (sourceKey && sourceKey.constructor === Object) {
Util.merge(sourceKey, value);
}
else {
destination[key] = Util.clone(value);
}
}
else {
destination[key] = value;
}
}
}
return destination;
}
};
module.exports = Util;