From e482af6f87ef2a5421f7e383b5c66d1c19802309 Mon Sep 17 00:00:00 2001
From: lazy <2512087764@qq.com>
Date: Tue, 19 Dec 2023 22:47:05 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E9=87=8D=E5=A4=A7?=
=?UTF-8?q?=E6=9B=B4=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/.vuepress/sidebar.ts | 48 +-
src/posts/PluginsDevelop.md | 4 +-
src/posts/PluginsUse/README.md | 13 -
src/posts/deploymentTutorial/manual.md | 4 +-
.../pythonInstall.md | 35 +
.../yirimiraiAndPythonForManual/yirimirai.md | 153 ++++
src/posts/developTutorial/PluginsDevelop.md | 491 +++++++++++++
src/posts/developTutorial/technologyInfo.md | 121 ++++
src/posts/pluginsAbout/pluginsIntro.md | 117 ++++
.../pluginsList.md | 22 +-
src/posts/pluginsAbout/pluginsUse.md | 103 +++
.../somePluginsUseTutorial}/plugin_network.md | 0
.../somePluginsUseTutorial}/plugin_voice.md | 0
yarn.lock | 653 ++++++------------
14 files changed, 1278 insertions(+), 486 deletions(-)
delete mode 100644 src/posts/PluginsUse/README.md
create mode 100644 src/posts/deploymentTutorial/yirimiraiAndPythonForManual/pythonInstall.md
create mode 100644 src/posts/deploymentTutorial/yirimiraiAndPythonForManual/yirimirai.md
create mode 100644 src/posts/developTutorial/PluginsDevelop.md
create mode 100644 src/posts/developTutorial/technologyInfo.md
create mode 100644 src/posts/pluginsAbout/pluginsIntro.md
rename src/posts/{PluginsUse => pluginsAbout}/pluginsList.md (93%)
create mode 100644 src/posts/pluginsAbout/pluginsUse.md
rename src/posts/{PluginsUse => pluginsAbout/somePluginsUseTutorial}/plugin_network.md (100%)
rename src/posts/{PluginsUse => pluginsAbout/somePluginsUseTutorial}/plugin_voice.md (100%)
diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts
index d49316c66..5d62ca952 100644
--- a/src/.vuepress/sidebar.ts
+++ b/src/.vuepress/sidebar.ts
@@ -8,7 +8,28 @@ export default sidebar({
icon: "blog",
prefix: "posts/deploymentTutorial/",
link: "posts/deploymentTutorial/",
- children: "structure",
+ children: [
+ {
+ text: "手动部署(推荐,可以在所有平台上使用)",
+ icon: "support",
+ link: "manual",
+ },
+ {
+ text: "安装器部署(Win)(不推荐,长时间未维护)",
+ icon: "list",
+ link: "auto_app_win",
+ },
+ {
+ text: "Docker部署(仅推荐在Linux上使用)",
+ icon: "list",
+ link: "auto_docker",
+ },
+ {
+ text: "安装器部署(Linux)(不推荐,已经长时间未维护)",
+ icon: "list",
+ link: "auto_app_linux",
+ },
+ ],
},
{
text: "功能介绍",
@@ -17,13 +38,6 @@ export default sidebar({
link: "posts/functionIntroduction",
children: "structure",
},
- {
- text: "插件使用",
- icon: "plugin",
- prefix: "posts/PluginsUse/",
- link: "posts/PluginsUse/",
- children: "structure",
- },
{
text: "常见报错",
icon: "info",
@@ -38,11 +52,25 @@ export default sidebar({
prefix: "posts/Q&A",
children: "structure",
},
+ {
+ text: "插件介绍",
+ icon: "plugin",
+ prefix: "posts/pluginsAbout/",
+ link: "posts/pluginsAbout/pluginsIntro",
+ collapsible: true,
+ children: [
+ {
+ text: "插件列表",
+ icon: "list",
+ link: "pluginsList",
+ },
+ ],
+ },
{
text: "插件开发",
- icon: "code",
+ icon: "editor",
link: "posts/PluginsDevelop",
- prefix: "posts/PluginsDevelop",
+ prefix: "posts/PluginsDevelop",
children: "structure",
},
],
diff --git a/src/posts/PluginsDevelop.md b/src/posts/PluginsDevelop.md
index c7084217f..ac75dc4f0 100644
--- a/src/posts/PluginsDevelop.md
+++ b/src/posts/PluginsDevelop.md
@@ -12,8 +12,8 @@ category:
index: false
---
-> 请先阅读[插件使用页](https://github.com/RockChinQ/QChatGPT/wiki/5-%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8)
-> 请先阅读[技术信息页](https://github.com/RockChinQ/QChatGPT/wiki/4-%E6%8A%80%E6%9C%AF%E4%BF%A1%E6%81%AF)
+> 请先阅读[插件使用页](/posts/pluginsAbout/pluginsIntro)
+> 请先阅读[技术信息页](/posts/developTutorial/technologyInfo)
> 建议先阅读本项目源码,了解项目架构
> 问题、需求请到仓库issue发起
diff --git a/src/posts/PluginsUse/README.md b/src/posts/PluginsUse/README.md
deleted file mode 100644
index 5aff91992..000000000
--- a/src/posts/PluginsUse/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-head:
- - - meta
- - name: keywords
- content: ChatGPT QQ机器人插件,QChatGPT项目插件
-title: 插件使用
-icon: blog
-date: 2023-09-30
-category:
- - 插件使用
-index: false
----
-
\ No newline at end of file
diff --git a/src/posts/deploymentTutorial/manual.md b/src/posts/deploymentTutorial/manual.md
index 8665aefbf..5996e04b0 100644
--- a/src/posts/deploymentTutorial/manual.md
+++ b/src/posts/deploymentTutorial/manual.md
@@ -12,7 +12,7 @@ category:
- 部署教程
---
:::warning
-请使用Python 3.9.x以上版本
+请使用Python 3.9.x以上版本,没有Python的需自行安装,参考[此教程](/posts/deploymentTutorial/yirimiraiAndPythonForManual/pythonInstall.md)
:::
:::info 目录
@@ -26,7 +26,7 @@ category:
mirai
-1. 按照[此教程](https://yiri-mirai.wybxc.cc/tutorials/01/configuration)配置Mirai及mirai-api-http
+1. 按照[此教程](/posts/deploymentTutorial/yirimiraiANDpythonForManual/yirimirai.md)配置Mirai及mirai-api-http
2. 启动mirai-console后,使用`login`命令登录QQ账号,保持mirai-console运行状态
3. 在下一步配置主程序时请在config.py中将`msg_source_adapter`设为`yirimirai`
diff --git a/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/pythonInstall.md b/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/pythonInstall.md
new file mode 100644
index 000000000..1121546f1
--- /dev/null
+++ b/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/pythonInstall.md
@@ -0,0 +1,35 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: Python的安装教程
+title: 手动部署
+icon: support
+order: 3
+author: Lazy
+date: 2023-12-18
+category:
+ - 部署教程
+---
+
+## 第一步:安装Python
+
+打开这个网址,[点我跳转](https://www.python.org/downloads/release/python-3109/)
+
+翻到最下边,点击这个下载python安装器
+
+
+
+然后,双击打开你刚才下载的,记得勾选下面的
+
+
+
+然后,所有项保持默认即可
+
+## 第二步:检测Python是否安装成功
+
+按win+R键,输入cmd,回车,在输入python,回车
+
+
+
+提示如图时,表明安装成功了
\ No newline at end of file
diff --git a/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/yirimirai.md b/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/yirimirai.md
new file mode 100644
index 000000000..4027836dd
--- /dev/null
+++ b/src/posts/deploymentTutorial/yirimiraiAndPythonForManual/yirimirai.md
@@ -0,0 +1,153 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: Yiri-mirai的部署教程
+title: 手动部署
+icon: support
+order: 3
+author: Lazy
+date: 2023-12-18
+category:
+ - 部署教程
+---
+
+## 第一步:准备工作
+
+> 注意:由于网络环境多样复杂,很多步骤中,有可能需要使用网络魔法,懂的都懂
+
+1. 创建文件夹
+
+ 在你的任意盘(D,E,F什么都都可以)里面新建一个文件夹(例如命名qqbot)
+
+ 
+
+2. 创建子文件夹
+
+ 双击进入刚刚创建的文件夹,分别新建两个文件夹(建议命名保持一致)
+
+ 
+
+## 第二步:安装 mirai-console
+
+在 [mcl-installer 的 releases 页面](https://github.com/iTXTech/mcl-installer/releases)下载对应版本的安装包,找到最新的安装包,即有“Latest”标志的安装包,点击`show all 14 assets`,下载 mcl-installer-X.X.X-windows-amd64.exe,如图,则下载`mcl-installer-1.0.7-windows-amd64.exe`,保存在刚才创建的`mirai文件夹`中
+
+
+
+
+双击打开,一路回车。然后,你可以看到多出来一些文件。
+
+
+
+继续点击`mcl.cmd`,看不到文件后缀的,参考这个文章来显示文件后缀名:[如何查看文件后缀](https://jingyan.baidu.com/article/9158e0004c6cbea2541228da.html)
+
+双击后会显示如下图所示的类似界面,当出现`Enter to continue`时,表明你需要按回车健
+
+
+当出现上面的一行绿字时,说明安装完成,到这里输入 exit,回车退出
+
+## 第三步:安装 mirai-api-http
+
+打开 `mcl.cmd`,输入`mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin` ,回车
+
+再次打开`mcl.cmd`,一路回车,直至退出。
+
+再打开 mcl.cmd,看到如以下界面,说明成功
+
+键盘按下`Ctrl+C`,退出。
+找到mira/config/net.mamoe.mirai-api-http/setting.yml文件,右键用记事本打开
+
+
+
+把内容全部删掉,换成
+
+```yml
+adapters:
+ - ws
+debug: true
+enableVerify: true
+verifyKey: yirimirai
+singleMode: false
+cacheSize: 4096
+adapterSettings:
+ ws:
+ host: localhost
+ port: 8080
+ reservedSyncId: -1
+```
+
+再打开 `mcl.cmd`,可以看到输出
+
+则 mirai-api-http 安装成功。
+
+## 第四步:配置签名服务
+
+在这个链接下载qsign一键签名包,点击下载最新的那个zip压缩包,如下图的`qsign-1.2.1-beta-dev-d62ddce-all.zip`【写于2023年12月19日】,[点我跳转下载页面](https://github.com/MrXiaoM/qsign/releases)
+
+
+
+下载完成后,解压得到如图文件
+
+
+
+将两个文件复制到mirai文件夹中
+
+
+
+打开`txlib`文件夹,发现有若干数字命名的文件夹,记录下最大的那个
+
+
+
+然后,双击运行`mcl.cmd`,稍等一会儿后,当提示`mirai-console started successfully`时,qsign就安装上了
+
+之后,打开`mirai/config/top.mrxiaom.qsign`下的`config.yml`文件,用记事本打开
+
+
+
+
+
+然后,按下`Ctrl+S`保存
+
+然后,再次双击运行`mcl.cmd`,可以看到类似提示,如图
+
+
+
+## 第五步:运行mirai
+
+到这里,你已经安装并配置成功了,接下来,你就可以登录机器人QQ了
+
+输入,其中 123456 是替换为你机器人的 QQ 号,67890 替换为你机器人 QQ 的密码
+
+```bash
+login 12345 67890
+```
+
+然后,可以看到提示
+
+
+
+把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
+
+点开 `Network`
+
+
+
+在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
+
+
+
+ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号
+
+**注意**
+
+- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
+- 速度要快
+- 注意不要漏字符(没复制完, 后面还有很长)
+
+把复制下来的东西,粘贴到运行mirai的终端中
+
+
+
+然后回车,如果运气好的话,会提示你要收验证码,输入yes并回车,之后把验证码输入上去,然后回车即可成功登录了
+
+如果运气不好,报错code=237了,建议换号
diff --git a/src/posts/developTutorial/PluginsDevelop.md b/src/posts/developTutorial/PluginsDevelop.md
new file mode 100644
index 000000000..cd4575e16
--- /dev/null
+++ b/src/posts/developTutorial/PluginsDevelop.md
@@ -0,0 +1,491 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: QChatGPT插件开发教程
+title: 插件开发
+icon: code
+author: RockChinQ
+date: 2023-09-30
+category:
+ - 插件开发
+index: false
+---
+
+> 请先阅读[插件使用页](/posts/pluginsAbout/pluginsIntro)
+> 请先阅读[技术信息页](https://github.com/RockChinQ/QChatGPT/wiki/4-%E6%8A%80%E6%9C%AF%E4%BF%A1%E6%81%AF)
+> 建议先阅读本项目源码,了解项目架构
+
+> 问题、需求请到仓库issue发起
+> **提问前请先靠自己尝试**
+:::info 目录
+[[toc]]
+:::
+## 💬简介
+
+尽管“为一个基于OpenAI API的QQ机器人开发插件支持”这事看起来有点小题大做,但萌生此想法后的几天内好几个人提出了这个需求,最终促使此项目正式支持插件。
+
+## 🧱实现
+
+基于`importlib`库加载模块的方法动态加载额外Python程序文件以便实现插件加载,插件均存放在`plugins`文件夹,其中的所有`.py`文件都将被加载(除了所有`__init__.py`)
+
+## 📚示例代码
+
+请查看代码目录`tests/plugin_examples`中的插件目录
+
+## 💻快速开始
+
+按照文档部署此项目,并使其正常运行。
+在`plugins`目录下新建目录`hello`,在其中新建空文件`__init__.py`以标记此目录为软件包,继续新建文件`main.py`。
+
+> 您也可以使用[hello_plugin](https://github.com/RockChinQ/hello_plugin)作为模板直接生成插件代码仓库
+
+编辑`main.py`输入以下内容:
+
+```Python
+from pkg.plugin.models import *
+from pkg.plugin.host import EventContext, PluginHost
+
+"""
+在收到私聊或群聊消息"hello"时,回复"hello, <发送者id>!"或"hello, everyone!"
+"""
+
+
+# 注册插件
+@register(name="Hello", description="hello world", version="0.1", author="RockChinQ")
+class HelloPlugin(Plugin):
+
+ # 插件加载时触发
+ # plugin_host (pkg.plugin.host.PluginHost) 提供了与主程序交互的一些方法,详细请查看其源码
+ def __init__(self, plugin_host: PluginHost):
+ pass
+
+ # 当收到个人消息时触发
+ @on(PersonNormalMessageReceived)
+ def person_normal_message_received(self, event: EventContext, **kwargs):
+ msg = kwargs['text_message']
+ if msg == "hello": # 如果消息为hello
+
+ # 输出调试信息
+ logging.debug("hello, {}".format(kwargs['sender_id']))
+
+ # 回复消息 "hello, <发送者id>!"
+ event.add_return("reply", ["hello, {}!".format(kwargs['sender_id'])])
+
+ # 阻止该事件默认行为(向接口获取回复)
+ event.prevent_default()
+
+ # 当收到群消息时触发
+ @on(GroupNormalMessageReceived)
+ def group_normal_message_received(self, event: EventContext, **kwargs):
+ msg = kwargs['text_message']
+ if msg == "hello": # 如果消息为hello
+
+ # 输出调试信息
+ logging.debug("hello, {}".format(kwargs['sender_id']))
+
+ # 回复消息 "hello, everyone!"
+ event.add_return("reply", ["hello, everyone!"])
+
+ # 阻止该事件默认行为(向接口获取回复)
+ event.prevent_default()
+
+ # 插件卸载时触发
+ def __del__(self):
+ pass
+
+```
+
+此插件将实现:私聊收到`hello`消息时回复`hello, <发送者QQ号>!`,群聊收到`hello`消息时回复`hello, everyone!`
+
+### 解读此插件程序
+
+- `import`从`pkg.plugin`引入`models`模块的所有字段(此程序使用了其中的`register函数`、`on函数`、`Plugin类`、`PersonNormalMessageReceived事件`、`GroupNormalMessageReceived事件`)
+- `@register()`将类`HelloPlugin`标记为一个插件类,声明插件名称为`Hello`以及插件简介、版本、作者
+- 声明类`HelloPlugin`继承于`Plugin`,此类可以随意命名,插件名称只与`register`调用时的参数有关
+- 声明此类的`__init__`方法,此方法是可选的,其中的代码将在主程序启动时加载插件的时候被执行
+- `@on`将方法`person_normal_message_received`标记为一个事件处理器,处理`PersonNormalMessageReceived`(收到私聊消息并在获取OpenAI回复前触发)事件,此方法可以随意命名,绑定的事件只与`on`中的参数有关,更多支持的事件可到`pkg.plugin.models.py`文件中查看或查看下方`API`节
+- 输出调试信息,程序中可通过`logging`将日志输出到控制台和`qchatgpt.log`文件
+- 方法内部从参数中取出`text_message`参数,判断是否为`hello`,如果是就将返回值`reply`设置为`["hello, {}!".format(kwargs['sender_id'])]`,接下来调用`event`对象的`prevent_default`方法,阻止原程序默认行为
+ - 每个事件`提供的参数`和`支持的返回值`请查看`pkg.plugin.models`中的每个事件的注释或查看下方`API`节
+ - `event`对象提供的方法请查看`pkg.plugin.host`中的`EventContext`类或查看下方`API`节
+- 用相似的程序注册`GroupNormalMessageReceived`事件处理群消息
+
+编写完毕保存后,重新启动主程序,查看到输出中包含以下内容,即为加载成功:
+
+```
+[2023-01-16 18:29:47.193] host.py (43) - [INFO] : 加载模块: hello.main
+[2023-01-16 18:29:47.194] models.py (209) - [INFO] : 插件注册完成: n='Hello', d='hello world', v=0.1, a='RockChinQ' ()
+```
+
+> 建议在`config.py`中设置`logging_level = logging.DEBUG`以便开启调试输出
+
+## ❗规范(重要)
+
+- 请每个插件独立一个目录以便管理,建议在Github上创建一个仓库储存单个插件,以便获取和更新
+- 插件名使用`大驼峰命名法`,如`Hello`、`ExamplePlugin`、`ChineseCommands`等
+- 一个目录内可以存放多个Python程序文件,以独立出插件的各个功能,便于开发者管理,但不建议在一个目录内注册多个插件
+- 插件需要的依赖库请在插件目录下的`requirements.txt`中指定,程序从储存库获取此插件时将自动安装依赖
+
+## 🪝内容函数
+
+通过[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的`内容函数`,这是一种嵌入对话中,由GPT自动调用的函数。
+
+> 您的插件不一定必须包含内容函数,请先查看内容函数页了解此功能
+
+
+示例:联网插件
+
+加载含有联网功能的内容函数的插件[WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin),向机器人询问在线内容
+
+```
+# 控制台输出
+[2023-07-29 17:37:18.698] message.py (26) - [INFO] : [person_1010553892]发送消息:介绍一下这个项目:https://git...
+[2023-07-29 17:37:21.292] util.py (67) - [INFO] : message='OpenAI API response' path=https://api.openai.com/v1/chat/completions processing_ms=1902 request_id=941afc13b2e1bba1e7877b92a970cdea response_code=200
+[2023-07-29 17:37:21.293] chat_completion.py (159) - [INFO] : 执行函数调用: name=Webwlkr-access_the_web, arguments={'url': 'https://github.com/RockChinQ/QChatGPT', 'brief_len': 512}
+[2023-07-29 17:37:21.848] chat_completion.py (164) - [INFO] : 函数执行完成。
+```
+
+
+
+
+
+### 内容函数编写步骤
+
+1️⃣ 请先按照上方步骤编写您的插件基础结构,现在请删除(当然你也可以不删,只是为了简洁)上述插件内容的诸个由`@on`装饰的类函数
+
+
+删除后的结构
+
+```python
+from pkg.plugin.models import *
+from pkg.plugin.host import EventContext, PluginHost
+
+"""
+在收到私聊或群聊消息"hello"时,回复"hello, <发送者id>!"或"hello, everyone!"
+"""
+
+
+# 注册插件
+@register(name="Hello", description="hello world", version="0.1", author="RockChinQ")
+class HelloPlugin(Plugin):
+
+ # 插件加载时触发
+ # plugin_host (pkg.plugin.host.PluginHost) 提供了与主程序交互的一些方法,详细请查看其源码
+ def __init__(self, plugin_host: PluginHost):
+ pass
+
+ # 插件卸载时触发
+ def __del__(self):
+ pass
+```
+
+
+
+2️⃣ 现在我们将以下函数添加到刚刚删除的函数的位置
+
+```Python
+
+# 要添加的函数
+
+@func(name="access_the_web") # 设置函数名称
+def _(url: str):
+ """Call this function to search about the question before you answer any questions.
+ - Do not search through baidu.com at any time.
+ - If you need to search somthing, visit https://www.google.com/search?q=xxx.
+ - If user ask you to open a url (start with http:// or https://), visit it directly.
+ - Summary the plain content result by yourself, DO NOT directly output anything in the result you got.
+
+ Args:
+ url(str): url to visit
+
+ Returns:
+ str: plain text content of the web page
+ """
+ import requests
+ from bs4 import BeautifulSoup
+ # 你需要先使用
+ # pip install beautifulsoup4
+ # 安装依赖
+
+ r = requests.get(
+ url,
+ timeout=10,
+ headers={
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183"
+ }
+ )
+ soup = BeautifulSoup(r.text, 'html.parser')
+
+ s = soup.get_text()
+
+ # 删除多余的空行或仅有\t和空格的行
+ s = re.sub(r'\n\s*\n', '\n', s)
+
+ if len(s) >= 512: # 截取获取到的网页纯文本内容的前512个字
+ return s[:512]
+
+ return s
+
+```
+
+现在这个文件内容应该是这样
+
+```python
+from pkg.plugin.models import *
+from pkg.plugin.host import EventContext, PluginHost
+
+"""
+在收到私聊或群聊消息"hello"时,回复"hello, <发送者id>!"或"hello, everyone!"
+"""
+
+
+# 注册插件
+@register(name="Hello", description="hello world", version="0.1", author="RockChinQ")
+class HelloPlugin(Plugin):
+
+ # 插件加载时触发
+ # plugin_host (pkg.plugin.host.PluginHost) 提供了与主程序交互的一些方法,详细请查看其源码
+ def __init__(self, plugin_host: PluginHost):
+ pass
+
+ @func(name="access_the_web")
+ def _(url: str):
+ """Call this function to search about the question before you answer any questions.
+ - Do not search through baidu.com at any time.
+ - If you need to search somthing, visit https://www.google.com/search?q=xxx.
+ - If user ask you to open a url (start with http:// or https://), visit it directly.
+ - Summary the plain content result by yourself, DO NOT directly output anything in the result you got.
+
+ Args:
+ url(str): url to visit
+
+ Returns:
+ str: plain text content of the web page
+ """
+ import requests
+ from bs4 import BeautifulSoup
+ # 你需要先使用
+ # pip install beautifulsoup4
+ # 安装依赖
+
+ r = requests.get(
+ url,
+ timeout=10,
+ headers={
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183"
+ }
+ )
+ soup = BeautifulSoup(r.text, 'html.parser')
+
+ s = soup.get_text()
+
+ # 删除多余的空行或仅有\t和空格的行
+ s = re.sub(r'\n\s*\n', '\n', s)
+
+ if len(s) >= 512: # 截取获取到的网页纯文本内容的前512个字
+ return s[:512]
+
+ return s
+
+ # 插件卸载时触发
+ def __del__(self):
+ pass
+```
+
+
+
+#### 请注意:
+
+- 函数的注释必须严格按照要求的格式进行书写,具体格式请查看[此文档](https://github.com/RockChinQ/CallingGPT/wiki/1.-Function-Format#function-format)
+- 内容函数和`以@on装饰的行为函数`可以同时存在于同一个插件,并同时受到`switch.json`中的插件开关的控制
+- 务必确保您使用的模型支持函数调用功能,可以到`config.py`的`completion_api_params`中修改模型,推荐使用`gpt-3.5-turbo-16k`
+
+3️⃣ 现在您的程序已具备网络访问功能,重启程序,询问机器人有关在线的内容或直接发送文章链接请求其总结。
+
+- 这仅仅是一个示例,需要更高效的网络访问能力支持插件,请查看[WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin)
+
+## 🔒版本要求
+
+若您的插件对主程序的版本有要求,可以使用以下函数进行断言,若不符合版本,此函数将报错并打断此函数所在的流程:
+
+```python
+require_ver("v2.5.1") # 要求最低版本为 v2.5.1
+```
+
+```python
+require_ver("v2.5.1", "v2.6.0") # 要求最低版本为 v2.5.1, 同时要求最高版本为 v2.6.0
+```
+
+- 此函数在主程序`v2.5.1`中加入
+- 此函数声明在`pkg.plugin.models`模块中,在插件示例代码最前方已引入此模块所有内容,故可直接使用
+
+## 📄API参考
+
+### 说明
+
+事件处理函数将会获得一系列参数,可以在`kwargs`中取出。
+其中`host`参数(`pkg.plugin.host.PluginHost`类的实例)是插件宿主,提供与主程序各个模块交互的一些方法。
+`event`参数(`pkg.plugin.host.EventContext`类的实例)是事件执行期间的上下文,提供对此次事件执行的一些操作方法。
+
+事件返回值均为**可选**的,可以通过调用`event.add_return(key: str, ret)`来提交返回值
+
+### 事件
+
+所有事件参数均有`host`和`event`,以下仅展示其他参数
+关于`YiriMirai`支持的消息链组件,请查看 [YiriMirai的文档](https://yiri-mirai.wybxc.cc/docs/basic/message-chain)
+
+```Python
+PersonMessageReceived = "person_message_received"
+"""收到私聊消息时,在判断是否应该响应前触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ message_chain: mirai.models.message.MessageChain 消息链
+"""
+
+GroupMessageReceived = "group_message_received"
+"""收到群聊消息时,在判断是否应该响应前触发(所有群消息)
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ message_chain: mirai.models.message.MessageChain 消息链
+"""
+
+PersonNormalMessageReceived = "person_normal_message_received"
+"""判断为应该处理的私聊普通消息时触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ text_message: str 消息文本
+
+ returns (optional):
+ alter: str 修改后的消息文本
+ reply: list 回复消息组件列表,元素为YiriMirai支持的消息组件
+"""
+
+PersonCommandSent = "person_command_sent"
+"""判断为应该处理的私聊命令时触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ command: str 命令
+ params: list[str] 参数列表
+ text_message: str 完整命令文本
+ is_admin: bool 是否为管理员
+
+ returns (optional):
+ alter: str 修改后的完整命令文本
+ reply: list 回复消息组件列表,元素为YiriMirai支持的消息组件
+"""
+
+GroupNormalMessageReceived = "group_normal_message_received"
+"""判断为应该处理的群聊普通消息时触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ text_message: str 消息文本
+
+ returns (optional):
+ alter: str 修改后的消息文本
+ reply: list 回复消息组件列表,元素为YiriMirai支持的消息组件
+"""
+
+GroupCommandSent = "group_command_sent"
+"""判断为应该处理的群聊命令时触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ command: str 命令
+ params: list[str] 参数列表
+ text_message: str 完整命令文本
+ is_admin: bool 是否为管理员
+
+ returns (optional):
+ alter: str 修改后的完整命令文本
+ reply: list 回复消息组件列表,元素为YiriMirai支持的消息组件
+"""
+
+NormalMessageResponded = "normal_message_responded"
+"""获取到对普通消息的文字响应时触发
+ kwargs:
+ launcher_type: str 发起对象类型(group/person)
+ launcher_id: int 发起对象ID(群号/QQ号)
+ sender_id: int 发送者ID(QQ号)
+ session: pkg.openai.session.Session 会话对象
+ prefix: str 回复文字消息的前缀
+ response_text: str 响应文本
+ finish_reason: str 响应结束原因
+
+ returns (optional):
+ prefix: str 修改后的回复文字消息的前缀
+ reply: list 替换回复消息组件列表
+"""
+
+SessionFirstMessageReceived = "session_first_message_received"
+"""会话被第一次交互时触发
+ kwargs:
+ session_name: str 会话名称(_)
+ session: pkg.openai.session.Session 会话对象
+ default_prompt: str 预设值
+"""
+
+SessionExplicitReset = "session_reset"
+"""会话被用户手动重置时触发,此事件不支持阻止默认行为
+ kwargs:
+ session_name: str 会话名称(_)
+ session: pkg.openai.session.Session 会话对象
+"""
+
+SessionExpired = "session_expired"
+"""会话过期时触发
+ kwargs:
+ session_name: str 会话名称(_)
+ session: pkg.openai.session.Session 会话对象
+ session_expire_time: int 已设置的会话过期时间(秒)
+"""
+
+KeyExceeded = "key_exceeded"
+"""api-key超额时触发
+ kwargs:
+ key_name: str 超额的api-key名称
+ usage: dict 超额的api-key使用情况
+ exceeded_keys: list[str] 超额的api-key列表
+"""
+
+KeySwitched = "key_switched"
+"""api-key超额切换成功时触发,此事件不支持阻止默认行为
+ kwargs:
+ key_name: str 切换成功的api-key名称
+ key_list: list[str] api-key列表
+"""
+
+PromptPreProcessing = "prompt_pre_processing" # 于v2.5.1加入
+"""每回合调用接口前对prompt进行预处理时触发,此事件不支持阻止默认行为
+ kwargs:
+ session_name: str 会话名称(_)
+ default_prompt: list 此session使用的情景预设内容
+ prompt: list 此session现有的prompt内容
+ text_message: str 用户发送的消息文本
+
+ returns (optional):
+ default_prompt: list 修改后的情景预设内容
+ prompt: list 修改后的prompt内容
+ text_message: str 修改后的消息文本
+"""
+```
+
+### host: PluginHost 详解
+
+提供与主程序各个模块交互的一些方法,具体查看`pkg.plugin.host`中的`PluginHost`类
+
+### event: EventContext 详解
+
+提供对此次事件执行的一些操作方法,具体查看`pkg.plugin.host`中的`EventContext`类
+
diff --git a/src/posts/developTutorial/technologyInfo.md b/src/posts/developTutorial/technologyInfo.md
new file mode 100644
index 000000000..623cd81d9
--- /dev/null
+++ b/src/posts/developTutorial/technologyInfo.md
@@ -0,0 +1,121 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: QChatGPT插件开发教程
+title: 技术信息
+icon: code
+author: RockChinQ
+date: 2023-09-30
+category:
+ - 技术信息
+index: false
+---
+以下是QChatGPT实现原理等技术信息,贡献之前请仔细阅读
+
+> 太久没更了,过时了,建议读源码,~~注释还挺全的~~
+> 请先阅读OpenAI API的相关文档 https://beta.openai.com/docs/ ,以下信息假定您已了解OpenAI模型的相关特性及其接口的调用方法。
+
+## 术语
+
+包含OpenAI API涉及的术语和项目中的概念的命名
+括号中是程序中相应术语的命名,无括号的为抽象概念
+
+### 模型(model)
+
+AI模型,程序调用OpenAI的接口获取的内容均为OpenAI的模型生成的内容。
+
+### 字符(tokens)
+
+OpenAI定义的字符,ASCII字符为1 token,其他为2 token。
+
+### 提示符(prompt)
+
+i. 调用OpenAI的文字补全模型时的提示语,模型接口会根据提示语返回回复内容。程序底层会将对话内容进行封装生成提示符。调用文字补全模型时的提示符均由`user_name`(默认为`You`,可在配置文件修改)和`bot_name`(默认为`Bot`,可在配置文件修改)标记对话角色以供模型识别,以下是实例:
+
+```
+You:今天天气真不错
+Bot:很高兴你喜欢今天的天气:)
+You:谢谢你
+Bot:不客气:)
+```
+补全模型调用的程序实现请查看下文`实现`节。
+
+ii. 调用OpenAI的绘图模型时的提示语,模型会根据提示语进行绘图并返回图片URL。
+
+### 对象
+
+程序将单个人或单个QQ群视为一个对象,对象和模型是一次会话中的对话双方。
+
+### 会话(session)
+
+会话只对文字补全功能有效,绘图功能无会话概念。每个对象使用同一个会话,会话中仅有对象和模型两个角色,故群内所有的人都将被视为同一个角色与模型进行对话。
+
+程序获取回复的本质是`文字补全`。
+由于对话需要实现联系上下文,故程序会将模型与对象的对话历史记录作为`提示符`发送给OpenAI的接口以获取符合前文的回复。
+而OpenAI的文字补全接口的提示符具有长度限制(默认使用的`text-davinci-003`限制为4096 tokens),
+所以增加`会话`概念以管理向接口发送的提示符内容。
+
+会话的存活时间可以在`config.py`中设置,默认为20分钟。会话过期之后会被存入数据库并重置。下一次该对象发起对话时将重启新的会话。
+
+### 预设值、人格(default_prompt)
+
+每个会话的预设对话信息,可在`config.py`中设置,程序会在每个会话创建时向提示符写入以下内容:
+
+```
+You:<预设信息>
+Bot:好的
+```
+
+## 实现
+
+### QQ机器人
+
+> 程序路径:
+> pkg.qqbot
+
+- `pkg.qqbot.manager`中的`QQBotManager`实现了接收消息、调用OpenAI模块处理消息、报告审计模块记录使用量等功能,并提供通知管理员、发送消息等方法供其他模块调用。
+- `pkg.qqbot.filter`提供了敏感词过滤的相关操作。
+- `pkg.qqbot.process`提供了私聊消息和群聊消息的统一处理逻辑。
+
+使用mirai及YiriMirai作为Python与QQ交互的框架,详细请见其文档。
+在启动时会调用YiriMirai的函数以创建一个bot对象,用于程序通过mirai与QQ进行交互,在上层程序调用此bot对象的方法进行消息处理。
+由于YiriMirai暂时无法关闭机器人,故在热重载前后维持同一个bot对象,这意味着QQ机器人的相关配置(QQ号、适配器等)信息不支持热重载。
+
+### 数据库
+
+> 程序路径:
+> pkg.database
+
+- `pkg.database.manager`中的`DatabaseManager`封装了诸多调用数据库的方法以供其他模块调用。
+
+使用SQLite作为数据库,储存所有对象的历史会话信息、api-key的费用情况、api-key的使用量情况。
+
+### OpenAI交互
+
+> 程序路径:
+> pkg.openai
+
+- `pkg.openai.manager`中的`OpenAIInteract`类封装了OpenAI的文字补全`Completion`API和绘图API供机器人模块调用,并在接口调用成功之后向审计模块报告当前使用的api-key的使用量信息。
+- `pkg.openai.keymgr`实现了多api-key的管理,其中以`exceeded`变量在运行时记录api-key的超额报错记录,并提供根据超额记录进行的api-key切换功能。
+- `pkg.openai.pricing`记录各个模型的费用信息,供调用接口时估算费用,费用估算功能不再与api-key的切换挂钩,api-key仅在调用接口报错超额时进行切换。
+- `pkg.openai.session`中的`Session`进行会话管理。
+
+### utils模块
+
+#### context模块
+
+保存前述模块中的对象,并允许各个模块从此处获取其他模块的对象以调用其方法。
+
+#### 热重载功能
+
+> pkg.utils.reloader
+
+重载前保存context中的所有对象,执行`main.py`中的程序关闭流程,使用`importlib`的`reload`函数重载所有模块(包含配置文件,包含新增的模块),重载后将context恢复,并执行程序启动流程。
+所有模块都会重新创建对象,但QQ机器人模块中的bot对象不会被重新创建,这是因为YiriMirai提供的shutdown方法无法使用,这意味着`config.py`中关于QQ机器人的配置不支持热重载。
+
+#### 热更新功能
+
+> pkg.utils.updater
+
+使用`dulwich`库执行pull操作拉取远程仓库的最新源码,并进行一次热重载加载最新代码。
\ No newline at end of file
diff --git a/src/posts/pluginsAbout/pluginsIntro.md b/src/posts/pluginsAbout/pluginsIntro.md
new file mode 100644
index 000000000..8276671ff
--- /dev/null
+++ b/src/posts/pluginsAbout/pluginsIntro.md
@@ -0,0 +1,117 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: ChatGPT QQ机器人插件,QChatGPT项目插件
+title: 插件介绍
+icon: blog
+date: 2023-09-30
+category:
+ - 插件介绍
+index: false
+---
+
+# QChatGPT的插件
+
+## 插件是什么?
+
+**插件**,是QChatGPT的扩展模块,分为**行为插件**和**内容函数**两种类型。行为插件由主程序运行中的事件驱动,而内容函数由GPT生成的内容驱动。
+
+### 行为插件
+
+1. **事件驱动行为:** 行为插件可以响应运行时发生的事件,如用户发送消息、机器人启动、定时任务触发等。
+2. **自定义行为:** 通过行为插件,你可以为机器人定义特定的行为,使其在特定条件下执行某些操作,例如自动回复、处理指令等。
+3. **功能扩展:** 行为插件可以扩展机器人的功能,使其具有更强大的处理能力,例如与外部API交互、数据存储、日志记录等。
+
+### 内容函数
+
+> 说白了就是ChatGPT官方插件那种东西
+
+内容函数是基于[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的,这是一种嵌入对话中,由GPT自动调用的函数。
+
+例如我们为GPT提供一个函数`access_the_web`,并提供其详细的描述以及其参数的描述,那么当我们在与GPT对话时涉及类似以下内容时:
+
+```
+Q: 请搜索一下github上有那些QQ机器人项目?
+Q: 请为我搜索一些不错的云服务商网站?
+Q:阅读并总结这篇文章:https://zhuanlan.zhihu.com/p/607570830
+Q:搜一下清远今天天气如何
+```
+
+GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将自动处理执行该调用,并返回结果给GPT使其生成新的回复。
+
+当然,函数调用功能不止局限于网络访问,还可以实现图片处理、科学计算、行程规划等需要调用函数的功能,理论上我们可以通过内容函数实现与`ChatGPT Plugins`相同的功能。
+
+- 您需要使用`v2.5.0`以上的版本才能加载包含内容函数的插件
+- 您需要同时在`config.py`中的`completion_api_params`中设置`model`为支持函数调用的模型,推荐使用`gpt-3.5-turbo-16k`
+- 使用此功能可能会造成难以预期的账号余额消耗,请关注
+- [逆向库插件](https://github.com/RockChinQ/revLibs)现在也支持函数调用了..您可以在完全免费的情况下使用GPT-3.5进行函数调用,若您在主程序配置了内容函数并启用,逆向ChatGPT会自动使用这些函数
+
+> **QChatGPT的一些不错的内容函数插件**
+>
+> [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!
+
+## 插件能干什么?
+
+- **自定义回复逻辑:** 定义特定关键词或指令的回复方式。
+- **集成外部服务:** 与外部API交互,获取信息或执行操作。
+- **数据存储和检索:** 将数据存储在数据库中,并能够检索和更新。
+- **自动化任务:** 在特定事件触发时执行自动化任务,如定时任务、特定用户消息触发等。
+- **内容函数调用:** 利用GPT的Function Calling能力执行各种任务,如网络搜索、图片处理等。
+- **更多……**
+
+## 插件怎么用?
+
+### 安装
+
+> 这里只是给出了插件的基本安装方法,详细需查看各插件文档或咨询其开发者
+
+#### 储存库克隆(推荐)
+
+在运行期间,使用管理员账号对机器人私聊发送`!plugin get `即可自动获取源码并安装插件,程序会根据仓库中的`requirements.txt`文件自动安装依赖库
+
+例如安装`hello_plugin`插件
+```
+!plugin get https://github.com/RockChinQ/hello_plugin
+```
+
+安装完成后重启程序或使用管理员账号私聊机器人发送`!reload`进行热重载加载插件
+
+#### 手动安装
+
+将获取到的插件程序放置到`plugins`目录下,具体使用方式请查看各插件文档或咨询其开发者。
+
+### 管理
+
+#### !plugin 命令
+
+```
+!plugin 列出所有已安装的插件
+!plugin get <储存库地址> 从Git储存库安装插件(需要管理员权限)
+!plugin update all 更新所有插件(需要管理员权限,仅支持从储存库安装的插件)
+!plugin update <插件名> 更新指定插件
+!plugin del <插件名> 删除插件(需要管理员权限)
+!plugin on <插件名> 启用插件(需要管理员权限)
+!plugin off <插件名> 禁用插件(需要管理员权限)
+
+!func 列出所有内容函数
+```
+
+#### 控制插件执行顺序
+
+可以通过修改`plugins/settings.json`中`order`字段中每个插件名称的前后顺序,以更改插件**初始化**和**事件执行**顺序
+
+#### 启用或关闭插件
+
+无需卸载即可管理插件的开关
+编辑`plugins`目录下的`switch.json`文件,将相应的插件的`enabled`字段设置为`true/false(开/关)`,之后重启程序或执行热重载即可控制插件开关
+
+#### 控制全局内容函数开关
+
+内容函数是基于[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的,这是一种嵌入对话中,由GPT自动调用的函数。
+每个插件可以自行注册内容函数,您可以在`plugins`目录下的`settings.json`中设置`functions`下的`enabled`为`true`或`false`控制这些内容函数的启用或禁用。
+
+## 如何自定义插件?
+
+> QChatGPT的插件具有高度的可拓展性,你可以自行编写python代码来实现无限的功能,插件开发方法具体阅读:[插件开发](/posts/PluginsDevelop.html)
+
diff --git a/src/posts/PluginsUse/pluginsList.md b/src/posts/pluginsAbout/pluginsList.md
similarity index 93%
rename from src/posts/PluginsUse/pluginsList.md
rename to src/posts/pluginsAbout/pluginsList.md
index ef86b5da1..5ac518039 100644
--- a/src/posts/PluginsUse/pluginsList.md
+++ b/src/posts/pluginsAbout/pluginsList.md
@@ -9,24 +9,42 @@ order: 1
author: Lazy
date: 2023-09-30
category:
- - 插件使用
+ - 插件介绍
---
插件列表
- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!**[点我查看插件使用方法](./plugin_network.md)**
+
- [revLibs](https://github.com/RockChinQ/revLibs) - 将ChatGPT网页版、Claude、Bard、Hugging Chat等破解版接入此项目,关于[官方接口和网页版有什么区别](https://github.com/RockChinQ/QChatGPT/wiki/8-%E5%AE%98%E6%96%B9%E6%8E%A5%E5%8F%A3%E3%80%81ChatGPT%E7%BD%91%E9%A1%B5%E7%89%88%E3%80%81ChatGPT-API%E5%8C%BA%E5%88%AB)
+
- [Switcher](https://github.com/RockChinQ/Switcher) - 支持通过命令切换使用的模型
+
- [hello_plugin](https://github.com/RockChinQ/hello_plugin) - `hello_plugin` 的储存库形式,插件开发模板
-- [oliverkirk-sudo/chat_voice](https://github.com/oliverkirk-sudo/chat_voice) - 文字转语音输出,支持HuggingFace上的[VITS模型](https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer),azure语音合成,vits本地语音合成,sovits语音合成 **[点我查看插件使用方法](./plugin_network.md)**
+
+- [oliverkirk-sudo/chat_voice](https://github.com/oliverkirk-sudo/chat_voice) - 文字转语音输出,支持HuggingFace上的[VITS模型](https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer),azure语
+音合成,vits本地语音合成,sovits语音合成 **[点我查看插件使用方法](./plugin_network.md)**
+
- [RockChinQ/WaitYiYan](https://github.com/RockChinQ/WaitYiYan) - 实时获取百度`文心一言`等待列表人数
+
- [chordfish-k/QChartGPT_Emoticon_Plugin](https://github.com/chordfish-k/QChartGPT_Emoticon_Plugin) - 使机器人根据回复内容发送表情包
+
- [oliverkirk-sudo/ChatPoeBot](https://github.com/oliverkirk-sudo/ChatPoeBot) - 接入[Poe](https://poe.com/)上的机器人
+
- [lieyanqzu/WeatherPlugin](https://github.com/lieyanqzu/WeatherPlugin) - 天气查询插件
+
- [SysStatPlugin](https://github.com/RockChinQ/SysStatPlugin) - 查看系统状态
+
- [oliverkirk-sudo/qchat_system_status](https://github.com/oliverkirk-sudo/qchat_system_status) - 以图片的形式输出系统状态
+
- [oliverkirk-sudo/QChatAIPaint](https://github.com/oliverkirk-sudo/QChatAIPaint) - 基于[Holara](https://holara.ai/)的ai绘图插件
+
- [oliverkirk-sudo/QChatCodeRunner](https://github.com/oliverkirk-sudo/QChatCodeRunner) - 基于[CodeRunner-Plugin](https://github.com/oliverkirk-sudo/CodeRunner-Plugin)的代码运行与图表生成插件
+
- [oliverkirk-sudo/QChatWeather](https://github.com/oliverkirk-sudo/QChatWeather) - 生成好看的天气图片,基于和风天气
+
- [oliverkirk-sudo/QChatMarkdown](https://github.com/oliverkirk-sudo/QChatMarkdown) - 将机器人输出的markdown转换为图片,基于[playwright](https://playwright.dev/python/docs/intro)
+
- [ruuuux/WikipediaSearch](https://github.com/ruuuux/WikipediaSearch) - Wikipedia 搜索插件
+
- [查看更多插件](https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6)这里列出了更多插件
+
diff --git a/src/posts/pluginsAbout/pluginsUse.md b/src/posts/pluginsAbout/pluginsUse.md
new file mode 100644
index 000000000..d11be8f2a
--- /dev/null
+++ b/src/posts/pluginsAbout/pluginsUse.md
@@ -0,0 +1,103 @@
+---
+head:
+ - - meta
+ - name: keywords
+ content: ChatGPT QQ机器人插件,QChatGPT项目插件
+title: 插件使用
+icon: list
+order: 1
+author: Lazy
+date: 2023-09-30
+category:
+ - 插件使用
+---
+:::info 目录
+[[toc]]
+:::
+# QChatGPT 的插件使用
+
+## 简介
+
+`plugins`目录下的所有`.py`程序都将被加载,除了`__init__.py`之外的模块支持热加载
+
+> 插件分为`行为插件`和`内容插件`两种,行为插件由主程序运行中的事件驱动,内容插件由GPT生成的内容驱动,请查看内容插件页
+> 已有插件列表:[QChatGPT 插件](https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6)
+
+## 安装
+
+### 储存库克隆(推荐)
+
+在运行期间,使用管理员账号对机器人私聊发送`!plugin get `即可自动获取源码并安装插件,程序会根据仓库中的`requirements.txt`文件自动安装依赖库
+
+例如安装`hello_plugin`插件
+```
+!plugin get https://github.com/RockChinQ/hello_plugin
+```
+
+安装完成后重启程序或使用管理员账号私聊机器人发送`!reload`进行热重载加载插件
+
+### 手动安装
+
+将获取到的插件程序放置到`plugins`目录下,具体使用方式请查看各插件文档或咨询其开发者。
+
+## 管理
+
+### !plugin 命令
+
+```
+!plugin 列出所有已安装的插件
+!plugin get <储存库地址> 从Git储存库安装插件(需要管理员权限)
+!plugin update all 更新所有插件(需要管理员权限,仅支持从储存库安装的插件)
+!plugin update <插件名> 更新指定插件
+!plugin del <插件名> 删除插件(需要管理员权限)
+!plugin on <插件名> 启用插件(需要管理员权限)
+!plugin off <插件名> 禁用插件(需要管理员权限)
+
+!func 列出所有内容函数
+```
+
+### 控制插件执行顺序
+
+可以通过修改`plugins/settings.json`中`order`字段中每个插件名称的前后顺序,以更改插件**初始化**和**事件执行**顺序
+
+### 启用或关闭插件
+
+无需卸载即可管理插件的开关
+编辑`plugins`目录下的`switch.json`文件,将相应的插件的`enabled`字段设置为`true/false(开/关)`,之后重启程序或执行热重载即可控制插件开关
+
+### 控制全局内容函数开关
+
+内容函数是基于[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的,这是一种嵌入对话中,由GPT自动调用的函数。
+每个插件可以自行注册内容函数,您可以在`plugins`目录下的`settings.json`中设置`functions`下的`enabled`为`true`或`false`控制这些内容函数的启用或禁用。
+
+# > 说白了就是ChatGPT官方插件那种东西
+
+内容函数是基于[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的,这是一种嵌入对话中,由GPT自动调用的函数。
+
+例如我们为GPT提供一个函数`access_the_web`,并提供其详细的描述以及其参数的描述,那么当我们在与GPT对话时涉及类似以下内容时:
+
+```
+Q: 请搜索一下github上有那些QQ机器人项目?
+Q: 请为我搜索一些不错的云服务商网站?
+Q:阅读并总结这篇文章:https://zhuanlan.zhihu.com/p/607570830
+Q:搜一下清远今天天气如何
+```
+
+GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将自动处理执行该调用,并返回结果给GPT使其生成新的回复。
+
+当然,函数调用功能不止局限于网络访问,还可以实现图片处理、科学计算、行程规划等需要调用函数的功能,理论上我们可以通过内容函数实现与`ChatGPT Plugins`相同的功能。
+
+- 您需要使用`v2.5.0`以上的版本才能加载包含内容函数的插件
+- 您需要同时在`config.py`中的`completion_api_params`中设置`model`为支持函数调用的模型,推荐使用`gpt-3.5-turbo-16k`
+- 使用此功能可能会造成难以预期的账号余额消耗,请关注
+- [逆向库插件](https://github.com/RockChinQ/revLibs)现在也支持函数调用了..您可以在完全免费的情况下使用GPT-3.5进行函数调用,若您在主程序配置了内容函数并启用,逆向ChatGPT会自动使用这些函数
+
+### ?QChatGPT有什么类型的插件?区别是什么?
+
+QChatGPT具有`行为插件`和`内容函数`两种扩展方式,行为插件是完整的插件结构,是由运行期间的事件驱动的,内容函数被包含于一个完整的插件体中,由GPT接口驱动。
+
+> 还是不理解?可以尝试根据插件开发页的步骤自行编写插件
+
+## QChatGPT的一些不错的内容函数插件
+
+- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!
diff --git a/src/posts/PluginsUse/plugin_network.md b/src/posts/pluginsAbout/somePluginsUseTutorial/plugin_network.md
similarity index 100%
rename from src/posts/PluginsUse/plugin_network.md
rename to src/posts/pluginsAbout/somePluginsUseTutorial/plugin_network.md
diff --git a/src/posts/PluginsUse/plugin_voice.md b/src/posts/pluginsAbout/somePluginsUseTutorial/plugin_voice.md
similarity index 100%
rename from src/posts/PluginsUse/plugin_voice.md
rename to src/posts/pluginsAbout/somePluginsUseTutorial/plugin_voice.md
diff --git a/yarn.lock b/yarn.lock
index ee453eaad..279ce4ef3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -32,7 +32,7 @@
resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.20.tgz"
integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.22.15", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
+"@babel/core@^7.11.1", "@babel/core@^7.22.15":
version "7.23.0"
resolved "https://registry.npmmirror.com/@babel/core/-/core-7.23.0.tgz"
integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==
@@ -948,6 +948,111 @@
resolved "https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz"
integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==
+"@esbuild/android-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
+ integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
+
+"@esbuild/android-arm@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
+ integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
+
+"@esbuild/android-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
+ integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
+
+"@esbuild/darwin-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
+ integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+
+"@esbuild/darwin-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
+ integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
+
+"@esbuild/freebsd-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
+ integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
+
+"@esbuild/freebsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
+ integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
+
+"@esbuild/linux-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
+ integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
+
+"@esbuild/linux-arm@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
+ integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
+
+"@esbuild/linux-ia32@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
+ integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
+
+"@esbuild/linux-loong64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
+ integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
+
+"@esbuild/linux-mips64el@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
+ integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
+
+"@esbuild/linux-ppc64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
+ integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
+
+"@esbuild/linux-riscv64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
+ integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
+
+"@esbuild/linux-s390x@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
+ integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
+
+"@esbuild/linux-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
+ integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
+
+"@esbuild/netbsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
+ integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
+
+"@esbuild/openbsd-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
+ integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
+
+"@esbuild/sunos-x64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
+ integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
+
+"@esbuild/win32-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
+ integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
+
+"@esbuild/win32-ia32@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
+ integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
+
"@esbuild/win32-x64@0.18.20":
version "0.18.20"
resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz"
@@ -1072,7 +1177,7 @@
"@types/markdown-it" "^13.0.0"
markdown-it "^13.0.1"
-"@mdit-vue/shared@^0.12.1", "@mdit-vue/shared@0.12.1":
+"@mdit-vue/shared@0.12.1", "@mdit-vue/shared@^0.12.1":
version "0.12.1"
resolved "https://registry.npmmirror.com/@mdit-vue/shared/-/shared-0.12.1.tgz"
integrity sha512-bXgd0KThe4jC2leCFDFsyrudXIckvTwV4WnQK/rRMrXq0/BAuVdSNdIv1LGCWZxD5+oDyPyEPd0lalTIFwqsmg==
@@ -1081,7 +1186,7 @@
"@types/markdown-it" "^13.0.0"
markdown-it "^13.0.1"
-"@mdit-vue/types@^0.12.0", "@mdit-vue/types@0.12.0":
+"@mdit-vue/types@0.12.0", "@mdit-vue/types@^0.12.0":
version "0.12.0"
resolved "https://registry.npmmirror.com/@mdit-vue/types/-/types-0.12.0.tgz"
integrity sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA==
@@ -1103,7 +1208,7 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
-"@mdit/plugin-container@^0.4.8", "@mdit/plugin-container@0.4.8":
+"@mdit/plugin-container@0.4.8", "@mdit/plugin-container@^0.4.8":
version "0.4.8"
resolved "https://registry.npmmirror.com/@mdit/plugin-container/-/plugin-container-0.4.8.tgz"
integrity sha512-ruiP9XrJ6Uaru/9ZO7iBGm96Fiqr/4Ecn6zHER3/GzWpRJ9oPjrDBWoQ9eFrmINoq1C89puZG0lmAJJ9KCTeAw==
@@ -1230,7 +1335,7 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
-"@mdit/plugin-tex@^0.4.8", "@mdit/plugin-tex@0.4.8":
+"@mdit/plugin-tex@0.4.8", "@mdit/plugin-tex@^0.4.8":
version "0.4.8"
resolved "https://registry.npmmirror.com/@mdit/plugin-tex/-/plugin-tex-0.4.8.tgz"
integrity sha512-HgWb8l0Can+NsxFfLu358Xwj1plxXHXf2YkjxM316pUeVZhNhjPjoqIpR46ebCwWbWW+GmwT0YdeUvQrDgM3ig==
@@ -1254,7 +1359,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -1343,27 +1448,6 @@
dependencies:
"@types/ms" "*"
-"@types/eslint-scope@^3.7.3":
- version "3.7.6"
- resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz"
- integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*":
- version "8.44.6"
- resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.44.6.tgz"
- integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
-"@types/estree@*", "@types/estree@^1.0.0":
- version "1.0.3"
- resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.3.tgz"
- integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==
-
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.39.tgz"
@@ -1387,11 +1471,6 @@
resolved "https://registry.npmmirror.com/@types/js-yaml/-/js-yaml-4.0.6.tgz"
integrity sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==
-"@types/json-schema@*", "@types/json-schema@^7.0.8":
- version "7.0.14"
- resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.14.tgz"
- integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==
-
"@types/jsonfile@*":
version "6.1.2"
resolved "https://registry.npmmirror.com/@types/jsonfile/-/jsonfile-6.1.2.tgz"
@@ -1449,7 +1528,7 @@
resolved "https://registry.npmmirror.com/@types/ms/-/ms-0.7.32.tgz"
integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==
-"@types/node@*", "@types/node@>= 14":
+"@types/node@*":
version "20.7.1"
resolved "https://registry.npmmirror.com/@types/node/-/node-20.7.1.tgz"
integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==
@@ -1593,7 +1672,7 @@
"@vue/compiler-ssr" "3.3.7"
"@vue/shared" "3.3.7"
-"@vue/shared@^3.3.4", "@vue/shared@3.3.7":
+"@vue/shared@3.3.7", "@vue/shared@^3.3.4":
version "3.3.7"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.7.tgz"
integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==
@@ -1864,168 +1943,17 @@
marked "^4.3.0"
vue "^3.3.4"
-"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz"
- integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
- dependencies:
- "@webassemblyjs/helper-numbers" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
-
-"@webassemblyjs/floating-point-hex-parser@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz"
- integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
-
-"@webassemblyjs/helper-api-error@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz"
- integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
-
-"@webassemblyjs/helper-buffer@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz"
- integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
-
-"@webassemblyjs/helper-numbers@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz"
- integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
- dependencies:
- "@webassemblyjs/floating-point-hex-parser" "1.11.6"
- "@webassemblyjs/helper-api-error" "1.11.6"
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/helper-wasm-bytecode@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz"
- integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
-
-"@webassemblyjs/helper-wasm-section@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz"
- integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
-
-"@webassemblyjs/ieee754@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz"
- integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
- dependencies:
- "@xtuc/ieee754" "^1.2.0"
-
-"@webassemblyjs/leb128@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz"
- integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
- dependencies:
- "@xtuc/long" "4.2.2"
-
-"@webassemblyjs/utf8@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz"
- integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
-
-"@webassemblyjs/wasm-edit@^1.11.5":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz"
- integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/helper-wasm-section" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
- "@webassemblyjs/wasm-opt" "1.11.6"
- "@webassemblyjs/wasm-parser" "1.11.6"
- "@webassemblyjs/wast-printer" "1.11.6"
-
-"@webassemblyjs/wasm-gen@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz"
- integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/ieee754" "1.11.6"
- "@webassemblyjs/leb128" "1.11.6"
- "@webassemblyjs/utf8" "1.11.6"
-
-"@webassemblyjs/wasm-opt@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz"
- integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-buffer" "1.11.6"
- "@webassemblyjs/wasm-gen" "1.11.6"
- "@webassemblyjs/wasm-parser" "1.11.6"
-
-"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz"
- integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@webassemblyjs/helper-api-error" "1.11.6"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
- "@webassemblyjs/ieee754" "1.11.6"
- "@webassemblyjs/leb128" "1.11.6"
- "@webassemblyjs/utf8" "1.11.6"
-
-"@webassemblyjs/wast-printer@1.11.6":
- version "1.11.6"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz"
- integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
- dependencies:
- "@webassemblyjs/ast" "1.11.6"
- "@xtuc/long" "4.2.2"
-
-"@xtuc/ieee754@^1.2.0":
- version "1.2.0"
- resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
- integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-
-"@xtuc/long@4.2.2":
- version "4.2.2"
- resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz"
- integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-
abortcontroller-polyfill@^1.7.5:
version "1.7.5"
resolved "https://registry.npmmirror.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz"
integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==
-acorn-import-assertions@^1.9.0:
- version "1.9.0"
- resolved "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz"
- integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
-
-acorn@^8, acorn@^8.7.1, acorn@^8.8.2:
+acorn@^8.8.2:
version "8.11.2"
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.11.2.tgz"
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
-ajv-keywords@^3.5.2:
- version "3.5.2"
- resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
- integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-
-ajv@^6.12.5, ajv@^6.9.1:
- version "6.12.6"
- resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
- dependencies:
- fast-deep-equal "^3.1.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-ajv@^8.6.0, ajv@>=8:
+ajv@^8.6.0:
version "8.12.0"
resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -2266,7 +2194,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.9, "browserslist@>= 4.21.0":
+browserslist@^4.21.10, browserslist@^4.21.9:
version "4.22.0"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.0.tgz"
integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==
@@ -2376,7 +2304,7 @@ cheerio@1.0.0-rc.12:
parse5 "^7.0.0"
parse5-htmlparser2-tree-adapter "^7.0.0"
-chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0":
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
version "3.5.3"
resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -2391,11 +2319,6 @@ chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0":
optionalDependencies:
fsevents "~2.3.2"
-chrome-trace-event@^1.0.2:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
- integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
-
cli-cursor@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz"
@@ -2436,25 +2359,15 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-commander@^2.20.0:
- version "2.20.3"
- resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
- integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-
-commander@^8.3.0:
- version "8.3.0"
- resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz"
- integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@7:
version "7.2.0"
@@ -2466,6 +2379,16 @@ commander@9.2.0:
resolved "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz"
integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz"
+ integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
comment-regex@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/comment-regex/-/comment-regex-1.0.1.tgz"
@@ -2576,7 +2499,7 @@ cytoscape-fcose@^2.1.0:
dependencies:
cose-base "^2.2.0"
-cytoscape@^3.2.0, cytoscape@^3.23.0:
+cytoscape@^3.23.0:
version "3.26.0"
resolved "https://registry.npmmirror.com/cytoscape/-/cytoscape-3.26.0.tgz"
integrity sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==
@@ -2584,13 +2507,6 @@ cytoscape@^3.2.0, cytoscape@^3.23.0:
heap "^0.2.6"
lodash "^4.17.21"
-d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3:
- version "3.2.4"
- resolved "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz"
- integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
- dependencies:
- internmap "1 - 2"
-
"d3-array@1 - 2":
version "2.12.1"
resolved "https://registry.npmmirror.com/d3-array/-/d3-array-2.12.1.tgz"
@@ -2598,6 +2514,13 @@ d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3",
dependencies:
internmap "^1.0.0"
+"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
+ version "3.2.4"
+ resolved "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz"
+ integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
+ dependencies:
+ internmap "1 - 2"
+
d3-axis@3:
version "3.0.0"
resolved "https://registry.npmmirror.com/d3-axis/-/d3-axis-3.0.0.tgz"
@@ -2707,16 +2630,16 @@ d3-hierarchy@3:
dependencies:
d3-color "1 - 3"
-d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3:
- version "3.1.0"
- resolved "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz"
- integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
-
d3-path@1:
version "1.0.9"
resolved "https://registry.npmmirror.com/d3-path/-/d3-path-1.0.9.tgz"
integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==
+"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz"
+ integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
+
d3-polygon@3:
version "3.0.1"
resolved "https://registry.npmmirror.com/d3-polygon/-/d3-polygon-3.0.1.tgz"
@@ -2764,13 +2687,6 @@ d3-scale@4:
resolved "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz"
integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
-d3-shape@^1.2.0:
- version "1.3.7"
- resolved "https://registry.npmmirror.com/d3-shape/-/d3-shape-1.3.7.tgz"
- integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
- dependencies:
- d3-path "1"
-
d3-shape@3:
version "3.2.0"
resolved "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz"
@@ -2778,6 +2694,13 @@ d3-shape@3:
dependencies:
d3-path "^3.1.0"
+d3-shape@^1.2.0:
+ version "1.3.7"
+ resolved "https://registry.npmmirror.com/d3-shape/-/d3-shape-1.3.7.tgz"
+ integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
+ dependencies:
+ d3-path "1"
+
"d3-time-format@2 - 4", d3-time-format@4:
version "4.1.0"
resolved "https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz"
@@ -3035,14 +2958,6 @@ encode-utf8@^1.0.3:
resolved "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz"
integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
-enhanced-resolve@^5.15.0:
- version "5.15.0"
- resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz"
- integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
- dependencies:
- graceful-fs "^4.2.4"
- tapable "^2.2.0"
-
entities@^4.2.0, entities@^4.4.0:
version "4.5.0"
resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz"
@@ -3103,11 +3018,6 @@ es-abstract@^1.22.1:
unbox-primitive "^1.0.2"
which-typed-array "^1.1.11"
-es-module-lexer@^1.2.1:
- version "1.3.1"
- resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz"
- integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==
-
es-set-tostringtag@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz"
@@ -3169,14 +3079,6 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-eslint-scope@5.1.1:
- version "5.1.1"
- resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
esm@^3.2.25:
version "3.2.25"
resolved "https://registry.npmmirror.com/esm/-/esm-3.2.25.tgz"
@@ -3187,23 +3089,6 @@ esprima@^4.0.0:
resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esrecurse@^4.3.0:
- version "4.3.0"
- resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
- integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
- dependencies:
- estraverse "^5.2.0"
-
-estraverse@^4.1.1:
- version "4.3.0"
- resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
- integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-
-estraverse@^5.2.0:
- version "5.3.0"
- resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
- integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-1.0.1.tgz"
@@ -3224,11 +3109,6 @@ eve-raphael@0.5.0:
resolved "https://registry.npmmirror.com/eve-raphael/-/eve-raphael-0.5.0.tgz"
integrity sha512-jrxnPsCGqng1UZuEp9DecX/AuSyAszATSjf4oEcRxvfxa1Oux4KkIPKBAAWWnpdwfARtr+Q0o9aPYWjsROD7ug==
-events@^3.2.0:
- version "3.3.0"
- resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
- integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-
execa@^8.0.1:
version "8.0.1"
resolved "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz"
@@ -3251,16 +3131,16 @@ extend-shallow@^2.0.1:
dependencies:
is-extendable "^0.1.0"
-fast-deep-equal@^3.1.1:
- version "3.1.3"
- resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
fast-deep-equal@2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz"
integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
fast-glob@^3.3.0:
version "3.3.1"
resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz"
@@ -3272,7 +3152,7 @@ fast-glob@^3.3.0:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
+fast-json-stable-stringify@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -3356,6 +3236,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
@@ -3428,11 +3313,6 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-to-regexp@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
- integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-
glob@^7.1.6:
version "7.2.3"
resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
@@ -3475,7 +3355,7 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.11"
resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -3630,7 +3510,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@^2.0.3, inherits@^2.0.4, inherits@2:
+inherits@2, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -3652,16 +3532,16 @@ internal-slot@^1.0.5:
has "^1.0.3"
side-channel "^1.0.4"
-internmap@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/internmap/-/internmap-1.0.1.tgz"
- integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==
-
"internmap@1 - 2":
version "2.0.3"
resolved "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz"
integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==
+internmap@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/internmap/-/internmap-1.0.1.tgz"
+ integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==
+
is-alphabetical@^1.0.0:
version "1.0.4"
resolved "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz"
@@ -3876,15 +3756,6 @@ jest-worker@^26.2.1:
merge-stream "^2.0.0"
supports-color "^7.0.0"
-jest-worker@^27.4.5:
- version "27.5.1"
- resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz"
- integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
- dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
-
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
@@ -3915,16 +3786,6 @@ jsesc@~0.5.0:
resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz"
integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
-json-parse-even-better-errors@^2.3.1:
- version "2.3.1"
- resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
- integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
json-schema-traverse@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
@@ -4035,11 +3896,6 @@ lit@^2.7.5:
lit-element "^3.3.0"
lit-html "^2.8.0"
-loader-runner@^4.2.0:
- version "4.3.0"
- resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz"
- integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
-
loadjs@^4.2.0:
version "4.2.0"
resolved "https://registry.npmmirror.com/loadjs/-/loadjs-4.2.0.tgz"
@@ -4101,14 +3957,7 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-magic-string@^0.25.0:
- version "0.25.9"
- resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz"
- integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
- dependencies:
- sourcemap-codec "^1.4.8"
-
-magic-string@^0.25.7:
+magic-string@^0.25.0, magic-string@^0.25.7:
version "0.25.9"
resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz"
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
@@ -4137,7 +3986,7 @@ markdown-it-emoji@^2.0.2:
resolved "https://registry.npmmirror.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz"
integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==
-markdown-it@*, markdown-it@^13.0.1:
+markdown-it@^13.0.1:
version "13.0.2"
resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-13.0.2.tgz"
integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==
@@ -4459,18 +4308,6 @@ micromatch@^4.0.4:
braces "^3.0.2"
picomatch "^2.3.1"
-mime-db@1.52.0:
- version "1.52.0"
- resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.1.27:
- version "2.1.35"
- resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz"
@@ -4743,7 +4580,7 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.1.0, postcss@^8.4.27, postcss@^8.4.28, postcss@^8.4.31, postcss@>=8.0.9:
+postcss@^8.4.27, postcss@^8.4.28, postcss@^8.4.31:
version "8.4.31"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz"
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
@@ -4931,7 +4768,7 @@ rollup-plugin-terser@^7.0.0:
serialize-javascript "^4.0.0"
terser "^5.0.0"
-"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1:
+rollup@^2.43.1:
version "2.79.1"
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
@@ -5000,7 +4837,7 @@ sass-loader@^13.3.2:
dependencies:
neo-async "^2.6.2"
-sass@*, sass@^1.3.0, sass@^1.66.1, sass@^1.69.5:
+sass@^1.66.1, sass@^1.69.5:
version "1.69.5"
resolved "https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz"
integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
@@ -5009,24 +4846,15 @@ sass@*, sass@^1.3.0, sass@^1.66.1, sass@^1.69.5:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
-sax@^1.2.4:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz"
- integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
-
sax@1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/sax/-/sax-1.2.1.tgz"
integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==
-schema-utils@^3.1.1, schema-utils@^3.2.0:
- version "3.3.0"
- resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz"
- integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
- dependencies:
- "@types/json-schema" "^7.0.8"
- ajv "^6.12.5"
- ajv-keywords "^3.5.2"
+sax@^1.2.4:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz"
+ integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
section-matter@^1.0.0:
version "1.0.0"
@@ -5055,13 +4883,6 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
-serialize-javascript@^6.0.1:
- version "6.0.1"
- resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz"
- integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==
- dependencies:
- randombytes "^2.1.0"
-
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz"
@@ -5127,7 +4948,7 @@ slimsearch@^1.0.0:
resolved "https://registry.npmmirror.com/slimsearch/-/slimsearch-1.0.0.tgz"
integrity sha512-ig1Du+U5LFngeDokhUupBqmEz3aKRJ4v+R2t6ZOi3aPGaFivYxxOiDcJX7fR0xPxjmTe94rAA6RW5gKlX5Gcsg==
-source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0":
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
@@ -5178,23 +4999,7 @@ stdin-discarder@^0.1.0:
dependencies:
bl "^5.0.0"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string-width@^4.1.0:
- version "4.2.3"
- resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@^4.2.0:
+string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -5254,6 +5059,13 @@ string.prototype.trimstart@^1.0.7:
define-properties "^1.2.0"
es-abstract "^1.22.1"
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
stringify-object@^3.3.0:
version "3.3.0"
resolved "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz"
@@ -5309,37 +5121,18 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.0.0:
+supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-supports-color@^8.0.0:
- version "8.1.1"
- resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
- dependencies:
- has-flag "^4.0.0"
-
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-tapable@^2.1.1, tapable@^2.2.0:
- version "2.2.1"
- resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz"
- integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
-
temp-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/temp-dir/-/temp-dir-2.0.0.tgz"
@@ -5355,18 +5148,7 @@ tempy@^0.6.0:
type-fest "^0.16.0"
unique-string "^2.0.0"
-terser-webpack-plugin@^5.3.7:
- version "5.3.9"
- resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz"
- integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==
- dependencies:
- "@jridgewell/trace-mapping" "^0.3.17"
- jest-worker "^27.4.5"
- schema-utils "^3.1.1"
- serialize-javascript "^6.0.1"
- terser "^5.16.8"
-
-terser@^5.0.0, terser@^5.16.8, terser@^5.4.0:
+terser@^5.0.0:
version "5.22.0"
resolved "https://registry.npmmirror.com/terser/-/terser-5.22.0.tgz"
integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==
@@ -5405,16 +5187,16 @@ ts-dedent@^2.2.0:
resolved "https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz"
integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==
-tslib@^2.5.2:
- version "2.6.2"
- resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz"
- integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-
tslib@2.3.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+tslib@^2.5.2:
+ version "2.6.2"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
twikoo@^1.6.18:
version "1.6.21"
resolved "https://registry.npmmirror.com/twikoo/-/twikoo-1.6.21.tgz"
@@ -5590,7 +5372,7 @@ vidstack@^0.6.13:
media-captions "0.0.18"
type-fest "^3.8.0"
-vite@^4.0.0, vite@~4.4.9:
+vite@~4.4.9:
version "4.4.9"
resolved "https://registry.npmmirror.com/vite/-/vite-4.4.9.tgz"
integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
@@ -5613,7 +5395,7 @@ vue-router@^4.2.4, vue-router@^4.2.5:
dependencies:
"@vue/devtools-api" "^6.5.0"
-"vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.25, vue@^3.3.4, vue@^3.3.7, vue@3.3.7:
+vue@^3.3.4, vue@^3.3.7:
version "3.3.7"
resolved "https://registry.npmmirror.com/vue/-/vue-3.3.7.tgz"
integrity sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==
@@ -5988,14 +5770,6 @@ vuepress@2.0.0-beta.67:
dependencies:
vuepress-vite "2.0.0-beta.67"
-watchpack@^2.4.0:
- version "2.4.0"
- resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz"
- integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
- dependencies:
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.1.2"
-
web-worker@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz"
@@ -6006,41 +5780,6 @@ webidl-conversions@^4.0.2:
resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
-webpack-sources@^3.2.3:
- version "3.2.3"
- resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz"
- integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-
-webpack@^5.0.0, webpack@^5.1.0:
- version "5.89.0"
- resolved "https://registry.npmmirror.com/webpack/-/webpack-5.89.0.tgz"
- integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==
- dependencies:
- "@types/eslint-scope" "^3.7.3"
- "@types/estree" "^1.0.0"
- "@webassemblyjs/ast" "^1.11.5"
- "@webassemblyjs/wasm-edit" "^1.11.5"
- "@webassemblyjs/wasm-parser" "^1.11.5"
- acorn "^8.7.1"
- acorn-import-assertions "^1.9.0"
- browserslist "^4.14.5"
- chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.15.0"
- es-module-lexer "^1.2.1"
- eslint-scope "5.1.1"
- events "^3.2.0"
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.9"
- json-parse-even-better-errors "^2.3.1"
- loader-runner "^4.2.0"
- mime-types "^2.1.27"
- neo-async "^2.6.2"
- schema-utils "^3.2.0"
- tapable "^2.1.1"
- terser-webpack-plugin "^5.3.7"
- watchpack "^2.4.0"
- webpack-sources "^3.2.3"
-
webworkify-webpack@^2.1.5:
version "2.1.5"
resolved "https://registry.npmmirror.com/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz"