UNPKG

deepmerge-plus

Version:

A library for deep (recursive) merging of Javascript objects

89 lines (80 loc) 2.7 kB
"use strict"; var e = require("is-mergeable-object"); function cloneUnlessOtherwiseSpecified(e, r, t) { const n = (!r || !1 !== r.clone) && _isMergeableObject(e, r, t); let l = n ? deepmerge(function emptyTarget(e) { return Array.isArray(e) ? [] : {}; }(e), e, r) : e; return null != r && r.keyValueOrMode && !n && t && "key" in t && (t.destination && (l = t.destination[t.key] || l), t.target && (l = t.target[t.key] || l), t.source && (l = t.source[t.key] || l)), l; } function _isMergeableObject(t, n, l) { var i; let a = null == n || null === (i = n.isMergeableObject) || void 0 === i ? void 0 : i.call(n, t, e, n, l); return null == a && (a = "boolean" == typeof (null == t ? void 0 : t[r]) ? t[r] : e(t)), a; } function defaultArrayMerge(e, r, t) { return e.concat(r).map((function(e, r, n) { return cloneUnlessOtherwiseSpecified(e, t, { key: r }); })); } function deepmerge(e, r, t) { const n = Array.isArray(r); return n === Array.isArray(e) ? n ? ((t || { arrayMerge: defaultArrayMerge }).arrayMerge || defaultArrayMerge)(e, r, t) : function mergeObject(e, r, t) { let n = {}; return _isMergeableObject(e, t) && Object.keys(e).forEach((function(l) { n[l] = cloneUnlessOtherwiseSpecified(e[l], t, { key: l, source: r, target: e, destination: n }); })), Object.keys(r).forEach((function(l) { n[l] = _isMergeableObject(r[l], t, { key: l, source: r, target: e }) && e[l] ? deepmerge(e[l], r[l], t) : cloneUnlessOtherwiseSpecified(r[l], t, { key: l, source: r, target: e }); })), n; }(e, r, t) : cloneUnlessOtherwiseSpecified(r, t, { target: e, source: r }); } const r = Symbol.for("SYMBOL_IS_MERGEABLE"); function deepmergeAll(e, r) { if (!Array.isArray(e)) throw new Error("first argument should be an array"); return e.reduce((function(e, t) { return deepmerge(e, t, r); }), {}); } Object.defineProperty(deepmerge, "__esModule", { value: !0 }), Object.defineProperty(deepmerge, "deepmerge", { value: deepmerge }), Object.defineProperty(deepmerge, "default", { value: deepmerge }), Object.defineProperty(deepmerge, "isMergeable", { value: function isMergeable(r) { return e(r); } }), Object.defineProperty(deepmerge, "SYMBOL_IS_MERGEABLE", { value: r }), Object.defineProperty(deepmerge, "deepmergeAll", { value: deepmergeAll }), Object.defineProperty(deepmerge, "all", { value: deepmergeAll }), Object.defineProperty(deepmerge, "_isMergeableObject", { value: _isMergeableObject }), module.exports = deepmerge; //# sourceMappingURL=index.cjs.production.min.cjs.map