concat-merge
Version:
Recursively merge objects
51 lines (48 loc) • 2.15 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __esm = (fn, res) => function() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: !0 });
}, __copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames(from))
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
// index.js
var concat_merge_exports = {};
__export(concat_merge_exports, {
default: () => concat_merge_default
});
var isObject, isPlainObject, concatMerge, concatMergeAll, concat_merge_default, init_concat_merge = __esm({
"index.js"() {
isObject = (v) => v !== null && typeof v == "object", isPlainObject = (v) => {
if (!isObject(v))
return !1;
if (!("constructor" in v))
return !0;
let proto = Object.getPrototypeOf(v);
return !proto || !Object.getPrototypeOf(proto);
}, concatMerge = (a, b) => {
a = isObject(a) ? a : {}, b = isObject(b) ? b : {};
let r = {}, keys = Object.keys(a).concat(Object.keys(b));
for (let key of keys) {
let va = a[key];
if (key in b) {
let vb = b[key];
Array.isArray(va) ? r[key] = Array.isArray(vb) ? va.concat(vb) : vb : isObject(va) ? r[key] = isObject(vb) ? isPlainObject(va) ? concatMerge(va, vb) : Object.assign(va, vb) : vb : r[key] = vb;
} else
r[key] = va;
}
return r;
}, concatMergeAll = (...args) => args.reduce((acc, next) => concatMerge(acc, next), {}), concat_merge_default = concatMergeAll;
}
});
// cjs.js
module.exports = (init_concat_merge(), __toCommonJS(concat_merge_exports)).default;