UNPKG

@modern-js/libuild-utils

Version:

utils for libuild

29 lines (28 loc) 939 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepMerge = void 0; const assert_1 = require("./assert"); function deepMerge(lower, higher) { if (arguments.length !== 2 || !(0, assert_1.isObject)(lower) || !(0, assert_1.isObject)(higher)) { throw Error(`${lower} and ${higher} must be Object`); } const merged = { ...lower }; for (const key in higher) { const value = higher[key]; if (value == null) { continue; } const existing = merged[key]; if (Array.isArray(existing) && Array.isArray(value)) { merged[key] = [...existing, ...value]; } else if ((0, assert_1.isObject)(existing) && (0, assert_1.isObject)(value)) { merged[key] = deepMerge(existing, value); } else { merged[key] = value; } } return merged; } exports.deepMerge = deepMerge;