immer.cjs.development.js.map
122 KB
{"version":3,"file":"immer.cjs.development.js","sources":["../src/utils/env.ts","../src/utils/errors.ts","../src/utils/common.ts","../src/utils/plugins.ts","../src/core/scope.ts","../src/core/finalize.ts","../src/core/proxy.ts","../src/core/immerClass.ts","../src/core/current.ts","../src/plugins/es5.ts","../src/plugins/patches.ts","../src/plugins/mapset.ts","../src/plugins/all.ts","../src/immer.ts"],"sourcesContent":["// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyType.Set ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\tstate.copy_![prop] === value &&\n\t\t\t// special case: NaN\n\t\t\ttypeof value !== \"number\" &&\n\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t(value !== undefined || prop in state.copy_)\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (\n\t\tbase: any,\n\t\trecipe?: any,\n\t): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tconst p = \"\" + path[i]\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n","// types only!\nimport {\n\tImmerState,\n\tAnyMap,\n\tAnySet,\n\tMapState,\n\tSetState,\n\tDRAFT_STATE,\n\tgetCurrentScope,\n\tlatest,\n\titeratorSymbol,\n\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tProxyType,\n\tdie,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\t/* istanbul ignore next */\n\tvar extendStatics = function(d: any, b: any): any {\n\t\textendStatics =\n\t\t\tObject.setPrototypeOf ||\n\t\t\t({__proto__: []} instanceof Array &&\n\t\t\t\tfunction(d, b) {\n\t\t\t\t\td.__proto__ = b\n\t\t\t\t}) ||\n\t\t\tfunction(d, b) {\n\t\t\t\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n\t\t\t}\n\t\treturn extendStatics(d, b)\n\t}\n\n\t// Ugly hack to resolve #502 and inherit built in Map / Set\n\tfunction __extends(d: any, b: any): any {\n\t\textendStatics(d, b)\n\t\tfunction __(this: any): any {\n\t\t\tthis.constructor = d\n\t\t}\n\t\td.prototype =\n\t\t\t// @ts-ignore\n\t\t\t((__.prototype = b.prototype), new __())\n\t}\n\n\tconst DraftMap = (function(_super) {\n\t\t__extends(DraftMap, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftMap(this: any, target: AnyMap, parent?: ImmerState): any {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Map,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this as any,\n\t\t\t\tisManual_: false,\n\t\t\t\trevoked_: false\n\t\t\t} as MapState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftMap.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: false,\n\t\t\t// configurable: true\n\t\t})\n\n\t\tp.has = function(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tp.set = function(key: any, value: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!latest(state).has(key) || latest(state).get(key) !== value) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\tstate.copy_!.set(key, value)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(key: any): boolean {\n\t\t\tif (!this.has(key)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareMapCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\tif (state.base_.has(key)) {\n\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t} else {\n\t\t\t\tstate.assigned_!.delete(key)\n\t\t\t}\n\t\t\tstate.copy_!.delete(key)\n\t\t\treturn true\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_ = new Map()\n\t\t\t\teach(state.base_, key => {\n\t\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t\t})\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.forEach = function(\n\t\t\tcb: (value: any, key: any, self: any) => void,\n\t\t\tthisArg?: any\n\t\t) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tlatest(state).forEach((_value: any, key: any, _map: any) => {\n\t\t\t\tcb.call(thisArg, this.get(key), key, this)\n\t\t\t})\n\t\t}\n\n\t\tp.get = function(key: any): any {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tconst value = latest(state).get(key)\n\t\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (value !== state.base_.get(key)) {\n\t\t\t\treturn value // either already drafted or reassigned\n\t\t\t}\n\t\t\t// despite what it looks, this creates a draft only once, see above condition\n\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\tprepareMapCopy(state)\n\t\t\tstate.copy_!.set(key, draft)\n\t\t\treturn draft\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.values(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp.entries = function(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.entries(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: [r.value, value]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.entries()\n\t\t}\n\n\t\treturn DraftMap\n\t})(Map)\n\n\tfunction proxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftMap(target, parent)\n\t}\n\n\tfunction prepareMapCopy(state: MapState) {\n\t\tif (!state.copy_) {\n\t\t\tstate.assigned_ = new Map()\n\t\t\tstate.copy_ = new Map(state.base_)\n\t\t}\n\t}\n\n\tconst DraftSet = (function(_super) {\n\t\t__extends(DraftSet, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftSet(this: any, target: AnySet, parent?: ImmerState) {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Set,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this,\n\t\t\t\tdrafts_: new Map(),\n\t\t\t\trevoked_: false,\n\t\t\t\tisManual_: false\n\t\t\t} as SetState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftSet.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: true,\n\t\t})\n\n\t\tp.has = function(value: any): boolean {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\t// bit of trickery here, to be able to recognize both the value, and the draft of its value\n\t\t\tif (!state.copy_) {\n\t\t\t\treturn state.base_.has(value)\n\t\t\t}\n\t\t\tif (state.copy_.has(value)) return true\n\t\t\tif (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n\t\t\t\treturn true\n\t\t\treturn false\n\t\t}\n\n\t\tp.add = function(value: any): any {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!this.has(value)) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.add(value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(value: any): any {\n\t\t\tif (!this.has(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\treturn (\n\t\t\t\tstate.copy_!.delete(value) ||\n\t\t\t\t(state.drafts_.has(value)\n\t\t\t\t\t? state.copy_!.delete(state.drafts_.get(value))\n\t\t\t\t\t: /* istanbul ignore next */ false)\n\t\t\t)\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.values()\n\t\t}\n\n\t\tp.entries = function entries(): IterableIterator<[any, any]> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.entries()\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp.forEach = function forEach(cb: any, thisArg?: any) {\n\t\t\tconst iterator = this.values()\n\t\t\tlet result = iterator.next()\n\t\t\twhile (!result.done) {\n\t\t\t\tcb.call(thisArg, result.value, result.value, this)\n\t\t\t\tresult = iterator.next()\n\t\t\t}\n\t\t}\n\n\t\treturn DraftSet\n\t})(Set)\n\n\tfunction proxySet_<T extends AnySet>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftSet(target, parent)\n\t}\n\n\tfunction prepareSetCopy(state: SetState) {\n\t\tif (!state.copy_) {\n\t\t\t// create drafts for all entries to preserve insertion order\n\t\t\tstate.copy_ = new Set()\n\t\t\tstate.base_.forEach(value => {\n\t\t\t\tif (isDraftable(value)) {\n\t\t\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\t\t\tstate.drafts_.set(value, draft)\n\t\t\t\t\tstate.copy_!.add(draft)\n\t\t\t\t} else {\n\t\t\t\t\tstate.copy_!.add(value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"MapSet\", {proxyMap_, proxySet_})\n}\n","import {enableES5} from \"./es5\"\nimport {enableMapSet} from \"./mapset\"\nimport {enablePatches} from \"./patches\"\n\nexport function enableAllPlugins() {\n\tenableES5()\n\tenableMapSet()\n\tenablePatches()\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\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 initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n"],"names":["hasSymbol","Symbol","hasMap","Map","hasSet","Set","hasProxies","Proxy","revocable","Reflect","NOTHING","for","DRAFTABLE","DRAFT_STATE","iteratorSymbol","iterator","errors","data","path","op","plugin","thing","die","error","args","e","msg","apply","Error","isDraft","value","isDraftable","isPlainObject","Array","isArray","constructor","isMap","isSet","objectCtorString","Object","prototype","toString","proto","getPrototypeOf","Ctor","hasOwnProperty","call","Function","original","base_","ownKeys","getOwnPropertySymbols","obj","getOwnPropertyNames","concat","getOwnPropertyDescriptors","target","res","forEach","key","getOwnPropertyDescriptor","each","iter","enumerableOnly","getArchtype","keys","entry","index","state","type_","has","prop","get","set","propOrOldValue","t","delete","add","is","x","y","latest","copy_","shallowCopy","base","slice","descriptors","i","length","desc","writable","configurable","enumerable","create","freeze","deep","isFrozen","clear","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","loadPlugin","implementation","currentScope","getCurrentScope","createScope","parent_","immer_","drafts_","canAutoFreeze_","unfinalizedDrafts_","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","revokeDraft","enterScope","immer","draft","revoke_","revoked_","processResult","result","baseDraft","isReplaced","undefined","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","childValue","finalizeProperty","scope_","finalized_","draft_","generatePatches_","parentState","targetObject","rootPath","assigned_","autoFreeze_","createProxyProxy","parent","isManual_","traps","objectTraps","arrayTraps","revoke","proxy","source","readPropFromProto","peek","prepareCopy","createProxy","getDescriptorFromProto","current","currentState","markChanged","deleteProperty","owner","defineProperty","setPrototypeOf","fn","arguments","isNaN","parseInt","Immer","config","recipe","defaultBase","self","curriedProduce","produce","hasError","Promise","then","p","ip","produceWithPatches","patches","inversePatches","nextState","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","patch","applyPatchesImpl","applyPatches_","proxyMap_","proxySet_","createES5Proxy_","push","currentImpl","copy","archType","hasChanges_","copyHelper","from","enableES5","markChangesRecursively","markChangesSweep","createES5Draft","proxyProperty","assertUnrevoked","drafts","hasArrayChanges","hasObjectChanges","object","min","Math","baseValue","baseIsDraft","descriptor","JSON","stringify","enablePatches","REPLACE","ADD","REMOVE","basePath","generatePatchesFromAssigned","generateArrayPatches","generateSetPatches","clonePatchValueIfNeeded","assignedValue","origValue","unshift","replacement","parentType","join","type","deepClonePatchValue","splice","map","entries","k","v","cloned","immerable","enableMapSet","extendStatics","d","b","__proto__","__extends","__","DraftMap","_super","size","prepareMapCopy","cb","thisArg","_value","_map","values","next","r","done","DraftSet","prepareSetCopy","enableAllPlugins","bind","castDraft","castImmutable"],"mappings":"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"}