deepCloneAndMergeNestedData

JavaScript
// Deep-copies nested values and merges object or Map overrides without mutation.
const isPlainObject = (value) =>
  Object.prototype.toString.call(value) === '[object Object]';
export function deepClone(value, seen = new WeakMap()) {
  if (value === null || typeof value !== 'object') return value;
  if (seen.has(value)) return seen.get(value);
  if (value instanceof Map) {
    const copy = new Map();
    seen.set(value, copy);
    for (const [key, item] of value) copy.set(deepClone(key, seen), deepClone(item, seen));
    return copy;
  }
  if (value instanceof Set) {
    const copy = new Set();
    seen.set(value, copy);
    for (const item of value) copy.add(deepClone(item, seen));
    return copy;
  }
  const copy = Array.isArray(value) ? [] : {};
  seen.set(value, copy);
  for (const key of Object.keys(value)) copy[key] = deepClone(value[key], seen);
  return copy;
}
export function deepMerge(base, patch) {
  if (Array.isArray(base) || Array.isArray(patch)) return deepClone(patch);
  const target = deepClone(base);
  if (target instanceof Map && patch instanceof Map) {
    for (const [key, value] of patch) target.set(key, deepMerge(target.get(key), value));
    return target;
  }
  if (!isPlainObject(target) || !isPlainObject(patch)) return deepClone(patch);
  for (const [key, value] of Object.entries(patch)) {
    target[key] = isPlainObject(value) && isPlainObject(target[key])
      ? deepMerge(target[key], value)
      : deepClone(value);
  }
  return target;
}