diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index cd9776bb..f5304bb1 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,8 +3,7 @@ name: Bug report about: 创建一个报告来帮助我们改进 title: "[Bug] 标题简要描述问题" labels: bug -assignees: '' - +assignees: "" --- **描述问题** @@ -12,6 +11,7 @@ assignees: '' **复现步骤** 复现该问题的步骤: + 1. 去到 '...' 2. 点击 '...' 3. 滚动到 '...' @@ -24,9 +24,10 @@ assignees: '' 如有可能,请添加截图以帮助解释问题。 **环境** + - 操作系统: [e.g. Windows, macOS] - 浏览器: [e.g. Chrome, Safari] - 仓库版本: [e.g. v1.0.0] **其他信息** -在此处添加关于该问题的任何其他信息。 \ No newline at end of file +在此处添加关于该问题的任何其他信息。 diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 5b86dfe7..eccd8712 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,8 +3,7 @@ name: Feature request about: 提出一个新功能请求 title: "[Feature] 简要描述你希望实现的功能" labels: enhancement -assignees: '' - +assignees: "" --- **功能描述** @@ -17,4 +16,4 @@ assignees: '' 描述你已经考虑过的替代方案。 **其他信息** -在这里添加任何相关的附加信息或截图。 \ No newline at end of file +在这里添加任何相关的附加信息或截图。 diff --git a/.github/workflows/push_image.yml b/.github/workflows/push_image.yml index 78aa8bf2..b64c8bbf 100644 --- a/.github/workflows/push_image.yml +++ b/.github/workflows/push_image.yml @@ -30,7 +30,7 @@ jobs: uses: docker/metadata-action@v5 with: images: | - usual2970/certimate + usual2970/certimate registry.cn-shanghai.aliyuncs.com/usual2970/certimate - name: Log in to DOCKERHUB diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 54e81666..66b8aff2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,8 +58,7 @@ Certimate 的管理页面是一个基于 React 和 Vite 构建的单页应用( 你可以通过浏览器访问 `http://localhost:5173` 来查看运行中的管理页面。 -由于 Admin UI 只是一个客户端应用,运行时需要 Certimate 的后端服务作为支撑。你可以手动运行Certimate,或者使用预构建的可执行文件。 - +由于 Admin UI 只是一个客户端应用,运行时需要 Certimate 的后端服务作为支撑。你可以手动运行 Certimate,或者使用预构建的可执行文件。 所有对 Admin UI 的修改将会自动反映在浏览器中,无需手动刷新页面。 @@ -69,4 +68,4 @@ Certimate 的管理页面是一个基于 React 和 Vite 构建的单页应用( npm run build ``` -完成所有步骤后,你可以将改动提交 PR 到 Certimate 主仓库。 \ No newline at end of file +完成所有步骤后,你可以将改动提交 PR 到 Certimate 主仓库。 diff --git a/CONTRIBUTING_EN.md b/CONTRIBUTING_EN.md index 2f2d6efd..c29ba51c 100644 --- a/CONTRIBUTING_EN.md +++ b/CONTRIBUTING_EN.md @@ -70,4 +70,4 @@ After completing your changes, build the Admin UI so it can be embedded into the npm run build ``` -Once all steps are completed, you are ready to submit a PR to the main Certimate repository. \ No newline at end of file +Once all steps are completed, you are ready to submit a PR to the main Certimate repository. diff --git a/Dockerfile_build b/Dockerfile_build index 23b27630..efd3d962 100644 --- a/Dockerfile_build +++ b/Dockerfile_build @@ -13,4 +13,4 @@ WORKDIR /app COPY --from=builder /app/certimate . -ENTRYPOINT ["./certimate", "serve", "--http", "0.0.0.0:8090"] \ No newline at end of file +ENTRYPOINT ["./certimate", "serve", "--http", "0.0.0.0:8090"] diff --git a/Makefile b/Makefile index fb6c79e9..7c2f0d6d 100644 --- a/Makefile +++ b/Makefile @@ -34,4 +34,4 @@ help: @echo " make clean - 清理构建文件" @echo " make help - 显示此帮助信息" -.PHONY: all build clean help \ No newline at end of file +.PHONY: all build clean help diff --git a/README.md b/README.md index d0866159..881a5db6 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ 做个人产品或在小企业负责运维的同学,需要管理多个域名,要给域名申请证书。但手动申请证书有以下缺点: -1. 😱麻烦:申请、部署证书虽不困难,但也挺麻烦的,尤其是维护多个域名的时候。 -2. 😭易忘:当前免费证书有效期仅90天,这就要求定期操作,增加工作量的同时,也很容易忘掉,导致网站无法访问。 +1. 😱 麻烦:申请、部署证书虽不困难,但也挺麻烦的,尤其是维护多个域名的时候。 +2. 😭 易忘:当前免费证书有效期仅 90 天,这就要求定期操作,增加工作量的同时,也很容易忘掉,导致网站无法访问。 Certimate 就是为了解决上述问题而产生的,它具有以下特点: @@ -15,9 +15,9 @@ Certimate 就是为了解决上述问题而产生的,它具有以下特点: 相关文章: -* [⚠️⚠️⚠️V0.2.0-第一个不向后兼容的版本](https://docs.certimate.me/blog/v0.2.0) -* [Why Certimate?](https://docs.certimate.me/blog/why-certimate) -* [域名变量及部署授权组介绍](https://docs.certimate.me/blog/multi-deployer) +- [⚠️⚠️⚠️V0.2.0-第一个不向后兼容的版本](https://docs.certimate.me/blog/v0.2.0) +- [Why Certimate?](https://docs.certimate.me/blog/why-certimate) +- [域名变量及部署授权组介绍](https://docs.certimate.me/blog/multi-deployer) Certimate 旨在为用户提供一个安全、简便的 SSL 证书管理解决方案。使用文档请访问[https://docs.certimate.me](https://docs.certimate.me) @@ -34,12 +34,13 @@ Certimate 旨在为用户提供一个安全、简便的 SSL 证书管理解决 ``` 或运行以下命令自动给 Certimate 自身添加证书 + ```bash ./certimate serve 你的域名 ``` > [!NOTE] -> MacOS 在执行二进制文件时会提示:无法打开“certimate”,因为Apple无法检查其是否包含恶意软件。可在系统设置> 隐私与安全性> 安全性 中点击 "仍然允许",然后再次尝试执行二进制文件。 +> MacOS 在执行二进制文件时会提示:无法打开“certimate”,因为 Apple 无法检查其是否包含恶意软件。可在系统设置> 隐私与安全性> 安全性 中点击 "仍然允许",然后再次尝试执行二进制文件。 ### 2. Docker 安装 @@ -71,14 +72,14 @@ go run main.go serve ## 三、支持的服务商列表 -| 服务商 | 是否域名服务商 | 是否部署服务 | 备注 | -| ---------- | -------------- | ------------ | ------------------------------------------------------ | -| 阿里云 | 是 | 是 | 支持阿里云注册的域名,支持部署到阿里云 CDN,OSS | -| 腾讯云 | 是 | 是 | 支持腾讯云注册的域名,支持部署到腾讯云 CDN | -| 七牛云 | 否 | 是 | 七牛云没有注册域名服务,支持部署到七牛云 CDN | -| CloudFlare | 是 | 否 | 支持 CloudFlare 注册的域名,CloudFlare 服务自带SSL证书 | -| SSH | 否 | 是 | 支持部署到 SSH 服务器 | -| WEBHOOK | 否 | 是 | 支持回调到 WEBHOOK | +| 服务商 | 是否域名服务商 | 是否部署服务 | 备注 | +| ---------- | -------------- | ------------ | -------------------------------------------------------- | +| 阿里云 | 是 | 是 | 支持阿里云注册的域名,支持部署到阿里云 CDN,OSS | +| 腾讯云 | 是 | 是 | 支持腾讯云注册的域名,支持部署到腾讯云 CDN | +| 七牛云 | 否 | 是 | 七牛云没有注册域名服务,支持部署到七牛云 CDN | +| CloudFlare | 是 | 否 | 支持 CloudFlare 注册的域名,CloudFlare 服务自带 SSL 证书 | +| SSH | 否 | 是 | 支持部署到 SSH 服务器 | +| WEBHOOK | 否 | 是 | 支持回调到 WEBHOOK | ## 四、系统截图 @@ -96,10 +97,10 @@ go run main.go serve Certimate 的工作流程如下: -* 用户通过 Certimate 管理页面填写申请证书的信息,包括域名、dns 服务商的授权信息、以及要部署到的服务商的授权信息。 -* Certimate 向证书厂商的 API 发起申请请求,获取 SSL 证书。 -* Certimate 存储证书信息,包括证书内容、私钥、证书有效期等,并在证书即将过期时自动续期。 -* Certimate 向服务商的 API 发起部署请求,将证书部署到服务商的服务器上。 +- 用户通过 Certimate 管理页面填写申请证书的信息,包括域名、dns 服务商的授权信息、以及要部署到的服务商的授权信息。 +- Certimate 向证书厂商的 API 发起申请请求,获取 SSL 证书。 +- Certimate 存储证书信息,包括证书内容、私钥、证书有效期等,并在证书即将过期时自动续期。 +- Certimate 向服务商的 API 发起部署请求,将证书部署到服务商的服务器上。 这就涉及域名、dns 服务商的授权信息、部署服务商的授权信息等。 @@ -135,17 +136,17 @@ Certimate 申请证书后,会自动将证书部署到你指定的目标上, ## 六、常见问题 -Q: 提供saas服务吗? +Q: 提供 saas 服务吗? -> A: 不提供,目前仅支持self-hosted(私有部署)。 +> A: 不提供,目前仅支持 self-hosted(私有部署)。 Q: 数据安全? -> A: 由于仅支持私有部署,各种数据都保存在用户的服务器上。另外Certimate源码也开源,二进制包及Docker镜像打包过程全部使用Github actions进行,过程透明可见,可自行审计。 +> A: 由于仅支持私有部署,各种数据都保存在用户的服务器上。另外 Certimate 源码也开源,二进制包及 Docker 镜像打包过程全部使用 Github actions 进行,过程透明可见,可自行审计。 Q: 自动续期证书? -> A: 已经申请的证书会在过期前10天自动续期。每天会检查一次证书是否快要过期,快要过期时会自动重新申请证书并部署到目标服务上。 +> A: 已经申请的证书会在过期前 10 天自动续期。每天会检查一次证书是否快要过期,快要过期时会自动重新申请证书并部署到目标服务上。 ## 七、贡献 @@ -153,17 +154,18 @@ Certimate 是一个免费且开源的项目,采用 [MIT 开源协议](LICENSE. 你可以通过以下方式来支持 Certimate 的开发: -* [提交代码:如果你发现了 bug 或有新的功能需求,而你又有相关经验,可以提交代码给我们](CONTRIBUTING.md)。 -* 提交 issue:功能建议或者 bug 可以[提交 issue](https://github.com/usual2970/certimate/issues) 给我们。 +- [提交代码:如果你发现了 bug 或有新的功能需求,而你又有相关经验,可以提交代码给我们](CONTRIBUTING.md)。 +- 提交 issue:功能建议或者 bug 可以[提交 issue](https://github.com/usual2970/certimate/issues) 给我们。 支持更多服务商、UI 的优化改进、BUG 修复、文档完善等,欢迎大家提交 PR。 ## 八、加入社区 -* [Telegram-a new era of messaging](https://t.me/+ZXphsppxUg41YmVl) -* 微信群聊(超200人需邀请入群,可先加作者好友) +- [Telegram-a new era of messaging](https://t.me/+ZXphsppxUg41YmVl) +- 微信群聊(超 200 人需邀请入群,可先加作者好友) ## 九、Star History + [![Stargazers over time](https://starchart.cc/usual2970/certimate.svg?variant=adaptive)](https://starchart.cc/usual2970/certimate) diff --git a/README_EN.md b/README_EN.md index 4d1794ea..9064b8b6 100644 --- a/README_EN.md +++ b/README_EN.md @@ -15,8 +15,8 @@ Certimate was created to solve the above-mentioned issues and has the following Related articles: -* [Why Certimate?](https://docs.certimate.me/blog/why-certimate) -* [Introduction to Domain Variables and Deployment Authorization Groups](https://docs.certimate.me/blog/multi-deployer) +- [Why Certimate?](https://docs.certimate.me/blog/why-certimate) +- [Introduction to Domain Variables and Deployment Authorization Groups](https://docs.certimate.me/blog/multi-deployer) Certimate aims to provide users with a secure and user-friendly SSL certificate management solution. For usage documentation, please visit.[https://docs.certimate.me](https://docs.certimate.me) @@ -96,10 +96,10 @@ password:1234567890 The workflow of Certimate is as follows: -* Users fill in the certificate application information on the Certimate management page, including domain name, authorization information for the DNS provider, and authorization information for the service provider to deploy to. -* Certimate sends a request to the certificate vendor's API to apply for an SSL certificate. -* Certimate stores the certificate information, including the certificate content, private key, validity period, etc., and automatically renews the certificate when it is about to expire. -* Certimate sends a deployment request to the service provider's API to deploy the certificate to the service provider's servers. +- Users fill in the certificate application information on the Certimate management page, including domain name, authorization information for the DNS provider, and authorization information for the service provider to deploy to. +- Certimate sends a request to the certificate vendor's API to apply for an SSL certificate. +- Certimate stores the certificate information, including the certificate content, private key, validity period, etc., and automatically renews the certificate when it is about to expire. +- Certimate sends a deployment request to the service provider's API to deploy the certificate to the service provider's servers. This involves authorization information for the domain, DNS provider, and deployment service provider. @@ -153,14 +153,14 @@ Certimate is a free and open-source project, licensed under the [MIT License](LI You can support the development of Certimate in the following ways: -* **Submit Code**: If you find a bug or have new feature requests, and you have relevant experience, [you can submit code to us](CONTRIBUTING_EN.md). -* **Submit an Issue**: For feature suggestions or bugs, you can [submit an issue](https://github.com/usual2970/certimate/issues) to us. +- **Submit Code**: If you find a bug or have new feature requests, and you have relevant experience, [you can submit code to us](CONTRIBUTING_EN.md). +- **Submit an Issue**: For feature suggestions or bugs, you can [submit an issue](https://github.com/usual2970/certimate/issues) to us. Support for more service providers, UI enhancements, bug fixes, and documentation improvements are all welcome. We encourage everyone to submit pull requests (PRs). ## Join the Community -* [Telegram-a new era of messaging](https://t.me/+ZXphsppxUg41YmVl) -* Wechat Group +- [Telegram-a new era of messaging](https://t.me/+ZXphsppxUg41YmVl) +- Wechat Group diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 385bc989..858148e8 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,10 +1,10 @@ -version: '3.0' +version: "3.0" services: - certimate: - image: registry.cn-shanghai.aliyuncs.com/usual2970/certimate:latest - container_name: certimate_server - ports: + certimate: + image: registry.cn-shanghai.aliyuncs.com/usual2970/certimate:latest + container_name: certimate_server + ports: - 8090:8090 - volumes: + volumes: - ./data:/app/pb_data - restart: unless-stopped \ No newline at end of file + restart: unless-stopped diff --git a/nixpacks.toml b/nixpacks.toml index 1d68c6bf..c56baee7 100644 --- a/nixpacks.toml +++ b/nixpacks.toml @@ -27,4 +27,4 @@ nixOverlays = [] nixpkgsArchive = '1f13eabcd6f5b00fe9de9575ac52c66a0e887ce6' [start] -cmd = './out serve --http=0.0.0.0:8090 --dir=/data/pb_data ' \ No newline at end of file +cmd = './out serve --http=0.0.0.0:8090 --dir=/data/pb_data ' diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index 2e03ca09..00000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "certimate", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/immer": { - "version": "10.1.1", - "resolved": "https://registry.npmmirror.com/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - } - } -} diff --git a/node_modules/immer/LICENSE b/node_modules/immer/LICENSE deleted file mode 100644 index c0141158..00000000 --- a/node_modules/immer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Michel Weststrate - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/immer/dist/cjs/immer.cjs.development.js b/node_modules/immer/dist/cjs/immer.cjs.development.js deleted file mode 100644 index 893f6952..00000000 --- a/node_modules/immer/dist/cjs/immer.cjs.development.js +++ /dev/null @@ -1,1276 +0,0 @@ -"use strict"; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/immer.ts -var immer_exports = {}; -__export(immer_exports, { - Immer: () => Immer2, - applyPatches: () => applyPatches, - castDraft: () => castDraft, - castImmutable: () => castImmutable, - createDraft: () => createDraft, - current: () => current, - enableMapSet: () => enableMapSet, - enablePatches: () => enablePatches, - finishDraft: () => finishDraft, - freeze: () => freeze, - immerable: () => DRAFTABLE, - isDraft: () => isDraft, - isDraftable: () => isDraftable, - nothing: () => NOTHING, - original: () => original, - produce: () => produce, - produceWithPatches: () => produceWithPatches, - setAutoFreeze: () => setAutoFreeze, - setUseStrictShallowCopy: () => setUseStrictShallowCopy -}); -module.exports = __toCommonJS(immer_exports); - -// src/utils/env.ts -var NOTHING = Symbol.for("immer-nothing"); -var DRAFTABLE = Symbol.for("immer-draftable"); -var DRAFT_STATE = Symbol.for("immer-state"); - -// src/utils/errors.ts -var errors = process.env.NODE_ENV !== "production" ? [ - // All error codes, starting by 0: - function(plugin) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; - }, - function(thing) { - return `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}'`; - }, - "This object has been frozen and should not be mutated", - function(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing) { - return `'current' expects a draft, got: ${thing}`; - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing) { - return `'original' expects a draft, got: ${thing}`; - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors -] : []; -function die(error, ...args) { - if (process.env.NODE_ENV !== "production") { - const e = errors[error]; - const msg = typeof e === "function" ? e.apply(null, args) : e; - throw new Error(`[Immer] ${msg}`); - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ); -} - -// src/utils/common.ts -var getPrototypeOf = Object.getPrototypeOf; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - if (!value) - return false; - return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); -} -var objectCtorString = Object.prototype.constructor.toString(); -function isPlainObject(value) { - if (!value || typeof value !== "object") - return false; - const proto = getPrototypeOf(value); - if (proto === null) { - return true; - } - const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) - return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; -} -function original(value) { - if (!isDraft(value)) - die(15, value); - return value[DRAFT_STATE].base_; -} -function each(obj, iter) { - if (getArchtype(obj) === 0 /* Object */) { - Reflect.ownKeys(obj).forEach((key) => { - iter(key, obj[key], obj); - }); - } else { - obj.forEach((entry, index) => iter(index, entry, obj)); - } -} -function getArchtype(thing) { - const state = thing[DRAFT_STATE]; - return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; -} -function has(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); -} -function get(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop]; -} -function set(thing, propOrOldValue, value) { - const t = getArchtype(thing); - if (t === 2 /* Map */) - thing.set(propOrOldValue, value); - else if (t === 3 /* Set */) { - thing.add(value); - } else - thing[propOrOldValue] = value; -} -function is(x, y) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} -function isMap(target) { - return target instanceof Map; -} -function isSet(target) { - return target instanceof Set; -} -function latest(state) { - return state.copy_ || state.base_; -} -function shallowCopy(base, strict) { - if (isMap(base)) { - return new Map(base); - } - if (isSet(base)) { - return new Set(base); - } - if (Array.isArray(base)) - return Array.prototype.slice.call(base); - const isPlain = isPlainObject(base); - if (strict === true || strict === "class_only" && !isPlain) { - const descriptors = Object.getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - let keys = Reflect.ownKeys(descriptors); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const desc = descriptors[key]; - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, - // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - }; - } - return Object.create(getPrototypeOf(base), descriptors); - } else { - const proto = getPrototypeOf(base); - if (proto !== null && isPlain) { - return { ...base }; - } - const obj = Object.create(proto); - return Object.assign(obj, base); - } -} -function freeze(obj, deep = false) { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) - return obj; - if (getArchtype(obj) > 1) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - Object.freeze(obj); - if (deep) - Object.entries(obj).forEach(([key, value]) => freeze(value, true)); - return obj; -} -function dontMutateFrozenCollections() { - die(2); -} -function isFrozen(obj) { - return Object.isFrozen(obj); -} - -// src/utils/plugins.ts -var plugins = {}; -function getPlugin(pluginKey) { - const plugin = plugins[pluginKey]; - if (!plugin) { - die(0, pluginKey); - } - return plugin; -} -function loadPlugin(pluginKey, implementation) { - if (!plugins[pluginKey]) - plugins[pluginKey] = implementation; -} - -// src/core/scope.ts -var currentScope; -function getCurrentScope() { - return currentScope; -} -function createScope(parent_, immer_) { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - }; -} -function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } -} -function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); - scope.drafts_ = null; -} -function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } -} -function enterScope(immer2) { - return currentScope = createScope(currentScope, immer2); -} -function revokeDraft(draft) { - const state = draft[DRAFT_STATE]; - if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) - state.revoke_(); - else - state.revoked_ = true; -} - -// src/core/finalize.ts -function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - const baseDraft = scope.drafts_[0]; - const isReplaced = result !== void 0 && result !== baseDraft; - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - if (isDraftable(result)) { - result = finalize(scope, result); - if (!scope.parent_) - maybeFreeze(scope, result); - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_ - ); - } - } else { - result = finalize(scope, baseDraft, []); - } - revokeScope(scope); - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - return result !== NOTHING ? result : void 0; -} -function finalize(rootScope, value, path) { - if (isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - if (!state) { - each( - value, - (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) - ); - return value; - } - if (state.scope_ !== rootScope) - return value; - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - const result = state.copy_; - let resultEach = result; - let isSet2 = false; - if (state.type_ === 3 /* Set */) { - resultEach = new Set(result); - result.clear(); - isSet2 = true; - } - each( - resultEach, - (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) - ); - maybeFreeze(rootScope, result, false); - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_ - ); - } - } - return state.copy_; -} -function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5); - if (isDraft(childValue)) { - const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; - const res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else - return; - } else if (targetIsSet) { - targetObject.add(childValue); - } - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - return; - } - finalize(rootScope, childValue); - if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) - maybeFreeze(rootScope, childValue); - } -} -function maybeFreeze(scope, value, deep = false) { - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } -} - -// src/core/proxy.ts -function createProxyProxy(base, parent) { - const isArray = Array.isArray(base); - const state = { - type_: isArray ? 1 /* Array */ : 0 /* Object */, - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false - }; - let target = state; - let traps = objectTraps; - if (isArray) { - target = [state]; - traps = arrayTraps; - } - const { revoke, proxy } = Proxy.revocable(target, traps); - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; -} -var objectTraps = { - get(state, prop) { - if (prop === DRAFT_STATE) - return state; - const source = latest(state); - if (!has(source, prop)) { - return readPropFromProto(state, source, prop); - } - const value = source[prop]; - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(value, state); - } - return value; - }, - has(state, prop) { - return prop in latest(state); - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set(state, prop, value) { - const desc = getDescriptorFromProto(latest(state), prop); - if (desc?.set) { - desc.set.call(state.draft_, value); - return true; - } - if (!state.modified_) { - const current2 = peek(latest(state), prop); - const currentState = current2?.[DRAFT_STATE]; - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; - } - if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) - return true; - prepareCopy(state); - markChanged(state); - } - if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' - (value !== void 0 || prop in state.copy_) || // special case: NaN - Number.isNaN(value) && Number.isNaN(state.copy_[prop])) - return true; - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty(state, prop) { - if (peek(state.base_, prop) !== void 0 || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - delete state.assigned_[prop]; - } - if (state.copy_) { - delete state.copy_[prop]; - } - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state); - const desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) - return desc; - return { - writable: true, - configurable: state.type_ !== 1 /* Array */ || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty() { - die(11); - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_); - }, - setPrototypeOf() { - die(12); - } -}; -var arrayTraps = {}; -each(objectTraps, (key, fn) => { - arrayTraps[key] = function() { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); -arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) - die(13); - return arrayTraps.set.call(this, state, prop, void 0); -}; -arrayTraps.set = function(state, prop, value) { - if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) - die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); -}; -function peek(draft, prop) { - const state = draft[DRAFT_STATE]; - const source = state ? latest(state) : draft; - return source[prop]; -} -function readPropFromProto(state, source, prop) { - const desc = getDescriptorFromProto(source, prop); - return desc ? `value` in desc ? desc.value : ( - // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - desc.get?.call(state.draft_) - ) : void 0; -} -function getDescriptorFromProto(source, prop) { - if (!(prop in source)) - return void 0; - let proto = getPrototypeOf(source); - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) - return desc; - proto = getPrototypeOf(proto); - } - return void 0; -} -function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - if (state.parent_) { - markChanged(state.parent_); - } - } -} -function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ); - } -} - -// src/core/immerClass.ts -var Immer2 = class { - constructor(config) { - this.autoFreeze_ = true; - this.useStrictShallowCopy_ = false; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - this.produce = (base, recipe, patchListener) => { - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe; - recipe = base; - const self = this; - return function curriedProduce(base2 = defaultBase, ...args) { - return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); - }; - } - if (typeof recipe !== "function") - die(6); - if (patchListener !== void 0 && typeof patchListener !== "function") - die(7); - let result; - if (isDraftable(base)) { - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - let hasError = true; - try { - result = recipe(proxy); - hasError = false; - } finally { - if (hasError) - revokeScope(scope); - else - leaveScope(scope); - } - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === void 0) - result = base; - if (result === NOTHING) - result = void 0; - if (this.autoFreeze_) - freeze(result, true); - if (patchListener) { - const p = []; - const ip = []; - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); - patchListener(p, ip); - } - return result; - } else - die(1, base); - }; - this.produceWithPatches = (base, recipe) => { - if (typeof base === "function") { - return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); - } - let patches, inversePatches; - const result = this.produce(base, recipe, (p, ip) => { - patches = p; - inversePatches = ip; - }); - return [result, patches, inversePatches]; - }; - if (typeof config?.autoFreeze === "boolean") - this.setAutoFreeze(config.autoFreeze); - if (typeof config?.useStrictShallowCopy === "boolean") - this.setUseStrictShallowCopy(config.useStrictShallowCopy); - } - createDraft(base) { - if (!isDraftable(base)) - die(8); - if (isDraft(base)) - base = current(base); - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - } - finishDraft(draft, patchListener) { - const state = draft && draft[DRAFT_STATE]; - if (!state || !state.isManual_) - die(9); - const { scope_: scope } = state; - usePatchesInScope(scope, patchListener); - return processResult(void 0, scope); - } - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value) { - this.autoFreeze_ = value; - } - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value) { - this.useStrictShallowCopy_ = value; - } - applyPatches(base, patches) { - let i; - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i]; - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; - } - } - if (i > -1) { - patches = patches.slice(i + 1); - } - const applyPatchesImpl = getPlugin("Patches").applyPatches_; - if (isDraft(base)) { - return applyPatchesImpl(base, patches); - } - return this.produce( - base, - (draft) => applyPatchesImpl(draft, patches) - ); - } -}; -function createProxy(value, parent) { - const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); - const scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; -} - -// src/core/current.ts -function current(value) { - if (!isDraft(value)) - die(10, value); - return currentImpl(value); -} -function currentImpl(value) { - if (!isDraftable(value) || isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - let copy; - if (state) { - if (!state.modified_) - return state.base_; - state.finalized_ = true; - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); - } else { - copy = shallowCopy(value, true); - } - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)); - }); - if (state) { - state.finalized_ = false; - } - return copy; -} - -// src/plugins/patches.ts -function enablePatches() { - const errorOffset = 16; - if (process.env.NODE_ENV !== "production") { - errors.push( - 'Sets cannot have "replace" patches.', - function(op) { - return "Unsupported patch operation: " + op; - }, - function(path) { - return "Cannot apply patch, path doesn't resolve: " + path; - }, - "Patching reserved attributes like __proto__, prototype and constructor is not allowed" - ); - } - const REPLACE = "replace"; - const ADD = "add"; - const REMOVE = "remove"; - function generatePatches_(state, basePath, patches, inversePatches) { - switch (state.type_) { - case 0 /* Object */: - case 2 /* Map */: - return generatePatchesFromAssigned( - state, - basePath, - patches, - inversePatches - ); - case 1 /* Array */: - return generateArrayPatches(state, basePath, patches, inversePatches); - case 3 /* Set */: - return generateSetPatches( - state, - basePath, - patches, - inversePatches - ); - } - } - function generateArrayPatches(state, basePath, patches, inversePatches) { - let { base_, assigned_ } = state; - let copy_ = state.copy_; - if (copy_.length < base_.length) { - ; - [base_, copy_] = [copy_, base_]; - [patches, inversePatches] = [inversePatches, patches]; - } - for (let i = 0; i < base_.length; i++) { - if (assigned_[i] && copy_[i] !== base_[i]) { - const path = basePath.concat([i]); - patches.push({ - op: REPLACE, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - inversePatches.push({ - op: REPLACE, - path, - value: clonePatchValueIfNeeded(base_[i]) - }); - } - } - for (let i = base_.length; i < copy_.length; i++) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - } - for (let i = copy_.length - 1; base_.length <= i; --i) { - const path = basePath.concat([i]); - inversePatches.push({ - op: REMOVE, - path - }); - } - } - function generatePatchesFromAssigned(state, basePath, patches, inversePatches) { - const { base_, copy_ } = state; - each(state.assigned_, (key, assignedValue) => { - const origValue = get(base_, key); - const value = get(copy_, key); - const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD; - if (origValue === value && op === REPLACE) - return; - const path = basePath.concat(key); - patches.push(op === REMOVE ? { op, path } : { op, path, value }); - inversePatches.push( - op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) } - ); - }); - } - function generateSetPatches(state, basePath, patches, inversePatches) { - let { base_, copy_ } = state; - let i = 0; - base_.forEach((value) => { - if (!copy_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: REMOVE, - path, - value - }); - inversePatches.unshift({ - op: ADD, - path, - value - }); - } - i++; - }); - i = 0; - copy_.forEach((value) => { - if (!base_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - value - }); - inversePatches.unshift({ - op: REMOVE, - path, - value - }); - } - i++; - }); - } - function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) { - patches.push({ - op: REPLACE, - path: [], - value: replacement === NOTHING ? void 0 : replacement - }); - inversePatches.push({ - op: REPLACE, - path: [], - value: baseValue - }); - } - function applyPatches_(draft, patches) { - patches.forEach((patch) => { - const { path, op } = patch; - let base = draft; - for (let i = 0; i < path.length - 1; i++) { - const parentType = getArchtype(base); - let p = path[i]; - if (typeof p !== "string" && typeof p !== "number") { - p = "" + p; - } - if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === "__proto__" || p === "constructor")) - die(errorOffset + 3); - if (typeof base === "function" && p === "prototype") - die(errorOffset + 3); - base = get(base, p); - if (typeof base !== "object") - die(errorOffset + 2, path.join("/")); - } - const type = getArchtype(base); - const value = deepClonePatchValue(patch.value); - const key = path[path.length - 1]; - switch (op) { - case REPLACE: - switch (type) { - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - die(errorOffset); - default: - return base[key] = value; - } - case ADD: - switch (type) { - case 1 /* Array */: - return key === "-" ? base.push(value) : base.splice(key, 0, value); - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - return base.add(value); - default: - return base[key] = value; - } - case REMOVE: - switch (type) { - case 1 /* Array */: - return base.splice(key, 1); - case 2 /* Map */: - return base.delete(key); - case 3 /* Set */: - return base.delete(patch.value); - default: - return delete base[key]; - } - default: - die(errorOffset + 1, op); - } - }); - return draft; - } - function deepClonePatchValue(obj) { - if (!isDraftable(obj)) - return obj; - if (Array.isArray(obj)) - return obj.map(deepClonePatchValue); - if (isMap(obj)) - return new Map( - Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)]) - ); - if (isSet(obj)) - return new Set(Array.from(obj).map(deepClonePatchValue)); - const cloned = Object.create(getPrototypeOf(obj)); - for (const key in obj) - cloned[key] = deepClonePatchValue(obj[key]); - if (has(obj, DRAFTABLE)) - cloned[DRAFTABLE] = obj[DRAFTABLE]; - return cloned; - } - function clonePatchValueIfNeeded(obj) { - if (isDraft(obj)) { - return deepClonePatchValue(obj); - } else - return obj; - } - loadPlugin("Patches", { - applyPatches_, - generatePatches_, - generateReplacementPatches_ - }); -} - -// src/plugins/mapset.ts -function enableMapSet() { - class DraftMap extends Map { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 2 /* Map */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - assigned_: void 0, - base_: target, - draft_: this, - isManual_: false, - revoked_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(key) { - return latest(this[DRAFT_STATE]).has(key); - } - set(key, value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!latest(state).has(key) || latest(state).get(key) !== value) { - prepareMapCopy(state); - markChanged(state); - state.assigned_.set(key, true); - state.copy_.set(key, value); - state.assigned_.set(key, true); - } - return this; - } - delete(key) { - if (!this.has(key)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareMapCopy(state); - markChanged(state); - if (state.base_.has(key)) { - state.assigned_.set(key, false); - } else { - state.assigned_.delete(key); - } - state.copy_.delete(key); - return true; - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareMapCopy(state); - markChanged(state); - state.assigned_ = /* @__PURE__ */ new Map(); - each(state.base_, (key) => { - state.assigned_.set(key, false); - }); - state.copy_.clear(); - } - } - forEach(cb, thisArg) { - const state = this[DRAFT_STATE]; - latest(state).forEach((_value, key, _map) => { - cb.call(thisArg, this.get(key), key, this); - }); - } - get(key) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - const value = latest(state).get(key); - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value !== state.base_.get(key)) { - return value; - } - const draft = createProxy(value, state); - prepareMapCopy(state); - state.copy_.set(key, draft); - return draft; - } - keys() { - return latest(this[DRAFT_STATE]).keys(); - } - values() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.values(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value - }; - } - }; - } - entries() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.entries(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value: [r.value, value] - }; - } - }; - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.entries(); - } - } - function proxyMap_(target, parent) { - return new DraftMap(target, parent); - } - function prepareMapCopy(state) { - if (!state.copy_) { - state.assigned_ = /* @__PURE__ */ new Map(); - state.copy_ = new Map(state.base_); - } - } - class DraftSet extends Set { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 3 /* Set */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - base_: target, - draft_: this, - drafts_: /* @__PURE__ */ new Map(), - revoked_: false, - isManual_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!state.copy_) { - return state.base_.has(value); - } - if (state.copy_.has(value)) - return true; - if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value))) - return true; - return false; - } - add(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!this.has(value)) { - prepareSetCopy(state); - markChanged(state); - state.copy_.add(value); - } - return this; - } - delete(value) { - if (!this.has(value)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - markChanged(state); - return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : ( - /* istanbul ignore next */ - false - )); - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareSetCopy(state); - markChanged(state); - state.copy_.clear(); - } - } - values() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.values(); - } - entries() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.entries(); - } - keys() { - return this.values(); - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.values(); - } - forEach(cb, thisArg) { - const iterator = this.values(); - let result = iterator.next(); - while (!result.done) { - cb.call(thisArg, result.value, result.value, this); - result = iterator.next(); - } - } - } - function proxySet_(target, parent) { - return new DraftSet(target, parent); - } - function prepareSetCopy(state) { - if (!state.copy_) { - state.copy_ = /* @__PURE__ */ new Set(); - state.base_.forEach((value) => { - if (isDraftable(value)) { - const draft = createProxy(value, state); - state.drafts_.set(value, draft); - state.copy_.add(draft); - } else { - state.copy_.add(value); - } - }); - } - } - function assertUnrevoked(state) { - if (state.revoked_) - die(3, JSON.stringify(latest(state))); - } - loadPlugin("MapSet", { proxyMap_, proxySet_ }); -} - -// src/immer.ts -var immer = new Immer2(); -var produce = immer.produce; -var produceWithPatches = immer.produceWithPatches.bind( - immer -); -var setAutoFreeze = immer.setAutoFreeze.bind(immer); -var setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer); -var applyPatches = immer.applyPatches.bind(immer); -var createDraft = immer.createDraft.bind(immer); -var finishDraft = immer.finishDraft.bind(immer); -function castDraft(value) { - return value; -} -function castImmutable(value) { - return value; -} -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - Immer, - applyPatches, - castDraft, - castImmutable, - createDraft, - current, - enableMapSet, - enablePatches, - finishDraft, - freeze, - immerable, - isDraft, - isDraftable, - nothing, - original, - produce, - produceWithPatches, - setAutoFreeze, - setUseStrictShallowCopy -}); -//# sourceMappingURL=immer.cjs.development.js.map \ No newline at end of file diff --git a/node_modules/immer/dist/cjs/immer.cjs.development.js.map b/node_modules/immer/dist/cjs/immer.cjs.development.js.map deleted file mode 100644 index 5b6b3aec..00000000 --- a/node_modules/immer/dist/cjs/immer.cjs.development.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/immer.ts","../../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/patches.ts","../../src/plugins/mapset.ts"],"sourcesContent":["import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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(value: T): Draft {\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(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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(obj: T, deep?: boolean): T\nexport function freeze(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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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_(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\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(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object 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> = 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 = {\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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): 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\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\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(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction(op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction(path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\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 ArchType.Object:\n\t\t\tcase ArchType.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 ArchType.Array:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ArchType.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: 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\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\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 | 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_(draft: T, patches: readonly 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\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\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(errorOffset + 3)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\")\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(errorOffset + 2, 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(errorOffset)\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(errorOffset + 1, 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(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(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(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\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(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\tdelete(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\tclear() {\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\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\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\tget(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(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\tkeys(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_(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\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(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\tadd(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\tdelete(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\tclear() {\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\tvalues(): IterableIterator {\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\tentries(): 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\tkeys(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(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\t}\n\tfunction proxySet_(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(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"],"mappings":"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","names":["Immer","immer","isSet","current","Immer","base","Immer"]} \ No newline at end of file diff --git a/node_modules/immer/dist/cjs/immer.cjs.production.js b/node_modules/immer/dist/cjs/immer.cjs.production.js deleted file mode 100644 index 4b958095..00000000 --- a/node_modules/immer/dist/cjs/immer.cjs.production.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";var ne=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var be=Object.getOwnPropertyNames;var Te=Object.prototype.hasOwnProperty;var Ae=(e,t)=>{for(var r in t)ne(e,r,{get:t[r],enumerable:!0})},Ie=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of be(t))!Te.call(e,i)&&i!==r&&ne(e,i,{get:()=>t[i],enumerable:!(n=ge(t,i))||n.enumerable});return e};var De=e=>Ie(ne({},"__esModule",{value:!0}),e);var Be={};Ae(Be,{Immer:()=>J,applyPatches:()=>Ce,castDraft:()=>ke,castImmutable:()=>Ke,createDraft:()=>Re,current:()=>re,enableMapSet:()=>xe,enablePatches:()=>Pe,finishDraft:()=>ve,freeze:()=>K,immerable:()=>N,isDraft:()=>O,isDraftable:()=>A,nothing:()=>j,original:()=>le,produce:()=>Fe,produceWithPatches:()=>Ne,setAutoFreeze:()=>ze,setUseStrictShallowCopy:()=>je});module.exports=De(Be);var j=Symbol.for("immer-nothing"),N=Symbol.for("immer-draftable"),u=Symbol.for("immer-state");function h(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var z=Object.getPrototypeOf;function O(e){return!!e&&!!e[u]}function A(e){return e?ye(e)||Array.isArray(e)||!!e[N]||!!e.constructor?.[N]||v(e)||k(e):!1}var Oe=Object.prototype.constructor.toString();function ye(e){if(!e||typeof e!="object")return!1;let t=z(e);if(t===null)return!0;let r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object?!0:typeof r=="function"&&Function.toString.call(r)===Oe}function le(e){return O(e)||h(15,e),e[u].t}function _(e,t){C(e)===0?Reflect.ownKeys(e).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function C(e){let t=e[u];return t?t.o:Array.isArray(e)?1:v(e)?2:k(e)?3:0}function R(e,t){return C(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function X(e,t){return C(e)===2?e.get(t):e[t]}function Q(e,t,r){let n=C(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function pe(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function v(e){return e instanceof Map}function k(e){return e instanceof Set}function T(e){return e.e||e.t}function L(e,t){if(v(e))return new Map(e);if(k(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let r=ye(e);if(t===!0||t==="class_only"&&!r){let n=Object.getOwnPropertyDescriptors(e);delete n[u];let i=Reflect.ownKeys(n);for(let f=0;f1&&(e.set=e.add=e.clear=e.delete=Me),Object.freeze(e),t&&Object.entries(e).forEach(([r,n])=>K(n,!0))),e}function Me(){h(2)}function $(e){return Object.isFrozen(e)}var ae={};function w(e){let t=ae[e];return t||h(0,e),t}function Y(e,t){ae[e]||(ae[e]=t)}var U;function B(){return U}function _e(e,t){return{a:[],i:e,p:t,P:!0,d:0}}function oe(e,t){t&&(w("Patches"),e.f=[],e.h=[],e.b=t)}function V(e){Z(e),e.a.forEach(we),e.a=null}function Z(e){e===U&&(U=e.i)}function ie(e){return U=_e(U,e)}function we(e){let t=e[u];t.o===0||t.o===1?t.x():t.m=!0}function se(e,t){t.d=t.a.length;let r=t.a[0];return e!==void 0&&e!==r?(r[u].s&&(V(t),h(4)),A(e)&&(e=ee(t,e),t.i||te(t,e)),t.f&&w("Patches").T(r[u].t,e,t.f,t.h)):e=ee(t,r,[]),V(t),t.f&&t.b(t.f,t.h),e!==j?e:void 0}function ee(e,t,r){if($(t))return t;let n=t[u];if(!n)return _(t,(i,f)=>de(e,n,t,i,f,r)),t;if(n.n!==e)return t;if(!n.s)return te(e,n.t,!0),n.t;if(!n.c){n.c=!0,n.n.d--;let i=n.e,f=i,l=!1;n.o===3&&(f=new Set(i),i.clear(),l=!0),_(f,(c,b)=>de(e,n,i,c,b,r,l)),te(e,i,!1),r&&e.f&&w("Patches").g(n,r,e.f,e.h)}return n.e}function de(e,t,r,n,i,f,l){if(O(i)){let c=f&&t&&t.o!==3&&!R(t.r,n)?f.concat(n):void 0,b=ee(e,i,c);if(Q(r,n,b),O(b))e.P=!1;else return}else l&&r.add(i);if(A(i)&&!$(i)){if(!e.p.y&&e.d<1)return;ee(e,i),(!t||!t.n.i)&&typeof n!="symbol"&&Object.prototype.propertyIsEnumerable.call(r,n)&&te(e,i)}}function te(e,t,r=!1){!e.i&&e.p.y&&e.P&&K(t,r)}function he(e,t){let r=Array.isArray(e),n={o:r?1:0,n:t?t.n:B(),s:!1,c:!1,r:{},i:t,t:e,u:null,e:null,x:null,l:!1},i=n,f=ue;r&&(i=[n],f=q);let{revoke:l,proxy:c}=Proxy.revocable(i,f);return n.u=c,n.x=l,c}var ue={get(e,t){if(t===u)return e;let r=T(e);if(!R(r,t))return Ee(e,r,t);let n=r[t];return e.c||!A(n)?n:n===ce(e.t,t)?(fe(e),e.e[t]=W(n,e)):n},has(e,t){return t in T(e)},ownKeys(e){return Reflect.ownKeys(T(e))},set(e,t,r){let n=me(T(e),t);if(n?.set)return n.set.call(e.u,r),!0;if(!e.s){let i=ce(T(e),t),f=i?.[u];if(f&&f.t===r)return e.e[t]=r,e.r[t]=!1,!0;if(pe(r,i)&&(r!==void 0||R(e.t,t)))return!0;fe(e),E(e)}return e.e[t]===r&&(r!==void 0||t in e.e)||Number.isNaN(r)&&Number.isNaN(e.e[t])||(e.e[t]=r,e.r[t]=!0),!0},deleteProperty(e,t){return ce(e.t,t)!==void 0||t in e.t?(e.r[t]=!1,fe(e),E(e)):delete e.r[t],e.e&&delete e.e[t],!0},getOwnPropertyDescriptor(e,t){let r=T(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.o!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){h(11)},getPrototypeOf(e){return z(e.t)},setPrototypeOf(){h(12)}},q={};_(ue,(e,t)=>{q[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});q.deleteProperty=function(e,t){return q.set.call(this,e,t,void 0)};q.set=function(e,t,r){return ue.set.call(this,e[0],t,r,e[0])};function ce(e,t){let r=e[u];return(r?T(r):e)[t]}function Ee(e,t,r){let n=me(t,r);return n?"value"in n?n.value:n.get?.call(e.u):void 0}function me(e,t){if(!(t in e))return;let r=z(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=z(r)}}function E(e){e.s||(e.s=!0,e.i&&E(e.i))}function fe(e){e.e||(e.e=L(e.t,e.n.p.S))}var J=class{constructor(t){this.y=!0;this.S=!1;this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){let f=r;r=t;let l=this;return function(b=f,...a){return l.produce(b,o=>r.call(this,o,...a))}}typeof r!="function"&&h(6),n!==void 0&&typeof n!="function"&&h(7);let i;if(A(t)){let f=ie(this),l=W(t,void 0),c=!0;try{i=r(l),c=!1}finally{c?V(f):Z(f)}return oe(f,n),se(i,f)}else if(!t||typeof t!="object"){if(i=r(t),i===void 0&&(i=t),i===j&&(i=void 0),this.y&&K(i,!0),n){let f=[],l=[];w("Patches").T(t,i,f,l),n(f,l)}return i}else h(1,t)};this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(l,...c)=>this.produceWithPatches(l,b=>t(b,...c));let n,i;return[this.produce(t,r,(l,c)=>{n=l,i=c}),n,i]};typeof t?.autoFreeze=="boolean"&&this.setAutoFreeze(t.autoFreeze),typeof t?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(t.useStrictShallowCopy)}createDraft(t){A(t)||h(8),O(t)&&(t=re(t));let r=ie(this),n=W(t,void 0);return n[u].l=!0,Z(r),n}finishDraft(t,r){let n=t&&t[u];(!n||!n.l)&&h(9);let{n:i}=n;return oe(i,r),se(void 0,i)}setAutoFreeze(t){this.y=t}setUseStrictShallowCopy(t){this.S=t}applyPatches(t,r){let n;for(n=r.length-1;n>=0;n--){let f=r[n];if(f.path.length===0&&f.op==="replace"){t=f.value;break}}n>-1&&(r=r.slice(n+1));let i=w("Patches").A;return O(t)?i(t,r):this.produce(t,f=>i(f,r))}};function W(e,t){let r=v(e)?w("MapSet").I(e,t):k(e)?w("MapSet").D(e,t):he(e,t);return(t?t.n:B()).a.push(r),r}function re(e){return O(e)||h(10,e),Se(e)}function Se(e){if(!A(e)||$(e))return e;let t=e[u],r;if(t){if(!t.s)return t.t;t.c=!0,r=L(e,t.n.p.S)}else r=L(e,!0);return _(r,(n,i)=>{Q(r,n,Se(i))}),t&&(t.c=!1),r}function Pe(){let t="replace",r="add",n="remove";function i(s,S,m,x){switch(s.o){case 0:case 2:return l(s,S,m,x);case 1:return f(s,S,m,x);case 3:return c(s,S,m,x)}}function f(s,S,m,x){let{t:I,r:P}=s,g=s.e;g.length{let d=X(I,g),H=X(P,g),F=y?R(I,g)?t:r:n;if(d===H&&F===t)return;let D=S.concat(g);m.push(F===n?{op:F,path:D}:{op:F,path:D,value:H}),x.push(F===r?{op:n,path:D}:F===n?{op:r,path:D,value:p(d)}:{op:t,path:D,value:p(d)})})}function c(s,S,m,x){let{t:I,e:P}=s,g=0;I.forEach(y=>{if(!P.has(y)){let d=S.concat([g]);m.push({op:n,path:d,value:y}),x.unshift({op:r,path:d,value:y})}g++}),g=0,P.forEach(y=>{if(!I.has(y)){let d=S.concat([g]);m.push({op:r,path:d,value:y}),x.unshift({op:n,path:d,value:y})}g++})}function b(s,S,m,x){m.push({op:t,path:[],value:S===j?void 0:S}),x.push({op:t,path:[],value:s})}function a(s,S){return S.forEach(m=>{let{path:x,op:I}=m,P=s;for(let H=0;H[m,o(x)]));if(k(s))return new Set(Array.from(s).map(o));let S=Object.create(z(s));for(let m in s)S[m]=o(s[m]);return R(s,N)&&(S[N]=s[N]),S}function p(s){return O(s)?o(s):s}Y("Patches",{A:a,g:i,T:b})}function xe(){class e extends Map{constructor(a,o){super();this[u]={o:2,i:o,n:o?o.n:B(),s:!1,c:!1,e:void 0,r:void 0,t:a,u:this,l:!1,m:!1}}get size(){return T(this[u]).size}has(a){return T(this[u]).has(a)}set(a,o){let p=this[u];return l(p),(!T(p).has(a)||T(p).get(a)!==o)&&(r(p),E(p),p.r.set(a,!0),p.e.set(a,o),p.r.set(a,!0)),this}delete(a){if(!this.has(a))return!1;let o=this[u];return l(o),r(o),E(o),o.t.has(a)?o.r.set(a,!1):o.r.delete(a),o.e.delete(a),!0}clear(){let a=this[u];l(a),T(a).size&&(r(a),E(a),a.r=new Map,_(a.t,o=>{a.r.set(o,!1)}),a.e.clear())}forEach(a,o){let p=this[u];T(p).forEach((s,S,m)=>{a.call(o,this.get(S),S,this)})}get(a){let o=this[u];l(o);let p=T(o).get(a);if(o.c||!A(p)||p!==o.t.get(a))return p;let s=W(p,o);return r(o),o.e.set(a,s),s}keys(){return T(this[u]).keys()}values(){let a=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let o=a.next();return o.done?o:{done:!1,value:this.get(o.value)}}}}entries(){let a=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let o=a.next();if(o.done)return o;let p=this.get(o.value);return{done:!1,value:[o.value,p]}}}}[(u,Symbol.iterator)](){return this.entries()}}function t(c,b){return new e(c,b)}function r(c){c.e||(c.r=new Map,c.e=new Map(c.t))}class n extends Set{constructor(a,o){super();this[u]={o:3,i:o,n:o?o.n:B(),s:!1,c:!1,e:void 0,t:a,u:this,a:new Map,m:!1,l:!1}}get size(){return T(this[u]).size}has(a){let o=this[u];return l(o),o.e?!!(o.e.has(a)||o.a.has(a)&&o.e.has(o.a.get(a))):o.t.has(a)}add(a){let o=this[u];return l(o),this.has(a)||(f(o),E(o),o.e.add(a)),this}delete(a){if(!this.has(a))return!1;let o=this[u];return l(o),f(o),E(o),o.e.delete(a)||(o.a.has(a)?o.e.delete(o.a.get(a)):!1)}clear(){let a=this[u];l(a),T(a).size&&(f(a),E(a),a.e.clear())}values(){let a=this[u];return l(a),f(a),a.e.values()}entries(){let a=this[u];return l(a),f(a),a.e.entries()}keys(){return this.values()}[(u,Symbol.iterator)](){return this.values()}forEach(a,o){let p=this.values(),s=p.next();for(;!s.done;)a.call(o,s.value,s.value,this),s=p.next()}}function i(c,b){return new n(c,b)}function f(c){c.e||(c.e=new Set,c.t.forEach(b=>{if(A(b)){let a=W(b,c);c.a.set(b,a),c.e.add(a)}else c.e.add(b)}))}function l(c){c.m&&h(3,JSON.stringify(T(c)))}Y("MapSet",{I:t,D:i})}var M=new J,Fe=M.produce,Ne=M.produceWithPatches.bind(M),ze=M.setAutoFreeze.bind(M),je=M.setUseStrictShallowCopy.bind(M),Ce=M.applyPatches.bind(M),Re=M.createDraft.bind(M),ve=M.finishDraft.bind(M);function ke(e){return e}function Ke(e){return e}0&&(module.exports={Immer,applyPatches,castDraft,castImmutable,createDraft,current,enableMapSet,enablePatches,finishDraft,freeze,immerable,isDraft,isDraftable,nothing,original,produce,produceWithPatches,setAutoFreeze,setUseStrictShallowCopy}); -//# sourceMappingURL=immer.cjs.production.js.map \ No newline at end of file diff --git a/node_modules/immer/dist/cjs/immer.cjs.production.js.map b/node_modules/immer/dist/cjs/immer.cjs.production.js.map deleted file mode 100644 index 9d4af35e..00000000 --- a/node_modules/immer/dist/cjs/immer.cjs.production.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/immer.ts","../../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/patches.ts","../../src/plugins/mapset.ts"],"sourcesContent":["import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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(value: T): Draft {\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(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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(obj: T, deep?: boolean): T\nexport function freeze(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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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_(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\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(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object 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> = 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 = {\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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): 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\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\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(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction(op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction(path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\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 ArchType.Object:\n\t\t\tcase ArchType.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 ArchType.Array:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ArchType.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: 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\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\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 | 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_(draft: T, patches: readonly 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\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\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(errorOffset + 3)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\")\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(errorOffset + 2, 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(errorOffset)\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(errorOffset + 1, 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(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(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(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\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(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\tdelete(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\tclear() {\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\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\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\tget(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(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\tkeys(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_(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\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(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\tadd(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\tdelete(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\tclear() {\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\tvalues(): IterableIterator {\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\tentries(): 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\tkeys(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(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\t}\n\tfunction proxySet_(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(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"],"mappings":"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","names":["immer_exports","__export","Immer","applyPatches","castDraft","castImmutable","createDraft","current","enableMapSet","enablePatches","finishDraft","freeze","DRAFTABLE","isDraft","isDraftable","NOTHING","original","produce","produceWithPatches","setAutoFreeze","setUseStrictShallowCopy","__toCommonJS","NOTHING","DRAFTABLE","DRAFT_STATE","die","error","args","getPrototypeOf","isDraft","value","DRAFT_STATE","isDraftable","isPlainObject","DRAFTABLE","isMap","isSet","objectCtorString","proto","Ctor","original","die","base_","each","obj","iter","getArchtype","key","entry","index","thing","state","type_","has","prop","get","set","propOrOldValue","t","is","x","y","target","latest","copy_","shallowCopy","base","strict","isPlain","descriptors","keys","i","desc","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","plugin","die","loadPlugin","implementation","currentScope","getCurrentScope","createScope","parent_","immer_","drafts_","canAutoFreeze_","unfinalizedDrafts_","usePatchesInScope","scope","patchListener","getPlugin","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","revokeDraft","enterScope","immer","draft","state","DRAFT_STATE","type_","revoke_","revoked_","processResult","result","scope","unfinalizedDrafts_","drafts_","baseDraft","DRAFT_STATE","modified_","revokeScope","die","isDraftable","finalize","parent_","maybeFreeze","patches_","getPlugin","generateReplacementPatches_","base_","inversePatches_","patchListener_","NOTHING","rootScope","value","path","isFrozen","state","each","key","childValue","finalizeProperty","scope_","finalized_","copy_","resultEach","isSet","type_","generatePatches_","parentState","targetObject","prop","rootPath","targetIsSet","isDraft","has","assigned_","res","set","canAutoFreeze_","immer_","autoFreeze_","deep","freeze","createProxyProxy","base","parent","isArray","state","type_","scope_","getCurrentScope","modified_","finalized_","assigned_","parent_","base_","draft_","copy_","revoke_","isManual_","target","traps","objectTraps","arrayTraps","revoke","proxy","prop","DRAFT_STATE","source","latest","has","readPropFromProto","value","isDraftable","peek","prepareCopy","createProxy","desc","getDescriptorFromProto","current","currentState","is","markChanged","owner","die","getPrototypeOf","each","key","fn","draft","proto","shallowCopy","immer_","useStrictShallowCopy_","Immer","config","autoFreeze_","useStrictShallowCopy_","base","recipe","patchListener","defaultBase","self","args","draft","die","result","isDraftable","scope","enterScope","proxy","createProxy","hasError","revokeScope","leaveScope","usePatchesInScope","processResult","NOTHING","freeze","p","ip","getPlugin","generateReplacementPatches_","state","patches","inversePatches","isDraft","current","DRAFT_STATE","isManual_","scope_","value","i","patch","applyPatchesImpl","applyPatches_","parent","isMap","proxyMap_","isSet","proxySet_","createProxyProxy","getCurrentScope","drafts_","current","value","isDraft","die","currentImpl","isDraftable","isFrozen","state","DRAFT_STATE","copy","modified_","base_","finalized_","shallowCopy","scope_","immer_","useStrictShallowCopy_","each","key","childValue","set","enablePatches","REPLACE","ADD","REMOVE","generatePatches_","state","basePath","patches","inversePatches","type_","generatePatchesFromAssigned","generateArrayPatches","generateSetPatches","base_","assigned_","copy_","i","path","clonePatchValueIfNeeded","each","key","assignedValue","origValue","get","value","op","has","generateReplacementPatches_","baseValue","replacement","NOTHING","applyPatches_","draft","patch","base","parentType","getArchtype","p","die","type","deepClonePatchValue","obj","isDraftable","isMap","k","v","isSet","cloned","getPrototypeOf","DRAFTABLE","isDraft","loadPlugin","enableMapSet","DraftMap","target","parent","DRAFT_STATE","type_","parent_","scope_","getCurrentScope","modified_","finalized_","copy_","assigned_","base_","draft_","isManual_","revoked_","latest","key","value","state","assertUnrevoked","prepareMapCopy","markChanged","each","cb","thisArg","_value","_map","isDraftable","draft","createProxy","iterator","r","proxyMap_","DraftSet","drafts_","prepareSetCopy","result","proxySet_","die","loadPlugin","immer","Immer","produce","produceWithPatches","setAutoFreeze","setUseStrictShallowCopy","applyPatches","createDraft","finishDraft","castDraft","value","castImmutable"]} \ No newline at end of file diff --git a/node_modules/immer/dist/cjs/index.js b/node_modules/immer/dist/cjs/index.js deleted file mode 100644 index 9cdcdac8..00000000 --- a/node_modules/immer/dist/cjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -'use strict' - -if (process.env.NODE_ENV === 'production') { - module.exports = require('./immer.cjs.production.js') -} else { - module.exports = require('./immer.cjs.development.js') -} \ No newline at end of file diff --git a/node_modules/immer/dist/cjs/index.js.flow b/node_modules/immer/dist/cjs/index.js.flow deleted file mode 100644 index 6f14c85a..00000000 --- a/node_modules/immer/dist/cjs/index.js.flow +++ /dev/null @@ -1,111 +0,0 @@ -// @flow - -export interface Patch { - op: "replace" | "remove" | "add"; - path: (string | number)[]; - value?: any; -} - -export type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void - -type Base = {...} | Array -interface IProduce { - /** - * Immer takes a state, and runs a function against it. - * That function can freely mutate the state, as it will create copies-on-write. - * This means that the original state will stay unchanged, and once the function finishes, the modified state is returned. - * - * If the first argument is a function, this is interpreted as the recipe, and will create a curried function that will execute the recipe - * any time it is called with the current state. - * - * @param currentState - the state to start with - * @param recipe - function that receives a proxy of the current state as first argument and which can be freely modified - * @param initialState - if a curried function is created and this argument was given, it will be used as fallback if the curried function is called with a state of undefined - * @returns The next state: a new state, or the current state if nothing was modified - */ - ( - currentState: S, - recipe: (draftState: S) => S | void, - patchListener?: PatchListener - ): S; - // curried invocations with initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void, - initialState: S - ): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => S; - // curried invocations without initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void - ): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S; -} - -interface IProduceWithPatches { - /** - * Like `produce`, but instead of just returning the new state, - * a tuple is returned with [nextState, patches, inversePatches] - * - * Like produce, this function supports currying - */ - ( - currentState: S, - recipe: (draftState: S) => S | void - ): [S, Patch[], Patch[]]; - // curried invocations with initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void, - initialState: S - ): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]]; - // curried invocations without initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void - ): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]]; -} - -declare export var produce: IProduce - -declare export var produceWithPatches: IProduceWithPatches - -declare export var nothing: typeof undefined - -declare export var immerable: Symbol - -/** - * Automatically freezes any state trees generated by immer. - * This protects against accidental modifications of the state tree outside of an immer function. - * This comes with a performance impact, so it is recommended to disable this option in production. - * By default it is turned on during local development, and turned off in production. - */ -declare export function setAutoFreeze(autoFreeze: boolean): void - -/** - * Pass false to disable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ -declare export function setUseStrictShallowCopy(useStrictShallowCopy: boolean): void - -declare export function applyPatches(state: S, patches: Patch[]): S - -declare export function original(value: S): S - -declare export function current(value: S): S - -declare export function isDraft(value: any): boolean - -/** - * Creates a mutable draft from an (immutable) object / array. - * The draft can be modified until `finishDraft` is called - */ -declare export function createDraft(base: T): T - -/** - * Given a draft that was created using `createDraft`, - * finalizes the draft into a new immutable object. - * Optionally a patch-listener can be provided to gather the patches that are needed to construct the object. - */ -declare export function finishDraft(base: T, listener?: PatchListener): T - -declare export function enableMapSet(): void -declare export function enablePatches(): void - -declare export function freeze(obj: T, freeze?: boolean): T diff --git a/node_modules/immer/dist/immer.d.ts b/node_modules/immer/dist/immer.d.ts deleted file mode 100644 index 2cb6cddd..00000000 --- a/node_modules/immer/dist/immer.d.ts +++ /dev/null @@ -1,262 +0,0 @@ -/** - * The sentinel value returned by producers to replace the draft with undefined. - */ -declare const NOTHING: unique symbol; -/** - * To let Immer treat your class instances as plain immutable objects - * (albeit with a custom prototype), you must define either an instance property - * or a static property on each of your custom classes. - * - * Otherwise, your class instance will never be drafted, which means it won't be - * safe to mutate in a produce callback. - */ -declare const DRAFTABLE: unique symbol; - -type AnyFunc = (...args: any[]) => any; -type PrimitiveType = number | string | boolean; -/** Object types that should never be mapped */ -type AtomicObject = Function | Promise | Date | RegExp; -/** - * If the lib "ES2015.Collection" is not included in tsconfig.json, - * types like ReadonlyArray, WeakMap etc. fall back to `any` (specified nowhere) - * or `{}` (from the node types), in both cases entering an infinite recursion in - * pattern matching type mappings - * This type can be used to cast these types to `void` in these cases. - */ -type IfAvailable = true | false extends (T extends never ? true : false) ? Fallback : keyof T extends never ? Fallback : T; -/** - * These should also never be mapped but must be tested after regular Map and - * Set - */ -type WeakReferences = IfAvailable> | IfAvailable>; -type WritableDraft = { - -readonly [K in keyof T]: Draft; -}; -/** Convert a readonly type into a mutable type, if possible */ -type Draft = T extends PrimitiveType ? T : T extends AtomicObject ? T : T extends ReadonlyMap ? Map, Draft> : T extends ReadonlySet ? Set> : T extends WeakReferences ? T : T extends object ? WritableDraft : T; -/** Convert a mutable type into a readonly type */ -type Immutable = T extends PrimitiveType ? T : T extends AtomicObject ? T : T extends ReadonlyMap ? ReadonlyMap, Immutable> : T extends ReadonlySet ? ReadonlySet> : T extends WeakReferences ? T : T extends object ? { - readonly [K in keyof T]: Immutable; -} : T; -interface Patch { - op: "replace" | "remove" | "add"; - path: (string | number)[]; - value?: any; -} -type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void; -/** - * Utility types - */ -type PatchesTuple = readonly [T, Patch[], Patch[]]; -type ValidRecipeReturnType = State | void | undefined | (State extends undefined ? typeof NOTHING : never); -type ReturnTypeWithPatchesIfNeeded = UsePatches extends true ? PatchesTuple : State; -/** - * Core Producer inference - */ -type InferRecipeFromCurried = Curried extends (base: infer State, ...rest: infer Args) => any ? ReturnType extends State ? (draft: Draft, ...rest: Args) => ValidRecipeReturnType> : never : never; -type InferInitialStateFromCurried = Curried extends (base: infer State, ...rest: any[]) => any ? State : never; -type InferCurriedFromRecipe = Recipe extends (draft: infer DraftState, ...args: infer RestArgs) => any ? ReturnType extends ValidRecipeReturnType ? (base: Immutable, ...args: RestArgs) => ReturnTypeWithPatchesIfNeeded : never : never; -type InferCurriedFromInitialStateAndRecipe = Recipe extends (draft: Draft, ...rest: infer RestArgs) => ValidRecipeReturnType ? (base?: State | undefined, ...args: RestArgs) => ReturnTypeWithPatchesIfNeeded : never; -/** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ -interface IProduce { - /** Curried producer that infers the recipe from the curried output function (e.g. when passing to setState) */ - (recipe: InferRecipeFromCurried, initialState?: InferInitialStateFromCurried): Curried; - /** Curried producer that infers curried from the recipe */ - (recipe: Recipe): InferCurriedFromRecipe; - /** Curried producer that infers curried from the State generic, which is explicitly passed in. */ - (recipe: (state: Draft, initialState: State) => ValidRecipeReturnType): (state?: State) => State; - (recipe: (state: Draft, ...args: Args) => ValidRecipeReturnType, initialState: State): (state?: State, ...args: Args) => State; - (recipe: (state: Draft) => ValidRecipeReturnType): (state: State) => State; - (recipe: (state: Draft, ...args: Args) => ValidRecipeReturnType): (state: State, ...args: Args) => State; - /** Curried producer with initial state, infers recipe from initial state */ - (recipe: Recipe, initialState: State): InferCurriedFromInitialStateAndRecipe; - /** Normal producer */ - >(// By using a default inferred D, rather than Draft in the recipe, we can override it. - base: Base, recipe: (draft: D) => ValidRecipeReturnType, listener?: PatchListener): Base; -} -/** - * Like `produce`, but instead of just returning the new state, - * a tuple is returned with [nextState, patches, inversePatches] - * - * Like produce, this function supports currying - */ -interface IProduceWithPatches { - (recipe: Recipe): InferCurriedFromRecipe; - (recipe: Recipe, initialState: State): InferCurriedFromInitialStateAndRecipe; - >(base: Base, recipe: (draft: D) => ValidRecipeReturnType, listener?: PatchListener): PatchesTuple; -} -/** - * The type for `recipe function` - */ -type Producer = (draft: Draft) => ValidRecipeReturnType>; - -type Objectish = AnyObject | AnyArray | AnyMap | AnySet; -type AnyObject = { - [key: string]: any; -}; -type AnyArray = Array; -type AnySet = Set; -type AnyMap = Map; - -/** Returns true if the given value is an Immer draft */ -declare function isDraft(value: any): boolean; -/** Returns true if the given value can be drafted by Immer */ -declare function isDraftable(value: any): boolean; -/** Get the underlying object that is represented by the given draft */ -declare function original(value: T): T | undefined; -/** - * Freezes draftable objects. Returns the original object. - * By default freezes shallowly, but if the second argument is `true` it will freeze recursively. - * - * @param obj - * @param deep - */ -declare function freeze(obj: T, deep?: boolean): T; - -interface ProducersFns { - produce: IProduce; - produceWithPatches: IProduceWithPatches; -} -type StrictMode = boolean | "class_only"; -declare class Immer implements ProducersFns { - autoFreeze_: boolean; - useStrictShallowCopy_: StrictMode; - constructor(config?: { - autoFreeze?: boolean; - useStrictShallowCopy?: StrictMode; - }); - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - produce: IProduce; - produceWithPatches: IProduceWithPatches; - createDraft(base: T): Draft; - finishDraft>(draft: D, patchListener?: PatchListener): D extends Draft ? T : never; - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value: boolean): void; - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value: StrictMode): void; - applyPatches(base: T, patches: readonly Patch[]): T; -} - -/** 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. */ -declare function current(value: T): T; - -declare function enablePatches(): void; - -declare function enableMapSet(): void; - -/** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ -declare const produce: IProduce; -/** - * Like `produce`, but `produceWithPatches` always returns a tuple - * [nextState, patches, inversePatches] (instead of just the next state) - */ -declare const produceWithPatches: IProduceWithPatches; -/** - * Pass true to automatically freeze all copies created by Immer. - * - * Always freeze by default, even in production mode - */ -declare const setAutoFreeze: (value: boolean) => void; -/** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ -declare const setUseStrictShallowCopy: (value: StrictMode) => void; -/** - * Apply an array of Immer patches to the first argument. - * - * This function is a producer, which means copy-on-write is in effect. - */ -declare const applyPatches: (base: T, patches: readonly Patch[]) => T; -/** - * Create an Immer draft from the given base state, which may be a draft itself. - * The draft can be modified until you finalize it with the `finishDraft` function. - */ -declare const createDraft: (base: T) => Draft; -/** - * Finalize an Immer draft from a `createDraft` call, returning the base state - * (if no changes were made) or a modified copy. The draft must *not* be - * mutated afterwards. - * - * Pass a function as the 2nd argument to generate Immer patches based on the - * changes that were made. - */ -declare const finishDraft: (draft: D, patchListener?: PatchListener | undefined) => D extends Draft ? T : never; -/** - * This function is actually a no-op, but can be used to cast an immutable type - * to an draft type and make TypeScript happy - * - * @param value - */ -declare function castDraft(value: T): Draft; -/** - * This function is actually a no-op, but can be used to cast a mutable type - * to an immutable type and make TypeScript happy - * @param value - */ -declare function castImmutable(value: T): Immutable; - -export { Draft, Immer, Immutable, Objectish, Patch, PatchListener, Producer, StrictMode, WritableDraft, applyPatches, castDraft, castImmutable, createDraft, current, enableMapSet, enablePatches, finishDraft, freeze, DRAFTABLE as immerable, isDraft, isDraftable, NOTHING as nothing, original, produce, produceWithPatches, setAutoFreeze, setUseStrictShallowCopy }; diff --git a/node_modules/immer/dist/immer.legacy-esm.js b/node_modules/immer/dist/immer.legacy-esm.js deleted file mode 100644 index cd8d81bf..00000000 --- a/node_modules/immer/dist/immer.legacy-esm.js +++ /dev/null @@ -1,1250 +0,0 @@ -var __defProp = Object.defineProperty; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b || (b = {})) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; - -// src/utils/env.ts -var NOTHING = Symbol.for("immer-nothing"); -var DRAFTABLE = Symbol.for("immer-draftable"); -var DRAFT_STATE = Symbol.for("immer-state"); - -// src/utils/errors.ts -var errors = process.env.NODE_ENV !== "production" ? [ - // All error codes, starting by 0: - function(plugin) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; - }, - function(thing) { - return `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}'`; - }, - "This object has been frozen and should not be mutated", - function(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing) { - return `'current' expects a draft, got: ${thing}`; - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing) { - return `'original' expects a draft, got: ${thing}`; - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors -] : []; -function die(error, ...args) { - if (process.env.NODE_ENV !== "production") { - const e = errors[error]; - const msg = typeof e === "function" ? e.apply(null, args) : e; - throw new Error(`[Immer] ${msg}`); - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ); -} - -// src/utils/common.ts -var getPrototypeOf = Object.getPrototypeOf; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - var _a; - if (!value) - return false; - return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!((_a = value.constructor) == null ? void 0 : _a[DRAFTABLE]) || isMap(value) || isSet(value); -} -var objectCtorString = Object.prototype.constructor.toString(); -function isPlainObject(value) { - if (!value || typeof value !== "object") - return false; - const proto = getPrototypeOf(value); - if (proto === null) { - return true; - } - const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) - return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; -} -function original(value) { - if (!isDraft(value)) - die(15, value); - return value[DRAFT_STATE].base_; -} -function each(obj, iter) { - if (getArchtype(obj) === 0 /* Object */) { - Reflect.ownKeys(obj).forEach((key) => { - iter(key, obj[key], obj); - }); - } else { - obj.forEach((entry, index) => iter(index, entry, obj)); - } -} -function getArchtype(thing) { - const state = thing[DRAFT_STATE]; - return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; -} -function has(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); -} -function get(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop]; -} -function set(thing, propOrOldValue, value) { - const t = getArchtype(thing); - if (t === 2 /* Map */) - thing.set(propOrOldValue, value); - else if (t === 3 /* Set */) { - thing.add(value); - } else - thing[propOrOldValue] = value; -} -function is(x, y) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} -function isMap(target) { - return target instanceof Map; -} -function isSet(target) { - return target instanceof Set; -} -function latest(state) { - return state.copy_ || state.base_; -} -function shallowCopy(base, strict) { - if (isMap(base)) { - return new Map(base); - } - if (isSet(base)) { - return new Set(base); - } - if (Array.isArray(base)) - return Array.prototype.slice.call(base); - const isPlain = isPlainObject(base); - if (strict === true || strict === "class_only" && !isPlain) { - const descriptors = Object.getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - let keys = Reflect.ownKeys(descriptors); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const desc = descriptors[key]; - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, - // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - }; - } - return Object.create(getPrototypeOf(base), descriptors); - } else { - const proto = getPrototypeOf(base); - if (proto !== null && isPlain) { - return __spreadValues({}, base); - } - const obj = Object.create(proto); - return Object.assign(obj, base); - } -} -function freeze(obj, deep = false) { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) - return obj; - if (getArchtype(obj) > 1) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - Object.freeze(obj); - if (deep) - Object.entries(obj).forEach(([key, value]) => freeze(value, true)); - return obj; -} -function dontMutateFrozenCollections() { - die(2); -} -function isFrozen(obj) { - return Object.isFrozen(obj); -} - -// src/utils/plugins.ts -var plugins = {}; -function getPlugin(pluginKey) { - const plugin = plugins[pluginKey]; - if (!plugin) { - die(0, pluginKey); - } - return plugin; -} -function loadPlugin(pluginKey, implementation) { - if (!plugins[pluginKey]) - plugins[pluginKey] = implementation; -} - -// src/core/scope.ts -var currentScope; -function getCurrentScope() { - return currentScope; -} -function createScope(parent_, immer_) { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - }; -} -function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } -} -function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); - scope.drafts_ = null; -} -function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } -} -function enterScope(immer2) { - return currentScope = createScope(currentScope, immer2); -} -function revokeDraft(draft) { - const state = draft[DRAFT_STATE]; - if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) - state.revoke_(); - else - state.revoked_ = true; -} - -// src/core/finalize.ts -function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - const baseDraft = scope.drafts_[0]; - const isReplaced = result !== void 0 && result !== baseDraft; - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - if (isDraftable(result)) { - result = finalize(scope, result); - if (!scope.parent_) - maybeFreeze(scope, result); - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_ - ); - } - } else { - result = finalize(scope, baseDraft, []); - } - revokeScope(scope); - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - return result !== NOTHING ? result : void 0; -} -function finalize(rootScope, value, path) { - if (isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - if (!state) { - each( - value, - (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) - ); - return value; - } - if (state.scope_ !== rootScope) - return value; - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - const result = state.copy_; - let resultEach = result; - let isSet2 = false; - if (state.type_ === 3 /* Set */) { - resultEach = new Set(result); - result.clear(); - isSet2 = true; - } - each( - resultEach, - (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) - ); - maybeFreeze(rootScope, result, false); - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_ - ); - } - } - return state.copy_; -} -function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5); - if (isDraft(childValue)) { - const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; - const res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else - return; - } else if (targetIsSet) { - targetObject.add(childValue); - } - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - return; - } - finalize(rootScope, childValue); - if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) - maybeFreeze(rootScope, childValue); - } -} -function maybeFreeze(scope, value, deep = false) { - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } -} - -// src/core/proxy.ts -function createProxyProxy(base, parent) { - const isArray = Array.isArray(base); - const state = { - type_: isArray ? 1 /* Array */ : 0 /* Object */, - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false - }; - let target = state; - let traps = objectTraps; - if (isArray) { - target = [state]; - traps = arrayTraps; - } - const { revoke, proxy } = Proxy.revocable(target, traps); - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; -} -var objectTraps = { - get(state, prop) { - if (prop === DRAFT_STATE) - return state; - const source = latest(state); - if (!has(source, prop)) { - return readPropFromProto(state, source, prop); - } - const value = source[prop]; - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(value, state); - } - return value; - }, - has(state, prop) { - return prop in latest(state); - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set(state, prop, value) { - const desc = getDescriptorFromProto(latest(state), prop); - if (desc == null ? void 0 : desc.set) { - desc.set.call(state.draft_, value); - return true; - } - if (!state.modified_) { - const current2 = peek(latest(state), prop); - const currentState = current2 == null ? void 0 : current2[DRAFT_STATE]; - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; - } - if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) - return true; - prepareCopy(state); - markChanged(state); - } - if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' - (value !== void 0 || prop in state.copy_) || // special case: NaN - Number.isNaN(value) && Number.isNaN(state.copy_[prop])) - return true; - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty(state, prop) { - if (peek(state.base_, prop) !== void 0 || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - delete state.assigned_[prop]; - } - if (state.copy_) { - delete state.copy_[prop]; - } - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state); - const desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) - return desc; - return { - writable: true, - configurable: state.type_ !== 1 /* Array */ || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty() { - die(11); - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_); - }, - setPrototypeOf() { - die(12); - } -}; -var arrayTraps = {}; -each(objectTraps, (key, fn) => { - arrayTraps[key] = function() { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); -arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) - die(13); - return arrayTraps.set.call(this, state, prop, void 0); -}; -arrayTraps.set = function(state, prop, value) { - if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) - die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); -}; -function peek(draft, prop) { - const state = draft[DRAFT_STATE]; - const source = state ? latest(state) : draft; - return source[prop]; -} -function readPropFromProto(state, source, prop) { - var _a; - const desc = getDescriptorFromProto(source, prop); - return desc ? `value` in desc ? desc.value : ( - // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - (_a = desc.get) == null ? void 0 : _a.call(state.draft_) - ) : void 0; -} -function getDescriptorFromProto(source, prop) { - if (!(prop in source)) - return void 0; - let proto = getPrototypeOf(source); - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) - return desc; - proto = getPrototypeOf(proto); - } - return void 0; -} -function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - if (state.parent_) { - markChanged(state.parent_); - } - } -} -function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ); - } -} - -// src/core/immerClass.ts -var Immer2 = class { - constructor(config) { - this.autoFreeze_ = true; - this.useStrictShallowCopy_ = false; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - this.produce = (base, recipe, patchListener) => { - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe; - recipe = base; - const self = this; - return function curriedProduce(base2 = defaultBase, ...args) { - return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); - }; - } - if (typeof recipe !== "function") - die(6); - if (patchListener !== void 0 && typeof patchListener !== "function") - die(7); - let result; - if (isDraftable(base)) { - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - let hasError = true; - try { - result = recipe(proxy); - hasError = false; - } finally { - if (hasError) - revokeScope(scope); - else - leaveScope(scope); - } - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === void 0) - result = base; - if (result === NOTHING) - result = void 0; - if (this.autoFreeze_) - freeze(result, true); - if (patchListener) { - const p = []; - const ip = []; - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); - patchListener(p, ip); - } - return result; - } else - die(1, base); - }; - this.produceWithPatches = (base, recipe) => { - if (typeof base === "function") { - return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); - } - let patches, inversePatches; - const result = this.produce(base, recipe, (p, ip) => { - patches = p; - inversePatches = ip; - }); - return [result, patches, inversePatches]; - }; - if (typeof (config == null ? void 0 : config.autoFreeze) === "boolean") - this.setAutoFreeze(config.autoFreeze); - if (typeof (config == null ? void 0 : config.useStrictShallowCopy) === "boolean") - this.setUseStrictShallowCopy(config.useStrictShallowCopy); - } - createDraft(base) { - if (!isDraftable(base)) - die(8); - if (isDraft(base)) - base = current(base); - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - } - finishDraft(draft, patchListener) { - const state = draft && draft[DRAFT_STATE]; - if (!state || !state.isManual_) - die(9); - const { scope_: scope } = state; - usePatchesInScope(scope, patchListener); - return processResult(void 0, scope); - } - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value) { - this.autoFreeze_ = value; - } - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value) { - this.useStrictShallowCopy_ = value; - } - applyPatches(base, patches) { - let i; - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i]; - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; - } - } - if (i > -1) { - patches = patches.slice(i + 1); - } - const applyPatchesImpl = getPlugin("Patches").applyPatches_; - if (isDraft(base)) { - return applyPatchesImpl(base, patches); - } - return this.produce( - base, - (draft) => applyPatchesImpl(draft, patches) - ); - } -}; -function createProxy(value, parent) { - const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); - const scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; -} - -// src/core/current.ts -function current(value) { - if (!isDraft(value)) - die(10, value); - return currentImpl(value); -} -function currentImpl(value) { - if (!isDraftable(value) || isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - let copy; - if (state) { - if (!state.modified_) - return state.base_; - state.finalized_ = true; - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); - } else { - copy = shallowCopy(value, true); - } - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)); - }); - if (state) { - state.finalized_ = false; - } - return copy; -} - -// src/plugins/patches.ts -function enablePatches() { - const errorOffset = 16; - if (process.env.NODE_ENV !== "production") { - errors.push( - 'Sets cannot have "replace" patches.', - function(op) { - return "Unsupported patch operation: " + op; - }, - function(path) { - return "Cannot apply patch, path doesn't resolve: " + path; - }, - "Patching reserved attributes like __proto__, prototype and constructor is not allowed" - ); - } - const REPLACE = "replace"; - const ADD = "add"; - const REMOVE = "remove"; - function generatePatches_(state, basePath, patches, inversePatches) { - switch (state.type_) { - case 0 /* Object */: - case 2 /* Map */: - return generatePatchesFromAssigned( - state, - basePath, - patches, - inversePatches - ); - case 1 /* Array */: - return generateArrayPatches(state, basePath, patches, inversePatches); - case 3 /* Set */: - return generateSetPatches( - state, - basePath, - patches, - inversePatches - ); - } - } - function generateArrayPatches(state, basePath, patches, inversePatches) { - let { base_, assigned_ } = state; - let copy_ = state.copy_; - if (copy_.length < base_.length) { - ; - [base_, copy_] = [copy_, base_]; - [patches, inversePatches] = [inversePatches, patches]; - } - for (let i = 0; i < base_.length; i++) { - if (assigned_[i] && copy_[i] !== base_[i]) { - const path = basePath.concat([i]); - patches.push({ - op: REPLACE, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - inversePatches.push({ - op: REPLACE, - path, - value: clonePatchValueIfNeeded(base_[i]) - }); - } - } - for (let i = base_.length; i < copy_.length; i++) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - } - for (let i = copy_.length - 1; base_.length <= i; --i) { - const path = basePath.concat([i]); - inversePatches.push({ - op: REMOVE, - path - }); - } - } - function generatePatchesFromAssigned(state, basePath, patches, inversePatches) { - const { base_, copy_ } = state; - each(state.assigned_, (key, assignedValue) => { - const origValue = get(base_, key); - const value = get(copy_, key); - const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD; - if (origValue === value && op === REPLACE) - return; - const path = basePath.concat(key); - patches.push(op === REMOVE ? { op, path } : { op, path, value }); - inversePatches.push( - op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) } - ); - }); - } - function generateSetPatches(state, basePath, patches, inversePatches) { - let { base_, copy_ } = state; - let i = 0; - base_.forEach((value) => { - if (!copy_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: REMOVE, - path, - value - }); - inversePatches.unshift({ - op: ADD, - path, - value - }); - } - i++; - }); - i = 0; - copy_.forEach((value) => { - if (!base_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - value - }); - inversePatches.unshift({ - op: REMOVE, - path, - value - }); - } - i++; - }); - } - function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) { - patches.push({ - op: REPLACE, - path: [], - value: replacement === NOTHING ? void 0 : replacement - }); - inversePatches.push({ - op: REPLACE, - path: [], - value: baseValue - }); - } - function applyPatches_(draft, patches) { - patches.forEach((patch) => { - const { path, op } = patch; - let base = draft; - for (let i = 0; i < path.length - 1; i++) { - const parentType = getArchtype(base); - let p = path[i]; - if (typeof p !== "string" && typeof p !== "number") { - p = "" + p; - } - if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === "__proto__" || p === "constructor")) - die(errorOffset + 3); - if (typeof base === "function" && p === "prototype") - die(errorOffset + 3); - base = get(base, p); - if (typeof base !== "object") - die(errorOffset + 2, path.join("/")); - } - const type = getArchtype(base); - const value = deepClonePatchValue(patch.value); - const key = path[path.length - 1]; - switch (op) { - case REPLACE: - switch (type) { - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - die(errorOffset); - default: - return base[key] = value; - } - case ADD: - switch (type) { - case 1 /* Array */: - return key === "-" ? base.push(value) : base.splice(key, 0, value); - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - return base.add(value); - default: - return base[key] = value; - } - case REMOVE: - switch (type) { - case 1 /* Array */: - return base.splice(key, 1); - case 2 /* Map */: - return base.delete(key); - case 3 /* Set */: - return base.delete(patch.value); - default: - return delete base[key]; - } - default: - die(errorOffset + 1, op); - } - }); - return draft; - } - function deepClonePatchValue(obj) { - if (!isDraftable(obj)) - return obj; - if (Array.isArray(obj)) - return obj.map(deepClonePatchValue); - if (isMap(obj)) - return new Map( - Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)]) - ); - if (isSet(obj)) - return new Set(Array.from(obj).map(deepClonePatchValue)); - const cloned = Object.create(getPrototypeOf(obj)); - for (const key in obj) - cloned[key] = deepClonePatchValue(obj[key]); - if (has(obj, DRAFTABLE)) - cloned[DRAFTABLE] = obj[DRAFTABLE]; - return cloned; - } - function clonePatchValueIfNeeded(obj) { - if (isDraft(obj)) { - return deepClonePatchValue(obj); - } else - return obj; - } - loadPlugin("Patches", { - applyPatches_, - generatePatches_, - generateReplacementPatches_ - }); -} - -// src/plugins/mapset.ts -function enableMapSet() { - class DraftMap extends Map { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 2 /* Map */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - assigned_: void 0, - base_: target, - draft_: this, - isManual_: false, - revoked_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(key) { - return latest(this[DRAFT_STATE]).has(key); - } - set(key, value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!latest(state).has(key) || latest(state).get(key) !== value) { - prepareMapCopy(state); - markChanged(state); - state.assigned_.set(key, true); - state.copy_.set(key, value); - state.assigned_.set(key, true); - } - return this; - } - delete(key) { - if (!this.has(key)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareMapCopy(state); - markChanged(state); - if (state.base_.has(key)) { - state.assigned_.set(key, false); - } else { - state.assigned_.delete(key); - } - state.copy_.delete(key); - return true; - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareMapCopy(state); - markChanged(state); - state.assigned_ = /* @__PURE__ */ new Map(); - each(state.base_, (key) => { - state.assigned_.set(key, false); - }); - state.copy_.clear(); - } - } - forEach(cb, thisArg) { - const state = this[DRAFT_STATE]; - latest(state).forEach((_value, key, _map) => { - cb.call(thisArg, this.get(key), key, this); - }); - } - get(key) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - const value = latest(state).get(key); - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value !== state.base_.get(key)) { - return value; - } - const draft = createProxy(value, state); - prepareMapCopy(state); - state.copy_.set(key, draft); - return draft; - } - keys() { - return latest(this[DRAFT_STATE]).keys(); - } - values() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.values(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value - }; - } - }; - } - entries() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.entries(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value: [r.value, value] - }; - } - }; - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.entries(); - } - } - function proxyMap_(target, parent) { - return new DraftMap(target, parent); - } - function prepareMapCopy(state) { - if (!state.copy_) { - state.assigned_ = /* @__PURE__ */ new Map(); - state.copy_ = new Map(state.base_); - } - } - class DraftSet extends Set { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 3 /* Set */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - base_: target, - draft_: this, - drafts_: /* @__PURE__ */ new Map(), - revoked_: false, - isManual_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!state.copy_) { - return state.base_.has(value); - } - if (state.copy_.has(value)) - return true; - if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value))) - return true; - return false; - } - add(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!this.has(value)) { - prepareSetCopy(state); - markChanged(state); - state.copy_.add(value); - } - return this; - } - delete(value) { - if (!this.has(value)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - markChanged(state); - return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : ( - /* istanbul ignore next */ - false - )); - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareSetCopy(state); - markChanged(state); - state.copy_.clear(); - } - } - values() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.values(); - } - entries() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.entries(); - } - keys() { - return this.values(); - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.values(); - } - forEach(cb, thisArg) { - const iterator = this.values(); - let result = iterator.next(); - while (!result.done) { - cb.call(thisArg, result.value, result.value, this); - result = iterator.next(); - } - } - } - function proxySet_(target, parent) { - return new DraftSet(target, parent); - } - function prepareSetCopy(state) { - if (!state.copy_) { - state.copy_ = /* @__PURE__ */ new Set(); - state.base_.forEach((value) => { - if (isDraftable(value)) { - const draft = createProxy(value, state); - state.drafts_.set(value, draft); - state.copy_.add(draft); - } else { - state.copy_.add(value); - } - }); - } - } - function assertUnrevoked(state) { - if (state.revoked_) - die(3, JSON.stringify(latest(state))); - } - loadPlugin("MapSet", { proxyMap_, proxySet_ }); -} - -// src/immer.ts -var immer = new Immer2(); -var produce = immer.produce; -var produceWithPatches = immer.produceWithPatches.bind( - immer -); -var setAutoFreeze = immer.setAutoFreeze.bind(immer); -var setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer); -var applyPatches = immer.applyPatches.bind(immer); -var createDraft = immer.createDraft.bind(immer); -var finishDraft = immer.finishDraft.bind(immer); -function castDraft(value) { - return value; -} -function castImmutable(value) { - return value; -} -export { - Immer2 as Immer, - applyPatches, - castDraft, - castImmutable, - createDraft, - current, - enableMapSet, - enablePatches, - finishDraft, - freeze, - DRAFTABLE as immerable, - isDraft, - isDraftable, - NOTHING as nothing, - original, - produce, - produceWithPatches, - setAutoFreeze, - setUseStrictShallowCopy -}; -//# sourceMappingURL=immer.legacy-esm.js.map \ No newline at end of file diff --git a/node_modules/immer/dist/immer.legacy-esm.js.map b/node_modules/immer/dist/immer.legacy-esm.js.map deleted file mode 100644 index 53ecd2d8..00000000 --- a/node_modules/immer/dist/immer.legacy-esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"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/patches.ts","../src/plugins/mapset.ts","../src/immer.ts"],"sourcesContent":["// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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(obj: T, deep?: boolean): T\nexport function freeze(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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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_(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\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(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object 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> = 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 = {\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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): 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\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\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(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction(op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction(path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\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 ArchType.Object:\n\t\t\tcase ArchType.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 ArchType.Array:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ArchType.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: 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\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\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 | 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_(draft: T, patches: readonly 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\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\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(errorOffset + 3)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\")\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(errorOffset + 2, 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(errorOffset)\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(errorOffset + 1, 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(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(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(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\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(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\tdelete(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\tclear() {\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\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\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\tget(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(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\tkeys(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_(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\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(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\tadd(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\tdelete(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\tclear() {\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\tvalues(): IterableIterator {\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\tentries(): 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\tkeys(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(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\t}\n\tfunction proxySet_(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(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 {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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(value: T): Draft {\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(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n"],"mappings":"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","names":["immer","isSet","current","Immer","base","Immer"]} \ No newline at end of file diff --git a/node_modules/immer/dist/immer.mjs b/node_modules/immer/dist/immer.mjs deleted file mode 100644 index 591ccf14..00000000 --- a/node_modules/immer/dist/immer.mjs +++ /dev/null @@ -1,1231 +0,0 @@ -// src/utils/env.ts -var NOTHING = Symbol.for("immer-nothing"); -var DRAFTABLE = Symbol.for("immer-draftable"); -var DRAFT_STATE = Symbol.for("immer-state"); - -// src/utils/errors.ts -var errors = process.env.NODE_ENV !== "production" ? [ - // All error codes, starting by 0: - function(plugin) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`; - }, - function(thing) { - return `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}'`; - }, - "This object has been frozen and should not be mutated", - function(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing) { - return `'current' expects a draft, got: ${thing}`; - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing) { - return `'original' expects a draft, got: ${thing}`; - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors -] : []; -function die(error, ...args) { - if (process.env.NODE_ENV !== "production") { - const e = errors[error]; - const msg = typeof e === "function" ? e.apply(null, args) : e; - throw new Error(`[Immer] ${msg}`); - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ); -} - -// src/utils/common.ts -var getPrototypeOf = Object.getPrototypeOf; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - if (!value) - return false; - return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value); -} -var objectCtorString = Object.prototype.constructor.toString(); -function isPlainObject(value) { - if (!value || typeof value !== "object") - return false; - const proto = getPrototypeOf(value); - if (proto === null) { - return true; - } - const Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) - return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; -} -function original(value) { - if (!isDraft(value)) - die(15, value); - return value[DRAFT_STATE].base_; -} -function each(obj, iter) { - if (getArchtype(obj) === 0 /* Object */) { - Reflect.ownKeys(obj).forEach((key) => { - iter(key, obj[key], obj); - }); - } else { - obj.forEach((entry, index) => iter(index, entry, obj)); - } -} -function getArchtype(thing) { - const state = thing[DRAFT_STATE]; - return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */; -} -function has(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); -} -function get(thing, prop) { - return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop]; -} -function set(thing, propOrOldValue, value) { - const t = getArchtype(thing); - if (t === 2 /* Map */) - thing.set(propOrOldValue, value); - else if (t === 3 /* Set */) { - thing.add(value); - } else - thing[propOrOldValue] = value; -} -function is(x, y) { - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} -function isMap(target) { - return target instanceof Map; -} -function isSet(target) { - return target instanceof Set; -} -function latest(state) { - return state.copy_ || state.base_; -} -function shallowCopy(base, strict) { - if (isMap(base)) { - return new Map(base); - } - if (isSet(base)) { - return new Set(base); - } - if (Array.isArray(base)) - return Array.prototype.slice.call(base); - const isPlain = isPlainObject(base); - if (strict === true || strict === "class_only" && !isPlain) { - const descriptors = Object.getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - let keys = Reflect.ownKeys(descriptors); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const desc = descriptors[key]; - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, - // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - }; - } - return Object.create(getPrototypeOf(base), descriptors); - } else { - const proto = getPrototypeOf(base); - if (proto !== null && isPlain) { - return { ...base }; - } - const obj = Object.create(proto); - return Object.assign(obj, base); - } -} -function freeze(obj, deep = false) { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) - return obj; - if (getArchtype(obj) > 1) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - Object.freeze(obj); - if (deep) - Object.entries(obj).forEach(([key, value]) => freeze(value, true)); - return obj; -} -function dontMutateFrozenCollections() { - die(2); -} -function isFrozen(obj) { - return Object.isFrozen(obj); -} - -// src/utils/plugins.ts -var plugins = {}; -function getPlugin(pluginKey) { - const plugin = plugins[pluginKey]; - if (!plugin) { - die(0, pluginKey); - } - return plugin; -} -function loadPlugin(pluginKey, implementation) { - if (!plugins[pluginKey]) - plugins[pluginKey] = implementation; -} - -// src/core/scope.ts -var currentScope; -function getCurrentScope() { - return currentScope; -} -function createScope(parent_, immer_) { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - }; -} -function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } -} -function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); - scope.drafts_ = null; -} -function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } -} -function enterScope(immer2) { - return currentScope = createScope(currentScope, immer2); -} -function revokeDraft(draft) { - const state = draft[DRAFT_STATE]; - if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */) - state.revoke_(); - else - state.revoked_ = true; -} - -// src/core/finalize.ts -function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - const baseDraft = scope.drafts_[0]; - const isReplaced = result !== void 0 && result !== baseDraft; - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - if (isDraftable(result)) { - result = finalize(scope, result); - if (!scope.parent_) - maybeFreeze(scope, result); - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_ - ); - } - } else { - result = finalize(scope, baseDraft, []); - } - revokeScope(scope); - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - return result !== NOTHING ? result : void 0; -} -function finalize(rootScope, value, path) { - if (isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - if (!state) { - each( - value, - (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path) - ); - return value; - } - if (state.scope_ !== rootScope) - return value; - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - const result = state.copy_; - let resultEach = result; - let isSet2 = false; - if (state.type_ === 3 /* Set */) { - resultEach = new Set(result); - result.clear(); - isSet2 = true; - } - each( - resultEach, - (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2) - ); - maybeFreeze(rootScope, result, false); - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_ - ); - } - } - return state.copy_; -} -function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5); - if (isDraft(childValue)) { - const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0; - const res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else - return; - } else if (targetIsSet) { - targetObject.add(childValue); - } - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - return; - } - finalize(rootScope, childValue); - if ((!parentState || !parentState.scope_.parent_) && typeof prop !== "symbol" && Object.prototype.propertyIsEnumerable.call(targetObject, prop)) - maybeFreeze(rootScope, childValue); - } -} -function maybeFreeze(scope, value, deep = false) { - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } -} - -// src/core/proxy.ts -function createProxyProxy(base, parent) { - const isArray = Array.isArray(base); - const state = { - type_: isArray ? 1 /* Array */ : 0 /* Object */, - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false - }; - let target = state; - let traps = objectTraps; - if (isArray) { - target = [state]; - traps = arrayTraps; - } - const { revoke, proxy } = Proxy.revocable(target, traps); - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; -} -var objectTraps = { - get(state, prop) { - if (prop === DRAFT_STATE) - return state; - const source = latest(state); - if (!has(source, prop)) { - return readPropFromProto(state, source, prop); - } - const value = source[prop]; - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(value, state); - } - return value; - }, - has(state, prop) { - return prop in latest(state); - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set(state, prop, value) { - const desc = getDescriptorFromProto(latest(state), prop); - if (desc?.set) { - desc.set.call(state.draft_, value); - return true; - } - if (!state.modified_) { - const current2 = peek(latest(state), prop); - const currentState = current2?.[DRAFT_STATE]; - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; - } - if (is(value, current2) && (value !== void 0 || has(state.base_, prop))) - return true; - prepareCopy(state); - markChanged(state); - } - if (state.copy_[prop] === value && // special case: handle new props with value 'undefined' - (value !== void 0 || prop in state.copy_) || // special case: NaN - Number.isNaN(value) && Number.isNaN(state.copy_[prop])) - return true; - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty(state, prop) { - if (peek(state.base_, prop) !== void 0 || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - delete state.assigned_[prop]; - } - if (state.copy_) { - delete state.copy_[prop]; - } - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state); - const desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) - return desc; - return { - writable: true, - configurable: state.type_ !== 1 /* Array */ || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty() { - die(11); - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_); - }, - setPrototypeOf() { - die(12); - } -}; -var arrayTraps = {}; -each(objectTraps, (key, fn) => { - arrayTraps[key] = function() { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); -arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop))) - die(13); - return arrayTraps.set.call(this, state, prop, void 0); -}; -arrayTraps.set = function(state, prop, value) { - if (process.env.NODE_ENV !== "production" && prop !== "length" && isNaN(parseInt(prop))) - die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); -}; -function peek(draft, prop) { - const state = draft[DRAFT_STATE]; - const source = state ? latest(state) : draft; - return source[prop]; -} -function readPropFromProto(state, source, prop) { - const desc = getDescriptorFromProto(source, prop); - return desc ? `value` in desc ? desc.value : ( - // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - desc.get?.call(state.draft_) - ) : void 0; -} -function getDescriptorFromProto(source, prop) { - if (!(prop in source)) - return void 0; - let proto = getPrototypeOf(source); - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) - return desc; - proto = getPrototypeOf(proto); - } - return void 0; -} -function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - if (state.parent_) { - markChanged(state.parent_); - } - } -} -function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ); - } -} - -// src/core/immerClass.ts -var Immer2 = class { - constructor(config) { - this.autoFreeze_ = true; - this.useStrictShallowCopy_ = false; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - this.produce = (base, recipe, patchListener) => { - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe; - recipe = base; - const self = this; - return function curriedProduce(base2 = defaultBase, ...args) { - return self.produce(base2, (draft) => recipe.call(this, draft, ...args)); - }; - } - if (typeof recipe !== "function") - die(6); - if (patchListener !== void 0 && typeof patchListener !== "function") - die(7); - let result; - if (isDraftable(base)) { - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - let hasError = true; - try { - result = recipe(proxy); - hasError = false; - } finally { - if (hasError) - revokeScope(scope); - else - leaveScope(scope); - } - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === void 0) - result = base; - if (result === NOTHING) - result = void 0; - if (this.autoFreeze_) - freeze(result, true); - if (patchListener) { - const p = []; - const ip = []; - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip); - patchListener(p, ip); - } - return result; - } else - die(1, base); - }; - this.produceWithPatches = (base, recipe) => { - if (typeof base === "function") { - return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args)); - } - let patches, inversePatches; - const result = this.produce(base, recipe, (p, ip) => { - patches = p; - inversePatches = ip; - }); - return [result, patches, inversePatches]; - }; - if (typeof config?.autoFreeze === "boolean") - this.setAutoFreeze(config.autoFreeze); - if (typeof config?.useStrictShallowCopy === "boolean") - this.setUseStrictShallowCopy(config.useStrictShallowCopy); - } - createDraft(base) { - if (!isDraftable(base)) - die(8); - if (isDraft(base)) - base = current(base); - const scope = enterScope(this); - const proxy = createProxy(base, void 0); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - } - finishDraft(draft, patchListener) { - const state = draft && draft[DRAFT_STATE]; - if (!state || !state.isManual_) - die(9); - const { scope_: scope } = state; - usePatchesInScope(scope, patchListener); - return processResult(void 0, scope); - } - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value) { - this.autoFreeze_ = value; - } - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value) { - this.useStrictShallowCopy_ = value; - } - applyPatches(base, patches) { - let i; - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i]; - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; - } - } - if (i > -1) { - patches = patches.slice(i + 1); - } - const applyPatchesImpl = getPlugin("Patches").applyPatches_; - if (isDraft(base)) { - return applyPatchesImpl(base, patches); - } - return this.produce( - base, - (draft) => applyPatchesImpl(draft, patches) - ); - } -}; -function createProxy(value, parent) { - const draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : createProxyProxy(value, parent); - const scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; -} - -// src/core/current.ts -function current(value) { - if (!isDraft(value)) - die(10, value); - return currentImpl(value); -} -function currentImpl(value) { - if (!isDraftable(value) || isFrozen(value)) - return value; - const state = value[DRAFT_STATE]; - let copy; - if (state) { - if (!state.modified_) - return state.base_; - state.finalized_ = true; - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_); - } else { - copy = shallowCopy(value, true); - } - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)); - }); - if (state) { - state.finalized_ = false; - } - return copy; -} - -// src/plugins/patches.ts -function enablePatches() { - const errorOffset = 16; - if (process.env.NODE_ENV !== "production") { - errors.push( - 'Sets cannot have "replace" patches.', - function(op) { - return "Unsupported patch operation: " + op; - }, - function(path) { - return "Cannot apply patch, path doesn't resolve: " + path; - }, - "Patching reserved attributes like __proto__, prototype and constructor is not allowed" - ); - } - const REPLACE = "replace"; - const ADD = "add"; - const REMOVE = "remove"; - function generatePatches_(state, basePath, patches, inversePatches) { - switch (state.type_) { - case 0 /* Object */: - case 2 /* Map */: - return generatePatchesFromAssigned( - state, - basePath, - patches, - inversePatches - ); - case 1 /* Array */: - return generateArrayPatches(state, basePath, patches, inversePatches); - case 3 /* Set */: - return generateSetPatches( - state, - basePath, - patches, - inversePatches - ); - } - } - function generateArrayPatches(state, basePath, patches, inversePatches) { - let { base_, assigned_ } = state; - let copy_ = state.copy_; - if (copy_.length < base_.length) { - ; - [base_, copy_] = [copy_, base_]; - [patches, inversePatches] = [inversePatches, patches]; - } - for (let i = 0; i < base_.length; i++) { - if (assigned_[i] && copy_[i] !== base_[i]) { - const path = basePath.concat([i]); - patches.push({ - op: REPLACE, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - inversePatches.push({ - op: REPLACE, - path, - value: clonePatchValueIfNeeded(base_[i]) - }); - } - } - for (let i = base_.length; i < copy_.length; i++) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - } - for (let i = copy_.length - 1; base_.length <= i; --i) { - const path = basePath.concat([i]); - inversePatches.push({ - op: REMOVE, - path - }); - } - } - function generatePatchesFromAssigned(state, basePath, patches, inversePatches) { - const { base_, copy_ } = state; - each(state.assigned_, (key, assignedValue) => { - const origValue = get(base_, key); - const value = get(copy_, key); - const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD; - if (origValue === value && op === REPLACE) - return; - const path = basePath.concat(key); - patches.push(op === REMOVE ? { op, path } : { op, path, value }); - inversePatches.push( - op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) } - ); - }); - } - function generateSetPatches(state, basePath, patches, inversePatches) { - let { base_, copy_ } = state; - let i = 0; - base_.forEach((value) => { - if (!copy_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: REMOVE, - path, - value - }); - inversePatches.unshift({ - op: ADD, - path, - value - }); - } - i++; - }); - i = 0; - copy_.forEach((value) => { - if (!base_.has(value)) { - const path = basePath.concat([i]); - patches.push({ - op: ADD, - path, - value - }); - inversePatches.unshift({ - op: REMOVE, - path, - value - }); - } - i++; - }); - } - function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) { - patches.push({ - op: REPLACE, - path: [], - value: replacement === NOTHING ? void 0 : replacement - }); - inversePatches.push({ - op: REPLACE, - path: [], - value: baseValue - }); - } - function applyPatches_(draft, patches) { - patches.forEach((patch) => { - const { path, op } = patch; - let base = draft; - for (let i = 0; i < path.length - 1; i++) { - const parentType = getArchtype(base); - let p = path[i]; - if (typeof p !== "string" && typeof p !== "number") { - p = "" + p; - } - if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === "__proto__" || p === "constructor")) - die(errorOffset + 3); - if (typeof base === "function" && p === "prototype") - die(errorOffset + 3); - base = get(base, p); - if (typeof base !== "object") - die(errorOffset + 2, path.join("/")); - } - const type = getArchtype(base); - const value = deepClonePatchValue(patch.value); - const key = path[path.length - 1]; - switch (op) { - case REPLACE: - switch (type) { - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - die(errorOffset); - default: - return base[key] = value; - } - case ADD: - switch (type) { - case 1 /* Array */: - return key === "-" ? base.push(value) : base.splice(key, 0, value); - case 2 /* Map */: - return base.set(key, value); - case 3 /* Set */: - return base.add(value); - default: - return base[key] = value; - } - case REMOVE: - switch (type) { - case 1 /* Array */: - return base.splice(key, 1); - case 2 /* Map */: - return base.delete(key); - case 3 /* Set */: - return base.delete(patch.value); - default: - return delete base[key]; - } - default: - die(errorOffset + 1, op); - } - }); - return draft; - } - function deepClonePatchValue(obj) { - if (!isDraftable(obj)) - return obj; - if (Array.isArray(obj)) - return obj.map(deepClonePatchValue); - if (isMap(obj)) - return new Map( - Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)]) - ); - if (isSet(obj)) - return new Set(Array.from(obj).map(deepClonePatchValue)); - const cloned = Object.create(getPrototypeOf(obj)); - for (const key in obj) - cloned[key] = deepClonePatchValue(obj[key]); - if (has(obj, DRAFTABLE)) - cloned[DRAFTABLE] = obj[DRAFTABLE]; - return cloned; - } - function clonePatchValueIfNeeded(obj) { - if (isDraft(obj)) { - return deepClonePatchValue(obj); - } else - return obj; - } - loadPlugin("Patches", { - applyPatches_, - generatePatches_, - generateReplacementPatches_ - }); -} - -// src/plugins/mapset.ts -function enableMapSet() { - class DraftMap extends Map { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 2 /* Map */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - assigned_: void 0, - base_: target, - draft_: this, - isManual_: false, - revoked_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(key) { - return latest(this[DRAFT_STATE]).has(key); - } - set(key, value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!latest(state).has(key) || latest(state).get(key) !== value) { - prepareMapCopy(state); - markChanged(state); - state.assigned_.set(key, true); - state.copy_.set(key, value); - state.assigned_.set(key, true); - } - return this; - } - delete(key) { - if (!this.has(key)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareMapCopy(state); - markChanged(state); - if (state.base_.has(key)) { - state.assigned_.set(key, false); - } else { - state.assigned_.delete(key); - } - state.copy_.delete(key); - return true; - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareMapCopy(state); - markChanged(state); - state.assigned_ = /* @__PURE__ */ new Map(); - each(state.base_, (key) => { - state.assigned_.set(key, false); - }); - state.copy_.clear(); - } - } - forEach(cb, thisArg) { - const state = this[DRAFT_STATE]; - latest(state).forEach((_value, key, _map) => { - cb.call(thisArg, this.get(key), key, this); - }); - } - get(key) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - const value = latest(state).get(key); - if (state.finalized_ || !isDraftable(value)) { - return value; - } - if (value !== state.base_.get(key)) { - return value; - } - const draft = createProxy(value, state); - prepareMapCopy(state); - state.copy_.set(key, draft); - return draft; - } - keys() { - return latest(this[DRAFT_STATE]).keys(); - } - values() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.values(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value - }; - } - }; - } - entries() { - const iterator = this.keys(); - return { - [Symbol.iterator]: () => this.entries(), - next: () => { - const r = iterator.next(); - if (r.done) - return r; - const value = this.get(r.value); - return { - done: false, - value: [r.value, value] - }; - } - }; - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.entries(); - } - } - function proxyMap_(target, parent) { - return new DraftMap(target, parent); - } - function prepareMapCopy(state) { - if (!state.copy_) { - state.assigned_ = /* @__PURE__ */ new Map(); - state.copy_ = new Map(state.base_); - } - } - class DraftSet extends Set { - constructor(target, parent) { - super(); - this[DRAFT_STATE] = { - type_: 3 /* Set */, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: void 0, - base_: target, - draft_: this, - drafts_: /* @__PURE__ */ new Map(), - revoked_: false, - isManual_: false - }; - } - get size() { - return latest(this[DRAFT_STATE]).size; - } - has(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!state.copy_) { - return state.base_.has(value); - } - if (state.copy_.has(value)) - return true; - if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value))) - return true; - return false; - } - add(value) { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (!this.has(value)) { - prepareSetCopy(state); - markChanged(state); - state.copy_.add(value); - } - return this; - } - delete(value) { - if (!this.has(value)) { - return false; - } - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - markChanged(state); - return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : ( - /* istanbul ignore next */ - false - )); - } - clear() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - if (latest(state).size) { - prepareSetCopy(state); - markChanged(state); - state.copy_.clear(); - } - } - values() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.values(); - } - entries() { - const state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.entries(); - } - keys() { - return this.values(); - } - [(DRAFT_STATE, Symbol.iterator)]() { - return this.values(); - } - forEach(cb, thisArg) { - const iterator = this.values(); - let result = iterator.next(); - while (!result.done) { - cb.call(thisArg, result.value, result.value, this); - result = iterator.next(); - } - } - } - function proxySet_(target, parent) { - return new DraftSet(target, parent); - } - function prepareSetCopy(state) { - if (!state.copy_) { - state.copy_ = /* @__PURE__ */ new Set(); - state.base_.forEach((value) => { - if (isDraftable(value)) { - const draft = createProxy(value, state); - state.drafts_.set(value, draft); - state.copy_.add(draft); - } else { - state.copy_.add(value); - } - }); - } - } - function assertUnrevoked(state) { - if (state.revoked_) - die(3, JSON.stringify(latest(state))); - } - loadPlugin("MapSet", { proxyMap_, proxySet_ }); -} - -// src/immer.ts -var immer = new Immer2(); -var produce = immer.produce; -var produceWithPatches = immer.produceWithPatches.bind( - immer -); -var setAutoFreeze = immer.setAutoFreeze.bind(immer); -var setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer); -var applyPatches = immer.applyPatches.bind(immer); -var createDraft = immer.createDraft.bind(immer); -var finishDraft = immer.finishDraft.bind(immer); -function castDraft(value) { - return value; -} -function castImmutable(value) { - return value; -} -export { - Immer2 as Immer, - applyPatches, - castDraft, - castImmutable, - createDraft, - current, - enableMapSet, - enablePatches, - finishDraft, - freeze, - DRAFTABLE as immerable, - isDraft, - isDraftable, - NOTHING as nothing, - original, - produce, - produceWithPatches, - setAutoFreeze, - setUseStrictShallowCopy -}; -//# sourceMappingURL=immer.mjs.map \ No newline at end of file diff --git a/node_modules/immer/dist/immer.mjs.map b/node_modules/immer/dist/immer.mjs.map deleted file mode 100644 index c98cbbf7..00000000 --- a/node_modules/immer/dist/immer.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"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/patches.ts","../src/plugins/mapset.ts","../src/immer.ts"],"sourcesContent":["// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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(obj: T, deep?: boolean): T\nexport function freeze(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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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_(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\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(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object 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> = 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 = {\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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): 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\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\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(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction(op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction(path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\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 ArchType.Object:\n\t\t\tcase ArchType.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 ArchType.Array:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ArchType.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: 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\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\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 | 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_(draft: T, patches: readonly 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\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\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(errorOffset + 3)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\")\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(errorOffset + 2, 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(errorOffset)\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(errorOffset + 1, 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(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(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(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\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(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\tdelete(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\tclear() {\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\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\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\tget(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(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\tkeys(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_(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\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(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\tadd(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\tdelete(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\tclear() {\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\tvalues(): IterableIterator {\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\tentries(): 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\tkeys(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(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\t}\n\tfunction proxySet_(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(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 {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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(value: T): Draft {\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(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n"],"mappings":"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","names":["immer","isSet","current","Immer","base","Immer"]} \ No newline at end of file diff --git a/node_modules/immer/dist/immer.production.mjs b/node_modules/immer/dist/immer.production.mjs deleted file mode 100644 index bc06411d..00000000 --- a/node_modules/immer/dist/immer.production.mjs +++ /dev/null @@ -1,2 +0,0 @@ -var R=Symbol.for("immer-nothing"),z=Symbol.for("immer-draftable"),u=Symbol.for("immer-state");function h(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var N=Object.getPrototypeOf;function O(e){return!!e&&!!e[u]}function I(e){return e?ue(e)||Array.isArray(e)||!!e[z]||!!e.constructor?.[z]||v(e)||k(e):!1}var me=Object.prototype.constructor.toString();function ue(e){if(!e||typeof e!="object")return!1;let t=N(e);if(t===null)return!0;let r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object?!0:typeof r=="function"&&Function.toString.call(r)===me}function Se(e){return O(e)||h(15,e),e[u].t}function _(e,t){j(e)===0?Reflect.ownKeys(e).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function j(e){let t=e[u];return t?t.o:Array.isArray(e)?1:v(e)?2:k(e)?3:0}function C(e,t){return j(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function J(e,t){return j(e)===2?e.get(t):e[t]}function X(e,t,r){let n=j(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function ye(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function v(e){return e instanceof Map}function k(e){return e instanceof Set}function T(e){return e.e||e.t}function L(e,t){if(v(e))return new Map(e);if(k(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let r=ue(e);if(t===!0||t==="class_only"&&!r){let n=Object.getOwnPropertyDescriptors(e);delete n[u];let i=Reflect.ownKeys(n);for(let f=0;f1&&(e.set=e.add=e.clear=e.delete=Pe),Object.freeze(e),t&&Object.entries(e).forEach(([r,n])=>H(n,!0))),e}function Pe(){h(2)}function $(e){return Object.isFrozen(e)}var re={};function w(e){let t=re[e];return t||h(0,e),t}function Q(e,t){re[e]||(re[e]=t)}var U;function K(){return U}function xe(e,t){return{a:[],i:e,p:t,P:!0,d:0}}function ne(e,t){t&&(w("Patches"),e.f=[],e.h=[],e.b=t)}function V(e){Y(e),e.a.forEach(ge),e.a=null}function Y(e){e===U&&(U=e.i)}function ae(e){return U=xe(U,e)}function ge(e){let t=e[u];t.o===0||t.o===1?t.x():t.m=!0}function oe(e,t){t.d=t.a.length;let r=t.a[0];return e!==void 0&&e!==r?(r[u].s&&(V(t),h(4)),I(e)&&(e=Z(t,e),t.i||ee(t,e)),t.f&&w("Patches").T(r[u].t,e,t.f,t.h)):e=Z(t,r,[]),V(t),t.f&&t.b(t.f,t.h),e!==R?e:void 0}function Z(e,t,r){if($(t))return t;let n=t[u];if(!n)return _(t,(i,f)=>le(e,n,t,i,f,r)),t;if(n.n!==e)return t;if(!n.s)return ee(e,n.t,!0),n.t;if(!n.c){n.c=!0,n.n.d--;let i=n.e,f=i,l=!1;n.o===3&&(f=new Set(i),i.clear(),l=!0),_(f,(c,b)=>le(e,n,i,c,b,r,l)),ee(e,i,!1),r&&e.f&&w("Patches").g(n,r,e.f,e.h)}return n.e}function le(e,t,r,n,i,f,l){if(O(i)){let c=f&&t&&t.o!==3&&!C(t.r,n)?f.concat(n):void 0,b=Z(e,i,c);if(X(r,n,b),O(b))e.P=!1;else return}else l&&r.add(i);if(I(i)&&!$(i)){if(!e.p.y&&e.d<1)return;Z(e,i),(!t||!t.n.i)&&typeof n!="symbol"&&Object.prototype.propertyIsEnumerable.call(r,n)&&ee(e,i)}}function ee(e,t,r=!1){!e.i&&e.p.y&&e.P&&H(t,r)}function pe(e,t){let r=Array.isArray(e),n={o:r?1:0,n:t?t.n:K(),s:!1,c:!1,r:{},i:t,t:e,u:null,e:null,x:null,l:!1},i=n,f=ce;r&&(i=[n],f=q);let{revoke:l,proxy:c}=Proxy.revocable(i,f);return n.u=c,n.x=l,c}var ce={get(e,t){if(t===u)return e;let r=T(e);if(!C(r,t))return be(e,r,t);let n=r[t];return e.c||!I(n)?n:n===ie(e.t,t)?(se(e),e.e[t]=B(n,e)):n},has(e,t){return t in T(e)},ownKeys(e){return Reflect.ownKeys(T(e))},set(e,t,r){let n=de(T(e),t);if(n?.set)return n.set.call(e.u,r),!0;if(!e.s){let i=ie(T(e),t),f=i?.[u];if(f&&f.t===r)return e.e[t]=r,e.r[t]=!1,!0;if(ye(r,i)&&(r!==void 0||C(e.t,t)))return!0;se(e),E(e)}return e.e[t]===r&&(r!==void 0||t in e.e)||Number.isNaN(r)&&Number.isNaN(e.e[t])||(e.e[t]=r,e.r[t]=!0),!0},deleteProperty(e,t){return ie(e.t,t)!==void 0||t in e.t?(e.r[t]=!1,se(e),E(e)):delete e.r[t],e.e&&delete e.e[t],!0},getOwnPropertyDescriptor(e,t){let r=T(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.o!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){h(11)},getPrototypeOf(e){return N(e.t)},setPrototypeOf(){h(12)}},q={};_(ce,(e,t)=>{q[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});q.deleteProperty=function(e,t){return q.set.call(this,e,t,void 0)};q.set=function(e,t,r){return ce.set.call(this,e[0],t,r,e[0])};function ie(e,t){let r=e[u];return(r?T(r):e)[t]}function be(e,t,r){let n=de(t,r);return n?"value"in n?n.value:n.get?.call(e.u):void 0}function de(e,t){if(!(t in e))return;let r=N(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=N(r)}}function E(e){e.s||(e.s=!0,e.i&&E(e.i))}function se(e){e.e||(e.e=L(e.t,e.n.p.S))}var te=class{constructor(t){this.y=!0;this.S=!1;this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){let f=r;r=t;let l=this;return function(b=f,...a){return l.produce(b,o=>r.call(this,o,...a))}}typeof r!="function"&&h(6),n!==void 0&&typeof n!="function"&&h(7);let i;if(I(t)){let f=ae(this),l=B(t,void 0),c=!0;try{i=r(l),c=!1}finally{c?V(f):Y(f)}return ne(f,n),oe(i,f)}else if(!t||typeof t!="object"){if(i=r(t),i===void 0&&(i=t),i===R&&(i=void 0),this.y&&H(i,!0),n){let f=[],l=[];w("Patches").T(t,i,f,l),n(f,l)}return i}else h(1,t)};this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(l,...c)=>this.produceWithPatches(l,b=>t(b,...c));let n,i;return[this.produce(t,r,(l,c)=>{n=l,i=c}),n,i]};typeof t?.autoFreeze=="boolean"&&this.setAutoFreeze(t.autoFreeze),typeof t?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(t.useStrictShallowCopy)}createDraft(t){I(t)||h(8),O(t)&&(t=fe(t));let r=ae(this),n=B(t,void 0);return n[u].l=!0,Y(r),n}finishDraft(t,r){let n=t&&t[u];(!n||!n.l)&&h(9);let{n:i}=n;return ne(i,r),oe(void 0,i)}setAutoFreeze(t){this.y=t}setUseStrictShallowCopy(t){this.S=t}applyPatches(t,r){let n;for(n=r.length-1;n>=0;n--){let f=r[n];if(f.path.length===0&&f.op==="replace"){t=f.value;break}}n>-1&&(r=r.slice(n+1));let i=w("Patches").A;return O(t)?i(t,r):this.produce(t,f=>i(f,r))}};function B(e,t){let r=v(e)?w("MapSet").I(e,t):k(e)?w("MapSet").D(e,t):pe(e,t);return(t?t.n:K()).a.push(r),r}function fe(e){return O(e)||h(10,e),he(e)}function he(e){if(!I(e)||$(e))return e;let t=e[u],r;if(t){if(!t.s)return t.t;t.c=!0,r=L(e,t.n.p.S)}else r=L(e,!0);return _(r,(n,i)=>{X(r,n,he(i))}),t&&(t.c=!1),r}function Te(){let t="replace",r="add",n="remove";function i(s,S,m,x){switch(s.o){case 0:case 2:return l(s,S,m,x);case 1:return f(s,S,m,x);case 3:return c(s,S,m,x)}}function f(s,S,m,x){let{t:A,r:P}=s,g=s.e;g.length{let d=J(A,g),W=J(P,g),F=y?C(A,g)?t:r:n;if(d===W&&F===t)return;let D=S.concat(g);m.push(F===n?{op:F,path:D}:{op:F,path:D,value:W}),x.push(F===r?{op:n,path:D}:F===n?{op:r,path:D,value:p(d)}:{op:t,path:D,value:p(d)})})}function c(s,S,m,x){let{t:A,e:P}=s,g=0;A.forEach(y=>{if(!P.has(y)){let d=S.concat([g]);m.push({op:n,path:d,value:y}),x.unshift({op:r,path:d,value:y})}g++}),g=0,P.forEach(y=>{if(!A.has(y)){let d=S.concat([g]);m.push({op:r,path:d,value:y}),x.unshift({op:n,path:d,value:y})}g++})}function b(s,S,m,x){m.push({op:t,path:[],value:S===R?void 0:S}),x.push({op:t,path:[],value:s})}function a(s,S){return S.forEach(m=>{let{path:x,op:A}=m,P=s;for(let W=0;W[m,o(x)]));if(k(s))return new Set(Array.from(s).map(o));let S=Object.create(N(s));for(let m in s)S[m]=o(s[m]);return C(s,z)&&(S[z]=s[z]),S}function p(s){return O(s)?o(s):s}Q("Patches",{A:a,g:i,T:b})}function Ae(){class e extends Map{constructor(a,o){super();this[u]={o:2,i:o,n:o?o.n:K(),s:!1,c:!1,e:void 0,r:void 0,t:a,u:this,l:!1,m:!1}}get size(){return T(this[u]).size}has(a){return T(this[u]).has(a)}set(a,o){let p=this[u];return l(p),(!T(p).has(a)||T(p).get(a)!==o)&&(r(p),E(p),p.r.set(a,!0),p.e.set(a,o),p.r.set(a,!0)),this}delete(a){if(!this.has(a))return!1;let o=this[u];return l(o),r(o),E(o),o.t.has(a)?o.r.set(a,!1):o.r.delete(a),o.e.delete(a),!0}clear(){let a=this[u];l(a),T(a).size&&(r(a),E(a),a.r=new Map,_(a.t,o=>{a.r.set(o,!1)}),a.e.clear())}forEach(a,o){let p=this[u];T(p).forEach((s,S,m)=>{a.call(o,this.get(S),S,this)})}get(a){let o=this[u];l(o);let p=T(o).get(a);if(o.c||!I(p)||p!==o.t.get(a))return p;let s=B(p,o);return r(o),o.e.set(a,s),s}keys(){return T(this[u]).keys()}values(){let a=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let o=a.next();return o.done?o:{done:!1,value:this.get(o.value)}}}}entries(){let a=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let o=a.next();if(o.done)return o;let p=this.get(o.value);return{done:!1,value:[o.value,p]}}}}[(u,Symbol.iterator)](){return this.entries()}}function t(c,b){return new e(c,b)}function r(c){c.e||(c.r=new Map,c.e=new Map(c.t))}class n extends Set{constructor(a,o){super();this[u]={o:3,i:o,n:o?o.n:K(),s:!1,c:!1,e:void 0,t:a,u:this,a:new Map,m:!1,l:!1}}get size(){return T(this[u]).size}has(a){let o=this[u];return l(o),o.e?!!(o.e.has(a)||o.a.has(a)&&o.e.has(o.a.get(a))):o.t.has(a)}add(a){let o=this[u];return l(o),this.has(a)||(f(o),E(o),o.e.add(a)),this}delete(a){if(!this.has(a))return!1;let o=this[u];return l(o),f(o),E(o),o.e.delete(a)||(o.a.has(a)?o.e.delete(o.a.get(a)):!1)}clear(){let a=this[u];l(a),T(a).size&&(f(a),E(a),a.e.clear())}values(){let a=this[u];return l(a),f(a),a.e.values()}entries(){let a=this[u];return l(a),f(a),a.e.entries()}keys(){return this.values()}[(u,Symbol.iterator)](){return this.values()}forEach(a,o){let p=this.values(),s=p.next();for(;!s.done;)a.call(o,s.value,s.value,this),s=p.next()}}function i(c,b){return new n(c,b)}function f(c){c.e||(c.e=new Set,c.t.forEach(b=>{if(I(b)){let a=B(b,c);c.a.set(b,a),c.e.add(a)}else c.e.add(b)}))}function l(c){c.m&&h(3,JSON.stringify(T(c)))}Q("MapSet",{I:t,D:i})}var M=new te,qt=M.produce,Jt=M.produceWithPatches.bind(M),Xt=M.setAutoFreeze.bind(M),Qt=M.setUseStrictShallowCopy.bind(M),Yt=M.applyPatches.bind(M),Zt=M.createDraft.bind(M),er=M.finishDraft.bind(M);function tr(e){return e}function rr(e){return e}export{te as Immer,Yt as applyPatches,tr as castDraft,rr as castImmutable,Zt as createDraft,fe as current,Ae as enableMapSet,Te as enablePatches,er as finishDraft,H as freeze,z as immerable,O as isDraft,I as isDraftable,R as nothing,Se as original,qt as produce,Jt as produceWithPatches,Xt as setAutoFreeze,Qt as setUseStrictShallowCopy}; -//# sourceMappingURL=immer.production.mjs.map \ No newline at end of file diff --git a/node_modules/immer/dist/immer.production.mjs.map b/node_modules/immer/dist/immer.production.mjs.map deleted file mode 100644 index 2c914746..00000000 --- a/node_modules/immer/dist/immer.production.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"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/patches.ts","../src/plugins/mapset.ts","../src/immer.ts"],"sourcesContent":["// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\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 = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\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\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\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\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\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 = 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(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(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\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\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.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 target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn 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, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\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(obj: T, deep?: boolean): T\nexport function freeze(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)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\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_(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\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\tArchType,\n\tgetPlugin\n} from \"../internal\"\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\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 (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\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\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\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 (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(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\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 = 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// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\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\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).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} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\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\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && 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\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\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_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\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(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object 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> = 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 = {\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(value, state))\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\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\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\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\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_ !== ArchType.Array || 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 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 (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(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 = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = 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: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\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\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 type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\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} recipe - 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(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\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(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): 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\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\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(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\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 enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches(base: T, patches: readonly 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(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\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: createProxyProxy(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\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\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(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tProxyArrayState,\n\tMapState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tgetPrototypeOf,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tArchType,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING,\n\terrors\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst errorOffset = 16\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\terrors.push(\n\t\t\t'Sets cannot have \"replace\" patches.',\n\t\t\tfunction(op: string) {\n\t\t\t\treturn \"Unsupported patch operation: \" + op\n\t\t\t},\n\t\t\tfunction(path: string) {\n\t\t\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t\t\t},\n\t\t\t\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n\t\t)\n\t}\n\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 ArchType.Object:\n\t\t\tcase ArchType.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 ArchType.Array:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ArchType.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: 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\tfor (let i = copy_.length - 1; base_.length <= i; --i) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tinversePatches.push({\n\t\t\t\top: REMOVE,\n\t\t\t\tpath\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 | 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_(draft: T, patches: readonly 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\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\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(errorOffset + 3)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\")\n\t\t\t\t\tdie(errorOffset + 3)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(errorOffset + 2, 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(errorOffset)\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(errorOffset + 1, 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(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(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(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\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tdie,\n\tArchType,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\tclass DraftMap extends Map {\n\t\t[DRAFT_STATE]: MapState\n\n\t\tconstructor(target: AnyMap, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tset(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\tdelete(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\tclear() {\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\tforEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) {\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\tget(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(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\tkeys(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tvalues(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\tentries(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[Symbol.iterator]: () => 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\t[Symbol.iterator]() {\n\t\t\treturn this.entries()\n\t\t}\n\t}\n\n\tfunction proxyMap_(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\tclass DraftSet extends Set {\n\t\t[DRAFT_STATE]: SetState\n\t\tconstructor(target: AnySet, parent?: ImmerState) {\n\t\t\tsuper()\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ArchType.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}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t}\n\n\t\thas(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\tadd(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\tdelete(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\tclear() {\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\tvalues(): IterableIterator {\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\tentries(): 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\tkeys(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\t[Symbol.iterator]() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tforEach(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\t}\n\tfunction proxySet_(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(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 {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\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\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 enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.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(value: T): Draft {\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(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n"],"mappings":"AAKO,IAAMA,EAAyB,OAAO,IAAI,eAAe,EAUnDC,EAA2B,OAAO,IAAI,iBAAiB,EAEvDC,EAA6B,OAAO,IAAI,aAAa,ECqB3D,SAASC,EAAIC,KAAkBC,EAAoB,CAMzD,MAAM,IAAI,MACT,8BAA8BD,0CAC/B,CACD,CCjCO,IAAME,EAAiB,OAAO,eAI9B,SAASC,EAAQC,EAAqB,CAC5C,MAAO,CAAC,CAACA,GAAS,CAAC,CAACA,EAAMC,CAAW,CACtC,CAIO,SAASC,EAAYF,EAAqB,CAChD,OAAKA,EAEJG,GAAcH,CAAK,GACnB,MAAM,QAAQA,CAAK,GACnB,CAAC,CAACA,EAAMI,CAAS,GACjB,CAAC,CAACJ,EAAM,cAAcI,CAAS,GAC/BC,EAAML,CAAK,GACXM,EAAMN,CAAK,EAPO,EASpB,CAEA,IAAMO,GAAmB,OAAO,UAAU,YAAY,SAAS,EAExD,SAASJ,GAAcH,EAAqB,CAClD,GAAI,CAACA,GAAS,OAAOA,GAAU,SAAU,MAAO,GAChD,IAAMQ,EAAQV,EAAeE,CAAK,EAClC,GAAIQ,IAAU,KACb,MAAO,GAER,IAAMC,EACL,OAAO,eAAe,KAAKD,EAAO,aAAa,GAAKA,EAAM,YAE3D,OAAIC,IAAS,OAAe,GAG3B,OAAOA,GAAQ,YACf,SAAS,SAAS,KAAKA,CAAI,IAAMF,EAEnC,CAKO,SAASG,GAASV,EAA0B,CAClD,OAAKD,EAAQC,CAAK,GAAGW,EAAI,GAAIX,CAAK,EAC3BA,EAAMC,CAAW,EAAEW,CAC3B,CAWO,SAASC,EAAKC,EAAUC,EAAW,CACrCC,EAAYF,CAAG,IAAM,EACxB,QAAQ,QAAQA,CAAG,EAAE,QAAQG,GAAO,CACnCF,EAAKE,EAAKH,EAAIG,CAAG,EAAGH,CAAG,CACxB,CAAC,EAEDA,EAAI,QAAQ,CAACI,EAAYC,IAAeJ,EAAKI,EAAOD,EAAOJ,CAAG,CAAC,CAEjE,CAGO,SAASE,EAAYI,EAAsB,CACjD,IAAMC,EAAgCD,EAAMnB,CAAW,EACvD,OAAOoB,EACJA,EAAMC,EACN,MAAM,QAAQF,CAAK,IAEnBf,EAAMe,CAAK,IAEXd,EAAMc,CAAK,KAGf,CAGO,SAASG,EAAIH,EAAYI,EAA4B,CAC3D,OAAOR,EAAYI,CAAK,IAAM,EAC3BA,EAAM,IAAII,CAAI,EACd,OAAO,UAAU,eAAe,KAAKJ,EAAOI,CAAI,CACpD,CAGO,SAASC,EAAIL,EAA2BI,EAAwB,CAEtE,OAAOR,EAAYI,CAAK,IAAM,EAAeA,EAAM,IAAII,CAAI,EAAIJ,EAAMI,CAAI,CAC1E,CAGO,SAASE,EAAIN,EAAYO,EAA6B3B,EAAY,CACxE,IAAM4B,EAAIZ,EAAYI,CAAK,EACvBQ,IAAM,EAAcR,EAAM,IAAIO,EAAgB3B,CAAK,EAC9C4B,IAAM,EACdR,EAAM,IAAIpB,CAAK,EACToB,EAAMO,CAAc,EAAI3B,CAChC,CAGO,SAAS6B,GAAGC,EAAQC,EAAiB,CAE3C,OAAID,IAAMC,EACFD,IAAM,GAAK,EAAIA,IAAM,EAAIC,EAEzBD,IAAMA,GAAKC,IAAMA,CAE1B,CAGO,SAAS1B,EAAM2B,EAA+B,CACpD,OAAOA,aAAkB,GAC1B,CAGO,SAAS1B,EAAM0B,EAA+B,CACpD,OAAOA,aAAkB,GAC1B,CAEO,SAASC,EAAOZ,EAAwB,CAC9C,OAAOA,EAAMa,GAASb,EAAMT,CAC7B,CAGO,SAASuB,EAAYC,EAAWC,EAAoB,CAC1D,GAAIhC,EAAM+B,CAAI,EACb,OAAO,IAAI,IAAIA,CAAI,EAEpB,GAAI9B,EAAM8B,CAAI,EACb,OAAO,IAAI,IAAIA,CAAI,EAEpB,GAAI,MAAM,QAAQA,CAAI,EAAG,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAI,EAE/D,IAAME,EAAUnC,GAAciC,CAAI,EAElC,GAAIC,IAAW,IAASA,IAAW,cAAgB,CAACC,EAAU,CAE7D,IAAMC,EAAc,OAAO,0BAA0BH,CAAI,EACzD,OAAOG,EAAYtC,CAAkB,EACrC,IAAIuC,EAAO,QAAQ,QAAQD,CAAW,EACtC,QAASE,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACrC,IAAMxB,EAAWuB,EAAKC,CAAC,EACjBC,EAAOH,EAAYtB,CAAG,EACxByB,EAAK,WAAa,KACrBA,EAAK,SAAW,GAChBA,EAAK,aAAe,KAKjBA,EAAK,KAAOA,EAAK,OACpBH,EAAYtB,CAAG,EAAI,CAClB,aAAc,GACd,SAAU,GACV,WAAYyB,EAAK,WACjB,MAAON,EAAKnB,CAAG,CAChB,GAEF,OAAO,OAAO,OAAOnB,EAAesC,CAAI,EAAGG,CAAW,MAChD,CAEN,IAAM/B,EAAQV,EAAesC,CAAI,EACjC,GAAI5B,IAAU,MAAQ8B,EACrB,MAAO,CAAC,GAAGF,CAAI,EAEhB,IAAMtB,EAAM,OAAO,OAAON,CAAK,EAC/B,OAAO,OAAO,OAAOM,EAAKsB,CAAI,EAEhC,CAUO,SAASO,EAAU7B,EAAU8B,EAAgB,GAAU,CAC7D,OAAIC,EAAS/B,CAAG,GAAKf,EAAQe,CAAG,GAAK,CAACZ,EAAYY,CAAG,IACjDE,EAAYF,CAAG,EAAI,IACtBA,EAAI,IAAMA,EAAI,IAAMA,EAAI,MAAQA,EAAI,OAASgC,IAE9C,OAAO,OAAOhC,CAAG,EACb8B,GAGH,OAAO,QAAQ9B,CAAG,EAAE,QAAQ,CAAC,CAACG,EAAKjB,CAAK,IAAM2C,EAAO3C,EAAO,EAAI,CAAC,GAC3Dc,CACR,CAEA,SAASgC,IAA8B,CACtCnC,EAAI,CAAC,CACN,CAEO,SAASkC,EAAS/B,EAAmB,CAC3C,OAAO,OAAO,SAASA,CAAG,CAC3B,CC5MA,IAAMiC,GAoBF,CAAC,EAIE,SAASC,EACfC,EACiC,CACjC,IAAMC,EAASH,GAAQE,CAAS,EAChC,OAAKC,GACJC,EAAI,EAAGF,CAAS,EAGVC,CACR,CAEO,SAASE,EACfH,EACAI,EACO,CACFN,GAAQE,CAAS,IAAGF,GAAQE,CAAS,EAAII,EAC/C,CC5BA,IAAIC,EAEG,SAASC,GAAkB,CACjC,OAAOD,CACR,CAEA,SAASE,GACRC,EACAC,EACa,CACb,MAAO,CACNC,EAAS,CAAC,EACVF,IACAC,IAGAE,EAAgB,GAChBC,EAAoB,CACrB,CACD,CAEO,SAASC,GACfC,EACAC,EACC,CACGA,IACHC,EAAU,SAAS,EACnBF,EAAMG,EAAW,CAAC,EAClBH,EAAMI,EAAkB,CAAC,EACzBJ,EAAMK,EAAiBJ,EAEzB,CAEO,SAASK,EAAYN,EAAmB,CAC9CO,EAAWP,CAAK,EAChBA,EAAMJ,EAAQ,QAAQY,EAAW,EAEjCR,EAAMJ,EAAU,IACjB,CAEO,SAASW,EAAWP,EAAmB,CACzCA,IAAUT,IACbA,EAAeS,EAAMN,EAEvB,CAEO,SAASe,GAAWC,EAAc,CACxC,OAAQnB,EAAeE,GAAYF,EAAcmB,CAAK,CACvD,CAEA,SAASF,GAAYG,EAAgB,CACpC,IAAMC,EAAoBD,EAAME,CAAW,EACvCD,EAAME,IAAU,GAAmBF,EAAME,IAAU,EACtDF,EAAMG,EAAQ,EACVH,EAAMI,EAAW,EACvB,CC3DO,SAASC,GAAcC,EAAaC,EAAmB,CAC7DA,EAAMC,EAAqBD,EAAME,EAAQ,OACzC,IAAMC,EAAYH,EAAME,EAAS,CAAC,EAElC,OADmBH,IAAW,QAAaA,IAAWI,GAEjDA,EAAUC,CAAW,EAAEC,IAC1BC,EAAYN,CAAK,EACjBO,EAAI,CAAC,GAEFC,EAAYT,CAAM,IAErBA,EAASU,EAAST,EAAOD,CAAM,EAC1BC,EAAMU,GAASC,GAAYX,EAAOD,CAAM,GAE1CC,EAAMY,GACTC,EAAU,SAAS,EAAEC,EACpBX,EAAUC,CAAW,EAAEW,EACvBhB,EACAC,EAAMY,EACNZ,EAAMgB,CACP,GAIDjB,EAASU,EAAST,EAAOG,EAAW,CAAC,CAAC,EAEvCG,EAAYN,CAAK,EACbA,EAAMY,GACTZ,EAAMiB,EAAgBjB,EAAMY,EAAUZ,EAAMgB,CAAgB,EAEtDjB,IAAWmB,EAAUnB,EAAS,MACtC,CAEA,SAASU,EAASU,EAAuBC,EAAYC,EAAkB,CAEtE,GAAIC,EAASF,CAAK,EAAG,OAAOA,EAE5B,IAAMG,EAAoBH,EAAMhB,CAAW,EAE3C,GAAI,CAACmB,EACJ,OAAAC,EAAKJ,EAAO,CAACK,EAAKC,IACjBC,GAAiBR,EAAWI,EAAOH,EAAOK,EAAKC,EAAYL,CAAI,CAChE,EACOD,EAGR,GAAIG,EAAMK,IAAWT,EAAW,OAAOC,EAEvC,GAAI,CAACG,EAAMlB,EACV,OAAAM,GAAYQ,EAAWI,EAAMR,EAAO,EAAI,EACjCQ,EAAMR,EAGd,GAAI,CAACQ,EAAMM,EAAY,CACtBN,EAAMM,EAAa,GACnBN,EAAMK,EAAO3B,IACb,IAAMF,EAASwB,EAAMO,EAKjBC,EAAahC,EACbiC,EAAQ,GACRT,EAAMU,IAAU,IACnBF,EAAa,IAAI,IAAIhC,CAAM,EAC3BA,EAAO,MAAM,EACbiC,EAAQ,IAETR,EAAKO,EAAY,CAACN,EAAKC,IACtBC,GAAiBR,EAAWI,EAAOxB,EAAQ0B,EAAKC,EAAYL,EAAMW,CAAK,CACxE,EAEArB,GAAYQ,EAAWpB,EAAQ,EAAK,EAEhCsB,GAAQF,EAAUP,GACrBC,EAAU,SAAS,EAAEqB,EACpBX,EACAF,EACAF,EAAUP,EACVO,EAAUH,CACX,EAGF,OAAOO,EAAMO,CACd,CAEA,SAASH,GACRR,EACAgB,EACAC,EACAC,EACAX,EACAY,EACAC,EACC,CAGD,GAAIC,EAAQd,CAAU,EAAG,CACxB,IAAML,EACLiB,GACAH,GACAA,EAAaF,IAAU,GACvB,CAACQ,EAAKN,EAA8CO,EAAYL,CAAI,EACjEC,EAAU,OAAOD,CAAI,EACrB,OAEEM,EAAMlC,EAASU,EAAWO,EAAYL,CAAI,EAIhD,GAHAuB,EAAIR,EAAcC,EAAMM,CAAG,EAGvBH,EAAQG,CAAG,EACdxB,EAAU0B,EAAiB,OACrB,aACGN,GACVH,EAAa,IAAIV,CAAU,EAG5B,GAAIlB,EAAYkB,CAAU,GAAK,CAACJ,EAASI,CAAU,EAAG,CACrD,GAAI,CAACP,EAAU2B,EAAOC,GAAe5B,EAAUlB,EAAqB,EAMnE,OAEDQ,EAASU,EAAWO,CAAU,GAK5B,CAACS,GAAe,CAACA,EAAYP,EAAOlB,IACrC,OAAO2B,GAAS,UAChB,OAAO,UAAU,qBAAqB,KAAKD,EAAcC,CAAI,GAE7D1B,GAAYQ,EAAWO,CAAU,EAEpC,CAEA,SAASf,GAAYX,EAAmBoB,EAAY4B,EAAO,GAAO,CAE7D,CAAChD,EAAMU,GAAWV,EAAM8C,EAAOC,GAAe/C,EAAM6C,GACvDI,EAAO7B,EAAO4B,CAAI,CAEpB,CCjHO,SAASE,GACfC,EACAC,EACyB,CACzB,IAAMC,EAAU,MAAM,QAAQF,CAAI,EAC5BG,EAAoB,CACzBC,EAAOF,MAEPG,EAAQJ,EAASA,EAAOI,EAASC,EAAgB,EAEjDC,EAAW,GAEXC,EAAY,GAEZC,EAAW,CAAC,EAEZC,EAAST,EAETU,EAAOX,EAEPY,EAAQ,KAERC,EAAO,KAEPC,EAAS,KACTC,EAAW,EACZ,EAQIC,EAAYb,EACZc,EAA2CC,GAC3ChB,IACHc,EAAS,CAACb,CAAK,EACfc,EAAQE,GAGT,GAAM,CAAC,OAAAC,EAAQ,MAAAC,CAAK,EAAI,MAAM,UAAUL,EAAQC,CAAK,EACrD,OAAAd,EAAMS,EAASS,EACflB,EAAMW,EAAUM,EACTC,CACR,CAKO,IAAMH,GAAwC,CACpD,IAAIf,EAAOmB,EAAM,CAChB,GAAIA,IAASC,EAAa,OAAOpB,EAEjC,IAAMqB,EAASC,EAAOtB,CAAK,EAC3B,GAAI,CAACuB,EAAIF,EAAQF,CAAI,EAEpB,OAAOK,GAAkBxB,EAAOqB,EAAQF,CAAI,EAE7C,IAAMM,EAAQJ,EAAOF,CAAI,EACzB,OAAInB,EAAMK,GAAc,CAACqB,EAAYD,CAAK,EAClCA,EAIJA,IAAUE,GAAK3B,EAAMQ,EAAOW,CAAI,GACnCS,GAAY5B,CAAK,EACTA,EAAMU,EAAOS,CAAW,EAAIU,EAAYJ,EAAOzB,CAAK,GAEtDyB,CACR,EACA,IAAIzB,EAAOmB,EAAM,CAChB,OAAOA,KAAQG,EAAOtB,CAAK,CAC5B,EACA,QAAQA,EAAO,CACd,OAAO,QAAQ,QAAQsB,EAAOtB,CAAK,CAAC,CACrC,EACA,IACCA,EACAmB,EACAM,EACC,CACD,IAAMK,EAAOC,GAAuBT,EAAOtB,CAAK,EAAGmB,CAAI,EACvD,GAAIW,GAAM,IAGT,OAAAA,EAAK,IAAI,KAAK9B,EAAMS,EAAQgB,CAAK,EAC1B,GAER,GAAI,CAACzB,EAAMI,EAAW,CAGrB,IAAM4B,EAAUL,GAAKL,EAAOtB,CAAK,EAAGmB,CAAI,EAElCc,EAAiCD,IAAUZ,CAAW,EAC5D,GAAIa,GAAgBA,EAAazB,IAAUiB,EAC1C,OAAAzB,EAAMU,EAAOS,CAAI,EAAIM,EACrBzB,EAAMM,EAAUa,CAAI,EAAI,GACjB,GAER,GAAIe,GAAGT,EAAOO,CAAO,IAAMP,IAAU,QAAaF,EAAIvB,EAAMQ,EAAOW,CAAI,GACtE,MAAO,GACRS,GAAY5B,CAAK,EACjBmC,EAAYnC,CAAK,EAGlB,OACEA,EAAMU,EAAOS,CAAI,IAAMM,IAEtBA,IAAU,QAAaN,KAAQnB,EAAMU,IAEtC,OAAO,MAAMe,CAAK,GAAK,OAAO,MAAMzB,EAAMU,EAAOS,CAAI,CAAC,IAKxDnB,EAAMU,EAAOS,CAAI,EAAIM,EACrBzB,EAAMM,EAAUa,CAAI,EAAI,IACjB,EACR,EACA,eAAenB,EAAOmB,EAAc,CAEnC,OAAIQ,GAAK3B,EAAMQ,EAAOW,CAAI,IAAM,QAAaA,KAAQnB,EAAMQ,GAC1DR,EAAMM,EAAUa,CAAI,EAAI,GACxBS,GAAY5B,CAAK,EACjBmC,EAAYnC,CAAK,GAGjB,OAAOA,EAAMM,EAAUa,CAAI,EAExBnB,EAAMU,GACT,OAAOV,EAAMU,EAAMS,CAAI,EAEjB,EACR,EAGA,yBAAyBnB,EAAOmB,EAAM,CACrC,IAAMiB,EAAQd,EAAOtB,CAAK,EACpB8B,EAAO,QAAQ,yBAAyBM,EAAOjB,CAAI,EACzD,OAAKW,GACE,CACN,SAAU,GACV,aAAc9B,EAAMC,IAAU,GAAkBkB,IAAS,SACzD,WAAYW,EAAK,WACjB,MAAOM,EAAMjB,CAAI,CAClB,CACD,EACA,gBAAiB,CAChBkB,EAAI,EAAE,CACP,EACA,eAAerC,EAAO,CACrB,OAAOsC,EAAetC,EAAMQ,CAAK,CAClC,EACA,gBAAiB,CAChB6B,EAAI,EAAE,CACP,CACD,EAMMrB,EAA8C,CAAC,EACrDuB,EAAKxB,GAAa,CAACyB,EAAKC,IAAO,CAE9BzB,EAAWwB,CAAG,EAAI,UAAW,CAC5B,iBAAU,CAAC,EAAI,UAAU,CAAC,EAAE,CAAC,EACtBC,EAAG,MAAM,KAAM,SAAS,CAChC,CACD,CAAC,EACDzB,EAAW,eAAiB,SAAShB,EAAOmB,EAAM,CAIjD,OAAOH,EAAW,IAAK,KAAK,KAAMhB,EAAOmB,EAAM,MAAS,CACzD,EACAH,EAAW,IAAM,SAAShB,EAAOmB,EAAMM,EAAO,CAO7C,OAAOV,GAAY,IAAK,KAAK,KAAMf,EAAM,CAAC,EAAGmB,EAAMM,EAAOzB,EAAM,CAAC,CAAC,CACnE,EAGA,SAAS2B,GAAKe,EAAgBvB,EAAmB,CAChD,IAAMnB,EAAQ0C,EAAMtB,CAAW,EAE/B,OADepB,EAAQsB,EAAOtB,CAAK,EAAI0C,GACzBvB,CAAI,CACnB,CAEA,SAASK,GAAkBxB,EAAmBqB,EAAaF,EAAmB,CAC7E,IAAMW,EAAOC,GAAuBV,EAAQF,CAAI,EAChD,OAAOW,EACJ,UAAWA,EACVA,EAAK,MAGLA,EAAK,KAAK,KAAK9B,EAAMS,CAAM,EAC5B,MACJ,CAEA,SAASsB,GACRV,EACAF,EACiC,CAEjC,GAAI,EAAEA,KAAQE,GAAS,OACvB,IAAIsB,EAAQL,EAAejB,CAAM,EACjC,KAAOsB,GAAO,CACb,IAAMb,EAAO,OAAO,yBAAyBa,EAAOxB,CAAI,EACxD,GAAIW,EAAM,OAAOA,EACjBa,EAAQL,EAAeK,CAAK,EAG9B,CAEO,SAASR,EAAYnC,EAAmB,CACzCA,EAAMI,IACVJ,EAAMI,EAAY,GACdJ,EAAMO,GACT4B,EAAYnC,EAAMO,CAAO,EAG5B,CAEO,SAASqB,GAAY5B,EAIzB,CACGA,EAAMU,IACVV,EAAMU,EAAQkC,EACb5C,EAAMQ,EACNR,EAAME,EAAO2C,EAAOC,CACrB,EAEF,CChQO,IAAMC,GAAN,KAAoC,CAI1C,YAAYC,EAGT,CANH,KAAAC,EAAuB,GACvB,KAAAC,EAAoC,GA+BpC,aAAoB,CAACC,EAAWC,EAAcC,IAAwB,CAErE,GAAI,OAAOF,GAAS,YAAc,OAAOC,GAAW,WAAY,CAC/D,IAAME,EAAcF,EACpBA,EAASD,EAET,IAAMI,EAAO,KACb,OAAO,SAENJ,EAAOG,KACJE,EACF,CACD,OAAOD,EAAK,QAAQJ,EAAOM,GAAmBL,EAAO,KAAK,KAAMK,EAAO,GAAGD,CAAI,CAAC,CAChF,EAGG,OAAOJ,GAAW,YAAYM,EAAI,CAAC,EACnCL,IAAkB,QAAa,OAAOA,GAAkB,YAC3DK,EAAI,CAAC,EAEN,IAAIC,EAGJ,GAAIC,EAAYT,CAAI,EAAG,CACtB,IAAMU,EAAQC,GAAW,IAAI,EACvBC,EAAQC,EAAYb,EAAM,MAAS,EACrCc,EAAW,GACf,GAAI,CACHN,EAASP,EAAOW,CAAK,EACrBE,EAAW,EACZ,QAAE,CAEGA,EAAUC,EAAYL,CAAK,EAC1BM,EAAWN,CAAK,CACtB,CACA,OAAAO,GAAkBP,EAAOR,CAAa,EAC/BgB,GAAcV,EAAQE,CAAK,UACxB,CAACV,GAAQ,OAAOA,GAAS,SAAU,CAK7C,GAJAQ,EAASP,EAAOD,CAAI,EAChBQ,IAAW,SAAWA,EAASR,GAC/BQ,IAAWW,IAASX,EAAS,QAC7B,KAAKV,GAAasB,EAAOZ,EAAQ,EAAI,EACrCN,EAAe,CAClB,IAAMmB,EAAa,CAAC,EACdC,EAAc,CAAC,EACrBC,EAAU,SAAS,EAAEC,EAA4BxB,EAAMQ,EAAQa,EAAGC,CAAE,EACpEpB,EAAcmB,EAAGC,CAAE,EAEpB,OAAOd,OACDD,EAAI,EAAGP,CAAI,CACnB,EAEA,wBAA0C,CAACA,EAAWC,IAAsB,CAE3E,GAAI,OAAOD,GAAS,WACnB,MAAO,CAACyB,KAAepB,IACtB,KAAK,mBAAmBoB,EAAQnB,GAAeN,EAAKM,EAAO,GAAGD,CAAI,CAAC,EAGrE,IAAIqB,EAAkBC,EAKtB,MAAO,CAJQ,KAAK,QAAQ3B,EAAMC,EAAQ,CAACoB,EAAYC,IAAgB,CACtEI,EAAUL,EACVM,EAAiBL,CAClB,CAAC,EACeI,EAAUC,CAAe,CAC1C,EA1FK,OAAO9B,GAAQ,YAAe,WACjC,KAAK,cAAcA,EAAQ,UAAU,EAClC,OAAOA,GAAQ,sBAAyB,WAC3C,KAAK,wBAAwBA,EAAQ,oBAAoB,CAC3D,CAwFA,YAAiCG,EAAmB,CAC9CS,EAAYT,CAAI,GAAGO,EAAI,CAAC,EACzBqB,EAAQ5B,CAAI,IAAGA,EAAO6B,GAAQ7B,CAAI,GACtC,IAAMU,EAAQC,GAAW,IAAI,EACvBC,EAAQC,EAAYb,EAAM,MAAS,EACzC,OAAAY,EAAMkB,CAAW,EAAEC,EAAY,GAC/Bf,EAAWN,CAAK,EACTE,CACR,CAEA,YACCN,EACAJ,EACuC,CACvC,IAAMuB,EAAoBnB,GAAUA,EAAcwB,CAAW,GACzD,CAACL,GAAS,CAACA,EAAMM,IAAWxB,EAAI,CAAC,EACrC,GAAM,CAACyB,EAAQtB,CAAK,EAAIe,EACxB,OAAAR,GAAkBP,EAAOR,CAAa,EAC/BgB,GAAc,OAAWR,CAAK,CACtC,CAOA,cAAcuB,EAAgB,CAC7B,KAAKnC,EAAcmC,CACpB,CAOA,wBAAwBA,EAAmB,CAC1C,KAAKlC,EAAwBkC,CAC9B,CAEA,aAAkCjC,EAAS0B,EAA8B,CAGxE,IAAIQ,EACJ,IAAKA,EAAIR,EAAQ,OAAS,EAAGQ,GAAK,EAAGA,IAAK,CACzC,IAAMC,EAAQT,EAAQQ,CAAC,EACvB,GAAIC,EAAM,KAAK,SAAW,GAAKA,EAAM,KAAO,UAAW,CACtDnC,EAAOmC,EAAM,MACb,OAKED,EAAI,KACPR,EAAUA,EAAQ,MAAMQ,EAAI,CAAC,GAG9B,IAAME,EAAmBb,EAAU,SAAS,EAAEc,EAC9C,OAAIT,EAAQ5B,CAAI,EAERoC,EAAiBpC,EAAM0B,CAAO,EAG/B,KAAK,QAAQ1B,EAAOM,GAC1B8B,EAAiB9B,EAAOoB,CAAO,CAChC,CACD,CACD,EAEO,SAASb,EACfoB,EACAK,EACyB,CAEzB,IAAMhC,EAAiBiC,EAAMN,CAAK,EAC/BV,EAAU,QAAQ,EAAEiB,EAAUP,EAAOK,CAAM,EAC3CG,EAAMR,CAAK,EACXV,EAAU,QAAQ,EAAEmB,EAAUT,EAAOK,CAAM,EAC3CK,GAAiBV,EAAOK,CAAM,EAGjC,OADcA,EAASA,EAAON,EAASY,EAAgB,GACjDC,EAAQ,KAAKvC,CAAK,EACjBA,CACR,CC3MO,SAASwC,GAAQC,EAAiB,CACxC,OAAKC,EAAQD,CAAK,GAAGE,EAAI,GAAIF,CAAK,EAC3BG,GAAYH,CAAK,CACzB,CAEA,SAASG,GAAYH,EAAiB,CACrC,GAAI,CAACI,EAAYJ,CAAK,GAAKK,EAASL,CAAK,EAAG,OAAOA,EACnD,IAAMM,EAAgCN,EAAMO,CAAW,EACnDC,EACJ,GAAIF,EAAO,CACV,GAAI,CAACA,EAAMG,EAAW,OAAOH,EAAMI,EAEnCJ,EAAMK,EAAa,GACnBH,EAAOI,EAAYZ,EAAOM,EAAMO,EAAOC,EAAOC,CAAqB,OAEnEP,EAAOI,EAAYZ,EAAO,EAAI,EAG/B,OAAAgB,EAAKR,EAAM,CAACS,EAAKC,IAAe,CAC/BC,EAAIX,EAAMS,EAAKd,GAAYe,CAAU,CAAC,CACvC,CAAC,EACGZ,IACHA,EAAMK,EAAa,IAEbH,CACR,CCdO,SAASY,IAAgB,CAe/B,IAAMC,EAAU,UACVC,EAAM,MACNC,EAAS,SAEf,SAASC,EACRC,EACAC,EACAC,EACAC,EACO,CACP,OAAQH,EAAMI,EAAO,CACpB,OACA,OACC,OAAOC,EACNL,EACAC,EACAC,EACAC,CACD,EACD,OACC,OAAOG,EAAqBN,EAAOC,EAAUC,EAASC,CAAc,EACrE,OACC,OAAOI,EACLP,EACDC,EACAC,EACAC,CACD,CACF,CACD,CAEA,SAASG,EACRN,EACAC,EACAC,EACAC,EACC,CACD,GAAI,CAACK,IAAOC,GAAS,EAAIT,EACrBU,EAAQV,EAAMU,EAGdA,EAAM,OAASF,EAAM,SAEvB,CAACA,EAAOE,CAAK,EAAI,CAACA,EAAOF,CAAK,EAC9B,CAACN,EAASC,CAAc,EAAI,CAACA,EAAgBD,CAAO,GAItD,QAASS,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IACjC,GAAIF,EAAUE,CAAC,GAAKD,EAAMC,CAAC,IAAMH,EAAMG,CAAC,EAAG,CAC1C,IAAMC,EAAOX,EAAS,OAAO,CAACU,CAAC,CAAC,EAChCT,EAAQ,KAAK,CACZ,GAAIN,EACJ,KAAAgB,EAGA,MAAOC,EAAwBH,EAAMC,CAAC,CAAC,CACxC,CAAC,EACDR,EAAe,KAAK,CACnB,GAAIP,EACJ,KAAAgB,EACA,MAAOC,EAAwBL,EAAMG,CAAC,CAAC,CACxC,CAAC,EAKH,QAASA,EAAIH,EAAM,OAAQG,EAAID,EAAM,OAAQC,IAAK,CACjD,IAAMC,EAAOX,EAAS,OAAO,CAACU,CAAC,CAAC,EAChCT,EAAQ,KAAK,CACZ,GAAIL,EACJ,KAAAe,EAGA,MAAOC,EAAwBH,EAAMC,CAAC,CAAC,CACxC,CAAC,EAEF,QAASA,EAAID,EAAM,OAAS,EAAGF,EAAM,QAAUG,EAAG,EAAEA,EAAG,CACtD,IAAMC,EAAOX,EAAS,OAAO,CAACU,CAAC,CAAC,EAChCR,EAAe,KAAK,CACnB,GAAIL,EACJ,KAAAc,CACD,CAAC,EAEH,CAGA,SAASP,EACRL,EACAC,EACAC,EACAC,EACC,CACD,GAAM,CAACK,IAAOE,GAAK,EAAIV,EACvBc,EAAKd,EAAMS,EAAY,CAACM,EAAKC,IAAkB,CAC9C,IAAMC,EAAYC,EAAIV,EAAOO,CAAG,EAC1BI,EAAQD,EAAIR,EAAQK,CAAG,EACvBK,EAAMJ,EAAyBK,EAAIb,EAAOO,CAAG,EAAInB,EAAUC,EAArCC,EAC5B,GAAImB,IAAcE,GAASC,IAAOxB,EAAS,OAC3C,IAAMgB,EAAOX,EAAS,OAAOc,CAAU,EACvCb,EAAQ,KAAKkB,IAAOtB,EAAS,CAAC,GAAAsB,EAAI,KAAAR,CAAI,EAAI,CAAC,GAAAQ,EAAI,KAAAR,EAAM,MAAAO,CAAK,CAAC,EAC3DhB,EAAe,KACdiB,IAAOvB,EACJ,CAAC,GAAIC,EAAQ,KAAAc,CAAI,EACjBQ,IAAOtB,EACP,CAAC,GAAID,EAAK,KAAAe,EAAM,MAAOC,EAAwBI,CAAS,CAAC,EACzD,CAAC,GAAIrB,EAAS,KAAAgB,EAAM,MAAOC,EAAwBI,CAAS,CAAC,CACjE,CACD,CAAC,CACF,CAEA,SAASV,EACRP,EACAC,EACAC,EACAC,EACC,CACD,GAAI,CAACK,IAAOE,GAAK,EAAIV,EAEjBW,EAAI,EACRH,EAAM,QAASW,GAAe,CAC7B,GAAI,CAACT,EAAO,IAAIS,CAAK,EAAG,CACvB,IAAMP,EAAOX,EAAS,OAAO,CAACU,CAAC,CAAC,EAChCT,EAAQ,KAAK,CACZ,GAAIJ,EACJ,KAAAc,EACA,MAAAO,CACD,CAAC,EACDhB,EAAe,QAAQ,CACtB,GAAIN,EACJ,KAAAe,EACA,MAAAO,CACD,CAAC,EAEFR,GACD,CAAC,EACDA,EAAI,EACJD,EAAO,QAASS,GAAe,CAC9B,GAAI,CAACX,EAAM,IAAIW,CAAK,EAAG,CACtB,IAAMP,EAAOX,EAAS,OAAO,CAACU,CAAC,CAAC,EAChCT,EAAQ,KAAK,CACZ,GAAIL,EACJ,KAAAe,EACA,MAAAO,CACD,CAAC,EACDhB,EAAe,QAAQ,CACtB,GAAIL,EACJ,KAAAc,EACA,MAAAO,CACD,CAAC,EAEFR,GACD,CAAC,CACF,CAEA,SAASW,EACRC,EACAC,EACAtB,EACAC,EACO,CACPD,EAAQ,KAAK,CACZ,GAAIN,EACJ,KAAM,CAAC,EACP,MAAO4B,IAAgBC,EAAU,OAAYD,CAC9C,CAAC,EACDrB,EAAe,KAAK,CACnB,GAAIP,EACJ,KAAM,CAAC,EACP,MAAO2B,CACR,CAAC,CACF,CAEA,SAASG,EAAiBC,EAAUzB,EAA8B,CACjE,OAAAA,EAAQ,QAAQ0B,GAAS,CACxB,GAAM,CAAC,KAAAhB,EAAM,GAAAQ,CAAE,EAAIQ,EAEfC,EAAYF,EAChB,QAAShB,EAAI,EAAGA,EAAIC,EAAK,OAAS,EAAGD,IAAK,CACzC,IAAMmB,EAAaC,EAAYF,CAAI,EAC/BG,EAAIpB,EAAKD,CAAC,EACV,OAAOqB,GAAM,UAAY,OAAOA,GAAM,WACzCA,EAAI,GAAKA,IAKRF,IAAe,GAAmBA,IAAe,KACjDE,IAAM,aAAeA,IAAM,gBAE5BC,EAAI,GAAc,CAAC,EAChB,OAAOJ,GAAS,YAAcG,IAAM,aACvCC,EAAI,GAAc,CAAC,EACpBJ,EAAOX,EAAIW,EAAMG,CAAC,EACd,OAAOH,GAAS,UAAUI,EAAI,GAAc,EAAGrB,EAAK,KAAK,GAAG,CAAC,EAGlE,IAAMsB,EAAOH,EAAYF,CAAI,EACvBV,EAAQgB,EAAoBP,EAAM,KAAK,EACvCb,EAAMH,EAAKA,EAAK,OAAS,CAAC,EAChC,OAAQQ,EAAI,CACX,KAAKxB,EACJ,OAAQsC,EAAM,CACb,OACC,OAAOL,EAAK,IAAId,EAAKI,CAAK,EAE3B,OACCc,EAAI,EAAW,EAChB,QAKC,OAAQJ,EAAKd,CAAG,EAAII,CACtB,CACD,KAAKtB,EACJ,OAAQqC,EAAM,CACb,OACC,OAAOnB,IAAQ,IACZc,EAAK,KAAKV,CAAK,EACfU,EAAK,OAAOd,EAAY,EAAGI,CAAK,EACpC,OACC,OAAOU,EAAK,IAAId,EAAKI,CAAK,EAC3B,OACC,OAAOU,EAAK,IAAIV,CAAK,EACtB,QACC,OAAQU,EAAKd,CAAG,EAAII,CACtB,CACD,KAAKrB,EACJ,OAAQoC,EAAM,CACb,OACC,OAAOL,EAAK,OAAOd,EAAY,CAAC,EACjC,OACC,OAAOc,EAAK,OAAOd,CAAG,EACvB,OACC,OAAOc,EAAK,OAAOD,EAAM,KAAK,EAC/B,QACC,OAAO,OAAOC,EAAKd,CAAG,CACxB,CACD,QACCkB,EAAI,GAAc,EAAGb,CAAE,CACzB,CACD,CAAC,EAEMO,CACR,CAMA,SAASQ,EAAoBC,EAAU,CACtC,GAAI,CAACC,EAAYD,CAAG,EAAG,OAAOA,EAC9B,GAAI,MAAM,QAAQA,CAAG,EAAG,OAAOA,EAAI,IAAID,CAAmB,EAC1D,GAAIG,EAAMF,CAAG,EACZ,OAAO,IAAI,IACV,MAAM,KAAKA,EAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,CAACG,EAAGC,CAAC,IAAM,CAACD,EAAGJ,EAAoBK,CAAC,CAAC,CAAC,CACtE,EACD,GAAIC,EAAML,CAAG,EAAG,OAAO,IAAI,IAAI,MAAM,KAAKA,CAAG,EAAE,IAAID,CAAmB,CAAC,EACvE,IAAMO,EAAS,OAAO,OAAOC,EAAeP,CAAG,CAAC,EAChD,QAAWrB,KAAOqB,EAAKM,EAAO3B,CAAG,EAAIoB,EAAoBC,EAAIrB,CAAG,CAAC,EACjE,OAAIM,EAAIe,EAAKQ,CAAS,IAAGF,EAAOE,CAAS,EAAIR,EAAIQ,CAAS,GACnDF,CACR,CAEA,SAAS7B,EAA2BuB,EAAW,CAC9C,OAAIS,EAAQT,CAAG,EACPD,EAAoBC,CAAG,EACjBA,CACf,CAEAU,EAAW,UAAW,CACrBpB,IACA3B,IACAuB,GACD,CAAC,CACF,CCzSO,SAASyB,IAAe,CAC9B,MAAMC,UAAiB,GAAI,CAG1B,YAAYC,EAAgBC,EAAqB,CAChD,MAAM,EACN,KAAKC,CAAW,EAAI,CACnBC,IACAC,EAASH,EACTI,EAAQJ,EAASA,EAAOI,EAASC,EAAgB,EACjDC,EAAW,GACXC,EAAY,GACZC,EAAO,OACPC,EAAW,OACXC,EAAOX,EACPY,EAAQ,KACRC,EAAW,GACXC,EAAU,EACX,CACD,CAEA,IAAI,MAAe,CAClB,OAAOC,EAAO,KAAKb,CAAW,CAAC,EAAE,IAClC,CAEA,IAAIc,EAAmB,CACtB,OAAOD,EAAO,KAAKb,CAAW,CAAC,EAAE,IAAIc,CAAG,CACzC,CAEA,IAAIA,EAAUC,EAAY,CACzB,IAAMC,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,GACjB,CAACH,EAAOG,CAAK,EAAE,IAAIF,CAAG,GAAKD,EAAOG,CAAK,EAAE,IAAIF,CAAG,IAAMC,KACzDG,EAAeF,CAAK,EACpBG,EAAYH,CAAK,EACjBA,EAAMR,EAAW,IAAIM,EAAK,EAAI,EAC9BE,EAAMT,EAAO,IAAIO,EAAKC,CAAK,EAC3BC,EAAMR,EAAW,IAAIM,EAAK,EAAI,GAExB,IACR,CAEA,OAAOA,EAAmB,CACzB,GAAI,CAAC,KAAK,IAAIA,CAAG,EAChB,MAAO,GAGR,IAAME,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,EACrBE,EAAeF,CAAK,EACpBG,EAAYH,CAAK,EACbA,EAAMP,EAAM,IAAIK,CAAG,EACtBE,EAAMR,EAAW,IAAIM,EAAK,EAAK,EAE/BE,EAAMR,EAAW,OAAOM,CAAG,EAE5BE,EAAMT,EAAO,OAAOO,CAAG,EAChB,EACR,CAEA,OAAQ,CACP,IAAME,EAAkB,KAAKhB,CAAW,EACxCiB,EAAgBD,CAAK,EACjBH,EAAOG,CAAK,EAAE,OACjBE,EAAeF,CAAK,EACpBG,EAAYH,CAAK,EACjBA,EAAMR,EAAY,IAAI,IACtBY,EAAKJ,EAAMP,EAAOK,GAAO,CACxBE,EAAMR,EAAW,IAAIM,EAAK,EAAK,CAChC,CAAC,EACDE,EAAMT,EAAO,MAAM,EAErB,CAEA,QAAQc,EAA+CC,EAAe,CACrE,IAAMN,EAAkB,KAAKhB,CAAW,EACxCa,EAAOG,CAAK,EAAE,QAAQ,CAACO,EAAaT,EAAUU,IAAc,CAC3DH,EAAG,KAAKC,EAAS,KAAK,IAAIR,CAAG,EAAGA,EAAK,IAAI,CAC1C,CAAC,CACF,CAEA,IAAIA,EAAe,CAClB,IAAME,EAAkB,KAAKhB,CAAW,EACxCiB,EAAgBD,CAAK,EACrB,IAAMD,EAAQF,EAAOG,CAAK,EAAE,IAAIF,CAAG,EAInC,GAHIE,EAAMV,GAAc,CAACmB,EAAYV,CAAK,GAGtCA,IAAUC,EAAMP,EAAM,IAAIK,CAAG,EAChC,OAAOC,EAGR,IAAMW,EAAQC,EAAYZ,EAAOC,CAAK,EACtC,OAAAE,EAAeF,CAAK,EACpBA,EAAMT,EAAO,IAAIO,EAAKY,CAAK,EACpBA,CACR,CAEA,MAA8B,CAC7B,OAAOb,EAAO,KAAKb,CAAW,CAAC,EAAE,KAAK,CACvC,CAEA,QAAgC,CAC/B,IAAM4B,EAAW,KAAK,KAAK,EAC3B,MAAO,CACN,CAAC,OAAO,QAAQ,EAAG,IAAM,KAAK,OAAO,EACrC,KAAM,IAAM,CACX,IAAMC,EAAID,EAAS,KAAK,EAExB,OAAIC,EAAE,KAAaA,EAEZ,CACN,KAAM,GACN,MAHa,KAAK,IAAIA,EAAE,KAAK,CAI9B,CACD,CACD,CACD,CAEA,SAAwC,CACvC,IAAMD,EAAW,KAAK,KAAK,EAC3B,MAAO,CACN,CAAC,OAAO,QAAQ,EAAG,IAAM,KAAK,QAAQ,EACtC,KAAM,IAAM,CACX,IAAMC,EAAID,EAAS,KAAK,EAExB,GAAIC,EAAE,KAAM,OAAOA,EACnB,IAAMd,EAAQ,KAAK,IAAIc,EAAE,KAAK,EAC9B,MAAO,CACN,KAAM,GACN,MAAO,CAACA,EAAE,MAAOd,CAAK,CACvB,CACD,CACD,CACD,CAEA,EAtICf,EAsIA,OAAO,SAAQ,GAAI,CACnB,OAAO,KAAK,QAAQ,CACrB,CACD,CAEA,SAAS8B,EAA4BhC,EAAWC,EAAwB,CAEvE,OAAO,IAAIF,EAASC,EAAQC,CAAM,CACnC,CAEA,SAASmB,EAAeF,EAAiB,CACnCA,EAAMT,IACVS,EAAMR,EAAY,IAAI,IACtBQ,EAAMT,EAAQ,IAAI,IAAIS,EAAMP,CAAK,EAEnC,CAEA,MAAMsB,UAAiB,GAAI,CAE1B,YAAYjC,EAAgBC,EAAqB,CAChD,MAAM,EACN,KAAKC,CAAW,EAAI,CACnBC,IACAC,EAASH,EACTI,EAAQJ,EAASA,EAAOI,EAASC,EAAgB,EACjDC,EAAW,GACXC,EAAY,GACZC,EAAO,OACPE,EAAOX,EACPY,EAAQ,KACRsB,EAAS,IAAI,IACbpB,EAAU,GACVD,EAAW,EACZ,CACD,CAEA,IAAI,MAAe,CAClB,OAAOE,EAAO,KAAKb,CAAW,CAAC,EAAE,IAClC,CAEA,IAAIe,EAAqB,CACxB,IAAMC,EAAkB,KAAKhB,CAAW,EAGxC,OAFAiB,EAAgBD,CAAK,EAEhBA,EAAMT,EAGP,GAAAS,EAAMT,EAAM,IAAIQ,CAAK,GACrBC,EAAMgB,EAAQ,IAAIjB,CAAK,GAAKC,EAAMT,EAAM,IAAIS,EAAMgB,EAAQ,IAAIjB,CAAK,CAAC,GAHhEC,EAAMP,EAAM,IAAIM,CAAK,CAM9B,CAEA,IAAIA,EAAiB,CACpB,IAAMC,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,EAChB,KAAK,IAAID,CAAK,IAClBkB,EAAejB,CAAK,EACpBG,EAAYH,CAAK,EACjBA,EAAMT,EAAO,IAAIQ,CAAK,GAEhB,IACR,CAEA,OAAOA,EAAiB,CACvB,GAAI,CAAC,KAAK,IAAIA,CAAK,EAClB,MAAO,GAGR,IAAMC,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,EACrBiB,EAAejB,CAAK,EACpBG,EAAYH,CAAK,EAEhBA,EAAMT,EAAO,OAAOQ,CAAK,IACxBC,EAAMgB,EAAQ,IAAIjB,CAAK,EACrBC,EAAMT,EAAO,OAAOS,EAAMgB,EAAQ,IAAIjB,CAAK,CAAC,EACjB,GAEhC,CAEA,OAAQ,CACP,IAAMC,EAAkB,KAAKhB,CAAW,EACxCiB,EAAgBD,CAAK,EACjBH,EAAOG,CAAK,EAAE,OACjBiB,EAAejB,CAAK,EACpBG,EAAYH,CAAK,EACjBA,EAAMT,EAAO,MAAM,EAErB,CAEA,QAAgC,CAC/B,IAAMS,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,EACrBiB,EAAejB,CAAK,EACbA,EAAMT,EAAO,OAAO,CAC5B,CAEA,SAAwC,CACvC,IAAMS,EAAkB,KAAKhB,CAAW,EACxC,OAAAiB,EAAgBD,CAAK,EACrBiB,EAAejB,CAAK,EACbA,EAAMT,EAAO,QAAQ,CAC7B,CAEA,MAA8B,CAC7B,OAAO,KAAK,OAAO,CACpB,CAEA,EA3FCP,EA2FA,OAAO,SAAQ,GAAI,CACnB,OAAO,KAAK,OAAO,CACpB,CAEA,QAAQqB,EAASC,EAAe,CAC/B,IAAMM,EAAW,KAAK,OAAO,EACzBM,EAASN,EAAS,KAAK,EAC3B,KAAO,CAACM,EAAO,MACdb,EAAG,KAAKC,EAASY,EAAO,MAAOA,EAAO,MAAO,IAAI,EACjDA,EAASN,EAAS,KAAK,CAEzB,CACD,CACA,SAASO,EAA4BrC,EAAWC,EAAwB,CAEvE,OAAO,IAAIgC,EAASjC,EAAQC,CAAM,CACnC,CAEA,SAASkC,EAAejB,EAAiB,CACnCA,EAAMT,IAEVS,EAAMT,EAAQ,IAAI,IAClBS,EAAMP,EAAM,QAAQM,GAAS,CAC5B,GAAIU,EAAYV,CAAK,EAAG,CACvB,IAAMW,EAAQC,EAAYZ,EAAOC,CAAK,EACtCA,EAAMgB,EAAQ,IAAIjB,EAAOW,CAAK,EAC9BV,EAAMT,EAAO,IAAImB,CAAK,OAEtBV,EAAMT,EAAO,IAAIQ,CAAK,CAExB,CAAC,EAEH,CAEA,SAASE,EAAgBD,EAA+C,CACnEA,EAAMJ,GAAUwB,EAAI,EAAG,KAAK,UAAUvB,EAAOG,CAAK,CAAC,CAAC,CACzD,CAEAqB,EAAW,SAAU,CAACP,IAAWK,GAAS,CAAC,CAC5C,CCrRA,IAAMG,EAAQ,IAAIC,GAqBLC,GAAoBF,EAAM,QAM1BG,GAA0CH,EAAM,mBAAmB,KAC/EA,CACD,EAOaI,GAAgBJ,EAAM,cAAc,KAAKA,CAAK,EAO9CK,GAA0BL,EAAM,wBAAwB,KAAKA,CAAK,EAOlEM,GAAeN,EAAM,aAAa,KAAKA,CAAK,EAM5CO,GAAcP,EAAM,YAAY,KAAKA,CAAK,EAU1CQ,GAAcR,EAAM,YAAY,KAAKA,CAAK,EAQhD,SAASS,GAAaC,EAAoB,CAChD,OAAOA,CACR,CAOO,SAASC,GAAiBD,EAAwB,CACxD,OAAOA,CACR","names":["NOTHING","DRAFTABLE","DRAFT_STATE","die","error","args","getPrototypeOf","isDraft","value","DRAFT_STATE","isDraftable","isPlainObject","DRAFTABLE","isMap","isSet","objectCtorString","proto","Ctor","original","die","base_","each","obj","iter","getArchtype","key","entry","index","thing","state","type_","has","prop","get","set","propOrOldValue","t","is","x","y","target","latest","copy_","shallowCopy","base","strict","isPlain","descriptors","keys","i","desc","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","plugin","die","loadPlugin","implementation","currentScope","getCurrentScope","createScope","parent_","immer_","drafts_","canAutoFreeze_","unfinalizedDrafts_","usePatchesInScope","scope","patchListener","getPlugin","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","revokeDraft","enterScope","immer","draft","state","DRAFT_STATE","type_","revoke_","revoked_","processResult","result","scope","unfinalizedDrafts_","drafts_","baseDraft","DRAFT_STATE","modified_","revokeScope","die","isDraftable","finalize","parent_","maybeFreeze","patches_","getPlugin","generateReplacementPatches_","base_","inversePatches_","patchListener_","NOTHING","rootScope","value","path","isFrozen","state","each","key","childValue","finalizeProperty","scope_","finalized_","copy_","resultEach","isSet","type_","generatePatches_","parentState","targetObject","prop","rootPath","targetIsSet","isDraft","has","assigned_","res","set","canAutoFreeze_","immer_","autoFreeze_","deep","freeze","createProxyProxy","base","parent","isArray","state","type_","scope_","getCurrentScope","modified_","finalized_","assigned_","parent_","base_","draft_","copy_","revoke_","isManual_","target","traps","objectTraps","arrayTraps","revoke","proxy","prop","DRAFT_STATE","source","latest","has","readPropFromProto","value","isDraftable","peek","prepareCopy","createProxy","desc","getDescriptorFromProto","current","currentState","is","markChanged","owner","die","getPrototypeOf","each","key","fn","draft","proto","shallowCopy","immer_","useStrictShallowCopy_","Immer","config","autoFreeze_","useStrictShallowCopy_","base","recipe","patchListener","defaultBase","self","args","draft","die","result","isDraftable","scope","enterScope","proxy","createProxy","hasError","revokeScope","leaveScope","usePatchesInScope","processResult","NOTHING","freeze","p","ip","getPlugin","generateReplacementPatches_","state","patches","inversePatches","isDraft","current","DRAFT_STATE","isManual_","scope_","value","i","patch","applyPatchesImpl","applyPatches_","parent","isMap","proxyMap_","isSet","proxySet_","createProxyProxy","getCurrentScope","drafts_","current","value","isDraft","die","currentImpl","isDraftable","isFrozen","state","DRAFT_STATE","copy","modified_","base_","finalized_","shallowCopy","scope_","immer_","useStrictShallowCopy_","each","key","childValue","set","enablePatches","REPLACE","ADD","REMOVE","generatePatches_","state","basePath","patches","inversePatches","type_","generatePatchesFromAssigned","generateArrayPatches","generateSetPatches","base_","assigned_","copy_","i","path","clonePatchValueIfNeeded","each","key","assignedValue","origValue","get","value","op","has","generateReplacementPatches_","baseValue","replacement","NOTHING","applyPatches_","draft","patch","base","parentType","getArchtype","p","die","type","deepClonePatchValue","obj","isDraftable","isMap","k","v","isSet","cloned","getPrototypeOf","DRAFTABLE","isDraft","loadPlugin","enableMapSet","DraftMap","target","parent","DRAFT_STATE","type_","parent_","scope_","getCurrentScope","modified_","finalized_","copy_","assigned_","base_","draft_","isManual_","revoked_","latest","key","value","state","assertUnrevoked","prepareMapCopy","markChanged","each","cb","thisArg","_value","_map","isDraftable","draft","createProxy","iterator","r","proxyMap_","DraftSet","drafts_","prepareSetCopy","result","proxySet_","die","loadPlugin","immer","Immer","produce","produceWithPatches","setAutoFreeze","setUseStrictShallowCopy","applyPatches","createDraft","finishDraft","castDraft","value","castImmutable"]} \ No newline at end of file diff --git a/node_modules/immer/package.json b/node_modules/immer/package.json deleted file mode 100644 index 40823a8a..00000000 --- a/node_modules/immer/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "immer", - "version": "10.1.1", - "description": "Create your next immutable state by mutating the current one", - "main": "./dist/cjs/index.js", - "module": "./dist/immer.legacy-esm.js", - "exports": { - "./package.json": "./package.json", - ".": { - "types": "./dist/immer.d.ts", - "import": "./dist/immer.mjs", - "require": "./dist/cjs/index.js" - } - }, - "jsnext:main": "dist/immer.mjs", - "react-native": "./dist/immer.legacy-esm.js", - "source": "src/immer.ts", - "types": "./dist/immer.d.ts", - "sideEffects": false, - "scripts": { - "pretest": "yarn build", - "test": "jest && yarn test:build && yarn test:flow", - "test:perf": "cd __performance_tests__ && node add-data.mjs && node todo.mjs && node incremental.mjs && node large-obj.mjs", - "test:flow": "yarn flow check __tests__/flow", - "test:build": "NODE_ENV='production' yarn jest --config jest.config.build.js", - "watch": "jest --watch", - "coverage": "jest --coverage", - "coveralls": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf ./coverage", - "build": "tsup", - "publish-docs": "cd website && GIT_USER=mweststrate USE_SSH=true yarn docusaurus deploy", - "start": "cd website && yarn start", - "test:size": "yarn build && yarn import-size --report . produce enableMapSet enablePatches", - "test:sizequick": "yarn build && yarn import-size . produce" - }, - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged" - } - }, - "repository": { - "type": "git", - "url": "https://github.com/immerjs/immer.git" - }, - "keywords": [ - "immutable", - "mutable", - "copy-on-write" - ], - "author": "Michel Weststrate ", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - }, - "bugs": { - "url": "https://github.com/immerjs/immer/issues" - }, - "homepage": "https://github.com/immerjs/immer#readme", - "files": [ - "dist", - "compat", - "src" - ], - "devDependencies": { - "@babel/core": "^7.21.3", - "@types/jest": "^25.1.2", - "coveralls": "^3.0.0", - "cpx2": "^3.0.0", - "deep-freeze": "^0.0.1", - "flow-bin": "^0.123.0", - "husky": "^1.2.0", - "immutable": "^3.8.2", - "import-size": "^1.0.2", - "jest": "^29.5.0", - "lodash": "^4.17.4", - "lodash.clonedeep": "^4.5.0", - "prettier": "1.19.1", - "pretty-quick": "^1.8.0", - "redux": "^4.0.5", - "rimraf": "^2.6.2", - "seamless-immutable": "^7.1.3", - "semantic-release": "^17.0.2", - "ts-jest": "^29.0.0", - "tsup": "^6.7.0", - "typescript": "^5.0.2" - } -} diff --git a/node_modules/immer/readme.md b/node_modules/immer/readme.md deleted file mode 100644 index 41ca194f..00000000 --- a/node_modules/immer/readme.md +++ /dev/null @@ -1,33 +0,0 @@ - - -# Immer - -[![npm](https://img.shields.io/npm/v/immer.svg)](https://www.npmjs.com/package/immer) [![Build Status](https://github.com/immerjs/immer/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/immerjs/immer/actions?query=branch%3Amain) [![Coverage Status](https://coveralls.io/repos/github/immerjs/immer/badge.svg?branch=main)](https://coveralls.io/github/immerjs/immer?branch=main) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![OpenCollective](https://opencollective.com/immer/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/immer/sponsors/badge.svg)](#sponsors) [![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/immerjs/immer) - -_Create the next immutable state tree by simply modifying the current tree_ - -Winner of the "Breakthrough of the year" [React open source award](https://osawards.com/react/) and "Most impactful contribution" [JavaScript open source award](https://osawards.com/javascript/) in 2019 - -## Contribute using one-click online setup - -You can use Gitpod (a free online VS Code like IDE) for contributing online. With a single click it will launch a workspace and automatically: - -- clone the immer repo. -- install the dependencies. -- run `yarn run start`. - -so that you can start coding straight away. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) - -## Documentation - -The documentation of this package is hosted at https://immerjs.github.io/immer/ - -## Support - -Did Immer make a difference to your project? Join the open collective at https://opencollective.com/immer! - -## Release notes - -https://github.com/immerjs/immer/releases diff --git a/node_modules/immer/src/core/current.ts b/node_modules/immer/src/core/current.ts deleted file mode 100644 index 6346e14f..00000000 --- a/node_modules/immer/src/core/current.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - die, - isDraft, - shallowCopy, - each, - DRAFT_STATE, - set, - ImmerState, - isDraftable, - isFrozen -} from "../internal" - -/** 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. */ -export function current(value: T): T -export function current(value: any): any { - if (!isDraft(value)) die(10, value) - return currentImpl(value) -} - -function currentImpl(value: any): any { - if (!isDraftable(value) || isFrozen(value)) return value - const state: ImmerState | undefined = value[DRAFT_STATE] - let copy: any - if (state) { - if (!state.modified_) return state.base_ - // Optimization: avoid generating new drafts during copying - state.finalized_ = true - copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_) - } else { - copy = shallowCopy(value, true) - } - // recurse - each(copy, (key, childValue) => { - set(copy, key, currentImpl(childValue)) - }) - if (state) { - state.finalized_ = false - } - return copy -} diff --git a/node_modules/immer/src/core/finalize.ts b/node_modules/immer/src/core/finalize.ts deleted file mode 100644 index 6ee69ce6..00000000 --- a/node_modules/immer/src/core/finalize.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { - ImmerScope, - DRAFT_STATE, - isDraftable, - NOTHING, - PatchPath, - each, - has, - freeze, - ImmerState, - isDraft, - SetState, - set, - ArchType, - getPlugin, - die, - revokeScope, - isFrozen -} from "../internal" - -export function processResult(result: any, scope: ImmerScope) { - scope.unfinalizedDrafts_ = scope.drafts_.length - const baseDraft = scope.drafts_![0] - const isReplaced = result !== undefined && result !== baseDraft - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope) - die(4) - } - if (isDraftable(result)) { - // Finalize the result in case it contains (or is) a subset of the draft. - result = finalize(scope, result) - if (!scope.parent_) maybeFreeze(scope, result) - } - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_( - baseDraft[DRAFT_STATE].base_, - result, - scope.patches_, - scope.inversePatches_! - ) - } - } else { - // Finalize the base draft. - result = finalize(scope, baseDraft, []) - } - revokeScope(scope) - if (scope.patches_) { - scope.patchListener_!(scope.patches_, scope.inversePatches_!) - } - return result !== NOTHING ? result : undefined -} - -function finalize(rootScope: ImmerScope, value: any, path?: PatchPath) { - // Don't recurse in tho recursive data structures - if (isFrozen(value)) return value - - const state: ImmerState = value[DRAFT_STATE] - // A plain object, might need freezing, might contain drafts - if (!state) { - each(value, (key, childValue) => - finalizeProperty(rootScope, state, value, key, childValue, path) - ) - return value - } - // Never finalize drafts owned by another scope. - if (state.scope_ !== rootScope) return value - // Unmodified draft, return the (frozen) original - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true) - return state.base_ - } - // Not finalized yet, let's do that now - if (!state.finalized_) { - state.finalized_ = true - state.scope_.unfinalizedDrafts_-- - const result = state.copy_ - // Finalize all children of the copy - // For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628 - // To preserve insertion order in all cases we then clear the set - // And we let finalizeProperty know it needs to re-add non-draft children back to the target - let resultEach = result - let isSet = false - if (state.type_ === ArchType.Set) { - resultEach = new Set(result) - result.clear() - isSet = true - } - each(resultEach, (key, childValue) => - finalizeProperty(rootScope, state, result, key, childValue, path, isSet) - ) - // everything inside is frozen, we can freeze here - maybeFreeze(rootScope, result, false) - // first time finalizing, let's create those patches - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_( - state, - path, - rootScope.patches_, - rootScope.inversePatches_! - ) - } - } - return state.copy_ -} - -function finalizeProperty( - rootScope: ImmerScope, - parentState: undefined | ImmerState, - targetObject: any, - prop: string | number, - childValue: any, - rootPath?: PatchPath, - targetIsSet?: boolean -) { - if (process.env.NODE_ENV !== "production" && childValue === targetObject) - die(5) - if (isDraft(childValue)) { - const path = - rootPath && - parentState && - parentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys. - !has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys. - ? rootPath!.concat(prop) - : undefined - // Drafts owned by `scope` are finalized here. - const res = finalize(rootScope, childValue, path) - set(targetObject, prop, res) - // Drafts from another scope must prevented to be frozen - // if we got a draft back from finalize, we're in a nested produce and shouldn't freeze - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false - } else return - } else if (targetIsSet) { - targetObject.add(childValue) - } - // Search new objects for unfinalized drafts. Frozen objects should never contain drafts. - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - // optimization: if an object is not a draft, and we don't have to - // deepfreeze everything, and we are sure that no drafts are left in the remaining object - // cause we saw and finalized all drafts already; we can stop visiting the rest of the tree. - // This benefits especially adding large data tree's without further processing. - // See add-data.js perf test - return - } - finalize(rootScope, childValue) - // Immer deep freezes plain objects, so if there is no parent state, we freeze as well - // Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere - // with other frameworks. - if ( - (!parentState || !parentState.scope_.parent_) && - typeof prop !== "symbol" && - Object.prototype.propertyIsEnumerable.call(targetObject, prop) - ) - maybeFreeze(rootScope, childValue) - } -} - -function maybeFreeze(scope: ImmerScope, value: any, deep = false) { - // we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects - if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep) - } -} diff --git a/node_modules/immer/src/core/immerClass.ts b/node_modules/immer/src/core/immerClass.ts deleted file mode 100644 index f827361c..00000000 --- a/node_modules/immer/src/core/immerClass.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { - IProduceWithPatches, - IProduce, - ImmerState, - Drafted, - isDraftable, - processResult, - Patch, - Objectish, - DRAFT_STATE, - Draft, - PatchListener, - isDraft, - isMap, - isSet, - createProxyProxy, - getPlugin, - die, - enterScope, - revokeScope, - leaveScope, - usePatchesInScope, - getCurrentScope, - NOTHING, - freeze, - current -} from "../internal" - -interface ProducersFns { - produce: IProduce - produceWithPatches: IProduceWithPatches -} - -export type StrictMode = boolean | "class_only"; - -export class Immer implements ProducersFns { - autoFreeze_: boolean = true - useStrictShallowCopy_: StrictMode = false - - constructor(config?: { - autoFreeze?: boolean - useStrictShallowCopy?: StrictMode - }) { - if (typeof config?.autoFreeze === "boolean") - this.setAutoFreeze(config!.autoFreeze) - if (typeof config?.useStrictShallowCopy === "boolean") - this.setUseStrictShallowCopy(config!.useStrictShallowCopy) - } - - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - produce: IProduce = (base: any, recipe?: any, patchListener?: any) => { - // curried invocation - if (typeof base === "function" && typeof recipe !== "function") { - const defaultBase = recipe - recipe = base - - const self = this - return function curriedProduce( - this: any, - base = defaultBase, - ...args: any[] - ) { - return self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore - } - } - - if (typeof recipe !== "function") die(6) - if (patchListener !== undefined && typeof patchListener !== "function") - die(7) - - let result - - // Only plain objects, arrays, and "immerable classes" are drafted. - if (isDraftable(base)) { - const scope = enterScope(this) - const proxy = createProxy(base, undefined) - let hasError = true - try { - result = recipe(proxy) - hasError = false - } finally { - // finally instead of catch + rethrow better preserves original stack - if (hasError) revokeScope(scope) - else leaveScope(scope) - } - usePatchesInScope(scope, patchListener) - return processResult(result, scope) - } else if (!base || typeof base !== "object") { - result = recipe(base) - if (result === undefined) result = base - if (result === NOTHING) result = undefined - if (this.autoFreeze_) freeze(result, true) - if (patchListener) { - const p: Patch[] = [] - const ip: Patch[] = [] - getPlugin("Patches").generateReplacementPatches_(base, result, p, ip) - patchListener(p, ip) - } - return result - } else die(1, base) - } - - produceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => { - // curried invocation - if (typeof base === "function") { - return (state: any, ...args: any[]) => - this.produceWithPatches(state, (draft: any) => base(draft, ...args)) - } - - let patches: Patch[], inversePatches: Patch[] - const result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => { - patches = p - inversePatches = ip - }) - return [result, patches!, inversePatches!] - } - - createDraft(base: T): Draft { - if (!isDraftable(base)) die(8) - if (isDraft(base)) base = current(base) - const scope = enterScope(this) - const proxy = createProxy(base, undefined) - proxy[DRAFT_STATE].isManual_ = true - leaveScope(scope) - return proxy as any - } - - finishDraft>( - draft: D, - patchListener?: PatchListener - ): D extends Draft ? T : never { - const state: ImmerState = draft && (draft as any)[DRAFT_STATE] - if (!state || !state.isManual_) die(9) - const {scope_: scope} = state - usePatchesInScope(scope, patchListener) - return processResult(undefined, scope) - } - - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - setAutoFreeze(value: boolean) { - this.autoFreeze_ = value - } - - /** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ - setUseStrictShallowCopy(value: StrictMode) { - this.useStrictShallowCopy_ = value - } - - applyPatches(base: T, patches: readonly Patch[]): T { - // If a patch replaces the entire state, take that replacement as base - // before applying patches - let i: number - for (i = patches.length - 1; i >= 0; i--) { - const patch = patches[i] - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value - break - } - } - // If there was a patch that replaced the entire state, start from the - // patch after that. - if (i > -1) { - patches = patches.slice(i + 1) - } - - const applyPatchesImpl = getPlugin("Patches").applyPatches_ - if (isDraft(base)) { - // N.B: never hits if some patch a replacement, patches are never drafts - return applyPatchesImpl(base, patches) - } - // Otherwise, produce a copy of the base state. - return this.produce(base, (draft: Drafted) => - applyPatchesImpl(draft, patches) - ) - } -} - -export function createProxy( - value: T, - parent?: ImmerState -): Drafted { - // precondition: createProxy should be guarded by isDraftable, so we know we can safely draft - const draft: Drafted = isMap(value) - ? getPlugin("MapSet").proxyMap_(value, parent) - : isSet(value) - ? getPlugin("MapSet").proxySet_(value, parent) - : createProxyProxy(value, parent) - - const scope = parent ? parent.scope_ : getCurrentScope() - scope.drafts_.push(draft) - return draft -} diff --git a/node_modules/immer/src/core/proxy.ts b/node_modules/immer/src/core/proxy.ts deleted file mode 100644 index 3ce06aa8..00000000 --- a/node_modules/immer/src/core/proxy.ts +++ /dev/null @@ -1,292 +0,0 @@ -import { - each, - has, - is, - isDraftable, - shallowCopy, - latest, - ImmerBaseState, - ImmerState, - Drafted, - AnyObject, - AnyArray, - Objectish, - getCurrentScope, - getPrototypeOf, - DRAFT_STATE, - die, - createProxy, - ArchType, - ImmerScope -} from "../internal" - -interface ProxyBaseState extends ImmerBaseState { - assigned_: { - [property: string]: boolean - } - parent_?: ImmerState - revoke_(): void -} - -export interface ProxyObjectState extends ProxyBaseState { - type_: ArchType.Object - base_: any - copy_: any - draft_: Drafted -} - -export interface ProxyArrayState extends ProxyBaseState { - type_: ArchType.Array - base_: AnyArray - copy_: AnyArray | null - draft_: Drafted -} - -type ProxyState = ProxyObjectState | ProxyArrayState - -/** - * Returns a new draft of the `base` object. - * - * The second argument is the parent draft-state (used internally). - */ -export function createProxyProxy( - base: T, - parent?: ImmerState -): Drafted { - const isArray = Array.isArray(base) - const state: ProxyState = { - type_: isArray ? ArchType.Array : (ArchType.Object as any), - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope()!, - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null as any, // set below - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null as any, - isManual_: false - } - - // the traps must target something, a bit like the 'real' base. - // but also, we need to be able to determine from the target what the relevant state is - // (to avoid creating traps per instance to capture the state in closure, - // and to avoid creating weird hidden properties as well) - // So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything) - // Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb - let target: T = state as any - let traps: ProxyHandler> = objectTraps - if (isArray) { - target = [state] as any - traps = arrayTraps - } - - const {revoke, proxy} = Proxy.revocable(target, traps) - state.draft_ = proxy as any - state.revoke_ = revoke - return proxy as any -} - -/** - * Object drafts - */ -export const objectTraps: ProxyHandler = { - get(state, prop) { - if (prop === DRAFT_STATE) return state - - const source = latest(state) - if (!has(source, prop)) { - // non-existing or non-own property... - return readPropFromProto(state, source, prop) - } - const value = source[prop] - if (state.finalized_ || !isDraftable(value)) { - return value - } - // Check for existing draft in modified state. - // Assigned values are never drafted. This catches any drafts we created, too. - if (value === peek(state.base_, prop)) { - prepareCopy(state) - return (state.copy_![prop as any] = createProxy(value, state)) - } - return value - }, - has(state, prop) { - return prop in latest(state) - }, - ownKeys(state) { - return Reflect.ownKeys(latest(state)) - }, - set( - state: ProxyObjectState, - prop: string /* strictly not, but helps TS */, - value - ) { - const desc = getDescriptorFromProto(latest(state), prop) - if (desc?.set) { - // special case: if this write is captured by a setter, we have - // to trigger it with the correct context - desc.set.call(state.draft_, value) - return true - } - if (!state.modified_) { - // the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change) - // from setting an existing property with value undefined to undefined (which is not a change) - const current = peek(latest(state), prop) - // special case, if we assigning the original value to a draft, we can ignore the assignment - const currentState: ProxyObjectState = current?.[DRAFT_STATE] - if (currentState && currentState.base_ === value) { - state.copy_![prop] = value - state.assigned_[prop] = false - return true - } - if (is(value, current) && (value !== undefined || has(state.base_, prop))) - return true - prepareCopy(state) - markChanged(state) - } - - if ( - (state.copy_![prop] === value && - // special case: handle new props with value 'undefined' - (value !== undefined || prop in state.copy_)) || - // special case: NaN - (Number.isNaN(value) && Number.isNaN(state.copy_![prop])) - ) - return true - - // @ts-ignore - state.copy_![prop] = value - state.assigned_[prop] = true - return true - }, - deleteProperty(state, prop: string) { - // The `undefined` check is a fast path for pre-existing keys. - if (peek(state.base_, prop) !== undefined || prop in state.base_) { - state.assigned_[prop] = false - prepareCopy(state) - markChanged(state) - } else { - // if an originally not assigned property was deleted - delete state.assigned_[prop] - } - if (state.copy_) { - delete state.copy_[prop] - } - return true - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor(state, prop) { - const owner = latest(state) - const desc = Reflect.getOwnPropertyDescriptor(owner, prop) - if (!desc) return desc - return { - writable: true, - configurable: state.type_ !== ArchType.Array || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - } - }, - defineProperty() { - die(11) - }, - getPrototypeOf(state) { - return getPrototypeOf(state.base_) - }, - setPrototypeOf() { - die(12) - } -} - -/** - * Array drafts - */ - -const arrayTraps: ProxyHandler<[ProxyArrayState]> = {} -each(objectTraps, (key, fn) => { - // @ts-ignore - arrayTraps[key] = function() { - arguments[0] = arguments[0][0] - return fn.apply(this, arguments) - } -}) -arrayTraps.deleteProperty = function(state, prop) { - if (process.env.NODE_ENV !== "production" && isNaN(parseInt(prop as any))) - die(13) - // @ts-ignore - return arrayTraps.set!.call(this, state, prop, undefined) -} -arrayTraps.set = function(state, prop, value) { - if ( - process.env.NODE_ENV !== "production" && - prop !== "length" && - isNaN(parseInt(prop as any)) - ) - die(14) - return objectTraps.set!.call(this, state[0], prop, value, state[0]) -} - -// Access a property without creating an Immer draft. -function peek(draft: Drafted, prop: PropertyKey) { - const state = draft[DRAFT_STATE] - const source = state ? latest(state) : draft - return source[prop] -} - -function readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) { - const desc = getDescriptorFromProto(source, prop) - return desc - ? `value` in desc - ? desc.value - : // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - desc.get?.call(state.draft_) - : undefined -} - -function getDescriptorFromProto( - source: any, - prop: PropertyKey -): PropertyDescriptor | undefined { - // 'in' checks proto! - if (!(prop in source)) return undefined - let proto = getPrototypeOf(source) - while (proto) { - const desc = Object.getOwnPropertyDescriptor(proto, prop) - if (desc) return desc - proto = getPrototypeOf(proto) - } - return undefined -} - -export function markChanged(state: ImmerState) { - if (!state.modified_) { - state.modified_ = true - if (state.parent_) { - markChanged(state.parent_) - } - } -} - -export function prepareCopy(state: { - base_: any - copy_: any - scope_: ImmerScope -}) { - if (!state.copy_) { - state.copy_ = shallowCopy( - state.base_, - state.scope_.immer_.useStrictShallowCopy_ - ) - } -} diff --git a/node_modules/immer/src/core/scope.ts b/node_modules/immer/src/core/scope.ts deleted file mode 100644 index 65eb5eed..00000000 --- a/node_modules/immer/src/core/scope.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { - Patch, - PatchListener, - Drafted, - Immer, - DRAFT_STATE, - ImmerState, - ArchType, - getPlugin -} from "../internal" - -/** Each scope represents a `produce` call. */ - -export interface ImmerScope { - patches_?: Patch[] - inversePatches_?: Patch[] - canAutoFreeze_: boolean - drafts_: any[] - parent_?: ImmerScope - patchListener_?: PatchListener - immer_: Immer - unfinalizedDrafts_: number -} - -let currentScope: ImmerScope | undefined - -export function getCurrentScope() { - return currentScope! -} - -function createScope( - parent_: ImmerScope | undefined, - immer_: Immer -): ImmerScope { - return { - drafts_: [], - parent_, - immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - } -} - -export function usePatchesInScope( - scope: ImmerScope, - patchListener?: PatchListener -) { - if (patchListener) { - getPlugin("Patches") // assert we have the plugin - scope.patches_ = [] - scope.inversePatches_ = [] - scope.patchListener_ = patchListener - } -} - -export function revokeScope(scope: ImmerScope) { - leaveScope(scope) - scope.drafts_.forEach(revokeDraft) - // @ts-ignore - scope.drafts_ = null -} - -export function leaveScope(scope: ImmerScope) { - if (scope === currentScope) { - currentScope = scope.parent_ - } -} - -export function enterScope(immer: Immer) { - return (currentScope = createScope(currentScope, immer)) -} - -function revokeDraft(draft: Drafted) { - const state: ImmerState = draft[DRAFT_STATE] - if (state.type_ === ArchType.Object || state.type_ === ArchType.Array) - state.revoke_() - else state.revoked_ = true -} diff --git a/node_modules/immer/src/immer.ts b/node_modules/immer/src/immer.ts deleted file mode 100644 index 01998487..00000000 --- a/node_modules/immer/src/immer.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { - IProduce, - IProduceWithPatches, - Immer, - Draft, - Immutable -} from "./internal" - -export { - Draft, - WritableDraft, - Immutable, - Patch, - PatchListener, - Producer, - original, - current, - isDraft, - isDraftable, - NOTHING as nothing, - DRAFTABLE as immerable, - freeze, - Objectish, - StrictMode -} from "./internal" - -const immer = new Immer() - -/** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ -export const produce: IProduce = immer.produce - -/** - * Like `produce`, but `produceWithPatches` always returns a tuple - * [nextState, patches, inversePatches] (instead of just the next state) - */ -export const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind( - immer -) - -/** - * Pass true to automatically freeze all copies created by Immer. - * - * Always freeze by default, even in production mode - */ -export const setAutoFreeze = immer.setAutoFreeze.bind(immer) - -/** - * Pass true to enable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ -export const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer) - -/** - * Apply an array of Immer patches to the first argument. - * - * This function is a producer, which means copy-on-write is in effect. - */ -export const applyPatches = immer.applyPatches.bind(immer) - -/** - * Create an Immer draft from the given base state, which may be a draft itself. - * The draft can be modified until you finalize it with the `finishDraft` function. - */ -export const createDraft = immer.createDraft.bind(immer) - -/** - * Finalize an Immer draft from a `createDraft` call, returning the base state - * (if no changes were made) or a modified copy. The draft must *not* be - * mutated afterwards. - * - * Pass a function as the 2nd argument to generate Immer patches based on the - * changes that were made. - */ -export const finishDraft = immer.finishDraft.bind(immer) - -/** - * This function is actually a no-op, but can be used to cast an immutable type - * to an draft type and make TypeScript happy - * - * @param value - */ -export function castDraft(value: T): Draft { - return value as any -} - -/** - * This function is actually a no-op, but can be used to cast a mutable type - * to an immutable type and make TypeScript happy - * @param value - */ -export function castImmutable(value: T): Immutable { - return value as any -} - -export {Immer} - -export {enablePatches} from "./plugins/patches" -export {enableMapSet} from "./plugins/mapset" diff --git a/node_modules/immer/src/internal.ts b/node_modules/immer/src/internal.ts deleted file mode 100644 index de7236a6..00000000 --- a/node_modules/immer/src/internal.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from "./utils/env" -export * from "./utils/errors" -export * from "./types/types-external" -export * from "./types/types-internal" -export * from "./utils/common" -export * from "./utils/plugins" -export * from "./core/scope" -export * from "./core/finalize" -export * from "./core/proxy" -export * from "./core/immerClass" -export * from "./core/current" diff --git a/node_modules/immer/src/plugins/mapset.ts b/node_modules/immer/src/plugins/mapset.ts deleted file mode 100644 index edc628a7..00000000 --- a/node_modules/immer/src/plugins/mapset.ts +++ /dev/null @@ -1,304 +0,0 @@ -// types only! -import { - ImmerState, - AnyMap, - AnySet, - MapState, - SetState, - DRAFT_STATE, - getCurrentScope, - latest, - isDraftable, - createProxy, - loadPlugin, - markChanged, - die, - ArchType, - each -} from "../internal" - -export function enableMapSet() { - class DraftMap extends Map { - [DRAFT_STATE]: MapState - - constructor(target: AnyMap, parent?: ImmerState) { - super() - this[DRAFT_STATE] = { - type_: ArchType.Map, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope()!, - modified_: false, - finalized_: false, - copy_: undefined, - assigned_: undefined, - base_: target, - draft_: this as any, - isManual_: false, - revoked_: false - } - } - - get size(): number { - return latest(this[DRAFT_STATE]).size - } - - has(key: any): boolean { - return latest(this[DRAFT_STATE]).has(key) - } - - set(key: any, value: any) { - const state: MapState = this[DRAFT_STATE] - assertUnrevoked(state) - if (!latest(state).has(key) || latest(state).get(key) !== value) { - prepareMapCopy(state) - markChanged(state) - state.assigned_!.set(key, true) - state.copy_!.set(key, value) - state.assigned_!.set(key, true) - } - return this - } - - delete(key: any): boolean { - if (!this.has(key)) { - return false - } - - const state: MapState = this[DRAFT_STATE] - assertUnrevoked(state) - prepareMapCopy(state) - markChanged(state) - if (state.base_.has(key)) { - state.assigned_!.set(key, false) - } else { - state.assigned_!.delete(key) - } - state.copy_!.delete(key) - return true - } - - clear() { - const state: MapState = this[DRAFT_STATE] - assertUnrevoked(state) - if (latest(state).size) { - prepareMapCopy(state) - markChanged(state) - state.assigned_ = new Map() - each(state.base_, key => { - state.assigned_!.set(key, false) - }) - state.copy_!.clear() - } - } - - forEach(cb: (value: any, key: any, self: any) => void, thisArg?: any) { - const state: MapState = this[DRAFT_STATE] - latest(state).forEach((_value: any, key: any, _map: any) => { - cb.call(thisArg, this.get(key), key, this) - }) - } - - get(key: any): any { - const state: MapState = this[DRAFT_STATE] - assertUnrevoked(state) - const value = latest(state).get(key) - if (state.finalized_ || !isDraftable(value)) { - return value - } - if (value !== state.base_.get(key)) { - return value // either already drafted or reassigned - } - // despite what it looks, this creates a draft only once, see above condition - const draft = createProxy(value, state) - prepareMapCopy(state) - state.copy_!.set(key, draft) - return draft - } - - keys(): IterableIterator { - return latest(this[DRAFT_STATE]).keys() - } - - values(): IterableIterator { - const iterator = this.keys() - return { - [Symbol.iterator]: () => this.values(), - next: () => { - const r = iterator.next() - /* istanbul ignore next */ - if (r.done) return r - const value = this.get(r.value) - return { - done: false, - value - } - } - } as any - } - - entries(): IterableIterator<[any, any]> { - const iterator = this.keys() - return { - [Symbol.iterator]: () => this.entries(), - next: () => { - const r = iterator.next() - /* istanbul ignore next */ - if (r.done) return r - const value = this.get(r.value) - return { - done: false, - value: [r.value, value] - } - } - } as any - } - - [Symbol.iterator]() { - return this.entries() - } - } - - function proxyMap_(target: T, parent?: ImmerState): T { - // @ts-ignore - return new DraftMap(target, parent) - } - - function prepareMapCopy(state: MapState) { - if (!state.copy_) { - state.assigned_ = new Map() - state.copy_ = new Map(state.base_) - } - } - - class DraftSet extends Set { - [DRAFT_STATE]: SetState - constructor(target: AnySet, parent?: ImmerState) { - super() - this[DRAFT_STATE] = { - type_: ArchType.Set, - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope()!, - modified_: false, - finalized_: false, - copy_: undefined, - base_: target, - draft_: this, - drafts_: new Map(), - revoked_: false, - isManual_: false - } - } - - get size(): number { - return latest(this[DRAFT_STATE]).size - } - - has(value: any): boolean { - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - // bit of trickery here, to be able to recognize both the value, and the draft of its value - if (!state.copy_) { - return state.base_.has(value) - } - if (state.copy_.has(value)) return true - if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value))) - return true - return false - } - - add(value: any): any { - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - if (!this.has(value)) { - prepareSetCopy(state) - markChanged(state) - state.copy_!.add(value) - } - return this - } - - delete(value: any): any { - if (!this.has(value)) { - return false - } - - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - prepareSetCopy(state) - markChanged(state) - return ( - state.copy_!.delete(value) || - (state.drafts_.has(value) - ? state.copy_!.delete(state.drafts_.get(value)) - : /* istanbul ignore next */ false) - ) - } - - clear() { - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - if (latest(state).size) { - prepareSetCopy(state) - markChanged(state) - state.copy_!.clear() - } - } - - values(): IterableIterator { - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - prepareSetCopy(state) - return state.copy_!.values() - } - - entries(): IterableIterator<[any, any]> { - const state: SetState = this[DRAFT_STATE] - assertUnrevoked(state) - prepareSetCopy(state) - return state.copy_!.entries() - } - - keys(): IterableIterator { - return this.values() - } - - [Symbol.iterator]() { - return this.values() - } - - forEach(cb: any, thisArg?: any) { - const iterator = this.values() - let result = iterator.next() - while (!result.done) { - cb.call(thisArg, result.value, result.value, this) - result = iterator.next() - } - } - } - function proxySet_(target: T, parent?: ImmerState): T { - // @ts-ignore - return new DraftSet(target, parent) - } - - function prepareSetCopy(state: SetState) { - if (!state.copy_) { - // create drafts for all entries to preserve insertion order - state.copy_ = new Set() - state.base_.forEach(value => { - if (isDraftable(value)) { - const draft = createProxy(value, state) - state.drafts_.set(value, draft) - state.copy_!.add(draft) - } else { - state.copy_!.add(value) - } - }) - } - } - - function assertUnrevoked(state: any /*ES5State | MapState | SetState*/) { - if (state.revoked_) die(3, JSON.stringify(latest(state))) - } - - loadPlugin("MapSet", {proxyMap_, proxySet_}) -} diff --git a/node_modules/immer/src/plugins/patches.ts b/node_modules/immer/src/plugins/patches.ts deleted file mode 100644 index 934e0b96..00000000 --- a/node_modules/immer/src/plugins/patches.ts +++ /dev/null @@ -1,317 +0,0 @@ -import {immerable} from "../immer" -import { - ImmerState, - Patch, - SetState, - ProxyArrayState, - MapState, - ProxyObjectState, - PatchPath, - get, - each, - has, - getArchtype, - getPrototypeOf, - isSet, - isMap, - loadPlugin, - ArchType, - die, - isDraft, - isDraftable, - NOTHING, - errors -} from "../internal" - -export function enablePatches() { - const errorOffset = 16 - if (process.env.NODE_ENV !== "production") { - errors.push( - 'Sets cannot have "replace" patches.', - function(op: string) { - return "Unsupported patch operation: " + op - }, - function(path: string) { - return "Cannot apply patch, path doesn't resolve: " + path - }, - "Patching reserved attributes like __proto__, prototype and constructor is not allowed" - ) - } - - const REPLACE = "replace" - const ADD = "add" - const REMOVE = "remove" - - function generatePatches_( - state: ImmerState, - basePath: PatchPath, - patches: Patch[], - inversePatches: Patch[] - ): void { - switch (state.type_) { - case ArchType.Object: - case ArchType.Map: - return generatePatchesFromAssigned( - state, - basePath, - patches, - inversePatches - ) - case ArchType.Array: - return generateArrayPatches(state, basePath, patches, inversePatches) - case ArchType.Set: - return generateSetPatches( - (state as any) as SetState, - basePath, - patches, - inversePatches - ) - } - } - - function generateArrayPatches( - state: ProxyArrayState, - basePath: PatchPath, - patches: Patch[], - inversePatches: Patch[] - ) { - let {base_, assigned_} = state - let copy_ = state.copy_! - - // Reduce complexity by ensuring `base` is never longer. - if (copy_.length < base_.length) { - // @ts-ignore - ;[base_, copy_] = [copy_, base_] - ;[patches, inversePatches] = [inversePatches, patches] - } - - // Process replaced indices. - for (let i = 0; i < base_.length; i++) { - if (assigned_[i] && copy_[i] !== base_[i]) { - const path = basePath.concat([i]) - patches.push({ - op: REPLACE, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }) - inversePatches.push({ - op: REPLACE, - path, - value: clonePatchValueIfNeeded(base_[i]) - }) - } - } - - // Process added indices. - for (let i = base_.length; i < copy_.length; i++) { - const path = basePath.concat([i]) - patches.push({ - op: ADD, - path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }) - } - for (let i = copy_.length - 1; base_.length <= i; --i) { - const path = basePath.concat([i]) - inversePatches.push({ - op: REMOVE, - path - }) - } - } - - // This is used for both Map objects and normal objects. - function generatePatchesFromAssigned( - state: MapState | ProxyObjectState, - basePath: PatchPath, - patches: Patch[], - inversePatches: Patch[] - ) { - const {base_, copy_} = state - each(state.assigned_!, (key, assignedValue) => { - const origValue = get(base_, key) - const value = get(copy_!, key) - const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD - if (origValue === value && op === REPLACE) return - const path = basePath.concat(key as any) - patches.push(op === REMOVE ? {op, path} : {op, path, value}) - inversePatches.push( - op === ADD - ? {op: REMOVE, path} - : op === REMOVE - ? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)} - : {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)} - ) - }) - } - - function generateSetPatches( - state: SetState, - basePath: PatchPath, - patches: Patch[], - inversePatches: Patch[] - ) { - let {base_, copy_} = state - - let i = 0 - base_.forEach((value: any) => { - if (!copy_!.has(value)) { - const path = basePath.concat([i]) - patches.push({ - op: REMOVE, - path, - value - }) - inversePatches.unshift({ - op: ADD, - path, - value - }) - } - i++ - }) - i = 0 - copy_!.forEach((value: any) => { - if (!base_.has(value)) { - const path = basePath.concat([i]) - patches.push({ - op: ADD, - path, - value - }) - inversePatches.unshift({ - op: REMOVE, - path, - value - }) - } - i++ - }) - } - - function generateReplacementPatches_( - baseValue: any, - replacement: any, - patches: Patch[], - inversePatches: Patch[] - ): void { - patches.push({ - op: REPLACE, - path: [], - value: replacement === NOTHING ? undefined : replacement - }) - inversePatches.push({ - op: REPLACE, - path: [], - value: baseValue - }) - } - - function applyPatches_(draft: T, patches: readonly Patch[]): T { - patches.forEach(patch => { - const {path, op} = patch - - let base: any = draft - for (let i = 0; i < path.length - 1; i++) { - const parentType = getArchtype(base) - let p = path[i] - if (typeof p !== "string" && typeof p !== "number") { - p = "" + p - } - - // See #738, avoid prototype pollution - if ( - (parentType === ArchType.Object || parentType === ArchType.Array) && - (p === "__proto__" || p === "constructor") - ) - die(errorOffset + 3) - if (typeof base === "function" && p === "prototype") - die(errorOffset + 3) - base = get(base, p) - if (typeof base !== "object") die(errorOffset + 2, path.join("/")) - } - - const type = getArchtype(base) - const value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411 - const key = path[path.length - 1] - switch (op) { - case REPLACE: - switch (type) { - case ArchType.Map: - return base.set(key, value) - /* istanbul ignore next */ - case ArchType.Set: - die(errorOffset) - default: - // if value is an object, then it's assigned by reference - // in the following add or remove ops, the value field inside the patch will also be modifyed - // so we use value from the cloned patch - // @ts-ignore - return (base[key] = value) - } - case ADD: - switch (type) { - case ArchType.Array: - return key === "-" - ? base.push(value) - : base.splice(key as any, 0, value) - case ArchType.Map: - return base.set(key, value) - case ArchType.Set: - return base.add(value) - default: - return (base[key] = value) - } - case REMOVE: - switch (type) { - case ArchType.Array: - return base.splice(key as any, 1) - case ArchType.Map: - return base.delete(key) - case ArchType.Set: - return base.delete(patch.value) - default: - return delete base[key] - } - default: - die(errorOffset + 1, op) - } - }) - - return draft - } - - // optimize: this is quite a performance hit, can we detect intelligently when it is needed? - // E.g. auto-draft when new objects from outside are assigned and modified? - // (See failing test when deepClone just returns obj) - function deepClonePatchValue(obj: T): T - function deepClonePatchValue(obj: any) { - if (!isDraftable(obj)) return obj - if (Array.isArray(obj)) return obj.map(deepClonePatchValue) - if (isMap(obj)) - return new Map( - Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)]) - ) - if (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue)) - const cloned = Object.create(getPrototypeOf(obj)) - for (const key in obj) cloned[key] = deepClonePatchValue(obj[key]) - if (has(obj, immerable)) cloned[immerable] = obj[immerable] - return cloned - } - - function clonePatchValueIfNeeded(obj: T): T { - if (isDraft(obj)) { - return deepClonePatchValue(obj) - } else return obj - } - - loadPlugin("Patches", { - applyPatches_, - generatePatches_, - generateReplacementPatches_ - }) -} diff --git a/node_modules/immer/src/types/globals.d.ts b/node_modules/immer/src/types/globals.d.ts deleted file mode 100644 index 404c55f1..00000000 --- a/node_modules/immer/src/types/globals.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare const __DEV__: boolean diff --git a/node_modules/immer/src/types/index.js.flow b/node_modules/immer/src/types/index.js.flow deleted file mode 100644 index 6f14c85a..00000000 --- a/node_modules/immer/src/types/index.js.flow +++ /dev/null @@ -1,111 +0,0 @@ -// @flow - -export interface Patch { - op: "replace" | "remove" | "add"; - path: (string | number)[]; - value?: any; -} - -export type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void - -type Base = {...} | Array -interface IProduce { - /** - * Immer takes a state, and runs a function against it. - * That function can freely mutate the state, as it will create copies-on-write. - * This means that the original state will stay unchanged, and once the function finishes, the modified state is returned. - * - * If the first argument is a function, this is interpreted as the recipe, and will create a curried function that will execute the recipe - * any time it is called with the current state. - * - * @param currentState - the state to start with - * @param recipe - function that receives a proxy of the current state as first argument and which can be freely modified - * @param initialState - if a curried function is created and this argument was given, it will be used as fallback if the curried function is called with a state of undefined - * @returns The next state: a new state, or the current state if nothing was modified - */ - ( - currentState: S, - recipe: (draftState: S) => S | void, - patchListener?: PatchListener - ): S; - // curried invocations with initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void, - initialState: S - ): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => S; - // curried invocations without initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void - ): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S; -} - -interface IProduceWithPatches { - /** - * Like `produce`, but instead of just returning the new state, - * a tuple is returned with [nextState, patches, inversePatches] - * - * Like produce, this function supports currying - */ - ( - currentState: S, - recipe: (draftState: S) => S | void - ): [S, Patch[], Patch[]]; - // curried invocations with initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void, - initialState: S - ): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]]; - // curried invocations without initial state - ( - recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void - ): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]]; -} - -declare export var produce: IProduce - -declare export var produceWithPatches: IProduceWithPatches - -declare export var nothing: typeof undefined - -declare export var immerable: Symbol - -/** - * Automatically freezes any state trees generated by immer. - * This protects against accidental modifications of the state tree outside of an immer function. - * This comes with a performance impact, so it is recommended to disable this option in production. - * By default it is turned on during local development, and turned off in production. - */ -declare export function setAutoFreeze(autoFreeze: boolean): void - -/** - * Pass false to disable strict shallow copy. - * - * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties. - */ -declare export function setUseStrictShallowCopy(useStrictShallowCopy: boolean): void - -declare export function applyPatches(state: S, patches: Patch[]): S - -declare export function original(value: S): S - -declare export function current(value: S): S - -declare export function isDraft(value: any): boolean - -/** - * Creates a mutable draft from an (immutable) object / array. - * The draft can be modified until `finishDraft` is called - */ -declare export function createDraft(base: T): T - -/** - * Given a draft that was created using `createDraft`, - * finalizes the draft into a new immutable object. - * Optionally a patch-listener can be provided to gather the patches that are needed to construct the object. - */ -declare export function finishDraft(base: T, listener?: PatchListener): T - -declare export function enableMapSet(): void -declare export function enablePatches(): void - -declare export function freeze(obj: T, freeze?: boolean): T diff --git a/node_modules/immer/src/types/types-external.ts b/node_modules/immer/src/types/types-external.ts deleted file mode 100644 index 8bb44aba..00000000 --- a/node_modules/immer/src/types/types-external.ts +++ /dev/null @@ -1,239 +0,0 @@ -import {NOTHING} from "../internal" - -type AnyFunc = (...args: any[]) => any - -type PrimitiveType = number | string | boolean - -/** Object types that should never be mapped */ -type AtomicObject = Function | Promise | Date | RegExp - -/** - * If the lib "ES2015.Collection" is not included in tsconfig.json, - * types like ReadonlyArray, WeakMap etc. fall back to `any` (specified nowhere) - * or `{}` (from the node types), in both cases entering an infinite recursion in - * pattern matching type mappings - * This type can be used to cast these types to `void` in these cases. - */ -export type IfAvailable = - // fallback if any - true | false extends (T extends never - ? true - : false) - ? Fallback // fallback if empty type - : keyof T extends never - ? Fallback // original type - : T - -/** - * These should also never be mapped but must be tested after regular Map and - * Set - */ -type WeakReferences = IfAvailable> | IfAvailable> - -export type WritableDraft = {-readonly [K in keyof T]: Draft} - -/** Convert a readonly type into a mutable type, if possible */ -export type Draft = T extends PrimitiveType - ? T - : T extends AtomicObject - ? T - : T extends ReadonlyMap // Map extends ReadonlyMap - ? Map, Draft> - : T extends ReadonlySet // Set extends ReadonlySet - ? Set> - : T extends WeakReferences - ? T - : T extends object - ? WritableDraft - : T - -/** Convert a mutable type into a readonly type */ -export type Immutable = T extends PrimitiveType - ? T - : T extends AtomicObject - ? T - : T extends ReadonlyMap // Map extends ReadonlyMap - ? ReadonlyMap, Immutable> - : T extends ReadonlySet // Set extends ReadonlySet - ? ReadonlySet> - : T extends WeakReferences - ? T - : T extends object - ? {readonly [K in keyof T]: Immutable} - : T - -export interface Patch { - op: "replace" | "remove" | "add" - path: (string | number)[] - value?: any -} - -export type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void - -/** Converts `nothing` into `undefined` */ -type FromNothing = T extends typeof NOTHING ? undefined : T - -/** The inferred return type of `produce` */ -export type Produced = Return extends void - ? Base - : FromNothing - -/** - * Utility types - */ -type PatchesTuple = readonly [T, Patch[], Patch[]] - -type ValidRecipeReturnType = - | State - | void - | undefined - | (State extends undefined ? typeof NOTHING : never) - -type ReturnTypeWithPatchesIfNeeded< - State, - UsePatches extends boolean -> = UsePatches extends true ? PatchesTuple : State - -/** - * Core Producer inference - */ -type InferRecipeFromCurried = Curried extends ( - base: infer State, - ...rest: infer Args -) => any // extra assertion to make sure this is a proper curried function (state, args) => state - ? ReturnType extends State - ? ( - draft: Draft, - ...rest: Args - ) => ValidRecipeReturnType> - : never - : never - -type InferInitialStateFromCurried = Curried extends ( - base: infer State, - ...rest: any[] -) => any // extra assertion to make sure this is a proper curried function (state, args) => state - ? State - : never - -type InferCurriedFromRecipe< - Recipe, - UsePatches extends boolean -> = Recipe extends (draft: infer DraftState, ...args: infer RestArgs) => any // verify return type - ? ReturnType extends ValidRecipeReturnType - ? ( - base: Immutable, - ...args: RestArgs - ) => ReturnTypeWithPatchesIfNeeded // N.b. we return mutable draftstate, in case the recipe's first arg isn't read only, and that isn't expected as output either - : never // incorrect return type - : never // not a function - -type InferCurriedFromInitialStateAndRecipe< - State, - Recipe, - UsePatches extends boolean -> = Recipe extends ( - draft: Draft, - ...rest: infer RestArgs -) => ValidRecipeReturnType - ? ( - base?: State | undefined, - ...args: RestArgs - ) => ReturnTypeWithPatchesIfNeeded - : never // recipe doesn't match initial state - -/** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ -export interface IProduce { - /** Curried producer that infers the recipe from the curried output function (e.g. when passing to setState) */ - ( - recipe: InferRecipeFromCurried, - initialState?: InferInitialStateFromCurried - ): Curried - - /** Curried producer that infers curried from the recipe */ - (recipe: Recipe): InferCurriedFromRecipe< - Recipe, - false - > - - /** Curried producer that infers curried from the State generic, which is explicitly passed in. */ - ( - recipe: ( - state: Draft, - initialState: State - ) => ValidRecipeReturnType - ): (state?: State) => State - ( - recipe: ( - state: Draft, - ...args: Args - ) => ValidRecipeReturnType, - initialState: State - ): (state?: State, ...args: Args) => State - (recipe: (state: Draft) => ValidRecipeReturnType): ( - state: State - ) => State - ( - recipe: (state: Draft, ...args: Args) => ValidRecipeReturnType - ): (state: State, ...args: Args) => State - - /** Curried producer with initial state, infers recipe from initial state */ - ( - recipe: Recipe, - initialState: State - ): InferCurriedFromInitialStateAndRecipe - - /** Normal producer */ - >( // By using a default inferred D, rather than Draft in the recipe, we can override it. - base: Base, - recipe: (draft: D) => ValidRecipeReturnType, - listener?: PatchListener - ): Base -} - -/** - * Like `produce`, but instead of just returning the new state, - * a tuple is returned with [nextState, patches, inversePatches] - * - * Like produce, this function supports currying - */ -export interface IProduceWithPatches { - // Types copied from IProduce, wrapped with PatchesTuple - (recipe: Recipe): InferCurriedFromRecipe - ( - recipe: Recipe, - initialState: State - ): InferCurriedFromInitialStateAndRecipe - >( - base: Base, - recipe: (draft: D) => ValidRecipeReturnType, - listener?: PatchListener - ): PatchesTuple -} - -/** - * The type for `recipe function` - */ -export type Producer = (draft: Draft) => ValidRecipeReturnType> - -// Fixes #507: bili doesn't export the types of this file if there is no actual source in it.. -// hopefully it get's tree-shaken away for everyone :) -export function never_used() {} diff --git a/node_modules/immer/src/types/types-internal.ts b/node_modules/immer/src/types/types-internal.ts deleted file mode 100644 index 5c506252..00000000 --- a/node_modules/immer/src/types/types-internal.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - SetState, - ImmerScope, - ProxyObjectState, - ProxyArrayState, - MapState, - DRAFT_STATE -} from "../internal" - -export type Objectish = AnyObject | AnyArray | AnyMap | AnySet -export type ObjectishNoSet = AnyObject | AnyArray | AnyMap - -export type AnyObject = {[key: string]: any} -export type AnyArray = Array -export type AnySet = Set -export type AnyMap = Map - -export const enum ArchType { - Object, - Array, - Map, - Set -} - -export interface ImmerBaseState { - parent_?: ImmerState - scope_: ImmerScope - modified_: boolean - finalized_: boolean - isManual_: boolean -} - -export type ImmerState = - | ProxyObjectState - | ProxyArrayState - | MapState - | SetState - -// The _internal_ type used for drafts (not to be confused with Draft, which is public facing) -export type Drafted = { - [DRAFT_STATE]: T -} & Base diff --git a/node_modules/immer/src/utils/common.ts b/node_modules/immer/src/utils/common.ts deleted file mode 100644 index 692157b7..00000000 --- a/node_modules/immer/src/utils/common.ts +++ /dev/null @@ -1,217 +0,0 @@ -import { - DRAFT_STATE, - DRAFTABLE, - Objectish, - Drafted, - AnyObject, - AnyMap, - AnySet, - ImmerState, - ArchType, - die, - StrictMode -} from "../internal" - -export const getPrototypeOf = Object.getPrototypeOf - -/** Returns true if the given value is an Immer draft */ -/*#__PURE__*/ -export function isDraft(value: any): boolean { - return !!value && !!value[DRAFT_STATE] -} - -/** Returns true if the given value can be drafted by Immer */ -/*#__PURE__*/ -export function isDraftable(value: any): boolean { - if (!value) return false - return ( - isPlainObject(value) || - Array.isArray(value) || - !!value[DRAFTABLE] || - !!value.constructor?.[DRAFTABLE] || - isMap(value) || - isSet(value) - ) -} - -const objectCtorString = Object.prototype.constructor.toString() -/*#__PURE__*/ -export function isPlainObject(value: any): boolean { - if (!value || typeof value !== "object") return false - const proto = getPrototypeOf(value) - if (proto === null) { - return true - } - const Ctor = - Object.hasOwnProperty.call(proto, "constructor") && proto.constructor - - if (Ctor === Object) return true - - return ( - typeof Ctor == "function" && - Function.toString.call(Ctor) === objectCtorString - ) -} - -/** Get the underlying object that is represented by the given draft */ -/*#__PURE__*/ -export function original(value: T): T | undefined -export function original(value: Drafted): any { - if (!isDraft(value)) die(15, value) - return value[DRAFT_STATE].base_ -} - -/** - * Each iterates a map, set or array. - * Or, if any other kind of object, all of its own properties. - * Regardless whether they are enumerable or symbols - */ -export function each( - obj: T, - iter: (key: string | number, value: any, source: T) => void -): void -export function each(obj: any, iter: any) { - if (getArchtype(obj) === ArchType.Object) { - Reflect.ownKeys(obj).forEach(key => { - iter(key, obj[key], obj) - }) - } else { - obj.forEach((entry: any, index: any) => iter(index, entry, obj)) - } -} - -/*#__PURE__*/ -export function getArchtype(thing: any): ArchType { - const state: undefined | ImmerState = thing[DRAFT_STATE] - return state - ? state.type_ - : Array.isArray(thing) - ? ArchType.Array - : isMap(thing) - ? ArchType.Map - : isSet(thing) - ? ArchType.Set - : ArchType.Object -} - -/*#__PURE__*/ -export function has(thing: any, prop: PropertyKey): boolean { - return getArchtype(thing) === ArchType.Map - ? thing.has(prop) - : Object.prototype.hasOwnProperty.call(thing, prop) -} - -/*#__PURE__*/ -export function get(thing: AnyMap | AnyObject, prop: PropertyKey): any { - // @ts-ignore - return getArchtype(thing) === ArchType.Map ? thing.get(prop) : thing[prop] -} - -/*#__PURE__*/ -export function set(thing: any, propOrOldValue: PropertyKey, value: any) { - const t = getArchtype(thing) - if (t === ArchType.Map) thing.set(propOrOldValue, value) - else if (t === ArchType.Set) { - thing.add(value) - } else thing[propOrOldValue] = value -} - -/*#__PURE__*/ -export function is(x: any, y: any): boolean { - // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js - if (x === y) { - return x !== 0 || 1 / x === 1 / y - } else { - return x !== x && y !== y - } -} - -/*#__PURE__*/ -export function isMap(target: any): target is AnyMap { - return target instanceof Map -} - -/*#__PURE__*/ -export function isSet(target: any): target is AnySet { - return target instanceof Set -} -/*#__PURE__*/ -export function latest(state: ImmerState): any { - return state.copy_ || state.base_ -} - -/*#__PURE__*/ -export function shallowCopy(base: any, strict: StrictMode) { - if (isMap(base)) { - return new Map(base) - } - if (isSet(base)) { - return new Set(base) - } - if (Array.isArray(base)) return Array.prototype.slice.call(base) - - const isPlain = isPlainObject(base) - - if (strict === true || (strict === "class_only" && !isPlain)) { - // Perform a strict copy - const descriptors = Object.getOwnPropertyDescriptors(base) - delete descriptors[DRAFT_STATE as any] - let keys = Reflect.ownKeys(descriptors) - for (let i = 0; i < keys.length; i++) { - const key: any = keys[i] - const desc = descriptors[key] - if (desc.writable === false) { - desc.writable = true - desc.configurable = true - } - // like object.assign, we will read any _own_, get/set accessors. This helps in dealing - // with libraries that trap values, like mobx or vue - // unlike object.assign, non-enumerables will be copied as well - if (desc.get || desc.set) - descriptors[key] = { - configurable: true, - writable: true, // could live with !!desc.set as well here... - enumerable: desc.enumerable, - value: base[key] - } - } - return Object.create(getPrototypeOf(base), descriptors) - } else { - // perform a sloppy copy - const proto = getPrototypeOf(base) - if (proto !== null && isPlain) { - return {...base} // assumption: better inner class optimization than the assign below - } - const obj = Object.create(proto) - return Object.assign(obj, base) - } -} - -/** - * Freezes draftable objects. Returns the original object. - * By default freezes shallowly, but if the second argument is `true` it will freeze recursively. - * - * @param obj - * @param deep - */ -export function freeze(obj: T, deep?: boolean): T -export function freeze(obj: any, deep: boolean = false): T { - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj - if (getArchtype(obj) > 1 /* Map or Set */) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any - } - Object.freeze(obj) - if (deep) - // See #590, don't recurse into non-enumerable / Symbol properties when freezing - // So use Object.entries (only string-like, enumerables) instead of each() - Object.entries(obj).forEach(([key, value]) => freeze(value, true)) - return obj -} - -function dontMutateFrozenCollections() { - die(2) -} - -export function isFrozen(obj: any): boolean { - return Object.isFrozen(obj) -} diff --git a/node_modules/immer/src/utils/env.ts b/node_modules/immer/src/utils/env.ts deleted file mode 100644 index dee4b06a..00000000 --- a/node_modules/immer/src/utils/env.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Should be no imports here! - -/** - * The sentinel value returned by producers to replace the draft with undefined. - */ -export const NOTHING: unique symbol = Symbol.for("immer-nothing") - -/** - * To let Immer treat your class instances as plain immutable objects - * (albeit with a custom prototype), you must define either an instance property - * or a static property on each of your custom classes. - * - * Otherwise, your class instance will never be drafted, which means it won't be - * safe to mutate in a produce callback. - */ -export const DRAFTABLE: unique symbol = Symbol.for("immer-draftable") - -export const DRAFT_STATE: unique symbol = Symbol.for("immer-state") diff --git a/node_modules/immer/src/utils/errors.ts b/node_modules/immer/src/utils/errors.ts deleted file mode 100644 index f74d1bd9..00000000 --- a/node_modules/immer/src/utils/errors.ts +++ /dev/null @@ -1,48 +0,0 @@ -export const errors = - process.env.NODE_ENV !== "production" - ? [ - // All error codes, starting by 0: - function(plugin: string) { - return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.` - }, - function(thing: string) { - return `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}'` - }, - "This object has been frozen and should not be mutated", - function(data: any) { - return ( - "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + - data - ) - }, - "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - "Immer forbids circular references", - "The first or second argument to `produce` must be a function", - "The third argument to `produce` must be a function or undefined", - "First argument to `createDraft` must be a plain object, an array, or an immerable object", - "First argument to `finishDraft` must be a draft returned by `createDraft`", - function(thing: string) { - return `'current' expects a draft, got: ${thing}` - }, - "Object.defineProperty() cannot be used on an Immer draft", - "Object.setPrototypeOf() cannot be used on an Immer draft", - "Immer only supports deleting array indices", - "Immer only supports setting array indices and the 'length' property", - function(thing: string) { - return `'original' expects a draft, got: ${thing}` - } - // Note: if more errors are added, the errorOffset in Patches.ts should be increased - // See Patches.ts for additional errors - ] - : [] - -export function die(error: number, ...args: any[]): never { - if (process.env.NODE_ENV !== "production") { - const e = errors[error] - const msg = typeof e === "function" ? e.apply(null, args as any) : e - throw new Error(`[Immer] ${msg}`) - } - throw new Error( - `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf` - ) -} diff --git a/node_modules/immer/src/utils/plugins.ts b/node_modules/immer/src/utils/plugins.ts deleted file mode 100644 index fede08f5..00000000 --- a/node_modules/immer/src/utils/plugins.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { - ImmerState, - Patch, - Drafted, - ImmerBaseState, - AnyMap, - AnySet, - ArchType, - die -} from "../internal" - -/** Plugin utilities */ -const plugins: { - Patches?: { - generatePatches_( - state: ImmerState, - basePath: PatchPath, - patches: Patch[], - inversePatches: Patch[] - ): void - generateReplacementPatches_( - base: any, - replacement: any, - patches: Patch[], - inversePatches: Patch[] - ): void - applyPatches_(draft: T, patches: readonly Patch[]): T - } - MapSet?: { - proxyMap_(target: T, parent?: ImmerState): T - proxySet_(target: T, parent?: ImmerState): T - } -} = {} - -type Plugins = typeof plugins - -export function getPlugin( - pluginKey: K -): Exclude { - const plugin = plugins[pluginKey] - if (!plugin) { - die(0, pluginKey) - } - // @ts-ignore - return plugin -} - -export function loadPlugin( - pluginKey: K, - implementation: Plugins[K] -): void { - if (!plugins[pluginKey]) plugins[pluginKey] = implementation -} -/** Map / Set plugin */ - -export interface MapState extends ImmerBaseState { - type_: ArchType.Map - copy_: AnyMap | undefined - assigned_: Map | undefined - base_: AnyMap - revoked_: boolean - draft_: Drafted -} - -export interface SetState extends ImmerBaseState { - type_: ArchType.Set - copy_: AnySet | undefined - base_: AnySet - drafts_: Map // maps the original value to the draft value in the new set - revoked_: boolean - draft_: Drafted -} - -/** Patches plugin */ - -export type PatchPath = (string | number)[] diff --git a/ui/README.md b/ui/README.md index e1cdc89d..85a6989e 100644 --- a/ui/README.md +++ b/ui/README.md @@ -17,12 +17,12 @@ If you are developing a production application, we recommend updating the config export default { // other rules... parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json', './tsconfig.app.json'], + ecmaVersion: "latest", + sourceType: "module", + project: ["./tsconfig.json", "./tsconfig.node.json", "./tsconfig.app.json"], tsconfigRootDir: __dirname, }, -} +}; ``` - Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` diff --git a/ui/components.json b/ui/components.json index 46f4379c..b67a3e09 100644 --- a/ui/components.json +++ b/ui/components.json @@ -14,4 +14,4 @@ "components": "@/components", "utils": "@/lib/utils" } -} \ No newline at end of file +} diff --git a/ui/dist/assets/index-C9iolg9g.js b/ui/dist/assets/index-C9iolg9g.js new file mode 100644 index 00000000..ae63a915 --- /dev/null +++ b/ui/dist/assets/index-C9iolg9g.js @@ -0,0 +1,324 @@ +var pP=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var VH=pP((n9,Ed)=>{function g1(e,t){for(var n=0;nr[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();var Cu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Uf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var y1={exports:{}},Vf={},v1={exports:{}},nt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gc=Symbol.for("react.element"),gP=Symbol.for("react.portal"),yP=Symbol.for("react.fragment"),vP=Symbol.for("react.strict_mode"),xP=Symbol.for("react.profiler"),wP=Symbol.for("react.provider"),bP=Symbol.for("react.context"),_P=Symbol.for("react.forward_ref"),SP=Symbol.for("react.suspense"),kP=Symbol.for("react.memo"),CP=Symbol.for("react.lazy"),l0=Symbol.iterator;function jP(e){return e===null||typeof e!="object"?null:(e=l0&&e[l0]||e["@@iterator"],typeof e=="function"?e:null)}var x1={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w1=Object.assign,b1={};function Ya(e,t,n){this.props=e,this.context=t,this.refs=b1,this.updater=n||x1}Ya.prototype.isReactComponent={};Ya.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ya.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function _1(){}_1.prototype=Ya.prototype;function ry(e,t,n){this.props=e,this.context=t,this.refs=b1,this.updater=n||x1}var sy=ry.prototype=new _1;sy.constructor=ry;w1(sy,Ya.prototype);sy.isPureReactComponent=!0;var c0=Array.isArray,S1=Object.prototype.hasOwnProperty,oy={current:null},k1={key:!0,ref:!0,__self:!0,__source:!0};function C1(e,t,n){var r,s={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)S1.call(t,r)&&!k1.hasOwnProperty(r)&&(s[r]=t[r]);var a=arguments.length-2;if(a===1)s.children=n;else if(1>>1,B=W[$];if(0>>1;$s(oe,X))Oes(me,oe)?(W[$]=me,W[Oe]=X,$=Oe):(W[$]=oe,W[se]=X,$=se);else if(Oes(me,X))W[$]=me,W[Oe]=X,$=Oe;else break e}}return I}function s(W,I){var X=W.sortIndex-I.sortIndex;return X!==0?X:W.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,a=i.now();e.unstable_now=function(){return i.now()-a}}var c=[],u=[],d=1,f=null,h=3,m=!1,x=!1,p=!1,w=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function b(W){for(var I=n(u);I!==null;){if(I.callback===null)r(u);else if(I.startTime<=W)r(u),I.sortIndex=I.expirationTime,t(c,I);else break;I=n(u)}}function _(W){if(p=!1,b(W),!x)if(n(c)!==null)x=!0,J(C);else{var I=n(u);I!==null&&F(_,I.startTime-W)}}function C(W,I){x=!1,p&&(p=!1,g(R),R=-1),m=!0;var X=h;try{for(b(I),f=n(c);f!==null&&(!(f.expirationTime>I)||W&&!G());){var $=f.callback;if(typeof $=="function"){f.callback=null,h=f.priorityLevel;var B=$(f.expirationTime<=I);I=e.unstable_now(),typeof B=="function"?f.callback=B:f===n(c)&&r(c),b(I)}else r(c);f=n(c)}if(f!==null)var he=!0;else{var se=n(u);se!==null&&F(_,se.startTime-I),he=!1}return he}finally{f=null,h=X,m=!1}}var j=!1,T=null,R=-1,A=5,O=-1;function G(){return!(e.unstable_now()-OW||125$?(W.sortIndex=X,t(u,W),n(c)===null&&W===n(u)&&(p?(g(R),R=-1):p=!0,F(_,X-$))):(W.sortIndex=B,t(c,W),x||m||(x=!0,J(C))),W},e.unstable_shouldYield=G,e.unstable_wrapCallback=function(W){var I=h;return function(){var X=h;h=I;try{return W.apply(this,arguments)}finally{h=X}}}})(R1);P1.exports=R1;var LP=P1.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var zP=y,Kn=LP;function ie(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vp=Object.prototype.hasOwnProperty,FP=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,d0={},f0={};function $P(e){return vp.call(f0,e)?!0:vp.call(d0,e)?!1:FP.test(e)?f0[e]=!0:(d0[e]=!0,!1)}function UP(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function VP(e,t,n,r){if(t===null||typeof t>"u"||UP(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function jn(e,t,n,r,s,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var sn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){sn[e]=new jn(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];sn[t]=new jn(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){sn[e]=new jn(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){sn[e]=new jn(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){sn[e]=new jn(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){sn[e]=new jn(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){sn[e]=new jn(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){sn[e]=new jn(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){sn[e]=new jn(e,5,!1,e.toLowerCase(),null,!1,!1)});var ay=/[\-:]([a-z])/g;function ly(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ay,ly);sn[t]=new jn(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ay,ly);sn[t]=new jn(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ay,ly);sn[t]=new jn(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){sn[e]=new jn(e,1,!1,e.toLowerCase(),null,!1,!1)});sn.xlinkHref=new jn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){sn[e]=new jn(e,1,!1,e.toLowerCase(),null,!0,!0)});function cy(e,t,n,r){var s=sn.hasOwnProperty(t)?sn[t]:null;(s!==null?s.type!==0:r||!(2a||s[i]!==o[a]){var c=` +`+s[i].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=i&&0<=a);break}}}finally{mm=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Pl(e):""}function BP(e){switch(e.tag){case 5:return Pl(e.type);case 16:return Pl("Lazy");case 13:return Pl("Suspense");case 19:return Pl("SuspenseList");case 0:case 2:case 15:return e=pm(e.type,!1),e;case 11:return e=pm(e.type.render,!1),e;case 1:return e=pm(e.type,!0),e;default:return""}}function _p(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Gi:return"Fragment";case Ki:return"Portal";case xp:return"Profiler";case uy:return"StrictMode";case wp:return"Suspense";case bp:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case O1:return(e.displayName||"Context")+".Consumer";case D1:return(e._context.displayName||"Context")+".Provider";case dy:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case fy:return t=e.displayName||null,t!==null?t:_p(e.type)||"Memo";case ro:t=e._payload,e=e._init;try{return _p(e(t))}catch{}}return null}function WP(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return _p(t);case 8:return t===uy?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function So(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function M1(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function HP(e){var t=M1(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Nu(e){e._valueTracker||(e._valueTracker=HP(e))}function L1(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=M1(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Nd(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Sp(e,t){var n=t.checked;return Mt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function m0(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=So(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function z1(e,t){t=t.checked,t!=null&&cy(e,"checked",t,!1)}function kp(e,t){z1(e,t);var n=So(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Cp(e,t.type,n):t.hasOwnProperty("defaultValue")&&Cp(e,t.type,So(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function p0(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Cp(e,t,n){(t!=="number"||Nd(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Rl=Array.isArray;function fa(e,t,n,r){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Tu.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function rc(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Vl={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},YP=["Webkit","ms","Moz","O"];Object.keys(Vl).forEach(function(e){YP.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Vl[t]=Vl[e]})});function V1(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Vl.hasOwnProperty(e)&&Vl[e]?(""+t).trim():t+"px"}function B1(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,s=V1(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,s):e[n]=s}}var KP=Mt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Np(e,t){if(t){if(KP[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ie(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ie(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(ie(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ie(62))}}function Tp(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Pp=null;function hy(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rp=null,ha=null,ma=null;function v0(e){if(e=Xc(e)){if(typeof Rp!="function")throw Error(ie(280));var t=e.stateNode;t&&(t=Kf(t),Rp(e.stateNode,e.type,t))}}function W1(e){ha?ma?ma.push(e):ma=[e]:ha=e}function H1(){if(ha){var e=ha,t=ma;if(ma=ha=null,v0(e),t)for(e=0;e>>=0,e===0?32:31-(sR(e)/oR|0)|0}var Pu=64,Ru=4194304;function Al(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ad(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,s=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var a=i&~s;a!==0?r=Al(a):(o&=i,o!==0&&(r=Al(o)))}else i=n&~s,i!==0?r=Al(i):o!==0&&(r=Al(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&s)&&(s=r&-r,o=t&-t,s>=o||s===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Zc(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-jr(t),e[t]=n}function cR(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Wl),E0=" ",N0=!1;function d_(e,t){switch(e){case"keyup":return LR.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function f_(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Zi=!1;function FR(e,t){switch(e){case"compositionend":return f_(t);case"keypress":return t.which!==32?null:(N0=!0,E0);case"textInput":return e=t.data,e===E0&&N0?null:e;default:return null}}function $R(e,t){if(Zi)return e==="compositionend"||!by&&d_(e,t)?(e=c_(),ad=vy=lo=null,Zi=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=A0(n)}}function g_(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?g_(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function y_(){for(var e=window,t=Nd();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Nd(e.document)}return t}function _y(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function ZR(e){var t=y_(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&g_(n.ownerDocument.documentElement,n)){if(r!==null&&_y(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,o=Math.min(r.start,s);r=r.end===void 0?o:Math.min(r.end,s),!e.extend&&o>r&&(s=r,r=o,o=s),s=D0(n,o);var i=D0(n,r);s&&i&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,qi=null,Lp=null,Yl=null,zp=!1;function O0(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;zp||qi==null||qi!==Nd(r)||(r=qi,"selectionStart"in r&&_y(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yl&&cc(Yl,r)||(Yl=r,r=Id(Lp,"onSelect"),0Ji||(e.current=Wp[Ji],Wp[Ji]=null,Ji--)}function bt(e,t){Ji++,Wp[Ji]=e.current,e.current=t}var ko={},gn=Oo(ko),An=Oo(!1),si=ko;function Ea(e,t){var n=e.type.contextTypes;if(!n)return ko;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var s={},o;for(o in n)s[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function Dn(e){return e=e.childContextTypes,e!=null}function Ld(){kt(An),kt(gn)}function U0(e,t,n){if(gn.current!==ko)throw Error(ie(168));bt(gn,t),bt(An,n)}function j_(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var s in r)if(!(s in t))throw Error(ie(108,WP(e)||"Unknown",s));return Mt({},n,r)}function zd(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ko,si=gn.current,bt(gn,e),bt(An,An.current),!0}function V0(e,t,n){var r=e.stateNode;if(!r)throw Error(ie(169));n?(e=j_(e,t,si),r.__reactInternalMemoizedMergedChildContext=e,kt(An),kt(gn),bt(gn,e)):kt(An),bt(An,n)}var _s=null,Gf=!1,Tm=!1;function E_(e){_s===null?_s=[e]:_s.push(e)}function aA(e){Gf=!0,E_(e)}function Io(){if(!Tm&&_s!==null){Tm=!0;var e=0,t=gt;try{var n=_s;for(gt=1;e>=i,s-=i,Ss=1<<32-jr(t)+s|n<R?(A=T,T=null):A=T.sibling;var O=h(g,T,b[R],_);if(O===null){T===null&&(T=A);break}e&&T&&O.alternate===null&&t(g,T),v=o(O,v,R),j===null?C=O:j.sibling=O,j=O,T=A}if(R===b.length)return n(g,T),Pt&&$o(g,R),C;if(T===null){for(;RR?(A=T,T=null):A=T.sibling;var G=h(g,T,O.value,_);if(G===null){T===null&&(T=A);break}e&&T&&G.alternate===null&&t(g,T),v=o(G,v,R),j===null?C=G:j.sibling=G,j=G,T=A}if(O.done)return n(g,T),Pt&&$o(g,R),C;if(T===null){for(;!O.done;R++,O=b.next())O=f(g,O.value,_),O!==null&&(v=o(O,v,R),j===null?C=O:j.sibling=O,j=O);return Pt&&$o(g,R),C}for(T=r(g,T);!O.done;R++,O=b.next())O=m(T,g,R,O.value,_),O!==null&&(e&&O.alternate!==null&&T.delete(O.key===null?R:O.key),v=o(O,v,R),j===null?C=O:j.sibling=O,j=O);return e&&T.forEach(function(N){return t(g,N)}),Pt&&$o(g,R),C}function w(g,v,b,_){if(typeof b=="object"&&b!==null&&b.type===Gi&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case Eu:e:{for(var C=b.key,j=v;j!==null;){if(j.key===C){if(C=b.type,C===Gi){if(j.tag===7){n(g,j.sibling),v=s(j,b.props.children),v.return=g,g=v;break e}}else if(j.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===ro&&H0(C)===j.type){n(g,j.sibling),v=s(j,b.props),v.ref=gl(g,j,b),v.return=g,g=v;break e}n(g,j);break}else t(g,j);j=j.sibling}b.type===Gi?(v=ei(b.props.children,g.mode,_,b.key),v.return=g,g=v):(_=pd(b.type,b.key,b.props,null,g.mode,_),_.ref=gl(g,v,b),_.return=g,g=_)}return i(g);case Ki:e:{for(j=b.key;v!==null;){if(v.key===j)if(v.tag===4&&v.stateNode.containerInfo===b.containerInfo&&v.stateNode.implementation===b.implementation){n(g,v.sibling),v=s(v,b.children||[]),v.return=g,g=v;break e}else{n(g,v);break}else t(g,v);v=v.sibling}v=Lm(b,g.mode,_),v.return=g,g=v}return i(g);case ro:return j=b._init,w(g,v,j(b._payload),_)}if(Rl(b))return x(g,v,b,_);if(dl(b))return p(g,v,b,_);zu(g,b)}return typeof b=="string"&&b!==""||typeof b=="number"?(b=""+b,v!==null&&v.tag===6?(n(g,v.sibling),v=s(v,b),v.return=g,g=v):(n(g,v),v=Mm(b,g.mode,_),v.return=g,g=v),i(g)):n(g,v)}return w}var Ta=R_(!0),A_=R_(!1),Ud=Oo(null),Vd=null,na=null,jy=null;function Ey(){jy=na=Vd=null}function Ny(e){var t=Ud.current;kt(Ud),e._currentValue=t}function Kp(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function ga(e,t){Vd=e,jy=na=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Rn=!0),e.firstContext=null)}function dr(e){var t=e._currentValue;if(jy!==e)if(e={context:e,memoizedValue:t,next:null},na===null){if(Vd===null)throw Error(ie(308));na=e,Vd.dependencies={lanes:0,firstContext:e}}else na=na.next=e;return t}var Ho=null;function Ty(e){Ho===null?Ho=[e]:Ho.push(e)}function D_(e,t,n,r){var s=t.interleaved;return s===null?(n.next=n,Ty(t)):(n.next=s.next,s.next=n),t.interleaved=n,Os(e,r)}function Os(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var so=!1;function Py(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function O_(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Es(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function vo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,ct&2){var s=r.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),r.pending=t,Os(e,n)}return s=r.interleaved,s===null?(t.next=t,Ty(r)):(t.next=s.next,s.next=t),r.interleaved=t,Os(e,n)}function cd(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,py(e,n)}}function Y0(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var s=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?s=o=i:o=o.next=i,n=n.next}while(n!==null);o===null?s=o=t:o=o.next=t}else s=o=t;n={baseState:r.baseState,firstBaseUpdate:s,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Bd(e,t,n,r){var s=e.updateQueue;so=!1;var o=s.firstBaseUpdate,i=s.lastBaseUpdate,a=s.shared.pending;if(a!==null){s.shared.pending=null;var c=a,u=c.next;c.next=null,i===null?o=u:i.next=u,i=c;var d=e.alternate;d!==null&&(d=d.updateQueue,a=d.lastBaseUpdate,a!==i&&(a===null?d.firstBaseUpdate=u:a.next=u,d.lastBaseUpdate=c))}if(o!==null){var f=s.baseState;i=0,d=u=c=null,a=o;do{var h=a.lane,m=a.eventTime;if((r&h)===h){d!==null&&(d=d.next={eventTime:m,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var x=e,p=a;switch(h=t,m=n,p.tag){case 1:if(x=p.payload,typeof x=="function"){f=x.call(m,f,h);break e}f=x;break e;case 3:x.flags=x.flags&-65537|128;case 0:if(x=p.payload,h=typeof x=="function"?x.call(m,f,h):x,h==null)break e;f=Mt({},f,h);break e;case 2:so=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,h=s.effects,h===null?s.effects=[a]:h.push(a))}else m={eventTime:m,lane:h,tag:a.tag,payload:a.payload,callback:a.callback,next:null},d===null?(u=d=m,c=f):d=d.next=m,i|=h;if(a=a.next,a===null){if(a=s.shared.pending,a===null)break;h=a,a=h.next,h.next=null,s.lastBaseUpdate=h,s.shared.pending=null}}while(!0);if(d===null&&(c=f),s.baseState=c,s.firstBaseUpdate=u,s.lastBaseUpdate=d,t=s.shared.interleaved,t!==null){s=t;do i|=s.lane,s=s.next;while(s!==t)}else o===null&&(s.shared.lanes=0);ai|=i,e.lanes=i,e.memoizedState=f}}function K0(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Rm.transition;Rm.transition={};try{e(!1),t()}finally{gt=n,Rm.transition=r}}function X_(){return fr().memoizedState}function dA(e,t,n){var r=wo(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Q_(e))J_(t,n);else if(n=D_(e,t,n,r),n!==null){var s=Sn();Er(n,e,r,s),eS(n,t,r)}}function fA(e,t,n){var r=wo(e),s={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Q_(e))J_(t,s);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,a=o(i,n);if(s.hasEagerState=!0,s.eagerState=a,Tr(a,i)){var c=t.interleaved;c===null?(s.next=s,Ty(t)):(s.next=c.next,c.next=s),t.interleaved=s;return}}catch{}finally{}n=D_(e,t,s,r),n!==null&&(s=Sn(),Er(n,e,r,s),eS(n,t,r))}}function Q_(e){var t=e.alternate;return e===It||t!==null&&t===It}function J_(e,t){Kl=Hd=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function eS(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,py(e,n)}}var Yd={readContext:dr,useCallback:fn,useContext:fn,useEffect:fn,useImperativeHandle:fn,useInsertionEffect:fn,useLayoutEffect:fn,useMemo:fn,useReducer:fn,useRef:fn,useState:fn,useDebugValue:fn,useDeferredValue:fn,useTransition:fn,useMutableSource:fn,useSyncExternalStore:fn,useId:fn,unstable_isNewReconciler:!1},hA={readContext:dr,useCallback:function(e,t){return Vr().memoizedState=[e,t===void 0?null:t],e},useContext:dr,useEffect:Z0,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,dd(4194308,4,Y_.bind(null,t,e),n)},useLayoutEffect:function(e,t){return dd(4194308,4,e,t)},useInsertionEffect:function(e,t){return dd(4,2,e,t)},useMemo:function(e,t){var n=Vr();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Vr();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=dA.bind(null,It,e),[r.memoizedState,e]},useRef:function(e){var t=Vr();return e={current:e},t.memoizedState=e},useState:G0,useDebugValue:zy,useDeferredValue:function(e){return Vr().memoizedState=e},useTransition:function(){var e=G0(!1),t=e[0];return e=uA.bind(null,e[1]),Vr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=It,s=Vr();if(Pt){if(n===void 0)throw Error(ie(407));n=n()}else{if(n=t(),Jt===null)throw Error(ie(349));ii&30||z_(r,t,n)}s.memoizedState=n;var o={value:n,getSnapshot:t};return s.queue=o,Z0($_.bind(null,r,o,e),[e]),r.flags|=2048,yc(9,F_.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Vr(),t=Jt.identifierPrefix;if(Pt){var n=ks,r=Ss;n=(r&~(1<<32-jr(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=pc++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Br]=t,e[fc]=r,uS(e,t,!1,!1),t.stateNode=e;e:{switch(i=Tp(n,r),n){case"dialog":St("cancel",e),St("close",e),s=r;break;case"iframe":case"object":case"embed":St("load",e),s=r;break;case"video":case"audio":for(s=0;sAa&&(t.flags|=128,r=!0,yl(o,!1),t.lanes=4194304)}else{if(!r)if(e=Wd(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),yl(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Pt)return hn(t),null}else 2*Ut()-o.renderingStartTime>Aa&&n!==1073741824&&(t.flags|=128,r=!0,yl(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Ut(),t.sibling=null,n=Dt.current,bt(Dt,r?n&1|2:n&1),t):(hn(t),null);case 22:case 23:return Wy(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?zn&1073741824&&(hn(t),t.subtreeFlags&6&&(t.flags|=8192)):hn(t),null;case 24:return null;case 25:return null}throw Error(ie(156,t.tag))}function bA(e,t){switch(ky(t),t.tag){case 1:return Dn(t.type)&&Ld(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Pa(),kt(An),kt(gn),Dy(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ay(t),null;case 13:if(kt(Dt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ie(340));Na()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return kt(Dt),null;case 4:return Pa(),null;case 10:return Ny(t.type._context),null;case 22:case 23:return Wy(),null;case 24:return null;default:return null}}var $u=!1,mn=!1,_A=typeof WeakSet=="function"?WeakSet:Set,Ne=null;function ra(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){zt(e,t,r)}else n.current=null}function ng(e,t,n){try{n()}catch(r){zt(e,t,r)}}var iw=!1;function SA(e,t){if(Fp=Dd,e=y_(),_y(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var s=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,a=-1,c=-1,u=0,d=0,f=e,h=null;t:for(;;){for(var m;f!==n||s!==0&&f.nodeType!==3||(a=i+s),f!==o||r!==0&&f.nodeType!==3||(c=i+r),f.nodeType===3&&(i+=f.nodeValue.length),(m=f.firstChild)!==null;)h=f,f=m;for(;;){if(f===e)break t;if(h===n&&++u===s&&(a=i),h===o&&++d===r&&(c=i),(m=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=m}n=a===-1||c===-1?null:{start:a,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for($p={focusedElem:e,selectionRange:n},Dd=!1,Ne=t;Ne!==null;)if(t=Ne,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ne=e;else for(;Ne!==null;){t=Ne;try{var x=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var p=x.memoizedProps,w=x.memoizedState,g=t.stateNode,v=g.getSnapshotBeforeUpdate(t.elementType===t.type?p:yr(t.type,p),w);g.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var b=t.stateNode.containerInfo;b.nodeType===1?b.textContent="":b.nodeType===9&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ie(163))}}catch(_){zt(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,Ne=e;break}Ne=t.return}return x=iw,iw=!1,x}function Gl(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var o=s.destroy;s.destroy=void 0,o!==void 0&&ng(t,n,o)}s=s.next}while(s!==r)}}function Xf(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function rg(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function hS(e){var t=e.alternate;t!==null&&(e.alternate=null,hS(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Br],delete t[fc],delete t[Bp],delete t[oA],delete t[iA])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function mS(e){return e.tag===5||e.tag===3||e.tag===4}function aw(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||mS(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function sg(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Md));else if(r!==4&&(e=e.child,e!==null))for(sg(e,t,n),e=e.sibling;e!==null;)sg(e,t,n),e=e.sibling}function og(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(og(e,t,n),e=e.sibling;e!==null;)og(e,t,n),e=e.sibling}var nn=null,vr=!1;function Qs(e,t,n){for(n=n.child;n!==null;)pS(e,t,n),n=n.sibling}function pS(e,t,n){if(Xr&&typeof Xr.onCommitFiberUnmount=="function")try{Xr.onCommitFiberUnmount(Bf,n)}catch{}switch(n.tag){case 5:mn||ra(n,t);case 6:var r=nn,s=vr;nn=null,Qs(e,t,n),nn=r,vr=s,nn!==null&&(vr?(e=nn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):nn.removeChild(n.stateNode));break;case 18:nn!==null&&(vr?(e=nn,n=n.stateNode,e.nodeType===8?Nm(e.parentNode,n):e.nodeType===1&&Nm(e,n),ac(e)):Nm(nn,n.stateNode));break;case 4:r=nn,s=vr,nn=n.stateNode.containerInfo,vr=!0,Qs(e,t,n),nn=r,vr=s;break;case 0:case 11:case 14:case 15:if(!mn&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){s=r=r.next;do{var o=s,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&ng(n,t,i),s=s.next}while(s!==r)}Qs(e,t,n);break;case 1:if(!mn&&(ra(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){zt(n,t,a)}Qs(e,t,n);break;case 21:Qs(e,t,n);break;case 22:n.mode&1?(mn=(r=mn)||n.memoizedState!==null,Qs(e,t,n),mn=r):Qs(e,t,n);break;default:Qs(e,t,n)}}function lw(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new _A),t.forEach(function(r){var s=AA.bind(null,e,r);n.has(r)||(n.add(r),r.then(s,s))})}}function gr(e,t){var n=t.deletions;if(n!==null)for(var r=0;rs&&(s=i),r&=~o}if(r=s,r=Ut()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*CA(r/1960))-r,10e?16:e,co===null)var r=!1;else{if(e=co,co=null,Zd=0,ct&6)throw Error(ie(331));var s=ct;for(ct|=4,Ne=e.current;Ne!==null;){var o=Ne,i=o.child;if(Ne.flags&16){var a=o.deletions;if(a!==null){for(var c=0;cUt()-Vy?Jo(e,0):Uy|=n),On(e,t)}function SS(e,t){t===0&&(e.mode&1?(t=Ru,Ru<<=1,!(Ru&130023424)&&(Ru=4194304)):t=1);var n=Sn();e=Os(e,t),e!==null&&(Zc(e,t,n),On(e,n))}function RA(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),SS(e,n)}function AA(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(ie(314))}r!==null&&r.delete(t),SS(e,n)}var kS;kS=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||An.current)Rn=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Rn=!1,xA(e,t,n);Rn=!!(e.flags&131072)}else Rn=!1,Pt&&t.flags&1048576&&N_(t,$d,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;fd(e,t),e=t.pendingProps;var s=Ea(t,gn.current);ga(t,n),s=Iy(null,t,r,e,s,n);var o=My();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Dn(r)?(o=!0,zd(t)):o=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Py(t),s.updater=qf,t.stateNode=s,s._reactInternals=t,Zp(t,r,e,n),t=Qp(null,t,r,!0,o,n)):(t.tag=0,Pt&&o&&Sy(t),bn(null,t,s,n),t=t.child),t;case 16:r=t.elementType;e:{switch(fd(e,t),e=t.pendingProps,s=r._init,r=s(r._payload),t.type=r,s=t.tag=OA(r),e=yr(r,e),s){case 0:t=Xp(null,t,r,e,n);break e;case 1:t=rw(null,t,r,e,n);break e;case 11:t=tw(null,t,r,e,n);break e;case 14:t=nw(null,t,r,yr(r.type,e),n);break e}throw Error(ie(306,r,""))}return t;case 0:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:yr(r,s),Xp(e,t,r,s,n);case 1:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:yr(r,s),rw(e,t,r,s,n);case 3:e:{if(aS(t),e===null)throw Error(ie(387));r=t.pendingProps,o=t.memoizedState,s=o.element,O_(e,t),Bd(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){s=Ra(Error(ie(423)),t),t=sw(e,t,r,n,s);break e}else if(r!==s){s=Ra(Error(ie(424)),t),t=sw(e,t,r,n,s);break e}else for(Un=yo(t.stateNode.containerInfo.firstChild),Vn=t,Pt=!0,wr=null,n=A_(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Na(),r===s){t=Is(e,t,n);break e}bn(e,t,r,n)}t=t.child}return t;case 5:return I_(t),e===null&&Yp(t),r=t.type,s=t.pendingProps,o=e!==null?e.memoizedProps:null,i=s.children,Up(r,s)?i=null:o!==null&&Up(r,o)&&(t.flags|=32),iS(e,t),bn(e,t,i,n),t.child;case 6:return e===null&&Yp(t),null;case 13:return lS(e,t,n);case 4:return Ry(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ta(t,null,r,n):bn(e,t,r,n),t.child;case 11:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:yr(r,s),tw(e,t,r,s,n);case 7:return bn(e,t,t.pendingProps,n),t.child;case 8:return bn(e,t,t.pendingProps.children,n),t.child;case 12:return bn(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,s=t.pendingProps,o=t.memoizedProps,i=s.value,bt(Ud,r._currentValue),r._currentValue=i,o!==null)if(Tr(o.value,i)){if(o.children===s.children&&!An.current){t=Is(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){i=o.child;for(var c=a.firstContext;c!==null;){if(c.context===r){if(o.tag===1){c=Es(-1,n&-n),c.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),Kp(o.return,n,t),a.lanes|=n;break}c=c.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(ie(341));i.lanes|=n,a=i.alternate,a!==null&&(a.lanes|=n),Kp(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}bn(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,r=t.pendingProps.children,ga(t,n),s=dr(s),r=r(s),t.flags|=1,bn(e,t,r,n),t.child;case 14:return r=t.type,s=yr(r,t.pendingProps),s=yr(r.type,s),nw(e,t,r,s,n);case 15:return sS(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:yr(r,s),fd(e,t),t.tag=1,Dn(r)?(e=!0,zd(t)):e=!1,ga(t,n),tS(t,r,s),Zp(t,r,s,n),Qp(null,t,r,!0,e,n);case 19:return cS(e,t,n);case 22:return oS(e,t,n)}throw Error(ie(156,t.tag))};function CS(e,t){return Q1(e,t)}function DA(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ir(e,t,n,r){return new DA(e,t,n,r)}function Yy(e){return e=e.prototype,!(!e||!e.isReactComponent)}function OA(e){if(typeof e=="function")return Yy(e)?1:0;if(e!=null){if(e=e.$$typeof,e===dy)return 11;if(e===fy)return 14}return 2}function bo(e,t){var n=e.alternate;return n===null?(n=ir(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function pd(e,t,n,r,s,o){var i=2;if(r=e,typeof e=="function")Yy(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Gi:return ei(n.children,s,o,t);case uy:i=8,s|=8;break;case xp:return e=ir(12,n,t,s|2),e.elementType=xp,e.lanes=o,e;case wp:return e=ir(13,n,t,s),e.elementType=wp,e.lanes=o,e;case bp:return e=ir(19,n,t,s),e.elementType=bp,e.lanes=o,e;case I1:return Jf(n,s,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case D1:i=10;break e;case O1:i=9;break e;case dy:i=11;break e;case fy:i=14;break e;case ro:i=16,r=null;break e}throw Error(ie(130,e==null?e:typeof e,""))}return t=ir(i,n,t,s),t.elementType=e,t.type=r,t.lanes=o,t}function ei(e,t,n,r){return e=ir(7,e,r,t),e.lanes=n,e}function Jf(e,t,n,r){return e=ir(22,e,r,t),e.elementType=I1,e.lanes=n,e.stateNode={isHidden:!1},e}function Mm(e,t,n){return e=ir(6,e,null,t),e.lanes=n,e}function Lm(e,t,n){return t=ir(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function IA(e,t,n,r,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ym(0),this.expirationTimes=ym(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ym(0),this.identifierPrefix=r,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Ky(e,t,n,r,s,o,i,a,c){return e=new IA(e,t,n,a,c),t===1?(t=1,o===!0&&(t|=8)):t=0,o=ir(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Py(o),e}function MA(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(TS)}catch(e){console.error(e)}}TS(),T1.exports=Xn;var Vs=T1.exports;const PS=Uf(Vs),UA=g1({__proto__:null,default:PS},[Vs]);var gw=Vs;yp.createRoot=gw.createRoot,yp.hydrateRoot=gw.hydrateRoot;/** + * @remix-run/router v1.18.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function At(){return At=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function ci(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function BA(){return Math.random().toString(36).substr(2,8)}function vw(e,t){return{usr:e.state,key:e.key,idx:t}}function xc(e,t,n,r){return n===void 0&&(n=null),At({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Bs(t):t,{state:n,key:t&&t.key||r||BA()})}function ui(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Bs(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function WA(e,t,n,r){r===void 0&&(r={});let{window:s=document.defaultView,v5Compat:o=!1}=r,i=s.history,a=Wt.Pop,c=null,u=d();u==null&&(u=0,i.replaceState(At({},i.state,{idx:u}),""));function d(){return(i.state||{idx:null}).idx}function f(){a=Wt.Pop;let w=d(),g=w==null?null:w-u;u=w,c&&c({action:a,location:p.location,delta:g})}function h(w,g){a=Wt.Push;let v=xc(p.location,w,g);n&&n(v,w),u=d()+1;let b=vw(v,u),_=p.createHref(v);try{i.pushState(b,"",_)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;s.location.assign(_)}o&&c&&c({action:a,location:p.location,delta:1})}function m(w,g){a=Wt.Replace;let v=xc(p.location,w,g);n&&n(v,w),u=d();let b=vw(v,u),_=p.createHref(v);i.replaceState(b,"",_),o&&c&&c({action:a,location:p.location,delta:0})}function x(w){let g=s.location.origin!=="null"?s.location.origin:s.location.href,v=typeof w=="string"?w:ui(w);return v=v.replace(/ $/,"%20"),tt(g,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,g)}let p={get action(){return a},get location(){return e(s,i)},listen(w){if(c)throw new Error("A history only accepts one active listener");return s.addEventListener(yw,f),c=w,()=>{s.removeEventListener(yw,f),c=null}},createHref(w){return t(s,w)},createURL:x,encodeLocation(w){let g=x(w);return{pathname:g.pathname,search:g.search,hash:g.hash}},push:h,replace:m,go(w){return i.go(w)}};return p}var wt;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(wt||(wt={}));const HA=new Set(["lazy","caseSensitive","path","id","index","children"]);function YA(e){return e.index===!0}function wc(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((s,o)=>{let i=[...n,String(o)],a=typeof s.id=="string"?s.id:i.join("-");if(tt(s.index!==!0||!s.children,"Cannot specify children on an index route"),tt(!r[a],'Found a route id collision on id "'+a+`". Route id's must be globally unique within Data Router usages`),YA(s)){let c=At({},s,t(s),{id:a});return r[a]=c,c}else{let c=At({},s,t(s),{id:a,children:void 0});return r[a]=c,s.children&&(c.children=wc(s.children,t,i,r)),c}})}function Bo(e,t,n){return n===void 0&&(n="/"),gd(e,t,n,!1)}function gd(e,t,n,r){let s=typeof t=="string"?Bs(t):t,o=Za(s.pathname||"/",n);if(o==null)return null;let i=RS(e);GA(i);let a=null;for(let c=0;a==null&&c{let c={relativePath:a===void 0?o.path||"":a,caseSensitive:o.caseSensitive===!0,childrenIndex:i,route:o};c.relativePath.startsWith("/")&&(tt(c.relativePath.startsWith(r),'Absolute route path "'+c.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),c.relativePath=c.relativePath.slice(r.length));let u=Ns([r,c.relativePath]),d=n.concat(c);o.children&&o.children.length>0&&(tt(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),RS(o.children,t,d,u)),!(o.path==null&&!o.index)&&t.push({path:u,score:tD(u,o.index),routesMeta:d})};return e.forEach((o,i)=>{var a;if(o.path===""||!((a=o.path)!=null&&a.includes("?")))s(o,i);else for(let c of AS(o.path))s(o,i,c)}),t}function AS(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,s=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return s?[o,""]:[o];let i=AS(r.join("/")),a=[];return a.push(...i.map(c=>c===""?o:[o,c].join("/"))),s&&a.push(...i),a.map(c=>e.startsWith("/")&&c===""?"/":c)}function GA(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:nD(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const ZA=/^:[\w-]+$/,qA=3,XA=2,QA=1,JA=10,eD=-2,xw=e=>e==="*";function tD(e,t){let n=e.split("/"),r=n.length;return n.some(xw)&&(r+=eD),t&&(r+=XA),n.filter(s=>!xw(s)).reduce((s,o)=>s+(ZA.test(o)?qA:o===""?QA:JA),r)}function nD(e,t){return e.length===t.length&&e.slice(0,-1).every((r,s)=>r===t[s])?e[e.length-1]-t[t.length-1]:0}function rD(e,t,n){n===void 0&&(n=!1);let{routesMeta:r}=e,s={},o="/",i=[];for(let a=0;a{let{paramName:h,isOptional:m}=d;if(h==="*"){let p=a[f]||"";i=o.slice(0,o.length-p.length).replace(/(.)\/+$/,"$1")}const x=a[f];return m&&!x?u[h]=void 0:u[h]=(x||"").replace(/%2F/g,"/"),u},{}),pathname:o,pathnameBase:i,pattern:e}}function sD(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),ci(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,a,c)=>(r.push({paramName:a,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),r]}function oD(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ci(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Za(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function iD(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:s=""}=typeof e=="string"?Bs(e):e;return{pathname:n?n.startsWith("/")?n:aD(n,t):t,search:cD(r),hash:uD(s)}}function aD(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function zm(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function DS(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function sh(e,t){let n=DS(e);return t?n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function oh(e,t,n,r){r===void 0&&(r=!1);let s;typeof e=="string"?s=Bs(e):(s=At({},e),tt(!s.pathname||!s.pathname.includes("?"),zm("?","pathname","search",s)),tt(!s.pathname||!s.pathname.includes("#"),zm("#","pathname","hash",s)),tt(!s.search||!s.search.includes("#"),zm("#","search","hash",s)));let o=e===""||s.pathname==="",i=o?"/":s.pathname,a;if(i==null)a=n;else{let f=t.length-1;if(!r&&i.startsWith("..")){let h=i.split("/");for(;h[0]==="..";)h.shift(),f-=1;s.pathname=h.join("/")}a=f>=0?t[f]:"/"}let c=iD(s,a),u=i&&i!=="/"&&i.endsWith("/"),d=(o||i===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(u||d)&&(c.pathname+="/"),c}const Ns=e=>e.join("/").replace(/\/\/+/g,"/"),lD=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),cD=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,uD=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Xy{constructor(t,n,r,s){s===void 0&&(s=!1),this.status=t,this.statusText=n||"",this.internal=s,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function ih(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const OS=["post","put","patch","delete"],dD=new Set(OS),fD=["get",...OS],hD=new Set(fD),mD=new Set([301,302,303,307,308]),pD=new Set([307,308]),Fm={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},gD={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},xl={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Qy=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,yD=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),IS="remix-router-transitions";function vD(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;tt(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let s;if(e.mapRouteProperties)s=e.mapRouteProperties;else if(e.detectErrorBoundary){let V=e.detectErrorBoundary;s=H=>({hasErrorBoundary:V(H)})}else s=yD;let o={},i=wc(e.routes,s,void 0,o),a,c=e.basename||"/",u=e.unstable_dataStrategy||SD,d=e.unstable_patchRoutesOnMiss,f=At({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),h=null,m=new Set,x=null,p=null,w=null,g=e.hydrationData!=null,v=Bo(i,e.history.location,c),b=null;if(v==null&&!d){let V=xn(404,{pathname:e.history.location.pathname}),{matches:H,route:q}=Pw(i);v=H,b={[q.id]:V}}v&&d&&!e.hydrationData&&dm(v,i,e.history.location.pathname).active&&(v=null);let _;if(!v)_=!1,v=[];else if(v.some(V=>V.route.lazy))_=!1;else if(!v.some(V=>V.route.loader))_=!0;else if(f.v7_partialHydration){let V=e.hydrationData?e.hydrationData.loaderData:null,H=e.hydrationData?e.hydrationData.errors:null,q=ne=>ne.route.loader?typeof ne.route.loader=="function"&&ne.route.loader.hydrate===!0?!1:V&&V[ne.route.id]!==void 0||H&&H[ne.route.id]!==void 0:!0;if(H){let ne=v.findIndex(be=>H[be.route.id]!==void 0);_=v.slice(0,ne+1).every(q)}else _=v.every(q)}else _=e.hydrationData!=null;let C,j={historyAction:e.history.action,location:e.history.location,matches:v,initialized:_,navigation:Fm,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},T=Wt.Pop,R=!1,A,O=!1,G=new Map,N=null,z=!1,S=!1,U=[],J=[],F=new Map,W=0,I=-1,X=new Map,$=new Set,B=new Map,he=new Map,se=new Set,oe=new Map,Oe=new Map,me=new Map,we=!1;function Te(){if(h=e.history.listen(V=>{let{action:H,location:q,delta:ne}=V;if(we){we=!1;return}ci(Oe.size===0||ne!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let be=wu({currentLocation:j.location,nextLocation:q,historyAction:H});if(be&&ne!=null){we=!0,e.history.go(ne*-1),Ri(be,{state:"blocked",location:q,proceed(){Ri(be,{state:"proceeding",proceed:void 0,reset:void 0,location:q}),e.history.go(ne)},reset(){let Ae=new Map(j.blockers);Ae.set(be,xl),Re({blockers:Ae})}});return}return Z(H,q)}),n){MD(t,G);let V=()=>LD(t,G);t.addEventListener("pagehide",V),N=()=>t.removeEventListener("pagehide",V)}return j.initialized||Z(Wt.Pop,j.location,{initialHydration:!0}),C}function Fe(){h&&h(),N&&N(),m.clear(),A&&A.abort(),j.fetchers.forEach((V,H)=>Yt(H)),j.blockers.forEach((V,H)=>xu(H))}function Ie(V){return m.add(V),()=>m.delete(V)}function Re(V,H){H===void 0&&(H={}),j=At({},j,V);let q=[],ne=[];f.v7_fetcherPersist&&j.fetchers.forEach((be,Ae)=>{be.state==="idle"&&(se.has(Ae)?ne.push(Ae):q.push(Ae))}),[...m].forEach(be=>be(j,{deletedFetchers:ne,unstable_viewTransitionOpts:H.viewTransitionOpts,unstable_flushSync:H.flushSync===!0})),f.v7_fetcherPersist&&(q.forEach(be=>j.fetchers.delete(be)),ne.forEach(be=>Yt(be)))}function st(V,H,q){var ne,be;let{flushSync:Ae}=q===void 0?{}:q,Be=j.actionData!=null&&j.navigation.formMethod!=null&&xr(j.navigation.formMethod)&&j.navigation.state==="loading"&&((ne=V.state)==null?void 0:ne._isRedirect)!==!0,fe;H.actionData?Object.keys(H.actionData).length>0?fe=H.actionData:fe=null:Be?fe=j.actionData:fe=null;let qe=H.loaderData?Nw(j.loaderData,H.loaderData,H.matches||[],H.errors):j.loaderData,ze=j.blockers;ze.size>0&&(ze=new Map(ze),ze.forEach((pt,xt)=>ze.set(xt,xl)));let $e=R===!0||j.navigation.formMethod!=null&&xr(j.navigation.formMethod)&&((be=V.state)==null?void 0:be._isRedirect)!==!0;a&&(i=a,a=void 0),z||T===Wt.Pop||(T===Wt.Push?e.history.push(V,V.state):T===Wt.Replace&&e.history.replace(V,V.state));let yt;if(T===Wt.Pop){let pt=G.get(j.location.pathname);pt&&pt.has(V.pathname)?yt={currentLocation:j.location,nextLocation:V}:G.has(V.pathname)&&(yt={currentLocation:V,nextLocation:j.location})}else if(O){let pt=G.get(j.location.pathname);pt?pt.add(V.pathname):(pt=new Set([V.pathname]),G.set(j.location.pathname,pt)),yt={currentLocation:j.location,nextLocation:V}}Re(At({},H,{actionData:fe,loaderData:qe,historyAction:T,location:V,initialized:!0,navigation:Fm,revalidation:"idle",restoreScrollPosition:i0(V,H.matches||j.matches),preventScrollReset:$e,blockers:ze}),{viewTransitionOpts:yt,flushSync:Ae===!0}),T=Wt.Pop,R=!1,O=!1,z=!1,S=!1,U=[],J=[]}async function E(V,H){if(typeof V=="number"){e.history.go(V);return}let q=ug(j.location,j.matches,c,f.v7_prependBasename,V,f.v7_relativeSplatPath,H==null?void 0:H.fromRouteId,H==null?void 0:H.relative),{path:ne,submission:be,error:Ae}=bw(f.v7_normalizeFormMethod,!1,q,H),Be=j.location,fe=xc(j.location,ne,H&&H.state);fe=At({},fe,e.history.encodeLocation(fe));let qe=H&&H.replace!=null?H.replace:void 0,ze=Wt.Push;qe===!0?ze=Wt.Replace:qe===!1||be!=null&&xr(be.formMethod)&&be.formAction===j.location.pathname+j.location.search&&(ze=Wt.Replace);let $e=H&&"preventScrollReset"in H?H.preventScrollReset===!0:void 0,yt=(H&&H.unstable_flushSync)===!0,pt=wu({currentLocation:Be,nextLocation:fe,historyAction:ze});if(pt){Ri(pt,{state:"blocked",location:fe,proceed(){Ri(pt,{state:"proceeding",proceed:void 0,reset:void 0,location:fe}),E(V,H)},reset(){let xt=new Map(j.blockers);xt.set(pt,xl),Re({blockers:xt})}});return}return await Z(ze,fe,{submission:be,pendingError:Ae,preventScrollReset:$e,replace:H&&H.replace,enableViewTransition:H&&H.unstable_viewTransition,flushSync:yt})}function ee(){if(Ke(),Re({revalidation:"loading"}),j.navigation.state!=="submitting"){if(j.navigation.state==="idle"){Z(j.historyAction,j.location,{startUninterruptedRevalidation:!0});return}Z(T||j.historyAction,j.navigation.location,{overrideNavigation:j.navigation})}}async function Z(V,H,q){A&&A.abort(),A=null,T=V,z=(q&&q.startUninterruptedRevalidation)===!0,dP(j.location,j.matches),R=(q&&q.preventScrollReset)===!0,O=(q&&q.enableViewTransition)===!0;let ne=a||i,be=q&&q.overrideNavigation,Ae=Bo(ne,H,c),Be=(q&&q.flushSync)===!0,fe=dm(Ae,ne,H.pathname);if(fe.active&&fe.matches&&(Ae=fe.matches),!Ae){let{error:ht,notFoundMatches:tn,route:Bt}=Ai(H.pathname);st(H,{matches:tn,loaderData:{},errors:{[Bt.id]:ht}},{flushSync:Be});return}if(j.initialized&&!S&&TD(j.location,H)&&!(q&&q.submission&&xr(q.submission.formMethod))){st(H,{matches:Ae},{flushSync:Be});return}A=new AbortController;let qe=Li(e.history,H,A.signal,q&&q.submission),ze;if(q&&q.pendingError)ze=[oa(Ae).route.id,{type:wt.error,error:q.pendingError}];else if(q&&q.submission&&xr(q.submission.formMethod)){let ht=await D(qe,H,q.submission,Ae,fe.active,{replace:q.replace,flushSync:Be});if(ht.shortCircuited)return;if(ht.pendingActionResult){let[tn,Bt]=ht.pendingActionResult;if(Fn(Bt)&&ih(Bt.error)&&Bt.error.status===404){A=null,st(H,{matches:ht.matches,loaderData:{},errors:{[tn]:Bt.error}});return}}Ae=ht.matches||Ae,ze=ht.pendingActionResult,be=$m(H,q.submission),Be=!1,fe.active=!1,qe=Li(e.history,qe.url,qe.signal)}let{shortCircuited:$e,matches:yt,loaderData:pt,errors:xt}=await k(qe,H,Ae,fe.active,be,q&&q.submission,q&&q.fetcherSubmission,q&&q.replace,q&&q.initialHydration===!0,Be,ze);$e||(A=null,st(H,At({matches:yt||Ae},Tw(ze),{loaderData:pt,errors:xt})))}async function D(V,H,q,ne,be,Ae){Ae===void 0&&(Ae={}),Ke();let Be=OD(H,q);if(Re({navigation:Be},{flushSync:Ae.flushSync===!0}),be){let ze=await bu(ne,H.pathname,V.signal);if(ze.type==="aborted")return{shortCircuited:!0};if(ze.type==="error"){let{boundaryId:$e,error:yt}=Fr(H.pathname,ze);return{matches:ze.partialMatches,pendingActionResult:[$e,{type:wt.error,error:yt}]}}else if(ze.matches)ne=ze.matches;else{let{notFoundMatches:$e,error:yt,route:pt}=Ai(H.pathname);return{matches:$e,pendingActionResult:[pt.id,{type:wt.error,error:yt}]}}}let fe,qe=Ol(ne,H);if(!qe.route.action&&!qe.route.lazy)fe={type:wt.error,error:xn(405,{method:V.method,pathname:H.pathname,routeId:qe.route.id})};else if(fe=(await te("action",V,[qe],ne))[0],V.signal.aborted)return{shortCircuited:!0};if(Go(fe)){let ze;return Ae&&Ae.replace!=null?ze=Ae.replace:ze=Cw(fe.response.headers.get("Location"),new URL(V.url),c)===j.location.pathname+j.location.search,await Q(V,fe,{submission:q,replace:ze}),{shortCircuited:!0}}if(Ko(fe))throw xn(400,{type:"defer-action"});if(Fn(fe)){let ze=oa(ne,qe.route.id);return(Ae&&Ae.replace)!==!0&&(T=Wt.Push),{matches:ne,pendingActionResult:[ze.route.id,fe]}}return{matches:ne,pendingActionResult:[qe.route.id,fe]}}async function k(V,H,q,ne,be,Ae,Be,fe,qe,ze,$e){let yt=be||$m(H,Ae),pt=Ae||Be||Dw(yt),xt=!z&&(!f.v7_partialHydration||!qe);if(ne){if(xt){let Lt=P($e);Re(At({navigation:yt},Lt!==void 0?{actionData:Lt}:{}),{flushSync:ze})}let Je=await bu(q,H.pathname,V.signal);if(Je.type==="aborted")return{shortCircuited:!0};if(Je.type==="error"){let{boundaryId:Lt,error:In}=Fr(H.pathname,Je);return{matches:Je.partialMatches,loaderData:{},errors:{[Lt]:In}}}else if(Je.matches)q=Je.matches;else{let{error:Lt,notFoundMatches:In,route:Nt}=Ai(H.pathname);return{matches:In,loaderData:{},errors:{[Nt.id]:Lt}}}}let ht=a||i,[tn,Bt]=_w(e.history,j,q,pt,H,f.v7_partialHydration&&qe===!0,f.v7_skipActionErrorRevalidation,S,U,J,se,B,$,ht,c,$e);if(qs(Je=>!(q&&q.some(Lt=>Lt.route.id===Je))||tn&&tn.some(Lt=>Lt.route.id===Je)),I=++W,tn.length===0&&Bt.length===0){let Je=hs();return st(H,At({matches:q,loaderData:{},errors:$e&&Fn($e[1])?{[$e[0]]:$e[1].error}:null},Tw($e),Je?{fetchers:new Map(j.fetchers)}:{}),{flushSync:ze}),{shortCircuited:!0}}if(xt){let Je={};if(!ne){Je.navigation=yt;let Lt=P($e);Lt!==void 0&&(Je.actionData=Lt)}Bt.length>0&&(Je.fetchers=M(Bt)),Re(Je,{flushSync:ze})}Bt.forEach(Je=>{F.has(Je.key)&<(Je.key),Je.controller&&F.set(Je.key,Je.controller)});let ul=()=>Bt.forEach(Je=>lt(Je.key));A&&A.signal.addEventListener("abort",ul);let{loaderResults:Xs,fetcherResults:Di}=await ge(j.matches,q,tn,Bt,V);if(V.signal.aborted)return{shortCircuited:!0};A&&A.signal.removeEventListener("abort",ul),Bt.forEach(Je=>F.delete(Je.key));let Oi=Rw([...Xs,...Di]);if(Oi){if(Oi.idx>=tn.length){let Je=Bt[Oi.idx-tn.length].key;$.add(Je)}return await Q(V,Oi.result,{replace:fe}),{shortCircuited:!0}}let{loaderData:Ii,errors:$r}=Ew(j,q,tn,Xs,$e,Bt,Di,oe);oe.forEach((Je,Lt)=>{Je.subscribe(In=>{(In||Je.done)&&oe.delete(Lt)})}),f.v7_partialHydration&&qe&&j.errors&&Object.entries(j.errors).filter(Je=>{let[Lt]=Je;return!tn.some(In=>In.route.id===Lt)}).forEach(Je=>{let[Lt,In]=Je;$r=Object.assign($r||{},{[Lt]:In})});let _u=hs(),Su=nr(I),ku=_u||Su||Bt.length>0;return At({matches:q,loaderData:Ii,errors:$r},ku?{fetchers:new Map(j.fetchers)}:{})}function P(V){if(V&&!Fn(V[1]))return{[V[0]]:V[1].data};if(j.actionData)return Object.keys(j.actionData).length===0?null:j.actionData}function M(V){return V.forEach(H=>{let q=j.fetchers.get(H.key),ne=wl(void 0,q?q.data:void 0);j.fetchers.set(H.key,ne)}),new Map(j.fetchers)}function K(V,H,q,ne){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");F.has(V)&<(V);let be=(ne&&ne.unstable_flushSync)===!0,Ae=a||i,Be=ug(j.location,j.matches,c,f.v7_prependBasename,q,f.v7_relativeSplatPath,H,ne==null?void 0:ne.relative),fe=Bo(Ae,Be,c),qe=dm(fe,Ae,Be);if(qe.active&&qe.matches&&(fe=qe.matches),!fe){Et(V,H,xn(404,{pathname:Be}),{flushSync:be});return}let{path:ze,submission:$e,error:yt}=bw(f.v7_normalizeFormMethod,!0,Be,ne);if(yt){Et(V,H,yt,{flushSync:be});return}let pt=Ol(fe,ze);if(R=(ne&&ne.preventScrollReset)===!0,$e&&xr($e.formMethod)){L(V,H,ze,pt,fe,qe.active,be,$e);return}B.set(V,{routeId:H,path:ze}),Y(V,H,ze,pt,fe,qe.active,be,$e)}async function L(V,H,q,ne,be,Ae,Be,fe){Ke(),B.delete(V);function qe(Nt){if(!Nt.route.action&&!Nt.route.lazy){let ms=xn(405,{method:fe.formMethod,pathname:q,routeId:H});return Et(V,H,ms,{flushSync:Be}),!0}return!1}if(!Ae&&qe(ne))return;let ze=j.fetchers.get(V);Ue(V,ID(fe,ze),{flushSync:Be});let $e=new AbortController,yt=Li(e.history,q,$e.signal,fe);if(Ae){let Nt=await bu(be,q,yt.signal);if(Nt.type==="aborted")return;if(Nt.type==="error"){let{error:ms}=Fr(q,Nt);Et(V,H,ms,{flushSync:Be});return}else if(Nt.matches){if(be=Nt.matches,ne=Ol(be,q),qe(ne))return}else{Et(V,H,xn(404,{pathname:q}),{flushSync:Be});return}}F.set(V,$e);let pt=W,ht=(await te("action",yt,[ne],be))[0];if(yt.signal.aborted){F.get(V)===$e&&F.delete(V);return}if(f.v7_fetcherPersist&&se.has(V)){if(Go(ht)||Fn(ht)){Ue(V,to(void 0));return}}else{if(Go(ht))if(F.delete(V),I>pt){Ue(V,to(void 0));return}else return $.add(V),Ue(V,wl(fe)),Q(yt,ht,{fetcherSubmission:fe});if(Fn(ht)){Et(V,H,ht.error);return}}if(Ko(ht))throw xn(400,{type:"defer-action"});let tn=j.navigation.location||j.location,Bt=Li(e.history,tn,$e.signal),ul=a||i,Xs=j.navigation.state!=="idle"?Bo(ul,j.navigation.location,c):j.matches;tt(Xs,"Didn't find any matches after fetcher action");let Di=++W;X.set(V,Di);let Oi=wl(fe,ht.data);j.fetchers.set(V,Oi);let[Ii,$r]=_w(e.history,j,Xs,fe,tn,!1,f.v7_skipActionErrorRevalidation,S,U,J,se,B,$,ul,c,[ne.route.id,ht]);$r.filter(Nt=>Nt.key!==V).forEach(Nt=>{let ms=Nt.key,a0=j.fetchers.get(ms),mP=wl(void 0,a0?a0.data:void 0);j.fetchers.set(ms,mP),F.has(ms)&<(ms),Nt.controller&&F.set(ms,Nt.controller)}),Re({fetchers:new Map(j.fetchers)});let _u=()=>$r.forEach(Nt=>lt(Nt.key));$e.signal.addEventListener("abort",_u);let{loaderResults:Su,fetcherResults:ku}=await ge(j.matches,Xs,Ii,$r,Bt);if($e.signal.aborted)return;$e.signal.removeEventListener("abort",_u),X.delete(V),F.delete(V),$r.forEach(Nt=>F.delete(Nt.key));let Je=Rw([...Su,...ku]);if(Je){if(Je.idx>=Ii.length){let Nt=$r[Je.idx-Ii.length].key;$.add(Nt)}return Q(Bt,Je.result)}let{loaderData:Lt,errors:In}=Ew(j,j.matches,Ii,Su,void 0,$r,ku,oe);if(j.fetchers.has(V)){let Nt=to(ht.data);j.fetchers.set(V,Nt)}nr(Di),j.navigation.state==="loading"&&Di>I?(tt(T,"Expected pending action"),A&&A.abort(),st(j.navigation.location,{matches:Xs,loaderData:Lt,errors:In,fetchers:new Map(j.fetchers)})):(Re({errors:In,loaderData:Nw(j.loaderData,Lt,Xs,In),fetchers:new Map(j.fetchers)}),S=!1)}async function Y(V,H,q,ne,be,Ae,Be,fe){let qe=j.fetchers.get(V);Ue(V,wl(fe,qe?qe.data:void 0),{flushSync:Be});let ze=new AbortController,$e=Li(e.history,q,ze.signal);if(Ae){let ht=await bu(be,q,$e.signal);if(ht.type==="aborted")return;if(ht.type==="error"){let{error:tn}=Fr(q,ht);Et(V,H,tn,{flushSync:Be});return}else if(ht.matches)be=ht.matches,ne=Ol(be,q);else{Et(V,H,xn(404,{pathname:q}),{flushSync:Be});return}}F.set(V,ze);let yt=W,xt=(await te("loader",$e,[ne],be))[0];if(Ko(xt)&&(xt=await $S(xt,$e.signal,!0)||xt),F.get(V)===ze&&F.delete(V),!$e.signal.aborted){if(se.has(V)){Ue(V,to(void 0));return}if(Go(xt))if(I>yt){Ue(V,to(void 0));return}else{$.add(V),await Q($e,xt);return}if(Fn(xt)){Et(V,H,xt.error);return}tt(!Ko(xt),"Unhandled fetcher deferred data"),Ue(V,to(xt.data))}}async function Q(V,H,q){let{submission:ne,fetcherSubmission:be,replace:Ae}=q===void 0?{}:q;H.response.headers.has("X-Remix-Revalidate")&&(S=!0);let Be=H.response.headers.get("Location");tt(Be,"Expected a Location header on the redirect Response"),Be=Cw(Be,new URL(V.url),c);let fe=xc(j.location,Be,{_isRedirect:!0});if(n){let xt=!1;if(H.response.headers.has("X-Remix-Reload-Document"))xt=!0;else if(Qy.test(Be)){const ht=e.history.createURL(Be);xt=ht.origin!==t.location.origin||Za(ht.pathname,c)==null}if(xt){Ae?t.location.replace(Be):t.location.assign(Be);return}}A=null;let qe=Ae===!0?Wt.Replace:Wt.Push,{formMethod:ze,formAction:$e,formEncType:yt}=j.navigation;!ne&&!be&&ze&&$e&&yt&&(ne=Dw(j.navigation));let pt=ne||be;if(pD.has(H.response.status)&&pt&&xr(pt.formMethod))await Z(qe,fe,{submission:At({},pt,{formAction:Be}),preventScrollReset:R});else{let xt=$m(fe,ne);await Z(qe,fe,{overrideNavigation:xt,fetcherSubmission:be,preventScrollReset:R})}}async function te(V,H,q,ne){try{let be=await kD(u,V,H,q,ne,o,s);return await Promise.all(be.map((Ae,Be)=>{if(RD(Ae)){let fe=Ae.result;return{type:wt.redirect,response:ED(fe,H,q[Be].route.id,ne,c,f.v7_relativeSplatPath)}}return jD(Ae)}))}catch(be){return q.map(()=>({type:wt.error,error:be}))}}async function ge(V,H,q,ne,be){let[Ae,...Be]=await Promise.all([q.length?te("loader",be,q,H):[],...ne.map(fe=>{if(fe.matches&&fe.match&&fe.controller){let qe=Li(e.history,fe.path,fe.controller.signal);return te("loader",qe,[fe.match],fe.matches).then(ze=>ze[0])}else return Promise.resolve({type:wt.error,error:xn(404,{pathname:fe.path})})})]);return await Promise.all([Aw(V,q,Ae,Ae.map(()=>be.signal),!1,j.loaderData),Aw(V,ne.map(fe=>fe.match),Be,ne.map(fe=>fe.controller?fe.controller.signal:null),!0)]),{loaderResults:Ae,fetcherResults:Be}}function Ke(){S=!0,U.push(...qs()),B.forEach((V,H)=>{F.has(H)&&(J.push(H),lt(H))})}function Ue(V,H,q){q===void 0&&(q={}),j.fetchers.set(V,H),Re({fetchers:new Map(j.fetchers)},{flushSync:(q&&q.flushSync)===!0})}function Et(V,H,q,ne){ne===void 0&&(ne={});let be=oa(j.matches,H);Yt(V),Re({errors:{[be.route.id]:q},fetchers:new Map(j.fetchers)},{flushSync:(ne&&ne.flushSync)===!0})}function tr(V){return f.v7_fetcherPersist&&(he.set(V,(he.get(V)||0)+1),se.has(V)&&se.delete(V)),j.fetchers.get(V)||gD}function Yt(V){let H=j.fetchers.get(V);F.has(V)&&!(H&&H.state==="loading"&&X.has(V))&<(V),B.delete(V),X.delete(V),$.delete(V),se.delete(V),j.fetchers.delete(V)}function ds(V){if(f.v7_fetcherPersist){let H=(he.get(V)||0)-1;H<=0?(he.delete(V),se.add(V)):he.set(V,H)}else Yt(V);Re({fetchers:new Map(j.fetchers)})}function lt(V){let H=F.get(V);tt(H,"Expected fetch controller: "+V),H.abort(),F.delete(V)}function fs(V){for(let H of V){let q=tr(H),ne=to(q.data);j.fetchers.set(H,ne)}}function hs(){let V=[],H=!1;for(let q of $){let ne=j.fetchers.get(q);tt(ne,"Expected fetcher: "+q),ne.state==="loading"&&($.delete(q),V.push(q),H=!0)}return fs(V),H}function nr(V){let H=[];for(let[q,ne]of X)if(ne0}function vu(V,H){let q=j.blockers.get(V)||xl;return Oe.get(V)!==H&&Oe.set(V,H),q}function xu(V){j.blockers.delete(V),Oe.delete(V)}function Ri(V,H){let q=j.blockers.get(V)||xl;tt(q.state==="unblocked"&&H.state==="blocked"||q.state==="blocked"&&H.state==="blocked"||q.state==="blocked"&&H.state==="proceeding"||q.state==="blocked"&&H.state==="unblocked"||q.state==="proceeding"&&H.state==="unblocked","Invalid blocker state transition: "+q.state+" -> "+H.state);let ne=new Map(j.blockers);ne.set(V,H),Re({blockers:ne})}function wu(V){let{currentLocation:H,nextLocation:q,historyAction:ne}=V;if(Oe.size===0)return;Oe.size>1&&ci(!1,"A router only supports one blocker at a time");let be=Array.from(Oe.entries()),[Ae,Be]=be[be.length-1],fe=j.blockers.get(Ae);if(!(fe&&fe.state==="proceeding")&&Be({currentLocation:H,nextLocation:q,historyAction:ne}))return Ae}function Ai(V){let H=xn(404,{pathname:V}),q=a||i,{matches:ne,route:be}=Pw(q);return qs(),{notFoundMatches:ne,route:be,error:H}}function Fr(V,H){return{boundaryId:oa(H.partialMatches).route.id,error:xn(400,{type:"route-discovery",pathname:V,message:H.error!=null&&"message"in H.error?H.error:String(H.error)})}}function qs(V){let H=[];return oe.forEach((q,ne)=>{(!V||V(ne))&&(q.cancel(),H.push(ne),oe.delete(ne))}),H}function uP(V,H,q){if(x=V,w=H,p=q||null,!g&&j.navigation===Fm){g=!0;let ne=i0(j.location,j.matches);ne!=null&&Re({restoreScrollPosition:ne})}return()=>{x=null,w=null,p=null}}function o0(V,H){return p&&p(V,H.map(ne=>KA(ne,j.loaderData)))||V.key}function dP(V,H){if(x&&w){let q=o0(V,H);x[q]=w()}}function i0(V,H){if(x){let q=o0(V,H),ne=x[q];if(typeof ne=="number")return ne}return null}function dm(V,H,q){if(d)if(V){let ne=V[V.length-1].route;if(ne.path&&(ne.path==="*"||ne.path.endsWith("/*")))return{active:!0,matches:gd(H,q,c,!0)}}else return{active:!0,matches:gd(H,q,c,!0)||[]};return{active:!1,matches:null}}async function bu(V,H,q){let ne=V,be=ne.length>0?ne[ne.length-1].route:null;for(;;){let Ae=a==null,Be=a||i;try{await _D(d,H,ne,Be,o,s,me,q)}catch($e){return{type:"error",error:$e,partialMatches:ne}}finally{Ae&&(i=[...i])}if(q.aborted)return{type:"aborted"};let fe=Bo(Be,H,c),qe=!1;if(fe){let $e=fe[fe.length-1].route;if($e.index)return{type:"success",matches:fe};if($e.path&&$e.path.length>0)if($e.path==="*")qe=!0;else return{type:"success",matches:fe}}let ze=gd(Be,H,c,!0);if(!ze||ne.map($e=>$e.route.id).join("-")===ze.map($e=>$e.route.id).join("-"))return{type:"success",matches:qe?fe:null};if(ne=ze,be=ne[ne.length-1].route,be.path==="*")return{type:"success",matches:ne}}}function fP(V){o={},a=wc(V,s,void 0,o)}function hP(V,H){let q=a==null;LS(V,H,a||i,o,s),q&&(i=[...i],Re({}))}return C={get basename(){return c},get future(){return f},get state(){return j},get routes(){return i},get window(){return t},initialize:Te,subscribe:Ie,enableScrollRestoration:uP,navigate:E,fetch:K,revalidate:ee,createHref:V=>e.history.createHref(V),encodeLocation:V=>e.history.encodeLocation(V),getFetcher:tr,deleteFetcher:ds,dispose:Fe,getBlocker:vu,deleteBlocker:xu,patchRoutes:hP,_internalFetchControllers:F,_internalActiveDeferreds:oe,_internalSetRoutes:fP},C}function xD(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function ug(e,t,n,r,s,o,i,a){let c,u;if(i){c=[];for(let f of t)if(c.push(f),f.route.id===i){u=f;break}}else c=t,u=t[t.length-1];let d=oh(s||".",sh(c,o),Za(e.pathname,n)||e.pathname,a==="path");return s==null&&(d.search=e.search,d.hash=e.hash),(s==null||s===""||s===".")&&u&&u.route.index&&!Jy(d.search)&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(d.pathname=d.pathname==="/"?n:Ns([n,d.pathname])),ui(d)}function bw(e,t,n,r){if(!r||!xD(r))return{path:n};if(r.formMethod&&!DD(r.formMethod))return{path:n,error:xn(405,{method:r.formMethod})};let s=()=>({path:n,error:xn(400,{type:"invalid-body"})}),o=r.formMethod||"get",i=e?o.toUpperCase():o.toLowerCase(),a=zS(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!xr(i))return s();let h=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((m,x)=>{let[p,w]=x;return""+m+p+"="+w+` +`},""):String(r.body);return{path:n,submission:{formMethod:i,formAction:a,formEncType:r.formEncType,formData:void 0,json:void 0,text:h}}}else if(r.formEncType==="application/json"){if(!xr(i))return s();try{let h=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:i,formAction:a,formEncType:r.formEncType,formData:void 0,json:h,text:void 0}}}catch{return s()}}}tt(typeof FormData=="function","FormData is not available in this environment");let c,u;if(r.formData)c=dg(r.formData),u=r.formData;else if(r.body instanceof FormData)c=dg(r.body),u=r.body;else if(r.body instanceof URLSearchParams)c=r.body,u=jw(c);else if(r.body==null)c=new URLSearchParams,u=new FormData;else try{c=new URLSearchParams(r.body),u=jw(c)}catch{return s()}let d={formMethod:i,formAction:a,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:u,json:void 0,text:void 0};if(xr(d.formMethod))return{path:n,submission:d};let f=Bs(n);return t&&f.search&&Jy(f.search)&&c.append("index",""),f.search="?"+c,{path:ui(f),submission:d}}function wD(e,t){let n=e;if(t){let r=e.findIndex(s=>s.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function _w(e,t,n,r,s,o,i,a,c,u,d,f,h,m,x,p){let w=p?Fn(p[1])?p[1].error:p[1].data:void 0,g=e.createURL(t.location),v=e.createURL(s),b=p&&Fn(p[1])?p[0]:void 0,_=b?wD(n,b):n,C=p?p[1].statusCode:void 0,j=i&&C&&C>=400,T=_.filter((A,O)=>{let{route:G}=A;if(G.lazy)return!0;if(G.loader==null)return!1;if(o)return typeof G.loader!="function"||G.loader.hydrate?!0:t.loaderData[G.id]===void 0&&(!t.errors||t.errors[G.id]===void 0);if(bD(t.loaderData,t.matches[O],A)||c.some(S=>S===A.route.id))return!0;let N=t.matches[O],z=A;return Sw(A,At({currentUrl:g,currentParams:N.params,nextUrl:v,nextParams:z.params},r,{actionResult:w,actionStatus:C,defaultShouldRevalidate:j?!1:a||g.pathname+g.search===v.pathname+v.search||g.search!==v.search||MS(N,z)}))}),R=[];return f.forEach((A,O)=>{if(o||!n.some(U=>U.route.id===A.routeId)||d.has(O))return;let G=Bo(m,A.path,x);if(!G){R.push({key:O,routeId:A.routeId,path:A.path,matches:null,match:null,controller:null});return}let N=t.fetchers.get(O),z=Ol(G,A.path),S=!1;h.has(O)?S=!1:u.includes(O)?S=!0:N&&N.state!=="idle"&&N.data===void 0?S=a:S=Sw(z,At({currentUrl:g,currentParams:t.matches[t.matches.length-1].params,nextUrl:v,nextParams:n[n.length-1].params},r,{actionResult:w,actionStatus:C,defaultShouldRevalidate:j?!1:a})),S&&R.push({key:O,routeId:A.routeId,path:A.path,matches:G,match:z,controller:new AbortController})}),[T,R]}function bD(e,t,n){let r=!t||n.route.id!==t.route.id,s=e[n.route.id]===void 0;return r||s}function MS(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Sw(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function _D(e,t,n,r,s,o,i,a){let c=[t,...n.map(u=>u.route.id)].join("-");try{let u=i.get(c);u||(u=e({path:t,matches:n,patch:(d,f)=>{a.aborted||LS(d,f,r,s,o)}}),i.set(c,u)),u&&PD(u)&&await u}finally{i.delete(c)}}function LS(e,t,n,r,s){if(e){var o;let i=r[e];tt(i,"No route found to patch children into: routeId = "+e);let a=wc(t,s,[e,"patch",String(((o=i.children)==null?void 0:o.length)||"0")],r);i.children?i.children.push(...a):i.children=a}else{let i=wc(t,s,["patch",String(n.length||"0")],r);n.push(...i)}}async function kw(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let s=n[e.id];tt(s,"No route found in manifest");let o={};for(let i in r){let c=s[i]!==void 0&&i!=="hasErrorBoundary";ci(!c,'Route "'+s.id+'" has a static property "'+i+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+i+'" will be ignored.')),!c&&!HA.has(i)&&(o[i]=r[i])}Object.assign(s,o),Object.assign(s,At({},t(s),{lazy:void 0}))}function SD(e){return Promise.all(e.matches.map(t=>t.resolve()))}async function kD(e,t,n,r,s,o,i,a){let c=r.reduce((f,h)=>f.add(h.route.id),new Set),u=new Set,d=await e({matches:s.map(f=>{let h=c.has(f.route.id);return At({},f,{shouldLoad:h,resolve:x=>(u.add(f.route.id),h?CD(t,n,f,o,i,x,a):Promise.resolve({type:wt.data,result:void 0}))})}),request:n,params:s[0].params,context:a});return s.forEach(f=>tt(u.has(f.route.id),'`match.resolve()` was not called for route id "'+f.route.id+'". You must call `match.resolve()` on every match passed to `dataStrategy` to ensure all routes are properly loaded.')),d.filter((f,h)=>c.has(s[h].route.id))}async function CD(e,t,n,r,s,o,i){let a,c,u=d=>{let f,h=new Promise((p,w)=>f=w);c=()=>f(),t.signal.addEventListener("abort",c);let m=p=>typeof d!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+n.route.id+"]"))):d({request:t,params:n.params,context:i},...p!==void 0?[p]:[]),x;return o?x=o(p=>m(p)):x=(async()=>{try{return{type:"data",result:await m()}}catch(p){return{type:"error",result:p}}})(),Promise.race([x,h])};try{let d=n.route[e];if(n.route.lazy)if(d){let f,[h]=await Promise.all([u(d).catch(m=>{f=m}),kw(n.route,s,r)]);if(f!==void 0)throw f;a=h}else if(await kw(n.route,s,r),d=n.route[e],d)a=await u(d);else if(e==="action"){let f=new URL(t.url),h=f.pathname+f.search;throw xn(405,{method:t.method,pathname:h,routeId:n.route.id})}else return{type:wt.data,result:void 0};else if(d)a=await u(d);else{let f=new URL(t.url),h=f.pathname+f.search;throw xn(404,{pathname:h})}tt(a.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(d){return{type:wt.error,result:d}}finally{c&&t.signal.removeEventListener("abort",c)}return a}async function jD(e){let{result:t,type:n,status:r}=e;if(FS(t)){let i;try{let a=t.headers.get("Content-Type");a&&/\bapplication\/json\b/.test(a)?t.body==null?i=null:i=await t.json():i=await t.text()}catch(a){return{type:wt.error,error:a}}return n===wt.error?{type:wt.error,error:new Xy(t.status,t.statusText,i),statusCode:t.status,headers:t.headers}:{type:wt.data,data:i,statusCode:t.status,headers:t.headers}}if(n===wt.error)return{type:wt.error,error:t,statusCode:ih(t)?t.status:r};if(AD(t)){var s,o;return{type:wt.deferred,deferredData:t,statusCode:(s=t.init)==null?void 0:s.status,headers:((o=t.init)==null?void 0:o.headers)&&new Headers(t.init.headers)}}return{type:wt.data,data:t,statusCode:r}}function ED(e,t,n,r,s,o){let i=e.headers.get("Location");if(tt(i,"Redirects returned/thrown from loaders/actions must have a Location header"),!Qy.test(i)){let a=r.slice(0,r.findIndex(c=>c.route.id===n)+1);i=ug(new URL(t.url),a,s,!0,i,o),e.headers.set("Location",i)}return e}function Cw(e,t,n){if(Qy.test(e)){let r=e,s=r.startsWith("//")?new URL(t.protocol+r):new URL(r),o=Za(s.pathname,n)!=null;if(s.origin===t.origin&&o)return s.pathname+s.search+s.hash}return e}function Li(e,t,n,r){let s=e.createURL(zS(t)).toString(),o={signal:n};if(r&&xr(r.formMethod)){let{formMethod:i,formEncType:a}=r;o.method=i.toUpperCase(),a==="application/json"?(o.headers=new Headers({"Content-Type":a}),o.body=JSON.stringify(r.json)):a==="text/plain"?o.body=r.text:a==="application/x-www-form-urlencoded"&&r.formData?o.body=dg(r.formData):o.body=r.formData}return new Request(s,o)}function dg(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function jw(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function ND(e,t,n,r,s,o){let i={},a=null,c,u=!1,d={},f=r&&Fn(r[1])?r[1].error:void 0;return n.forEach((h,m)=>{let x=t[m].route.id;if(tt(!Go(h),"Cannot handle redirect results in processLoaderData"),Fn(h)){let p=h.error;f!==void 0&&(p=f,f=void 0),a=a||{};{let w=oa(e,x);a[w.route.id]==null&&(a[w.route.id]=p)}i[x]=void 0,u||(u=!0,c=ih(h.error)?h.error.status:500),h.headers&&(d[x]=h.headers)}else Ko(h)?(s.set(x,h.deferredData),i[x]=h.deferredData.data,h.statusCode!=null&&h.statusCode!==200&&!u&&(c=h.statusCode),h.headers&&(d[x]=h.headers)):(i[x]=h.data,h.statusCode&&h.statusCode!==200&&!u&&(c=h.statusCode),h.headers&&(d[x]=h.headers))}),f!==void 0&&r&&(a={[r[0]]:f},i[r[0]]=void 0),{loaderData:i,errors:a,statusCode:c||200,loaderHeaders:d}}function Ew(e,t,n,r,s,o,i,a){let{loaderData:c,errors:u}=ND(t,n,r,s,a);for(let d=0;dr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function Pw(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function xn(e,t){let{pathname:n,routeId:r,method:s,type:o,message:i}=t===void 0?{}:t,a="Unknown Server Error",c="Unknown @remix-run/router error";return e===400?(a="Bad Request",o==="route-discovery"?c='Unable to match URL "'+n+'" - the `unstable_patchRoutesOnMiss()` '+(`function threw the following error: +`+i):s&&n&&r?c="You made a "+s+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":o==="defer-action"?c="defer() is not supported in actions":o==="invalid-body"&&(c="Unable to encode submission body")):e===403?(a="Forbidden",c='Route "'+r+'" does not match URL "'+n+'"'):e===404?(a="Not Found",c='No route matches URL "'+n+'"'):e===405&&(a="Method Not Allowed",s&&n&&r?c="You made a "+s.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":s&&(c='Invalid request method "'+s.toUpperCase()+'"')),new Xy(e||500,a,new Error(c),!0)}function Rw(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(Go(n))return{result:n,idx:t}}}function zS(e){let t=typeof e=="string"?Bs(e):e;return ui(At({},t,{hash:""}))}function TD(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function PD(e){return typeof e=="object"&&e!=null&&"then"in e}function RD(e){return FS(e.result)&&mD.has(e.result.status)}function Ko(e){return e.type===wt.deferred}function Fn(e){return e.type===wt.error}function Go(e){return(e&&e.type)===wt.redirect}function AD(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function FS(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function DD(e){return hD.has(e.toLowerCase())}function xr(e){return dD.has(e.toLowerCase())}async function Aw(e,t,n,r,s,o){for(let i=0;if.route.id===c.route.id),d=u!=null&&!MS(u,c)&&(o&&o[c.route.id])!==void 0;if(Ko(a)&&(s||d)){let f=r[i];tt(f,"Expected an AbortSignal for revalidating fetcher deferred result"),await $S(a,f,s).then(h=>{h&&(n[i]=h||n[i])})}}}async function $S(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:wt.data,data:e.deferredData.unwrappedData}}catch(s){return{type:wt.error,error:s}}return{type:wt.data,data:e.deferredData.data}}}function Jy(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Ol(e,t){let n=typeof t=="string"?Bs(t).search:t.search;if(e[e.length-1].route.index&&Jy(n||""))return e[e.length-1];let r=DS(e);return r[r.length-1]}function Dw(e){let{formMethod:t,formAction:n,formEncType:r,text:s,formData:o,json:i}=e;if(!(!t||!n||!r)){if(s!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:s};if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:o,json:void 0,text:void 0};if(i!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:i,text:void 0}}}function $m(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function OD(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function wl(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function ID(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function to(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function MD(e,t){try{let n=e.sessionStorage.getItem(IS);if(n){let r=JSON.parse(n);for(let[s,o]of Object.entries(r||{}))o&&Array.isArray(o)&&t.set(s,new Set(o||[]))}}catch{}}function LD(e,t){if(t.size>0){let n={};for(let[r,s]of t)n[r]=[...s];try{e.sessionStorage.setItem(IS,JSON.stringify(n))}catch(r){ci(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** + * React Router v6.25.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Qd(){return Qd=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0}),y.useCallback(function(u,d){if(d===void 0&&(d={}),!a.current)return;if(typeof u=="number"){r.go(u);return}let f=oh(u,JSON.parse(i),o,d.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:Ns([t,f.pathname])),(d.replace?r.replace:r.push)(f,d.state,d)},[t,r,i,o,e])}const $D=y.createContext(null);function UD(e){let t=y.useContext(Ws).outlet;return t&&y.createElement($D.Provider,{value:e},t)}function WS(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=y.useContext(Mo),{matches:s}=y.useContext(Ws),{pathname:o}=Ir(),i=JSON.stringify(sh(s,r.v7_relativeSplatPath));return y.useMemo(()=>oh(e,JSON.parse(i),o,n==="path"),[e,i,o,n])}function VD(e,t,n,r){qa()||tt(!1);let{navigator:s}=y.useContext(Mo),{matches:o}=y.useContext(Ws),i=o[o.length-1],a=i?i.params:{};i&&i.pathname;let c=i?i.pathnameBase:"/";i&&i.route;let u=Ir(),d;d=u;let f=d.pathname||"/",h=f;if(c!=="/"){let p=c.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(p.length).join("/")}let m=Bo(e,{pathname:h});return KD(m&&m.map(p=>Object.assign({},p,{params:Object.assign({},a,p.params),pathname:Ns([c,s.encodeLocation?s.encodeLocation(p.pathname).pathname:p.pathname]),pathnameBase:p.pathnameBase==="/"?c:Ns([c,s.encodeLocation?s.encodeLocation(p.pathnameBase).pathname:p.pathnameBase])})),o,n,r)}function BD(){let e=XD(),t=ih(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},t),n?y.createElement("pre",{style:s},n):null,null)}const WD=y.createElement(BD,null);class HD extends y.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?y.createElement(Ws.Provider,{value:this.props.routeContext},y.createElement(VS.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function YD(e){let{routeContext:t,match:n,children:r}=e,s=y.useContext(ah);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),y.createElement(Ws.Provider,{value:t},r)}function KD(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let i=e,a=(s=n)==null?void 0:s.errors;if(a!=null){let d=i.findIndex(f=>f.route.id&&(a==null?void 0:a[f.route.id])!==void 0);d>=0||tt(!1),i=i.slice(0,Math.min(i.length,d+1))}let c=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?i=i.slice(0,u+1):i=[i[0]];break}}}return i.reduceRight((d,f,h)=>{let m,x=!1,p=null,w=null;n&&(m=a&&f.route.id?a[f.route.id]:void 0,p=f.route.errorElement||WD,c&&(u<0&&h===0?(JD("route-fallback"),x=!0,w=null):u===h&&(x=!0,w=f.route.hydrateFallbackElement||null)));let g=t.concat(i.slice(0,h+1)),v=()=>{let b;return m?b=p:x?b=w:f.route.Component?b=y.createElement(f.route.Component,null):f.route.element?b=f.route.element:b=d,y.createElement(YD,{match:f,routeContext:{outlet:d,matches:g,isDataRoute:n!=null},children:b})};return n&&(f.route.ErrorBoundary||f.route.errorElement||h===0)?y.createElement(HD,{location:n.location,revalidation:n.revalidation,component:p,error:m,children:v(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):v()},null)}var HS=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(HS||{}),Jd=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Jd||{});function GD(e){let t=y.useContext(ah);return t||tt(!1),t}function ZD(e){let t=y.useContext(US);return t||tt(!1),t}function qD(e){let t=y.useContext(Ws);return t||tt(!1),t}function YS(e){let t=qD(),n=t.matches[t.matches.length-1];return n.route.id||tt(!1),n.route.id}function XD(){var e;let t=y.useContext(VS),n=ZD(Jd.UseRouteError),r=YS(Jd.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function QD(){let{router:e}=GD(HS.UseNavigateStable),t=YS(Jd.UseNavigateStable),n=y.useRef(!1);return BS(()=>{n.current=!0}),y.useCallback(function(s,o){o===void 0&&(o={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,Qd({fromRouteId:t},o)))},[e,t])}const Ow={};function JD(e,t,n){Ow[e]||(Ow[e]=!0)}function KS(e){let{to:t,replace:n,state:r,relative:s}=e;qa()||tt(!1);let{future:o,static:i}=y.useContext(Mo),{matches:a}=y.useContext(Ws),{pathname:c}=Ir(),u=Jn(),d=oh(t,sh(a,o.v7_relativeSplatPath),c,s==="path"),f=JSON.stringify(d);return y.useEffect(()=>u(JSON.parse(f),{replace:n,state:r,relative:s}),[u,f,s,n,r]),null}function tv(e){return UD(e.context)}function eO(e){let{basename:t="/",children:n=null,location:r,navigationType:s=Wt.Pop,navigator:o,static:i=!1,future:a}=e;qa()&&tt(!1);let c=t.replace(/^\/*/,"/"),u=y.useMemo(()=>({basename:c,navigator:o,static:i,future:Qd({v7_relativeSplatPath:!1},a)}),[c,a,o,i]);typeof r=="string"&&(r=Bs(r));let{pathname:d="/",search:f="",hash:h="",state:m=null,key:x="default"}=r,p=y.useMemo(()=>{let w=Za(d,c);return w==null?null:{location:{pathname:w,search:f,hash:h,state:m,key:x},navigationType:s}},[c,d,f,h,m,x,s]);return p==null?null:y.createElement(Mo.Provider,{value:u},y.createElement(ev.Provider,{children:n,value:p}))}new Promise(()=>{});function tO(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:y.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:y.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:y.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + * React Router DOM v6.25.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function bc(){return bc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function rO(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function sO(e,t){return e.button===0&&(!t||t==="_self")&&!rO(e)}function fg(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function oO(e,t){let n=fg(e);return t&&t.forEach((r,s)=>{n.has(s)||t.getAll(s).forEach(o=>{n.append(s,o)})}),n}const iO=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],aO="6";try{window.__reactRouterVersion=aO}catch{}function lO(e,t){return vD({basename:void 0,future:bc({},void 0,{v7_prependBasename:!0}),history:VA({window:void 0}),hydrationData:cO(),routes:e,mapRouteProperties:tO,unstable_dataStrategy:void 0,unstable_patchRoutesOnMiss:void 0,window:void 0}).initialize()}function cO(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=bc({},t,{errors:uO(t.errors)})),t}function uO(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,s]of t)if(s&&s.__type==="RouteErrorResponse")n[r]=new Xy(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let o=window[s.__subType];if(typeof o=="function")try{let i=new o(s.message);i.stack="",n[r]=i}catch{}}if(n[r]==null){let o=new Error(s.message);o.stack="",n[r]=o}}else n[r]=s;return n}const dO=y.createContext({isTransitioning:!1}),fO=y.createContext(new Map),hO="startTransition",Iw=E1[hO],mO="flushSync",Mw=UA[mO];function pO(e){Iw?Iw(e):e()}function bl(e){Mw?Mw(e):e()}class gO{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function yO(e){let{fallbackElement:t,router:n,future:r}=e,[s,o]=y.useState(n.state),[i,a]=y.useState(),[c,u]=y.useState({isTransitioning:!1}),[d,f]=y.useState(),[h,m]=y.useState(),[x,p]=y.useState(),w=y.useRef(new Map),{v7_startTransition:g}=r||{},v=y.useCallback(R=>{g?pO(R):R()},[g]),b=y.useCallback((R,A)=>{let{deletedFetchers:O,unstable_flushSync:G,unstable_viewTransitionOpts:N}=A;O.forEach(S=>w.current.delete(S)),R.fetchers.forEach((S,U)=>{S.data!==void 0&&w.current.set(U,S.data)});let z=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!N||z){G?bl(()=>o(R)):v(()=>o(R));return}if(G){bl(()=>{h&&(d&&d.resolve(),h.skipTransition()),u({isTransitioning:!0,flushSync:!0,currentLocation:N.currentLocation,nextLocation:N.nextLocation})});let S=n.window.document.startViewTransition(()=>{bl(()=>o(R))});S.finished.finally(()=>{bl(()=>{f(void 0),m(void 0),a(void 0),u({isTransitioning:!1})})}),bl(()=>m(S));return}h?(d&&d.resolve(),h.skipTransition(),p({state:R,currentLocation:N.currentLocation,nextLocation:N.nextLocation})):(a(R),u({isTransitioning:!0,flushSync:!1,currentLocation:N.currentLocation,nextLocation:N.nextLocation}))},[n.window,h,d,w,v]);y.useLayoutEffect(()=>n.subscribe(b),[n,b]),y.useEffect(()=>{c.isTransitioning&&!c.flushSync&&f(new gO)},[c]),y.useEffect(()=>{if(d&&i&&n.window){let R=i,A=d.promise,O=n.window.document.startViewTransition(async()=>{v(()=>o(R)),await A});O.finished.finally(()=>{f(void 0),m(void 0),a(void 0),u({isTransitioning:!1})}),m(O)}},[v,i,d,n.window]),y.useEffect(()=>{d&&i&&s.location.key===i.location.key&&d.resolve()},[d,h,s.location,i]),y.useEffect(()=>{!c.isTransitioning&&x&&(a(x.state),u({isTransitioning:!0,flushSync:!1,currentLocation:x.currentLocation,nextLocation:x.nextLocation}),p(void 0))},[c.isTransitioning,x]),y.useEffect(()=>{},[]);let _=y.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:R=>n.navigate(R),push:(R,A,O)=>n.navigate(R,{state:A,preventScrollReset:O==null?void 0:O.preventScrollReset}),replace:(R,A,O)=>n.navigate(R,{replace:!0,state:A,preventScrollReset:O==null?void 0:O.preventScrollReset})}),[n]),C=n.basename||"/",j=y.useMemo(()=>({router:n,navigator:_,static:!1,basename:C}),[n,_,C]),T=y.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return y.createElement(y.Fragment,null,y.createElement(ah.Provider,{value:j},y.createElement(US.Provider,{value:s},y.createElement(fO.Provider,{value:w.current},y.createElement(dO.Provider,{value:c},y.createElement(eO,{basename:C,location:s.location,navigationType:s.historyAction,navigator:_,future:T},s.initialized||n.future.v7_partialHydration?y.createElement(vO,{routes:n.routes,future:n.future,state:s}):t))))),null)}const vO=y.memo(xO);function xO(e){let{routes:t,future:n,state:r}=e;return VD(t,void 0,r,n)}const wO=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",bO=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,wn=y.forwardRef(function(t,n){let{onClick:r,relative:s,reloadDocument:o,replace:i,state:a,target:c,to:u,preventScrollReset:d,unstable_viewTransition:f}=t,h=nO(t,iO),{basename:m}=y.useContext(Mo),x,p=!1;if(typeof u=="string"&&bO.test(u)&&(x=u,wO))try{let b=new URL(window.location.href),_=u.startsWith("//")?new URL(b.protocol+u):new URL(u),C=Za(_.pathname,m);_.origin===b.origin&&C!=null?u=C+_.search+_.hash:p=!0}catch{}let w=zD(u,{relative:s}),g=_O(u,{replace:i,state:a,target:c,preventScrollReset:d,relative:s,unstable_viewTransition:f});function v(b){r&&r(b),b.defaultPrevented||g(b)}return y.createElement("a",bc({},h,{href:x||w,onClick:p||o?r:v,ref:n,target:c}))});var Lw;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Lw||(Lw={}));var zw;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(zw||(zw={}));function _O(e,t){let{target:n,replace:r,state:s,preventScrollReset:o,relative:i,unstable_viewTransition:a}=t===void 0?{}:t,c=Jn(),u=Ir(),d=WS(e,{relative:i});return y.useCallback(f=>{if(sO(f,n)){f.preventDefault();let h=r!==void 0?r:ui(u)===ui(d);c(e,{replace:h,state:s,preventScrollReset:o,relative:i,unstable_viewTransition:a})}},[u,c,d,r,s,n,e,o,i,a])}function SO(e){let t=y.useRef(fg(e)),n=y.useRef(!1),r=Ir(),s=y.useMemo(()=>oO(r.search,n.current?null:t.current),[r.search]),o=Jn(),i=y.useCallback((a,c)=>{const u=fg(typeof a=="function"?a(s):a);n.current=!0,o("?"+u,c)},[o,s]);return[s,i]}var kO={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};const CO=Uf(kO);var jO=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function Fw(e){var t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(CO[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){var r=e.indexOf("-->");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var s=new RegExp(jO),o=null;(o=s.exec(e))!==null;)if(o[0].trim())if(o[1]){var i=o[1].trim(),a=[i,""];i.indexOf("=")>-1&&(a=i.split("=")),t.attrs[a[0]]=a[1],s.lastIndex--}else o[2]&&(t.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return t}var EO=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,NO=/^\s*$/,TO=Object.create(null);function GS(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var s in n)r.push(s+'="'+n[s]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(GS,"")+"";case"comment":return e+""}}var PO={parse:function(e,t){t||(t={}),t.components||(t.components=TO);var n,r=[],s=[],o=-1,i=!1;if(e.indexOf("<")!==0){var a=e.indexOf("<");r.push({type:"text",content:a===-1?e:e.substring(0,a)})}return e.replace(EO,function(c,u){if(i){if(c!=="")return;i=!1}var d,f=c.charAt(1)!=="/",h=c.startsWith("");return{type:"comment",comment:r!==-1?e.slice(4,r):""}}for(var s=new RegExp(GO),o=null;(o=s.exec(e))!==null;)if(o[0].trim())if(o[1]){var i=o[1].trim(),a=[i,""];i.indexOf("=")>-1&&(a=i.split("=")),t.attrs[a[0]]=a[1],s.lastIndex--}else o[2]&&(t.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return t}var ZO=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,qO=/^\s*$/,XO=Object.create(null);function ek(e,t){switch(t.type){case"text":return e+t.content;case"tag":return e+="<"+t.name+(t.attrs?function(n){var r=[];for(var s in n)r.push(s+'="'+n[s]+'"');return r.length?" "+r.join(" "):""}(t.attrs):"")+(t.voidElement?"/>":">"),t.voidElement?e:e+t.children.reduce(ek,"")+"";case"comment":return e+""}}var QO={parse:function(e,t){t||(t={}),t.components||(t.components=XO);var n,r=[],s=[],o=-1,i=!1;if(e.indexOf("<")!==0){var a=e.indexOf("<");r.push({type:"text",content:a===-1?e:e.substring(0,a)})}return e.replace(ZO,function(c,u){if(i){if(c!=="")return;i=!1}var d,f=c.charAt(1)!=="/",h=c.startsWith(" - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg b/ui/dist/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg deleted file mode 100644 index 83f1ec47..00000000 --- a/ui/dist/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ui/dist/imgs/providers/godaddy.svg b/ui/dist/imgs/providers/godaddy.svg index a60b56cd..a859a7ae 100644 --- a/ui/dist/imgs/providers/godaddy.svg +++ b/ui/dist/imgs/providers/godaddy.svg @@ -1,5 +1 @@ - - - - - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/huaweicloud.svg b/ui/dist/imgs/providers/huaweicloud.svg index 68c301eb..552e59e7 100644 --- a/ui/dist/imgs/providers/huaweicloud.svg +++ b/ui/dist/imgs/providers/huaweicloud.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/letsencrypt.svg b/ui/dist/imgs/providers/letsencrypt.svg index d18cedc9..3a6c2312 100644 --- a/ui/dist/imgs/providers/letsencrypt.svg +++ b/ui/dist/imgs/providers/letsencrypt.svg @@ -1,18 +1 @@ - - - - - - - - - - - - - - - - - - + diff --git a/ui/dist/imgs/providers/local.svg b/ui/dist/imgs/providers/local.svg index 46cfc247..2f59af07 100644 --- a/ui/dist/imgs/providers/local.svg +++ b/ui/dist/imgs/providers/local.svg @@ -1,10 +1 @@ - - - - - - - - - - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/namesilo.svg b/ui/dist/imgs/providers/namesilo.svg index 457698fa..e0cc8da4 100644 --- a/ui/dist/imgs/providers/namesilo.svg +++ b/ui/dist/imgs/providers/namesilo.svg @@ -1,8 +1 @@ - - - - - - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/qiniu.svg b/ui/dist/imgs/providers/qiniu.svg index 4088190b..d3b98877 100644 --- a/ui/dist/imgs/providers/qiniu.svg +++ b/ui/dist/imgs/providers/qiniu.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/ssh.png b/ui/dist/imgs/providers/ssh.png deleted file mode 100644 index d43cf03a..00000000 Binary files a/ui/dist/imgs/providers/ssh.png and /dev/null differ diff --git a/ui/dist/imgs/providers/ssh.svg b/ui/dist/imgs/providers/ssh.svg index 97b78788..8dea9e89 100644 --- a/ui/dist/imgs/providers/ssh.svg +++ b/ui/dist/imgs/providers/ssh.svg @@ -1,26 +1 @@ - - - - - - - databases-and-servers/servers/ssh - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/tencent.svg b/ui/dist/imgs/providers/tencent.svg index 1f4e8a79..76e54dbb 100644 --- a/ui/dist/imgs/providers/tencent.svg +++ b/ui/dist/imgs/providers/tencent.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/volcengine.svg b/ui/dist/imgs/providers/volcengine.svg deleted file mode 100644 index 32d508d0..00000000 --- a/ui/dist/imgs/providers/volcengine.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - appbar_logo_dark.2 - - - - - - - - - - \ No newline at end of file diff --git a/ui/dist/imgs/providers/wangsu.svg b/ui/dist/imgs/providers/wangsu.svg deleted file mode 100644 index 585b00c5..00000000 --- a/ui/dist/imgs/providers/wangsu.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - wangsu - - - - - - \ No newline at end of file diff --git a/ui/dist/imgs/providers/webhook.svg b/ui/dist/imgs/providers/webhook.svg index ac2e7d9b..2ca5bff3 100644 --- a/ui/dist/imgs/providers/webhook.svg +++ b/ui/dist/imgs/providers/webhook.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/dist/imgs/providers/zerossl.svg b/ui/dist/imgs/providers/zerossl.svg index 4f1afb54..8563aece 100644 --- a/ui/dist/imgs/providers/zerossl.svg +++ b/ui/dist/imgs/providers/zerossl.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/dist/index.html b/ui/dist/index.html index e842afa1..25d32afd 100644 --- a/ui/dist/index.html +++ b/ui/dist/index.html @@ -5,7 +5,7 @@ Certimate - Your Trusted SSL Automation Partner - + diff --git a/ui/postcss.config.js b/ui/postcss.config.js index 2e7af2b7..2aa7205d 100644 --- a/ui/postcss.config.js +++ b/ui/postcss.config.js @@ -3,4 +3,4 @@ export default { tailwindcss: {}, autoprefixer: {}, }, -} +}; diff --git a/ui/public/imgs/providers/aliyun.svg b/ui/public/imgs/providers/aliyun.svg index dedad191..b4f740ee 100644 --- a/ui/public/imgs/providers/aliyun.svg +++ b/ui/public/imgs/providers/aliyun.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/public/imgs/providers/baidu.svg b/ui/public/imgs/providers/baidu.svg deleted file mode 100644 index 5ac20a05..00000000 --- a/ui/public/imgs/providers/baidu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ui/public/imgs/providers/baisan.avif b/ui/public/imgs/providers/baisan.avif deleted file mode 100644 index 1313cda9..00000000 Binary files a/ui/public/imgs/providers/baisan.avif and /dev/null differ diff --git a/ui/public/imgs/providers/cloudflare.svg b/ui/public/imgs/providers/cloudflare.svg index 3eecafbd..b6f07b50 100644 --- a/ui/public/imgs/providers/cloudflare.svg +++ b/ui/public/imgs/providers/cloudflare.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/ui/public/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg b/ui/public/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg deleted file mode 100644 index 83f1ec47..00000000 --- a/ui/public/imgs/providers/favicon-docs.dogecloud.com-1-200x200.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ui/public/imgs/providers/godaddy.svg b/ui/public/imgs/providers/godaddy.svg index a60b56cd..a859a7ae 100644 --- a/ui/public/imgs/providers/godaddy.svg +++ b/ui/public/imgs/providers/godaddy.svg @@ -1,5 +1 @@ - - - - - \ No newline at end of file + diff --git a/ui/public/imgs/providers/huaweicloud.svg b/ui/public/imgs/providers/huaweicloud.svg index 68c301eb..552e59e7 100644 --- a/ui/public/imgs/providers/huaweicloud.svg +++ b/ui/public/imgs/providers/huaweicloud.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/public/imgs/providers/letsencrypt.svg b/ui/public/imgs/providers/letsencrypt.svg index d18cedc9..3a6c2312 100644 --- a/ui/public/imgs/providers/letsencrypt.svg +++ b/ui/public/imgs/providers/letsencrypt.svg @@ -1,18 +1 @@ - - - - - - - - - - - - - - - - - - + diff --git a/ui/public/imgs/providers/local.svg b/ui/public/imgs/providers/local.svg index 46cfc247..2f59af07 100644 --- a/ui/public/imgs/providers/local.svg +++ b/ui/public/imgs/providers/local.svg @@ -1,10 +1 @@ - - - - - - - - - - \ No newline at end of file + diff --git a/ui/public/imgs/providers/namesilo.svg b/ui/public/imgs/providers/namesilo.svg index 457698fa..e0cc8da4 100644 --- a/ui/public/imgs/providers/namesilo.svg +++ b/ui/public/imgs/providers/namesilo.svg @@ -1,8 +1 @@ - - - - - - \ No newline at end of file + diff --git a/ui/public/imgs/providers/qiniu.svg b/ui/public/imgs/providers/qiniu.svg index 4088190b..d3b98877 100644 --- a/ui/public/imgs/providers/qiniu.svg +++ b/ui/public/imgs/providers/qiniu.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/public/imgs/providers/ssh.png b/ui/public/imgs/providers/ssh.png deleted file mode 100644 index d43cf03a..00000000 Binary files a/ui/public/imgs/providers/ssh.png and /dev/null differ diff --git a/ui/public/imgs/providers/ssh.svg b/ui/public/imgs/providers/ssh.svg index 97b78788..8dea9e89 100644 --- a/ui/public/imgs/providers/ssh.svg +++ b/ui/public/imgs/providers/ssh.svg @@ -1,26 +1 @@ - - - - - - - databases-and-servers/servers/ssh - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file + diff --git a/ui/public/imgs/providers/tencent.svg b/ui/public/imgs/providers/tencent.svg index 1f4e8a79..76e54dbb 100644 --- a/ui/public/imgs/providers/tencent.svg +++ b/ui/public/imgs/providers/tencent.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/public/imgs/providers/volcengine.svg b/ui/public/imgs/providers/volcengine.svg deleted file mode 100644 index 32d508d0..00000000 --- a/ui/public/imgs/providers/volcengine.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - appbar_logo_dark.2 - - - - - - - - - - \ No newline at end of file diff --git a/ui/public/imgs/providers/wangsu.svg b/ui/public/imgs/providers/wangsu.svg deleted file mode 100644 index 585b00c5..00000000 --- a/ui/public/imgs/providers/wangsu.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - wangsu - - - - - - \ No newline at end of file diff --git a/ui/public/imgs/providers/webhook.svg b/ui/public/imgs/providers/webhook.svg index ac2e7d9b..2ca5bff3 100644 --- a/ui/public/imgs/providers/webhook.svg +++ b/ui/public/imgs/providers/webhook.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/public/imgs/providers/zerossl.svg b/ui/public/imgs/providers/zerossl.svg index 4f1afb54..8563aece 100644 --- a/ui/public/imgs/providers/zerossl.svg +++ b/ui/public/imgs/providers/zerossl.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/ui/src/assets/react.svg b/ui/src/assets/react.svg deleted file mode 100644 index 6c87de9b..00000000 --- a/ui/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ui/src/components/LocaleToggle.tsx b/ui/src/components/LocaleToggle.tsx index f0e4c95d..2385716a 100644 --- a/ui/src/components/LocaleToggle.tsx +++ b/ui/src/components/LocaleToggle.tsx @@ -1,14 +1,8 @@ +import { useTranslation } from "react-i18next"; import { Languages } from "lucide-react"; -import { useTranslation } from "react-i18next"; - import { Button } from "@/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; export default function LocaleToggle() { const { i18n } = useTranslation(); @@ -23,9 +17,7 @@ export default function LocaleToggle() { {Object.keys(i18n.store.data).map((key) => ( - i18n.changeLanguage(key)}> - {i18n.store.data[key].name as string} - + i18n.changeLanguage(key)}>{i18n.store.data[key].name as string} ))} diff --git a/ui/src/components/Show.tsx b/ui/src/components/Show.tsx index 8c91f216..282addc3 100644 --- a/ui/src/components/Show.tsx +++ b/ui/src/components/Show.tsx @@ -1,14 +1,6 @@ import React from "react"; -const Show = ({ - when, - children, - fallback, -}: { - when: boolean; - children: React.ReactNode; - fallback?: React.ReactNode; -}) => { +const Show = ({ when, children, fallback }: { when: boolean; children: React.ReactNode; fallback?: React.ReactNode }) => { return when ? children : fallback; }; diff --git a/ui/src/components/ThemeProvider.tsx b/ui/src/components/ThemeProvider.tsx index 7b9eeb27..b117f623 100644 --- a/ui/src/components/ThemeProvider.tsx +++ b/ui/src/components/ThemeProvider.tsx @@ -20,15 +20,8 @@ const initialState: ThemeProviderState = { const ThemeProviderContext = createContext(initialState); -export function ThemeProvider({ - children, - defaultTheme = "system", - storageKey = "vite-ui-theme", - ...props -}: ThemeProviderProps) { - const [theme, setTheme] = useState( - () => (localStorage.getItem(storageKey) as Theme) || defaultTheme - ); +export function ThemeProvider({ children, defaultTheme = "system", storageKey = "vite-ui-theme", ...props }: ThemeProviderProps) { + const [theme, setTheme] = useState(() => (localStorage.getItem(storageKey) as Theme) || defaultTheme); useEffect(() => { const root = window.document.documentElement; @@ -36,10 +29,7 @@ export function ThemeProvider({ root.classList.remove("light", "dark"); if (theme === "system") { - const systemTheme = window.matchMedia("(prefers-color-scheme: dark)") - .matches - ? "dark" - : "light"; + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; root.classList.add(systemTheme); return; @@ -66,8 +56,7 @@ export function ThemeProvider({ export const useTheme = () => { const context = useContext(ThemeProviderContext); - if (context === undefined) - throw new Error("useTheme must be used within a ThemeProvider"); + if (context === undefined) throw new Error("useTheme must be used within a ThemeProvider"); return context; }; diff --git a/ui/src/components/ThemeToggle.tsx b/ui/src/components/ThemeToggle.tsx index 0a57de8b..ef69888f 100644 --- a/ui/src/components/ThemeToggle.tsx +++ b/ui/src/components/ThemeToggle.tsx @@ -1,13 +1,8 @@ -import { Moon, Sun } from "lucide-react"; import { useTranslation } from "react-i18next"; +import { Moon, Sun } from "lucide-react"; import { Button } from "@/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { useTheme } from "./ThemeProvider"; export function ThemeToggle() { @@ -24,15 +19,9 @@ export function ThemeToggle() { - setTheme("light")}> - {t("common.theme.light")} - - setTheme("dark")}> - {t("common.theme.dark")} - - setTheme("system")}> - {t("common.theme.system")} - + setTheme("light")}>{t("common.theme.light")} + setTheme("dark")}>{t("common.theme.dark")} + setTheme("system")}>{t("common.theme.system")} ); diff --git a/ui/src/components/certimate/AccessAliyunForm.tsx b/ui/src/components/certimate/AccessAliyunForm.tsx index 11a3ca9b..9ce87a47 100644 --- a/ui/src/components/certimate/AccessAliyunForm.tsx +++ b/ui/src/components/certimate/AccessAliyunForm.tsx @@ -1,41 +1,24 @@ -import { Input } from "@/components/ui/input"; import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; - -import { zodResolver } from "@hookform/resolvers/zod"; - import z from "zod"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Button } from "@/components/ui/button"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ClientResponseError } from "pocketbase"; -import { - Access, - accessFormType, - AliyunConfig, - getUsageByConfigType, -} from "@/domain/access"; +import { Button } from "@/components/ui/button"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { PbErrorData } from "@/domain/base"; +import { Access, AliyunConfig, accessFormType, getUsageByConfigType } from "@/domain/access"; import { save } from "@/repository/access"; import { useConfig } from "@/providers/config"; -import { ClientResponseError } from "pocketbase"; -import { PbErrorData } from "@/domain/base"; - -const AccessAliyunForm = ({ - data, - op, - onAfterReq, -}: { - data?: Access; +type AccessAliyunFormProps = { op: "add" | "edit" | "copy"; + data?: Access; onAfterReq: () => void; -}) => { +}; + +const AccessAliyunForm = ({ data, op, onAfterReq }: AccessAliyunFormProps) => { const { addAccess, updateAccess } = useConfig(); const { t } = useTranslation(); const formSchema = z.object({ @@ -97,19 +80,17 @@ const AccessAliyunForm = ({ updateAccess(req); return; } - console.log(req); + addAccess(req); } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); return; } @@ -133,10 +114,7 @@ const AccessAliyunForm = ({ {t("access.authorization.form.name.label")} - + @@ -181,10 +159,7 @@ const AccessAliyunForm = ({ {t("access.authorization.form.access_key_id.label")} - + @@ -199,10 +174,7 @@ const AccessAliyunForm = ({ {t("access.authorization.form.access_key_secret.label")} - + diff --git a/ui/src/components/certimate/AccessCloudflareForm.tsx b/ui/src/components/certimate/AccessCloudflareForm.tsx index d1a5f9c5..c167875b 100644 --- a/ui/src/components/certimate/AccessCloudflareForm.tsx +++ b/ui/src/components/certimate/AccessCloudflareForm.tsx @@ -1,40 +1,24 @@ -import { Input } from "@/components/ui/input"; import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; - -import { zodResolver } from "@hookform/resolvers/zod"; - import z from "zod"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Button } from "@/components/ui/button"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ClientResponseError } from "pocketbase"; -import { - Access, - accessFormType, - CloudflareConfig, - getUsageByConfigType, -} from "@/domain/access"; +import { Button } from "@/components/ui/button"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { PbErrorData } from "@/domain/base"; +import { Access, accessFormType, CloudflareConfig, getUsageByConfigType } from "@/domain/access"; import { save } from "@/repository/access"; import { useConfig } from "@/providers/config"; -import { ClientResponseError } from "pocketbase"; -import { PbErrorData } from "@/domain/base"; -const AccessCloudflareForm = ({ - data, - op, - onAfterReq, -}: { - data?: Access; +type AccessCloudflareFormProps = { op: "add" | "edit" | "copy"; + data?: Access; onAfterReq: () => void; -}) => { +}; + +const AccessCloudflareForm = ({ data, op, onAfterReq }: AccessCloudflareFormProps) => { const { addAccess, updateAccess } = useConfig(); const { t } = useTranslation(); const formSchema = z.object({ @@ -66,7 +50,6 @@ const AccessCloudflareForm = ({ }); const onSubmit = async (data: z.infer) => { - console.log(data); const req: Access = { id: data.id as string, name: data.name, @@ -94,14 +77,12 @@ const AccessCloudflareForm = ({ } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); } }; @@ -111,7 +92,6 @@ const AccessCloudflareForm = ({
{ - console.log(e); e.stopPropagation(); form.handleSubmit(onSubmit)(e); }} @@ -124,10 +104,7 @@ const AccessCloudflareForm = ({ {t("access.authorization.form.name.label")} - + @@ -172,12 +149,7 @@ const AccessCloudflareForm = ({ {t("access.authorization.form.cloud_dns_api_token.label")} - + diff --git a/ui/src/components/certimate/AccessEdit.tsx b/ui/src/components/certimate/AccessEdit.tsx index 27b2bac5..387d55e7 100644 --- a/ui/src/components/certimate/AccessEdit.tsx +++ b/ui/src/components/certimate/AccessEdit.tsx @@ -1,51 +1,31 @@ -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import { ScrollArea } from "@/components/ui/scroll-area"; - import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { Access, accessTypeMap } from "@/domain/access"; import { cn } from "@/lib/utils"; - -import { Label } from "../ui/label"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectLabel, - SelectTrigger, - SelectValue, -} from "../ui/select"; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; +import { Label } from "@/components/ui/label"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from "@/components/ui/select"; import AccessAliyunForm from "./AccessAliyunForm"; import AccessTencentForm from "./AccessTencentForm"; import AccessHuaweicloudForm from "./AccessHuaweicloudForm"; import AccessQiniuForm from "./AccessQiniuForm"; import AccessCloudflareForm from "./AccessCloudflareForm"; import AccessNamesiloForm from "./AccessNamesiloForm"; -import AccessGodaddyFrom from "./AccessGodaddyForm"; +import AccessGodaddyForm from "./AccessGodaddyForm"; import AccessLocalForm from "./AccessLocalForm"; import AccessSSHForm from "./AccessSSHForm"; -import AccessWebhookForm from "./AccessWebhookFrom"; +import AccessWebhookForm from "./AccessWebhookForm"; +import { Access, accessTypeMap } from "@/domain/access"; -type TargetConfigEditProps = { +type AccessEditProps = { op: "add" | "edit" | "copy"; className?: string; trigger: React.ReactNode; data?: Access; }; -export function AccessEdit({ - trigger, - op, - data, - className, -}: TargetConfigEditProps) { + +const AccessEdit = ({ trigger, op, data, className }: AccessEditProps) => { const [open, setOpen] = useState(false); const { t } = useTranslation(); @@ -123,7 +103,7 @@ export function AccessEdit({ break; case "godaddy": form = ( - { @@ -179,11 +159,7 @@ export function AccessEdit({ - {op == "add" - ? t("access.authorization.add") - : op == "edit" - ? t("access.authorization.edit") - : t("access.authorization.copy")} + {op == "add" ? t("access.authorization.add") : op == "edit" ? t("access.authorization.edit") : t("access.authorization.copy")} @@ -204,16 +180,8 @@ export function AccessEdit({ {t("access.authorization.form.type.list")} {typeKeys.map((key) => ( -
- +
+
{t(accessTypeMap.get(key)?.[0] || "")}
@@ -228,4 +196,6 @@ export function AccessEdit({ ); -} +}; + +export default AccessEdit; diff --git a/ui/src/components/certimate/AccessGodaddyForm.tsx b/ui/src/components/certimate/AccessGodaddyForm.tsx index d3bfb7b2..a550af38 100644 --- a/ui/src/components/certimate/AccessGodaddyForm.tsx +++ b/ui/src/components/certimate/AccessGodaddyForm.tsx @@ -1,40 +1,24 @@ -import { Input } from "@/components/ui/input"; import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; - -import { zodResolver } from "@hookform/resolvers/zod"; - import z from "zod"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Button } from "@/components/ui/button"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ClientResponseError } from "pocketbase"; -import { - Access, - accessFormType, - getUsageByConfigType, - GodaddyConfig, -} from "@/domain/access"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { PbErrorData } from "@/domain/base"; +import { Access, accessFormType, getUsageByConfigType, GodaddyConfig } from "@/domain/access"; import { save } from "@/repository/access"; import { useConfig } from "@/providers/config"; -import { ClientResponseError } from "pocketbase"; -import { PbErrorData } from "@/domain/base"; -const AccessGodaddyFrom = ({ - data, - op, - onAfterReq, -}: { - data?: Access; +type AccessGodaddyFormProps = { op: "add" | "edit" | "copy"; + data?: Access; onAfterReq: () => void; -}) => { +}; + +const AccessGodaddyForm = ({ data, op, onAfterReq }: AccessGodaddyFormProps) => { const { addAccess, updateAccess } = useConfig(); const { t } = useTranslation(); const formSchema = z.object({ @@ -72,7 +56,6 @@ const AccessGodaddyFrom = ({ }); const onSubmit = async (data: z.infer) => { - console.log(data); const req: Access = { id: data.id as string, name: data.name, @@ -101,14 +84,12 @@ const AccessGodaddyFrom = ({ } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); } }; @@ -118,7 +99,6 @@ const AccessGodaddyFrom = ({ { - console.log(e); e.stopPropagation(); form.handleSubmit(onSubmit)(e); }} @@ -131,10 +111,7 @@ const AccessGodaddyFrom = ({ {t("access.authorization.form.name.label")} - + @@ -179,10 +156,7 @@ const AccessGodaddyFrom = ({ {t("access.authorization.form.godaddy_api_key.label")} - + @@ -197,12 +171,7 @@ const AccessGodaddyFrom = ({ {t("access.authorization.form.godaddy_api_secret.label")} - + @@ -220,4 +189,4 @@ const AccessGodaddyFrom = ({ ); }; -export default AccessGodaddyFrom; +export default AccessGodaddyForm; diff --git a/ui/src/components/certimate/AccessGroupEdit.tsx b/ui/src/components/certimate/AccessGroupEdit.tsx index c32cb335..8f809fd3 100644 --- a/ui/src/components/certimate/AccessGroupEdit.tsx +++ b/ui/src/components/certimate/AccessGroupEdit.tsx @@ -1,31 +1,18 @@ -import { cn } from "@/lib/utils"; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "../ui/dialog"; - +import { useState } from "react"; +import { useForm } from "react-hook-form"; +import { useTranslation } from "react-i18next"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "../ui/form"; -import { Input } from "../ui/input"; -import { Button } from "../ui/button"; -import { useConfig } from "@/providers/config"; -import { update } from "@/repository/access_group"; import { ClientResponseError } from "pocketbase"; + +import { cn } from "@/lib/utils"; +import { Button } from "@/components/ui/button"; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; import { PbErrorData } from "@/domain/base"; -import { useState } from "react"; -import { useTranslation } from "react-i18next"; +import { update } from "@/repository/access_group"; +import { useConfig } from "@/providers/config"; type AccessGroupEditProps = { className?: string; @@ -65,14 +52,12 @@ const AccessGroupEdit = ({ className, trigger }: AccessGroupEditProps) => { } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); } }; @@ -102,11 +87,7 @@ const AccessGroupEdit = ({ className, trigger }: AccessGroupEditProps) => { {t("access.group.form.name.label")} - + diff --git a/ui/src/components/certimate/AccessGroupList.tsx b/ui/src/components/certimate/AccessGroupList.tsx index 84e53967..a5b97998 100644 --- a/ui/src/components/certimate/AccessGroupList.tsx +++ b/ui/src/components/certimate/AccessGroupList.tsx @@ -1,4 +1,7 @@ -import AccessGroupEdit from "@/components/certimate/AccessGroupEdit"; +import { useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; +import { Group } from "lucide-react"; + import Show from "@/components/Show"; import { AlertDialog, @@ -12,24 +15,14 @@ import { AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "@/components/ui/card"; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { useToast } from "@/components/ui/use-toast"; +import AccessGroupEdit from "./AccessGroupEdit"; import { getProviderInfo } from "@/domain/access"; import { getErrMessage } from "@/lib/error"; import { useConfig } from "@/providers/config"; import { remove } from "@/repository/access_group"; -import { Group } from "lucide-react"; -import { useToast } from "@/components/ui/use-toast"; - -import { useNavigate } from "react-router-dom"; -import { useTranslation } from "react-i18next"; const AccessGroupList = () => { const { @@ -68,13 +61,8 @@ const AccessGroupList = () => { -
- {t("access.group.domains.nodata")} -
- {t("access.group.add")}} - className="mt-3" - /> +
{t("access.group.domains.nodata")}
+ {t("access.group.add")}} className="mt-3" />
@@ -87,9 +75,7 @@ const AccessGroupList = () => { {accessGroup.name} {t("access.group.total", { - total: accessGroup.expand - ? accessGroup.expand.access.length - : 0, + total: accessGroup.expand ? accessGroup.expand.access.length : 0, })} @@ -100,19 +86,11 @@ const AccessGroupList = () => {
- provider + provider
-
- {access.name} -
-
- {getProviderInfo(access.configType)![0]} -
+
{access.name}
+
{getProviderInfo(access.configType)![0]}
@@ -131,24 +109,15 @@ const AccessGroupList = () => {
- 0 - ? true - : false - } - > + 0 ? true : false}>
- +
void; -}) => { +}; + +const AccessTencentForm = ({ data, op, onAfterReq }: AccessTencentFormProps) => { const { addAccess, updateAccess } = useConfig(); const { t } = useTranslation(); const formSchema = z.object({ @@ -100,14 +84,12 @@ const AccessTencentForm = ({ } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); } }; @@ -129,10 +111,7 @@ const AccessTencentForm = ({ {t("access.authorization.form.name.label")} - + @@ -177,10 +156,7 @@ const AccessTencentForm = ({ {t("access.authorization.form.secret_id.label")} - + @@ -195,10 +171,7 @@ const AccessTencentForm = ({ {t("access.authorization.form.secret_key.label")} - + diff --git a/ui/src/components/certimate/AccessWebhookFrom.tsx b/ui/src/components/certimate/AccessWebhookForm.tsx similarity index 81% rename from ui/src/components/certimate/AccessWebhookFrom.tsx rename to ui/src/components/certimate/AccessWebhookForm.tsx index dc508bb5..6cde4c59 100644 --- a/ui/src/components/certimate/AccessWebhookFrom.tsx +++ b/ui/src/components/certimate/AccessWebhookForm.tsx @@ -1,40 +1,24 @@ -import { Input } from "@/components/ui/input"; import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; - -import { zodResolver } from "@hookform/resolvers/zod"; - import z from "zod"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Button } from "@/components/ui/button"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ClientResponseError } from "pocketbase"; -import { - Access, - accessFormType, - getUsageByConfigType, - WebhookConfig, -} from "@/domain/access"; +import { Button } from "@/components/ui/button"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { PbErrorData } from "@/domain/base"; +import { Access, accessFormType, getUsageByConfigType, WebhookConfig } from "@/domain/access"; import { save } from "@/repository/access"; import { useConfig } from "@/providers/config"; -import { ClientResponseError } from "pocketbase"; -import { PbErrorData } from "@/domain/base"; -const WebhookForm = ({ - data, - op, - onAfterReq, -}: { - data?: Access; +type AccessWebhookFormProps = { op: "add" | "edit" | "copy"; + data?: Access; onAfterReq: () => void; -}) => { +}; + +const AccessWebhookForm = ({ data, op, onAfterReq }: AccessWebhookFormProps) => { const { addAccess, updateAccess } = useConfig(); const { t } = useTranslation(); const formSchema = z.object({ @@ -90,14 +74,12 @@ const WebhookForm = ({ } catch (e) { const err = e as ClientResponseError; - Object.entries(err.response.data as PbErrorData).forEach( - ([key, value]) => { - form.setError(key as keyof z.infer, { - type: "manual", - message: value.message, - }); - } - ); + Object.entries(err.response.data as PbErrorData).forEach(([key, value]) => { + form.setError(key as keyof z.infer, { + type: "manual", + message: value.message, + }); + }); } }; @@ -107,7 +89,6 @@ const WebhookForm = ({ { - console.log(e); e.stopPropagation(); form.handleSubmit(onSubmit)(e); }} @@ -120,10 +101,7 @@ const WebhookForm = ({ {t("access.authorization.form.name.label")} - + @@ -168,10 +146,7 @@ const WebhookForm = ({ {t("access.authorization.form.webhook_url.label")} - + @@ -189,4 +164,4 @@ const WebhookForm = ({ ); }; -export default WebhookForm; +export default AccessWebhookForm; diff --git a/ui/src/components/certimate/DeployList.tsx b/ui/src/components/certimate/DeployList.tsx index 4fb70cde..92424e96 100644 --- a/ui/src/components/certimate/DeployList.tsx +++ b/ui/src/components/certimate/DeployList.tsx @@ -1,50 +1,23 @@ -import { - createContext, - useCallback, - useContext, - useEffect, - useState, -} from "react"; -import { Button } from "../ui/button"; -import { EditIcon, Plus, Trash2 } from "lucide-react"; -import { - DeployConfig, - KVType, - targetTypeKeys, - targetTypeMap, -} from "@/domain/domain"; -import Show from "../Show"; -import { Alert, AlertDescription } from "../ui/alert"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "../ui/dialog"; - -import { Label } from "../ui/label"; -import { useConfig } from "@/providers/config"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectLabel, - SelectTrigger, - SelectValue, -} from "../ui/select"; -import { accessTypeMap } from "@/domain/access"; +import { createContext, useCallback, useContext, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import { AccessEdit } from "./AccessEdit"; -import { Input } from "../ui/input"; -import { Textarea } from "../ui/textarea"; -import KVList from "./KVList"; +import { z } from "zod"; import { produce } from "immer"; import { nanoid } from "nanoid"; -import { z } from "zod"; +import { EditIcon, Plus, Trash2 } from "lucide-react"; + +import Show from "@/components/Show"; +import { Alert, AlertDescription } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Textarea } from "@/components/ui/textarea"; +import AccessEdit from "./AccessEdit"; +import KVList from "./KVList"; +import { DeployConfig, KVType, targetTypeKeys, targetTypeMap } from "@/domain/domain"; +import { accessTypeMap } from "@/domain/access"; +import { useConfig } from "@/providers/config"; type DeployEditContextProps = { deploy: DeployConfig; @@ -53,9 +26,7 @@ type DeployEditContextProps = { setError: (error: Record) => void; }; -const DeployEditContext = createContext( - {} as DeployEditContextProps -); +const DeployEditContext = createContext({} as DeployEditContextProps); export const useDeployEditContext = () => { return useContext(DeployEditContext); @@ -156,11 +127,14 @@ const DeployList = ({ deploys, onChange }: DeployListProps) => { ); }; +export default DeployList; + type DeployItemProps = { item: DeployConfig; onDelete: () => void; onSave: (deploy: DeployConfig) => void; }; + const DeployItem = ({ item, onDelete, onSave }: DeployItemProps) => { const { config: { accesses }, @@ -232,11 +206,8 @@ type DeployEditDialogProps = { deployConfig?: DeployConfig; onSave: (deploy: DeployConfig) => void; }; -const DeployEditDialog = ({ - trigger, - deployConfig, - onSave, -}: DeployEditDialogProps) => { + +const DeployEditDialog = ({ trigger, deployConfig, onSave }: DeployEditDialogProps) => { const { config: { accesses }, } = useConfig(); @@ -265,13 +236,14 @@ const DeployEditDialog = ({ useEffect(() => { const temp = locDeployConfig.type.split("-"); - console.log(temp); + let t; if (temp && temp.length > 1) { t = temp[1]; } else { t = locDeployConfig.type; } + setDeployType(t as TargetType); setError({}); }, [locDeployConfig.type]); @@ -366,22 +338,15 @@ const DeployEditDialog = ({ }} > - + - - {t("domain.deployment.form.type.list")} - + {t("domain.deployment.form.type.list")} {targetTypeKeys.map((item) => (
- +
{t(targetTypeMap.get(item)?.[0] ?? "")}
@@ -415,24 +380,15 @@ const DeployEditDialog = ({ }} > - + - - {t("domain.deployment.form.access.list")} - + {t("domain.deployment.form.access.list")} {targetAccesses.map((item) => (
- +
{item.name}
@@ -468,29 +424,30 @@ type TargetType = "ssh" | "cdn" | "webhook" | "local" | "oss" | "dcdn"; type DeployEditProps = { type: TargetType; }; + const DeployEdit = ({ type }: DeployEditProps) => { const getDeploy = () => { switch (type) { case "ssh": - return ; + return ; case "local": - return ; + return ; case "cdn": - return ; + return ; case "dcdn": - return ; + return ; case "oss": - return ; + return ; case "webhook": - return ; + return ; default: - return ; + return ; } }; return getDeploy(); }; -const DeploySSH = () => { +const DeployToSSH = () => { const { t } = useTranslation(); const { setError } = useDeployEditContext(); @@ -536,9 +493,7 @@ const DeploySSH = () => {
{ @@ -558,9 +513,7 @@ const DeploySSH = () => { -
- {t("settings.notification.template.variables.tips.content")} -
+
{t("settings.notification.template.variables.tips.content")}
diff --git a/ui/src/components/notify/Telegram.tsx b/ui/src/components/notify/Telegram.tsx index 53911e8d..593359ba 100644 --- a/ui/src/components/notify/Telegram.tsx +++ b/ui/src/components/notify/Telegram.tsx @@ -1,15 +1,16 @@ -import { Input } from "../ui/input"; -import { Button } from "../ui/button"; -import { Switch } from "../ui/switch"; -import { Label } from "../ui/label"; -import { useNotify } from "@/providers/notify"; -import { NotifyChannels, NotifyChannelTelegram } from "@/domain/settings"; import { useEffect, useState } from "react"; -import { update } from "@/repository/settings"; -import { getErrMessage } from "@/lib/error"; -import { useToast } from "../ui/use-toast"; import { useTranslation } from "react-i18next"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Switch } from "@/components/ui/switch"; +import { useToast } from "@/components/ui/use-toast"; +import { getErrMessage } from "@/lib/error"; +import { NotifyChannels, NotifyChannelTelegram } from "@/domain/settings"; +import { update } from "@/repository/settings"; +import { useNotify } from "@/providers/notify"; + type TelegramSetting = { id: string; name: string; @@ -80,9 +81,7 @@ const Telegram = () => { toast({ title: t("common.save.failed.message"), - description: `${t( - "settings.notification.config.failed.message" - )}: ${msg}`, + description: `${t("settings.notification.config.failed.message")}: ${msg}`, variant: "destructive", }); } @@ -132,9 +131,7 @@ const Telegram = () => { }); }} /> - +
diff --git a/ui/src/components/notify/Webhook.tsx b/ui/src/components/notify/Webhook.tsx index 83bc451a..187c3527 100644 --- a/ui/src/components/notify/Webhook.tsx +++ b/ui/src/components/notify/Webhook.tsx @@ -1,16 +1,17 @@ -import { Input } from "../ui/input"; -import { Button } from "../ui/button"; -import { Switch } from "../ui/switch"; -import { Label } from "../ui/label"; -import { useNotify } from "@/providers/notify"; -import { NotifyChannels, NotifyChannelWebhook } from "@/domain/settings"; import { useEffect, useState } from "react"; -import { update } from "@/repository/settings"; -import { getErrMessage } from "@/lib/error"; -import { useToast } from "../ui/use-toast"; -import { isValidURL } from "@/lib/url"; import { useTranslation } from "react-i18next"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Switch } from "@/components/ui/switch"; +import { useToast } from "@/components/ui/use-toast"; +import { getErrMessage } from "@/lib/error"; +import { isValidURL } from "@/lib/url"; +import { NotifyChannels, NotifyChannelWebhook } from "@/domain/settings"; +import { update } from "@/repository/settings"; +import { useNotify } from "@/providers/notify"; + type WebhookSetting = { id: string; name: string; @@ -89,9 +90,7 @@ const Webhook = () => { toast({ title: t("common.save.failed.message"), - description: `${t( - "settings.notification.config.failed.message" - )}: ${msg}`, + description: `${t("settings.notification.config.failed.message")}: ${msg}`, variant: "destructive", }); } @@ -127,9 +126,7 @@ const Webhook = () => { }); }} /> - +
diff --git a/ui/src/components/ui/accordion.tsx b/ui/src/components/ui/accordion.tsx index 21887361..13d3fec9 100644 --- a/ui/src/components/ui/accordion.tsx +++ b/ui/src/components/ui/accordion.tsx @@ -6,16 +6,9 @@ import { cn } from "@/lib/utils"; const Accordion = AccordionPrimitive.Root; -const AccordionItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); +const AccordionItem = React.forwardRef, React.ComponentPropsWithoutRef>( + ({ className, ...props }, ref) => +); AccordionItem.displayName = "AccordionItem"; const AccordionTrigger = React.forwardRef< @@ -25,10 +18,7 @@ const AccordionTrigger = React.forwardRef< svg]:rotate-180", - className - )} + className={cn("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", className)} {...props} > {children} diff --git a/ui/src/components/ui/alert-dialog.tsx b/ui/src/components/ui/alert-dialog.tsx index 8722561c..3edeed91 100644 --- a/ui/src/components/ui/alert-dialog.tsx +++ b/ui/src/components/ui/alert-dialog.tsx @@ -1,14 +1,14 @@ -import * as React from "react" -import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; -import { cn } from "@/lib/utils" -import { buttonVariants } from "@/components/ui/button" +import { cn } from "@/lib/utils"; +import { buttonVariants } from "@/components/ui/button"; -const AlertDialog = AlertDialogPrimitive.Root +const AlertDialog = AlertDialogPrimitive.Root; -const AlertDialogTrigger = AlertDialogPrimitive.Trigger +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; -const AlertDialogPortal = AlertDialogPrimitive.Portal +const AlertDialogPortal = AlertDialogPrimitive.Portal; const AlertDialogOverlay = React.forwardRef< React.ElementRef, @@ -22,8 +22,8 @@ const AlertDialogOverlay = React.forwardRef< {...props} ref={ref} /> -)) -AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName +)); +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; const AlertDialogContent = React.forwardRef< React.ElementRef, @@ -40,89 +40,44 @@ const AlertDialogContent = React.forwardRef< {...props} /> -)) -AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName +)); +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; -const AlertDialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -AlertDialogHeader.displayName = "AlertDialogHeader" +const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +AlertDialogHeader.displayName = "AlertDialogHeader"; -const AlertDialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-) -AlertDialogFooter.displayName = "AlertDialogFooter" +const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes) => ( +
+); +AlertDialogFooter.displayName = "AlertDialogFooter"; const AlertDialogTitle = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName +>(({ className, ...props }, ref) => ); +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; const AlertDialogDescription = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogDescription.displayName = - AlertDialogPrimitive.Description.displayName +>(({ className, ...props }, ref) => ); +AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName; const AlertDialogAction = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName +>(({ className, ...props }, ref) => ); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; const AlertDialogCancel = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - -)) -AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName + +)); +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; export { AlertDialog, @@ -136,4 +91,4 @@ export { AlertDialogDescription, AlertDialogAction, AlertDialogCancel, -} +}; diff --git a/ui/src/components/ui/alert.tsx b/ui/src/components/ui/alert.tsx index 29bd44f0..3e828361 100644 --- a/ui/src/components/ui/alert.tsx +++ b/ui/src/components/ui/alert.tsx @@ -9,8 +9,7 @@ const alertVariants = cva( variants: { variant: { default: "bg-background text-foreground", - destructive: - "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", }, }, defaultVariants: { @@ -19,40 +18,18 @@ const alertVariants = cva( } ); -const Alert = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & VariantProps ->(({ className, variant, ...props }, ref) => ( -
-)); +const Alert = React.forwardRef & VariantProps>( + ({ className, variant, ...props }, ref) =>
+); Alert.displayName = "Alert"; -const AlertTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
+const AlertTitle = React.forwardRef>(({ className, ...props }, ref) => ( +
)); AlertTitle.displayName = "AlertTitle"; -const AlertDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
+const AlertDescription = React.forwardRef>(({ className, ...props }, ref) => ( +
)); AlertDescription.displayName = "AlertDescription"; diff --git a/ui/src/components/ui/badge.tsx b/ui/src/components/ui/badge.tsx index f000e3ef..8910ffb8 100644 --- a/ui/src/components/ui/badge.tsx +++ b/ui/src/components/ui/badge.tsx @@ -1,19 +1,16 @@ -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/lib/utils" +import { cn } from "@/lib/utils"; const badgeVariants = cva( "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", { variants: { variant: { - default: - "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", - secondary: - "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", - destructive: - "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", outline: "text-foreground", }, }, @@ -21,16 +18,12 @@ const badgeVariants = cva( variant: "default", }, } -) +); -export interface BadgeProps - extends React.HTMLAttributes, - VariantProps {} +export interface BadgeProps extends React.HTMLAttributes, VariantProps {} function Badge({ className, variant, ...props }: BadgeProps) { - return ( -
- ) + return
; } -export { Badge, badgeVariants } +export { Badge, badgeVariants }; diff --git a/ui/src/components/ui/breadcrumb.tsx b/ui/src/components/ui/breadcrumb.tsx index 71a5c325..c9813bda 100644 --- a/ui/src/components/ui/breadcrumb.tsx +++ b/ui/src/components/ui/breadcrumb.tsx @@ -1,115 +1,57 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { ChevronRight, MoreHorizontal } from "lucide-react" +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "@/lib/utils" +import { cn } from "@/lib/utils"; const Breadcrumb = React.forwardRef< HTMLElement, React.ComponentPropsWithoutRef<"nav"> & { - separator?: React.ReactNode + separator?: React.ReactNode; } ->(({ ...props }, ref) =>