Your IP : 216.73.216.48
{"version":3,"file":"immer.module.js","sources":["../src/patches.js","../src/common.js","../src/proxy.js","../src/es5.js","../src/immer.js"],"sourcesContent":["import {each} from \"./common\"\n\nexport function generatePatches(\n state,\n basepath,\n patches,\n inversePatches,\n baseValue,\n resultValue\n) {\n if (patches)\n if (Array.isArray(baseValue))\n generateArrayPatches(\n state,\n basepath,\n patches,\n inversePatches,\n baseValue,\n resultValue\n )\n else\n generateObjectPatches(\n state,\n basepath,\n patches,\n inversePatches,\n baseValue,\n resultValue\n )\n}\n\nexport function generateArrayPatches(\n state,\n basepath,\n patches,\n inversePatches,\n baseValue,\n resultValue\n) {\n const shared = Math.min(baseValue.length, resultValue.length)\n for (let i = 0; i < shared; i++) {\n if (state.assigned[i] && baseValue[i] !== resultValue[i]) {\n const path = basepath.concat(i)\n patches.push({op: \"replace\", path, value: resultValue[i]})\n inversePatches.push({op: \"replace\", path, value: baseValue[i]})\n }\n }\n if (shared < resultValue.length) {\n // stuff was added\n for (let i = shared; i < resultValue.length; i++) {\n const path = basepath.concat(i)\n patches.push({op: \"add\", path, value: resultValue[i]})\n }\n inversePatches.push({\n op: \"replace\",\n path: basepath.concat(\"length\"),\n value: baseValue.length\n })\n } else if (shared < baseValue.length) {\n // stuff was removed\n patches.push({\n op: \"replace\",\n path: basepath.concat(\"length\"),\n value: resultValue.length\n })\n for (let i = shared; i < baseValue.length; i++) {\n const path = basepath.concat(i)\n inversePatches.push({op: \"add\", path, value: baseValue[i]})\n }\n }\n}\n\nfunction generateObjectPatches(\n state,\n basepath,\n patches,\n inversePatches,\n baseValue,\n resultValue\n) {\n each(state.assigned, (key, assignedValue) => {\n const origValue = baseValue[key]\n const value = resultValue[key]\n const op = !assignedValue\n ? \"remove\"\n : key in baseValue ? \"replace\" : \"add\"\n if (origValue === baseValue && op === \"replace\") return\n const path = basepath.concat(key)\n patches.push(op === \"remove\" ? {op, path} : {op, path, value})\n inversePatches.push(\n op === \"add\"\n ? {op: \"remove\", path}\n : op === \"remove\"\n ? {op: \"add\", path, value: origValue}\n : {op: \"replace\", path, value: origValue}\n )\n })\n}\n\nexport function applyPatches(draft, patches) {\n for (let i = 0; i < patches.length; i++) {\n const patch = patches[i]\n if (patch.path.length === 0 && patch.op === \"replace\") {\n draft = patch.value\n } else {\n const path = patch.path.slice()\n const key = path.pop()\n const base = path.reduce((current, part) => {\n if (!current)\n throw new Error(\n \"Cannot apply patch, path doesn't resolve: \" +\n patch.path.join(\"/\")\n )\n return current[part]\n }, draft)\n if (!base)\n throw new Error(\n \"Cannot apply patch, path doesn't resolve: \" +\n patch.path.join(\"/\")\n )\n switch (patch.op) {\n case \"replace\":\n case \"add\":\n // TODO: add support is not extensive, it does not support insertion or `-` atm!\n base[key] = patch.value\n break\n case \"remove\":\n if (Array.isArray(base)) {\n if (key === base.length - 1) base.length -= 1\n else\n throw new Error(\n `Remove can only remove the last key of an array, index: ${key}, length: ${\n base.length\n }`\n )\n } else delete base[key]\n break\n default:\n throw new Error(\"Unsupported patch operation: \" + patch.op)\n }\n }\n }\n return draft\n}\n","import {generatePatches} from \"./patches\"\n\nexport const NOTHING =\n typeof Symbol !== \"undefined\"\n ? Symbol(\"immer-nothing\")\n : {[\"immer-nothing\"]: true}\n\nexport const PROXY_STATE =\n typeof Symbol !== \"undefined\"\n ? Symbol(\"immer-proxy-state\")\n : \"__$immer_state\"\n\nexport const RETURNED_AND_MODIFIED_ERROR =\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"\n\nfunction verifyMinified() {}\n\nconst inProduction =\n (typeof process !== \"undefined\" && process.env.NODE_ENV === \"production\") ||\n verifyMinified.name !== \"verifyMinified\"\n\nlet autoFreeze = !inProduction\nlet useProxies = typeof Proxy !== \"undefined\"\n\n/**\n * Automatically freezes any state trees generated by immer.\n * This protects against accidental modifications of the state tree outside of an immer function.\n * This comes with a performance impact, so it is recommended to disable this option in production.\n * It is by default enabled.\n *\n * @returns {void}\n */\nexport function setAutoFreeze(enableAutoFreeze) {\n autoFreeze = enableAutoFreeze\n}\n\nexport function setUseProxies(value) {\n useProxies = value\n}\n\nexport function getUseProxies() {\n return useProxies\n}\n\nexport function isProxy(value) {\n return !!value && !!value[PROXY_STATE]\n}\n\nexport function isProxyable(value) {\n if (!value) return false\n if (typeof value !== \"object\") return false\n if (Array.isArray(value)) return true\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nexport function freeze(value) {\n if (autoFreeze) {\n Object.freeze(value)\n }\n return value\n}\n\nexport function original(value) {\n if (value && value[PROXY_STATE]) {\n return value[PROXY_STATE].base\n }\n // otherwise return undefined\n}\n\nconst assign =\n Object.assign ||\n function assign(target, value) {\n for (let key in value) {\n if (has(value, key)) {\n target[key] = value[key]\n }\n }\n return target\n }\n\nexport function shallowCopy(value) {\n if (Array.isArray(value)) return value.slice()\n const target = value.__proto__ === undefined ? Object.create(null) : {}\n return assign(target, value)\n}\n\nexport function each(value, cb) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) cb(i, value[i])\n } else {\n for (let key in value) cb(key, value[key])\n }\n}\n\nexport function has(thing, prop) {\n return Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n// given a base object, returns it if unmodified, or return the changed cloned if modified\nexport function finalize(base, path, patches, inversePatches) {\n if (isProxy(base)) {\n const state = base[PROXY_STATE]\n if (state.modified === true) {\n if (state.finalized === true) return state.copy\n state.finalized = true\n const result = finalizeObject(\n useProxies ? state.copy : (state.copy = shallowCopy(base)),\n state,\n path,\n patches,\n inversePatches\n )\n generatePatches(\n state,\n path,\n patches,\n inversePatches,\n state.base,\n result\n )\n return result\n } else {\n return state.base\n }\n }\n finalizeNonProxiedObject(base)\n return base\n}\n\nfunction finalizeObject(copy, state, path, patches, inversePatches) {\n const base = state.base\n each(copy, (prop, value) => {\n if (value !== base[prop]) {\n // if there was an assignment on this property, we don't need to generate\n // patches for the subtree\n const generatePatches = patches && !has(state.assigned, prop)\n copy[prop] = finalize(\n value,\n generatePatches && path.concat(prop),\n generatePatches && patches,\n inversePatches\n )\n }\n })\n return freeze(copy)\n}\n\nfunction finalizeNonProxiedObject(parent) {\n // If finalize is called on an object that was not a proxy, it means that it is an object that was not there in the original\n // tree and it could contain proxies at arbitrarily places. Let's find and finalize them as well\n if (!isProxyable(parent)) return\n if (Object.isFrozen(parent)) return\n each(parent, (i, child) => {\n if (isProxy(child)) {\n parent[i] = finalize(child)\n } else finalizeNonProxiedObject(child)\n })\n // always freeze completely new data\n freeze(parent)\n}\n\nexport function verifyReturnValue(returnedValue, proxy, isProxyModified) {\n if (returnedValue !== undefined && returnedValue !== proxy) {\n // something was returned, and it wasn't the proxy itself\n if (isProxyModified)\n throw new Error(\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"\n )\n }\n}\n\nexport function is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y\n } else {\n return x !== x && y !== y\n }\n}\n","\"use strict\"\n// @ts-check\n\nimport {\n is,\n has,\n isProxyable,\n isProxy,\n PROXY_STATE,\n finalize,\n shallowCopy,\n RETURNED_AND_MODIFIED_ERROR,\n each\n} from \"./common\"\n\nlet proxies = null\n\nconst objectTraps = {\n get,\n has(target, prop) {\n return prop in source(target)\n },\n ownKeys(target) {\n return Reflect.ownKeys(source(target))\n },\n set,\n deleteProperty,\n getOwnPropertyDescriptor,\n defineProperty,\n setPrototypeOf() {\n throw new Error(\"Immer does not support `setPrototypeOf()`.\")\n }\n}\n\nconst arrayTraps = {}\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0]\n return fn.apply(this, arguments)\n }\n})\narrayTraps.deleteProperty = function(state, prop) {\n if (isNaN(parseInt(prop)))\n throw new Error(\n \"Immer does not support deleting properties from arrays: \" + prop\n )\n return objectTraps.deleteProperty.call(this, state[0], prop)\n}\narrayTraps.set = function(state, prop, value) {\n if (prop !== \"length\" && isNaN(parseInt(prop)))\n throw new Error(\n \"Immer does not support setting non-numeric properties on arrays: \" +\n prop\n )\n return objectTraps.set.call(this, state[0], prop, value)\n}\n\nfunction createState(parent, base) {\n return {\n modified: false, // this tree is modified (either this object or one of it's children)\n assigned: {}, // true: value was assigned to these props, false: was removed\n finalized: false,\n parent,\n base,\n copy: undefined,\n proxies: {}\n }\n}\n\nfunction source(state) {\n return state.modified === true ? state.copy : state.base\n}\n\nfunction get(state, prop) {\n if (prop === PROXY_STATE) return state\n if (state.modified) {\n const value = state.copy[prop]\n if (value === state.base[prop] && isProxyable(value))\n // only create proxy if it is not yet a proxy, and not a new object\n // (new objects don't need proxying, they will be processed in finalize anyway)\n return (state.copy[prop] = createProxy(state, value))\n return value\n } else {\n if (has(state.proxies, prop)) return state.proxies[prop]\n const value = state.base[prop]\n if (!isProxy(value) && isProxyable(value))\n return (state.proxies[prop] = createProxy(state, value))\n return value\n }\n}\n\nfunction set(state, prop, value) {\n // TODO: optimize\n state.assigned[prop] = true\n if (!state.modified) {\n if (\n (prop in state.base && is(state.base[prop], value)) ||\n (has(state.proxies, prop) && state.proxies[prop] === value)\n )\n return true\n markChanged(state)\n }\n state.copy[prop] = value\n return true\n}\n\nfunction deleteProperty(state, prop) {\n state.assigned[prop] = false\n markChanged(state)\n delete state.copy[prop]\n return true\n}\n\nfunction getOwnPropertyDescriptor(state, prop) {\n const owner = state.modified\n ? state.copy\n : has(state.proxies, prop) ? state.proxies : state.base\n const descriptor = Reflect.getOwnPropertyDescriptor(owner, prop)\n if (descriptor && !(Array.isArray(owner) && prop === \"length\"))\n descriptor.configurable = true\n return descriptor\n}\n\nfunction defineProperty() {\n throw new Error(\n \"Immer does not support defining properties on draft objects.\"\n )\n}\n\nfunction markChanged(state) {\n if (!state.modified) {\n state.modified = true\n state.copy = shallowCopy(state.base)\n // copy the proxies over the base-copy\n Object.assign(state.copy, state.proxies) // yup that works for arrays as well\n if (state.parent) markChanged(state.parent)\n }\n}\n\n// creates a proxy for plain objects / arrays\nfunction createProxy(parentState, base, key) {\n if (isProxy(base)) throw new Error(\"Immer bug. Plz report.\")\n const state = createState(parentState, base, key)\n const proxy = Array.isArray(base)\n ? Proxy.revocable([state], arrayTraps)\n : Proxy.revocable(state, objectTraps)\n proxies.push(proxy)\n return proxy.proxy\n}\n\nexport function produceProxy(baseState, producer, patchListener) {\n if (isProxy(baseState)) {\n // See #100, don't nest producers\n const returnValue = producer.call(baseState, baseState)\n return returnValue === undefined ? baseState : returnValue\n }\n const previousProxies = proxies\n proxies = []\n const patches = patchListener && []\n const inversePatches = patchListener && []\n try {\n // create proxy for root\n const rootProxy = createProxy(undefined, baseState)\n // execute the thunk\n const returnValue = producer.call(rootProxy, rootProxy)\n // and finalize the modified proxy\n let result\n // check whether the draft was modified and/or a value was returned\n if (returnValue !== undefined && returnValue !== rootProxy) {\n // something was returned, and it wasn't the proxy itself\n if (rootProxy[PROXY_STATE].modified)\n throw new Error(RETURNED_AND_MODIFIED_ERROR)\n\n // See #117\n // Should we just throw when returning a proxy which is not the root, but a subset of the original state?\n // Looks like a wrongly modeled reducer\n result = finalize(returnValue)\n if (patches) {\n patches.push({op: \"replace\", path: [], value: result})\n inversePatches.push({op: \"replace\", path: [], value: baseState})\n }\n } else {\n result = finalize(rootProxy, [], patches, inversePatches)\n }\n // revoke all proxies\n each(proxies, (_, p) => p.revoke())\n patchListener && patchListener(patches, inversePatches)\n return result\n } finally {\n proxies = previousProxies\n }\n}\n","\"use strict\"\n// @ts-check\n\nimport {\n is,\n isProxyable,\n isProxy,\n PROXY_STATE,\n shallowCopy,\n RETURNED_AND_MODIFIED_ERROR,\n each,\n finalize\n} from \"./common\"\n\nconst descriptors = {}\nlet states = null\n\nfunction createState(parent, proxy, base) {\n return {\n modified: false,\n assigned: {}, // true: value was assigned to these props, false: was removed\n hasCopy: false,\n parent,\n base,\n proxy,\n copy: undefined,\n finished: false,\n finalizing: false,\n finalized: false\n }\n}\n\nfunction source(state) {\n return state.hasCopy ? state.copy : state.base\n}\n\nfunction get(state, prop) {\n assertUnfinished(state)\n const value = source(state)[prop]\n if (!state.finalizing && value === state.base[prop] && isProxyable(value)) {\n // only create a proxy if the value is proxyable, and the value was in the base state\n // if it wasn't in the base state, the object is already modified and we will process it in finalize\n prepareCopy(state)\n return (state.copy[prop] = createProxy(state, value))\n }\n return value\n}\n\nfunction set(state, prop, value) {\n assertUnfinished(state)\n state.assigned[prop] = true // optimization; skip this if there is no listener\n if (!state.modified) {\n if (is(source(state)[prop], value)) return\n markChanged(state)\n prepareCopy(state)\n }\n state.copy[prop] = value\n}\n\nfunction markChanged(state) {\n if (!state.modified) {\n state.modified = true\n if (state.parent) markChanged(state.parent)\n }\n}\n\nfunction prepareCopy(state) {\n if (state.hasCopy) return\n state.hasCopy = true\n state.copy = shallowCopy(state.base)\n}\n\n// creates a proxy for plain objects / arrays\nfunction createProxy(parent, base) {\n const proxy = shallowCopy(base)\n each(base, i => {\n Object.defineProperty(proxy, \"\" + i, createPropertyProxy(\"\" + i))\n })\n const state = createState(parent, proxy, base)\n createHiddenProperty(proxy, PROXY_STATE, state)\n states.push(state)\n return proxy\n}\n\nfunction createPropertyProxy(prop) {\n return (\n descriptors[prop] ||\n (descriptors[prop] = {\n configurable: true,\n enumerable: true,\n get() {\n return get(this[PROXY_STATE], prop)\n },\n set(value) {\n set(this[PROXY_STATE], prop, value)\n }\n })\n )\n}\n\nfunction assertUnfinished(state) {\n if (state.finished === true)\n throw new Error(\n \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n JSON.stringify(state.copy || state.base)\n )\n}\n\n// this sounds very expensive, but actually it is not that expensive in practice\n// as it will only visit proxies, and only do key-based change detection for objects for\n// which it is not already know that they are changed (that is, only object for which no known key was changed)\nfunction markChangesSweep() {\n // intentionally we process the proxies in reverse order;\n // ideally we start by processing leafs in the tree, because if a child has changed, we don't have to check the parent anymore\n // reverse order of proxy creation approximates this\n for (let i = states.length - 1; i >= 0; i--) {\n const state = states[i]\n if (state.modified === false) {\n if (Array.isArray(state.base)) {\n if (hasArrayChanges(state)) markChanged(state)\n } else if (hasObjectChanges(state)) markChanged(state)\n }\n }\n}\n\nfunction markChangesRecursively(object) {\n if (!object || typeof object !== \"object\") return\n const state = object[PROXY_STATE]\n if (!state) return\n const {proxy, base} = state\n if (Array.isArray(object)) {\n if (hasArrayChanges(state)) {\n markChanged(state)\n state.assigned.length = true\n if (proxy.length < base.length)\n for (let i = proxy.length; i < base.length; i++)\n state.assigned[i] = false\n else\n for (let i = base.length; i < proxy.length; i++)\n state.assigned[i] = true\n each(proxy, (index, child) => {\n if (!state.assigned[index]) markChangesRecursively(child)\n })\n }\n } else {\n const {added, removed} = diffKeys(base, proxy)\n if (added.length > 0 || removed.length > 0) markChanged(state)\n each(added, (_, key) => {\n state.assigned[key] = true\n })\n each(removed, (_, key) => {\n state.assigned[key] = false\n })\n each(proxy, (key, child) => {\n if (!state.assigned[key]) markChangesRecursively(child)\n })\n }\n}\n\nfunction diffKeys(from, to) {\n // TODO: optimize\n const a = Object.keys(from)\n const b = Object.keys(to)\n return {\n added: b.filter(key => a.indexOf(key) === -1),\n removed: a.filter(key => b.indexOf(key) === -1)\n }\n}\n\nfunction hasObjectChanges(state) {\n const baseKeys = Object.keys(state.base)\n const keys = Object.keys(state.proxy)\n return !shallowEqual(baseKeys, keys)\n}\n\nfunction hasArrayChanges(state) {\n const {proxy} = state\n if (proxy.length !== state.base.length) return true\n // See #116\n // If we first shorten the length, our array interceptors will be removed.\n // If after that new items are added, result in the same original length,\n // those last items will have no intercepting property.\n // So if there is no own descriptor on the last position, we know that items were removed and added\n // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n // the last one\n const descriptor = Object.getOwnPropertyDescriptor(proxy, proxy.length - 1)\n // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n if (descriptor && !descriptor.get) return true\n // For all other cases, we don't have to compare, as they would have been picked up by the index setters\n return false\n}\n\nexport function produceEs5(baseState, producer, patchListener) {\n if (isProxy(baseState)) {\n // See #100, don't nest producers\n const returnValue = producer.call(baseState, baseState)\n return returnValue === undefined ? baseState : returnValue\n }\n const prevStates = states\n states = []\n const patches = patchListener && []\n const inversePatches = patchListener && []\n try {\n // create proxy for root\n const rootProxy = createProxy(undefined, baseState)\n // execute the thunk\n const returnValue = producer.call(rootProxy, rootProxy)\n // and finalize the modified proxy\n each(states, (_, state) => {\n state.finalizing = true\n })\n let result\n // check whether the draft was modified and/or a value was returned\n if (returnValue !== undefined && returnValue !== rootProxy) {\n // something was returned, and it wasn't the proxy itself\n if (rootProxy[PROXY_STATE].modified)\n throw new Error(RETURNED_AND_MODIFIED_ERROR)\n result = finalize(returnValue)\n if (patches) {\n patches.push({op: \"replace\", path: [], value: result})\n inversePatches.push({op: \"replace\", path: [], value: baseState})\n }\n } else {\n if (patchListener) markChangesRecursively(rootProxy)\n markChangesSweep() // this one is more efficient if we don't need to know which attributes have changed\n result = finalize(rootProxy, [], patches, inversePatches)\n }\n // make sure all proxies become unusable\n each(states, (_, state) => {\n state.finished = true\n })\n patchListener && patchListener(patches, inversePatches)\n return result\n } finally {\n states = prevStates\n }\n}\n\nfunction shallowEqual(objA, objB) {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) return true\n if (\n typeof objA !== \"object\" ||\n objA === null ||\n typeof objB !== \"object\" ||\n objB === null\n ) {\n return false\n }\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n if (keysA.length !== keysB.length) return false\n for (let i = 0; i < keysA.length; i++) {\n if (\n !hasOwnProperty.call(objB, keysA[i]) ||\n !is(objA[keysA[i]], objB[keysA[i]])\n ) {\n return false\n }\n }\n return true\n}\n\nfunction createHiddenProperty(target, prop, value) {\n Object.defineProperty(target, prop, {\n value: value,\n enumerable: false,\n writable: true\n })\n}\n","export {setAutoFreeze, setUseProxies, original} from \"./common\"\n\nimport {applyPatches as applyPatchesImpl} from \"./patches\"\nimport {isProxyable, getUseProxies, NOTHING} from \"./common\"\nimport {produceProxy} from \"./proxy\"\nimport {produceEs5} from \"./es5\"\n\n/**\n * produce takes a state, and runs a function against it.\n * That function can freely mutate the state, as it will create copies-on-write.\n * This means that the original state will stay unchanged, and once the function finishes, the modified state is returned\n *\n * @export\n * @param {any} baseState - the state to start with\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the base state if nothing was modified\n */\nexport function produce(baseState, producer, patchListener) {\n // prettier-ignore\n if (arguments.length < 1 || arguments.length > 3) throw new Error(\"produce expects 1 to 3 arguments, got \" + arguments.length)\n\n // curried invocation\n if (typeof baseState === \"function\") {\n // prettier-ignore\n if (typeof producer === \"function\") throw new Error(\"if first argument is a function (curried invocation), the second argument to produce cannot be a function\")\n\n const initialState = producer\n const recipe = baseState\n\n return function() {\n const args = arguments\n\n const currentState =\n args[0] === undefined && initialState !== undefined\n ? initialState\n : args[0]\n\n return produce(currentState, draft => {\n args[0] = draft // blegh!\n return recipe.apply(draft, args)\n })\n }\n }\n\n // prettier-ignore\n {\n if (typeof producer !== \"function\") throw new Error(\"if first argument is not a function, the second argument to produce should be a function\")\n if (patchListener !== undefined && typeof patchListener !== \"function\") throw new Error(\"the third argument of a producer should not be set or a function\")\n }\n\n // if state is a primitive, don't bother proxying at all\n if (typeof baseState !== \"object\" || baseState === null) {\n const returnValue = producer(baseState)\n return returnValue === undefined\n ? baseState\n : normalizeResult(returnValue)\n }\n\n if (!isProxyable(baseState))\n throw new Error(\n `the first argument to an immer producer should be a primitive, plain object or array, got ${typeof baseState}: \"${baseState}\"`\n )\n return normalizeResult(\n getUseProxies()\n ? produceProxy(baseState, producer, patchListener)\n : produceEs5(baseState, producer, patchListener)\n )\n}\n\nfunction normalizeResult(result) {\n return result === NOTHING ? undefined : result\n}\n\nexport default produce\n\nexport const applyPatches = produce(applyPatchesImpl)\n\nexport const nothing = NOTHING\n"],"names":["generatePatches","state","basepath","patches","inversePatches","baseValue","resultValue","Array","isArray","generateArrayPatches","generateObjectPatches","shared","Math","min","length","i","assigned","path","concat","push","op","value","key","assignedValue","origValue","applyPatches","draft","patch","slice","pop","base","reduce","current","part","Error","join","NOTHING","Symbol","PROXY_STATE","RETURNED_AND_MODIFIED_ERROR","verifyMinified","inProduction","process","env","NODE_ENV","name","autoFreeze","useProxies","Proxy","setAutoFreeze","enableAutoFreeze","setUseProxies","getUseProxies","isProxy","isProxyable","proto","Object","getPrototypeOf","prototype","freeze","original","assign","target","has","shallowCopy","__proto__","undefined","create","each","cb","thing","prop","hasOwnProperty","call","finalize","modified","finalized","copy","result","finalizeObject","finalizeNonProxiedObject","parent","isFrozen","child","is","x","y","proxies","objectTraps","source","Reflect","ownKeys","arrayTraps","fn","arguments","apply","deleteProperty","isNaN","parseInt","set","createState","get","createProxy","getOwnPropertyDescriptor","owner","descriptor","configurable","defineProperty","markChanged","parentState","proxy","revocable","produceProxy","baseState","producer","patchListener","returnValue","previousProxies","rootProxy","_","p","revoke","descriptors","states","hasCopy","finalizing","prepareCopy","createPropertyProxy","assertUnfinished","finished","JSON","stringify","markChangesSweep","hasArrayChanges","hasObjectChanges","markChangesRecursively","object","index","diffKeys","added","removed","from","to","a","keys","b","filter","indexOf","baseKeys","shallowEqual","produceEs5","prevStates","objA","objB","keysA","keysB","createHiddenProperty","produce","initialState","recipe","args","currentState","normalizeResult","applyPatchesImpl","nothing"],"mappings":"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"}