@henry781/deep-merge
Advanced tools
Comparing version 0.2.2 to 0.2.3
@@ -16,3 +16,2 @@ export interface MergeOptions { | ||
private static objectSize; | ||
private static notNullNotUndefined; | ||
private static mergeDebugIteration; | ||
@@ -19,0 +18,0 @@ private static getInitialValueForUndefined; |
@@ -16,5 +16,2 @@ "use strict"; | ||
}; | ||
Merge.notNullNotUndefined = function (obj) { | ||
return obj !== null && obj !== undefined; | ||
}; | ||
Merge.mergeDebugIteration = function (iterationNumber) { | ||
@@ -105,10 +102,9 @@ var txt = '|'; | ||
obj1.push(obj2[p]); | ||
this.contextualizeMerge(obj2, p, obj1, "" + (obj1.length - 1), options, false); | ||
this.contextualizeMerge(obj2, p, obj1, "" + (obj1.length - 1), options); | ||
} | ||
else if (obj2[p] !== null && obj2[p] !== undefined && obj2[p] instanceof Object && options.deep) { | ||
debug && options.logger.log('Merge [' + securityMergeMyID + ']' + this.mergeDebugIteration(iterationNumber) + ' ' + p + ':'); | ||
var overrideProp = obj1[p] !== undefined && obj1[p] !== null; | ||
var res = this.processMerge(obj1[p], obj2[p], options, securityMergeMyID, iterationNumber + 1); | ||
obj1[p] = res; | ||
this.contextualizeMerge(res, p, obj1, p, options, overrideProp); | ||
this.contextualizeMerge(res, p, obj1, p, options); | ||
} | ||
@@ -118,5 +114,4 @@ else { | ||
+ this.mergeDebugIteration(iterationNumber) + ' ' + p + ':' + obj2[p]); | ||
var overrideProp = Merge.notNullNotUndefined(obj1[p]); | ||
obj1[p] = obj2[p]; | ||
this.contextualizeMerge(obj2, p, obj1, p, options, overrideProp); | ||
this.contextualizeMerge(obj2, p, obj1, p, options); | ||
} | ||
@@ -126,5 +121,4 @@ } | ||
options.logger.error("MergeUtils [" + securityMergeMyID + "] something has failed:", e); | ||
var overrideProp = !!obj1[p] && !!obj2[p]; | ||
obj1[p] = obj2[p]; | ||
this.contextualizeMerge(obj2, p, obj1, p, options, overrideProp); | ||
this.contextualizeMerge(obj2, p, obj1, p, options); | ||
} | ||
@@ -136,6 +130,6 @@ } | ||
}; | ||
Merge.contextualizeMerge = function (src, srcKey, dest, destKey, options, override) { | ||
if (options.context && dest) { | ||
if (!dest.hasOwnProperty('_context')) { | ||
Object.defineProperty(dest.prototype ? dest.prototype : dest, '_context', { | ||
Merge.contextualizeMerge = function (obj2, obj2Key, obj1, obj1Key, options) { | ||
if (options.context && obj1) { | ||
if (!obj1.hasOwnProperty('_context')) { | ||
Object.defineProperty(obj1.prototype ? obj1.prototype : obj1, '_context', { | ||
enumerable: false, | ||
@@ -145,9 +139,8 @@ value: {}, | ||
} | ||
var destGetMergeContextOf = dest._context; | ||
var srcGetMergeContextOf = src._context; | ||
var srcHasNoContext = (!srcGetMergeContextOf || !srcGetMergeContextOf.hasOwnProperty("" + destKey)); | ||
var destHasNoContext = !destGetMergeContextOf.hasOwnProperty("" + destKey); | ||
if ((srcHasNoContext && destHasNoContext) || override) { | ||
var o = destGetMergeContextOf.prototype ? destGetMergeContextOf.prototype : destGetMergeContextOf; | ||
Object.defineProperty(o, "" + destKey, { | ||
var obj1GetMergeContextOf = obj1._context; | ||
var obj2GetMergeContextOf = obj2._context; | ||
var obj2HasNoContext = (!obj2GetMergeContextOf || !obj2GetMergeContextOf.hasOwnProperty("" + obj1Key)); | ||
var o = obj1GetMergeContextOf.prototype ? obj1GetMergeContextOf.prototype : obj1GetMergeContextOf; | ||
if (obj2HasNoContext) { | ||
Object.defineProperty(o, "" + obj1Key, { | ||
configurable: true, | ||
@@ -159,5 +152,4 @@ enumerable: false, | ||
else { | ||
var descriptor = Object.getOwnPropertyDescriptor(src._context, "" + destKey); | ||
var o = destGetMergeContextOf.prototype ? destGetMergeContextOf.prototype : destGetMergeContextOf; | ||
Object.defineProperty(o, "" + destKey, { | ||
var descriptor = Object.getOwnPropertyDescriptor(obj2._context, "" + obj1Key); | ||
Object.defineProperty(o, "" + obj1Key, { | ||
configurable: true, | ||
@@ -164,0 +156,0 @@ enumerable: false, |
{ | ||
"name": "@henry781/deep-merge", | ||
"version": "0.2.2", | ||
"version": "0.2.3", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/api.js", |
Sorry, the diff of this file is not supported yet
16652
218