mongoose-diff-tracking
Version:
Manage Mongo Collection diff History and versions
1 lines • 64.2 kB
Source Map (JSON)
{"version":3,"sources":["/source-files/jsondiffpatch/node_modules/fiberglass/node_modules/browserify/node_modules/browser-pack/_prelude.js","/source-files/jsondiffpatch/src/main.js","/source-files/jsondiffpatch/src/diffpatcher.js","/source-files/jsondiffpatch/src/environment.js","/source-files/jsondiffpatch/src/date-reviver.js","/source-files/jsondiffpatch/src/processor.js","/source-files/jsondiffpatch/src/pipe.js","/source-files/jsondiffpatch/src/contexts/diff.js","/source-files/jsondiffpatch/src/contexts/patch.js","/source-files/jsondiffpatch/src/contexts/reverse.js","/source-files/jsondiffpatch/src/filters/trivial.js","/source-files/jsondiffpatch/src/filters/nested.js","/source-files/jsondiffpatch/src/filters/arrays.js","/source-files/jsondiffpatch/src/filters/dates.js","/source-files/jsondiffpatch/src/filters/texts.js","/source-files/jsondiffpatch/src/contexts/context.js","/source-files/jsondiffpatch/src/filters/lcs.js"],"names":["environment","require","DiffPatcher","exports","create","options","dateReviver","defaultInstance","diff","apply","arguments","patch","unpatch","reverse","isBrowser","homepage","version","packageInfoModuleName","packageInfo","formatterModuleName","formatters","console","Processor","Pipe","DiffContext","PatchContext","ReverseContext","trivial","nested","arrays","dates","texts","this","processor","pipe","append","collectChildrenDiffFilter","diffFilter","objectsDiffFilter","shouldHaveResult","collectChildrenPatchFilter","patchFilter","collectChildrenReverseFilter","reverseFilter","prototype","left","right","process","delta","window","module","key","value","parts","exec","Date","UTC","selfOptions","pipes","name","input","context","lastPipe","lastContext","nextPipe","nextAfterChildren","next","hasResult","result","undefined","filters","Error","debug","length","index","filter","log","filterName","exiting","resultCheck","msg","push","prepend","unshift","indexOf","list","names","after","params","Array","slice","call","splice","before","clear","should","error","noResult","Context","setResult","cloneDiffValues","clone","JSON","parse","stringify","isArray","a","exit","leftType","rightType","leftIsArray","rightIsArray","children","child","childName","_t","propertyFilter","Object","hasOwnProperty","arraysHaveMatchByRef","array1","array2","len1","len2","index1","val1","index2","val2","matchItems","value1","value2","objectHash","matchByPosition","hash1","hash2","hashCache1","hashCache2","lcs","ARRAY_MOVE","arrayIndexOf","array","item","i","matchContext","commonHead","commonTail","trimmed1","trimmed2","seq","get","removedItems","indices1","detectMove","includeValueOnMove","removedItemsLength","indexOnArray2","indices2","isMove","removeItemIndex1","compare","numerically","b","numericallyBy","toRemove","toInsert","toModify","parseInt","sort","indexDiff","removedValue","toInsertLength","insertion","toModifyLength","modification","newName","substr","reverseArrayDeltaIndex","itemDelta","reverseIndex","deltaIndex","deltaItem","moveFromIndex","moveToIndex","deleteIndex","getTime","TEXT_DIFF","DEFAULT_MIN_LENGTH","cachedDiffPatch","getDiffMatchPatch","required","instance","diff_match_patch","dmpModuleName","dmp","err","diff_match_patch_not_found","txt1","txt2","patch_toText","patch_make","results","patch_apply","patch_fromText","textPatchFailed","minLength","textDiff","diffMatchPatch","textDeltaReverse","l","lines","line","lineTmp","lineHeader","lineAdd","lineRemove","header","headerRegex","split","lineStart","join","switchTo","parent","root","defaultMatch","lengthMatrix","match","x","y","matrix","Math","max","backtrack","sequence","subsequence"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","\nvar environment = require('./environment');\n\nvar DiffPatcher = require('./diffpatcher').DiffPatcher;\nexports.DiffPatcher = DiffPatcher;\n\nexports.create = function(options){\n return new DiffPatcher(options);\n};\n\nexports.dateReviver = require('./date-reviver');\n\nvar defaultInstance;\n\nexports.diff = function() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.diff.apply(defaultInstance, arguments);\n};\n\nexports.patch = function() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.patch.apply(defaultInstance, arguments);\n};\n\nexports.unpatch = function() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.unpatch.apply(defaultInstance, arguments);\n};\n\nexports.reverse = function() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.reverse.apply(defaultInstance, arguments);\n};\n\nif (environment.isBrowser) {\n exports.homepage = '{{package-homepage}}';\n exports.version = '{{package-version}}';\n} else {\n var packageInfoModuleName = '../package.json';\n var packageInfo = require(packageInfoModuleName);\n exports.homepage = packageInfo.homepage;\n exports.version = packageInfo.version;\n\n var formatterModuleName = './formatters';\n var formatters = require(formatterModuleName);\n exports.formatters = formatters;\n // shortcut for console\n exports.console = formatters.console;\n}\n","var Processor = require('./processor').Processor;\nvar Pipe = require('./pipe').Pipe;\nvar DiffContext = require('./contexts/diff').DiffContext;\nvar PatchContext = require('./contexts/patch').PatchContext;\nvar ReverseContext = require('./contexts/reverse').ReverseContext;\n\nvar trivial = require('./filters/trivial');\nvar nested = require('./filters/nested');\nvar arrays = require('./filters/arrays');\nvar dates = require('./filters/dates');\nvar texts = require('./filters/texts');\n\nvar DiffPatcher = function DiffPatcher(options) {\n this.processor = new Processor(options);\n this.processor.pipe(new Pipe('diff').append(\n nested.collectChildrenDiffFilter,\n trivial.diffFilter,\n dates.diffFilter,\n texts.diffFilter,\n nested.objectsDiffFilter,\n arrays.diffFilter\n ).shouldHaveResult());\n this.processor.pipe(new Pipe('patch').append(\n nested.collectChildrenPatchFilter,\n arrays.collectChildrenPatchFilter,\n trivial.patchFilter,\n texts.patchFilter,\n nested.patchFilter,\n arrays.patchFilter\n ).shouldHaveResult());\n this.processor.pipe(new Pipe('reverse').append(\n nested.collectChildrenReverseFilter,\n arrays.collectChildrenReverseFilter,\n trivial.reverseFilter,\n texts.reverseFilter,\n nested.reverseFilter,\n arrays.reverseFilter\n ).shouldHaveResult());\n};\n\nDiffPatcher.prototype.options = function() {\n return this.processor.options.apply(this.processor, arguments);\n};\n\nDiffPatcher.prototype.diff = function(left, right) {\n return this.processor.process(new DiffContext(left, right));\n};\n\nDiffPatcher.prototype.patch = function(left, delta) {\n return this.processor.process(new PatchContext(left, delta));\n};\n\nDiffPatcher.prototype.reverse = function(delta) {\n return this.processor.process(new ReverseContext(delta));\n};\n\nDiffPatcher.prototype.unpatch = function(right, delta) {\n return this.patch(right, this.reverse(delta));\n};\n\nexports.DiffPatcher = DiffPatcher;\n","\nexports.isBrowser = typeof window !== 'undefined';\n","// use as 2nd parameter for JSON.parse to revive Date instances\nmodule.exports = function dateReviver(key, value) {\n var parts;\n if (typeof value === 'string') {\n parts = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d*))?(Z|([+\\-])(\\d{2}):(\\d{2}))$/.exec(value);\n if (parts) {\n return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4], +parts[5], +parts[6], +(parts[7] || 0)));\n }\n }\n return value;\n};\n","\nvar Processor = function Processor(options){\n this.selfOptions = options || {};\n this.pipes = {};\n};\n\nProcessor.prototype.options = function(options) {\n if (options) {\n this.selfOptions = options;\n }\n return this.selfOptions;\n};\n\nProcessor.prototype.pipe = function(name, pipe) {\n if (typeof name === 'string') {\n if (typeof pipe === 'undefined') {\n return this.pipes[name];\n } else {\n this.pipes[name] = pipe;\n }\n }\n if (name && name.name) {\n pipe = name;\n if (pipe.processor === this) { return pipe; }\n this.pipes[pipe.name] = pipe;\n }\n pipe.processor = this;\n return pipe;\n};\n\nProcessor.prototype.process = function(input, pipe) {\n var context = input;\n context.options = this.options();\n var nextPipe = pipe || input.pipe || 'default';\n var lastPipe, lastContext;\n while (nextPipe) {\n if (typeof context.nextAfterChildren !== 'undefined') {\n // children processed and coming back to parent\n context.next = context.nextAfterChildren;\n context.nextAfterChildren = null;\n }\n\n if (typeof nextPipe === 'string') {\n nextPipe = this.pipe(nextPipe);\n }\n nextPipe.process(context);\n lastContext = context;\n lastPipe = nextPipe;\n nextPipe = null;\n if (context) {\n if (context.next) {\n context = context.next;\n nextPipe = lastContext.nextPipe || context.pipe || lastPipe;\n }\n }\n }\n return context.hasResult ? context.result : undefined;\n};\n\nexports.Processor = Processor;\n","var Pipe = function Pipe(name) {\n this.name = name;\n this.filters = [];\n};\n\nPipe.prototype.process = function(input) {\n if (!this.processor) {\n throw new Error('add this pipe to a processor before using it');\n }\n var debug = this.debug;\n var length = this.filters.length;\n var context = input;\n for (var index = 0; index < length; index++) {\n var filter = this.filters[index];\n if (debug) {\n this.log('filter: ' + filter.filterName);\n }\n filter(context);\n if (typeof context === 'object' && context.exiting) {\n context.exiting = false;\n break;\n }\n }\n if (!context.next && this.resultCheck) {\n this.resultCheck(context);\n }\n};\n\nPipe.prototype.log = function(msg) {\n console.log('[jsondiffpatch] ' + this.name + ' pipe, ' + msg);\n};\n\nPipe.prototype.append = function() {\n this.filters.push.apply(this.filters, arguments);\n return this;\n};\n\nPipe.prototype.prepend = function() {\n this.filters.unshift.apply(this.filters, arguments);\n return this;\n};\n\nPipe.prototype.indexOf = function(filterName) {\n if (!filterName) {\n throw new Error('a filter name is required');\n }\n for (var index = 0; index < this.filters.length; index++) {\n var filter = this.filters[index];\n if (filter.filterName === filterName) {\n return index;\n }\n }\n throw new Error('filter not found: ' + filterName);\n};\n\nPipe.prototype.list = function() {\n var names = [];\n for (var index = 0; index < this.filters.length; index++) {\n var filter = this.filters[index];\n names.push(filter.filterName);\n }\n return names;\n};\n\nPipe.prototype.after = function(filterName) {\n var index = this.indexOf(filterName);\n var params = Array.prototype.slice.call(arguments, 1);\n if (!params.length) {\n throw new Error('a filter is required');\n }\n params.unshift(index + 1, 0);\n Array.prototype.splice.apply(this.filters, params);\n return this;\n};\n\nPipe.prototype.before = function(filterName) {\n var index = this.indexOf(filterName);\n var params = Array.prototype.slice.call(arguments, 1);\n if (!params.length) {\n throw new Error('a filter is required');\n }\n params.unshift(index, 0);\n Array.prototype.splice.apply(this.filters, params);\n return this;\n};\n\nPipe.prototype.clear = function() {\n this.filters.length = 0;\n return this;\n};\n\nPipe.prototype.shouldHaveResult = function(should) {\n if (should === false) {\n this.resultCheck = null;\n return;\n }\n if (this.resultCheck) {\n return;\n }\n var pipe = this;\n this.resultCheck = function(context) {\n if (!context.hasResult) {\n console.log(context);\n var error = new Error(pipe.name + ' failed');\n error.noResult = true;\n throw error;\n }\n };\n return this;\n};\n\nexports.Pipe = Pipe;\n","var Context = require('./context').Context;\nvar dateReviver = require('../date-reviver');\n\nvar DiffContext = function DiffContext(left, right) {\n this.left = left;\n this.right = right;\n this.pipe = 'diff';\n};\n\nDiffContext.prototype = new Context();\n\nDiffContext.prototype.setResult = function(result) {\n if (this.options.cloneDiffValues) {\n var clone = typeof this.options.cloneDiffValues === 'function' ?\n this.options.cloneDiffValues : function(value) {\n return JSON.parse(JSON.stringify(value), dateReviver);\n };\n if (typeof result[0] === 'object') {\n result[0] = clone(result[0]);\n }\n if (typeof result[1] === 'object') {\n result[1] = clone(result[1]);\n }\n }\n return Context.prototype.setResult.apply(this, arguments);\n};\n\nexports.DiffContext = DiffContext;\n","var Context = require('./context').Context;\n\nvar PatchContext = function PatchContext(left, delta) {\n this.left = left;\n this.delta = delta;\n this.pipe = 'patch';\n};\n\nPatchContext.prototype = new Context();\n\nexports.PatchContext = PatchContext;\n","var Context = require('./context').Context;\n\nvar ReverseContext = function ReverseContext(delta) {\n this.delta = delta;\n this.pipe = 'reverse';\n};\n\nReverseContext.prototype = new Context();\n\nexports.ReverseContext = ReverseContext;\n","var isArray = (typeof Array.isArray === 'function') ?\n // use native function\n Array.isArray :\n // use instanceof operator\n function(a) {\n return a instanceof Array;\n };\n\nvar diffFilter = function trivialMatchesDiffFilter(context) {\n if (context.left === context.right) {\n context.setResult(undefined).exit();\n return;\n }\n if (typeof context.left === 'undefined') {\n if (typeof context.right === 'function') {\n throw new Error('functions are not supported');\n }\n context.setResult([context.right]).exit();\n return;\n }\n if (typeof context.right === 'undefined') {\n context.setResult([context.left, 0, 0]).exit();\n return;\n }\n if (typeof context.left === 'function' || typeof context.right === 'function') {\n throw new Error('functions are not supported');\n }\n context.leftType = context.left === null ? 'null' : typeof context.left;\n context.rightType = context.right === null ? 'null' : typeof context.right;\n if (context.leftType !== context.rightType) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n if (context.leftType === 'boolean' || context.leftType === 'number') {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n if (context.leftType === 'object') {\n context.leftIsArray = isArray(context.left);\n }\n if (context.rightType === 'object') {\n context.rightIsArray = isArray(context.right);\n }\n if (context.leftIsArray !== context.rightIsArray) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n};\ndiffFilter.filterName = 'trivial';\n\nvar patchFilter = function trivialMatchesPatchFilter(context) {\n if (typeof context.delta === 'undefined') {\n context.setResult(context.left).exit();\n return;\n }\n context.nested = !isArray(context.delta);\n if (context.nested) {\n return;\n }\n if (context.delta.length === 1) {\n context.setResult(context.delta[0]).exit();\n return;\n }\n if (context.delta.length === 2) {\n context.setResult(context.delta[1]).exit();\n return;\n }\n if (context.delta.length === 3 && context.delta[2] === 0) {\n context.setResult(undefined).exit();\n return;\n }\n};\npatchFilter.filterName = 'trivial';\n\nvar reverseFilter = function trivialReferseFilter(context) {\n if (typeof context.delta === 'undefined') {\n context.setResult(context.delta).exit();\n return;\n }\n context.nested = !isArray(context.delta);\n if (context.nested) {\n return;\n }\n if (context.delta.length === 1) {\n context.setResult([context.delta[0], 0, 0]).exit();\n return;\n }\n if (context.delta.length === 2) {\n context.setResult([context.delta[1], context.delta[0]]).exit();\n return;\n }\n if (context.delta.length === 3 && context.delta[2] === 0) {\n context.setResult([context.delta[0]]).exit();\n return;\n }\n};\nreverseFilter.filterName = 'trivial';\n\nexports.diffFilter = diffFilter;\nexports.patchFilter = patchFilter;\nexports.reverseFilter = reverseFilter;\n","var DiffContext = require('../contexts/diff').DiffContext;\nvar PatchContext = require('../contexts/patch').PatchContext;\nvar ReverseContext = require('../contexts/reverse').ReverseContext;\n\nvar collectChildrenDiffFilter = function collectChildrenDiffFilter(context) {\n if (!context || !context.children) {\n return;\n }\n var length = context.children.length;\n var child;\n var result = context.result;\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n if (typeof child.result === 'undefined') {\n continue;\n }\n result = result || {};\n result[child.childName] = child.result;\n }\n if (result && context.leftIsArray) {\n result._t = 'a';\n }\n context.setResult(result).exit();\n};\ncollectChildrenDiffFilter.filterName = 'collectChildren';\n\nvar objectsDiffFilter = function objectsDiffFilter(context) {\n if (context.leftIsArray || context.leftType !== 'object') {\n return;\n }\n\n var name, child, propertyFilter = context.options.propertyFilter;\n for (name in context.left) {\n if (!Object.prototype.hasOwnProperty.call(context.left, name)) {\n continue;\n }\n if (propertyFilter && !propertyFilter(name, context)) {\n continue;\n }\n child = new DiffContext(context.left[name], context.right[name]);\n context.push(child, name);\n }\n for (name in context.right) {\n if (!Object.prototype.hasOwnProperty.call(context.right, name)) {\n continue;\n }\n if (propertyFilter && !propertyFilter(name, context)) {\n continue;\n }\n if (typeof context.left[name] === 'undefined') {\n child = new DiffContext(undefined, context.right[name]);\n context.push(child, name);\n }\n }\n\n if (!context.children || context.children.length === 0) {\n context.setResult(undefined).exit();\n return;\n }\n context.exit();\n};\nobjectsDiffFilter.filterName = 'objects';\n\nvar patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n var name, child;\n for (name in context.delta) {\n child = new PatchContext(context.left[name], context.delta[name]);\n context.push(child, name);\n }\n context.exit();\n};\npatchFilter.filterName = 'objects';\n\nvar collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n var length = context.children.length;\n var child;\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n if (Object.prototype.hasOwnProperty.call(context.left, child.childName) && child.result === undefined) {\n delete context.left[child.childName];\n } else if (context.left[child.childName] !== child.result) {\n context.left[child.childName] = child.result;\n }\n }\n context.setResult(context.left).exit();\n};\ncollectChildrenPatchFilter.filterName = 'collectChildren';\n\nvar reverseFilter = function nestedReverseFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n var name, child;\n for (name in context.delta) {\n child = new ReverseContext(context.delta[name]);\n context.push(child, name);\n }\n context.exit();\n};\nreverseFilter.filterName = 'objects';\n\nvar collectChildrenReverseFilter = function collectChildrenReverseFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n var length = context.children.length;\n var child;\n var delta = {};\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n if (delta[child.childName] !== child.result) {\n delta[child.childName] = child.result;\n }\n }\n context.setResult(delta).exit();\n};\ncollectChildrenReverseFilter.filterName = 'collectChildren';\n\nexports.collectChildrenDiffFilter = collectChildrenDiffFilter;\nexports.objectsDiffFilter = objectsDiffFilter;\nexports.patchFilter = patchFilter;\nexports.collectChildrenPatchFilter = collectChildrenPatchFilter;\nexports.reverseFilter = reverseFilter;\nexports.collectChildrenReverseFilter = collectChildrenReverseFilter;\n","var DiffContext = require('../contexts/diff').DiffContext;\nvar PatchContext = require('../contexts/patch').PatchContext;\nvar ReverseContext = require('../contexts/reverse').ReverseContext;\n\nvar lcs = require('./lcs');\n\nvar ARRAY_MOVE = 3;\n\nvar isArray = (typeof Array.isArray === 'function') ?\n // use native function\n Array.isArray :\n // use instanceof operator\n function(a) {\n return a instanceof Array;\n };\n\nvar arrayIndexOf = typeof Array.prototype.indexOf === 'function' ?\n function(array, item) {\n return array.indexOf(item);\n } : function(array, item) {\n var length = array.length;\n for (var i = 0; i < length; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n };\n\nfunction arraysHaveMatchByRef(array1, array2, len1, len2) {\n for (var index1 = 0; index1 < len1; index1++) {\n var val1 = array1[index1];\n for (var index2 = 0; index2 < len2; index2++) {\n var val2 = array2[index2];\n if (val1 === val2) {\n return true;\n }\n }\n }\n}\n\nfunction matchItems(array1, array2, index1, index2, context) {\n var value1 = array1[index1];\n var value2 = array2[index2];\n if (value1 === value2) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object') {\n return false;\n }\n var objectHash = context.objectHash;\n if (!objectHash) {\n // no way to match objects was provided, try match by position\n return context.matchByPosition && index1 === index2;\n }\n var hash1;\n var hash2;\n if (typeof index1 === 'number') {\n context.hashCache1 = context.hashCache1 || [];\n hash1 = context.hashCache1[index1];\n if (typeof hash1 === 'undefined') {\n context.hashCache1[index1] = hash1 = objectHash(value1, index1);\n }\n } else {\n hash1 = objectHash(value1);\n }\n if (typeof hash1 === 'undefined') {\n return false;\n }\n if (typeof index2 === 'number') {\n context.hashCache2 = context.hashCache2 || [];\n hash2 = context.hashCache2[index2];\n if (typeof hash2 === 'undefined') {\n context.hashCache2[index2] = hash2 = objectHash(value2, index2);\n }\n } else {\n hash2 = objectHash(value2);\n }\n if (typeof hash2 === 'undefined') {\n return false;\n }\n return hash1 === hash2;\n}\n\nvar diffFilter = function arraysDiffFilter(context) {\n if (!context.leftIsArray) {\n return;\n }\n\n var matchContext = {\n objectHash: context.options && context.options.objectHash,\n matchByPosition: context.options && context.options.matchByPosition\n };\n var commonHead = 0;\n var commonTail = 0;\n var index;\n var index1;\n var index2;\n var array1 = context.left;\n var array2 = context.right;\n var len1 = array1.length;\n var len2 = array2.length;\n\n var child;\n\n if (len1 > 0 && len2 > 0 && !matchContext.objectHash &&\n typeof matchContext.matchByPosition !== 'boolean') {\n matchContext.matchByPosition = !arraysHaveMatchByRef(array1, array2, len1, len2);\n }\n\n // separate common head\n while (commonHead < len1 && commonHead < len2 &&\n matchItems(array1, array2, commonHead, commonHead, matchContext)) {\n index = commonHead;\n child = new DiffContext(context.left[index], context.right[index]);\n context.push(child, index);\n commonHead++;\n }\n // separate common tail\n while (commonTail + commonHead < len1 && commonTail + commonHead < len2 &&\n matchItems(array1, array2, len1 - 1 - commonTail, len2 - 1 - commonTail, matchContext)) {\n index1 = len1 - 1 - commonTail;\n index2 = len2 - 1 - commonTail;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n commonTail++;\n }\n var result;\n if (commonHead + commonTail === len1) {\n if (len1 === len2) {\n // arrays are identical\n context.setResult(undefined).exit();\n return;\n }\n // trivial case, a block (1 or more consecutive items) was added\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len2 - commonTail; index++) {\n result[index] = [array2[index]];\n }\n context.setResult(result).exit();\n return;\n }\n if (commonHead + commonTail === len2) {\n // trivial case, a block (1 or more consecutive items) was removed\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len1 - commonTail; index++) {\n result['_' + index] = [array1[index], 0, 0];\n }\n context.setResult(result).exit();\n return;\n }\n // reset hash cache\n delete matchContext.hashCache1;\n delete matchContext.hashCache2;\n\n // diff is not trivial, find the LCS (Longest Common Subsequence)\n var trimmed1 = array1.slice(commonHead, len1 - commonTail);\n var trimmed2 = array2.slice(commonHead, len2 - commonTail);\n var seq = lcs.get(\n trimmed1, trimmed2,\n matchItems,\n matchContext\n );\n var removedItems = [];\n result = result || {\n _t: 'a'\n };\n for (index = commonHead; index < len1 - commonTail; index++) {\n if (arrayIndexOf(seq.indices1, index - commonHead) < 0) {\n // removed\n result['_' + index] = [array1[index], 0, 0];\n removedItems.push(index);\n }\n }\n\n var detectMove = true;\n if (context.options && context.options.arrays && context.options.arrays.detectMove === false) {\n detectMove = false;\n }\n var includeValueOnMove = false;\n if (context.options && context.options.arrays && context.options.arrays.includeValueOnMove) {\n includeValueOnMove = true;\n }\n\n var removedItemsLength = removedItems.length;\n for (index = commonHead; index < len2 - commonTail; index++) {\n var indexOnArray2 = arrayIndexOf(seq.indices2, index - commonHead);\n if (indexOnArray2 < 0) {\n // added, try to match with a removed item and register as position move\n var isMove = false;\n if (detectMove && removedItemsLength > 0) {\n for (var removeItemIndex1 = 0; removeItemIndex1 < removedItemsLength; removeItemIndex1++) {\n index1 = removedItems[removeItemIndex1];\n if (matchItems(trimmed1, trimmed2, index1 - commonHead,\n index - commonHead, matchContext)) {\n // store position move as: [originalValue, newPosition, ARRAY_MOVE]\n result['_' + index1].splice(1, 2, index, ARRAY_MOVE);\n if (!includeValueOnMove) {\n // don't include moved value on diff, to save bytes\n result['_' + index1][0] = '';\n }\n\n index2 = index;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n removedItems.splice(removeItemIndex1, 1);\n isMove = true;\n break;\n }\n }\n }\n if (!isMove) {\n // added\n result[index] = [array2[index]];\n }\n } else {\n // match, do inner diff\n index1 = seq.indices1[indexOnArray2] + commonHead;\n index2 = seq.indices2[indexOnArray2] + commonHead;\n child = new DiffContext(context.left[index1], context.right[index2]);\n context.push(child, index2);\n }\n }\n\n context.setResult(result).exit();\n\n};\ndiffFi