Files
kuber/lib/merge.ts
T
2026-09-27 10:40:50 +00:00

33 lines
796 B
TypeScript

export function deepMerge(target: any, source: any): any {
if (
typeof target !== "object" ||
target === null ||
typeof source !== "object" ||
source === null
) {
return source;
}
const result = Array.isArray(target) ? [...target] : { ...target };
for (const key of Object.keys(source)) {
const targetValue = result[key];
const sourceValue = source[key];
if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {
result[key] = [...targetValue, ...sourceValue];
} else if (
targetValue &&
typeof targetValue === "object" &&
sourceValue &&
typeof sourceValue === "object"
) {
result[key] = deepMerge(targetValue, sourceValue);
} else {
result[key] = sourceValue;
}
}
return result;
}