UNPKG

130 kBSource Map (JSON)View Raw
1{"version":3,"file":"jsondiffpatch.cjs.js","sources":["../src/processor.js","../src/pipe.js","../src/contexts/context.js","../src/clone.js","../src/contexts/diff.js","../src/contexts/patch.js","../src/contexts/reverse.js","../src/filters/trivial.js","../src/filters/nested.js","../src/filters/lcs.js","../src/filters/arrays.js","../src/filters/dates.js","../src/filters/texts.js","../src/diffpatcher.js","../src/formatters/base.js","../src/formatters/html.js","../src/formatters/annotated.js","../src/formatters/jsonpatch.js","../src/formatters/console.js","../src/date-reviver.js","../src/main.js"],"sourcesContent":["class Processor {\n constructor(options) {\n this.selfOptions = options || {};\n this.pipes = {};\n }\n\n options(options) {\n if (options) {\n this.selfOptions = options;\n }\n return this.selfOptions;\n }\n\n pipe(name, pipeArg) {\n let pipe = pipeArg;\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) {\n return pipe;\n }\n this.pipes[pipe.name] = pipe;\n }\n pipe.processor = this;\n return pipe;\n }\n\n process(input, pipe) {\n let context = input;\n context.options = this.options();\n let nextPipe = pipe || input.pipe || 'default';\n let lastPipe;\n let 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}\n\nexport default Processor;\n","class Pipe {\n constructor(name) {\n this.name = name;\n this.filters = [];\n }\n\n process(input) {\n if (!this.processor) {\n throw new Error('add this pipe to a processor before using it');\n }\n let debug = this.debug;\n let length = this.filters.length;\n let context = input;\n for (let index = 0; index < length; index++) {\n let 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\n log(msg) {\n console.log(`[jsondiffpatch] ${this.name} pipe, ${msg}`);\n }\n\n append(...args) {\n this.filters.push(...args);\n return this;\n }\n\n prepend(...args) {\n this.filters.unshift(...args);\n return this;\n }\n\n indexOf(filterName) {\n if (!filterName) {\n throw new Error('a filter name is required');\n }\n for (let index = 0; index < this.filters.length; index++) {\n let filter = this.filters[index];\n if (filter.filterName === filterName) {\n return index;\n }\n }\n throw new Error(`filter not found: ${filterName}`);\n }\n\n list() {\n let names = [];\n\n for (let filter of this.filters) {\n names.push(filter.filterName);\n }\n\n return names;\n }\n\n after(filterName) {\n let index = this.indexOf(filterName);\n let 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\n before(filterName) {\n let index = this.indexOf(filterName);\n let 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\n replace(filterName) {\n let index = this.indexOf(filterName);\n let 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);\n Array.prototype.splice.apply(this.filters, params);\n return this;\n }\n\n remove(filterName) {\n let index = this.indexOf(filterName);\n this.filters.splice(index, 1);\n return this;\n }\n\n clear() {\n this.filters.length = 0;\n return this;\n }\n\n shouldHaveResult(should) {\n if (should === false) {\n this.resultCheck = null;\n return;\n }\n if (this.resultCheck) {\n return;\n }\n let pipe = this;\n this.resultCheck = context => {\n if (!context.hasResult) {\n console.log(context);\n let error = new Error(`${pipe.name} failed`);\n error.noResult = true;\n throw error;\n }\n };\n return this;\n }\n}\n\nexport default Pipe;\n","import Pipe from '../pipe';\n\nexport default class Context {\n setResult(result) {\n this.result = result;\n this.hasResult = true;\n return this;\n }\n\n exit() {\n this.exiting = true;\n return this;\n }\n\n switchTo(next, pipe) {\n if (typeof next === 'string' || next instanceof Pipe) {\n this.nextPipe = next;\n } else {\n this.next = next;\n if (pipe) {\n this.nextPipe = pipe;\n }\n }\n return this;\n }\n\n push(child, name) {\n child.parent = this;\n if (typeof name !== 'undefined') {\n child.childName = name;\n }\n child.root = this.root || this;\n child.options = child.options || this.options;\n if (!this.children) {\n this.children = [child];\n this.nextAfterChildren = this.next || null;\n this.next = child;\n } else {\n this.children[this.children.length - 1].next = child;\n this.children.push(child);\n }\n child.next = this;\n return this;\n }\n}\n","const isArray =\n typeof Array.isArray === 'function' ? Array.isArray : a => a instanceof Array;\n\nfunction cloneRegExp(re) {\n let regexMatch = /^\\/(.*)\\/([gimyu]*)$/.exec(re.toString());\n return new RegExp(regexMatch[1], regexMatch[2]);\n}\n\nexport default function clone(arg) {\n if (typeof arg !== 'object') {\n return arg;\n }\n if (arg === null) {\n return null;\n }\n if (isArray(arg)) {\n return arg.map(clone);\n }\n if (arg instanceof Date) {\n return new Date(arg.getTime());\n }\n if (arg instanceof RegExp) {\n return cloneRegExp(arg);\n }\n let cloned = {};\n for (let name in arg) {\n if (Object.prototype.hasOwnProperty.call(arg, name)) {\n cloned[name] = clone(arg[name]);\n }\n }\n return cloned;\n}\n","import Context from './context';\nimport defaultClone from '../clone';\n\nclass DiffContext extends Context {\n constructor(left, right) {\n super();\n this.left = left;\n this.right = right;\n this.pipe = 'diff';\n }\n\n setResult(result) {\n if (this.options.cloneDiffValues && typeof result === 'object') {\n const clone =\n typeof this.options.cloneDiffValues === 'function'\n ? this.options.cloneDiffValues\n : defaultClone;\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}\n\nexport default DiffContext;\n","import Context from './context';\n\nclass PatchContext extends Context {\n constructor(left, delta) {\n super();\n this.left = left;\n this.delta = delta;\n this.pipe = 'patch';\n }\n}\n\nexport default PatchContext;\n","import Context from './context';\n\nclass ReverseContext extends Context {\n constructor(delta) {\n super();\n this.delta = delta;\n this.pipe = 'reverse';\n }\n}\n\nexport default ReverseContext;\n","const isArray =\n typeof Array.isArray === 'function'\n ? Array.isArray\n : function(a) {\n return a instanceof Array;\n };\n\nexport const 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 (\n typeof context.left === 'function' ||\n typeof context.right === 'function'\n ) {\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\n if (context.left instanceof RegExp) {\n if (context.right instanceof RegExp) {\n context\n .setResult([context.left.toString(), context.right.toString()])\n .exit();\n } else {\n context.setResult([context.left, context.right]).exit();\n }\n }\n};\ndiffFilter.filterName = 'trivial';\n\nexport const 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 if (context.left instanceof RegExp) {\n const regexArgs = /^\\/(.*)\\/([gimyu]+)$/.exec(context.delta[1]);\n if (regexArgs) {\n context.setResult(new RegExp(regexArgs[1], regexArgs[2])).exit();\n return;\n }\n }\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 }\n};\npatchFilter.filterName = 'trivial';\n\nexport const 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 }\n};\nreverseFilter.filterName = 'trivial';\n","import DiffContext from '../contexts/diff';\nimport PatchContext from '../contexts/patch';\nimport ReverseContext from '../contexts/reverse';\n\nexport function collectChildrenDiffFilter(context) {\n if (!context || !context.children) {\n return;\n }\n const length = context.children.length;\n let child;\n let result = context.result;\n for (let 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\nexport function objectsDiffFilter(context) {\n if (context.leftIsArray || context.leftType !== 'object') {\n return;\n }\n\n let name;\n let child;\n const 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\nexport const patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n let name;\n let 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\nexport const collectChildrenPatchFilter = function collectChildrenPatchFilter(\n context\n) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n let length = context.children.length;\n let child;\n for (let index = 0; index < length; index++) {\n child = context.children[index];\n if (\n Object.prototype.hasOwnProperty.call(context.left, child.childName) &&\n child.result === undefined\n ) {\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\nexport const reverseFilter = function nestedReverseFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n let name;\n let 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\nexport function collectChildrenReverseFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t) {\n return;\n }\n let length = context.children.length;\n let child;\n let delta = {};\n for (let 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","/*\n\nLCS implementation that supports arrays or strings\n\nreference: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n\n*/\n\nconst defaultMatch = function(array1, array2, index1, index2) {\n return array1[index1] === array2[index2];\n};\n\nconst lengthMatrix = function(array1, array2, match, context) {\n const len1 = array1.length;\n const len2 = array2.length;\n let x, y;\n\n // initialize empty matrix of len1+1 x len2+1\n let 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\nconst 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 const subsequence = backtrack(\n matrix,\n array1,\n array2,\n index1 - 1,\n index2 - 1,\n context\n );\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\nconst get = function(array1, array2, match, context) {\n const innerContext = context || {};\n const matrix = lengthMatrix(\n array1,\n array2,\n match || defaultMatch,\n innerContext\n );\n const result = backtrack(\n matrix,\n array1,\n array2,\n array1.length,\n array2.length,\n innerContext\n );\n if (typeof array1 === 'string' && typeof array2 === 'string') {\n result.sequence = result.sequence.join('');\n }\n return result;\n};\n\nexport default {\n get: get,\n};\n","import DiffContext from '../contexts/diff';\nimport PatchContext from '../contexts/patch';\nimport ReverseContext from '../contexts/reverse';\n\nimport lcs from './lcs';\n\nconst ARRAY_MOVE = 3;\n\nconst isArray =\n typeof Array.isArray === 'function' ? Array.isArray : a => a instanceof Array;\n\nconst arrayIndexOf =\n typeof Array.prototype.indexOf === 'function'\n ? (array, item) => array.indexOf(item)\n : (array, item) => {\n let length = array.length;\n for (let 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 (let index1 = 0; index1 < len1; index1++) {\n let val1 = array1[index1];\n for (let index2 = 0; index2 < len2; index2++) {\n let val2 = array2[index2];\n if (index1 !== index2 && val1 === val2) {\n return true;\n }\n }\n }\n}\n\nfunction matchItems(array1, array2, index1, index2, context) {\n let value1 = array1[index1];\n let value2 = array2[index2];\n if (value1 === value2) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object') {\n return false;\n }\n let 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 let hash1;\n let 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\nexport const diffFilter = function arraysDiffFilter(context) {\n if (!context.leftIsArray) {\n return;\n }\n\n let matchContext = {\n objectHash: context.options && context.options.objectHash,\n matchByPosition: context.options && context.options.matchByPosition,\n };\n let commonHead = 0;\n let commonTail = 0;\n let index;\n let index1;\n let index2;\n let array1 = context.left;\n let array2 = context.right;\n let len1 = array1.length;\n let len2 = array2.length;\n\n let child;\n\n if (\n len1 > 0 &&\n len2 > 0 &&\n !matchContext.objectHash &&\n typeof matchContext.matchByPosition !== 'boolean'\n ) {\n matchContext.matchByPosition = !arraysHaveMatchByRef(\n array1,\n array2,\n len1,\n len2\n );\n }\n\n // separate common head\n while (\n commonHead < len1 &&\n commonHead < len2 &&\n matchItems(array1, array2, commonHead, commonHead, matchContext)\n ) {\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 (\n commonTail + commonHead < len1 &&\n commonTail + commonHead < len2 &&\n matchItems(\n array1,\n array2,\n len1 - 1 - commonTail,\n len2 - 1 - commonTail,\n matchContext\n )\n ) {\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 let 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 let trimmed1 = array1.slice(commonHead, len1 - commonTail);\n let trimmed2 = array2.slice(commonHead, len2 - commonTail);\n let seq = lcs.get(trimmed1, trimmed2, matchItems, matchContext);\n let 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 let detectMove = true;\n if (\n context.options &&\n context.options.arrays &&\n context.options.arrays.detectMove === false\n ) {\n detectMove = false;\n }\n let includeValueOnMove = false;\n if (\n context.options &&\n context.options.arrays &&\n context.options.arrays.includeValueOnMove\n ) {\n includeValueOnMove = true;\n }\n\n let removedItemsLength = removedItems.length;\n for (index = commonHead; index < len2 - commonTail; index++) {\n let 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 let isMove = false;\n if (detectMove && removedItemsLength > 0) {\n for (\n let removeItemIndex1 = 0;\n removeItemIndex1 < removedItemsLength;\n removeItemIndex1++\n ) {\n index1 = removedItems[removeItemIndex1];\n if (\n matchItems(\n trimmed1,\n trimmed2,\n index1 - commonHead,\n index - commonHead,\n matchContext\n )\n ) {\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(\n context.left[index1],\n context.right[index2]\n );\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};\ndiffFilter.filterName = 'arrays';\n\nlet compare = {\n numerically(a, b) {\n return a - b;\n },\n numericallyBy(name) {\n return (a, b) => a[name] - b[name];\n },\n};\n\nexport const patchFilter = function nestedPatchFilter(context) {\n if (!context.nested) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n let index;\n let index1;\n\n let delta = context.delta;\n let array = context.left;\n\n // first, separate removals, insertions and modifications\n let toRemove = [];\n let toInsert = [];\n let 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(\n `only removal or move can be applied at original array indices,` +\n ` invalid diff type: ${delta[index][2]}`\n );\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 let indexDiff = delta[`_${index1}`];\n let 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 let toInsertLength = toInsert.length;\n for (index = 0; index < toInsertLength; index++) {\n let insertion = toInsert[index];\n array.splice(insertion.index, 0, insertion.value);\n }\n\n // apply modifications\n let toModifyLength = toModify.length;\n let child;\n if (toModifyLength > 0) {\n for (index = 0; index < toModifyLength; index++) {\n let modification = toModify[index];\n child = new PatchContext(\n context.left[modification.index],\n modification.delta\n );\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\nexport const collectChildrenPatchFilter = function collectChildrenPatchFilter(\n context\n) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n let length = context.children.length;\n let child;\n for (let 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\nexport const reverseFilter = function arraysReverseFilter(context) {\n if (!context.nested) {\n if (context.delta[2] === ARRAY_MOVE) {\n context.newName = `_${context.delta[1]}`;\n context\n .setResult([\n context.delta[0],\n parseInt(context.childName.substr(1), 10),\n ARRAY_MOVE,\n ])\n .exit();\n }\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n let name;\n let 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\nlet reverseArrayDeltaIndex = (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 let reverseIndex = +index;\n for (let deltaIndex in delta) {\n let deltaItem = delta[deltaIndex];\n if (isArray(deltaItem)) {\n if (deltaItem[2] === ARRAY_MOVE) {\n let moveFromIndex = parseInt(deltaIndex.substr(1), 10);\n let moveToIndex = deltaItem[1];\n if (moveToIndex === +index) {\n return moveFromIndex;\n }\n if (moveFromIndex <= reverseIndex && moveToIndex > reverseIndex) {\n reverseIndex++;\n } else if (\n moveFromIndex >= reverseIndex &&\n moveToIndex < reverseIndex\n ) {\n reverseIndex--;\n }\n } else if (deltaItem[2] === 0) {\n let 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\nexport function collectChildrenReverseFilter(context) {\n if (!context || !context.children) {\n return;\n }\n if (context.delta._t !== 'a') {\n return;\n }\n let length = context.children.length;\n let child;\n let delta = {\n _t: 'a',\n };\n\n for (let index = 0; index < length; index++) {\n child = context.children[index];\n let name = child.newName;\n if (typeof name === 'undefined') {\n name = reverseArrayDeltaIndex(\n context.delta,\n child.childName,\n child.result\n );\n }\n if (delta[name] !== child.result) {\n delta[name] = child.result;\n }\n }\n context.setResult(delta).exit();\n}\ncollectChildrenReverseFilter.filterName = 'arraysCollectChildren';\n","export const 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","/* global diff_match_patch */\nimport dmp from 'diff-match-patch';\n\nlet TEXT_DIFF = 2;\nlet DEFAULT_MIN_LENGTH = 60;\nlet cachedDiffPatch = null;\n\nlet getDiffMatchPatch = function(required) {\n /* jshint camelcase: false */\n\n if (!cachedDiffPatch) {\n let instance;\n /* eslint-disable camelcase, new-cap */\n if (typeof diff_match_patch !== 'undefined') {\n // already loaded, probably a browser\n instance =\n typeof diff_match_patch === 'function'\n ? new diff_match_patch()\n : new diff_match_patch.diff_match_patch();\n } else if (dmp) {\n try {\n instance = dmp && new dmp();\n } catch (err) {\n instance = null;\n }\n }\n /* eslint-enable camelcase, new-cap */\n if (!instance) {\n if (!required) {\n return null;\n }\n let error = new Error('text diff_match_patch library not found');\n // eslint-disable-next-line camelcase\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 let results = instance.patch_apply(\n instance.patch_fromText(patch),\n txt1\n );\n for (let i = 0; i < results[1].length; i++) {\n if (!results[1][i]) {\n let error = new Error('text patch failed');\n error.textPatchFailed = true;\n }\n }\n return results[0];\n },\n };\n }\n return cachedDiffPatch;\n};\n\nexport const diffFilter = function textsDiffFilter(context) {\n if (context.leftType !== 'string') {\n return;\n }\n let minLength =\n (context.options &&\n context.options.textDiff &&\n context.options.textDiff.minLength) ||\n DEFAULT_MIN_LENGTH;\n if (context.left.length < minLength || context.right.length < minLength) {\n context.setResult([context.left, context.right]).exit();\n return;\n }\n // large text, try to use a text-diff algorithm\n let diffMatchPatch = getDiffMatchPatch();\n if (!diffMatchPatch) {\n // diff-match-patch library not available,\n // fallback to regular string replace\n context.setResult([context.left, context.right]).exit();\n return;\n }\n let diff = diffMatchPatch.diff;\n context.setResult([diff(context.left, context.right), 0, TEXT_DIFF]).exit();\n};\ndiffFilter.filterName = 'texts';\n\nexport const 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 const patch = getDiffMatchPatch(true).patch;\n context.setResult(patch(context.left, context.delta[0])).exit();\n};\npatchFilter.filterName = 'texts';\n\nconst textDeltaReverse = function(delta) {\n let i;\n let l;\n let lines;\n let line;\n let lineTmp;\n let header = null;\n const headerRegex = /^@@ +-(\\d+),(\\d+) +\\+(\\d+),(\\d+) +@@$/;\n let lineHeader;\n lines = delta.split('\\n');\n for (i = 0, l = lines.length; i < l; i++) {\n line = lines[i];\n let lineStart = line.slice(0, 1);\n if (lineStart === '@') {\n header = headerRegex.exec(line);\n lineHeader = i;\n\n // fix header\n lines[lineHeader] =\n '@@ -' +\n header[3] +\n ',' +\n header[4] +\n ' +' +\n header[1] +\n ',' +\n header[2] +\n ' @@';\n } else if (lineStart === '+') {\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 lines[i] = '+' + lines[i].slice(1);\n }\n }\n return lines.join('\\n');\n};\n\nexport const 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","import Processor from './processor';\nimport Pipe from './pipe';\nimport DiffContext from './contexts/diff';\nimport PatchContext from './contexts/patch';\nimport ReverseContext from './contexts/reverse';\nimport clone from './clone';\n\nimport * as trivial from './filters/trivial';\nimport * as nested from './filters/nested';\nimport * as arrays from './filters/arrays';\nimport * as dates from './filters/dates';\nimport * as texts from './filters/texts';\n\nclass DiffPatcher {\n constructor(options) {\n this.processor = new Processor(options);\n this.processor.pipe(\n new Pipe('diff')\n .append(\n nested.collectChildrenDiffFilter,\n trivial.diffFilter,\n dates.diffFilter,\n texts.diffFilter,\n nested.objectsDiffFilter,\n arrays.diffFilter\n )\n .shouldHaveResult()\n );\n this.processor.pipe(\n new Pipe('patch')\n .append(\n nested.collectChildrenPatchFilter,\n arrays.collectChildrenPatchFilter,\n trivial.patchFilter,\n texts.patchFilter,\n nested.patchFilter,\n arrays.patchFilter\n )\n .shouldHaveResult()\n );\n this.processor.pipe(\n new Pipe('reverse')\n .append(\n nested.collectChildrenReverseFilter,\n arrays.collectChildrenReverseFilter,\n trivial.reverseFilter,\n texts.reverseFilter,\n nested.reverseFilter,\n arrays.reverseFilter\n )\n .shouldHaveResult()\n );\n }\n\n options(...args) {\n return this.processor.options(...args);\n }\n\n diff(left, right) {\n return this.processor.process(new DiffContext(left, right));\n }\n\n patch(left, delta) {\n return this.processor.process(new PatchContext(left, delta));\n }\n\n reverse(delta) {\n return this.processor.process(new ReverseContext(delta));\n }\n\n unpatch(right, delta) {\n return this.patch(right, this.reverse(delta));\n }\n\n clone(value) {\n return clone(value);\n }\n}\n\nexport default DiffPatcher;\n","const isArray =\n typeof Array.isArray === 'function' ? Array.isArray : a => a instanceof Array;\n\nconst getObjectKeys =\n typeof Object.keys === 'function'\n ? obj => Object.keys(obj)\n : obj => {\n const names = [];\n for (let property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n names.push(property);\n }\n }\n return names;\n };\n\nconst trimUnderscore = str => {\n if (str.substr(0, 1) === '_') {\n return str.slice(1);\n }\n return str;\n};\n\nconst arrayKeyToSortNumber = key => {\n if (key === '_t') {\n return -1;\n } else {\n if (key.substr(0, 1) === '_') {\n return parseInt(key.slice(1), 10);\n } else {\n return parseInt(key, 10) + 0.1;\n }\n }\n};\n\nconst arrayKeyComparer = (key1, key2) =>\n arrayKeyToSortNumber(key1) - arrayKeyToSortNumber(key2);\n\nclass BaseFormatter {\n format(delta, left) {\n const context = {};\n this.prepareContext(context);\n this.recurse(context, delta, left);\n return this.finalize(context);\n }\n\n prepareContext(context) {\n context.buffer = [];\n context.out = function(...args) {\n this.buffer.push(...args);\n };\n }\n\n typeFormattterNotFound(context, deltaType) {\n throw new Error(`cannot format delta type: ${deltaType}`);\n }\n\n typeFormattterErrorFormatter(context, err) {\n return err.toString();\n }\n\n finalize({ buffer }) {\n if (isArray(buffer)) {\n return buffer.join('');\n }\n }\n\n recurse(context, delta, left, key, leftKey, movedFrom, isLast) {\n const useMoveOriginHere = delta && movedFrom;\n const leftValue = useMoveOriginHere ? movedFrom.value : left;\n\n if (typeof delta === 'undefined' && typeof key === 'undefined') {\n return undefined;\n }\n\n const type = this.getDeltaType(delta, movedFrom);\n const nodeType =\n type === 'node' ? (delta._t === 'a' ? 'array' : 'object') : '';\n\n if (typeof key !== 'undefined') {\n this.nodeBegin(context, key, leftKey, type, nodeType, isLast);\n } else {\n this.rootBegin(context, type, nodeType);\n }\n\n let typeFormattter;\n try {\n typeFormattter =\n this[`format_${type}`] || this.typeFormattterNotFound(context, type);\n typeFormattter.call(\n this,\n context,\n delta,\n leftValue,\n key,\n leftKey,\n movedFrom\n );\n } catch (err) {\n this.typeFormattterErrorFormatter(\n context,\n err,\n delta,\n leftValue,\n key,\n leftKey,\n movedFrom\n );\n if (typeof console !== 'undefined' && console.error) {\n console.error(err.stack);\n }\n }\n\n if (typeof key !== 'undefined') {\n this.nodeEnd(context, key, leftKey, type, nodeType, isLast);\n } else {\n this.rootEnd(context, type, nodeType);\n }\n }\n\n formatDeltaChildren(context, delta, left) {\n const self = this;\n this.forEachDeltaKey(delta, left, (key, leftKey, movedFrom, isLast) => {\n self.recurse(\n context,\n delta[key],\n left ? left[leftKey] : undefined,\n key,\n leftKey,\n movedFrom,\n isLast\n );\n });\n }\n\n forEachDeltaKey(delta, left, fn) {\n const keys = getObjectKeys(delta);\n const arrayKeys = delta._t === 'a';\n const moveDestinations = {};\n let name;\n if (typeof left !== 'undefined') {\n for (name in left) {\n if (Object.prototype.hasOwnProperty.call(left, name)) {\n if (\n typeof delta[name] === 'undefined' &&\n (!arrayKeys || typeof delta[`_${name}`] === 'undefined')\n ) {\n keys.push(name);\n }\n }\n }\n }\n // look for move destinations\n for (name in delta) {\n if (Object.prototype.hasOwnProperty.call(delta, name)) {\n const value = delta[name];\n if (isArray(value) && value[2] === 3) {\n moveDestinations[value[1].toString()] = {\n key: name,\n value: left && left[parseInt(name.substr(1))],\n };\n if (this.includeMoveDestinations !== false) {\n if (\n typeof left === 'undefined' &&\n typeof delta[value[1]] === 'undefined'\n ) {\n keys.push(value[1].toString());\n }\n }\n }\n }\n }\n if (arrayKeys) {\n keys.sort(arrayKeyComparer);\n } else {\n keys.sort();\n }\n for (let index = 0, length = keys.length; index < length; index++) {\n const key = keys[index];\n if (arrayKeys && key === '_t') {\n continue;\n }\n const leftKey = arrayKeys\n ? typeof key === 'number' ? key : parseInt(trimUnderscore(key), 10)\n : key;\n const isLast = index === length - 1;\n fn(key, leftKey, moveDestinations[leftKey], isLast);\n }\n }\n\n getDeltaType(delta, movedFrom) {\n if (typeof delta === 'undefined') {\n if (typeof movedFrom !== 'undefined') {\n return 'movedestination';\n }\n return 'unchanged';\n }\n if (isArray(delta)) {\n if (delta.length === 1) {\n return 'added';\n }\n if (delta.length === 2) {\n return 'modified';\n }\n if (delta.length === 3 && delta[2] === 0) {\n return 'deleted';\n }\n if (delta.length === 3 && delta[2] === 2) {\n return 'textdiff';\n }\n if (delta.length === 3 && delta[2] === 3) {\n return 'moved';\n }\n } else if (typeof delta === 'object') {\n return 'node';\n }\n return 'unknown';\n }\n\n parseTextDiff(value) {\n const output = [];\n const lines = value.split('\\n@@ ');\n for (let i = 0, l = lines.length; i < l; i++) {\n const line = lines[i];\n const lineOutput = {\n pieces: [],\n };\n const location = /^(?:@@ )?[-+]?(\\d+),(\\d+)/.exec(line).slice(1);\n lineOutput.location = {\n line: location[0],\n chr: location[1],\n };\n const pieces = line.split('\\n').slice(1);\n for (\n let pieceIndex = 0, piecesLength = pieces.length;\n pieceIndex < piecesLength;\n pieceIndex++\n ) {\n const piece = pieces[pieceIndex];\n if (!piece.length) {\n continue;\n }\n const pieceOutput = {\n type: 'context',\n };\n if (piece.substr(0, 1) === '+') {\n pieceOutput.type = 'added';\n } else if (piece.substr(0, 1) === '-') {\n pieceOutput.type = 'deleted';\n }\n pieceOutput.text = piece.slice(1);\n lineOutput.pieces.push(pieceOutput);\n }\n output.push(lineOutput);\n }\n return output;\n }\n}\n\nexport default BaseFormatter;\n","import BaseFormatter from './base';\n\nclass HtmlFormatter extends BaseFormatter {\n typeFormattterErrorFormatter(context, err) {\n context.out(`<pre class=\"jsondiffpatch-error\">${err}</pre>`);\n }\n\n formatValue(context, value) {\n context.out(`<pre>${htmlEscape(JSON.stringify(value, null, 2))}</pre>`);\n }\n\n formatTextDiffString(context, value) {\n let lines = this.parseTextDiff(value);\n context.out('<ul class=\"jsondiffpatch-textdiff\">');\n for (let i = 0, l = lines.length; i < l; i++) {\n let line = lines[i];\n context.out(\n `<li><div class=\"jsondiffpatch-textdiff-location\">` +\n `<span class=\"jsondiffpatch-textdiff-line-number\">${\n line.location.line\n }</span><span class=\"jsondiffpatch-textdiff-char\">${\n line.location.chr\n }</span></div><div class=\"jsondiffpatch-textdiff-line\">`\n );\n let pieces = line.pieces;\n for (\n let pieceIndex = 0, piecesLength = pieces.length;\n pieceIndex < piecesLength;\n pieceIndex++\n ) {\n /* global decodeURI */\n let piece = pieces[pieceIndex];\n context.out(\n `<span class=\"jsondiffpatch-textdiff-${piece.type}\">${htmlEscape(\n decodeURI(piece.text)\n )}</span>`\n );\n }\n context.out('</div></li>');\n }\n context.out('</ul>');\n }\n\n rootBegin(context, type, nodeType) {\n let nodeClass = `jsondiffpatch-${type}${\n nodeType ? ` jsondiffpatch-child-node-type-${nodeType}` : ''\n }`;\n context.out(`<div class=\"jsondiffpatch-delta ${nodeClass}\">`);\n }\n\n rootEnd(context) {\n context.out(\n `</div>${\n context.hasArrows\n ? `<script type=\"text/javascript\">setTimeout(` +\n `${adjustArrows.toString()},10);</script>`\n : ''\n }`\n );\n }\n\n nodeBegin(context, key, leftKey, type, nodeType) {\n let nodeClass = `jsondiffpatch-${type}${\n nodeType ? ` jsondiffpatch-child-node-type-${nodeType}` : ''\n }`;\n context.out(\n `<li class=\"${nodeClass}\" data-key=\"${leftKey}\">` +\n `<div class=\"jsondiffpatch-property-name\">${leftKey}</div>`\n );\n }\n\n nodeEnd(context) {\n context.out('</li>');\n }\n\n /* jshint camelcase: false */\n /* eslint-disable camelcase */\n\n format_unchanged(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, left);\n context.out('</div>');\n }\n\n format_movedestination(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, left);\n context.out('</div>');\n }\n\n format_node(context, delta, left) {\n // recurse\n let nodeType = delta._t === 'a' ? 'array' : 'object';\n context.out(\n `<ul class=\"jsondiffpatch-node jsondiffpatch-node-type-${nodeType}\">`\n );\n this.formatDeltaChildren(context, delta, left);\n context.out('</ul>');\n }\n\n format_added(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div>');\n }\n\n format_modified(context, delta) {\n context.out('<div class=\"jsondiffpatch-value jsondiffpatch-left-value\">');\n this.formatValue(context, delta[0]);\n context.out(\n '</div>' + '<div class=\"jsondiffpatch-value jsondiffpatch-right-value\">'\n );\n this.formatValue(context, delta[1]);\n context.out('</div>');\n }\n\n format_deleted(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out('</div>');\n }\n\n format_moved(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatValue(context, delta[0]);\n context.out(\n `</div><div class=\"jsondiffpatch-moved-destination\">${delta[1]}</div>`\n );\n\n // draw an SVG arrow from here to move destination\n context.out(\n /* jshint multistr: true */\n `<div class=\"jsondiffpatch-arrow\" ` +\n `style=\"position: relative; left: -34px;\">\n <svg width=\"30\" height=\"60\" ` +\n `style=\"position: absolute; display: none;\">\n <defs>\n <marker id=\"markerArrow\" markerWidth=\"8\" markerHeight=\"8\"\n refx=\"2\" refy=\"4\"\n orient=\"auto\" markerUnits=\"userSpaceOnUse\">\n <path d=\"M1,1 L1,7 L7,4 L1,1\" style=\"fill: #339;\" />\n </marker>\n </defs>\n <path d=\"M30,0 Q-10,25 26,50\"\n style=\"stroke: #88f; stroke-width: 2px; fill: none; ` +\n `stroke-opacity: 0.5; marker-end: url(#markerArrow);\"\n ></path>\n </svg>\n </div>`\n );\n context.hasArrows = true;\n }\n\n format_textdiff(context, delta) {\n context.out('<div class=\"jsondiffpatch-value\">');\n this.formatTextDiffString(context, delta[0]);\n context.out('</div>');\n }\n}\n\nfunction htmlEscape(text) {\n let html = text;\n let replacements = [\n [/&/g, '&amp;'],\n [/</g, '&lt;'],\n [/>/g, '&gt;'],\n [/'/g, '&apos;'],\n [/\"/g, '&quot;'],\n ];\n for (let i = 0; i < replacements.length; i++) {\n html = html.replace(replacements[i][0], replacements[i][1]);\n }\n return html;\n}\n\nlet adjustArrows = function jsondiffpatchHtmlFormatterAdjustArrows(nodeArg) {\n const node = nodeArg || document;\n let getElementText = ({ textContent, innerText }) => textContent || innerText;\n let eachByQuery = (el, query, fn) => {\n let elems = el.querySelectorAll(query);\n for (let i = 0, l = elems.length; i < l; i++) {\n fn(elems[i]);\n }\n };\n let eachChildren = ({ children }, fn) => {\n for (let i = 0, l = children.length; i < l; i++) {\n fn(children[i], i);\n }\n };\n eachByQuery(\n node,\n '.jsondiffpatch-arrow',\n ({ parentNode, children, style }) => {\n let arrowParent = parentNode;\n let svg = children[0];\n let path = svg.children[1];\n svg.style.display = 'none';\n let destination = getElementText(\n arrowParent.querySelector('.jsondiffpatch-moved-destination')\n );\n let container = arrowParent.parentNode;\n let destinationElem;\n eachChildren(container, child => {\n if (child.getAttribute('data-key') === destination) {\n destinationElem = child;\n }\n });\n if (!destinationElem) {\n return;\n }\n try {\n let distance = destinationElem.offsetTop - arrowParent.offsetTop;\n svg.setAttribute('height', Math.abs(distance) + 6);\n style.top = `${-8 + (distance > 0 ? 0 : distance)}px`;\n let curve =\n distance > 0\n ? `M30,0 Q-10,${Math.round(distance / 2)} 26,${distance - 4}`\n : `M30,${-distance} Q-10,${Math.round(-distance / 2)} 26,4`;\n path.setAttribute('d', curve);\n svg.style.display = '';\n } catch (err) {}\n }\n );\n};\n\n/* jshint camelcase: true */\n/* eslint-enable camelcase */\n\nexport const showUnchanged = (show, node, delay) => {\n let el = node || document.body;\n let prefix = 'jsondiffpatch-unchanged-';\n let classes = {\n showing: `${prefix}showing`,\n hiding: `${prefix}hiding`,\n visible: `${prefix}visible`,\n hidden: `${prefix}hidden`,\n };\n let list = el.classList;\n if (!list) {\n return;\n }\n if (!delay) {\n list.remove(classes.showing);\n list.remove(classes.hiding);\n list.remove(classes.visible);\n list.remove(classes.hidden);\n if (show === false) {\n list.add(classes.hidden);\n }\n return;\n }\n if (show === false) {\n list.remove(classes.showing);\n list.add(classes.visible);\n setTimeout(() => {\n list.add(classes.hiding);\n }, 10);\n } else {\n list.remove(classes.hiding);\n list.add(classes.showing);\n list.remove(classes.hidden);\n }\n let intervalId = setInterval(() => {\n adjustArrows(el);\n }, 100);\n setTimeout(() => {\n list.remove(classes.showing);\n list.remove(classes.hiding);\n if (show === false) {\n list.add(classes.hidden);\n list.remove(classes.visible);\n } else {\n list.add(classes.visible);\n list.remove(classes.hidden);\n }\n setTimeout(() => {\n list.remove(classes.visible);\n clearInterval(intervalId);\n }, delay + 400);\n }, delay);\n};\n\nexport const hideUnchanged = (node, delay) => showUnchanged(false, node, delay);\n\nexport default HtmlFormatter;\n\nlet defaultInstance;\n\nexport function format(delta, left) {\n if (!defaultInstance) {\n defaultInstance = new HtmlFormatter();\n }\n return defaultInstance.format(delta, left);\n}\n","import BaseFormatter from './base';\n\nclass AnnotatedFormatter extends BaseFormatter {\n constructor() {\n super();\n this.includeMoveDestinations = false;\n }\n\n prepareContext(context) {\n super.prepareContext(context);\n context.indent = function(levels) {\n this.indentLevel =\n (this.indentLevel || 0) + (typeof levels === 'undefined' ? 1 : levels);\n this.indentPad = new Array(this.indentLevel + 1).join('&nbsp;&nbsp;');\n };\n context.row = (json, htmlNote) => {\n context.out(\n '<tr><td style=\"white-space: nowrap;\">' +\n '<pre class=\"jsondiffpatch-annotated-indent\"' +\n ' style=\"display: inline-block\">'\n );\n context.out(context.indentPad);\n context.out('</pre><pre style=\"display: inline-block\">');\n context.out(json);\n context.out('</pre></td><td class=\"jsondiffpatch-delta-note\"><div>');\n context.out(htmlNote);\n context.out('</div></td></tr>');\n };\n }\n\n typeFormattterErrorFormatter(context, err) {\n context.row('', `<pre class=\"jsondiffpatch-error\">${err}</pre>`);\n }\n\n formatTextDiffString(context, value) {\n const lines = this.parseTextDiff(value);\n context.out('<ul class=\"jsondiffpatch-textdiff\">');\n for (let i = 0, l = lines.length; i < l; i++) {\n const line = lines[i];\n context.out(\n `<li><div class=\"jsondiffpatch-textdiff-location\">` +\n `<span class=\"jsondiffpatch-textdiff-line-number\">${\n line.location.line\n }</span><span class=\"jsondiffpatch-textdiff-char\">${\n line.location.chr\n }</span></div><div class=\"jsondiffpatch-textdiff-line\">`\n );\n const pieces = line.pieces;\n for (\n let pieceIndex = 0, piecesLength = pieces.length;\n pieceIndex < piecesLength;\n pieceIndex++\n ) {\n const piece = pieces[pieceIndex];\n context.out(\n `<span class=\"jsondiffpatch-textdiff-${piece.type}\">${\n piece.text\n }</span>`\n );\n }\n context.out('</div></li>');\n }\n context.out('</ul>');\n }\n\n rootBegin(context, type, nodeType) {\n context.out('<table class=\"jsondiffpatch-annotated-delta\">');\n if (type === 'node') {\n context.row('{');\n context.indent();\n }\n if (nodeType === 'array') {\n context.row(\n '\"_t\": \"a\",',\n 'Array delta (member names indicate array indices)'\n );\n }\n }\n\n rootEnd(context, type) {\n if (type === 'node') {\n context.indent(-1);\n context.row('}');\n }\n context.out('</table>');\n }\n\n nodeBegin(context, key, leftKey, type, nodeType) {\n context.row(`&quot;${key}&quot;: {`);\n if (type === 'node') {\n context.indent();\n }\n if (nodeType === 'array') {\n context.row(\n '\"_t\": \"a\",',\n 'Array delta (member names indicate array indices)'\n );\n }\n }\n\n nodeEnd(context, key, leftKey, type, nodeType, isLast) {\n if (type === 'node') {\n context.indent(-1);\n }\n context.row(`}${isLast ? '' : ','}`);\n }\n\n /* jshint camelcase: false */\n\n /* eslint-disable camelcase */\n format_unchanged() {}\n\n format_movedestination() {}\n\n format_node(context, delta, left) {\n // recurse\n this.formatDeltaChildren(context, delta, left);\n }\n}\n\n/* eslint-enable camelcase */\n\nconst wrapPropertyName = name =>\n `<pre style=\"display:inline-block\">&quot;${name}&quot;</pre>`;\n\nconst deltaAnnotations = {\n added(delta, left, key, leftKey) {\n const formatLegend = ' <pre>([newValue])</pre>';\n if (typeof leftKey === 'undefined') {\n return `new value${formatLegend}`;\n }\n if (typeof leftKey === 'number') {\n return `insert at index ${leftKey}${formatLegend}`;\n }\n return `add property ${wrapPropertyName(leftKey)}${formatLegend}`;\n },\n modified(delta, left, key, leftKey) {\n const formatLegend = ' <pre>([previousValue, newValue])</pre>';\n if (typeof leftKey === 'undefined') {\n return `modify value${formatLegend}`;\n }\n if (typeof leftKey === 'number') {\n return `modify at index ${leftKey}${formatLegend}`;\n }\n return `modify property ${wrapPropertyName(leftKey)}${formatLegend}`;\n },\n deleted(delta, left, key, leftKey) {\n const formatLegend = ' <pre>([previousValue, 0, 0])</pre>';\n if (typeof leftKey === 'undefined') {\n return `delete value${formatLegend}`;\n }\n if (typeof leftKey === 'number') {\n return `remove index ${leftKey}${formatLegend}`;\n }\n return `delete property ${wrapPropertyName(leftKey)}${formatLegend}`;\n },\n moved(delta, left, key, leftKey) {\n return (\n `move from <span title=\"(position to remove at original state)\">` +\n `index ${leftKey}</span> to <span title=\"(position to insert at final` +\n ` state)\">index ${delta[1]}</span>`\n );\n },\n textdiff(delta, left, key, leftKey) {\n const location =\n typeof leftKey === 'undefined'\n ? ''\n : typeof leftKey === 'number'\n ? ` at index ${leftKey}`\n : ` at property ${wrapPropertyName(leftKey)}`;\n return (\n `text diff${location}, format is <a href=\"https://code.google.com/` +\n `p/google-diff-match-patch/wiki/Unidiff\">a variation of Unidiff</a>`\n );\n },\n};\n\nconst formatAnyChange = function(context, delta) {\n const deltaType = this.getDeltaType(delta);\n const annotator = deltaAnnotations[deltaType];\n const htmlNote =\n annotator &&\n annotator.apply(annotator, Array.prototype.slice.call(arguments, 1));\n let json = JSON.stringify(delta, null, 2);\n if (deltaType === 'textdiff') {\n // split text diffs lines\n json = json.split('\\\\n').join('\\\\n\"+\\n \"');\n }\n context.indent();\n context.row(json, htmlNote);\n context.indent(-1);\n};\n\n/* eslint-disable camelcase */\nAnnotatedFormatter.prototype.format_added = formatAnyChange;\nAnnotatedFormatter.prototype.format_modified = formatAnyChange;\nAnnotatedFormatter.prototype.format_deleted = formatAnyChange;\nAnnotatedFormatter.prototype.format_moved = formatAnyChange;\nAnnotatedFormatter.prototype.format_textdiff = formatAnyChange;\n/* eslint-enable camelcase */\n\n/* jshint camelcase: true */\n\nexport default AnnotatedFormatter;\n\nlet defaultInstance;\n\nexport function format(delta, left) {\n if (!defaultInstance) {\n defaultInstance = new AnnotatedFormatter();\n }\n return defaultInstance.format(delta, left);\n}\n","import BaseFormatter from './base';\n\nconst OPERATIONS = {\n add: 'add',\n remove: 'remove',\n replace: 'replace',\n move: 'move',\n};\n\nclass JSONFormatter extends BaseFormatter {\n constructor() {\n super();\n this.includeMoveDestinations = true;\n }\n\n prepareContext(context) {\n super.prepareContext(context);\n context.result = [];\n context.path = [];\n context.pushCurrentOp = function(obj) {\n const {op, value} = obj;\n const val = {\n op,\n path: this.currentPath(),\n };\n if (typeof value !== 'undefined') {\n val.value = value;\n }\n this.result.push(val);\n };\n\n context.pushMoveOp = function(to) {\n const finalTo = `/${to}`;\n const from = this.currentPath();\n this.result.push({op: OPERATIONS.move, from: from, path: finalTo});\n };\n\n context.currentPath = function() {\n return `/${this.path.join('/')}`;\n };\n }\n\n typeFormattterErrorFormatter(context, err) {\n context.out(`[ERROR] ${err}`);\n }\n\n rootBegin() {}\n rootEnd() {}\n\n nodeBegin({ path }, key, leftKey) {\n path.push(leftKey);\n }\n\n nodeEnd({ path }) {\n path.pop();\n }\n\n /* jshint camelcase: false */\n /* eslint-disable camelcase */\n\n format_unchanged() {}\n\n format_movedestination() {}\n\n format_node(context, delta, left) {\n this.formatDeltaChildren(context, delta, left);\n }\n\n format_added(context, delta) {\n context.pushCurrentOp({op: OPERATIONS.add, value: delta[0]});\n }\n\n format_modified(context, delta) {\n context.pushCurrentOp({op: OPERATIONS.replace, value: delta[1]});\n }\n\n format_deleted(context) {\n context.pushCurrentOp({op: OPERATIONS.remove});\n }\n\n format_moved(context, delta) {\n const to = delta[1];\n context.pushMoveOp(to);\n }\n\n format_textdiff() {\n throw new Error('Not implemented');\n }\n\n format(delta, left) {\n let context = {};\n this.prepareContext(context);\n this.recurse(context, delta, left);\n return context.result;\n }\n}\n\n/* jshint camelcase: true */\n/* eslint-enable camelcase */\n\nexport default JSONFormatter;\n\nconst last = arr => arr[arr.length - 1];\n\nconst sortBy = (arr, pred) => {\n arr.sort(pred);\n return arr;\n};\n\nconst compareByIndexDesc = (indexA, indexB) => {\n const lastA = parseInt(indexA, 10);\n const lastB = parseInt(indexB, 10);\n if (!(isNaN(lastA) || isNaN(lastB))) {\n return lastB - lastA;\n } else {\n return 0;\n }\n};\n\nconst opsByDescendingOrder = removeOps => sortBy(removeOps, (a, b) => {\n const splitA = a.path.split('/');\n const splitB = b.path.split('/');\n if (splitA.length !== splitB.length) {\n return splitA.length - splitB.length;\n } else {\n return compareByIndexDesc(last(splitA), last(splitB));\n }\n});\n\nconst partition = (arr, pred) => {\n const left = [];\n const right = [];\n\n arr.forEach(el => {\n const coll = pred(el) ? left : right;\n coll.push(el);\n });\n return [left, right];\n};\n\nconst partitionRemovedOps = jsonFormattedDiff => {\n const isRemoveOp = ({op}) => op === 'remove';\n const removeOpsOtherOps = partition(\n jsonFormattedDiff,\n isRemoveOp\n );\n return removeOpsOtherOps;\n};\n\nconst reorderOps = jsonFormattedDiff => {\n const [removeOps, otherOps] = partitionRemovedOps(jsonFormattedDiff);\n\n const removeOpsReverse = opsByDescendingOrder(removeOps);\n return removeOpsReverse.concat(otherOps);\n};\n\nlet defaultInstance;\n\nexport const format = (delta, left) => {\n if (!defaultInstance) {\n defaultInstance = new JSONFormatter();\n }\n return reorderOps(defaultInstance.format(delta, left));\n};\n\nexport const log = (delta, left) => {\n console.log(format(delta, left));\n};\n","import chalk from 'chalk';\nimport BaseFormatter from './base';\n\nfunction chalkColor(name) {\n return (\n (chalk && chalk[name]) ||\n function(...args) {\n return args;\n }\n );\n}\n\nlet colors = {\n added: chalkColor('green'),\n deleted: chalkColor('red'),\n movedestination: chalkColor('gray'),\n moved: chalkColor('yellow'),\n unchanged: chalkColor('gray'),\n error: chalkColor('white.bgRed'),\n textDiffLine: chalkColor('gray'),\n};\n\nclass ConsoleFormatter extends BaseFormatter {\n constructor() {\n super();\n this.includeMoveDestinations = false;\n }\n\n prepareContext(context) {\n super.prepareContext(context);\n context.indent = function(levels) {\n this.indentLevel =\n (this.indentLevel || 0) + (typeof levels === 'undefined' ? 1 : levels);\n this.indentPad = new Array(this.indentLevel + 1).join(' ');\n this.outLine();\n };\n context.outLine = function() {\n this.buffer.push(`\\n${this.indentPad || ''}`);\n };\n context.out = function(...args) {\n for (let i = 0, l = args.length; i < l; i++) {\n let lines = args[i].split('\\n');\n let text = lines.join(`\\n${this.indentPad || ''}`);\n if (this.color && this.color[0]) {\n text = this.color[0](text);\n }\n this.buffer.push(text);\n }\n };\n context.pushColor = function(color) {\n this.color = this.color || [];\n this.color.unshift(color);\n };\n context.popColor = function() {\n this.color = this.color || [];\n this.color.shift();\n };\n }\n\n typeFormattterErrorFormatter(context, err) {\n context.pushColor(colors.error);\n context.out(`[ERROR]${err}`);\n context.popColor();\n }\n\n formatValue(context, value) {\n context.out(JSON.stringify(value, null, 2));\n }\n\n formatTextDiffString(context, value) {\n let lines = this.parseTextDiff(value);\n context.indent();\n for (let i = 0, l = lines.length; i < l; i++) {\n let line = lines[i];\n context.pushColor(colors.textDiffLine);\n context.out(`${line.location.line},${line.location.chr} `);\n context.popColor();\n let pieces = line.pieces;\n for (\n let pieceIndex = 0, piecesLength = pieces.length;\n pieceIndex < piecesLength;\n pieceIndex++\n ) {\n let piece = pieces[pieceIndex];\n context.pushColor(colors[piece.type]);\n context.out(piece.text);\n context.popColor();\n }\n if (i < l - 1) {\n context.outLine();\n }\n }\n context.indent(-1);\n }\n\n rootBegin(context, type, nodeType) {\n context.pushColor(colors[type]);\n if (type === 'node') {\n context.out(nodeType === 'array' ? '[' : '{');\n context.indent();\n }\n }\n\n rootEnd(context, type, nodeType) {\n if (type === 'node') {\n context.indent(-1);\n context.out(nodeType === 'array' ? ']' : '}');\n }\n context.popColor();\n }\n\n nodeBegin(context, key, leftKey, type, nodeType) {\n context.pushColor(colors[type]);\n context.out(`${leftKey}: `);\n if (type === 'node') {\n context.out(nodeType === 'array' ? '[' : '{');\n context.indent();\n }\n }\n\n nodeEnd(context, key, leftKey, type, nodeType, isLast) {\n if (type === 'node') {\n context.indent(-1);\n context.out(nodeType === 'array' ? ']' : `}${isLast ? '' : ','}`);\n }\n if (!isLast) {\n context.outLine();\n }\n context.popColor();\n }\n\n /* jshint camelcase: false */\n /* eslint-disable camelcase */\n\n format_unchanged(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n this.formatValue(context, left);\n }\n\n format_movedestination(context, delta, left) {\n if (typeof left === 'undefined') {\n return;\n }\n this.formatValue(context, left);\n }\n\n format_node(context, delta, left) {\n // recurse\n this.formatDeltaChildren(context, delta, left);\n }\n\n format_added(context, delta) {\n this.formatValue(context, delta[0]);\n }\n\n format_modified(context, delta) {\n context.pushColor(colors.deleted);\n this.formatValue(context, delta[0]);\n context.popColor();\n context.out(' => ');\n context.pushColor(colors.added);\n this.formatValue(context, delta[1]);\n context.popColor();\n }\n\n format_deleted(context, delta) {\n this.formatValue(context, delta[0]);\n }\n\n format_moved(context, delta) {\n context.out(`==> ${delta[1]}`);\n }\n\n format_textdiff(context, delta) {\n this.formatTextDiffString(context, delta[0]);\n }\n}\n\n/* eslint-enable camelcase */\n\n/* jshint camelcase: true */\n\nexport default ConsoleFormatter;\n\nlet defaultInstance;\n\nexport const format = (delta, left) => {\n if (!defaultInstance) {\n defaultInstance = new ConsoleFormatter();\n }\n return defaultInstance.format(delta, left);\n};\n\nexport function log(delta, left) {\n console.log(format(delta, left));\n}\n","// use as 2nd parameter for JSON.parse to revive Date instances\nexport default function dateReviver(key, value) {\n let parts;\n if (typeof value === 'string') {\n // eslint-disable-next-line max-len\n parts = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d*))?(Z|([+-])(\\d{2}):(\\d{2}))$/.exec(\n value\n );\n if (parts) {\n return new Date(\n Date.UTC(\n +parts[1],\n +parts[2] - 1,\n +parts[3],\n +parts[4],\n +parts[5],\n +parts[6],\n +(parts[7] || 0)\n )\n );\n }\n }\n return value;\n}\n","import DiffPatcher from './diffpatcher';\nexport DiffPatcher from './diffpatcher';\n\nexport * as formatters from './formatters/index';\n\nexport * as console from './formatters/console';\n\nexport function create(options) {\n return new DiffPatcher(options);\n}\n\nexport dateReviver from './date-reviver';\n\nlet defaultInstance;\n\nexport function diff() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.diff.apply(defaultInstance, arguments);\n}\n\nexport function patch() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.patch.apply(defaultInstance, arguments);\n}\n\nexport function unpatch() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.unpatch.apply(defaultInstance, arguments);\n}\n\nexport function reverse() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.reverse.apply(defaultInstance, arguments);\n}\n\nexport function clone() {\n if (!defaultInstance) {\n defaultInstance = new DiffPatcher();\n }\n return defaultInstance.clone.apply(defaultInstance, arguments);\n}\n"],"names":["Processor","options","selfOptions","pipes","name","pipeArg","pipe","processor","input","context","nextPipe","lastPipe","lastContext","nextAfterChildren","next","process","hasResult","result","undefined","Pipe","filters","Error","debug","length","index","filter","log","filterName","exiting","resultCheck","msg","push","unshift","names","indexOf","params","Array","prototype","slice","call","arguments","splice","apply","should","error","noResult","Context","child","parent","childName","root","children","isArray","a","cloneRegExp","re","regexMatch","exec","toString","RegExp","clone","arg","map","Date","getTime","cloned","Object","hasOwnProperty","DiffContext","left","right","cloneDiffValues","defaultClone","babelHelpers.typeof","setResult","PatchContext","delta","ReverseContext","diffFilter","trivialMatchesDiffFilter","exit","leftType","rightType","leftIsArray","rightIsArray","patchFilter","trivialMatchesPatchFilter","nested","regexArgs","reverseFilter","trivialReferseFilter","collectChildrenDiffFilter","_t","objectsDiffFilter","propertyFilter","nestedPatchFilter","collectChildrenPatchFilter","nestedReverseFilter","collectChildrenReverseFilter","defaultMatch","array1","array2","index1","index2","lengthMatrix","match","len1","len2","x","y","matrix","Math","max","backtrack","subsequence","sequence","indices1","indices2","get","innerContext","join","ARRAY_MOVE","arrayIndexOf","array","item","i","arraysHaveMatchByRef","val1","val2","matchItems","value1","value2","objectHash","matchByPosition","hash1","hash2","hashCache1","hashCache2","arraysDiffFilter","matchContext","commonHead","commonTail","trimmed1","trimmed2","seq","lcs","removedItems","detectMove","arrays","includeValueOnMove","removedItemsLength","indexOnArray2","isMove","removeItemIndex1","compare","b","toRemove","toInsert","toModify","parseInt","sort","numerically","indexDiff","removedValue","numericallyBy","toInsertLength","insertion","value","toModifyLength","modification","arraysReverseFilter","newName","substr","reverseArrayDeltaIndex","itemDelta","reverseIndex","deltaIndex","deltaItem","moveFromIndex","moveToIndex","deleteIndex","datesDiffFilter","TEXT_DIFF","DEFAULT_MIN_LENGTH","cachedDiffPatch","getDiffMatchPatch","required","instance","diff_match_patch","dmp","err","diff_match_patch_not_found","txt1","txt2","patch_toText","patch_make","patch","results","patch_apply","patch_fromText","textPatchFailed","textsDiffFilter","minLength","textDiff","diffMatchPatch","diff","textsPatchFilter","textDeltaReverse","l","lines","line","lineTmp","header","headerRegex","lineHeader","split","lineStart","textsReverseFilter","DiffPatcher","append","trivial","dates","texts","shouldHaveResult","reverse","getObjectKeys","keys","obj","property","trimUnderscore","str","arrayKeyToSortNumber","key","arrayKeyComparer","key1","key2","BaseFormatter","prepareContext","recurse","finalize","buffer","out","deltaType","leftKey","movedFrom","isLast","useMoveOriginHere","leftValue","type","getDeltaType","nodeType","nodeBegin","rootBegin","typeFormattter","typeFormattterNotFound","typeFormattterErrorFormatter","console","stack","nodeEnd","rootEnd","self","forEachDeltaKey","fn","arrayKeys","moveDestinations","includeMoveDestinations","output","lineOutput","location","pieces","pieceIndex","piecesLength","piece","pieceOutput","text","HtmlFormatter","htmlEscape","JSON","stringify","parseTextDiff","chr","decodeURI","nodeClass","hasArrows","adjustArrows","formatValue","formatDeltaChildren","formatTextDiffString","html","replacements","replace","jsondiffpatchHtmlFormatterAdjustArrows","nodeArg","node","document","getElementText","textContent","innerText","eachByQuery","el","query","elems","querySelectorAll","eachChildren","parentNode","style","arrowParent","svg","path","display","destination","querySelector","container","destinationElem","getAttribute","distance","offsetTop","setAttribute","abs","top","curve","round","showUnchanged","show","delay","body","prefix","classes","list","classList","remove","showing","hiding","visible","hidden","add","intervalId","setInterval","hideUnchanged","defaultInstance","format","AnnotatedFormatter","indent","levels","indentLevel","indentPad","row","json","htmlNote","wrapPropertyName","deltaAnnotations","formatLegend","formatAnyChange","annotator","format_added","format_modified","format_deleted","format_moved","format_textdiff","OPERATIONS","JSONFormatter","pushCurrentOp","op","val","currentPath","pushMoveOp","to","finalTo","from","move","pop","last","arr","sortBy","pred","compareByIndexDesc","indexA","indexB","lastA","lastB","isNaN","opsByDescendingOrder","removeOps","splitA","splitB","partition","forEach","coll","partitionRemovedOps","isRemoveOp","removeOpsOtherOps","jsonFormattedDiff","reorderOps","otherOps","removeOpsReverse","concat","chalkColor","chalk","args","colors","ConsoleFormatter","outLine","color","pushColor","popColor","shift","textDiffLine","deleted","added","dateReviver","parts","UTC","create","unpatch"],"mappings":"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"}
\No newline at end of file