UNPKG

@hemjs/gather

Version:

A lightweight library for collecting and merging configuration from multiple sources

28 lines (27 loc) 946 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = merge; const notions_1 = require("@hemjs/notions"); function merge(target, ...sources) { target = target || {}; for (let i = 0; i < sources.length; i++) { const source = sources[i] || {}; for (const key in source) { if (!(0, notions_1.isNil)(source[key])) { let obj = target[key]; const value = source[key]; if (Array.isArray(value)) { obj = (0, notions_1.isNil)(obj) ? [] : obj; target[key] = obj.concat(value); } else if ((0, notions_1.isObject)(obj) && (0, notions_1.isObject)(value)) { target[key] = { ...obj, ...value }; } else { target[key] = value; } } } } return target; }