mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-06 16:28:16 +00:00
1 line
60 KiB
Plaintext
1 line
60 KiB
Plaintext
{"version":3,"file":"bundle.js","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/environment.js","/source-files/jsondiffpatch/src/diffpatcher.js","/source-files/jsondiffpatch/src/date-reviver.js","/source-files/jsondiffpatch/src/contexts/diff.js","/source-files/jsondiffpatch/src/pipe.js","/source-files/jsondiffpatch/src/processor.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":["exports","isBrowser","window","Processor","require","Pipe","DiffContext","PatchContext","ReverseContext","trivial","nested","arrays","dates","texts","DiffPatcher","options","this","processor","pipe","append","collectChildrenDiffFilter","diffFilter","objectsDiffFilter","shouldHaveResult","collectChildrenPatchFilter","patchFilter","collectChildrenReverseFilter","reverseFilter","prototype","apply","arguments","diff","left","right","process","patch","delta","reverse","unpatch","module","key","value","parts","exec","Date","UTC","Context","name","filters","input","Error","debug","length","context","index","filter","log","filterName","exiting","next","resultCheck","msg","console","push","prepend","unshift","indexOf","list","names","after","params","Array","slice","call","splice","before","clear","should","hasResult","error","noResult","selfOptions","pipes","lastPipe","lastContext","nextPipe","nextAfterChildren","result","undefined","isArray","a","setResult","exit","leftType","rightType","leftIsArray","rightIsArray","children","child","childName","_t","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","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","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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","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})","var environment=require(\"./environment\"),DiffPatcher=require(\"./diffpatcher\").DiffPatcher;exports.DiffPatcher=DiffPatcher,exports.create=function(e){return new DiffPatcher(e)},exports.dateReviver=require(\"./date-reviver\");var defaultInstance;if(exports.diff=function(){return defaultInstance||(defaultInstance=new DiffPatcher),defaultInstance.diff.apply(defaultInstance,arguments)},exports.patch=function(){return defaultInstance||(defaultInstance=new DiffPatcher),defaultInstance.patch.apply(defaultInstance,arguments)},exports.unpatch=function(){return defaultInstance||(defaultInstance=new DiffPatcher),defaultInstance.unpatch.apply(defaultInstance,arguments)},exports.reverse=function(){return defaultInstance||(defaultInstance=new DiffPatcher),defaultInstance.reverse.apply(defaultInstance,arguments)},environment.isBrowser)exports.homepage=\"{{package-homepage}}\",exports.version=\"{{package-version}}\";else{var packageInfoModuleName=\"../package.json\",packageInfo=require(packageInfoModuleName);exports.homepage=packageInfo.homepage,exports.version=packageInfo.version;var formatterModuleName=\"./formatters\",formatters=require(formatterModuleName);exports.formatters=formatters,exports.console=formatters.console}","\nexports.isBrowser = typeof window !== 'undefined';\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","// 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","var Context = require('./context').Context;\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\nexports.DiffContext = DiffContext;\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","\nvar Processor = function Processor(options){\n\tthis.selfOptions = options;\n\tthis.pipes = {};\n};\n\nProcessor.prototype.options = function(options) {\n\tif (options) {\n\t\tthis.selfOptions = options;\n\t}\n\treturn this.selfOptions;\n};\n\nProcessor.prototype.pipe = function(name, pipe) {\n\tif (typeof name === 'string') {\n\t\tif (typeof pipe === 'undefined') {\n\t\t\treturn this.pipes[name];\n\t\t} else {\n\t\t\tthis.pipes[name] = pipe;\n\t\t}\n\t}\n\tif (name && name.name) {\n\t\tpipe = name;\n\t\tif (pipe.processor === this) { return pipe; }\n\t\tthis.pipes[pipe.name] = pipe;\n\t}\n\tpipe.processor = this;\n\treturn pipe;\n};\n\nProcessor.prototype.process = function(input, pipe) {\n\tvar context = input;\n\tcontext.options = this.options();\n\tvar nextPipe = pipe || input.pipe || 'default';\n\tvar lastPipe, lastContext;\n\twhile (nextPipe) {\n\t\tif (typeof context.nextAfterChildren !== 'undefined') {\n\t\t\t// children processed and coming back to parent\n\t\t\tcontext.next = context.nextAfterChildren;\n\t\t\tcontext.nextAfterChildren = null;\n\t\t}\n\n\t\tif (typeof nextPipe === 'string') {\n\t\t\tnextPipe = this.pipe(nextPipe);\n\t\t}\n\t\tnextPipe.process(context);\n\t\tlastContext = context;\n\t\tlastPipe = nextPipe;\n\t\tnextPipe = null;\n\t\tif (context) {\n\t\t\tif (context.next) {\n\t\t\t\tcontext = context.next;\n\t\t\t\tnextPipe = lastContext.nextPipe || context.pipe || lastPipe;\n\t\t\t}\n\t\t}\n\t}\n\treturn context.hasResult ? context.result : undefined;\n};\n\nexports.Processor = Processor;\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;\n for (name in context.left) {\n child = new DiffContext(context.left[name], context.right[name]);\n context.push(child, name);\n }\n for (name in context.right) {\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 (context.left.hasOwnProperty(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};\ndiffFilter.filterName = 'arrays';\n\nvar compare = {\n numerically: function(a, b) {\n return a - b;\n },\n numericallyBy: function(name) {\n return function(a, b) {\n return a[name] - b[name];\n };\n }\n};\n\nvar patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var index, index1;\n\n var delta = context.delta;\n var array = context.left;\n\n // first, separate removals, insertions and modifications\n var toRemove = [];\n var toInsert = [];\n var toModify = [];\n for (index in delta) {\n if (index !== '_t') {\n if (index[0] === '_') {\n // removed item from original array\n if (delta[index][2] === 0 || delta[index][2] === ARRAY_MOVE) {\n toRemove.push(parseInt(index.slice(1), 10));\n } else {\n throw new Error('only removal or move can be applied at original array indices' +\n ', invalid diff type: ' + delta[index][2]);\n }\n } else {\n if (delta[index].length === 1) {\n // added item at new array\n toInsert.push({\n index: parseInt(index, 10),\n value: delta[index][0]\n });\n } else {\n // modified item at new array\n toModify.push({\n index: parseInt(index, 10),\n delta: delta[index]\n });\n }\n }\n }\n }\n\n // remove items, in reverse order to avoid sawing our own floor\n toRemove = toRemove.sort(compare.numerically);\n for (index = toRemove.length - 1; index >= 0; index--) {\n index1 = toRemove[index];\n var indexDiff = delta['_' + index1];\n var removedValue = array.splice(index1, 1)[0];\n if (indexDiff[2] === ARRAY_MOVE) {\n // reinsert later\n toInsert.push({\n index: indexDiff[1],\n value: removedValue\n });\n }\n }\n\n // insert items, in reverse order to avoid moving our own floor\n toInsert = toInsert.sort(compare.numericallyBy('index'));\n var toInsertLength = toInsert.length;\n for (index = 0; index < toInsertLength; index++) {\n var insertion = toInsert[index];\n array.splice(insertion.index, 0, insertion.value);\n }\n\n // apply modifications\n var toModifyLength = toModify.length;\n var child;\n if (toModifyLength > 0) {\n for (index = 0; index < toModifyLength; index++) {\n var modification = toModify[index];\n child = new PatchContext(context.left[modification.index], modification.delta);\n context.push(child, modification.index);\n }\n }\n\n if (!context.children) {\n context.setResult(context.left).exit();\n return;\n }\n context.exit();\n};\npatchFilter.filterName = 'arrays';\n\nvar collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\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 context.left[child.childName] = child.result;\n }\n context.setResult(context.left).exit();\n};\ncollectChildrenPatchFilter.filterName = 'arraysCollectChildren';\n\nvar reverseFilter = function arraysReverseFilter(context) {\n if (!context.nested) {\n if (context.delta[2] === ARRAY_MOVE) {\n context.newName = '_' + context.delta[1];\n context.setResult([context.delta[0], parseInt(context.childName.substr(1), 10), ARRAY_MOVE]).exit();\n }\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var name, child;\n for (name in context.delta) {\n if (name === '_t') {\n continue;\n }\n child = new ReverseContext(context.delta[name]);\n context.push(child, name);\n }\n context.exit();\n};\nreverseFilter.filterName = 'arrays';\n\nvar reverseArrayDeltaIndex = function(delta, index, itemDelta) {\n if (typeof index === 'string' && index[0] === '_') {\n return parseInt(index.substr(1), 10);\n } else if (isArray(itemDelta) && itemDelta[2] === 0) {\n return '_' + index;\n }\n\n var reverseIndex = +index;\n for (var deltaIndex in delta) {\n var deltaItem = delta[deltaIndex];\n if (isArray(deltaItem)) {\n if (deltaItem[2] === ARRAY_MOVE) {\n var moveFromIndex = parseInt(deltaIndex.substr(1), 10);\n var moveToIndex = deltaItem[1];\n if (moveToIndex === +index) {\n return moveFromIndex;\n }\n if (moveFromIndex <= reverseIndex && moveToIndex > reverseIndex) {\n reverseIndex++;\n } else if (moveFromIndex >= reverseIndex && moveToIndex < reverseIndex) {\n reverseIndex--;\n }\n } else if (deltaItem[2] === 0) {\n var deleteIndex = parseInt(deltaIndex.substr(1), 10);\n if (deleteIndex <= reverseIndex) {\n reverseIndex++;\n }\n } else if (deltaItem.length === 1 && deltaIndex <= reverseIndex) {\n reverseIndex--;\n }\n }\n }\n\n return reverseIndex;\n};\n\nvar collectChildrenReverseFilter = function collectChildrenReverseFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n var length = context.children.length;\n var child;\n var delta = {\n _t: 'a'\n };\n\n for (var index = 0; index < length; index++) {\n child = context.children[index];\n var name = child.newName;\n if (typeof name === 'undefined') {\n name = reverseArrayDeltaIndex(context.delta, child.childName, child.result);\n }\n if (delta[name] !== child.result) {\n delta[name] = child.result;\n }\n }\n context.setResult(delta).exit();\n};\ncollectChildrenReverseFilter.filterName = 'arraysCollectChildren';\n\nexports.diffFilter = diffFilter;\nexports.patchFilter = patchFilter;\nexports.collectChildrenPatchFilter = collectChildrenPatchFilter;\nexports.reverseFilter = reverseFilter;\nexports.collectChildrenReverseFilter = collectChildrenReverseFilter;\n","var diffFilter = function datesDiffFilter(context) {\n if (context.left instanceof Date) {\n if (context.right instanceof Date) {\n if (context.left.getTime() !== context.right.getTime()) {\n context.setResult([context.left, context.right]);\n } else {\n context.setResult(undefined);\n }\n } else {\n context.setResult([context.left, context.right]);\n }\n context.exit();\n } else if (context.right instanceof Date) {\n context.setResult([context.left, context.right]).exit();\n }\n};\ndiffFilter.filterName = 'dates';\n\nexports.diffFilter = diffFilter;\n","/* global diff_match_patch */\nvar TEXT_DIFF = 2;\nvar DEFAULT_MIN_LENGTH = 60;\nvar cachedDiffPatch = null;\n\nvar getDiffMatchPatch = function() {\n /*jshint camelcase: false */\n\n if (!cachedDiffPatch) {\n var instance;\n if (typeof diff_match_patch !== 'undefined') {\n // already loaded, probably a browser\n instance = typeof diff_match_patch === 'function' ?\n new diff_match_patch() : new diff_match_patch.diff_match_patch();\n } else if (typeof require === 'function') {\n try {\n var dmpModuleName = 'diff_match_patch_uncompressed';\n var dmp = require('../../public/external/' + dmpModuleName);\n instance = new dmp.diff_match_patch();\n } catch (err) {\n instance = null;\n }\n }\n if (!instance) {\n var error = new Error('text diff_match_patch library not found');\n error.diff_match_patch_not_found = true;\n throw error;\n }\n cachedDiffPatch = {\n diff: function(txt1, txt2) {\n return instance.patch_toText(instance.patch_make(txt1, txt2));\n },\n patch: function(txt1, patch) {\n var results = instance.patch_apply(instance.patch_fromText(patch), txt1);\n for (var i = 0; i < results[1].length; i++) {\n if (!results[1][i]) {\n var error = new Error('text patch failed');\n error.textPatchFailed = true;\n }\n }\n return results[0];\n }\n };\n }\n return cachedDiffPatch;\n};\n\nvar diffFilter = function textsDiffFilter(context) {\n if (context.leftType !== 'string') {\n return;\n }\n var minLength = (context.options && context.options.textDiff &&\n context.options.textDiff.minLength) || DEFAULT_MIN_LENGTH;\n if (context.left.length < minLength ||\n context.right.length < minLength) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n // large text, use a text-diff algorithm\n var diff = getDiffMatchPatch().diff;\n context.setResult([diff(context.left, context.right), 0, TEXT_DIFF]).exit();\n};\ndiffFilter.filterName = 'texts';\n\nvar patchFilter = function textsPatchFilter(context) {\n if (context.nested) {\n return;\n }\n if (context.delta[2] !== TEXT_DIFF) {\n return;\n }\n\n // text-diff, use a text-patch algorithm\n var patch = getDiffMatchPatch().patch;\n context.setResult(patch(context.left, context.delta[0])).exit();\n};\npatchFilter.filterName = 'texts';\n\nvar textDeltaReverse = function(delta) {\n var i, l, lines, line, lineTmp, header = null,\n headerRegex = /^@@ +\\-(\\d+),(\\d+) +\\+(\\d+),(\\d+) +@@$/,\n lineHeader, lineAdd, lineRemove;\n lines = delta.split('\\n');\n for (i = 0, l = lines.length; i < l; i++) {\n line = lines[i];\n var lineStart = line.slice(0, 1);\n if (lineStart === '@') {\n header = headerRegex.exec(line);\n lineHeader = i;\n lineAdd = null;\n lineRemove = null;\n\n // fix header\n lines[lineHeader] = '@@ -' + header[3] + ',' + header[4] + ' +' + header[1] + ',' + header[2] + ' @@';\n } else if (lineStart === '+') {\n lineAdd = i;\n lines[i] = '-' + lines[i].slice(1);\n if (lines[i - 1].slice(0, 1) === '+') {\n // swap lines to keep default order (-+)\n lineTmp = lines[i];\n lines[i] = lines[i - 1];\n lines[i - 1] = lineTmp;\n }\n } else if (lineStart === '-') {\n lineRemove = i;\n lines[i] = '+' + lines[i].slice(1);\n }\n }\n return lines.join('\\n');\n};\n\nvar reverseFilter = function textsReverseFilter(context) {\n if (context.nested) {\n return;\n }\n if (context.delta[2] !== TEXT_DIFF) {\n return;\n }\n\n // text-diff, use a text-diff algorithm\n context.setResult([textDeltaReverse(context.delta[0]), 0, TEXT_DIFF]).exit();\n};\nreverseFilter.filterName = 'texts';\n\nexports.diffFilter = diffFilter;\nexports.patchFilter = patchFilter;\nexports.reverseFilter = reverseFilter;\n","\nvar Pipe = require('../pipe').Pipe;\n\nvar Context = function Context(){\n};\n\nContext.prototype.setResult = function(result) {\n\tthis.result = result;\n\tthis.hasResult = true;\n\treturn this;\n};\n\nContext.prototype.exit = function() {\n\tthis.exiting = true;\n\treturn this;\n};\n\nContext.prototype.switchTo = function(next, pipe) {\n\tif (typeof next === 'string' || next instanceof Pipe) {\n\t\tthis.nextPipe = next;\n\t} else {\n\t\tthis.next = next;\n\t\tif (pipe) {\n\t\t\tthis.nextPipe = pipe;\n\t\t}\n\t}\n\treturn this;\n};\n\nContext.prototype.push = function(child, name) {\n\tchild.parent = this;\n\tif (typeof name !== 'undefined') {\n\t\tchild.childName = name;\n\t}\n\tchild.root = this.root || this;\n\tchild.options = child.options || this.options;\n\tif (!this.children) {\n\t\tthis.children = [child];\n\t\tthis.nextAfterChildren = this.next || null;\n\t\tthis.next = child;\n\t} else {\n\t\tthis.children[this.children.length - 1].next = child;\n\t\tthis.children.push(child);\n\t}\n\tchild.next = this;\n\treturn this;\n};\n\nexports.Context = Context;\n","/*\n\nLCS implementation that supports arrays or strings\n\nreference: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n\n*/\n\nvar defaultMatch = function(array1, array2, index1, index2) {\n return array1[index1] === array2[index2];\n};\n\nvar lengthMatrix = function(array1, array2, match, context) {\n var len1 = array1.length;\n var len2 = array2.length;\n var x, y;\n\n // initialize empty matrix of len1+1 x len2+1\n var matrix = [len1 + 1];\n for (x = 0; x < len1 + 1; x++) {\n matrix[x] = [len2 + 1];\n for (y = 0; y < len2 + 1; y++) {\n matrix[x][y] = 0;\n }\n }\n matrix.match = match;\n // save sequence lengths for each coordinate\n for (x = 1; x < len1 + 1; x++) {\n for (y = 1; y < len2 + 1; y++) {\n if (match(array1, array2, x - 1, y - 1, context)) {\n matrix[x][y] = matrix[x - 1][y - 1] + 1;\n } else {\n matrix[x][y] = Math.max(matrix[x - 1][y], matrix[x][y - 1]);\n }\n }\n }\n return matrix;\n};\n\nvar backtrack = function(matrix, array1, array2, index1, index2, context) {\n if (index1 === 0 || index2 === 0) {\n return {\n sequence: [],\n indices1: [],\n indices2: []\n };\n }\n\n if (matrix.match(array1, array2, index1 - 1, index2 - 1, context)) {\n var subsequence = backtrack(matrix, array1, array2, index1 - 1, index2 - 1, context);\n subsequence.sequence.push(array1[index1 - 1]);\n subsequence.indices1.push(index1 - 1);\n subsequence.indices2.push(index2 - 1);\n return subsequence;\n }\n\n if (matrix[index1][index2 - 1] > matrix[index1 - 1][index2]) {\n return backtrack(matrix, array1, array2, index1, index2 - 1, context);\n } else {\n return backtrack(matrix, array1, array2, index1 - 1, index2, context);\n }\n};\n\nvar get = function(array1, array2, match, context) {\n context = context || {};\n var matrix = lengthMatrix(array1, array2, match || defaultMatch, context);\n var result = backtrack(matrix, array1, array2, array1.length, array2.length, context);\n if (typeof array1 === 'string' && typeof array2 === 'string') {\n result.sequence = result.sequence.join('');\n }\n return result;\n};\n\nexports.get = get;\n"]} |