UNPKG

@bluelovers/deep-diff

Version:

Javascript utility for calculating deep difference, capturing changes, and applying changes across objects; for nodejs and the browser.

1 lines 36.9 kB
{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts"],"sourcesContent":["// @ts-nocheck\n\nexport const enum EnumKinds\n{\n\t/**\n\t * Item was edited\n\t */\n\tDiffEdit = 'E',\n\t/**\n\t * Item is new\n\t */\n\tDiffNew = 'N',\n\t/**\n\t * Item was edited\n\t */\n\tDiffDeleted = 'D',\n\t/**\n\t * Array was modified\n\t */\n\tDiffArray = 'A',\n}\n\nconst validKinds = [EnumKinds.DiffNew, EnumKinds.DiffEdit, EnumKinds.DiffArray, EnumKinds.DiffDeleted] as const;\n\nexport type IPathKey = string | number | symbol;\nexport type IPaths = IPathKey[];\n\nexport type IDiffNode<LHS = unknown, RHS = LHS> = DiffNew<RHS> | DiffDeleted<LHS> | DiffEdit<LHS, RHS> | DiffArray<LHS, RHS>;\n\nexport type Observer<LHS, RHS = LHS> = (diff: IDiffNode<LHS, RHS>) => void;\n\nexport type PreFilterFunction = (path: any[], key: any) => boolean;\nexport interface PreFilterObject<LHS, RHS = LHS> {\n\tprefilter?(path: any[], key: any): boolean;\n\tnormalize?(currentPath: any, key: any, lhs: LHS, rhs: RHS): [ LHS, RHS ] | undefined;\n}\n\nexport type PreFilter<LHS, RHS = LHS> = PreFilterFunction | PreFilterObject<LHS, RHS>;\n\nexport type Filter<LHS, RHS = LHS> = (target: LHS, source: RHS, change: IDiffNode<LHS, RHS>) => boolean;\n\nexport abstract class Diff\n{\n\tpublic path: IPaths;\n\n\tprotected constructor(public kind: EnumKinds, path?: IPaths)\n\t{\n\t\tif (path?.length)\n\t\t{\n\t\t\tthis.path = path\n\t\t}\n\t}\n}\n\n/**\n * Item was edited\n */\nexport class DiffEdit<LHS, RHS = LHS> extends Diff\n{\n\tpublic override kind: EnumKinds.DiffEdit;\n\n\tconstructor(path: IPaths, public lhs: LHS, public rhs: RHS)\n\t{\n\t\tsuper(EnumKinds.DiffEdit, path);\n\t}\n}\n\n/**\n * Item is new\n */\nexport class DiffNew<RHS> extends Diff\n{\n\tpublic override kind: EnumKinds.DiffNew;\n\n\tconstructor(path: IPaths, public rhs: RHS)\n\t{\n\t\tsuper(EnumKinds.DiffNew, path);\n\t}\n}\n\n/**\n * Item was edited\n */\nexport class DiffDeleted<LHS> extends Diff\n{\n\tpublic override kind: EnumKinds.DiffDeleted;\n\n\tconstructor(path: IPaths, public lhs: LHS)\n\t{\n\t\tsuper(EnumKinds.DiffDeleted, path);\n\t}\n}\n\n/**\n * Array was modified\n */\nexport class DiffArray<LHS, RHS = LHS> extends Diff\n{\n\tpublic override kind: EnumKinds.DiffArray;\n\n\tconstructor(path: IPaths, public index: number, public item: IDiffNode<LHS, RHS>)\n\t{\n\t\tsuper(EnumKinds.DiffArray, path);\n\t}\n}\n\nfunction arrayRemove<T extends any[]>(arr: T, from: number)\n{\n\treturn arr.splice(from, 1);\n\n//\tconst rest = arr.slice((to || from) + 1 || arr.length);\n//\tarr.length = from < 0 ? arr.length + from : from;\n//\tarr.push.apply(arr, rest);\n//\treturn arr;\n}\n\nfunction realTypeOf(subject: unknown)\n{\n\tconst type = typeof subject;\n\tif (type !== 'object')\n\t{\n\t\treturn type;\n\t}\n\n\tif (subject === Math)\n\t{\n\t\treturn 'math';\n\t}\n\telse if (subject === null)\n\t{\n\t\treturn 'null';\n\t}\n\telse if (Array.isArray(subject))\n\t{\n\t\treturn 'array';\n\t}\n\telse if (Object.prototype.toString.call(subject) === '[object Date]')\n\t{\n\t\treturn 'date';\n\t}\n\telse if (typeof subject.toString === 'function' && /^\\/.*\\//.test(subject.toString()))\n\t{\n\t\treturn 'regexp';\n\t}\n\treturn 'object';\n}\n\n/**\n * @see http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n */\nfunction hashThisString(string: string)\n{\n\tlet hash = 0;\n\tif (string.length === 0)\n\t{ return hash; }\n\tfor (let i = 0; i < string.length; i++)\n\t{\n\t\tconst char = string.charCodeAt(i);\n\t\thash = ((hash << 5) - hash) + char;\n\t\thash = hash & hash; // Convert to 32bit integer\n\t}\n\treturn hash;\n}\n\n/**\n * Gets a hash of the given object in an array order-independent fashion\n * also object key order independent (easier since they can be alphabetized)\n */\nexport function getOrderIndependentHash(object: unknown)\n{\n\tlet accum = 0;\n\tconst type = realTypeOf(object);\n\n\tif (type === 'array')\n\t{\n\t\tobject.forEach(function (item)\n\t\t{\n\t\t\t// Addition is commutative so this is order indep\n\t\t\taccum += getOrderIndependentHash(item);\n\t\t});\n\n\t\tconst arrayString = normalizeHashDesc(type, {\n\t\t\thash: accum,\n\t\t})\n\n\t\treturn accum + hashThisString(arrayString);\n\t}\n\telse if (type === 'object')\n\t{\n\t\tfor (const key in object)\n\t\t{\n\t\t\tif (object.hasOwnProperty(key))\n\t\t\t{\n\t\t\t\tconst keyValueString = normalizeHashDesc(type, {\n\t\t\t\t\tkey,\n\t\t\t\t\thash: getOrderIndependentHash(object[key]),\n\t\t\t\t});\n\n\t\t\t\taccum += hashThisString(keyValueString);\n\t\t\t}\n\t\t}\n\n\t\treturn accum;\n\t}\n\n\t// Non object, non array...should be good?\n\tconst stringToHash = normalizeHashDesc(type, {\n\t\tvalue: object,\n\t});\n\n\treturn accum + hashThisString(stringToHash);\n}\n\nfunction normalizeHashDesc(type: ReturnType<typeof realTypeOf>, options: {\n\tvalue?: any,\n\tkey?: IPathKey,\n\thash?: number,\n})\n{\n\tswitch (type)\n\t{\n\t\tcase 'array':\n\t\t\treturn `[ type: ${type} , hash: ${options.hash}]`;\n\t\tcase 'object':\n\t\t\treturn `[ type: ${type}, key: ${options.key} , hash: ${options.hash}]`;\n\t\tdefault:\n\t\t\treturn `[ type: ${type} , value: ${options.value}]`;\n\t}\n}\n\nfunction _deepDiff(lhs, rhs, changes: IDiffNode[], prefilter, path: IPaths, key, stack, orderIndependent: boolean)\n{\n\tchanges = changes || [];\n\tpath = path || [];\n\tstack = stack || [];\n\tconst currentPath = path.slice(0);\n\tif (typeof key !== 'undefined' && key !== null)\n\t{\n\t\tif (prefilter)\n\t\t{\n\t\t\tif (typeof (prefilter) === 'function' && prefilter(currentPath, key))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (typeof (prefilter) === 'object')\n\t\t\t{\n\t\t\t\tif (prefilter.prefilter && prefilter.prefilter(currentPath, key))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (prefilter.normalize)\n\t\t\t\t{\n\t\t\t\t\tconst alt = prefilter.normalize(currentPath, key, lhs, rhs);\n\t\t\t\t\tif (alt)\n\t\t\t\t\t{\n\t\t\t\t\t\tlhs = alt[0];\n\t\t\t\t\t\trhs = alt[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcurrentPath.push(key);\n\t}\n\n\t// Use string comparison for regexes\n\tif (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp')\n\t{\n\t\tlhs = lhs.toString();\n\t\trhs = rhs.toString();\n\t}\n\n\tconst ltype = typeof lhs;\n\tconst rtype = typeof rhs;\n\tlet i, j, k, other;\n\n\tconst ldefined = ltype !== 'undefined' ||\n\t\t(stack && (stack.length > 0) && stack[stack.length - 1].lhs &&\n\t\t\tObject.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));\n\tconst rdefined = rtype !== 'undefined' ||\n\t\t(stack && (stack.length > 0) && stack[stack.length - 1].rhs &&\n\t\t\tObject.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));\n\n\tif (!ldefined && rdefined)\n\t{\n\t\tchanges.push(new DiffNew(currentPath, rhs));\n\t}\n\telse if (!rdefined && ldefined)\n\t{\n\t\tchanges.push(new DiffDeleted(currentPath, lhs));\n\t}\n\telse if (realTypeOf(lhs) !== realTypeOf(rhs))\n\t{\n\t\tchanges.push(new DiffEdit(currentPath, lhs, rhs));\n\t}\n\telse if (realTypeOf(lhs) === 'date' && (lhs - rhs) !== 0)\n\t{\n\t\tchanges.push(new DiffEdit(currentPath, lhs, rhs));\n\t}\n\telse if (ltype === 'object' && lhs !== null && rhs !== null)\n\t{\n\t\tfor (i = stack.length - 1; i > -1; --i)\n\t\t{\n\t\t\tif (stack[i].lhs === lhs)\n\t\t\t{\n\t\t\t\tother = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!other)\n\t\t{\n\t\t\tstack.push({ lhs: lhs, rhs: rhs });\n\t\t\tif (Array.isArray(lhs))\n\t\t\t{\n\t\t\t\t// If order doesn't matter, we need to sort our arrays\n\t\t\t\tif (orderIndependent)\n\t\t\t\t{\n\t\t\t\t\tlhs.sort(function (a, b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn getOrderIndependentHash(a) - getOrderIndependentHash(b);\n\t\t\t\t\t});\n\n\t\t\t\t\trhs.sort(function (a, b)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn getOrderIndependentHash(a) - getOrderIndependentHash(b);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ti = rhs.length - 1;\n\t\t\t\tj = lhs.length - 1;\n\t\t\t\twhile (i > j)\n\t\t\t\t{\n\t\t\t\t\tchanges.push(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i--])));\n\t\t\t\t}\n\t\t\t\twhile (j > i)\n\t\t\t\t{\n\t\t\t\t\tchanges.push(new DiffArray(currentPath, j, new DiffDeleted(undefined, lhs[j--])));\n\t\t\t\t}\n\t\t\t\tfor (; i >= 0; --i)\n\t\t\t\t{\n\t\t\t\t\t_deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst akeys = Object.keys(lhs).concat(Object.getOwnPropertySymbols(lhs));\n\t\t\t\tconst pkeys = Object.keys(rhs).concat(Object.getOwnPropertySymbols(rhs));\n\t\t\t\tfor (i = 0; i < akeys.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tk = akeys[i];\n\t\t\t\t\tother = pkeys.indexOf(k);\n\t\t\t\t\tif (other >= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t_deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n\t\t\t\t\t\tpkeys[other] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (i = 0; i < pkeys.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tk = pkeys[i];\n\t\t\t\t\tif (k)\n\t\t\t\t\t{\n\t\t\t\t\t\t_deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tstack.length = stack.length - 1;\n\t\t}\n\t\telse if (lhs !== rhs)\n\t\t{\n\t\t\t// lhs is contains a cycle at this element and it differs from rhs\n\t\t\tchanges.push(new DiffEdit(currentPath, lhs, rhs));\n\t\t}\n\t}\n\telse if (lhs !== rhs)\n\t{\n\t\tif (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs)))\n\t\t{\n\t\t\tchanges.push(new DiffEdit(currentPath, lhs, rhs));\n\t\t}\n\t}\n}\n\nexport function observableDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, observer?: Observer<LHS, RHS>, prefilter?: PreFilter<LHS, RHS>, orderIndependent?: boolean)\n{\n\tconst changes: IDiffNode<LHS, RHS>[] = [];\n\t_deepDiff<LHS, RHS>(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);\n\tif (observer)\n\t{\n\t\tfor (let i = 0; i < changes.length; ++i)\n\t\t{\n\t\t\tobserver(changes[i]);\n\t\t}\n\t}\n\treturn changes;\n}\n\nexport function orderIndependentObservableDiff(lhs, rhs, changes, prefilter, path, key, stack)\n{\n\treturn _deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);\n}\n\nexport function deepDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>, accum?: IDiffNode<LHS, RHS>[]): IDiffNode<LHS, RHS>[]\n{\n\tconst observer = (accum) ?\n\t\tfunction (difference: IDiffNode)\n\t\t{\n\t\t\tif (difference)\n\t\t\t{\n\t\t\t\taccum!.push(difference);\n\t\t\t}\n\t\t} : undefined;\n\tconst changes = observableDiff<LHS, RHS>(lhs, rhs, observer, prefilter);\n\treturn (accum) ? accum : (changes.length) ? changes : undefined;\n}\n\nexport function orderIndependentDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>, accum?: IDiffNode<LHS, RHS>[])\n{\n\tconst observer = (accum) ?\n\t\tfunction (difference: IDiffNode<LHS, RHS>)\n\t\t{\n\t\t\tif (difference)\n\t\t\t{\n\t\t\t\taccum!.push(difference);\n\t\t\t}\n\t\t} : undefined;\n\tconst changes = observableDiff(lhs, rhs, observer, prefilter, true);\n\treturn (accum) ? accum : (changes.length) ? changes : undefined;\n}\n\nfunction _traversalObject<T>(target: any, path: IPaths)\n{\n\tpath = path.slice();\n\n\tconst key = path.pop();\n\n\tlet it: T = target;\n\n\tpath.reduce((target, key) => {\n\t\treturn it = target[key]\n\t}, it);\n\n\treturn [it, key] as const\n}\n\nfunction _applyArrayChange<T extends any[]>(arr: T, index: number, change: IDiffNode)\n{\n\tif (change.path?.length)\n\t{\n//\t\tlet it = arr[index],\n//\t\t\ti, u = change.path.length - 1;\n//\t\tfor (i = 0; i < u; i++)\n//\t\t{\n//\t\t\tit = it[change.path[i]];\n//\t\t}\n//\n//\t\tlet key = change.path[i];\n\n\t\tlet [it, key] = _traversalObject(arr[index], change.path);\n\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase 'A':\n\t\t\t\t_applyArrayChange(it[key], change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase 'D':\n\t\t\t\tdelete it[key];\n\t\t\t\tbreak;\n\t\t\tcase 'E':\n\t\t\tcase 'N':\n\t\t\t\tit[key] = change.rhs;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\telse\n\t{\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase 'A':\n\t\t\t\t_applyArrayChange(arr[index], change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase 'D':\n\t\t\t\tarr = arrayRemove(arr, index);\n\t\t\t\tbreak;\n\t\t\tcase 'E':\n\t\t\tcase 'N':\n\t\t\t\tarr[index] = change.rhs;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn arr;\n}\n\nexport function isIDiffNode<T extends IDiffNode>(source?: unknown): source is T\n{\n\treturn (source ?? false) && validKinds.includes(source.kind)\n}\n\nexport function applyChange<LHS>(target: LHS, source: any, change?: IDiffNode<LHS, any>)\n{\n\tif (typeof change === 'undefined' && isIDiffNode(source))\n\t{\n\t\tchange = source;\n\t}\n\tif (target && change && change.kind)\n\t{\n\t\tlet it = target,\n\t\t\ti = -1,\n\t\t\tlast = change.path ? change.path.length - 1 : 0;\n\t\twhile (++i < last)\n\t\t{\n\t\t\tif (typeof it[change.path[i]] === 'undefined')\n\t\t\t{\n\t\t\t\tit[change.path[i]] = (typeof change.path[i + 1] !== 'undefined' && typeof change.path[i + 1] === 'number')\n\t\t\t\t\t? []\n\t\t\t\t\t: {};\n\t\t\t}\n\t\t\tit = it[change.path[i]];\n\t\t}\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase 'A':\n\t\t\t\tif (change.path && typeof it[change.path[i]] === 'undefined')\n\t\t\t\t{\n\t\t\t\t\tit[change.path[i]] = [];\n\t\t\t\t}\n\t\t\t\t_applyArrayChange(change.path ? it[change.path[i]] : it, change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase 'D':\n\t\t\t\tdelete it[change.path[i]];\n\t\t\t\tbreak;\n\t\t\tcase 'E':\n\t\t\tcase 'N':\n\t\t\t\tit[change.path[i]] = change.rhs;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction revertArrayChange<T extends any[]>(arr: T, index: number, change: IDiffNode)\n{\n\tif (change.path && change.path.length)\n\t{\n\t\t// the structure of the object at the index has changed...\n\t\tlet it = arr[index],\n\t\t\ti, u = change.path.length - 1;\n\t\tfor (i = 0; i < u; i++)\n\t\t{\n\t\t\tit = it[change.path[i]];\n\t\t}\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase EnumKinds.DiffArray:\n\t\t\t\trevertArrayChange(it[change.path[i]], change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffDeleted:\n\t\t\t\tit[change.path[i]] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffEdit:\n\t\t\t\tit[change.path[i]] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffNew:\n\t\t\t\tdelete it[change.path[i]];\n\t\t\t\tbreak;\n\t\t}\n\t}\n\telse\n\t{\n\t\t// the array item is different...\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase EnumKinds.DiffArray:\n\t\t\t\trevertArrayChange(arr[index], change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffDeleted:\n\t\t\t\tarr[index] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffEdit:\n\t\t\t\tarr[index] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffNew:\n\t\t\t\tarr = arrayRemove(arr, index);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn arr;\n}\n\nexport function revertChange<LHS>(target: LHS, source: any, change: IDiffNode)\n{\n\tif (target && source && change?.kind)\n\t{\n\t\tlet it = target,\n\t\t\ti, u;\n\t\tu = change.path.length - 1;\n\t\tfor (i = 0; i < u; i++)\n\t\t{\n\t\t\tif (typeof it[change.path[i]] === 'undefined')\n\t\t\t{\n\t\t\t\tit[change.path[i]] = {};\n\t\t\t}\n\t\t\tit = it[change.path[i]];\n\t\t}\n\t\tswitch (change.kind)\n\t\t{\n\t\t\tcase EnumKinds.DiffArray:\n\t\t\t\t// Array was modified...\n\t\t\t\t// it will be an array...\n\t\t\t\trevertArrayChange(it[change.path[i]], change.index, change.item);\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffDeleted:\n\t\t\t\t// Item was deleted...\n\t\t\t\tit[change.path[i]] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffEdit:\n\t\t\t\t// Item was edited...\n\t\t\t\tit[change.path[i]] = change.lhs;\n\t\t\t\tbreak;\n\t\t\tcase EnumKinds.DiffNew:\n\t\t\t\t// Item is new...\n\t\t\t\tdelete it[change.path[i]];\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport function applyDiff<LHS, RHS = LHS>(target: LHS, source: RHS, filter?: Filter<LHS, RHS>)\n{\n\tif (target && source)\n\t{\n\t\tconst onChange = function (change: IDiffNode<LHS, RHS>)\n\t\t{\n\t\t\tif (!filter || filter(target, source, change))\n\t\t\t{\n\t\t\t\tapplyChange(target, source, change);\n\t\t\t}\n\t\t};\n\t\tobservableDiff(target, source, onChange);\n\t}\n\treturn target\n}\n\nfunction _applyDiffChangeCore<T>(lhs: unknown, differences: IDiffNode<any, any>[], fn: (lhs: any, source: true, it: IDiffNode<any, any>) => any): lhs is T\n{\n\tdifferences.forEach((it) => {\n\t\tfn(lhs, true, it);\n\t});\n\n\treturn true;\n}\n\nexport function applyDiffChange<RHS>(lhs: unknown, differences: IDiffNode<any, RHS>[]): RHS\n{\n\tif (_applyDiffChangeCore<RHS>(lhs, differences, applyChange))\n\t{\n\t\treturn lhs\n\t}\n}\n\nexport function revertDiffChange<LHS>(lhs: unknown, differences: IDiffNode<LHS, any>[]): LHS\n{\n\tif (_applyDiffChangeCore<LHS>(lhs, differences, revertChange))\n\t{\n\t\treturn lhs\n\t}\n}\n\nexport { deepDiff as diff }\n\nexport default deepDiff;\n"],"names":["EnumKinds","validKinds","Diff","constructor","kind","path","length","DiffEdit","lhs","rhs","DiffNew","DiffDeleted","DiffArray","index","item","arrayRemove","arr","from","splice","realTypeOf","subject","type","Math","Array","isArray","Object","prototype","toString","call","test","hashThisString","string","hash","i","char","charCodeAt","getOrderIndependentHash","object","accum","forEach","arrayString","normalizeHashDesc","key","hasOwnProperty","keyValueString","stringToHash","value","options","_deepDiff","changes","prefilter","stack","orderIndependent","currentPath","slice","normalize","alt","push","ltype","rtype","j","k","other","ldefined","getOwnPropertyDescriptor","rdefined","sort","a","b","undefined","akeys","keys","concat","getOwnPropertySymbols","pkeys","indexOf","isNaN","observableDiff","observer","orderIndependentObservableDiff","deepDiff","difference","orderIndependentDiff","_traversalObject","target","pop","it","reduce","_applyArrayChange","change","isIDiffNode","source","includes","applyChange","last","revertArrayChange","u","revertChange","applyDiff","filter","onChange","_applyDiffChangeCore","differences","fn","applyDiffChange","revertDiffChange"],"mappings":"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"}