diff --git a/src/json-patch-duplex.js b/src/json-patch-duplex.js index b450e32d..e53387e1 100644 --- a/src/json-patch-duplex.js +++ b/src/json-patch-duplex.js @@ -119,8 +119,7 @@ var jsonpatch; } } } - var beforeDict = { - }; + var beforeDict = []; var callbacks = []; function observe(obj, callback) { var patches = []; @@ -145,8 +144,20 @@ var jsonpatch; } else { observer = { }; - beforeDict[obj] = JSON.parse(JSON.stringify(obj))// Faster than ES5 clone - ; + var mirror; + for(var i = 0, ilen = beforeDict.length; i < ilen; i++) { + if(beforeDict[i].obj === obj) { + mirror = beforeDict[i]; + break; + } + } + if(!mirror) { + mirror = { + obj: obj + }; + beforeDict.push(mirror); + } + mirror.value = JSON.parse(JSON.stringify(obj)); if(callback) { callbacks.push(callback); var next; @@ -214,8 +225,14 @@ var jsonpatch; if(Object.observe) { Object.deliverChangeRecords(observer); } else { - var mirror = beforeDict[observer.object]; - _generate(mirror, observer.object, observer.patches, ""); + var mirror; + for(var i = 0, ilen = beforeDict.length; i < ilen; i++) { + if(beforeDict[i].obj === observer.object) { + mirror = beforeDict[i]; + break; + } + } + _generate(mirror.value, observer.object, observer.patches, ""); } return observer.patches; } @@ -294,7 +311,7 @@ var jsonpatch; if(key.indexOf('~') != -1) { key = key.replace('~1', '/').replace('~0', '~'); }// escape chars - + t++; if(t >= len) { objOps[patch.op].call(patch, obj, key, tree)// Apply patch diff --git a/src/json-patch-duplex.js.map b/src/json-patch-duplex.js.map index a98a42ab..ef189602 100644 --- a/src/json-patch-duplex.js.map +++ b/src/json-patch-duplex.js.map @@ -1 +1 @@ -{"version":3,"file":"json-patch-duplex.js","sources":["json-patch-duplex.ts"],"names":["jsonpatch","jsonpatch.add","jsonpatch.remove","jsonpatch.replace","jsonpatch.move","jsonpatch.copy","jsonpatch.test","jsonpatch._get","jsonpatch.add","jsonpatch.remove","jsonpatch.replace","jsonpatch.new","jsonpatch.deleted","jsonpatch.updated","jsonpatch.markPaths","jsonpatch.clearPaths","jsonpatch.observe","jsonpatch.add.observer","","jsonpatch.add.dirtyCheck","jsonpatch.add.fastCheck","","jsonpatch.add.slowCheck","","jsonpatch._observe","jsonpatch.generate","jsonpatch._generate","jsonpatch.apply",""],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"json-patch-duplex.js","sources":["json-patch-duplex.ts"],"names":["jsonpatch","jsonpatch.add","jsonpatch.remove","jsonpatch.replace","jsonpatch.move","jsonpatch.copy","jsonpatch.test","jsonpatch._get","jsonpatch.add","jsonpatch.remove","jsonpatch.replace","jsonpatch.new","jsonpatch.deleted","jsonpatch.updated","jsonpatch.markPaths","jsonpatch.clearPaths","jsonpatch.observe","jsonpatch.observe.observer","","jsonpatch.observe.dirtyCheck","jsonpatch.observe.fastCheck","","jsonpatch.observe.slowCheck","","jsonpatch._observe","jsonpatch.generate","jsonpatch._generate","jsonpatch.apply",""],"mappings":"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"} \ No newline at end of file diff --git a/src/json-patch-duplex.ts b/src/json-patch-duplex.ts index a2bb0593..077a4734 100644 --- a/src/json-patch-duplex.ts +++ b/src/json-patch-duplex.ts @@ -91,7 +91,7 @@ module jsonpatch { } } - var beforeDict = {}; + var beforeDict = []; var callbacks = []; export function observe(obj: any, callback) : any { @@ -120,7 +120,22 @@ module jsonpatch { } else { observer = {}; - beforeDict[obj] = JSON.parse(JSON.stringify(obj)); // Faster than ES5 clone + + var mirror; + for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { + if (beforeDict[i].obj === obj) { + mirror = beforeDict[i]; + break; + } + } + + if (!mirror) { + mirror = {obj: obj}; + beforeDict.push(mirror); + } + + mirror.value = JSON.parse(JSON.stringify(obj))// Faster than ES5 clone + if (callback) { callbacks.push(callback); var next; @@ -179,8 +194,14 @@ module jsonpatch { Object.deliverChangeRecords( observer ) ; } else { - var mirror = beforeDict[observer.object]; - _generate(mirror,observer.object,observer.patches,""); + var mirror; + for (var i = 0, ilen = beforeDict.length; i < ilen; i++) { + if (beforeDict[i].obj === observer.object) { + mirror = beforeDict[i]; + break; + } + } + _generate(mirror.value,observer.object,observer.patches,""); } return observer.patches; } diff --git a/src/test-duplex.js b/src/test-duplex.js index f7b40e49..73b84ef0 100644 --- a/src/test-duplex.js +++ b/src/test-duplex.js @@ -127,6 +127,23 @@ test('generate replace', function() { deepEqual(obj2,obj); }); +test('generate replace (2 observers)', function() { + var person1 = {firstName: "Alexandra", lastName: "Galbreath"}; + var person2 = {firstName: "Lisa", lastName: "Mendoza"}; + + var observer1 = jsonpatch.observe(person1); + var observer2 = jsonpatch.observe(person2); + + person1.firstName = "Alexander"; + person2.firstName = "Lucas"; + + var patch1 = jsonpatch.generate(observer1); + var patch2 = jsonpatch.generate(observer2); + + deepEqual(patch1, [{"op": "replace", "path": "/firstName", "value": "Alexander"}]); + deepEqual(patch2, [{"op": "replace", "path": "/firstName", "value": "Lucas"}]); +}); + test('generate add', function() { obj = { lastName:"Einstein", phoneNumbers:[ {number:"12345"} ]};