sensai
Version:
Because even AI needs a master
41 lines (40 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "merge", {
enumerable: true,
get: function() {
return merge;
}
});
const merge = (before, toMerge)=>{
const result = {
...before
};
for(const key in toMerge){
const toMergeValue = toMerge[key];
if (!(key in result)) {
result[key] = toMergeValue;
continue;
}
const beforeValue = result[key];
// Handle arrays by merging unique values
if (Array.isArray(beforeValue) && Array.isArray(toMergeValue)) {
const uniqueValues = new Set([
...beforeValue,
...toMergeValue
]);
result[key] = Array.from(uniqueValues);
continue;
}
// Handle objects by recursively merging
if (typeof beforeValue === "object" && beforeValue !== null && typeof toMergeValue === "object" && toMergeValue !== null && !Array.isArray(beforeValue) && !Array.isArray(toMergeValue)) {
result[key] = merge(beforeValue, toMergeValue);
continue;
}
// For primitives, the toMerge value overwrites
result[key] = toMergeValue;
}
return result;
};