diff --git a/README.md b/README.md index 09a7b84e8..fdb1d537d 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ fastgpt.run 域名会弃用。 - [x] 混合检索 & 重排 - [x] Tool 模块 - [ ] 嵌入 [Laf](https://github.com/labring/laf),实现在线编写 HTTP 模块 - - [ ] 插件封装功能 + - [ ] 插件封装功能,支持低代码渲染 `2` 知识库能力 - [x] 多库复用,混用 @@ -68,9 +68,8 @@ fastgpt.run 域名会弃用。 - [x] 支持知识库单独设置向量模型 - [x] 源文件存储 - [x] 支持手动输入,直接分段,QA 拆分导入 - - [x] 支持 pdf,docx,txt,html,md,csv + - [x] 支持。txt, 。md, 。html, 。pdf, 。docx,pptx, 。csv, 。xlsx (有需要更多可 PR file loader) - [x] 支持 url 读取、CSV 批量导入 - - [ ] 支持 PPT、Excel 导入 - [ ] 支持文件阅读器 - [ ] 更多的数据预处理方案 @@ -114,7 +113,7 @@ fastgpt.run 域名会弃用。 * [多模型配置](https://doc.fastgpt.in/docs/development/one-api/) * [版本更新/升级介绍](https://doc.fastgpt.in/docs/development/upgrading) * [OpenAPI API 文档](https://doc.fastgpt.in/docs/development/openapi/) -* [知识库结构详解](https://doc.fastgpt.in/docs/course/datasetengine/) +* [知识库结构详解](https://doc.fastgpt.in/docs/course/dataset_engine/) # diff --git a/docSite/content/docs/course/ai_settings.md b/docSite/content/docs/course/ai_settings.md index fbdd7a08c..12b14a29d 100644 --- a/docSite/content/docs/course/ai_settings.md +++ b/docSite/content/docs/course/ai_settings.md @@ -64,7 +64,7 @@ Tips: 可以通过点击上下文按键查看完整的上下文组成,便于 FastGPT 知识库采用 QA 对(不一定都是问答格式,仅代表两个变量)的格式存储,在转义成字符串时候会根据**引用模板**来进行格式化。知识库包含多个可用变量: q, a, sourceId(数据的ID), index(第n个数据), source(数据的集合名、文件名),score(距离得分,0-1) 可以通过 {{q}} {{a}} {{sourceId}} {{index}} {{source}} {{score}} 按需引入。下面一个模板例子: -可以通过 [知识库结构讲解](/docs/course/datasetEngine/) 了解详细的知识库的结构。 +可以通过 [知识库结构讲解](/docs/course/dataset_engine/) 了解详细的知识库的结构。 #### 引用模板 diff --git a/docSite/content/docs/course/datasetEngine.md b/docSite/content/docs/course/datasetEngine.md deleted file mode 100644 index 2d2013eb9..000000000 --- a/docSite/content/docs/course/datasetEngine.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "知识库结构讲解" -description: "本节会详细介绍 FastGPT 知识库结构设计,理解其 QA 的存储格式和多向量映射,以便更好的构建知识库。这篇介绍主要以使用为主,详细原理不多介绍。" -icon: "dataset" -draft: false -toc: true -weight: 102 ---- - -## 理解向量 - -FastGPT 采用了 RAG 中的 Embedding 方案构建知识库,要使用好 FastGPT 需要简单的理解`Embedding`向量是如何工作的及其特点。 - -人类的文字、图片、视频等媒介是无法直接被计算机理解的,要想让计算机理解两段文字是否有相似性、相关性,通常需要将它们转成计算机可以理解的语言,向量是其中的一种方式。 - -向量可以简单理解为一个数字数组,两个向量之间可以通过数学公式得出一个`距离`,距离越小代表两个向量的相似度越大。从而映射到文字、图片、视频等媒介上,可以用来判断两个媒介之间的相似度。向量搜索便是利用了这个原理。 - -而由于文字是有多种类型,并且拥有成千上万种组合方式,因此在转成向量进行相似度匹配时,很难保障其精确性。在向量方案构建的知识库中,通常使用`topk`召回的方式,也就是查找前`k`个最相似的内容,丢给大模型去做更进一步的`语义判断`、`逻辑推理`和`归纳总结`,从而实现知识库问答。因此,在知识库问答中,向量搜索的环节是最为重要的。 - -影响向量搜索精度的因素非常多,主要包括:向量模型的质量、数据的质量(长度,完整性,多样性)、检索器的精度(速度与精度之间的取舍)。与数据质量对应的就是检索词的质量。 - -检索器的精度比较容易解决,向量模型的训练略复杂,因此数据和检索词质量优化成了一个重要的环节。 - -## FastGPT 中向量的结构设计 - -FastGPT 采用了 `PostgresSQL` 的 `PG Vector` 插件作为向量检索器,索引为`HNSW`。且`PostgresSQL`仅用于向量检索,`MongoDB`用于其他数据的存取。 - -在`MongoDB`的`dataset.datas`表中,会存储向量原数据的信息,同时有一个`indexes`字段,会记录其对应的向量ID,这是一个数组,也就是说,一组向量可以对应多组数据。 - -在`PostgresSQL`的表中,设置一个 `index` 字段用于存储向量。在检索时,会先召回向量,再根据向量的ID,去`MongoDB`中寻找原数据内容,如果对应了同一组原数据,则进行合并,向量得分取最高得分。 - -![](/imgs/datasetSetting1.png) - -### 多向量的目的和使用方式 - -在一组向量中,内容的长度和语义的丰富度通常是矛盾的,无法兼得。因此,FastGPT 采用了多向量映射的方式,将一组数据映射到多组向量中,从而保障数据的完整性和语义的丰富度。 - -你可以为一组较长的文本,添加多组向量,从而在检索时,只要其中一组向量被检索到,该数据也将被召回。 - -### 提高向量搜索精度的方法 - -1. 更好分词分段:当一段话的结构和语义是完整的,并且是单一的,精度也会提高。因此,许多系统都会优化分词器,尽可能的保障每组数据的完整性。 -2. 精简`index`的内容,减少向量内容的长度:当`index`的内容更少,更准确时,检索精度自然会提高。但与此同时,会牺牲一定的检索范围,适合答案较为严格的场景。 -3. 丰富`index`的数量,可以为同一个`chunk`内容增加多组`index`。 -4. 优化检索词:在实际使用过程中,用户的问题通常是模糊的或是缺失的,并不一定是完整清晰的问题。因此优化用户的问题(检索词)很大程度上也可以提高精度。 -5. 微调向量模型:由于市面上直接使用的向量模型都是通用型模型,在特定领域的检索精度并不高,因此微调向量模型可以很大程度上提高专业领域的检索效果。 - -## FastGPT 构建知识库方案 - -在 FastGPT 中,整个知识库由库、集合和数据 3 部分组成。集合可以简单理解为一个`文件`。一个`库`中可以包含多个`集合`,一个`集合`中可以包含多组`数据`。最小的搜索单位是`库`,也就是说,知识库搜索时,是对整个`库`进行搜索,而集合仅是为了对数据进行分类管理,与搜索效果无关。(起码目前还是) - -| 库 | 集合 | 数据 | -| --- | --- | --- | -| ![](/imgs/datasetEngine1.jpg) | ![](/imgs/datasetEngine2.jpg) | ![](/imgs/datasetEngine3.webp) | - -### 导入数据方案1 - 直接分段导入 - -选择文件导入时,可以选择直接分段方案。直接分段会利用`句子分词器`对文本进行一定长度拆分,最终分割中多组的`q`。如果使用了直接分段方案,我们建议在`应用`设置`引用提示词`时,使用`通用模板`即可,无需选择`问答模板`。 - -| 交互 | 结果 | -| --- | --- | -| ![](/imgs/datasetEngine4.webp) | ![](/imgs/datasetEngine5.webp) | - - -### 导入数据方案2 - QA导入 - -选择文件导入时,可以选择QA拆分方案。仍然需要使用到`句子分词器`对文本进行拆分,但长度比直接分段大很多。在导入后,会先调用`大模型`对分段进行学习,并给出一些`问题`和`答案`,最终问题和答案会一起被存储到`q`中。注意,新版的 FastGPT 为了提高搜索的范围,不再将问题和答案分别存储到 qa 中。 - -| 交互 | 结果 | -| --- | --- | -| ![](/imgs/datasetEngine6.webp) | ![](/imgs/datasetEngine7.webp) | - -### 导入数据方案3 - 手动录入 - -在 FastGPT 中,你可以在任何一个`集合`中点击右上角的`插入`手动录入知识点,或者使用`标注`功能手动录入。被搜索的内容为`q`,补充内容(可选)为`a`。 - -| | | | -| --- | --- | --- | -| ![](/imgs/datasetEngine8.jpg) | ![](/imgs/datasetEngine9.jpg) | ![](/imgs/datasetEngine10.jpg) | - -### 导入数据方案4 - CSV录入 - -有些数据较为独特,可能需要单独的进行预处理分割后再导入 FastGPT,此时可以选择 csv 导入,可批量的将处理好的数据导入。 - -![](/imgs/datasetEngine11.jpg) - -### 导入数据方案5 - API导入 - -参考[FastGPT OpenAPI使用](/docs/development/openapi)。 - -## QA的组合与引用提示词构建 - -参考[引用模板与引用提示词示例](/docs/course/ai_settings/#示例) diff --git a/docSite/content/docs/course/dataset_engine.md b/docSite/content/docs/course/dataset_engine.md new file mode 100644 index 000000000..23d191eaf --- /dev/null +++ b/docSite/content/docs/course/dataset_engine.md @@ -0,0 +1,136 @@ +--- +title: '知识库搜索方案和参数' +description: '本节会详细介绍 FastGPT 知识库结构设计,理解其 QA 的存储格式和多向量映射,以便更好的构建知识库。同时会介绍每个搜索参数的功能。这篇介绍主要以使用为主,详细原理不多介绍。' +icon: 'language' +draft: false +toc: true +weight: 106 +--- + +## 理解向量 + +FastGPT 采用了 RAG 中的 Embedding 方案构建知识库,要使用好 FastGPT 需要简单的理解`Embedding`向量是如何工作的及其特点。 + +人类的文字、图片、视频等媒介是无法直接被计算机理解的,要想让计算机理解两段文字是否有相似性、相关性,通常需要将它们转成计算机可以理解的语言,向量是其中的一种方式。 + +向量可以简单理解为一个数字数组,两个向量之间可以通过数学公式得出一个`距离`,距离越小代表两个向量的相似度越大。从而映射到文字、图片、视频等媒介上,可以用来判断两个媒介之间的相似度。向量搜索便是利用了这个原理。 + +而由于文字是有多种类型,并且拥有成千上万种组合方式,因此在转成向量进行相似度匹配时,很难保障其精确性。在向量方案构建的知识库中,通常使用`topk`召回的方式,也就是查找前`k`个最相似的内容,丢给大模型去做更进一步的`语义判断`、`逻辑推理`和`归纳总结`,从而实现知识库问答。因此,在知识库问答中,向量搜索的环节是最为重要的。 + +影响向量搜索精度的因素非常多,主要包括:向量模型的质量、数据的质量(长度,完整性,多样性)、检索器的精度(速度与精度之间的取舍)。与数据质量对应的就是检索词的质量。 + +检索器的精度比较容易解决,向量模型的训练略复杂,因此数据和检索词质量优化成了一个重要的环节。 + + +### 提高向量搜索精度的方法 + +1. 更好分词分段:当一段话的结构和语义是完整的,并且是单一的,精度也会提高。因此,许多系统都会优化分词器,尽可能的保障每组数据的完整性。 +2. 精简`index`的内容,减少向量内容的长度:当`index`的内容更少,更准确时,检索精度自然会提高。但与此同时,会牺牲一定的检索范围,适合答案较为严格的场景。 +3. 丰富`index`的数量,可以为同一个`chunk`内容增加多组`index`。 +4. 优化检索词:在实际使用过程中,用户的问题通常是模糊的或是缺失的,并不一定是完整清晰的问题。因此优化用户的问题(检索词)很大程度上也可以提高精度。 +5. 微调向量模型:由于市面上直接使用的向量模型都是通用型模型,在特定领域的检索精度并不高,因此微调向量模型可以很大程度上提高专业领域的检索效果。 + +## FastGPT 构建知识库方案 + +### 数据存储结构 + +在 FastGPT 中,整个知识库由库、集合和数据 3 部分组成。集合可以简单理解为一个`文件`。一个`库`中可以包含多个`集合`,一个`集合`中可以包含多组`数据`。最小的搜索单位是`库`,也就是说,知识库搜索时,是对整个`库`进行搜索,而集合仅是为了对数据进行分类管理,与搜索效果无关。(起码目前还是) + +![](/imgs/dataset_tree.png) + +### 向量存储结构 + +FastGPT 采用了`PostgresSQL`的`PG Vector`插件作为向量检索器,索引为`HNSW`。且`PostgresSQL`仅用于向量检索(该引擎可以替换成其它数据库),`MongoDB`用于其他数据的存取。 + +在`MongoDB`的`dataset.datas`表中,会存储向量原数据的信息,同时有一个`indexes`字段,会记录其对应的向量ID,这是一个数组,也就是说,一组向量可以对应多组数据。 + +在`PostgresSQL`的表中,设置一个`vector`字段用于存储向量。在检索时,会先召回向量,再根据向量的ID,去`MongoDB`中寻找原数据内容,如果对应了同一组原数据,则进行合并,向量得分取最高得分。 + +![](/imgs/datasetSetting1.png) + +### 多向量的目的和使用方式 + +在一组向量中,内容的长度和语义的丰富度通常是矛盾的,无法兼得。因此,FastGPT 采用了多向量映射的方式,将一组数据映射到多组向量中,从而保障数据的完整性和语义的丰富度。 + +你可以为一组较长的文本,添加多组向量,从而在检索时,只要其中一组向量被检索到,该数据也将被召回。 + +意味着,你可以通过标注数据块的方式,不断提高数据块的精度。 + +### 检索方案 + +1. 通过`问题优化`实现指代消除和问题扩展,从而增加连续对话的检索能力以及语义丰富度。 +2. 通过`Concat query`来增加`Rerank`连续对话的时,排序的准确性。 +3. 通过`RRF`合并方式,综合多个渠道的检索效果。 +4. 通过`Rerank`来二次排序,提高精度。 + +![](/imgs/dataset_search_process.png) + + +## 搜索参数 +| | | | +| --- |---| --- | +|![](/imgs/dataset_search_params1.png)| ![](/imgs/dataset_search_params2.png) | ![](/imgs/dataset_search_params3.png) | + +### 搜索模式 + +#### 语义检索 + +语义检索是通过向量距离,计算用户问题与知识库内容的距离,从而得出“相似度”,当然这并不是语文上的相似度,而是数学上的。 + +优点: +- 相近语义理解 +- 跨多语言理解(例如输入中文问题匹配英文知识点) +- 多模态理解(文本,图片,音视频等) + +缺点: +- 依赖模型训练效果 +- 精度不稳定 +- 受关键词和句子完整度影响 + +#### 全文检索 + +采用传统的全文检索方式。适合查找关键的主谓语等。 + +#### 混合检索 + +同时使用向量检索和全文检索,并通过 RRF 公式进行两个搜索结果合并,一般情况下搜索结果会更加丰富准确。 + +由于混合检索后的查找范围很大,并且无法直接进行相似度过滤,通常需要进行利用重排模型进行一次结果重新排序,并利用重排的得分进行过滤。 + +#### 结果重排 + +利用`ReRank`模型对搜索结果进行重排,绝大多数情况下,可以有效提高搜索结果的准确率。不过,重排模型与问题的完整度(主谓语齐全)有一些关系,通常会先走问题优化后再进行搜索-重排。重排后可以得到一个`0-1`的得分,代表着搜索内容与问题的相关度,该分数通常比向量的得分更加精确,可以根据得分进行过滤。 + +FastGPT 会使用 `RRF` 对重排结果、向量搜索结果、全文检索结果进行合并,得到最终的搜索结果。 + +### 搜索过滤 + +#### 引用上限 + +每次搜索最多引用`n`个`tokens`的内容。 + +之所以不采用`top k`,是发现在混合知识库(问答库、文档库)时,不同`chunk`的长度差距很大,会导致`top k`的结果不稳定,因此采用了`tokens`的方式进行引用上限的控制。 + +#### 最低相关度 + +一个`0-1`的数值,会过滤掉一些低相关度的搜索结果。 + +该值仅在`语义检索`或使用`结果重排`时生效。 + +### 问题优化 + +#### 背景 + +在 RAG 中,我们需要根据输入的问题去数据库里执行 embedding 搜索,查找相关的内容,从而查找到相似的内容(简称知识库搜索)。 + +在搜索的过程中,尤其是连续对话的搜索,我们通常会发现后续的问题难以搜索到合适的内容,其中一个原因是知识库搜索只会使用“当前”的问题去执行。看下面的例子: + +![](/imgs/coreferenceResolution2.webp) + +用户在提问“第二点是什么”的时候,只会去知识库里查找“第二点是什么”,压根查不到内容。实际上需要查询的是“QA结构是什么”。因此我们需要引入一个【问题优化】模块,来对用户当前的问题进行补全,从而使得知识库搜索能够搜索到合适的内容。使用补全后效果如下: + +![](/imgs/coreferenceResolution3.webp) + +#### 实现方式 + +在进行`数据检索`前,会先让模型进行`指代消除`与`问题扩展`,一方面可以可以解决指代对象不明确问题,同时可以扩展问题的语义丰富度。你可以通过每次对话后的对话详情,查看补全的结果。 diff --git a/docSite/content/docs/development/configuration.md b/docSite/content/docs/development/configuration.md index b397476e4..8a94c9e09 100644 --- a/docSite/content/docs/development/configuration.md +++ b/docSite/content/docs/development/configuration.md @@ -19,6 +19,9 @@ llm模型全部合并 ```json { + "feConfigs": { + "lafEnv": "https://laf.dev" // laf环境 + }, "systemEnv": { "vectorMaxProcess": 15, "qaMaxProcess": 15, @@ -164,7 +167,7 @@ llm模型全部合并 "model": "bge-reranker-base", // 随意 "name": "检索重排-base", // 随意 "charsPointsPrice": 0, - "requestUrl": "{{host}}/api/v1/rerank", + "requestUrl": "{{host}}/v1/rerank", "requestAuth": "安全凭证,已自动补 Bearer" } ] diff --git a/docSite/content/docs/development/custom-models/reranker.md b/docSite/content/docs/development/custom-models/reranker.md index 137636453..06d40923f 100644 --- a/docSite/content/docs/development/custom-models/reranker.md +++ b/docSite/content/docs/development/custom-models/reranker.md @@ -44,7 +44,7 @@ weight: 910 ### docker 部署 -+ 镜像名: `luanshaotong/reranker:v0.2` ++ 镜像名: `registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2` + 端口号: 6006 + 大小:约8GB @@ -56,12 +56,12 @@ ACCESS_TOKEN=mytoken **运行命令示例** - 无需GPU环境,使用CPU运行 ```sh -docker run -d --name reranker -p 6006:6006 -e ACCESS_TOKEN=mytoken luanshaotong/reranker:v0.2 +docker run -d --name reranker -p 6006:6006 -e ACCESS_TOKEN=mytoken registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2 ``` - 需要CUDA 11.7环境 ```sh -docker run -d --gpus all --name reranker -p 6006:6006 -e ACCESS_TOKEN=mytoken luanshaotong/reranker:v0.2 +docker run -d --gpus all --name reranker -p 6006:6006 -e ACCESS_TOKEN=mytoken registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2 ``` **docker-compose.yml示例** @@ -69,7 +69,7 @@ docker run -d --gpus all --name reranker -p 6006:6006 -e ACCESS_TOKEN=mytoken lu version: "3" services: reranker: - image: luanshaotong/reranker:v0.2 + image: registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2 container_name: reranker # GPU运行环境,如果宿主机未安装,将deploy配置隐藏即可 deploy: diff --git a/docSite/content/docs/development/upgrading/47.md b/docSite/content/docs/development/upgrading/47.md index 907781a08..ebcf33e0a 100644 --- a/docSite/content/docs/development/upgrading/47.md +++ b/docSite/content/docs/development/upgrading/47.md @@ -1,5 +1,5 @@ --- -title: 'V4.7(进行中)' +title: 'V4.7' description: 'FastGPT V4.7更新说明' icon: 'upgrade' draft: false @@ -26,7 +26,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv47' \ ## 3. 升级 ReRank 模型 -4.7对ReRank模型进行了格式变动,兼容 cohere 的格式,可以直接使用 cohere 提供的 API。如果是本地的 ReRank 模型,需要修改镜像为:`luanshaotong/reranker:v0.2` 。 +4.7对ReRank模型进行了格式变动,兼容 cohere 的格式,可以直接使用 cohere 提供的 API。如果是本地的 ReRank 模型,需要修改镜像为:`registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2` 。 cohere的重排模型对中文不是很好,感觉不如 bge 的好用,接入教程如下: diff --git a/docSite/content/docs/development/upgrading/471.md b/docSite/content/docs/development/upgrading/471.md new file mode 100644 index 000000000..81939f723 --- /dev/null +++ b/docSite/content/docs/development/upgrading/471.md @@ -0,0 +1,28 @@ +--- +title: 'V4.7.1' +description: 'FastGPT V4.7.1 更新说明' +icon: 'upgrade' +draft: false +toc: true +weight: 825 +--- + +## 初始化脚本 + +从任意终端,发起 1 个 HTTP 请求。其中 {{rootkey}} 替换成环境变量里的 `rootkey`;{{host}} 替换成FastGPT的域名。 + +```bash +curl --location --request POST 'https://{{host}}/api/admin/clearInvalidData' \ +--header 'rootkey: {{rootkey}}' \ +--header 'Content-Type: application/json' +``` + +该请求会执行脏数据清理(清理无效的文件、清理无效的图片、清理无效的知识库集合、清理无效的向量) + +## V4.7.1 更新说明 + +1. 新增 - Pptx 和 xlsx 文件读取。但所有文件读取都放服务端,会消耗更多的服务器资源,以及无法在上传时预览更多内容。 +2. 新增 - 集成 Laf 云函数,可以读取 Laf 账号中的云函数作为 HTTP 模块。 +3. 新增 - 定时器,清理垃圾数据。(采用小范围清理,会清理最近n个小时的,所以请保证服务持续运行,长时间不允许,可以继续执行 clearInvalidData 的接口进行全量清理。) +4. 修改 - csv导入模板,取消 header 校验,自动获取前两列。 +5. 修复 - 工具调用模块连线数据类型校验错误。 \ No newline at end of file diff --git a/packages/global/common/file/icon.ts b/packages/global/common/file/icon.ts index d687383ca..5c56cd19b 100644 --- a/packages/global/common/file/icon.ts +++ b/packages/global/common/file/icon.ts @@ -1,5 +1,7 @@ export const fileImgs = [ { suffix: 'pdf', src: 'file/fill/pdf' }, + { suffix: 'ppt', src: 'file/fill/ppt' }, + { suffix: 'xlsx', src: 'file/fill/xlsx' }, { suffix: 'csv', src: 'file/fill/csv' }, { suffix: '(doc|docs)', src: 'file/fill/doc' }, { suffix: 'txt', src: 'file/fill/txt' }, diff --git a/packages/global/common/file/tools.ts b/packages/global/common/file/tools.ts index 8b8414bc5..1bbdb2e49 100644 --- a/packages/global/common/file/tools.ts +++ b/packages/global/common/file/tools.ts @@ -11,5 +11,5 @@ export const formatFileSize = (bytes: number): string => { }; export const detectFileEncoding = (buffers: string | Buffer) => { - return detect(buffers)?.encoding || 'utf-8'; + return (detect(buffers)?.encoding || 'utf-8') as BufferEncoding; }; diff --git a/packages/global/common/system/types/index.d.ts b/packages/global/common/system/types/index.d.ts index 81def51f3..b60e51f5c 100644 --- a/packages/global/common/system/types/index.d.ts +++ b/packages/global/common/system/types/index.d.ts @@ -57,6 +57,7 @@ export type FastGPTFeConfigsType = { uploadFileMaxAmount?: number; uploadFileMaxSize?: number; + lafEnv?: string; }; export type SystemEnvType = { diff --git a/packages/global/core/module/node/constant.ts b/packages/global/core/module/node/constant.ts index 7239e4bab..dde75965e 100644 --- a/packages/global/core/module/node/constant.ts +++ b/packages/global/core/module/node/constant.ts @@ -61,7 +61,8 @@ export enum FlowNodeTypeEnum { pluginOutput = 'pluginOutput', queryExtension = 'cfr', tools = 'tools', - stopTool = 'stopTool' + stopTool = 'stopTool', + lafModule = 'lafModule' // abandon } diff --git a/packages/global/core/module/template/constants.ts b/packages/global/core/module/template/constants.ts index 5126fb24d..74e85bce3 100644 --- a/packages/global/core/module/template/constants.ts +++ b/packages/global/core/module/template/constants.ts @@ -20,6 +20,7 @@ import { AiQueryExtension } from './system/queryExtension'; import type { FlowNodeTemplateType, moduleTemplateListType } from '../../module/type.d'; import { FlowNodeTemplateTypeEnum } from '../../module/constants'; +import { lafModule } from './system/laf'; /* app flow module templates */ export const appSystemModuleTemplates: FlowNodeTemplateType[] = [ @@ -35,7 +36,8 @@ export const appSystemModuleTemplates: FlowNodeTemplateType[] = [ ClassifyQuestionModule, ContextExtractModule, HttpModule468, - AiQueryExtension + AiQueryExtension, + lafModule ]; /* plugin flow module templates */ export const pluginSystemModuleTemplates: FlowNodeTemplateType[] = [ @@ -51,7 +53,8 @@ export const pluginSystemModuleTemplates: FlowNodeTemplateType[] = [ ClassifyQuestionModule, ContextExtractModule, HttpModule468, - AiQueryExtension + AiQueryExtension, + lafModule ]; /* all module */ @@ -73,7 +76,8 @@ export const moduleTemplatesFlat: FlowNodeTemplateType[] = [ PluginInputModule, PluginOutputModule, RunPluginModule, - AiQueryExtension + AiQueryExtension, + lafModule ]; export const moduleTemplatesList: moduleTemplateListType = [ diff --git a/packages/global/core/module/template/system/laf.ts b/packages/global/core/module/template/system/laf.ts new file mode 100644 index 000000000..d2f144a22 --- /dev/null +++ b/packages/global/core/module/template/system/laf.ts @@ -0,0 +1,86 @@ +import { + FlowNodeInputTypeEnum, + FlowNodeOutputTypeEnum, + FlowNodeTypeEnum +} from '../../node/constant'; +import { FlowNodeTemplateType } from '../../type'; +import { + ModuleIOValueTypeEnum, + ModuleInputKeyEnum, + ModuleOutputKeyEnum, + FlowNodeTemplateTypeEnum +} from '../../constants'; +import { + Input_Template_DynamicInput, + Input_Template_Switch, + Input_Template_AddInputParam +} from '../input'; +import { Output_Template_Finish, Output_Template_AddOutput } from '../output'; + +export const lafModule: FlowNodeTemplateType = { + id: FlowNodeTypeEnum.lafModule, + templateType: FlowNodeTemplateTypeEnum.externalCall, + flowType: FlowNodeTypeEnum.lafModule, + avatar: '/imgs/module/laf.png', + name: 'Laf 函数调用(测试)', + intro: '可以调用Laf账号下的云函数。', + showStatus: true, + isTool: true, + inputs: [ + Input_Template_Switch, + { + key: ModuleInputKeyEnum.httpReqUrl, + type: FlowNodeInputTypeEnum.hidden, + valueType: ModuleIOValueTypeEnum.string, + label: '', + description: 'core.module.input.description.Http Request Url', + placeholder: 'https://api.ai.com/getInventory', + required: false, + showTargetInApp: false, + showTargetInPlugin: false + }, + Input_Template_DynamicInput, + { + ...Input_Template_AddInputParam, + editField: { + key: true, + description: true, + dataType: true + }, + defaultEditField: { + label: '', + key: '', + description: '', + inputType: FlowNodeInputTypeEnum.target, + valueType: ModuleIOValueTypeEnum.string + } + } + ], + outputs: [ + { + key: ModuleOutputKeyEnum.httpRawResponse, + label: '原始响应', + description: 'HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。', + valueType: ModuleIOValueTypeEnum.any, + type: FlowNodeOutputTypeEnum.source, + targets: [] + }, + { + ...Output_Template_AddOutput, + editField: { + key: true, + description: true, + dataType: true, + defaultValue: true + }, + defaultEditField: { + label: '', + key: '', + description: '', + outputType: FlowNodeOutputTypeEnum.source, + valueType: ModuleIOValueTypeEnum.string + } + }, + Output_Template_Finish + ] +}; diff --git a/packages/global/core/module/type.d.ts b/packages/global/core/module/type.d.ts index 04107dcc0..5b6160bb9 100644 --- a/packages/global/core/module/type.d.ts +++ b/packages/global/core/module/type.d.ts @@ -9,6 +9,7 @@ import { DispatchNodeResponseKeyEnum } from './runtime/constants'; import { FlowNodeInputItemType, FlowNodeOutputItemType } from './node/type'; import { UserModelSchema } from 'support/user/type'; import { + ChatItemType, ChatItemValueItemType, ToolRunResponseItemType, UserChatItemValueItemType diff --git a/packages/global/core/plugin/httpPlugin/utils.ts b/packages/global/core/plugin/httpPlugin/utils.ts index b73ec2bb4..c3b452b05 100644 --- a/packages/global/core/plugin/httpPlugin/utils.ts +++ b/packages/global/core/plugin/httpPlugin/utils.ts @@ -41,7 +41,7 @@ export const str2OpenApiSchema = async (yamlStr = ''): Promise { - switch (extension) { - case 'txt': - return readFileRawText(params); - case 'md': - return readMarkdown(params); - case 'html': - return readHtmlRawText(params); - case 'pdf': - return readPdfFile(params); - case 'docx': - return readWordFile(params); - case 'pptx': - return readPptxRawText(params); - case 'xlsx': - const xlsxResult = await readXlsxRawText(params); - if (csvFormat) { - return { - rawText: xlsxResult.formatText || '' - }; - } - return { - rawText: xlsxResult.rawText - }; - case 'csv': - const csvResult = await readCsvRawText(params); - if (csvFormat) { - return { - rawText: csvResult.formatText || '' - }; - } - return { - rawText: csvResult.rawText - }; - default: - return Promise.reject('Only support .txt, .md, .html, .pdf, .docx, pptx, .csv, .xlsx'); - } - })(); + const { rawText } = await readFileRawContent({ + extension, + csvFormat, + params + }); if (rawText.trim()) { - await MongoRwaTextBuffer.create({ + MongoRwaTextBuffer.create({ sourceId: fileId, rawText, metadata: { diff --git a/packages/service/common/file/read/utils.ts b/packages/service/common/file/read/utils.ts index a78683d2d..676d3d022 100644 --- a/packages/service/common/file/read/utils.ts +++ b/packages/service/common/file/read/utils.ts @@ -2,6 +2,15 @@ import { markdownProcess } from '@fastgpt/global/common/string/markdown'; import { uploadMongoImg } from '../image/controller'; import { MongoImageTypeEnum } from '@fastgpt/global/common/file/image/constants'; import { addHours } from 'date-fns'; +import { ReadFileByBufferParams } from './type'; +import { readFileRawText } from '../read/rawText'; +import { readMarkdown } from '../read/markdown'; +import { readHtmlRawText } from '../read/html'; +import { readPdfFile } from '../read/pdf'; +import { readWordFile } from '../read/word'; +import { readCsvRawText } from '../read/csv'; +import { readPptxRawText } from '../read/pptx'; +import { readXlsxRawText } from '../read/xlsx'; export const initMarkdownText = ({ teamId, @@ -23,3 +32,50 @@ export const initMarkdownText = ({ expiredTime: addHours(new Date(), 2) }) }); + +export const readFileRawContent = async ({ + extension, + csvFormat, + params +}: { + csvFormat?: boolean; + extension: string; + params: ReadFileByBufferParams; +}) => { + switch (extension) { + case 'txt': + return readFileRawText(params); + case 'md': + return readMarkdown(params); + case 'html': + return readHtmlRawText(params); + case 'pdf': + return readPdfFile(params); + case 'docx': + return readWordFile(params); + case 'pptx': + return readPptxRawText(params); + case 'xlsx': + const xlsxResult = await readXlsxRawText(params); + if (csvFormat) { + return { + rawText: xlsxResult.formatText || '' + }; + } + return { + rawText: xlsxResult.rawText + }; + case 'csv': + const csvResult = await readCsvRawText(params); + if (csvFormat) { + return { + rawText: csvResult.formatText || '' + }; + } + return { + rawText: csvResult.rawText + }; + default: + return Promise.reject('Only support .txt, .md, .html, .pdf, .docx, pptx, .csv, .xlsx'); + } +}; diff --git a/packages/service/common/file/utils.ts b/packages/service/common/file/utils.ts index 231771832..7a9ef5c0b 100644 --- a/packages/service/common/file/utils.ts +++ b/packages/service/common/file/utils.ts @@ -55,8 +55,8 @@ export const clearTmpUploadFiles = () => { fs.stat(filePath, (err, stats) => { if (err) return; - // 如果文件是在1小时前上传的,则认为是临时文件并删除它 - if (Date.now() - stats.mtime.getTime() > 1 * 60 * 60 * 1000) { + // 如果文件是在2小时前上传的,则认为是临时文件并删除它 + if (Date.now() - stats.mtime.getTime() > 2 * 60 * 60 * 1000) { fs.unlink(filePath, (err) => { if (err) return; console.log(`Deleted temp file: ${filePath}`); diff --git a/packages/service/common/system/timerLock/constants.ts b/packages/service/common/system/timerLock/constants.ts new file mode 100644 index 000000000..2588c3359 --- /dev/null +++ b/packages/service/common/system/timerLock/constants.ts @@ -0,0 +1,15 @@ +export enum TimerIdEnum { + checkInValidDatasetFiles = 'checkInValidDatasetFiles', + checkInvalidDatasetData = 'checkInvalidDatasetData', + checkInvalidVector = 'checkInvalidVector', + clearExpiredSubPlan = 'clearExpiredSubPlan', + updateStandardPlan = 'updateStandardPlan' +} + +export const timerIdMap = { + [TimerIdEnum.checkInValidDatasetFiles]: 'checkInValidDatasetFiles', + [TimerIdEnum.checkInvalidDatasetData]: 'checkInvalidDatasetData', + [TimerIdEnum.checkInvalidVector]: 'checkInvalidVector', + [TimerIdEnum.clearExpiredSubPlan]: 'clearExpiredSubPlan', + [TimerIdEnum.updateStandardPlan]: 'updateStandardPlan' +}; diff --git a/packages/service/common/system/timerLock/schema.ts b/packages/service/common/system/timerLock/schema.ts new file mode 100644 index 000000000..cbffb55a5 --- /dev/null +++ b/packages/service/common/system/timerLock/schema.ts @@ -0,0 +1,29 @@ +import { connectionMongo, type Model } from '../../mongo'; +import { timerIdMap } from './constants'; +const { Schema, model, models } = connectionMongo; +import { TimerLockSchemaType } from './type.d'; + +export const collectionName = 'systemtimerlocks'; + +const TimerLockSchema = new Schema({ + timerId: { + type: String, + required: true, + unique: true, + enum: Object.keys(timerIdMap) + }, + expiredTime: { + type: Date, + required: true + } +}); + +try { + TimerLockSchema.index({ expiredTime: 1 }, { expireAfterSeconds: 5 }); +} catch (error) { + console.log(error); +} + +export const MongoTimerLock: Model = + models[collectionName] || model(collectionName, TimerLockSchema); +MongoTimerLock.syncIndexes(); diff --git a/packages/service/common/system/timerLock/type.d.ts b/packages/service/common/system/timerLock/type.d.ts new file mode 100644 index 000000000..15e4325e3 --- /dev/null +++ b/packages/service/common/system/timerLock/type.d.ts @@ -0,0 +1,5 @@ +export type TimerLockSchemaType = { + _id: string; + timerId: string; + expiredTime: Date; +}; diff --git a/packages/service/common/system/timerLock/utils.ts b/packages/service/common/system/timerLock/utils.ts new file mode 100644 index 000000000..111e18095 --- /dev/null +++ b/packages/service/common/system/timerLock/utils.ts @@ -0,0 +1,25 @@ +import { TimerIdEnum } from './constants'; +import { MongoTimerLock } from './schema'; +import { addMinutes } from 'date-fns'; + +/* + 利用唯一健,使得同一时间只有一个任务在执行,后创建的锁,会因唯一健创建失败,从而无法继续执行任务 +*/ +export const checkTimerLock = async ({ + timerId, + lockMinuted +}: { + timerId: `${TimerIdEnum}`; + lockMinuted: number; +}) => { + try { + await MongoTimerLock.create({ + timerId, + expiredTime: addMinutes(new Date(), lockMinuted) + }); + + return true; + } catch (error) { + return false; + } +}; diff --git a/packages/service/core/workflow/dispatch/agent/runTool/toolChoice.ts b/packages/service/core/workflow/dispatch/agent/runTool/toolChoice.ts index d84936353..c41d32951 100644 --- a/packages/service/core/workflow/dispatch/agent/runTool/toolChoice.ts +++ b/packages/service/core/workflow/dispatch/agent/runTool/toolChoice.ts @@ -210,7 +210,6 @@ export const runToolWithToolChoice = async ( ).filter(Boolean) as ToolRunResponseType; const flatToolsResponseData = toolsRunResponse.map((item) => item.moduleRunResponse).flat(); - if (toolCalls.length > 0 && !res.closed) { // Run the tool, combine its results, and perform another round of AI calls const assistantToolMsgParams: ChatCompletionAssistantToolParam = { diff --git a/packages/service/core/workflow/dispatch/index.ts b/packages/service/core/workflow/dispatch/index.ts index 6d119c1e9..a06cb3910 100644 --- a/packages/service/core/workflow/dispatch/index.ts +++ b/packages/service/core/workflow/dispatch/index.ts @@ -37,6 +37,7 @@ import { dispatchRunTools } from './agent/runTool/index'; import { ChatItemValueTypeEnum } from '@fastgpt/global/core/chat/constants'; import { DispatchFlowResponse } from './type'; import { dispatchStopToolCall } from './agent/runTool/stopTool'; +import { dispatchLafRequest } from './tools/runLaf'; const callbackMap: Record<`${FlowNodeTypeEnum}`, Function> = { [FlowNodeTypeEnum.historyNode]: dispatchHistory, @@ -56,6 +57,7 @@ const callbackMap: Record<`${FlowNodeTypeEnum}`, Function> = { [FlowNodeTypeEnum.queryExtension]: dispatchQueryExtension, [FlowNodeTypeEnum.tools]: dispatchRunTools, [FlowNodeTypeEnum.stopTool]: dispatchStopToolCall, + [FlowNodeTypeEnum.lafModule]: dispatchLafRequest, // none [FlowNodeTypeEnum.userGuide]: () => Promise.resolve() diff --git a/packages/service/core/workflow/dispatch/tools/http468.ts b/packages/service/core/workflow/dispatch/tools/http468.ts index 9e59ec79e..dba09a602 100644 --- a/packages/service/core/workflow/dispatch/tools/http468.ts +++ b/packages/service/core/workflow/dispatch/tools/http468.ts @@ -61,7 +61,7 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise; + [key: string]: any; +}>; +type LafResponse = DispatchNodeResultType<{ + [ModuleOutputKeyEnum.failed]?: boolean; + [key: string]: any; +}>; + +const UNDEFINED_SIGN = 'UNDEFINED_SIGN'; + +export const dispatchLafRequest = async (props: LafRequestProps): Promise => { + let { + appId, + chatId, + responseChatItemId, + variables, + module: { outputs }, + histories, + params: { system_httpReqUrl: httpReqUrl, [DYNAMIC_INPUT_KEY]: dynamicInput, ...body } + } = props; + + if (!httpReqUrl) { + return Promise.reject('Http url is empty'); + } + + const concatVariables = { + appId, + chatId, + responseChatItemId, + ...variables, + ...body + }; + + httpReqUrl = replaceVariable(httpReqUrl, concatVariables); + + const requestBody = { + systemParams: { + appId, + chatId, + responseChatItemId, + histories: histories.slice(0, 10) + }, + variables, + ...dynamicInput, + ...body + }; + + try { + const { formatResponse, rawResponse } = await fetchData({ + method: 'POST', + url: httpReqUrl, + body: requestBody + }); + + // format output value type + const results: Record = {}; + for (const key in formatResponse) { + const output = outputs.find((item) => item.key === key); + if (!output) continue; + results[key] = valueTypeFormat(formatResponse[key], output.valueType); + } + + return { + assistantResponses: [], + [DispatchNodeResponseKeyEnum.nodeResponse]: { + totalPoints: 0, + body: Object.keys(requestBody).length > 0 ? requestBody : undefined, + httpResult: rawResponse + }, + [DispatchNodeResponseKeyEnum.toolResponses]: rawResponse, + [ModuleOutputKeyEnum.httpRawResponse]: rawResponse, + ...results + }; + } catch (error) { + addLog.error('Http request error', error); + return { + [ModuleOutputKeyEnum.failed]: true, + [DispatchNodeResponseKeyEnum.nodeResponse]: { + totalPoints: 0, + body: Object.keys(requestBody).length > 0 ? requestBody : undefined, + httpResult: { error: formatHttpError(error) } + } + }; + } +}; + +async function fetchData({ + method, + url, + body +}: { + method: string; + url: string; + body: Record; +}): Promise> { + const { data: response } = await axios({ + method, + baseURL: `http://${SERVICE_LOCAL_HOST}`, + url, + headers: { + 'Content-Type': 'application/json' + }, + data: body + }); + + const parseJson = (obj: Record, prefix = '') => { + let result: Record = {}; + + if (Array.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + result[`${prefix}[${i}]`] = obj[i]; + + if (Array.isArray(obj[i])) { + result = { + ...result, + ...parseJson(obj[i], `${prefix}[${i}]`) + }; + } else if (typeof obj[i] === 'object') { + result = { + ...result, + ...parseJson(obj[i], `${prefix}[${i}].`) + }; + } + } + } else if (typeof obj == 'object') { + for (const key in obj) { + result[`${prefix}${key}`] = obj[key]; + + if (Array.isArray(obj[key])) { + result = { + ...result, + ...parseJson(obj[key], `${prefix}${key}`) + }; + } else if (typeof obj[key] === 'object') { + result = { + ...result, + ...parseJson(obj[key], `${prefix}${key}.`) + }; + } + } + } + + return result; + }; + + return { + formatResponse: + typeof response === 'object' && !Array.isArray(response) ? parseJson(response) : {}, + rawResponse: response + }; +} + +function replaceVariable(text: string, obj: Record) { + for (const [key, value] of Object.entries(obj)) { + if (value === undefined) { + text = text.replace(new RegExp(`{{${key}}}`, 'g'), UNDEFINED_SIGN); + } else { + const replacement = JSON.stringify(value); + const unquotedReplacement = + replacement.startsWith('"') && replacement.endsWith('"') + ? replacement.slice(1, -1) + : replacement; + text = text.replace(new RegExp(`{{${key}}}`, 'g'), unquotedReplacement); + } + } + return text || ''; +} +function removeUndefinedSign(obj: Record) { + for (const key in obj) { + if (obj[key] === UNDEFINED_SIGN) { + obj[key] = undefined; + } else if (Array.isArray(obj[key])) { + obj[key] = obj[key].map((item: any) => { + if (item === UNDEFINED_SIGN) { + return undefined; + } else if (typeof item === 'object') { + removeUndefinedSign(item); + } + return item; + }); + } else if (typeof obj[key] === 'object') { + removeUndefinedSign(obj[key]); + } + } + return obj; +} +function formatHttpError(error: any) { + return { + message: error?.message, + name: error?.name, + method: error?.config?.method, + baseURL: error?.config?.baseURL, + url: error?.config?.url, + code: error?.code, + status: error?.status + }; +} diff --git a/packages/service/support/user/team/controller.ts b/packages/service/support/user/team/controller.ts index eee28d3fa..4145b3dd4 100644 --- a/packages/service/support/user/team/controller.ts +++ b/packages/service/support/user/team/controller.ts @@ -10,7 +10,6 @@ import { MongoTeam } from './teamSchema'; async function getTeamMember(match: Record): Promise { const tmb = (await MongoTeamMember.findOne(match).populate('teamId')) as TeamMemberWithTeamSchema; - if (!tmb) { return Promise.reject('member not exist'); } @@ -27,7 +26,8 @@ async function getTeamMember(match: Record): Promise role: tmb.role, status: tmb.status, defaultTeam: tmb.defaultTeam, - canWrite: tmb.role !== TeamMemberRoleEnum.visitor + canWrite: tmb.role !== TeamMemberRoleEnum.visitor, + lafAccount: tmb.teamId.lafAccount }; } diff --git a/packages/service/support/user/team/teamSchema.ts b/packages/service/support/user/team/teamSchema.ts index f644c5122..f1a2b1b40 100644 --- a/packages/service/support/user/team/teamSchema.ts +++ b/packages/service/support/user/team/teamSchema.ts @@ -35,6 +35,14 @@ const TeamSchema = new Schema({ lastWebsiteSyncTime: { type: Date } + }, + lafAccount: { + token: { + type: String + }, + appid: { + type: String + } } }); diff --git a/packages/web/components/common/Icon/constants.ts b/packages/web/components/common/Icon/constants.ts index 120356958..d824bf2a4 100644 --- a/packages/web/components/common/Icon/constants.ts +++ b/packages/web/components/common/Icon/constants.ts @@ -125,7 +125,9 @@ export const iconPaths = { 'file/fill/manual': () => import('./icons/file/fill/manual.svg'), 'file/fill/markdown': () => import('./icons/file/fill/markdown.svg'), 'file/fill/pdf': () => import('./icons/file/fill/pdf.svg'), + 'file/fill/ppt': () => import('./icons/file/fill/ppt.svg'), 'file/fill/txt': () => import('./icons/file/fill/txt.svg'), + 'file/fill/xlsx': () => import('./icons/file/fill/xlsx.svg'), 'file/html': () => import('./icons/file/html.svg'), 'file/indexImport': () => import('./icons/file/indexImport.svg'), 'file/manualImport': () => import('./icons/file/manualImport.svg'), diff --git a/packages/web/components/common/Icon/icons/file/fill/ppt.svg b/packages/web/components/common/Icon/icons/file/fill/ppt.svg new file mode 100644 index 000000000..c60c47a9d --- /dev/null +++ b/packages/web/components/common/Icon/icons/file/fill/ppt.svg @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/packages/web/components/common/Icon/icons/file/fill/xlsx.svg b/packages/web/components/common/Icon/icons/file/fill/xlsx.svg new file mode 100644 index 000000000..9c043ee12 --- /dev/null +++ b/packages/web/components/common/Icon/icons/file/fill/xlsx.svg @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/packages/web/components/common/Input/HttpInput/Editor.tsx b/packages/web/components/common/Input/HttpInput/Editor.tsx index 74f2cc3c8..8193a6b55 100644 --- a/packages/web/components/common/Input/HttpInput/Editor.tsx +++ b/packages/web/components/common/Input/HttpInput/Editor.tsx @@ -36,7 +36,7 @@ export default function Editor({ hasVariablePlugin?: boolean; hasDropDownPlugin?: boolean; variables: EditorVariablePickerType[]; - onChange?: (editorState: EditorState) => void; + onChange?: (editorState: EditorState, editor: LexicalEditor) => void; onBlur?: (editor: LexicalEditor) => void; value?: string; currentValue?: string; @@ -119,9 +119,9 @@ export default function Editor({ { + onChange={(editorState: EditorState, editor: LexicalEditor) => { startSts(() => { - onChange?.(e); + onChange?.(editorState, editor); }); }} /> diff --git a/packages/web/components/common/Input/HttpInput/index.tsx b/packages/web/components/common/Input/HttpInput/index.tsx index 6995d47e5..3ed3a16e9 100644 --- a/packages/web/components/common/Input/HttpInput/index.tsx +++ b/packages/web/components/common/Input/HttpInput/index.tsx @@ -32,15 +32,13 @@ const HttpInput = ({ const [, startSts] = useTransition(); - const onChangeInput = useCallback((editorState: EditorState) => { - const text = editorState.read(() => $getRoot().getTextContent()); - const formatValue = text.replaceAll('\n\n', '\n').replaceAll('}}{{', '}} {{'); - setCurrentValue(formatValue); - onChange?.(formatValue); + const onChangeInput = useCallback((editorState: EditorState, editor: LexicalEditor) => { + const text = editorStateToText(editor).replaceAll('}}{{', '}} {{'); + onChange?.(text); }, []); const onBlurInput = useCallback((editor: LexicalEditor) => { startSts(() => { - const text = editorStateToText(editor).replaceAll('\n\n', '\n').replaceAll('}}{{', '}} {{'); + const text = editorStateToText(editor).replaceAll('}}{{', '}} {{'); onBlur?.(text); }); }, []); diff --git a/packages/web/components/common/MySelect/index.tsx b/packages/web/components/common/MySelect/index.tsx index 4cf2f42b2..3580394d8 100644 --- a/packages/web/components/common/MySelect/index.tsx +++ b/packages/web/components/common/MySelect/index.tsx @@ -7,10 +7,13 @@ import { useDisclosure, MenuButton, Box, - css + css, + Flex } from '@chakra-ui/react'; import type { ButtonProps, MenuItemProps } from '@chakra-ui/react'; import { ChevronDownIcon } from '@chakra-ui/icons'; +import { useLoading } from '../../../hooks/useLoading'; +import MyIcon from '../Icon'; export type SelectProps = ButtonProps & { value?: string; @@ -20,14 +23,16 @@ export type SelectProps = ButtonProps & { label: string | React.ReactNode; value: string; }[]; + isLoading?: boolean; onchange?: (val: any) => void; }; const MySelect = ( - { placeholder, value, width = '100%', list, onchange, ...props }: SelectProps, + { placeholder, value, width = '100%', list, onchange, isLoading = false, ...props }: SelectProps, selectRef: any ) => { const ref = useRef(null); + const { Loading } = useLoading(); const menuItemStyles: MenuItemProps = { borderRadius: 'sm', py: 2, @@ -78,7 +83,10 @@ const MySelect = ( : {})} {...props} > - {selectItem?.alias || selectItem?.label || placeholder} + + {isLoading && } + {selectItem?.alias || selectItem?.label || placeholder} + { - const stringifiedEditorState = JSON.stringify(editorState.toJSON()); - const parsedEditorState = editor.parseEditorState(stringifiedEditorState); - const editorStateTextString = parsedEditorState.read(() => $getRoot().getTextContent()); - - const formatValue = editorStateTextString.replaceAll('\n\n', '\n').replaceAll('}}{{', '}} {{'); - onChange?.(formatValue); + const text = editorStateToText(editor).replaceAll('}}{{', '}} {{'); + onChange?.(text); }, []); const onBlurInput = useCallback((editor: LexicalEditor) => { startSts(() => { - const text = editorStateToText(editor).replaceAll('\n\n', '\n').replaceAll('}}{{', '}} {{'); + const text = editorStateToText(editor).replaceAll('}}{{', '}} {{'); onBlur?.(text); }); }, []); diff --git a/packages/web/components/common/Textarea/PromptEditor/plugins/OnBlurPlugin/index.tsx b/packages/web/components/common/Textarea/PromptEditor/plugins/OnBlurPlugin/index.tsx index 5bd5bafd4..9db6f43cd 100644 --- a/packages/web/components/common/Textarea/PromptEditor/plugins/OnBlurPlugin/index.tsx +++ b/packages/web/components/common/Textarea/PromptEditor/plugins/OnBlurPlugin/index.tsx @@ -1,6 +1,5 @@ import { useEffect } from 'react'; import { BLUR_COMMAND, COMMAND_PRIORITY_EDITOR, LexicalEditor } from 'lexical'; -import { mergeRegister } from '@lexical/utils'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; export default function OnBlurPlugin({ onBlur }: { onBlur?: (editor: LexicalEditor) => void }) { diff --git a/packages/web/components/common/Textarea/PromptEditor/utils.ts b/packages/web/components/common/Textarea/PromptEditor/utils.ts index a401ff039..43ee38c3b 100644 --- a/packages/web/components/common/Textarea/PromptEditor/utils.ts +++ b/packages/web/components/common/Textarea/PromptEditor/utils.ts @@ -209,9 +209,8 @@ export function editorStateToText(editor: LexicalEditor) { const stringifiedEditorState = JSON.stringify(editor.getEditorState().toJSON()); const parsedEditorState = editor.parseEditorState(stringifiedEditorState); const editorStateTextString = parsedEditorState.read(() => $getRoot().getTextContent()); - const compressedText = editorStateTextString.replace(/\n+/g, '\n\n'); - return compressedText; + return editorStateTextString; } const varRegex = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 719e46967..5b5ffdb9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 23.10.0 lint-staged: specifier: ^13.2.1 - version: 13.3.0 + version: 13.2.1 next-i18next: specifier: 15.2.0 version: 15.2.0(i18next@23.10.0)(next@13.5.2)(react-i18next@13.5.0)(react@18.2.0) @@ -31,7 +31,7 @@ importers: version: 13.5.0(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0) zhlint: specifier: ^0.7.1 - version: 0.7.4 + version: 0.7.1 packages/global: dependencies: @@ -40,16 +40,16 @@ importers: version: 10.1.0(openapi-types@12.1.3) axios: specifier: ^1.5.1 - version: 1.6.8 + version: 1.5.1 dayjs: specifier: ^1.11.7 - version: 1.11.10 + version: 1.11.7 encoding: specifier: ^0.1.13 version: 0.1.13 js-tiktoken: specifier: ^1.0.7 - version: 1.0.10 + version: 1.0.7 js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -58,10 +58,10 @@ importers: version: 3.1.1 nanoid: specifier: ^4.0.1 - version: 4.0.2 + version: 4.0.1 next: specifier: 13.5.2 - version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) openai: specifier: 4.28.0 version: 4.28.0(encoding@0.1.13) @@ -70,14 +70,14 @@ importers: version: 12.1.3 timezones-list: specifier: ^3.0.2 - version: 3.0.3 + version: 3.0.2 devDependencies: '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@types/node': specifier: ^20.8.5 - version: 20.11.30 + version: 20.8.5 packages/plugins: devDependencies: @@ -89,7 +89,7 @@ importers: version: link:../service '@types/node': specifier: ^20.8.5 - version: 20.11.30 + version: 20.8.5 packages/service: dependencies: @@ -104,7 +104,7 @@ importers: version: 0.8.10 axios: specifier: ^1.5.1 - version: 1.6.8 + version: 1.5.1 cheerio: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 @@ -116,7 +116,7 @@ importers: version: 2.30.0 dayjs: specifier: ^1.11.7 - version: 1.11.10 + version: 1.11.7 decompress: specifier: ^4.2.1 version: 4.2.1 @@ -134,19 +134,19 @@ importers: version: 9.0.2 mammoth: specifier: ^1.6.0 - version: 1.7.0 + version: 1.6.0 mongoose: specifier: ^7.0.2 - version: 7.6.10 + version: 7.0.2 multer: specifier: 1.4.5-lts.1 version: 1.4.5-lts.1 next: specifier: 13.5.2 - version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) nextjs-cors: specifier: ^2.1.2 - version: 2.2.0(next@13.5.2) + version: 2.1.2(next@13.5.2) node-cron: specifier: ^3.0.3 version: 3.0.3 @@ -161,23 +161,23 @@ importers: version: 4.0.269(encoding@0.1.13) pg: specifier: ^8.10.0 - version: 8.11.3 + version: 8.10.0 tunnel: specifier: ^0.0.6 version: 0.0.6 devDependencies: '@types/cookie': specifier: ^0.5.2 - version: 0.5.4 + version: 0.5.2 '@types/decompress': specifier: ^4.2.7 version: 4.2.7 '@types/jsonwebtoken': specifier: ^9.0.3 - version: 9.0.6 + version: 9.0.3 '@types/multer': specifier: ^1.4.10 - version: 1.4.11 + version: 1.4.10 '@types/node-cron': specifier: ^3.0.11 version: 3.0.11 @@ -186,7 +186,7 @@ importers: version: 5.3.7 '@types/pg': specifier: ^8.6.6 - version: 8.11.3 + version: 8.6.6 '@types/tunnel': specifier: ^0.0.4 version: 0.0.4 @@ -201,28 +201,28 @@ importers: version: 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/next-js': specifier: 2.1.5 - version: 2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.4)(next@13.5.2)(react@18.2.0) + version: 2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.1)(next@13.5.2)(react@18.2.0) '@chakra-ui/react': specifier: 2.8.1 - version: 2.8.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) + version: 2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/styled-system': specifier: 2.9.1 version: 2.9.1 '@chakra-ui/system': specifier: 2.6.1 - version: 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + version: 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@emotion/react': specifier: ^11.11.1 - version: 11.11.4(@types/react@18.2.0)(react@18.2.0) + version: 11.11.1(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0) '@fastgpt/global': specifier: workspace:* version: link:../global '@fingerprintjs/fingerprintjs': specifier: ^4.2.1 - version: 4.2.2 + version: 4.2.1 '@lexical/react': specifier: 0.12.6 version: 0.12.6(lexical@0.12.6)(react-dom@18.2.0)(react@18.2.0)(yjs@13.6.14) @@ -237,13 +237,13 @@ importers: version: 4.6.0(monaco-editor@0.47.0)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.24.10 - version: 4.36.1(react-dom@18.2.0)(react@18.2.0) + version: 4.24.10(react-dom@18.2.0)(react@18.2.0) date-fns: specifier: 2.30.0 version: 2.30.0 dayjs: specifier: ^1.11.7 - version: 1.11.10 + version: 1.11.7 i18next: specifier: 23.10.0 version: 23.10.0 @@ -258,7 +258,7 @@ importers: version: 4.17.21 mammoth: specifier: ^1.6.0 - version: 1.7.0 + version: 1.6.0 next-i18next: specifier: 15.2.0 version: 15.2.0(i18next@23.10.0)(next@13.5.2)(react-i18next@13.5.0)(react@18.2.0) @@ -273,7 +273,7 @@ importers: version: 18.2.0 react-day-picker: specifier: ^8.7.1 - version: 8.10.0(date-fns@2.30.0)(react@18.2.0) + version: 8.7.1(date-fns@2.30.0)(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -282,14 +282,14 @@ importers: version: 13.5.0(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0) turndown: specifier: ^7.1.2 - version: 7.1.3 + version: 7.1.2 devDependencies: '@types/lodash': specifier: ^4.14.191 - version: 4.17.0 + version: 4.14.191 '@types/papaparse': specifier: ^5.3.7 - version: 5.3.14 + version: 5.3.7 '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -313,22 +313,22 @@ importers: version: 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/next-js': specifier: 2.1.5 - version: 2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.4)(next@13.5.2)(react@18.2.0) + version: 2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.1)(next@13.5.2)(react@18.2.0) '@chakra-ui/react': specifier: 2.8.1 - version: 2.8.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) + version: 2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/styled-system': specifier: 2.9.1 version: 2.9.1 '@chakra-ui/system': specifier: 2.6.1 - version: 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + version: 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@emotion/react': specifier: ^11.11.1 - version: 11.11.4(@types/react@18.2.0)(react@18.2.0) + version: 11.11.1(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0) '@fastgpt/global': specifier: workspace:* version: link:../../packages/global @@ -349,19 +349,19 @@ importers: version: 1.10.0 '@tanstack/react-query': specifier: ^4.24.10 - version: 4.36.1(react-dom@18.2.0)(react@18.2.0) + version: 4.24.10(react-dom@18.2.0)(react@18.2.0) '@types/nprogress': specifier: ^0.2.0 - version: 0.2.3 + version: 0.2.0 axios: specifier: ^1.5.1 - version: 1.6.8 + version: 1.5.1 date-fns: specifier: 2.30.0 version: 2.30.0 dayjs: specifier: ^1.11.7 - version: 1.11.10 + version: 1.11.7 echarts: specifier: 5.4.1 version: 5.4.1 @@ -370,10 +370,10 @@ importers: version: 2.0.9(echarts@5.4.1) formidable: specifier: ^2.1.1 - version: 2.1.2 + version: 2.1.1 framer-motion: specifier: ^9.0.6 - version: 9.1.7(react-dom@18.2.0)(react@18.2.0) + version: 9.0.6(react-dom@18.2.0)(react@18.2.0) hyperdown: specifier: ^2.4.29 version: 2.4.29 @@ -382,7 +382,7 @@ importers: version: 23.10.0 immer: specifier: ^9.0.19 - version: 9.0.21 + version: 9.0.19 js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -394,13 +394,13 @@ importers: version: 4.17.21 mermaid: specifier: ^10.2.3 - version: 10.9.0 + version: 10.2.3 nanoid: specifier: ^4.0.1 - version: 4.0.2 + version: 4.0.1 next: specifier: 13.5.2 - version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + version: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) next-i18next: specifier: 15.2.0 version: 15.2.0(i18next@23.10.0)(next@13.5.2)(react-i18next@13.5.0)(react@18.2.0) @@ -412,7 +412,7 @@ importers: version: 18.2.0 react-day-picker: specifier: ^8.7.1 - version: 8.10.0(date-fns@2.30.0)(react@18.2.0) + version: 8.7.1(date-fns@2.30.0)(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -430,10 +430,10 @@ importers: version: 15.5.0(react@18.2.0) reactflow: specifier: ^11.7.4 - version: 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + version: 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) rehype-katex: specifier: ^6.0.2 - version: 6.0.3 + version: 6.0.2 remark-breaks: specifier: ^3.0.3 version: 3.0.3 @@ -448,32 +448,32 @@ importers: version: 3.3.0 sass: specifier: ^1.58.3 - version: 1.72.0 + version: 1.58.3 zustand: specifier: ^4.3.5 - version: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + version: 4.3.5(immer@9.0.19)(react@18.2.0) devDependencies: '@svgr/webpack': specifier: ^6.5.1 version: 6.5.1 '@types/formidable': specifier: ^2.0.5 - version: 2.0.6 + version: 2.0.5 '@types/js-cookie': specifier: ^3.0.3 - version: 3.0.6 + version: 3.0.3 '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@types/jsonwebtoken': specifier: ^9.0.3 - version: 9.0.6 + version: 9.0.3 '@types/lodash': specifier: ^4.14.191 - version: 4.17.0 + version: 4.14.191 '@types/node': specifier: ^20.8.5 - version: 20.11.30 + version: 20.8.5 '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -482,7 +482,7 @@ importers: version: 18.2.0 '@types/react-syntax-highlighter': specifier: ^15.5.6 - version: 15.5.11 + version: 15.5.6 '@types/request-ip': specifier: ^0.0.37 version: 0.0.37 @@ -500,7 +500,7 @@ importers: dependencies: express: specifier: ^4.18.2 - version: 4.19.0 + version: 4.18.2 packages: @@ -1818,7 +1818,7 @@ packages: resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} dev: false - /@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0): + /@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0): resolution: {integrity: sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -1831,9 +1831,9 @@ packages: '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.1.0(framer-motion@9.1.7)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@9.0.6)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1847,7 +1847,7 @@ packages: '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1865,7 +1865,7 @@ packages: '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1878,7 +1878,7 @@ packages: '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1898,7 +1898,7 @@ packages: '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1909,7 +1909,7 @@ packages: react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1928,7 +1928,7 @@ packages: '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@zag-js/focus-visible': 0.16.0 react: 18.2.0 @@ -1964,7 +1964,7 @@ packages: react: '>=18' dependencies: '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1983,7 +1983,7 @@ packages: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -1998,13 +1998,13 @@ packages: react: 18.2.0 dev: false - /@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.4)(react@18.2.0): + /@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.1)(react@18.2.0): resolution: {integrity: sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==} peerDependencies: '@emotion/react': '>=10.0.35' react: '>=18' dependencies: - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2037,7 +2037,7 @@ packages: '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2068,7 +2068,7 @@ packages: '@chakra-ui/react-types': 2.0.7(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2091,7 +2091,7 @@ packages: react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2102,7 +2102,7 @@ packages: react: '>=18' dependencies: '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2114,7 +2114,7 @@ packages: dependencies: '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2129,7 +2129,7 @@ packages: '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2145,7 +2145,7 @@ packages: '@chakra-ui/react-children-utils': 2.0.6(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2170,11 +2170,11 @@ packages: '@chakra-ui/breakpoint-utils': 2.0.8 '@chakra-ui/react-env': 3.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0): + /@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0): resolution: {integrity: sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -2195,13 +2195,13 @@ packages: '@chakra-ui/react-use-outside-click': 2.2.0(react@18.2.0) '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.1.0(framer-motion@9.1.7)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@9.0.6)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0): + /@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -2216,10 +2216,10 @@ packages: '@chakra-ui/react-types': 2.0.7(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - '@chakra-ui/transition': 2.1.0(framer-motion@9.1.7)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@9.0.6)(react@18.2.0) aria-hidden: 1.2.4 - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.9(@types/react@18.2.0)(react@18.2.0) @@ -2227,7 +2227,7 @@ packages: - '@types/react' dev: false - /@chakra-ui/next-js@2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.4)(next@13.5.2)(react@18.2.0): + /@chakra-ui/next-js@2.1.5(@chakra-ui/react@2.8.1)(@emotion/react@11.11.1)(next@13.5.2)(react@18.2.0): resolution: {integrity: sha512-bBd8zeXlAuVwDsjGN0/5ZZJknSbFeiZgJiGdbJo91v2lxKkOwo26b4ggc1ck1t+JR+daU6SrGBjlbQqSuWzyaA==} peerDependencies: '@chakra-ui/react': '>=2.4.0' @@ -2235,10 +2235,10 @@ packages: next: '>=13' react: '>=18' dependencies: - '@chakra-ui/react': 2.8.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/react': 2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) - next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) + next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) react: 18.2.0 dev: false @@ -2260,7 +2260,7 @@ packages: '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2284,11 +2284,11 @@ packages: '@chakra-ui/react-use-controllable-state': 2.1.0(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0): + /@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0): resolution: {integrity: sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -2306,8 +2306,8 @@ packages: '@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2341,11 +2341,11 @@ packages: react: '>=18' dependencies: '@chakra-ui/react-context': 2.1.0(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/provider@2.4.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): + /@chakra-ui/provider@2.4.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-u4g02V9tJ9vVYfkLz5jBn/bKlAyjLdg4Sh3f7uckmYVAZpOL/uUlrStyADrynu3tZhI+BE8XdmXC4zs/SYD7ow==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2353,13 +2353,13 @@ packages: react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.2.0) + '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.1)(react@18.2.0) '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/react-env': 3.1.0(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -2375,7 +2375,7 @@ packages: '@chakra-ui/react-types': 2.0.7(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@zag-js/focus-visible': 0.16.0 react: 18.2.0 dev: false @@ -2575,7 +2575,7 @@ packages: react: 18.2.0 dev: false - /@chakra-ui/react@2.8.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0): + /@chakra-ui/react@2.8.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UL9Rtj4DovP3+oVbI06gsdfyJJb+wmS2RYnGNXjW9tsjCyXxjlBw9TAUj0jyOfWe0+zd/4juL8+J+QCwmdhptg==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2584,7 +2584,7 @@ packages: react: '>=18' react-dom: '>=18' dependencies: - '@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0) + '@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0) '@chakra-ui/alert': 2.2.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) @@ -2594,7 +2594,7 @@ packages: '@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/counter': 2.1.0(react@18.2.0) - '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.2.0) + '@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.1)(react@18.2.0) '@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/focus-lock': 2.1.0(@types/react@18.2.0)(react@18.2.0) '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) @@ -2605,15 +2605,15 @@ packages: '@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/live-region': 2.1.0(react@18.2.0) '@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0) - '@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.0)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0) + '@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.1)(@types/react@18.2.0)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/number-input': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0) + '@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0) '@chakra-ui/popper': 3.1.0(react@18.2.0) '@chakra-ui/portal': 2.1.0(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@chakra-ui/provider': 2.4.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/provider': 2.4.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react-dom@18.2.0)(react@18.2.0) '@chakra-ui/radio': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-env': 3.1.0(react@18.2.0) '@chakra-ui/select': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) @@ -2624,22 +2624,22 @@ packages: '@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/switch': 2.1.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/switch': 2.1.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/textarea': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/theme': 3.3.0(@chakra-ui/styled-system@2.9.1) '@chakra-ui/theme-utils': 2.0.20 - '@chakra-ui/toast': 7.0.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/tooltip': 2.3.0(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0) - '@chakra-ui/transition': 2.1.0(framer-motion@9.1.7)(react@18.2.0) + '@chakra-ui/toast': 7.0.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/tooltip': 2.3.0(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/transition': 2.1.0(framer-motion@9.0.6)(react@18.2.0) '@chakra-ui/utils': 2.0.15 '@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -2654,7 +2654,7 @@ packages: dependencies: '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2671,7 +2671,7 @@ packages: '@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-use-previous': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2681,7 +2681,7 @@ packages: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2701,7 +2701,7 @@ packages: '@chakra-ui/react-use-pan-event': 2.1.0(react@18.2.0) '@chakra-ui/react-use-size': 2.1.0(react@18.2.0) '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2712,7 +2712,7 @@ packages: react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2725,7 +2725,7 @@ packages: '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2738,7 +2738,7 @@ packages: '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2750,7 +2750,7 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/switch@2.1.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react@18.2.0): + /@chakra-ui/switch@2.1.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react@18.2.0): resolution: {integrity: sha512-cOHIhW5AlLZSFENxFEBYTBniqiduOowa1WdzslP1Fd0usBFaD5iAgOY1Fvr7xKhE8nmzzeMCkPB3XBvUSWnawQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -2759,12 +2759,12 @@ packages: dependencies: '@chakra-ui/checkbox': 2.3.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /@chakra-ui/system@2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0): + /@chakra-ui/system@2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): resolution: {integrity: sha512-P5Q/XRWy3f1pXJ7IxDkV+Z6AT7GJeR2JlBnQl109xewVQcBLWWMIp702fFMFw8KZ2ALB/aYKtWm5EmQMddC/tg==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2777,8 +2777,8 @@ packages: '@chakra-ui/styled-system': 2.9.1 '@chakra-ui/theme-utils': 2.0.20 '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 react-fast-compare: 3.2.2 dev: false @@ -2791,7 +2791,7 @@ packages: dependencies: '@chakra-ui/react-context': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2810,7 +2810,7 @@ packages: '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2822,7 +2822,7 @@ packages: dependencies: '@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/react-context': 2.1.0(react@18.2.0) - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2834,7 +2834,7 @@ packages: dependencies: '@chakra-ui/form-control': 2.1.1(@chakra-ui/system@2.6.1)(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2869,7 +2869,7 @@ packages: '@chakra-ui/theme-tools': 2.1.1(@chakra-ui/styled-system@2.9.1) dev: false - /@chakra-ui/toast@7.0.1(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0): + /@chakra-ui/toast@7.0.1(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-V5JUhw6RZxbGRTijvd5k4iEMLCfbzTLNWbZLZhRZk10YvFfAP5OYfRCm68zpE/t3orN/f+4ZLL3P+Wb4E7oSmw==} peerDependencies: '@chakra-ui/system': 2.6.1 @@ -2885,14 +2885,14 @@ packages: '@chakra-ui/react-use-update-effect': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 '@chakra-ui/styled-system': 2.9.1 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) '@chakra-ui/theme': 3.3.0(@chakra-ui/styled-system@2.9.1) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/tooltip@2.3.0(@chakra-ui/system@2.6.1)(framer-motion@9.1.7)(react-dom@18.2.0)(react@18.2.0): + /@chakra-ui/tooltip@2.3.0(@chakra-ui/system@2.6.1)(framer-motion@9.0.6)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2s23f93YIij1qEDwIK//KtEu4LLYOslhR1cUhDBk/WUzyFR3Ez0Ee+HlqlGEGfGe9x77E6/UXPnSAKKdF/cpsg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' @@ -2908,20 +2908,20 @@ packages: '@chakra-ui/react-use-event-listener': 2.1.0(react@18.2.0) '@chakra-ui/react-use-merge-refs': 2.1.0(react@18.2.0) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@chakra-ui/transition@2.1.0(framer-motion@9.1.7)(react@18.2.0): + /@chakra-ui/transition@2.1.0(framer-motion@9.0.6)(react@18.2.0): resolution: {integrity: sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==} peerDependencies: framer-motion: '>=4.0.0' react: '>=18' dependencies: '@chakra-ui/shared-utils': 2.0.5 - framer-motion: 9.1.7(react-dom@18.2.0)(react@18.2.0) + framer-motion: 9.0.6(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2940,20 +2940,20 @@ packages: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/system': 2.6.1(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@chakra-ui/system': 2.6.1(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) react: 18.2.0 dev: false - /@emnapi/core@0.45.0: - resolution: {integrity: sha512-DPWjcUDQkCeEM4VnljEOEcXdAD7pp8zSZsgOujk/LGIwCXWbXJngin+MO4zbH429lzeC3WbYLGjE2MaUOwzpyw==} + /@emnapi/core@1.1.1: + resolution: {integrity: sha512-eu4KjHfXg3I+UUR7vSuwZXpRo4c8h4Rtb5Lu2F7Z4JqJFl/eidquONEBiRs6viXKpWBC3BaJBy68xGJ2j56idw==} requiresBuild: true dependencies: tslib: 2.6.2 dev: false optional: true - /@emnapi/runtime@0.45.0: - resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} + /@emnapi/runtime@1.1.1: + resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} requiresBuild: true dependencies: tslib: 2.6.2 @@ -2967,7 +2967,7 @@ packages: '@babel/runtime': 7.24.1 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.3 + '@emotion/serialize': 1.1.4 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -3006,7 +3006,6 @@ packages: /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - requiresBuild: true dev: false optional: true @@ -3014,8 +3013,8 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.4(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + /@emotion/react@11.11.1(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -3026,7 +3025,7 @@ packages: '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 + '@emotion/serialize': 1.1.4 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 @@ -3035,8 +3034,8 @@ packages: react: 18.2.0 dev: false - /@emotion/serialize@1.1.3: - resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + /@emotion/serialize@1.1.4: + resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 @@ -3049,7 +3048,7 @@ packages: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false - /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.0)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -3062,8 +3061,8 @@ packages: '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.2 - '@emotion/react': 11.11.4(@types/react@18.2.0)(react@18.2.0) - '@emotion/serialize': 1.1.3 + '@emotion/react': 11.11.1(@types/react@18.2.0)(react@18.2.0) + '@emotion/serialize': 1.1.4 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@types/react': 18.2.0 @@ -3090,15 +3089,6 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -3108,17 +3098,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.20.2: - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -3126,8 +3107,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.20.2: - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -3144,15 +3125,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.20.2: - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -3162,15 +3134,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.20.2: - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -3180,15 +3143,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.20.2: - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -3198,15 +3152,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.20.2: - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -3216,15 +3161,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.20.2: - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.17.19: resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -3234,15 +3170,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.20.2: - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.17.19: resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -3252,15 +3179,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.20.2: - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -3270,17 +3188,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.20.2: - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -3288,8 +3197,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.20.2: - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -3306,15 +3215,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.20.2: - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -3324,15 +3224,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.20.2: - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -3342,15 +3233,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.20.2: - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -3360,15 +3242,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.20.2: - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -3378,15 +3251,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.20.2: - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -3396,15 +3260,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.20.2: - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -3414,15 +3269,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.20.2: - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -3432,15 +3278,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.20.2: - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -3450,15 +3287,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.20.2: - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -3468,15 +3296,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.20.2: - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -3486,15 +3305,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@eslint/eslintrc@1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3512,8 +3322,8 @@ packages: - supports-color dev: true - /@fingerprintjs/fingerprintjs@4.2.2: - resolution: {integrity: sha512-scD+pDgNZW78LuFAr7ms2yxmDx2NWC4+K5iiOjPT2ZlTlHFbLsORUzLJI2rcKicxxLtHbvf3A7BU1drVr4iHGg==} + /@fingerprintjs/fingerprintjs@4.2.1: + resolution: {integrity: sha512-uW+GVUNTgCXbVPEbgnbf5Aor22e1dyYR0JRwdUiZBaikfxr7KlhV9y0aahA1FB99fEeQVvhCEvTcPIFSYTy9Pw==} dependencies: tslib: 2.6.2 dev: false @@ -3543,25 +3353,6 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -3828,7 +3619,7 @@ packages: npmlog: 5.0.1 rimraf: 3.0.2 semver: 7.6.0 - tar: 6.2.0 + tar: 6.2.1 transitivePeerDependencies: - encoding - supports-color @@ -3857,20 +3648,59 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@mongodb-js/saslprep@1.1.5: - resolution: {integrity: sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==} - requiresBuild: true + /@motionone/animation@10.17.0: + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} dependencies: - sparse-bitfield: 3.0.3 + '@motionone/easing': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 dev: false - optional: true - /@napi-rs/wasm-runtime@0.1.1: - resolution: {integrity: sha512-ATj9ua659JgrkICjJscaeZdmPr44cb/KFjNWuD0N6pux0SpzaM7+iOuuK11mAnQM2N9q0DT4REu6NkL8ZEhopw==} + /@motionone/dom@10.17.0: + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/easing@10.17.0: + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + dependencies: + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/generators@10.17.0: + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + dependencies: + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/types@10.17.0: + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + dev: false + + /@motionone/utils@10.17.0: + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + dependencies: + '@motionone/types': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@napi-rs/wasm-runtime@0.1.2: + resolution: {integrity: sha512-8JuczewTFIZ/XIjHQ+YlQUydHvlKx2hkcxtuGwh+t/t5zWyZct6YG4+xjHcq8xyc/e7FmFwf42Zj2YgICwmlvA==} requiresBuild: true dependencies: - '@emnapi/core': 0.45.0 - '@emnapi/runtime': 0.45.0 + '@emnapi/core': 1.1.1 + '@emnapi/runtime': 1.1.1 '@tybys/wasm-util': 0.8.1 dev: false optional: true @@ -4060,7 +3890,7 @@ packages: cpu: [wasm32] requiresBuild: true dependencies: - '@napi-rs/wasm-runtime': 0.1.1 + '@napi-rs/wasm-runtime': 0.1.2 dev: false optional: true @@ -4132,51 +3962,42 @@ packages: fastq: 1.17.1 dev: true - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@reactflow/background@11.3.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-byj/G9pEC8tN0wT/ptcl/LkEP/BBfa33/SvBkqE4XwyofckqF87lKp573qGlisfnsijwAbpDlf81PuFL41So4Q==} + /@reactflow/background@11.2.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-SYQbCRCU0GuxT/40Tm7ZK+l5wByGnNJSLtZhbL9C/Hl7JhsJXV3UGXr0vrlhVZUBEtkWA7XhZM/5S9XEA5XSFA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@reactflow/controls@11.2.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-e8nWplbYfOn83KN1BrxTXS17+enLyFnjZPbyDgHSRLtI5ZGPKF/8iRXV+VXb2LFVzlu4Wh3la/pkxtfP/0aguA==} + /@reactflow/controls@11.1.15(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-//33XfBYu8vQ6brfmlZwKrDoh+8hh93xO2d88XiqfIbrPEEb32SYjsb9mS9VuHKNlSIW+eB27fBA1Gt00mEj5w==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@reactflow/core@11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-j3i9b2fsTX/sBbOm+RmNzYEFWbNx4jGWGuGooh2r1jQaE2eV+TLJgiG/VNOp0q5mBl9f6g1IXs3Gm86S9JfcGw==} + /@reactflow/core@11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nt0T8ERp8TE7YCDQViaoEY9lb0StDPrWHVx3zBjhStFYET3wc88t8QRasZdf99xRTmyNtI3U3M40M5EBLNUpMw==} peerDependencies: react: '>=17' react-dom: '>=17' @@ -4191,19 +4012,18 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@reactflow/minimap@11.7.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-le95jyTtt3TEtJ1qa7tZ5hyM4S7gaEQkW43cixcMOZLu33VAdc2aCpJg/fXcRrrf7moN2Mbl9WIMNXUKsp5ILA==} + /@reactflow/minimap@11.5.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1tDBj2zX2gxu2oHU6qvH5RGNrOWRfRxu8369KhDotuuBN5yJrGXJzWIKikwhzjsNsQJYOB+B0cS44yWAfwSwzw==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) '@types/d3-selection': 3.0.10 '@types/d3-zoom': 3.0.8 classcat: 5.0.4 @@ -4211,161 +4031,45 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@reactflow/node-resizer@2.2.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HfickMm0hPDIHt9qH997nLdgLt0kayQyslKE0RS/GZvZ4UMQJlx/NRRyj5y47Qyg0NnC66KYOQWDM9LLzRTnUg==} + /@reactflow/node-resizer@2.1.1(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5Q+IBmZfpp/bYsw3+KRVJB1nUbj6W3XAp5ycx4uNWH+K98vbssymyQsW0vvKkIhxEPg6tkiMzO4UWRWvwBwt1g==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 d3-drag: 3.0.0 d3-selection: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@reactflow/node-toolbar@1.3.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-VmgxKmToax4sX1biZ9LXA7cj/TBJ+E5cklLGwquCCVVxh+lxpZGTBF3a5FJGVHiUNBBtFsC8ldcSZIK4cAlQww==} + /@reactflow/node-toolbar@1.2.3(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uFQy9xpog92s0G1wsPLniwV9nyH4i/MmL7QoMsWdnKaOi7XMhd8SJcCzUdHC3imR21HltsuQITff/XQ51ApMbg==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) + zustand: 4.3.5(immer@9.0.19)(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false - /@rollup/rollup-android-arm-eabi@4.13.0: - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.13.0: - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.13.0: - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.13.0: - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.13.0: - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.13.0: - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.13.0: - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-riscv64-gnu@4.13.0: - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-gnu@4.13.0: - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.13.0: - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-arm64-msvc@4.13.0: - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.13.0: - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.13.0: - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rushstack/eslint-patch@1.8.0: - resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} - dev: true - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@rushstack/eslint-patch@1.10.1: + resolution: {integrity: sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==} dev: true /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.24.3): @@ -4526,12 +4230,12 @@ packages: dependencies: tslib: 2.6.2 - /@tanstack/query-core@4.36.1: - resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==} + /@tanstack/query-core@4.24.10: + resolution: {integrity: sha512-2QywqXEAGBIUoTdgn1lAB4/C8QEqwXHj2jrCLeYTk2xVGtLiPEUD8jcMoeB2noclbiW2mMt4+Fq7fZStuz3wAQ==} dev: false - /@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==} + /@tanstack/react-query@4.24.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FY1DixytOcNNCydPQXLxuKEV7VSST32CAuJ55BjhDNqASnMLZn+6c30yQBMrODjmWMNwzfjMZnq0Vw7C62Fwow==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4542,7 +4246,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.36.1 + '@tanstack/query-core': 4.24.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) @@ -4569,17 +4273,27 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.30 + '@types/node': 20.8.5 + dev: true + + /@types/chai-subset@1.3.5: + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + dependencies: + '@types/chai': 4.3.14 + dev: true + + /@types/chai@4.3.14: + resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true - /@types/cookie@0.5.4: - resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + /@types/cookie@0.5.2: + resolution: {integrity: sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==} dev: true /@types/d3-array@3.2.1: @@ -4770,18 +4484,14 @@ packages: /@types/decompress@4.2.7: resolution: {integrity: sha512-9z+8yjKr5Wn73Pt17/ldnmQToaFHZxK0N1GHysuk/JIPT8RIdQeoInM01wWPgypRcvb6VH1drjuFpQ4zmY437g==} dependencies: - '@types/node': 20.11.30 - dev: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/node': 20.8.5 dev: true /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.11.30 - '@types/qs': 6.9.13 + '@types/node': 20.8.5 + '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true @@ -4791,14 +4501,14 @@ packages: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.13 + '@types/qs': 6.9.14 '@types/serve-static': 1.15.5 dev: true - /@types/formidable@2.0.6: - resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} + /@types/formidable@2.0.5: + resolution: {integrity: sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true /@types/geojson@7946.0.14: @@ -4821,8 +4531,8 @@ packages: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true - /@types/js-cookie@3.0.6: - resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + /@types/js-cookie@3.0.3: + resolution: {integrity: sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww==} dev: true /@types/js-yaml@4.0.9: @@ -4833,14 +4543,14 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonwebtoken@9.0.6: - resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + /@types/jsonwebtoken@9.0.3: + resolution: {integrity: sha512-b0jGiOgHtZ2jqdPgPnP6WLCXZk1T8p06A/vPGzUvxpFGgKMbjXJDjC5m52ErqBnIuWZFgGoIJyRdeG5AyreJjA==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true - /@types/katex@0.14.0: - resolution: {integrity: sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA==} + /@types/katex@0.11.1: + resolution: {integrity: sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==} dev: false /@types/katex@0.16.7: @@ -4850,11 +4560,11 @@ packages: /@types/lodash.mergewith@4.6.7: resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} dependencies: - '@types/lodash': 4.17.0 + '@types/lodash': 4.14.191 dev: false - /@types/lodash@4.17.0: - resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + /@types/lodash@4.14.191: + resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -4866,16 +4576,19 @@ packages: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + /@types/mime@4.0.0: + resolution: {integrity: sha512-5eEkJZ/BLvTE3vXGKkWlyTSUVZuzj23Wj8PoyOq2lt5I3CYbiLBOPb3XmCW6QcuOibIUE6emHXHt9E/F/rCa6w==} + deprecated: This is a stub types definition. mime provides its own type definitions, so you do not need this installed. + dependencies: + mime: 4.0.1 dev: true /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: false - /@types/multer@1.4.11: - resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} + /@types/multer@1.4.10: + resolution: {integrity: sha512-6l9mYMhUe8wbnz/67YIjc7ZJyQNZoKq7fRXVf7nMdgWgalD0KyzJ2ywI7hoATUSXSbTu9q2HBiEwzy0tNN1v2w==} dependencies: '@types/express': 4.17.21 dev: true @@ -4887,53 +4600,47 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 form-data: 4.0.0 dev: false - /@types/node@18.19.26: - resolution: {integrity: sha512-+wiMJsIwLOYCvUqSdKTrfkS8mpTp+MPINe6+Np4TAGFWWRWiBQ5kSq9nZGCSPkzx9mvT+uEukzpX4MOSCydcvw==} + /@types/node@18.19.28: + resolution: {integrity: sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.11.30: - resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} + /@types/node@20.8.5: + resolution: {integrity: sha512-SPlobFgbidfIeOYlzXiEjSYeIJiOCthv+9tSQVpvk4PAdIIc+2SmjNVzWXk9t0Y7dl73Zdf+OgXKHX9XtkqUpw==} dependencies: - undici-types: 5.26.5 + undici-types: 5.25.3 - /@types/nprogress@0.2.3: - resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + /@types/nprogress@0.2.0: + resolution: {integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==} dev: false - /@types/papaparse@5.3.14: - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} - dependencies: - '@types/node': 20.11.30 - dev: true - /@types/papaparse@5.3.7: resolution: {integrity: sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - /@types/pg@8.11.3: - resolution: {integrity: sha512-xocw4LvpDcj/Ta7bN52tLZm34mso5SZ0Q8fVC0UtD8s85Itip3YHvBeYZhBmC0OThpdOujHsxXtRbEIRxqXPXg==} + /@types/pg@8.6.6: + resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} dependencies: - '@types/node': 20.11.30 - pg-protocol: 1.6.0 - pg-types: 4.0.2 + '@types/node': 20.8.5 + pg-protocol: 1.6.1 + pg-types: 2.2.0 dev: true - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - /@types/qs@6.9.13: - resolution: {integrity: sha512-iLR+1vTTJ3p0QaOUq6ACbY1mzKTODFDT/XedZI8BksOotFmL4ForwDfRQ/DZeuTHR7/2i4lI1D203gdfxuqTlA==} + /@types/qs@6.9.14: + resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} dev: true /@types/range-parser@1.2.7: @@ -4946,8 +4653,8 @@ packages: '@types/react': 18.2.0 dev: true - /@types/react-syntax-highlighter@15.5.11: - resolution: {integrity: sha512-ZqIJl+Pg8kD+47kxUjvrlElrraSUrYa4h0dauY/U/FTUuprSCqvUj+9PNQNQzVc6AJgIWUUxn87/gqsMHNbRjw==} + /@types/react-syntax-highlighter@15.5.6: + resolution: {integrity: sha512-i7wFuLbIAFlabTeD2I1cLjEOrG/xdMa/rpx2zwzAoGHuXJDhSqp9BSfDlMHSh9JSuNfxHk9eEmMX6D55GiyjGg==} dependencies: '@types/react': 18.2.0 dev: true @@ -4955,38 +4662,38 @@ packages: /@types/react@18.2.0: resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 + '@types/prop-types': 15.7.12 + '@types/scheduler': 0.23.0 csstype: 3.1.3 /@types/request-ip@0.0.37: resolution: {integrity: sha512-uw6/i3rQnpznxD7LtLaeuZytLhKZK6bRoTS6XVJlwxIOoOpEBU7bgKoVXDNtOg4Xl6riUKHa9bjMVrL6ESqYlQ==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + /@types/scheduler@0.23.0: + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true /@types/serve-static@1.15.5: resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.11.30 + '@types/mime': 4.0.0 + '@types/node': 20.8.5 dev: true /@types/tunnel@0.0.4: resolution: {integrity: sha512-bQgDBL5XiqrrPUaZd9bZ2esOXcU4GTmgg0n6LHDqoMJezO3VFRZsW8qN6Gp64/LAmjtzNU3iAHBfV3Z2ht5DSg==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 dev: true /@types/turndown@5.0.4: @@ -5003,7 +4710,7 @@ packages: /@types/whatwg-url@8.2.2: resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.8.5 '@types/webidl-conversions': 7.0.3 dev: false @@ -5069,118 +4776,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@1.4.0: - resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} - dependencies: - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 - chai: 4.4.1 - dev: true - - /@vitest/runner@1.4.0: - resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} - dependencies: - '@vitest/utils': 1.4.0 - p-limit: 5.0.0 - pathe: 1.1.2 - dev: true - - /@vitest/snapshot@1.4.0: - resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} - dependencies: - magic-string: 0.30.8 - pathe: 1.1.2 - pretty-format: 29.7.0 - dev: true - - /@vitest/spy@1.4.0: - resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} - dependencies: - tinyspy: 2.2.1 - dev: true - - /@vitest/utils@1.4.0: - resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - - /@vue/compiler-core@3.4.21: - resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} - dependencies: - '@babel/parser': 7.24.1 - '@vue/shared': 3.4.21 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - dev: true - - /@vue/compiler-dom@3.4.21: - resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} - dependencies: - '@vue/compiler-core': 3.4.21 - '@vue/shared': 3.4.21 - dev: true - - /@vue/compiler-sfc@3.4.21: - resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} - dependencies: - '@babel/parser': 7.24.1 - '@vue/compiler-core': 3.4.21 - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 - estree-walker: 2.0.2 - magic-string: 0.30.8 - postcss: 8.4.37 - source-map-js: 1.2.0 - dev: true - - /@vue/compiler-ssr@3.4.21: - resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} - dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/shared': 3.4.21 - dev: true - - /@vue/reactivity@3.4.21: - resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} - dependencies: - '@vue/shared': 3.4.21 - dev: true - - /@vue/runtime-core@3.4.21: - resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} - dependencies: - '@vue/reactivity': 3.4.21 - '@vue/shared': 3.4.21 - dev: true - - /@vue/runtime-dom@3.4.21: - resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} - dependencies: - '@vue/runtime-core': 3.4.21 - '@vue/shared': 3.4.21 - csstype: 3.1.3 - dev: true - - /@vue/server-renderer@3.4.21(vue@3.4.21): - resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} - peerDependencies: - vue: 3.4.21 - dependencies: - '@vue/compiler-ssr': 3.4.21 - '@vue/shared': 3.4.21 - vue: 3.4.21 - dev: true - - /@vue/shared@3.4.21: - resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} - dev: true - /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} @@ -5202,7 +4797,6 @@ packages: /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - requiresBuild: true dev: false optional: true @@ -5229,11 +4823,6 @@ packages: acorn: 8.11.3 dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -5243,7 +4832,6 @@ packages: /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - requiresBuild: true dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -5258,6 +4846,14 @@ packages: humanize-ms: 1.2.1 dev: false + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + /ajv-draft-04@1.0.0(ajv@8.12.0): resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -5287,11 +4883,11 @@ packages: uri-js: 4.4.1 dev: false - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: - type-fest: 1.4.0 + type-fest: 0.21.3 dev: true /ansi-regex@5.0.1: @@ -5316,11 +4912,6 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -5339,14 +4930,12 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - requiresBuild: true dev: false optional: true /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} - requiresBuild: true dependencies: delegates: 1.0.0 readable-stream: 3.6.2 @@ -5387,13 +4976,14 @@ packages: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -5409,7 +4999,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -5421,7 +5011,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -5433,7 +5023,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -5443,7 +5033,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -5452,7 +5042,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -5461,7 +5051,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 dev: true @@ -5473,7 +5063,7 @@ packages: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -5484,6 +5074,24 @@ packages: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false + /asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.7 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.5 + util: 0.12.5 + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5492,6 +5100,11 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -5508,8 +5121,8 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + /axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 @@ -5586,7 +5199,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -5603,8 +5215,16 @@ packages: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} dev: false - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 @@ -5616,7 +5236,7 @@ packages: iconv-lite: 0.4.24 on-finished: 2.4.1 qs: 6.11.0 - raw-body: 2.5.2 + raw-body: 2.5.1 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -5632,25 +5252,86 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + dependencies: + resolve: 1.22.8 + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: true + + /browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.5 + hash-base: 3.0.4 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001599 - electron-to-chromium: 1.4.711 + caniuse-lite: 1.0.30001603 + electron-to-chromium: 1.4.723 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -5691,12 +5372,19 @@ packages: engines: {node: '>=4'} dev: false + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} @@ -5709,11 +5397,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -5737,8 +5420,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001599: - resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + /caniuse-lite@1.0.30001603: + resolution: {integrity: sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q==} /canvas@2.11.2(encoding@0.1.13): resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -5795,8 +5478,8 @@ packages: supports-color: 7.2.0 dev: true - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + /chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -5864,10 +5547,16 @@ packages: /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - requiresBuild: true dev: false optional: true + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /classcat@5.0.4: resolution: {integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==} dev: false @@ -5876,6 +5565,11 @@ packages: resolution: {integrity: sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ==} dev: false + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + /clear-any-console@1.16.2: resolution: {integrity: sha512-OL/7wZpNy9x0GBSzz3poWja84Nr7iaH8aYNsJ5Uet2BVLj6Lm1zvWpZN/yH46Vv3ae7YfHmLLMmfHj911fshJg==} dev: true @@ -5887,11 +5581,11 @@ packages: log-symbols: 3.0.0 dev: true - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: - restore-cursor: 4.0.0 + restore-cursor: 3.1.0 dev: true /cli-handle-error@4.4.0: @@ -5907,6 +5601,14 @@ packages: cli-handle-error: 4.4.0 dev: true + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5952,7 +5654,6 @@ packages: /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - requiresBuild: true dev: false optional: true @@ -5979,9 +5680,9 @@ packages: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} dev: true /commander@2.20.3: @@ -6019,12 +5720,19 @@ packages: typedarray: 0.0.6 dev: false + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - requiresBuild: true dev: false optional: true + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -6053,11 +5761,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: false - /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: @@ -6076,7 +5779,6 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -6092,6 +5794,12 @@ packages: layout-base: 1.0.2 dev: false + /cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + dependencies: + layout-base: 2.0.1 + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -6102,6 +5810,38 @@ packages: path-type: 4.0.0 yaml: 1.10.2 + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.5 + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -6115,6 +5855,22 @@ packages: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: false + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + /css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: @@ -6172,6 +5928,15 @@ packages: cytoscape: 3.28.1 dev: false + /cytoscape-fcose@2.2.0(cytoscape@3.28.1): + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + dependencies: + cose-base: 2.2.0 + cytoscape: 3.28.1 + dev: false + /cytoscape@3.28.1: resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==} engines: {node: '>=0.10'} @@ -6180,12 +5945,6 @@ packages: lodash: 4.17.21 dev: false - /d3-array@2.12.1: - resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} - dependencies: - internmap: 1.0.1 - dev: false - /d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} @@ -6303,10 +6062,6 @@ packages: d3-color: 3.1.0 dev: false - /d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - dev: false - /d3-path@3.1.0: resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} @@ -6327,13 +6082,6 @@ packages: engines: {node: '>=12'} dev: false - /d3-sankey@0.12.3: - resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - dependencies: - d3-array: 2.12.1 - d3-shape: 1.3.7 - dev: false - /d3-scale-chromatic@3.1.0: resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} engines: {node: '>=12'} @@ -6358,12 +6106,6 @@ packages: engines: {node: '>=12'} dev: false - /d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - dependencies: - d3-path: 1.0.9 - dev: false - /d3-shape@3.2.0: resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} @@ -6496,8 +6238,8 @@ packages: '@babel/runtime': 7.24.1 dev: false - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false /debug@2.6.9: @@ -6542,7 +6284,6 @@ packages: /decompress-response@4.2.1: resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} engines: {node: '>=8'} - requiresBuild: true dependencies: mimic-response: 2.1.0 dev: false @@ -6647,7 +6388,6 @@ packages: /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - requiresBuild: true dev: false optional: true @@ -6660,6 +6400,13 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -6668,7 +6415,6 @@ packages: /detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - requiresBuild: true dev: false optional: true @@ -6683,16 +6429,19 @@ packages: wrappy: 1.0.2 dev: false - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} dev: false + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + /digest-fetch@1.3.0: resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} dependencies: @@ -6741,6 +6490,11 @@ packages: entities: 4.5.0 dev: false + /domain-browser@4.23.0: + resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} + engines: {node: '>=10'} + dev: true + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -6762,8 +6516,8 @@ packages: resolution: {integrity: sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==} dev: false - /dompurify@3.0.10: - resolution: {integrity: sha512-WZDL8ZHTliEVP3Lk4phtvjg8SNQ3YMc5WVstxE8cszKZrFjzI4PF4ZTIk9VGAc9vZADO7uGO2V/ZiStcRSAT4Q==} + /dompurify@3.0.3: + resolution: {integrity: sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ==} dev: false /domutils@2.8.0: @@ -6819,13 +6573,25 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium@1.4.711: - resolution: {integrity: sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==} + /electron-to-chromium@1.4.723: + resolution: {integrity: sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==} - /elkjs@0.9.2: - resolution: {integrity: sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw==} + /elkjs@0.8.2: + resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false + /elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -6871,55 +6637,8 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /es-abstract@1.23.2: - resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 @@ -6961,11 +6680,11 @@ packages: safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.7 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 dev: true @@ -6986,7 +6705,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 @@ -7031,6 +6750,216 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} @@ -7061,37 +6990,6 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - dev: true - /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -7123,7 +7021,7 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.6 - '@rushstack/eslint-patch': 1.8.0 + '@rushstack/eslint-patch': 1.10.1 '@typescript-eslint/parser': 5.62.0(eslint@8.34.0)(typescript@4.9.5) eslint: 8.34.0 eslint-import-resolver-node: 0.3.9 @@ -7212,7 +7110,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.62.0(eslint@8.34.0)(typescript@4.9.5) - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -7244,7 +7142,7 @@ packages: dependencies: '@babel/runtime': 7.24.1 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.7.0 @@ -7276,7 +7174,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 array.prototype.toreversed: 1.1.2 @@ -7289,7 +7187,7 @@ packages: minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.hasown: 1.1.3 + object.hasown: 1.1.4 object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 @@ -7407,16 +7305,6 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.5 - dev: true - /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -7432,8 +7320,16 @@ packages: engines: {node: '>=6'} dev: false - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 dev: true /execa@7.2.0: @@ -7451,31 +7347,16 @@ packages: strip-final-newline: 3.0.0 dev: true - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - - /express@4.19.0: - resolution: {integrity: sha512-/ERliX0l7UuHEgAy7HU2FRsiz3ScIKNl/iwnoYzHTJC0Sqj3ctWDD3MQ9CbUEfjshvxXImWaeukD0Xo7a2lWLA==} + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.1 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.5.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 @@ -7647,14 +7528,6 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: true - /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} dev: false @@ -7680,8 +7553,8 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false - /formidable@2.1.2: - resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + /formidable@2.1.1: + resolution: {integrity: sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==} dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 @@ -7694,12 +7567,14 @@ packages: engines: {node: '>= 0.6'} dev: false - /framer-motion@9.1.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nKxBkIO4IPkMEqcBbbATxsVjwPYShKl051yhBv9628iAH6JLeHD0siBHxkL62oQzMC1+GNX73XtPjgP753ufuw==} + /framer-motion@9.0.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NBETSa14yI/osK6DxKmiiDj1N6Os6YFiXKN6fzxYsNKKeO0vjoQz3m40g0kJYiAWrMdXQjhjyCMJqfOLR+nnRw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: + '@motionone/dom': 10.17.0 + hey-listen: 1.0.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -7725,7 +7600,6 @@ packages: /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} - requiresBuild: true dependencies: minipass: 3.3.6 dev: false @@ -7750,7 +7624,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -7761,7 +7635,6 @@ packages: /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} - requiresBuild: true dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -7811,11 +7684,6 @@ packages: engines: {node: '>=10'} dev: true - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - /get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -7847,18 +7715,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - dev: true - /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: @@ -7957,42 +7813,39 @@ packages: /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - requiresBuild: true dev: false optional: true + /hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - /hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} - dependencies: - hastscript: 7.2.0 - web-namespaces: 2.0.1 - dev: false - - /hast-util-from-html-isomorphic@1.0.0: - resolution: {integrity: sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==} - dependencies: - '@types/hast': 2.3.10 - hast-util-from-dom: 4.2.0 - hast-util-from-html: 1.0.2 - unist-util-remove-position: 4.0.2 - dev: false - - /hast-util-from-html@1.0.2: - resolution: {integrity: sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==} - dependencies: - '@types/hast': 2.3.10 - hast-util-from-parse5: 7.1.2 - parse5: 7.1.2 - vfile: 5.3.7 - vfile-message: 3.1.4 - dev: false - /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: @@ -8064,10 +7917,22 @@ packages: engines: {node: '>=8'} dev: false + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: false + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -8098,10 +7963,13 @@ packages: toidentifier: 1.0.1 dev: false + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - requiresBuild: true dependencies: agent-base: 6.0.2 debug: 4.3.4 @@ -8115,11 +7983,6 @@ packages: engines: {node: '>=14.18.0'} dev: true - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -8160,7 +8023,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -8171,8 +8033,8 @@ packages: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false - /immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + /immer@9.0.19: + resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==} dev: false /immutable@4.3.5: @@ -8190,6 +8052,11 @@ packages: engines: {node: '>=0.8.19'} dev: true + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -8212,10 +8079,6 @@ packages: side-channel: 1.0.6 dev: true - /internmap@1.0.1: - resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} - dev: false - /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -8249,6 +8112,14 @@ packages: is-alphabetical: 1.0.4 is-decimal: 1.0.4 + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -8362,6 +8233,14 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true + /is-natural-number@4.0.1: resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} dev: false @@ -8477,7 +8356,6 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -8487,6 +8365,11 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + dev: true + /isomorphic.js@0.2.5: resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} dev: false @@ -8501,15 +8384,6 @@ packages: set-function-name: 2.0.2 dev: true - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - /joplin-turndown-plugin-gfm@1.0.12: resolution: {integrity: sha512-qL4+1iycQjZ1fs8zk3jSRk7cg3ROBUHk7GKtiLAQLFzLPKErnILUvz5DLszSQvz3s1sTjPbywLDISVUtBY6HaA==} dev: false @@ -8518,8 +8392,8 @@ packages: resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} dev: true - /js-tiktoken@1.0.10: - resolution: {integrity: sha512-ZoSxbGjvGyMT13x6ACo9ebhDha/0FHdKA+OsQcMOWcm1Zs7r90Rhk5lhERLzji+3rA7EKpXCgwXcM5fF3DMpdA==} + /js-tiktoken@1.0.7: + resolution: {integrity: sha512-biba8u/clw7iesNEWLOLwrNGoBP2lA+hTaBLs/D45pJdUPFXyxD6nhcDVtADChghv4GgyAiMKYMiRx7x6h7Biw==} dependencies: base64-js: 1.5.1 dev: false @@ -8527,10 +8401,6 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} - dev: true - /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -8595,10 +8465,6 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: true - /jsonwebtoken@9.0.2: resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} engines: {node: '>=12', npm: '>=6'} @@ -8619,7 +8485,7 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.2.0 @@ -8654,8 +8520,15 @@ packages: engines: {node: '>=12.0.0'} dev: false - /katex@0.16.9: - resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} + /katex@0.15.6: + resolution: {integrity: sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==} + hasBin: true + dependencies: + commander: 8.3.0 + dev: false + + /katex@0.16.10: + resolution: {integrity: sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==} hasBin: true dependencies: commander: 8.3.0 @@ -8691,6 +8564,10 @@ packages: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} dev: false + /layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + dev: false + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -8725,49 +8602,51 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} + /lint-staged@13.2.1: + resolution: {integrity: sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==} + engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: - chalk: 5.3.0 - commander: 11.0.0 + chalk: 5.2.0 + cli-truncate: 3.1.0 + commander: 10.0.1 debug: 4.3.4 execa: 7.2.0 lilconfig: 2.1.0 - listr2: 6.6.1 + listr2: 5.0.8 micromatch: 4.0.5 + normalize-path: 3.0.0 + object-inspect: 1.13.1 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.1 + yaml: 2.4.1 transitivePeerDependencies: - enquirer - supports-color dev: true - /listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} + /listr2@5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} + engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: enquirer: optional: true dependencies: - cli-truncate: 3.1.0 + cli-truncate: 2.1.0 colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 + log-update: 4.0.0 + p-map: 4.0.0 rfdc: 1.3.1 - wrap-ansi: 8.1.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 dev: true - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} - dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 dev: true /locate-path@6.0.0: @@ -8832,15 +8711,14 @@ packages: chalk: 2.4.2 dev: true - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 dev: true /longest-streak@3.1.0: @@ -8874,11 +8752,6 @@ packages: highlight.js: 10.7.3 dev: false - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - dev: true - /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -8890,13 +8763,6 @@ packages: dependencies: yallist: 4.0.0 - /magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /make-dir@1.3.0: resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} engines: {node: '>=4'} @@ -8907,14 +8773,13 @@ packages: /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - requiresBuild: true dependencies: semver: 6.3.1 dev: false optional: true - /mammoth@1.7.0: - resolution: {integrity: sha512-ptFhft61dqieLffpdpHD7PUS0cX9YvHQIO3n3ejRhj1bi5Na+RL5wovtNHHXAK6Oj554XfGrVcyTuxgegN6umw==} + /mammoth@1.6.0: + resolution: {integrity: sha512-jOwbj6BwJzxCf6jr2l1zmSemniIkLnchvELXnDJCANlJawhzyIKObIq48B8kWEPLgUUh57k7FtEO3DHFQMnjMg==} engines: {node: '>=12.0.0'} hasBin: true dependencies: @@ -8938,6 +8803,14 @@ packages: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: @@ -9103,7 +8976,6 @@ packages: /memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - requiresBuild: true dev: false optional: true @@ -9120,21 +8992,18 @@ packages: engines: {node: '>= 8'} dev: true - /mermaid@10.9.0: - resolution: {integrity: sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==} + /mermaid@10.2.3: + resolution: {integrity: sha512-cMVE5s9PlQvOwfORkyVpr5beMsLdInrycAosdr+tpZ0WFjG4RJ/bUHST7aTgHNJbujHkdBRAm+N50P3puQOfPw==} dependencies: '@braintree/sanitize-url': 6.0.4 - '@types/d3-scale': 4.0.8 - '@types/d3-scale-chromatic': 3.0.3 cytoscape: 3.28.1 cytoscape-cose-bilkent: 4.1.0(cytoscape@3.28.1) + cytoscape-fcose: 2.2.0(cytoscape@3.28.1) d3: 7.9.0 - d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 - dayjs: 1.11.10 - dompurify: 3.0.10 - elkjs: 0.9.2 - katex: 0.16.9 + dayjs: 1.11.7 + dompurify: 3.0.3 + elkjs: 0.8.2 khroma: 2.1.0 lodash-es: 4.17.21 mdast-util-from-markdown: 1.3.1 @@ -9249,7 +9118,7 @@ packages: resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} dependencies: '@types/katex': 0.16.7 - katex: 0.16.9 + katex: 0.16.10 micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 @@ -9419,6 +9288,14 @@ packages: picomatch: 2.3.1 dev: true + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -9437,6 +9314,12 @@ packages: hasBin: true dev: false + /mime@4.0.1: + resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + engines: {node: '>=16'} + hasBin: true + dev: true + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -9450,29 +9333,28 @@ packages: /mimic-response@2.1.0: resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} engines: {node: '>=8'} - requiresBuild: true dev: false optional: true + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - requiresBuild: true dependencies: yallist: 4.0.0 dev: false @@ -9481,19 +9363,12 @@ packages: /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - requiresBuild: true dev: false optional: true - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true - /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - requiresBuild: true dependencies: minipass: 3.3.6 yallist: 4.0.0 @@ -9511,19 +9386,9 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - requiresBuild: true dev: false optional: true - /mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.3 - dev: true - /monaco-editor@0.47.0: resolution: {integrity: sha512-VabVvHvQ9QmMwXu4du008ZDuyLnHs9j7ThVFsiJoXSOQk18+LF89N4ADzPbFenm0W4V2bGHnFBztIRQTgBfxzw==} dev: false @@ -9535,22 +9400,16 @@ packages: whatwg-url: 11.0.0 dev: false - /mongodb@5.9.1: - resolution: {integrity: sha512-NBGA8AfJxGPeB12F73xXwozt8ZpeIPmCUeWRwl9xejozTXFes/3zaep9zhzs1B/nKKsw4P3I4iPfXl3K7s6g+Q==} + /mongodb@5.1.0: + resolution: {integrity: sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw==} engines: {node: '>=14.20.1'} peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.0.0 - kerberos: ^1.0.0 || ^2.0.0 - mongodb-client-encryption: '>=2.3.0 <3' + '@aws-sdk/credential-providers': ^3.201.0 + mongodb-client-encryption: ^2.3.0 snappy: ^7.2.2 peerDependenciesMeta: '@aws-sdk/credential-providers': optional: true - '@mongodb-js/zstd': - optional: true - kerberos: - optional: true mongodb-client-encryption: optional: true snappy: @@ -9560,24 +9419,22 @@ packages: mongodb-connection-string-url: 2.6.0 socks: 2.8.1 optionalDependencies: - '@mongodb-js/saslprep': 1.1.5 + saslprep: 1.0.3 dev: false - /mongoose@7.6.10: - resolution: {integrity: sha512-vfvGxXwFk6rZVRaMC+8pgXj1uOR2RafZpgaA3fO6ygDJN7dXnBQ3ehuacwaVD+U3hmZetqHimORJhvLEpdRl1w==} - engines: {node: '>=14.20.1'} + /mongoose@7.0.2: + resolution: {integrity: sha512-whX+5lAOLOs6VXRr9w+6m5qb8m/IXWLLb9+0/HRUh2TiIYtTt7UvajK92zW6wllCjBkrrnz/MDIOTCWMbs8K4g==} + engines: {node: '>=14.0.0'} dependencies: bson: 5.5.1 kareem: 2.5.1 - mongodb: 5.9.1 + mongodb: 5.1.0 mpath: 0.9.0 mquery: 5.0.0 ms: 2.1.3 sift: 16.0.1 transitivePeerDependencies: - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - kerberos - mongodb-client-encryption - snappy - supports-color @@ -9627,7 +9484,6 @@ packages: /nan@2.19.0: resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - requiresBuild: true dev: false optional: true @@ -9636,8 +9492,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + /nanoid@4.0.1: + resolution: {integrity: sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww==} engines: {node: ^14 || ^16 || >=18} hasBin: true dev: false @@ -9666,11 +9522,11 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 23.10.0 i18next-fs-backend: 2.3.1 - next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) react: 18.2.0 react-i18next: 13.5.0(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0) - /next@13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0): + /next@13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3): resolution: {integrity: sha512-vog4UhUaMYAzeqfiAAmgB/QWLW7p01/sg+2vn6bqc/CxHFYizMzLv6gjxKzl31EVFkfl/F+GbxlKizlkTE9RdA==} engines: {node: '>=16.14.0'} hasBin: true @@ -9688,11 +9544,11 @@ packages: '@next/env': 13.5.2 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001599 + caniuse-lite: 1.0.30001603 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - sass: 1.72.0 + sass: 1.58.3 styled-jsx: 5.1.1(@babel/core@7.24.3)(react@18.2.0) watchpack: 2.4.0 zod: 3.21.4 @@ -9710,13 +9566,13 @@ packages: - '@babel/core' - babel-plugin-macros - /nextjs-cors@2.2.0(next@13.5.2): - resolution: {integrity: sha512-FZu/A+L59J4POJNqwXYyCPDvsLDeu5HjSBvytzS6lsrJeDz5cmnH45zV+VoNic0hjaeER9xGaiIjZIWzEHnxQg==} + /nextjs-cors@2.1.2(next@13.5.2): + resolution: {integrity: sha512-2yOVivaaf2ILe4f/qY32hnj3oC77VCOsUQJQfhVMGsXE/YMEWUY2zy78sH9FKUCM7eG42/l3pDofIzMD781XGA==} peerDependencies: - next: ^8.1.1-canary.54 || ^9.0.0 || ^10.0.0-0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 + next: ^8.1.1-canary.54 || ^9.0.0 || ^10.0.0-0 || ^11.0.0 || ^12.0.0 || ^13.0.0 dependencies: cors: 2.8.5 - next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.72.0) + next: 13.5.2(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0)(sass@1.58.3) dev: false /node-cron@3.0.3: @@ -9747,6 +9603,39 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-stdlib-browser@1.2.0: + resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==} + engines: {node: '>=10'} + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.0 + domain-browser: 4.23.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.3 + util: 0.12.5 + vm-browserify: 1.1.2 + dev: true + /node-xlsx@0.23.0: resolution: {integrity: sha512-r3KaSZSsSrK92rbPXnX/vDdxURmPPik0rjJ3A+Pybzpjyrk4G6WyGfj8JIz5dMMEpCmWVpmO4qoVPBxnpLv/8Q==} engines: {node: '>=10.0.0'} @@ -9763,7 +9652,6 @@ packages: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} hasBin: true - requiresBuild: true dependencies: abbrev: 1.1.1 dev: false @@ -9782,7 +9670,6 @@ packages: /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - requiresBuild: true dependencies: are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 @@ -9807,6 +9694,14 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -9837,7 +9732,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 dev: true @@ -9847,14 +9742,16 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true /object.values@1.2.0: @@ -9866,10 +9763,6 @@ packages: es-object-atoms: 1.0.0 dev: true - /obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: true - /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -9900,7 +9793,7 @@ packages: resolution: {integrity: sha512-JM8fhcpmpGN0vrUwGquYIzdcEQHtFuom6sRCbbCM6CfzZXNuRk33G7KfeRAIfnaCxSpzrP5iHtwJzIm6biUZ2Q==} hasBin: true dependencies: - '@types/node': 18.19.26 + '@types/node': 18.19.28 '@types/node-fetch': 2.6.11 abort-controller: 3.0.0 agentkeepalive: 4.5.0 @@ -9933,6 +9826,10 @@ packages: type-check: 0.4.0 dev: true + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -9940,13 +9837,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - dependencies: - yocto-queue: 1.0.0 - dev: true - /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -9954,13 +9844,19 @@ packages: p-limit: 3.1.0 dev: true + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + /packet-reader@1.0.0: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} dev: false /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: false /papaparse@5.4.1: resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} @@ -9972,6 +9868,18 @@ packages: dependencies: callsites: 3.1.0 + /parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.4 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + /parse-entities@1.2.2: resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} dependencies: @@ -10010,6 +9918,10 @@ packages: parse5: 7.1.2 dev: false + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -10021,6 +9933,10 @@ packages: engines: {node: '>= 0.8'} dev: false + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -10043,14 +9959,6 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - dev: true - /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false @@ -10071,18 +9979,24 @@ packages: /path2d@0.1.1: resolution: {integrity: sha512-/+S03c8AGsDYKKBtRDqieTJv2GlkMb0bWjnqOgtF6MkjdUQ9a8ARAtxWf9NgKLGm2+WQr6+/tqJdU8HNGsIDoA==} engines: {node: '>=6'} - requiresBuild: true dev: false optional: true - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true - /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /pdfjs-dist@4.0.269(encoding@0.1.13): resolution: {integrity: sha512-jjWO56tcOjnmPqDf8PmXDeZ781AGvpHMYI3HhNtaFKTRXXPaD1ArSrhVe38/XsrIQJ0onISCND/vuXaWJkiDWw==} engines: {node: '>=18'} @@ -10103,35 +10017,24 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: false - /pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - requiresBuild: true - dev: false - optional: true - - /pg-connection-string@2.6.2: - resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + /pg-connection-string@2.6.3: + resolution: {integrity: sha512-77FxhhKJQH+xJx6tDqkhhMa0nZvv3U1HYLDQgwZxZafVD583++O5LXn5oo5HaQZ0vXwYcZA1koYAJM3JvD6Gtw==} dev: false /pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - /pg-numeric@1.0.2: - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} - engines: {node: '>=4'} - dev: true - - /pg-pool@3.6.1(pg@8.11.3): - resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + /pg-pool@3.6.2(pg@8.10.0): + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} peerDependencies: pg: '>=8.0' dependencies: - pg: 8.11.3 + pg: 8.10.0 dev: false - /pg-protocol@1.6.0: - resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + /pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} /pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} @@ -10142,23 +10045,9 @@ packages: postgres-bytea: 1.0.0 postgres-date: 1.0.7 postgres-interval: 1.2.0 - dev: false - /pg-types@4.0.2: - resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} - engines: {node: '>=10'} - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.2 - postgres-bytea: 3.0.0 - postgres-date: 2.1.0 - postgres-interval: 3.0.0 - postgres-range: 1.1.4 - dev: true - - /pg@8.11.3: - resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} + /pg@8.10.0: + resolution: {integrity: sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -10168,13 +10057,11 @@ packages: dependencies: buffer-writer: 2.0.0 packet-reader: 1.0.0 - pg-connection-string: 2.6.2 - pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0 + pg-connection-string: 2.6.3 + pg-pool: 3.6.2(pg@8.10.0) + pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 dev: false /pgpass@1.0.5: @@ -10218,12 +10105,11 @@ packages: engines: {node: '>=0.10.0'} dev: false - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 - pathe: 1.1.2 + find-up: 5.0.0 dev: true /possible-typed-array-names@1.0.0: @@ -10239,8 +10125,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.2.0 - /postcss@8.4.37: - resolution: {integrity: sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==} + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -10251,50 +10137,20 @@ packages: /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} - dev: false - - /postgres-array@3.0.2: - resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} - engines: {node: '>=12'} - dev: true /postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} - dev: false - - /postgres-bytea@3.0.0: - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} - engines: {node: '>= 6'} - dependencies: - obuf: 1.1.2 - dev: true /postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} - dev: false - - /postgres-date@2.1.0: - resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} - engines: {node: '>=12'} - dev: true /postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} dependencies: xtend: 4.0.2 - dev: false - - /postgres-interval@3.0.0: - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} - engines: {node: '>=12'} - dev: true - - /postgres-range@1.1.4: - resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} - dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -10313,15 +10169,6 @@ packages: hasBin: true dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /prismjs@1.27.0: resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} engines: {node: '>=6'} @@ -10334,7 +10181,11 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -10365,6 +10216,21 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -10381,19 +10247,36 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 - dev: false + + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: false - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 @@ -10411,10 +10294,10 @@ packages: react: 18.2.0 dev: false - /react-day-picker@8.10.0(date-fns@2.30.0)(react@18.2.0): - resolution: {integrity: sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg==} + /react-day-picker@8.7.1(date-fns@2.30.0)(react@18.2.0): + resolution: {integrity: sha512-Gv426AW8b151CZfh3aP5RUGztLwHB/EyJgWZ5iMgtzbFBkjHfG6Y66CIQFMWGLnYjsQ9DYSJRmJ5S0Pg5HWKjA==} peerDependencies: - date-fns: ^2.28.0 || ^3.0.0 + date-fns: ^2.28.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: date-fns: 2.30.0 @@ -10496,6 +10379,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false /react-markdown@8.0.7(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} @@ -10504,7 +10388,7 @@ packages: react: '>=16' dependencies: '@types/hast': 2.3.10 - '@types/prop-types': 15.7.11 + '@types/prop-types': 15.7.12 '@types/react': 18.2.0 '@types/unist': 2.0.10 comma-separated-tokens: 2.0.3 @@ -10595,22 +10479,21 @@ packages: dependencies: loose-envify: 1.4.0 - /reactflow@11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0CApYhtYicXEDg/x2kvUHiUk26Qur8lAtTtiSlptNKuyEuGti6P1y5cS32YGaUoDMoCqkm/m+jcKkfMOvSCVRA==} + /reactflow@11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QI6+oc1Ft6oFeLSdHlp+SmgymbI5Tm49wj5JyE84O4A54yN/ImfYaBhLit9Cmfzxn9Tz6tDqmGMGbk4bdtB8/w==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/background': 11.3.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/controls': 11.2.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/core': 11.10.4(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/minimap': 11.7.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-resizer': 2.2.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-toolbar': 1.3.9(@types/react@18.2.0)(immer@9.0.21)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/background': 11.2.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/controls': 11.1.15(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.7.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/minimap': 11.5.4(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-resizer': 2.1.1(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-toolbar': 1.2.3(immer@9.0.19)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - - '@types/react' - immer dev: false @@ -10624,17 +10507,14 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - requiresBuild: true dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} @@ -10655,7 +10535,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 globalthis: 1.0.3 @@ -10724,17 +10604,28 @@ packages: jsesc: 0.5.0 dev: true - /rehype-katex@6.0.3: - resolution: {integrity: sha512-ByZlRwRUcWegNbF70CVRm2h/7xy7jQ3R9LaY4VVSvjnoVWwWVhNL60DiZsBpC5tSzYQOCvDbzncIpIjPZWodZA==} + /rehype-katex@6.0.2: + resolution: {integrity: sha512-C4gDAlS1+l0hJqctyiU64f9CvT00S03qV1T6HiMzbSuLBgWUtcqydWHY9OpKrm0SpkK16FNd62CDKyWLwV2ppg==} dependencies: '@types/hast': 2.3.10 - '@types/katex': 0.14.0 - hast-util-from-html-isomorphic: 1.0.0 + '@types/katex': 0.11.1 hast-util-to-text: 3.1.2 - katex: 0.16.9 + katex: 0.15.6 + rehype-parse: 8.0.5 + unified: 10.1.2 + unist-util-remove-position: 4.0.2 unist-util-visit: 4.1.2 dev: false + /rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + dependencies: + '@types/hast': 2.3.10 + hast-util-from-parse5: 7.1.2 + parse5: 6.0.1 + unified: 10.1.2 + dev: false + /remark-breaks@3.0.3: resolution: {integrity: sha512-C7VkvcUp1TPUc2eAYzsPdaUh8Xj4FSbQnYA5A9f80diApLZscTDeG7efiWP65W8hV2sEy3JuGVU0i6qr5D8Hug==} dependencies: @@ -10848,9 +10739,9 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 @@ -10871,30 +10762,22 @@ packages: dependencies: glob: 7.2.3 + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + /robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false - /rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} hasBin: true - dependencies: - '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 fsevents: 2.3.3 dev: true @@ -10908,6 +10791,12 @@ packages: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -10927,11 +10816,9 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -10946,9 +10833,18 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sass@1.72.0: - resolution: {integrity: sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==} - engines: {node: '>=14.0.0'} + /saslprep@1.0.3: + resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + sparse-bitfield: 3.0.3 + dev: false + optional: true + + /sass@1.58.3: + resolution: {integrity: sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==} + engines: {node: '>=12.0.0'} hasBin: true dependencies: chokidar: 3.6.0 @@ -11013,7 +10909,6 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - requiresBuild: true dev: false optional: true @@ -11040,12 +10935,19 @@ packages: /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -11071,27 +10973,16 @@ packages: resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} dev: false - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true - /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - requiresBuild: true dev: false optional: true /simple-get@3.1.1: resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - requiresBuild: true dependencies: decompress-response: 4.2.1 once: 1.4.0 @@ -11104,6 +10995,24 @@ packages: engines: {node: '>=8'} dev: true + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -11149,7 +11058,6 @@ packages: /sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - requiresBuild: true dependencies: memory-pager: 1.5.0 dev: false @@ -11173,10 +11081,6 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - /state-local@1.0.7: resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} dev: false @@ -11190,8 +11094,20 @@ packages: engines: {node: '>= 0.8'} dev: false - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 dev: true /streamsearch@1.1.0: @@ -11226,7 +11142,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 @@ -11244,7 +11160,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-abstract: 1.23.3 es-object-atoms: 1.0.0 dev: true @@ -11256,26 +11172,24 @@ packages: es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: false /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - requiresBuild: true dependencies: safe-buffer: 5.2.1 - dev: false /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -11311,12 +11225,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} - dependencies: - js-tokens: 8.0.3 - dev: true - /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} @@ -11409,10 +11317,9 @@ packages: xtend: 4.0.2 dev: false - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - requiresBuild: true dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -11429,27 +11336,29 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false - /timezones-list@3.0.3: - resolution: {integrity: sha512-C+Vdvvj2c1xB6pu81pOX8geo6mrk/QsudFVlTVQET7QQwu8WAIyhDNeCrK5grU7EMzmbKLWqz7uU6dN8fvQvPQ==} + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /timezones-list@3.0.2: + resolution: {integrity: sha512-I698hm6Jp/xxkwyTSOr39pZkYKETL8LDJeSIhjxXBfPUAHM5oZNuQ4o9UK3PSkDBOkjATecSOBb3pR1IkIBUsg==} dev: false /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} dev: false - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - dev: true - - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.2.4: + resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + /tinyspy@1.1.1: + resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} engines: {node: '>=14.0.0'} dev: true @@ -11555,13 +11464,17 @@ packages: typescript: 4.9.5 dev: true + /tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + dev: true + /tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} dev: false - /turndown@7.1.3: - resolution: {integrity: sha512-Z3/iJ6IWh8VBiACWQJaA5ulPQE5E1QwvBHj00uGzdQxdRnd8fh1DPqNOJqzQDu6DkOstORrtXzf/9adB+vMtEA==} + /turndown@7.1.2: + resolution: {integrity: sha512-ntI9R7fcUKjqBP6QU8rBK2Ehyt8LAzt3UBT9JR9tgo6GtuKvyUzpayWmeMKJw1DPdXzktvtIT8m2mVXz+bL/Qg==} dependencies: domino: 2.1.6 dev: false @@ -11583,8 +11496,8 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true @@ -11628,8 +11541,8 @@ packages: is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -11650,10 +11563,6 @@ packages: hasBin: true dev: true - /ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - dev: true - /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -11674,8 +11583,12 @@ packages: resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} dev: false + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false /unherit@1.1.3: resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} @@ -11829,6 +11742,13 @@ packages: dependencies: punycode: 2.3.1 + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.12.0 + dev: true + /use-callback-ref@1.3.2(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -11870,7 +11790,16 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + dev: true /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -11946,35 +11875,13 @@ packages: vfile-message: 3.1.4 dev: false - /vite-node@1.4.0: - resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.2.2 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite@5.2.2: - resolution: {integrity: sha512-FWZbz0oSdLq5snUI0b6sULbz58iXFXdvkZfZWR/F0ZJuKTSPO7v72QPXt6KqYeMFb0yytNp6kZosxJ96Nr/wDQ==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite@3.2.10(@types/node@20.8.5): + resolution: {integrity: sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': '>= 14' less: '*' - lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -11984,8 +11891,6 @@ packages: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true stylus: @@ -11995,61 +11900,51 @@ packages: terser: optional: true dependencies: - esbuild: 0.20.2 - postcss: 8.4.37 - rollup: 4.13.0 + '@types/node': 20.8.5 + esbuild: 0.15.18 + postcss: 8.4.38 + resolve: 1.22.8 + rollup: 2.79.1 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.4.0: - resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} - engines: {node: ^18.0.0 || >=20.0.0} + /vitest@0.21.1: + resolution: {integrity: sha512-WBIxuFmIDPuK47GO6Lu9eNeRMqHj/FWL3dk73OHH3eyPPWPiu+UB3QHLkLK2PEggCqJW4FaWoWg8R68S7p9+9Q==} + engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.4.0 - '@vitest/ui': 1.4.0 + '@vitest/browser': '*' + '@vitest/ui': '*' + c8: '*' happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/node': - optional: true '@vitest/browser': optional: true '@vitest/ui': optional: true + c8: + optional: true happy-dom: optional: true jsdom: optional: true dependencies: - '@vitest/expect': 1.4.0 - '@vitest/runner': 1.4.0 - '@vitest/snapshot': 1.4.0 - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 - acorn-walk: 8.3.2 + '@types/chai': 4.3.14 + '@types/chai-subset': 1.3.5 + '@types/node': 20.8.5 chai: 4.4.1 debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.8 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.2.2 - vite-node: 1.4.0 - why-is-node-running: 2.2.2 + local-pkg: 0.4.3 + tinypool: 0.2.4 + tinyspy: 1.1.1 + vite: 3.2.10(@types/node@20.8.5) transitivePeerDependencies: - less - - lightningcss - sass - stylus - sugarss @@ -12057,25 +11952,14 @@ packages: - terser dev: true + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - /vue@3.4.21: - resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@vue/compiler-dom': 3.4.21 - '@vue/compiler-sfc': 3.4.21 - '@vue/runtime-dom': 3.4.21 - '@vue/server-renderer': 3.4.21(vue@3.4.21) - '@vue/shared': 3.4.21 - dev: true - /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -12182,23 +12066,22 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - requiresBuild: true dependencies: string-width: 4.2.3 dev: false optional: true + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -12208,15 +12091,6 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: true - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -12239,9 +12113,10 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + /yaml@2.4.1: + resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} engines: {node: '>= 14'} + hasBin: true dev: true /yauzl@2.10.0: @@ -12263,39 +12138,31 @@ packages: engines: {node: '>=10'} dev: true - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - - /zhlint@0.7.4: - resolution: {integrity: sha512-E1rA6TyQJ1cWWfMoM8KE1hMdDDi5B8Gv+8OYPXe733Lf0C3EwJ+jh1cpoK/KTrYeITumRZQ0KSPkBRMNZuC8oA==} + /zhlint@0.7.1: + resolution: {integrity: sha512-FwwBm1JKyvIBm16exTqyG5gfnvp1fCKn9hIkjXj3cmbCn3aWE6FQaPTkmJfrLR0JNP1CIZjBDdD5Wkbts2r8PA==} hasBin: true dependencies: chalk: 4.1.2 - glob: 10.3.10 - ignore: 5.3.1 + glob: 7.2.3 minimist: 1.2.8 + node-stdlib-browser: 1.2.0 remark-frontmatter: 1.3.3 remark-parse: 7.0.2 unified: 8.4.2 - vitest: 1.4.0 - vue: 3.4.21 + vitest: 0.21.1 transitivePeerDependencies: - '@edge-runtime/vm' - - '@types/node' - '@vitest/browser' - '@vitest/ui' + - c8 - happy-dom - jsdom - less - - lightningcss - sass - stylus - sugarss - supports-color - terser - - typescript dev: true /zod@3.21.4: @@ -12313,23 +12180,19 @@ packages: tslib: 2.3.0 dev: false - /zustand@4.5.2(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0): - resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + /zustand@4.3.5(immer@9.0.19)(react@18.2.0): + resolution: {integrity: sha512-2iPUzfwx+g3f0PagOMz2vDO9mZzEp2puFpNe7vrAymVPOEIEUjCPkC4/zy84eAscxIWmTU4j9g6upXYkJdzEFQ==} engines: {node: '>=12.7.0'} peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' + immer: '>=9.0' react: '>=16.8' peerDependenciesMeta: - '@types/react': - optional: true immer: optional: true react: optional: true dependencies: - '@types/react': 18.2.0 - immer: 9.0.21 + immer: 9.0.19 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false diff --git a/projects/app/data/config.json b/projects/app/data/config.json index 6a36ab45f..cde49dd43 100644 --- a/projects/app/data/config.json +++ b/projects/app/data/config.json @@ -1,4 +1,7 @@ { + "feConfigs": { + "lafEnv": "https://laf.dev" + }, "systemEnv": { "openapiPrefix": "fastgpt", "vectorMaxProcess": 15, diff --git a/projects/app/public/imgs/module/laf.png b/projects/app/public/imgs/module/laf.png new file mode 100644 index 000000000..f3fa36060 Binary files /dev/null and b/projects/app/public/imgs/module/laf.png differ diff --git a/projects/app/public/js/iframe.js b/projects/app/public/js/iframe.js index 5624597e9..84a598c7e 100644 --- a/projects/app/public/js/iframe.js +++ b/projects/app/public/js/iframe.js @@ -23,7 +23,7 @@ function embedChatbot() { const ChatBtn = document.createElement('div'); ChatBtn.id = chatBtnId; ChatBtn.style.cssText = - 'position: fixed; bottom: 1rem; right: 1rem; width: 40px; height: 40px; cursor: pointer; z-index: 2147483647; transition: 0;'; + 'position: fixed; bottom: 30px; right: 60px; width: 40px; height: 40px; cursor: pointer; z-index: 2147483647; transition: 0;'; // btn icon const ChatBtnDiv = document.createElement('img'); @@ -39,7 +39,7 @@ function embedChatbot() { iframe.id = chatWindowId; iframe.src = botSrc; iframe.style.cssText = - 'border: none; position: fixed; flex-direction: column; justify-content: space-between; box-shadow: rgba(150, 150, 150, 0.2) 0px 10px 30px 0px, rgba(150, 150, 150, 0.2) 0px 0px 0px 1px; bottom: 4rem; right: 1rem; width: 24rem; height: 40rem; max-width: 90vw; max-height: 85vh; border-radius: 0.75rem; display: flex; z-index: 2147483647; overflow: hidden; left: unset; background-color: #F3F4F6;'; + 'border: none; position: fixed; flex-direction: column; justify-content: space-between; box-shadow: rgba(150, 150, 150, 0.2) 0px 10px 30px 0px, rgba(150, 150, 150, 0.2) 0px 0px 0px 1px; bottom: 80px; right: 60px; width: 375px; height: 667px; max-width: 90vw; max-height: 85vh; border-radius: 0.75rem; display: flex; z-index: 2147483647; overflow: hidden; left: unset; background-color: #F3F4F6;'; iframe.style.visibility = defaultOpen ? 'unset' : 'hidden'; document.body.appendChild(iframe); diff --git a/projects/app/public/locales/en/common.json b/projects/app/public/locales/en/common.json index e0fa3b524..84df7fe42 100644 --- a/projects/app/public/locales/en/common.json +++ b/projects/app/public/locales/en/common.json @@ -148,6 +148,7 @@ "Status": "Status", "Submit failed": "Submit failed", "Submit success": "Update Success", + "Sync success": "", "System version": "System version", "Team": "Team", "Team Tags Set": "Team Tags", @@ -819,6 +820,7 @@ "Http request props": "Request props", "Http request settings": "Request settings", "Input Type": "Input Type", + "Laf sync params": "Sync params", "Plugin output must connect": "Custom outputs must all be connected", "QueryExtension": { "placeholder": "Questions about python introduction and usage, etc. The current conversation is related to the game GTA5.", @@ -912,6 +914,9 @@ "target": "Target Data", "textarea": "Textarea" }, + "laf": { + "Select laf function": "" + }, "output": { "Add Output": "Add Output", "Output Number": "Output: {{length}}", @@ -1226,19 +1231,26 @@ "Set Public": "Set to public" }, "plugin": { + "App": "Choose App", "Auth Header Prefix": "Auth header prefix", "Auth Method": "Auth method", "Auth Type": "Auth Type", "Confirm Delete": "Confirm to delete the plugin?", "Create Your Plugin": "Create Plugin", + "Currentapp": "CurrentApp", "Custom Plugin": "Custom plugin", "Description": "Description", "Edit Http Plugin": "Edit HTTP plugin", + "Enter Env": "Enter laf environment", + "Enter PAT": "Please enter personal access token (PAT)", + "Func": "Choose Function", "Get Plugin Module Detail Failed": "Get plugin detail failed", "HTTP Plugin": "HTTP plugin", "Import Plugin": "Import HTTP plugin", "Import from URL": "Import from URL. https://xxxx", "Intro": "Plugin Intro", + "Invalid Appid": "Invalid appid", + "Invalid Env": "Invalid Env", "Invalid Schema": "Invalid Schema", "Invalid URL": "Invalid URL", "Key": "Key", @@ -1248,16 +1260,20 @@ "No Intro": "This plugin is not introduced", "None": "None", "Path": "Path", + "Please bind laf accout first": "Please bind laf accout first", "Plugin List": "Plugin list", "Plugin Module": "Plugin", "Privacy Agreement": "privacy agreement", "Search plugin": "Search plugins", "Set Name": "Plugin Name", + "Synchronous app": "Sync App", "Synchronous version": "Sync Version", "To Edit Plugin": "To Edit", "Update Your Plugin": "Update Plugin", "Value": "Value", - "path": "" + "go to laf": "go to laf", + "path": "", + "update params": "update params" }, "support": { "account": { @@ -1303,6 +1319,9 @@ "user": { "AI point standard": "AI points price", "Avatar": "Avatar", + "Go laf env": "Click to go to laf to get PAT certificate.", + "Laf account course": "Check out the laf account binding tutorial.", + "Laf account intro": "After binding your laf account, you will be able to use the laf module in your workflow to write code online.", "Need to login": "Please log in first", "Price": "Price", "User self info": "My info", @@ -1495,10 +1514,13 @@ "Bill Detail": "Bill Detail", "Change": "Change", "Copy invite url": "Copy invitation link", + "Current laf Env": "Current laf Env", "Edit name": "Click to modify nickname", "Invite Url": "Invite Url", "Invite url tip": "Friends who register through this link will be permanently bound to you, and you will get a certain balance reward when they recharge. In addition, when friends register with their mobile phone number, you will get 5 yuan reward immediately.", + "Laf Account Setting": "laf account setting", "Language": "Language", + "Learn More": "Learn More", "Member Name": "Name", "Notice": "Notice", "Old password is error": "Old password is error", @@ -1513,6 +1535,7 @@ "Promotion rate tip": "You will be rewarded with a percentage of the balance when your friends top up", "Recharge Record": "Recharge", "Replace": "Replace", + "Set Laf Account Failed": "set laf accout failed", "Set OpenAI Account Failed": "Set OpenAI account failed", "Sign Out": "Sign Out", "Source": "Source", diff --git a/projects/app/public/locales/zh/common.json b/projects/app/public/locales/zh/common.json index 47c492787..8bf8829b0 100644 --- a/projects/app/public/locales/zh/common.json +++ b/projects/app/public/locales/zh/common.json @@ -148,6 +148,7 @@ "Status": "状态", "Submit failed": "提交失败", "Submit success": "提交成功", + "Sync success": "同步成功", "System version": "系统版本", "Team": "团队", "Team Tags Set": "标签", @@ -821,6 +822,7 @@ "Http request props": "请求参数", "Http request settings": "请求配置", "Input Type": "输入类型", + "Laf sync params": "同步参数", "Plugin output must connect": "自定义输出必须全部连接", "QueryExtension": { "placeholder": "例如:\n关于 python 的介绍和使用等问题。\n当前对话与游戏《GTA5》有关。", @@ -914,6 +916,9 @@ "target": "外部数据", "textarea": "段落输入" }, + "laf": { + "Select laf function": "选择laf函数" + }, "output": { "Add Output": "添加出参", "Output Number": "出参: {{length}}", @@ -1228,19 +1233,26 @@ "Set Public": "设为团队可用" }, "plugin": { + "App": "选择应用", "Auth Header Prefix": "鉴权头部前缀", "Auth Method": "鉴权方法", "Auth Type": "鉴权类型", "Confirm Delete": "确认删除该插件?", "Create Your Plugin": "创建你的插件", + "Currentapp": "当前应用", "Custom Plugin": "自定义插件", "Description": "描述", "Edit Http Plugin": "编辑 HTTP 插件", + "Enter Env": "输入 laf 环境", + "Enter PAT": "请输入访问凭证(PAT)", + "Func": "选择函数", "Get Plugin Module Detail Failed": "获取插件信息异常", "HTTP Plugin": "HTTP 插件", "Import Plugin": "导入 HTTP 插件", "Import from URL": "从URL导入。https://xxxx", "Intro": "插件介绍", + "Invalid Appid": "appid 无效", + "Invalid Env": "laf 环境错误", "Invalid Schema": "Schema 无效", "Invalid URL": "URL 无效", "Key": "键", @@ -1250,16 +1262,20 @@ "No Intro": "这个插件没有介绍~", "None": "无", "Path": "路径", + "Please bind laf accout first": "请先绑定 laf 账号", "Plugin List": "插件列表", "Plugin Module": "插件模块", "Privacy Agreement": "隐私协议", "Search plugin": "搜索插件", "Set Name": "给插件取个名字", + "Synchronous app": "同步应用", "Synchronous version": "同步版本", "To Edit Plugin": "去编辑", "Update Your Plugin": "更新插件", "Value": "值", - "path": "" + "go to laf": "去编写", + "path": "", + "update params": "更新参数" }, "support": { "account": { @@ -1305,6 +1321,9 @@ "user": { "AI point standard": "AI积分标准", "Avatar": "头像", + "Go laf env": "点击前往 laf 获取 PAT 凭证。", + "Laf account course": "查看绑定 laf 账号教程。", + "Laf account intro": "绑定你的laf账号后,你将可以在工作流中使用 laf 模块,实现在线编写代码。", "Need to login": "请先登录", "Price": "计费标准", "User self info": "个人信息", @@ -1497,10 +1516,13 @@ "Bill Detail": "账单详情", "Change": "变更", "Copy invite url": "复制邀请链接", + "Current laf Env": "当前 laf 环境", "Edit name": "点击修改昵称", "Invite Url": "邀请链接", "Invite url tip": "通过该链接注册的好友将永久与你绑定,其充值时你会获得一定余额奖励。\n此外,好友使用手机号注册时,你将立即获得 5 元奖励。\n奖励会发送到您的默认团队中。", + "Laf Account Setting": "laf 账号配置", "Language": "语言", + "Learn More": "查看文档", "Member Name": "昵称", "Notice": "通知", "Old password is error": "旧密码错误", @@ -1515,6 +1537,7 @@ "Promotion rate tip": "好友充值时你将获得一定比例的余额奖励", "Recharge Record": "支付记录", "Replace": "更换", + "Set Laf Account Failed": "设置 laf 账号异常", "Set OpenAI Account Failed": "设置 OpenAI 账号异常", "Sign Out": "登出", "Source": "来源", diff --git a/projects/app/src/components/core/module/Flow/FlowProvider.tsx b/projects/app/src/components/core/module/Flow/FlowProvider.tsx index af8f12ea4..18542ec2e 100644 --- a/projects/app/src/components/core/module/Flow/FlowProvider.tsx +++ b/projects/app/src/components/core/module/Flow/FlowProvider.tsx @@ -214,9 +214,6 @@ export const FlowProvider = ({ if (source?.flowType === FlowNodeTypeEnum.classifyQuestion && !type) { return ModuleIOValueTypeEnum.boolean; } - if (source?.flowType === FlowNodeTypeEnum.tools) { - return ModuleIOValueTypeEnum.tools; - } if (source?.flowType === FlowNodeTypeEnum.pluginInput) { return source?.inputs.find((input) => input.key === connect.sourceHandle)?.valueType; } diff --git a/projects/app/src/components/core/module/Flow/ModuleTemplateList.tsx b/projects/app/src/components/core/module/Flow/ModuleTemplateList.tsx index f0ff49040..f05566099 100644 --- a/projects/app/src/components/core/module/Flow/ModuleTemplateList.tsx +++ b/projects/app/src/components/core/module/Flow/ModuleTemplateList.tsx @@ -52,6 +52,7 @@ const ModuleTemplateList = ({ isOpen, onClose }: ModuleTemplateListProps) => { const router = useRouter(); const [currentParent, setCurrentParent] = useState(); const [searchKey, setSearchKey] = useState(''); + const { feConfigs } = useSystemStore(); const { basicNodeTemplates, @@ -64,7 +65,12 @@ const ModuleTemplateList = ({ isOpen, onClose }: ModuleTemplateListProps) => { const templates = useMemo(() => { const map = { - [TemplateTypeEnum.basic]: basicNodeTemplates, + [TemplateTypeEnum.basic]: basicNodeTemplates.filter((item) => { + if (item.flowType === FlowNodeTypeEnum.lafModule && !feConfigs.lafEnv) { + return false; + } + return true; + }), [TemplateTypeEnum.systemPlugin]: systemNodeTemplates, [TemplateTypeEnum.teamPlugin]: teamPluginNodeTemplates.filter((item) => searchKey ? item.pluginType !== PluginTypeEnum.folder : true diff --git a/projects/app/src/components/core/module/Flow/components/nodes/NodeHttp/index.tsx b/projects/app/src/components/core/module/Flow/components/nodes/NodeHttp/index.tsx index c56b58528..ec6f6d11d 100644 --- a/projects/app/src/components/core/module/Flow/components/nodes/NodeHttp/index.tsx +++ b/projects/app/src/components/core/module/Flow/components/nodes/NodeHttp/index.tsx @@ -88,7 +88,7 @@ enum TabEnum { headers = 'headers', body = 'body' } -type PropsArrType = { +export type PropsArrType = { key: string; type: string; value: string; @@ -245,7 +245,7 @@ const RenderHttpMethodAndUrl = React.memo(function RenderHttpMethodAndUrl({ ); }); -function RenderHttpProps({ +export function RenderHttpProps({ moduleId, inputs }: { diff --git a/projects/app/src/components/core/module/Flow/components/nodes/NodeLaf.tsx b/projects/app/src/components/core/module/Flow/components/nodes/NodeLaf.tsx new file mode 100644 index 000000000..1da75d8ef --- /dev/null +++ b/projects/app/src/components/core/module/Flow/components/nodes/NodeLaf.tsx @@ -0,0 +1,260 @@ +import React, { useCallback, useMemo } from 'react'; +import { NodeProps } from 'reactflow'; +import NodeCard from '../render/NodeCard'; +import { FlowModuleItemType } from '@fastgpt/global/core/module/type.d'; +import Container from '../modules/Container'; +import { Box, Button, Center, Flex, useDisclosure } from '@chakra-ui/react'; +import { ModuleIOValueTypeEnum, ModuleInputKeyEnum } from '@fastgpt/global/core/module/constants'; +import { onChangeNode, useFlowProviderStore } from '../../FlowProvider'; +import { useTranslation } from 'next-i18next'; +import { getLafAppDetail } from '@/web/support/laf/api'; +import MySelect from '@fastgpt/web/components/common/MySelect'; +import { getApiSchemaByUrl } from '@/web/core/plugin/api'; +import { str2OpenApiSchema } from '@fastgpt/global/core/plugin/httpPlugin/utils'; +import { useUserStore } from '@/web/support/user/useUserStore'; +import { useSystemStore } from '@/web/common/system/useSystemStore'; +import { ChevronRightIcon } from '@chakra-ui/icons'; +import { useQuery } from '@tanstack/react-query'; +import dynamic from 'next/dynamic'; +import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/module/node/constant'; +import { useToast } from '@fastgpt/web/hooks/useToast'; +import Divider from '../modules/Divider'; +import RenderToolInput from '../render/RenderToolInput'; +import RenderInput from '../render/RenderInput'; +import RenderOutput from '../render/RenderOutput'; +import { getErrText } from '@fastgpt/global/common/error/utils'; + +const LafAccountModal = dynamic(() => import('@/components/support/laf/LafAccountModal')); + +const NodeLaf = (props: NodeProps) => { + const { t } = useTranslation(); + const { toast } = useToast(); + const { feConfigs } = useSystemStore(); + const { data, selected } = props; + const { moduleId, inputs } = data; + + const requestUrl = inputs.find((item) => item.key === ModuleInputKeyEnum.httpReqUrl); + + const { userInfo } = useUserStore(); + + const token = userInfo?.team.lafAccount?.token; + const appid = userInfo?.team.lafAccount?.appid; + + // not config laf + if (!token || !appid) { + return ( + + + + ); + } + + const { data: lafData, isLoading: isLoadingFunctions } = useQuery( + ['getLafFunctionList'], + async () => { + // load laf app detail + const appDetail = await getLafAppDetail(appid); + + // load laf app functions + const schemaUrl = `https://${appDetail?.domain.domain}/_/api-docs?token=${appDetail?.openapi_token}`; + + const schema = await getApiSchemaByUrl(schemaUrl); + const openApiSchema = await str2OpenApiSchema(JSON.stringify(schema)); + const filterPostSchema = openApiSchema.pathData.filter((item) => item.method === 'post'); + + return { + lafApp: appDetail, + lafFunctions: filterPostSchema.map((item) => ({ + ...item, + requestUrl: `https://${appDetail?.domain.domain}${item.path}` + })) + }; + }, + { + onError(err) { + toast({ + status: 'error', + title: getErrText(err, '获取Laf函数列表失败') + }); + } + } + ); + + const lafFunctionSelectList = useMemo( + () => + lafData?.lafFunctions.map((item) => ({ + label: item.description ? `${item.name} (${item.description})` : item.name, + value: item.requestUrl + })) || [], + [lafData?.lafFunctions] + ); + + const selectedFunction = useMemo( + () => lafFunctionSelectList.find((item) => item.value === requestUrl?.value)?.value, + [lafFunctionSelectList, requestUrl?.value] + ); + + const onSyncParams = useCallback(() => { + const lafFunction = lafData?.lafFunctions.find((item) => item.requestUrl === selectedFunction); + + if (!lafFunction) return; + + const bodyParams = + lafFunction?.request?.content?.['application/json']?.schema?.properties || {}; + + const requiredParams = + lafFunction?.request?.content?.['application/json']?.schema?.required || []; + + const allParams = [ + ...Object.keys(bodyParams).map((key) => ({ + name: key, + desc: bodyParams[key].description, + required: requiredParams?.includes(key) || false, + value: `{{${key}}}`, + type: 'string' + })) + ].filter((item) => !inputs.find((input) => input.key === item.name)); + + // add params + allParams.forEach((param) => { + onChangeNode({ + moduleId, + type: 'addInput', + key: param.name, + value: { + key: param.name, + valueType: ModuleIOValueTypeEnum.string, + label: param.name, + type: FlowNodeInputTypeEnum.target, + required: param.required, + description: param.desc || '', + toolDescription: param.desc || '未设置参数描述', + edit: true, + editField: { + key: true, + name: true, + description: true, + required: true, + dataType: true, + inputType: true, + isToolInput: true + }, + connected: false + } + }); + }); + + toast({ + status: 'success', + title: t('common.Sync success') + }); + }, [inputs, lafData?.lafFunctions, moduleId, selectedFunction, t, toast]); + + return ( + + + {/* select function */} + { + onChangeNode({ + moduleId, + type: 'updateInput', + key: ModuleInputKeyEnum.httpReqUrl, + value: { + ...requestUrl, + value: e + } + }); + }} + value={selectedFunction} + /> + {/* auto set params and go to edit */} + {!!selectedFunction && ( + + {/* */} + + + )} + + {!!selectedFunction && } + + ); +}; +export default React.memo(NodeLaf); + +const ConfigLaf = () => { + const { t } = useTranslation(); + const { userInfo } = useUserStore(); + const { feConfigs } = useSystemStore(); + const { + isOpen: isOpenLafConfig, + onOpen: onOpenLafConfig, + onClose: onCloseLafConfig + } = useDisclosure(); + + return !!feConfigs?.lafEnv ? ( +
+ + + {isOpenLafConfig && feConfigs?.lafEnv && ( + + )} +
+ ) : ( + 系统未配置Laf环境 + ); +}; + +const RenderIO = ({ data, selected }: NodeProps) => { + const { t } = useTranslation(); + const { moduleId, inputs, outputs } = data; + const { splitToolInputs, hasToolNode } = useFlowProviderStore(); + const { commonInputs, toolInputs } = splitToolInputs(inputs, moduleId); + + return ( + <> + {hasToolNode && ( + <> + + + + + + )} + <> + + + 自定义Body参数 + + + + <> + + + + + + + ); +}; diff --git a/projects/app/src/components/core/module/Flow/components/render/NodeCard.tsx b/projects/app/src/components/core/module/Flow/components/render/NodeCard.tsx index 9449330da..b1b479c76 100644 --- a/projects/app/src/components/core/module/Flow/components/render/NodeCard.tsx +++ b/projects/app/src/components/core/module/Flow/components/render/NodeCard.tsx @@ -164,7 +164,7 @@ const NodeCard = (props: Props) => { top={'-20px'} right={0} transform={'translateX(90%)'} - pl={'17px'} + pl={'20px'} pr={'10px'} pb={'20px'} pt={'20px'} diff --git a/projects/app/src/components/core/module/Flow/components/render/RenderToolInput/constants.ts b/projects/app/src/components/core/module/Flow/components/render/RenderToolInput/constants.ts index 2312e55cd..383b8fce4 100644 --- a/projects/app/src/components/core/module/Flow/components/render/RenderToolInput/constants.ts +++ b/projects/app/src/components/core/module/Flow/components/render/RenderToolInput/constants.ts @@ -1,11 +1,25 @@ import { FlowNodeInputItemType } from '@fastgpt/global/core/module/node/type'; import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/module/node/constant'; +import { ModuleIOValueTypeEnum } from '@fastgpt/global/core/module/constants'; export const defaultEditFormData: FlowNodeInputItemType = { valueType: 'string', - type: FlowNodeInputTypeEnum.hidden, + type: FlowNodeInputTypeEnum.target, key: '', label: '', toolDescription: '', - required: true + required: true, + edit: true, + editField: { + key: true, + description: true, + dataType: true + }, + defaultEditField: { + label: '', + key: '', + description: '', + inputType: FlowNodeInputTypeEnum.target, + valueType: ModuleIOValueTypeEnum.string + } }; diff --git a/projects/app/src/components/core/module/Flow/index.tsx b/projects/app/src/components/core/module/Flow/index.tsx index 66ccc2871..d38b56e9a 100644 --- a/projects/app/src/components/core/module/Flow/index.tsx +++ b/projects/app/src/components/core/module/Flow/index.tsx @@ -44,7 +44,8 @@ const nodeTypes: Record<`${FlowNodeTypeEnum}`, any> = { [FlowNodeTypeEnum.tools]: dynamic(() => import('./components/nodes/NodeTools')), [FlowNodeTypeEnum.stopTool]: (data: NodeProps) => ( - ) + ), + [FlowNodeTypeEnum.lafModule]: dynamic(() => import('./components/nodes/NodeLaf')) }; const edgeTypes = { [EDGE_TYPE]: ButtonEdge diff --git a/projects/app/src/components/support/laf/LafAccountModal.tsx b/projects/app/src/components/support/laf/LafAccountModal.tsx new file mode 100644 index 000000000..29473f374 --- /dev/null +++ b/projects/app/src/components/support/laf/LafAccountModal.tsx @@ -0,0 +1,185 @@ +import React, { useCallback } from 'react'; +import { ModalBody, Box, Flex, Input, ModalFooter, Button, Link } from '@chakra-ui/react'; +import MyModal from '@fastgpt/web/components/common/MyModal'; +import { useTranslation } from 'next-i18next'; +import { useForm } from 'react-hook-form'; +import { useRequest } from '@fastgpt/web/hooks/useRequest'; +import { useQuery } from '@tanstack/react-query'; +import MySelect from '@fastgpt/web/components/common/MySelect'; +import { useSystemStore } from '@/web/common/system/useSystemStore'; +import { useToast } from '@fastgpt/web/hooks/useToast'; +import { putUpdateTeam } from '@/web/support/user/team/api'; +import { useUserStore } from '@/web/support/user/useUserStore'; +import type { LafAccountType } from '@fastgpt/global/support/user/team/type.d'; +import { postLafPat2Token, getLafApplications } from '@/web/support/laf/api'; +import { getErrText } from '@fastgpt/global/common/error/utils'; + +const LafAccountModal = ({ + defaultData = { + token: '', + appid: '' + }, + onClose +}: { + defaultData?: LafAccountType; + onClose: () => void; +}) => { + const { t } = useTranslation(); + const { register, handleSubmit, setValue, getValues, watch, reset } = useForm({ + defaultValues: { + ...defaultData, + pat: '' + } + }); + + const lafToken = watch('token'); + const pat = watch('pat'); + const appid = watch('appid'); + + const { feConfigs } = useSystemStore(); + const { toast } = useToast(); + const { userInfo, initUserInfo } = useUserStore(); + + const onResetForm = useCallback(() => { + reset({ + token: '', + appid: '', + pat: '' + }); + }, [reset]); + + const { mutate: authLafPat, isLoading: isPatLoading } = useRequest({ + mutationFn: async (pat) => { + const token = await postLafPat2Token(pat); + setValue('token', token); + }, + errorToast: t('plugin.Invalid Env') + }); + + const { data: appListData = [] } = useQuery( + ['appList', lafToken], + () => { + return getLafApplications(lafToken); + }, + { + enabled: !!lafToken, + onSuccess: (data) => { + if (!getValues('appid') && data.length > 0) { + setValue('appid', data[0].appid); + } + }, + onError: (err) => { + onResetForm(); + toast({ + title: getErrText(err, '获取应用列表失败'), + status: 'error' + }); + } + } + ); + + const { mutate: onSubmit, isLoading: isUpdating } = useRequest({ + mutationFn: async (data: LafAccountType) => { + if (!userInfo?.team.teamId) return; + return putUpdateTeam({ + teamId: userInfo?.team.teamId, + lafAccount: data + }); + }, + onSuccess() { + initUserInfo(); + onClose(); + }, + successToast: t('common.Update Success'), + errorToast: t('common.Update Failed') + }); + + return ( + + + + {t('support.user.Laf account intro')} + + + {t('support.user.Laf account course')} + + + + + {t('support.user.Go laf env')} + + + + + PAT: + {!lafToken ? ( + <> + + + + ) : ( + + )} + + {!!lafToken && ( + + {t('plugin.Currentapp')} + app.state === 'Running') + .map((app) => ({ + label: `${app.name}`, + value: app.appid + })) || [] + } + placeholder={t('plugin.App')} + value={watch('appid')} + onchange={(e) => { + setValue('appid', e); + }} + {...(register('appid'), { required: true })} + /> + + )} + + + + + + + ); +}; + +export default LafAccountModal; diff --git a/projects/app/src/pages/account/components/Info.tsx b/projects/app/src/pages/account/components/Info.tsx index 41e649c90..47d82f50d 100644 --- a/projects/app/src/pages/account/components/Info.tsx +++ b/projects/app/src/pages/account/components/Info.tsx @@ -8,7 +8,8 @@ import { Input, Link, Progress, - Grid + Grid, + Image } from '@chakra-ui/react'; import { useForm } from 'react-hook-form'; import { UserUpdateParams } from '@/types/user'; @@ -41,12 +42,14 @@ import { } from '@/web/support/wallet/sub/constants'; import StandardPlanContentList from '@/components/support/wallet/StandardPlanContentList'; +import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant'; const StandDetailModal = dynamic(() => import('./standardDetailModal')); const TeamMenu = dynamic(() => import('@/components/support/user/team/TeamMenu')); const PayModal = dynamic(() => import('./PayModal')); const UpdatePswModal = dynamic(() => import('./UpdatePswModal')); const OpenAIAccountModal = dynamic(() => import('./OpenAIAccountModal')); +const LafAccountModal = dynamic(() => import('@/components/support/laf/LafAccountModal')); const CommunityModal = dynamic(() => import('@/components/CommunityModal')); const Account = () => { @@ -518,7 +521,7 @@ const Other = () => { const { reset } = useForm({ defaultValues: userInfo as UserType }); - + const { isOpen: isOpenLaf, onClose: onCloseLaf, onOpen: onOpenLaf } = useDisclosure(); const { isOpen: isOpenOpenai, onClose: onCloseOpenai, onOpen: onOpenOpenai } = useDisclosure(); const { isOpen: isOpenConcat, onClose: onCloseConcat, onOpen: onOpenConcat } = useDisclosure(); @@ -537,7 +540,6 @@ const Other = () => { }, [reset, toast, updateUserInfo] ); - return ( @@ -582,6 +584,32 @@ const Other = () => { + {feConfigs?.lafEnv && userInfo?.team.role === TeamMemberRoleEnum.owner && ( + + laf + + laf 账号 + + + + )} + {feConfigs?.show_openai_account && ( { )} + {isOpenLaf && userInfo && ( + + )} {isOpenOpenai && userInfo && ( { try { console.log('执行脏数据清理任务'); - const end = addHours(new Date(), -1); + // 360天 ~ 2小时前 + const end = addHours(new Date(), -2); const start = addHours(new Date(), -360 * 24); - await checkFiles(start, end); + await checkInvalidDatasetFiles(start, end); await checkInvalidImg(start, end); - await checkInvalidCollection(start, end); + await checkInvalidDatasetData(start, end); await checkInvalidVector(start, end); console.log('执行脏数据清理任务完毕'); } catch (error) { diff --git a/projects/app/src/pages/api/admin/initv469.ts b/projects/app/src/pages/api/admin/initv469.ts deleted file mode 100644 index 03d2d9d14..000000000 --- a/projects/app/src/pages/api/admin/initv469.ts +++ /dev/null @@ -1,98 +0,0 @@ -import type { NextApiRequest, NextApiResponse } from 'next'; -import { jsonRes } from '@fastgpt/service/common/response'; -import { connectToDatabase } from '@/service/mongo'; -import { authCert } from '@fastgpt/service/support/permission/auth/common'; -import { MongoUsage } from '@fastgpt/service/support/wallet/usage/schema'; -import { connectionMongo } from '@fastgpt/service/common/mongo'; -import { checkFiles } from '../timerTask/dataset/checkInValidDatasetFiles'; -import { addHours } from 'date-fns'; -import { checkInvalidCollection } from '../timerTask/dataset/checkInvalidMongoCollection'; -import { checkInvalidVector } from '../timerTask/dataset/checkInvalidVector'; -import { MongoImage } from '@fastgpt/service/common/file/image/schema'; -import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; - -let deleteImageAmount = 0; -export async function checkInvalidImg(start: Date, end: Date, limit = 50) { - const images = await MongoImage.find( - { - createTime: { - $gte: start, - $lte: end - }, - 'metadata.relatedId': { $exists: true } - }, - '_id teamId metadata' - ); - console.log('total images', images.length); - let index = 0; - - for await (const image of images) { - try { - // 1. 检测是否有对应的集合 - const collection = await MongoDatasetCollection.findOne( - { - teamId: image.teamId, - 'metadata.relatedImgId': image.metadata?.relatedId - }, - '_id' - ); - - if (!collection) { - await image.deleteOne(); - deleteImageAmount++; - } - - index++; - - index % 100 === 0 && console.log(index); - } catch (error) { - console.log(error); - } - } - - console.log(`检测完成,共删除 ${deleteImageAmount} 个无效图片`); -} - -/* pg 中的数据搬到 mongo dataset.datas 中,并做映射 */ -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - await connectToDatabase(); - await authCert({ req, authRoot: true }); - - // 检查 usage 是否有记录 - const totalUsages = await MongoUsage.countDocuments(); - if (totalUsages === 0) { - // 重命名 bills 集合成 usages - await connectionMongo.connection.db.renameCollection('bills', 'usages', { - // 强制 - dropTarget: true - }); - } - - (async () => { - try { - console.log('执行脏数据清理任务'); - const end = addHours(new Date(), -1); - const start = addHours(new Date(), -360 * 24); - await checkFiles(start, end); - await checkInvalidImg(start, end); - await checkInvalidCollection(start, end); - await checkInvalidVector(start, end); - console.log('执行脏数据清理任务完毕'); - } catch (error) { - console.log('执行脏数据清理任务出错了'); - } - })(); - - jsonRes(res, { - message: 'success' - }); - } catch (error) { - console.log(error); - - jsonRes(res, { - code: 500, - error - }); - } -} diff --git a/projects/app/src/pages/api/common/file/previewContent.ts b/projects/app/src/pages/api/common/file/previewContent.ts index 34e7905f0..3a4869377 100644 --- a/projects/app/src/pages/api/common/file/previewContent.ts +++ b/projects/app/src/pages/api/common/file/previewContent.ts @@ -4,7 +4,7 @@ import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@fastgpt/service/common/response'; import { connectToDatabase } from '@/service/mongo'; -import { readFileContent } from '@fastgpt/service/common/file/gridfs/controller'; +import { readFileContentFromMongo } from '@fastgpt/service/common/file/gridfs/controller'; import { authFile } from '@fastgpt/service/support/permission/auth/file'; import { BucketNameEnum } from '@fastgpt/global/common/file/constants'; @@ -19,7 +19,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< const { teamId } = await authFile({ req, authToken: true, fileId }); - const { rawText } = await readFileContent({ + const { rawText } = await readFileContentFromMongo({ teamId, bucketName: BucketNameEnum.dataset, fileId, diff --git a/projects/app/src/pages/api/common/system/getInitData.ts b/projects/app/src/pages/api/common/system/getInitData.ts index cd0f7ae1a..0c11a8abe 100644 --- a/projects/app/src/pages/api/common/system/getInitData.ts +++ b/projects/app/src/pages/api/common/system/getInitData.ts @@ -90,6 +90,7 @@ export async function initSystemConfig() { // get config from database const config: FastGPTConfigFileType = { feConfigs: { + ...fileRes?.feConfigs, ...defaultFeConfigs, ...(dbConfig.feConfigs || {}), isPlus: !!FastGPTProUrl diff --git a/projects/app/src/pages/api/core/dataset/collection/create/csvTable.ts b/projects/app/src/pages/api/core/dataset/collection/create/csvTable.ts index 204d3a6c6..e37890ca0 100644 --- a/projects/app/src/pages/api/core/dataset/collection/create/csvTable.ts +++ b/projects/app/src/pages/api/core/dataset/collection/create/csvTable.ts @@ -1,7 +1,7 @@ import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@fastgpt/service/common/response'; import { connectToDatabase } from '@/service/mongo'; -import { readFileContent } from '@fastgpt/service/common/file/gridfs/controller'; +import { readFileContentFromMongo } from '@fastgpt/service/common/file/gridfs/controller'; import { authDataset } from '@fastgpt/service/support/permission/auth/dataset'; import { FileIdCreateDatasetCollectionParams } from '@fastgpt/global/core/dataset/api'; import { createOneCollection } from '@fastgpt/service/core/dataset/collection/controller'; @@ -36,7 +36,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< }); // 1. read file - const { rawText, filename } = await readFileContent({ + const { rawText, filename } = await readFileContentFromMongo({ teamId, bucketName: BucketNameEnum.dataset, fileId diff --git a/projects/app/src/pages/api/core/dataset/collection/create/file.ts b/projects/app/src/pages/api/core/dataset/collection/create/file.ts index 23653c5f1..5711448a5 100644 --- a/projects/app/src/pages/api/core/dataset/collection/create/file.ts +++ b/projects/app/src/pages/api/core/dataset/collection/create/file.ts @@ -3,7 +3,7 @@ import { jsonRes } from '@fastgpt/service/common/response'; import { connectToDatabase } from '@/service/mongo'; import { delFileByFileIdList, - readFileContent + readFileContentFromMongo } from '@fastgpt/service/common/file/gridfs/controller'; import { authDataset } from '@fastgpt/service/support/permission/auth/dataset'; import { FileIdCreateDatasetCollectionParams } from '@fastgpt/global/core/dataset/api'; @@ -47,7 +47,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< }); // 1. read file - const { rawText, filename } = await readFileContent({ + const { rawText, filename } = await readFileContentFromMongo({ teamId, bucketName: BucketNameEnum.dataset, fileId diff --git a/projects/app/src/pages/api/core/dataset/file/getPreviewChunks.ts b/projects/app/src/pages/api/core/dataset/file/getPreviewChunks.ts index 5b37ee4b3..8d94e6b5b 100644 --- a/projects/app/src/pages/api/core/dataset/file/getPreviewChunks.ts +++ b/projects/app/src/pages/api/core/dataset/file/getPreviewChunks.ts @@ -4,7 +4,7 @@ import { connectToDatabase } from '@/service/mongo'; import { BucketNameEnum } from '@fastgpt/global/common/file/constants'; import { authFile } from '@fastgpt/service/support/permission/auth/file'; import { PostPreviewFilesChunksProps } from '@/global/core/dataset/api'; -import { readFileContent } from '@fastgpt/service/common/file/gridfs/controller'; +import { readFileContentFromMongo } from '@fastgpt/service/common/file/gridfs/controller'; import { splitText2Chunks } from '@fastgpt/global/common/string/textSplitter'; import { ImportDataSourceEnum } from '@fastgpt/global/core/dataset/constants'; import { parseCsvTable2Chunks } from '@fastgpt/service/core/dataset/training/utils'; @@ -28,7 +28,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< const { file, teamId } = await authFile({ req, authToken: true, fileId: sourceId }); const fileId = String(file._id); - const { rawText } = await readFileContent({ + const { rawText } = await readFileContentFromMongo({ teamId, bucketName: BucketNameEnum.dataset, fileId, @@ -53,7 +53,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< if (type === ImportDataSourceEnum.csvTable) { const { file, teamId } = await authFile({ req, authToken: true, fileId: sourceId }); const fileId = String(file._id); - const { rawText } = await readFileContent({ + const { rawText } = await readFileContentFromMongo({ teamId, bucketName: BucketNameEnum.dataset, fileId, diff --git a/projects/app/src/pages/api/lafApi/[...path].ts b/projects/app/src/pages/api/lafApi/[...path].ts new file mode 100644 index 000000000..3b35cfed1 --- /dev/null +++ b/projects/app/src/pages/api/lafApi/[...path].ts @@ -0,0 +1,69 @@ +import type { NextApiRequest, NextApiResponse } from 'next'; +import { jsonRes } from '@fastgpt/service/common/response'; +import { connectToDatabase } from '@/service/mongo'; +import { request } from 'https'; +import { FastGPTProUrl } from '@fastgpt/service/common/system/constants'; +import url from 'url'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + try { + await connectToDatabase(); + const { path = [], ...query } = req.query as any; + + const queryStr = new URLSearchParams(query).toString(); + const requestPath = queryStr + ? `/${path?.join('/')}?${new URLSearchParams(query).toString()}` + : `/${path?.join('/')}`; + + if (!requestPath) { + throw new Error('url is empty'); + } + + const lafEnv = global.feConfigs?.lafEnv; + + if (!lafEnv) { + throw new Error('lafEnv is empty'); + } + + const parsedUrl = url.parse(lafEnv); + delete req.headers?.cookie; + delete req.headers?.host; + delete req.headers?.origin; + + const requestResult = request({ + protocol: parsedUrl.protocol, + hostname: parsedUrl.hostname, + port: parsedUrl.port, + path: requestPath, + method: req.method, + headers: req.headers, + timeout: 30000 + }); + + req.pipe(requestResult); + + requestResult.on('response', (response) => { + Object.keys(response.headers).forEach((key) => { + // @ts-ignore + res.setHeader(key, response.headers[key]); + }); + response.statusCode && res.writeHead(response.statusCode); + response.pipe(res); + }); + requestResult.on('error', (e) => { + res.send(e); + res.end(); + }); + } catch (error) { + jsonRes(res, { + code: 500, + error + }); + } +} + +export const config = { + api: { + bodyParser: false + } +}; diff --git a/projects/app/src/pages/api/support/user/account/update.ts b/projects/app/src/pages/api/support/user/account/update.ts index af55c441d..ba54fabca 100644 --- a/projects/app/src/pages/api/support/user/account/update.ts +++ b/projects/app/src/pages/api/support/user/account/update.ts @@ -11,7 +11,7 @@ import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSc export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { await connectToDatabase(); - const { avatar, timezone, openaiAccount } = req.body as UserUpdateParams; + const { avatar, timezone, openaiAccount, lafAccount } = req.body as UserUpdateParams; const { tmbId } = await authCert({ req, authToken: true }); const tmb = await MongoTeamMember.findById(tmbId); @@ -47,7 +47,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< { ...(avatar && { avatar }), ...(timezone && { timezone }), - openaiAccount: openaiAccount?.key ? openaiAccount : null + openaiAccount: openaiAccount?.key ? openaiAccount : null, + lafAccount: lafAccount?.token ? lafAccount : null } ); diff --git a/projects/app/src/pages/api/timerTask/dataset/checkInValidDatasetFiles.ts b/projects/app/src/pages/api/timerTask/dataset/checkInValidDatasetFiles.ts deleted file mode 100644 index c3521c066..000000000 --- a/projects/app/src/pages/api/timerTask/dataset/checkInValidDatasetFiles.ts +++ /dev/null @@ -1,91 +0,0 @@ -import type { NextApiRequest, NextApiResponse } from 'next'; -import { jsonRes } from '@fastgpt/service/common/response'; -import { connectToDatabase } from '@/service/mongo'; -import { authCert } from '@fastgpt/service/support/permission/auth/common'; -import { - delFileByFileIdList, - getGFSCollection -} from '@fastgpt/service/common/file/gridfs/controller'; -import { addLog } from '@fastgpt/service/common/system/log'; -import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; -import { addHours } from 'date-fns'; - -/* - check dataset.files data. If there is no match in dataset.collections, delete it - 可能异常情况 - 1. 上传了文件,未成功创建集合 -*/ -let deleteFileAmount = 0; - -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - const { startHour = 24, endHour = 1 } = req.body as { - startHour?: number; - endHour?: number; - limit?: number; - }; - await authCert({ req, authRoot: true }); - await connectToDatabase(); - - // start: now - maxDay, end: now - 3 day - const start = addHours(new Date(), -startHour); - const end = addHours(new Date(), -endHour); - deleteFileAmount = 0; - console.log(start, end); - - await checkFiles(start, end); - - jsonRes(res, { - data: deleteFileAmount, - message: 'success' - }); - } catch (error) { - addLog.error(`check valid dataset files error`, error); - - jsonRes(res, { - code: 500, - error - }); - } -} - -export async function checkFiles(start: Date, end: Date) { - const collection = getGFSCollection('dataset'); - const where = { - uploadDate: { $gte: start, $lte: end } - }; - - // 1. get all file _id - const files = await collection - .find(where, { - projection: { - metadata: 1, - _id: 1 - } - }) - .toArray(); - console.log('total files', files.length); - - let index = 0; - for await (const file of files) { - try { - // 2. find fileId in dataset.collections - const hasCollection = await MongoDatasetCollection.countDocuments({ - teamId: file.metadata.teamId, - fileId: file._id - }); - - // 3. if not found, delete file - if (hasCollection === 0) { - await delFileByFileIdList({ bucketName: 'dataset', fileIdList: [String(file._id)] }); - console.log('delete file', file._id); - deleteFileAmount++; - } - index++; - index % 100 === 0 && console.log(index); - } catch (error) { - console.log(error); - } - } - console.log(`检测完成,共删除 ${deleteFileAmount} 个无效文件`); -} diff --git a/projects/app/src/pages/api/timerTask/dataset/checkInvalidMongoCollection.ts b/projects/app/src/pages/api/timerTask/dataset/checkInvalidMongoCollection.ts deleted file mode 100644 index 2f335289c..000000000 --- a/projects/app/src/pages/api/timerTask/dataset/checkInvalidMongoCollection.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type { NextApiRequest, NextApiResponse } from 'next'; -import { jsonRes } from '@fastgpt/service/common/response'; -import { connectToDatabase } from '@/service/mongo'; -import { authCert } from '@fastgpt/service/support/permission/auth/common'; -import { addLog } from '@fastgpt/service/common/system/log'; -import { deleteDatasetDataVector } from '@fastgpt/service/common/vectorStore/controller'; -import { MongoDatasetData } from '@fastgpt/service/core/dataset/data/schema'; -import { addHours } from 'date-fns'; -import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; -import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; - -/* - 检测无效的 Mongo 数据 - 异常情况: - 1. 训练过程删除知识库,可能导致还会有新的数据插入,导致无效。 -*/ - -let deleteAmount = 0; -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - const { startHour = 3, endHour = 1 } = req.body as { startHour?: number; endHour?: number }; - await authCert({ req, authRoot: true }); - await connectToDatabase(); - - // start: now - maxDay, end: now - endHour - const start = addHours(new Date(), -startHour); - const end = addHours(new Date(), -endHour); - deleteAmount = 0; - - await checkInvalidCollection(start, end); - - jsonRes(res, { - data: deleteAmount, - message: 'success' - }); - } catch (error) { - addLog.error(`check Invalid user error`, error); - - jsonRes(res, { - code: 500, - error - }); - } -} - -export async function checkInvalidCollection(start: Date, end: Date) { - // 1. 获取时间范围的所有data - const rows = await MongoDatasetData.find( - { - updateTime: { - $gte: start, - $lte: end - } - }, - '_id teamId collectionId' - ).lean(); - - // 2. 合并所有的collectionId - const map = new Map(); - for (const item of rows) { - const collectionId = String(item.collectionId); - if (!map.has(collectionId)) { - map.set(collectionId, { teamId: item.teamId, collectionId }); - } - } - const list = Array.from(map.values()); - console.log('total collections', list.length); - let index = 0; - - for await (const item of list) { - try { - // 3. 查看该collection是否存在,不存在,则删除对应的数据 - const collection = await MongoDatasetCollection.findOne({ _id: item.collectionId }); - if (!collection) { - const result = await Promise.all([ - MongoDatasetTraining.deleteMany({ - teamId: item.teamId, - collectionId: item.collectionId - }), - MongoDatasetData.deleteMany({ - teamId: item.teamId, - collectionId: item.collectionId - }), - deleteDatasetDataVector({ - teamId: item.teamId, - collectionIds: [String(item.collectionId)] - }) - ]); - console.log(result); - console.log('collection is not found', item); - continue; - } - } catch (error) {} - console.log(++index); - } -} diff --git a/projects/app/src/pages/api/timerTask/dataset/checkInvalidVector.ts b/projects/app/src/pages/api/timerTask/dataset/checkInvalidVector.ts deleted file mode 100644 index 25e220b10..000000000 --- a/projects/app/src/pages/api/timerTask/dataset/checkInvalidVector.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { NextApiRequest, NextApiResponse } from 'next'; -import { jsonRes } from '@fastgpt/service/common/response'; -import { connectToDatabase } from '@/service/mongo'; -import { authCert } from '@fastgpt/service/support/permission/auth/common'; -import { addLog } from '@fastgpt/service/common/system/log'; -import { - deleteDatasetDataVector, - getVectorDataByTime -} from '@fastgpt/service/common/vectorStore/controller'; -import { MongoDatasetData } from '@fastgpt/service/core/dataset/data/schema'; -import { addHours } from 'date-fns'; - -/* - 检测无效的 Vector 数据. - 异常情况: - 1. 插入数据时,vector成功,mongo失败 - 2. 更新数据,也会有插入 vector -*/ - -let deletedVectorAmount = 0; -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - const { startHour = 5, endHour = 1 } = req.body as { startHour?: number; endHour?: number }; - await authCert({ req, authRoot: true }); - await connectToDatabase(); - - // start: now - maxDay, end: now - endHour - const start = addHours(new Date(), -startHour); - const end = addHours(new Date(), -endHour); - deletedVectorAmount = 0; - - await checkInvalidVector(start, end); - - jsonRes(res, { - data: deletedVectorAmount, - message: 'success' - }); - } catch (error) { - addLog.error(`check Invalid user error`, error); - - jsonRes(res, { - code: 500, - error - }); - } -} - -export async function checkInvalidVector(start: Date, end: Date) { - // 1. get all vector data - const rows = await getVectorDataByTime(start, end); - console.log('total data', rows.length); - - let index = 0; - - for await (const item of rows) { - if (!item.teamId || !item.datasetId || !item.id) { - console.log('error data', item); - continue; - } - try { - // 2. find dataset.data - const hasData = await MongoDatasetData.countDocuments({ - teamId: item.teamId, - datasetId: item.datasetId, - 'indexes.dataId': item.id - }); - - // 3. if not found, delete vector - if (hasData === 0) { - await deleteDatasetDataVector({ - teamId: item.teamId, - id: item.id - }); - console.log('delete vector data', item.id); - deletedVectorAmount++; - } - - index++; - index % 100 === 0 && console.log(index); - } catch (error) { - console.log(error); - } - } - - console.log(`检测完成,共删除 ${deletedVectorAmount} 个无效 向量 数据`); -} diff --git a/projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx b/projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx index a6489715b..f507ee799 100644 --- a/projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx +++ b/projects/app/src/pages/dataset/detail/components/Import/components/RenderFiles.tsx @@ -117,3 +117,5 @@ export const RenderUploadFiles = ({ ) : null; }; + +export default RenderUploadFiles; diff --git a/projects/app/src/pages/dataset/detail/components/InputDataModal.tsx b/projects/app/src/pages/dataset/detail/components/InputDataModal.tsx index c62096faa..77b50af8d 100644 --- a/projects/app/src/pages/dataset/detail/components/InputDataModal.tsx +++ b/projects/app/src/pages/dataset/detail/components/InputDataModal.tsx @@ -249,7 +249,7 @@ const InputDataModal = ({ return openConfirm(onDeleteData)(); } if (e === TabEnum.doc) { - return window.open(getDocPath('/docs/course/datasetengine'), '_blank'); + return window.open(getDocPath('/docs/course/dataset_engine'), '_blank'); } setCurrentTab(e); }} diff --git a/projects/app/src/service/common/system/cron.ts b/projects/app/src/service/common/system/cron.ts index f3f9234fe..2f568e26e 100644 --- a/projects/app/src/service/common/system/cron.ts +++ b/projects/app/src/service/common/system/cron.ts @@ -1,22 +1,61 @@ import { setCron } from '@fastgpt/service/common/system/cron'; import { startTrainingQueue } from '@/service/core/dataset/training/utils'; import { clearTmpUploadFiles } from '@fastgpt/service/common/file/utils'; +import { checkInvalidDatasetFiles, checkInvalidDatasetData, checkInvalidVector } from './cronTask'; +import { checkTimerLock } from '@fastgpt/service/common/system/timerLock/utils'; +import { TimerIdEnum } from '@fastgpt/service/common/system/timerLock/constants'; +import { addHours } from 'date-fns'; -export const startCron = () => { - setTrainingQueueCron(); - setClearTmpUploadFilesCron(); -}; - -export const setTrainingQueueCron = () => { +const setTrainingQueueCron = () => { setCron('*/1 * * * *', () => { startTrainingQueue(); }); }; -export const setClearTmpUploadFilesCron = () => { - clearTmpUploadFiles(); +const setClearTmpUploadFilesCron = () => { // Clear tmp upload files every ten minutes setCron('*/10 * * * *', () => { clearTmpUploadFiles(); }); }; + +const clearInvalidDataCron = () => { + setCron('0 */1 * * *', async () => { + if ( + await checkTimerLock({ + timerId: TimerIdEnum.checkInValidDatasetFiles, + lockMinuted: 59 + }) + ) { + checkInvalidDatasetFiles(addHours(new Date(), 2), addHours(new Date(), 6)); + } + }); + + setCron('10 */1 * * *', async () => { + if ( + await checkTimerLock({ + timerId: TimerIdEnum.checkInvalidDatasetData, + lockMinuted: 59 + }) + ) { + checkInvalidDatasetData(addHours(new Date(), 2), addHours(new Date(), 6)); + } + }); + + setCron('30 */1 * * *', async () => { + if ( + await checkTimerLock({ + timerId: TimerIdEnum.checkInvalidVector, + lockMinuted: 59 + }) + ) { + checkInvalidVector(addHours(new Date(), 2), addHours(new Date(), 6)); + } + }); +}; + +export const startCron = () => { + setTrainingQueueCron(); + setClearTmpUploadFilesCron(); + clearInvalidDataCron(); +}; diff --git a/projects/app/src/service/common/system/cronTask.ts b/projects/app/src/service/common/system/cronTask.ts new file mode 100644 index 000000000..2239d97e2 --- /dev/null +++ b/projects/app/src/service/common/system/cronTask.ts @@ -0,0 +1,157 @@ +import { + delFileByFileIdList, + getGFSCollection +} from '@fastgpt/service/common/file/gridfs/controller'; +import { addLog } from '@fastgpt/service/common/system/log'; +import { + deleteDatasetDataVector, + getVectorDataByTime +} from '@fastgpt/service/common/vectorStore/controller'; +import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema'; +import { MongoDatasetData } from '@fastgpt/service/core/dataset/data/schema'; +import { MongoDatasetTraining } from '@fastgpt/service/core/dataset/training/schema'; + +/* + check dataset.files data. If there is no match in dataset.collections, delete it + 可能异常情况 + 1. 上传了文件,未成功创建集合 +*/ +export async function checkInvalidDatasetFiles(start: Date, end: Date) { + let deleteFileAmount = 0; + const collection = getGFSCollection('dataset'); + const where = { + uploadDate: { $gte: start, $lte: end } + }; + + // 1. get all file _id + const files = await collection + .find(where, { + projection: { + metadata: 1, + _id: 1 + } + }) + .toArray(); + addLog.info(`Clear invalid dataset files, total files: ${files.length}`); + + let index = 0; + for await (const file of files) { + try { + // 2. find fileId in dataset.collections + const hasCollection = await MongoDatasetCollection.countDocuments({ + teamId: file.metadata.teamId, + fileId: file._id + }); + + // 3. if not found, delete file + if (hasCollection === 0) { + await delFileByFileIdList({ bucketName: 'dataset', fileIdList: [String(file._id)] }); + console.log('delete file', file._id); + deleteFileAmount++; + } + index++; + index % 100 === 0 && console.log(index); + } catch (error) { + console.log(error); + } + } + addLog.info(`Clear invalid dataset files finish, remove ${deleteFileAmount} files`); +} + +/* + 检测无效的 Mongo 数据 + 异常情况: + 1. 训练过程删除知识库,可能导致还会有新的数据继续插入,导致无效。 +*/ +export async function checkInvalidDatasetData(start: Date, end: Date) { + // 1. 获取时间范围的所有data + const rows = await MongoDatasetData.find( + { + updateTime: { + $gte: start, + $lte: end + } + }, + '_id teamId collectionId' + ).lean(); + + // 2. 合并所有的collectionId + const map = new Map(); + for (const item of rows) { + const collectionId = String(item.collectionId); + if (!map.has(collectionId)) { + map.set(collectionId, { teamId: item.teamId, collectionId }); + } + } + const list = Array.from(map.values()); + addLog.info(`Clear invalid dataset data, total collections: ${list.length}`); + let index = 0; + + for await (const item of list) { + try { + // 3. 查看该collection是否存在,不存在,则删除对应的数据 + const collection = await MongoDatasetCollection.findOne({ _id: item.collectionId }); + if (!collection) { + const result = await Promise.all([ + MongoDatasetTraining.deleteMany({ + teamId: item.teamId, + collectionId: item.collectionId + }), + MongoDatasetData.deleteMany({ + teamId: item.teamId, + collectionId: item.collectionId + }), + deleteDatasetDataVector({ + teamId: item.teamId, + collectionIds: [String(item.collectionId)] + }) + ]); + console.log(result); + console.log('collection is not found', item); + continue; + } + } catch (error) {} + console.log(++index); + } +} + +export async function checkInvalidVector(start: Date, end: Date) { + let deletedVectorAmount = 0; + // 1. get all vector data + const rows = await getVectorDataByTime(start, end); + addLog.info(`Clear invalid vector, total vector data: ${rows.length}`); + + let index = 0; + + for await (const item of rows) { + if (!item.teamId || !item.datasetId || !item.id) { + addLog.error('error data', item); + continue; + } + try { + // 2. find dataset.data + const hasData = await MongoDatasetData.countDocuments({ + teamId: item.teamId, + datasetId: item.datasetId, + 'indexes.dataId': item.id + }); + + // 3. if not found, delete vector + if (hasData === 0) { + await deleteDatasetDataVector({ + teamId: item.teamId, + id: item.id + }); + console.log('delete vector data', item.id); + deletedVectorAmount++; + } + + index++; + index % 100 === 0 && console.log(index); + } catch (error) { + console.log(error); + } + } + + addLog.info(`Clear invalid vector finish, remove ${deletedVectorAmount} data`); +} diff --git a/projects/app/src/service/core/dataset/data/controller.ts b/projects/app/src/service/core/dataset/data/controller.ts index 7e2ca35dd..e349749df 100644 --- a/projects/app/src/service/core/dataset/data/controller.ts +++ b/projects/app/src/service/core/dataset/data/controller.ts @@ -44,8 +44,7 @@ export async function insertData2Dataset({ indexes = Array.isArray(indexes) && indexes.length > 0 ? indexes.map((index) => ({ - // @ts-ignore - ...index.toObject(), + text: index.text, dataId: undefined, defaultIndex: index.text.trim() === qaStr })) diff --git a/projects/app/src/types/user.d.ts b/projects/app/src/types/user.d.ts index 149496523..74bd80b32 100644 --- a/projects/app/src/types/user.d.ts +++ b/projects/app/src/types/user.d.ts @@ -1,9 +1,11 @@ import { UsageSourceEnum } from '@fastgpt/global/support/wallet/usage/constants'; import type { UserModelSchema } from '@fastgpt/global/support/user/type'; +import { LafAccountType } from '@fastgpt/global/support/user/team/type.d'; export interface UserUpdateParams { balance?: number; avatar?: string; timezone?: string; openaiAccount?: UserModelSchema['openaiAccount']; + lafAccount?: LafAccountType; } diff --git a/projects/app/src/web/common/api/lafRequest.ts b/projects/app/src/web/common/api/lafRequest.ts new file mode 100644 index 000000000..b337a2630 --- /dev/null +++ b/projects/app/src/web/common/api/lafRequest.ts @@ -0,0 +1,169 @@ +import axios, { + Method, + InternalAxiosRequestConfig, + AxiosResponse, + AxiosProgressEvent +} from 'axios'; +import { useUserStore } from '@/web/support/user/useUserStore'; + +interface ConfigType { + headers?: { [key: string]: string }; + timeout?: number; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + cancelToken?: AbortController; + maxQuantity?: number; +} +interface ResponseDataType { + error: string | null; + data: any; +} + +const maxQuantityMap: Record< + string, + { + amount: number; + sign: AbortController; + } +> = {}; + +function requestStart({ url, maxQuantity }: { url: string; maxQuantity?: number }) { + if (!maxQuantity) return; + const item = maxQuantityMap[url]; + + if (item) { + if (item.amount >= maxQuantity && item.sign) { + item.sign.abort(); + delete maxQuantityMap[url]; + } + } else { + maxQuantityMap[url] = { + amount: 1, + sign: new AbortController() + }; + } +} +function requestFinish({ url }: { url: string }) { + const item = maxQuantityMap[url]; + if (item) { + item.amount--; + if (item.amount <= 0) { + delete maxQuantityMap[url]; + } + } +} + +/** + * 请求开始 + */ +function startInterceptors(config: InternalAxiosRequestConfig): InternalAxiosRequestConfig { + if (config.headers && !config.headers.Authorization) { + config.headers.Authorization = `Bearer ${useUserStore.getState().userInfo?.team?.lafAccount?.token || ''}`; + } + + return config; +} + +/** + * 请求成功,检查请求头 + */ +function responseSuccess(response: AxiosResponse) { + return response; +} +/** + * 响应数据检查 + */ +function checkRes(data: ResponseDataType) { + if (data === undefined) { + console.log('error->', data, 'data is empty'); + return Promise.reject('服务器异常'); + } else if (data.error) { + return responseError(data.error); + } + + return data.data; +} + +/** + * 响应错误 + */ +function responseError(err: any) { + console.log('error->', '请求错误', err); + + if (!err) { + return Promise.reject({ message: '未知错误' }); + } + if (typeof err === 'string') { + return Promise.reject({ message: err }); + } + + if (err?.response?.data) { + return Promise.reject(err?.response?.data); + } + return Promise.reject(err); +} + +/* 创建请求实例 */ +const instance = axios.create({ + timeout: 60000, // 超时时间 + headers: { + 'content-type': 'application/json' + } +}); + +/* 请求拦截 */ +instance.interceptors.request.use(startInterceptors, (err) => Promise.reject(err)); +/* 响应拦截 */ +instance.interceptors.response.use(responseSuccess, (err) => Promise.reject(err)); + +function request( + url: string, + data: any, + { cancelToken, maxQuantity, ...config }: ConfigType, + method: Method +): any { + /* 去空 */ + for (const key in data) { + if (data[key] === null || data[key] === undefined) { + delete data[key]; + } + } + + requestStart({ url, maxQuantity }); + + return instance + .request({ + baseURL: '/api/lafApi', + url, + method, + data: ['POST', 'PUT'].includes(method) ? data : null, + params: !['POST', 'PUT'].includes(method) ? data : null, + signal: cancelToken?.signal, + ...config // 用户自定义配置,可以覆盖前面的配置 + }) + .then((res) => checkRes(res.data)) + .catch((err) => responseError(err)) + .finally(() => requestFinish({ url })); +} + +/** + * api请求方式 + * @param {String} url + * @param {Any} params + * @param {Object} config + * @returns + */ +export function GET(url: string, params = {}, config: ConfigType = {}): Promise { + return request(url, params, config, 'GET'); +} + +export function POST(url: string, data = {}, config: ConfigType = {}): Promise { + return request(url, data, config, 'POST'); +} + +export function PUT(url: string, data = {}, config: ConfigType = {}): Promise { + return request(url, data, config, 'PUT'); +} + +export function DELETE(url: string, data = {}, config: ConfigType = {}): Promise { + return request(url, data, config, 'DELETE'); +} diff --git a/projects/app/src/web/support/laf/api.ts b/projects/app/src/web/support/laf/api.ts new file mode 100644 index 000000000..012db2e82 --- /dev/null +++ b/projects/app/src/web/support/laf/api.ts @@ -0,0 +1,34 @@ +import { GET, POST, PUT } from '@/web/common/api/lafRequest'; + +export const postLafPat2Token = (pat: string) => POST(`/v1/auth/pat2token`, { pat }); + +export const getLafApplications = (token: string) => + GET< + { + appid: string; + name: string; + state: 'Running' | 'Failed' | 'Stopped'; + }[] + >( + `/v1/applications`, + {}, + { + headers: { + Authorization: `Bearer ${token}` + } + } + ); + +export const getLafAppDetail = (appid: string) => + GET<{ + appid: string; + name: string; + openapi_token: string; + domain: { + _id: string; + appid: string; + domain: string; + state: string; + phase: string; + }; + }>(`/v1/applications/${appid}`); diff --git a/python/reranker/bge-reranker-base/README.md b/python/reranker/bge-reranker-base/README.md index 30f84bdbf..fa8b8070f 100644 --- a/python/reranker/bge-reranker-base/README.md +++ b/python/reranker/bge-reranker-base/README.md @@ -38,7 +38,7 @@ **镜像和端口** -+ 镜像名: `luanshaotong/reranker:v0.2` ++ 镜像名: `registry.cn-hangzhou.aliyuncs.com/fastgpt/rerank:v0.2` + 端口号: 6006 ```