From d1698186e150b4e41f1c8195dd096aef66bbae83 Mon Sep 17 00:00:00 2001 From: lazy <2512087764@qq.com> Date: Wed, 28 Aug 2024 00:50:44 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E6=9B=B4=E6=8D=A2VitePress=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E5=88=9D=E6=AD=A5=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-docker-image.yaml | 47 - .github/workflows/deploy-docs.yml | 48 - .gitignore | 7 +- Dockerfile | 7 - README.md | 106 +- docs/.vitepress/config.mts | 165 + docs/.vitepress/theme/custom.css | 6 + docs/.vitepress/theme/index.ts | 5 + .../assets/icon/chrome-192.png | Bin .../assets/icon/chrome-512.png | Bin .../assets/icon/chrome-mask-192.png | Bin .../assets/icon/chrome-mask-512.png | Bin .../assets/icon/guide-maskable.png | Bin .../assets/icon/ms-icon-144.png | Bin .../assets/image/QChatGPT-0516.png | Bin .../assets/image/QChatGPT-1211.png | Bin .../public => docs}/assets/image/advanced.svg | 0 .../public => docs}/assets/image/blog.svg | 0 .../public => docs}/assets/image/box.svg | 0 .../assets/image/config_lgr.png | Bin .../public => docs}/assets/image/dl_gocq.png | Bin .../public => docs}/assets/image/dl_lgr_1.png | Bin .../public => docs}/assets/image/dl_lgr_2.png | Bin .../public => docs}/assets/image/dl_lgr_3.png | Bin .../assets/image/error_q2_1.png | Bin .../assets/image/error_q2_2.png | Bin .../public => docs}/assets/image/error_q3.png | Bin .../public => docs}/assets/image/error_q4.png | Bin .../public => docs}/assets/image/error_q5.png | Bin .../public => docs}/assets/image/features.svg | 0 .../assets/image/first_launch.png | Bin .../assets/image/get_captcha.png | Bin .../assets/image/get_gocq_login_token.png | Bin .../assets/image/github-dark.svg | 0 .../assets/image/github-light.svg | 0 .../assets/image/group_chat.png | Bin .../public => docs}/assets/image/layout.svg | 0 .../public => docs}/assets/image/llob_cfg.png | Bin .../public => docs}/assets/image/mah_dl_1.png | Bin .../public => docs}/assets/image/mah_dl_2.png | Bin .../public => docs}/assets/image/mah_dl_3.png | Bin .../public => docs}/assets/image/mah_dl_4.png | Bin .../public => docs}/assets/image/markdown.svg | 0 .../assets/image/mirai_dl_1.png | Bin .../assets/image/mirai_dl_2.png | Bin .../assets/image/mirai_dl_3.png | Bin .../assets/image/mirai_dl_4.png | Bin .../assets/image/mirai_dl_5.png | Bin .../assets/image/mirai_sign_1.png | Bin .../assets/image/mirai_sign_2.png | Bin .../assets/image/mirai_sign_3.png | Bin .../assets/image/mirai_sign_4.png | Bin .../assets/image/mirai_sign_5.png | Bin .../assets/image/mirai_sign_6.png | Bin .../assets/image/mirai_sign_7.png | Bin .../assets/image/napcat_cfg_1.png | Bin .../assets/image/napcat_cfg_2.png | Bin .../assets/image/napcat_cfg_3.png | Bin .../assets/image/paste_token.png | Bin .../assets/image/private_chat.png | Bin .../public => docs}/assets/image/python_1.png | Bin .../public => docs}/assets/image/python_2.png | Bin .../public => docs}/assets/image/python_3.png | Bin .../assets/image/run_mirai_1.png | Bin .../assets/image/sham_cfg_1.png | Bin .../assets/image/sham_cfg_2.png | Bin .../assets/image/sham_cfg_3.png | Bin .../assets/image/sham_env_1.png | Bin .../assets/image/sham_env_2.png | Bin .../config/function}/command.md | 94 +- .../config/function}/pipeline.md | 410 +- .../config/function}/platform.md | 281 +- .../config/function}/provider.md | 343 +- .../config => docs/config/function}/system.md | 194 +- .../config}/metadata/adapter-qq-botpy.md | 54 +- .../config}/metadata/llm-models.md | 115 +- docs/config/metadata/sensitive-words.md | 3 + .../deploy/README.md => docs/deploy/index.md | 86 +- .../deploy/platforms/aiocqhttp/index.md | 20 +- .../deploy/platforms/aiocqhttp/lagrange.md | 128 +- .../deploy/platforms/aiocqhttp/llonebot.md | 28 +- .../deploy/platforms/aiocqhttp/napcat.md | 12 +- .../deploy/platforms/aiocqhttp/shamrock.md | 156 +- .../deploy/platforms}/gocq.md | 309 +- .../deploy/platforms/index.md | 15 +- {src/posts => docs}/deploy/platforms/mirai.md | 14 +- .../deploy/platforms/official.md | 38 +- {src/posts => docs}/deploy/qchatgpt/docker.md | 17 +- .../deploy/qchatgpt/index.md | 39 +- {src/posts => docs}/deploy/qchatgpt/manual.md | 15 +- .../deploy/qchatgpt/more-details/python.md | 14 +- .../deploy/quick-config}/config.md | 14 +- .../apiref.md => docs/develop/api-ref.md | 63 +- .../plugin => docs/develop}/extension.md | 215 +- .../develop.md => docs/develop/plugin-dev.md | 15 +- .../intro.md => docs/develop/plugin-intro.md | 16 +- .../develop/tech-info.md | 15 +- docs/index.md | 38 + docs/insight/guide.md | 32 + src/posts/feature.md => docs/insight/intro.md | 34 +- docs/tob/contact.md | 6 + src/posts/tob/README.md => docs/tob/index.md | 18 +- {src/posts => docs}/tob/platform.md | 77 +- {src/posts => docs}/tob/provider.md | 41 +- .../error/README.md => docs/usage/faq.md | 13 +- .../list.md => docs/usage/plugin-list.md | 48 +- nginx/default.conf | 18 - nginx/nginx.conf | 29 - package-lock.json | 1884 ++++++++ package.json | 26 +- pnpm-lock.yaml | 4138 ----------------- src/.vuepress/config.ts | 12 - src/.vuepress/navbar.ts | 27 - src/.vuepress/public/favicon.ico | Bin 35504 -> 0 bytes src/.vuepress/public/logo.png | Bin 35504 -> 0 bytes src/.vuepress/public/logo.svg | 1 - src/.vuepress/sidebar.ts | 236 - src/.vuepress/styles/config.scss | 1 - src/.vuepress/styles/index.scss | 12 - src/.vuepress/styles/palette.scss | 5 - src/.vuepress/theme.ts | 201 - src/README.md | 78 - src/posts/command.md | 63 - src/posts/config/README.md | 13 - src/posts/deploy/platforms/nakuru.md | 163 - src/posts/metadata/README.md | 14 - src/posts/metadata/sensitive-words.md | 15 - src/posts/tob/contact.md | 19 - 128 files changed, 3490 insertions(+), 6886 deletions(-) delete mode 100644 .github/workflows/build-docker-image.yaml delete mode 100644 .github/workflows/deploy-docs.yml delete mode 100644 Dockerfile create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/.vitepress/theme/custom.css create mode 100644 docs/.vitepress/theme/index.ts rename {src/.vuepress/public => docs}/assets/icon/chrome-192.png (100%) rename {src/.vuepress/public => docs}/assets/icon/chrome-512.png (100%) rename {src/.vuepress/public => docs}/assets/icon/chrome-mask-192.png (100%) rename {src/.vuepress/public => docs}/assets/icon/chrome-mask-512.png (100%) rename {src/.vuepress/public => docs}/assets/icon/guide-maskable.png (100%) rename {src/.vuepress/public => docs}/assets/icon/ms-icon-144.png (100%) rename {src/.vuepress/public => docs}/assets/image/QChatGPT-0516.png (100%) rename {src/.vuepress/public => docs}/assets/image/QChatGPT-1211.png (100%) rename {src/.vuepress/public => docs}/assets/image/advanced.svg (100%) rename {src/.vuepress/public => docs}/assets/image/blog.svg (100%) rename {src/.vuepress/public => docs}/assets/image/box.svg (100%) rename {src/.vuepress/public => docs}/assets/image/config_lgr.png (100%) rename {src/.vuepress/public => docs}/assets/image/dl_gocq.png (100%) rename {src/.vuepress/public => docs}/assets/image/dl_lgr_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/dl_lgr_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/dl_lgr_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/error_q2_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/error_q2_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/error_q3.png (100%) rename {src/.vuepress/public => docs}/assets/image/error_q4.png (100%) rename {src/.vuepress/public => docs}/assets/image/error_q5.png (100%) rename {src/.vuepress/public => docs}/assets/image/features.svg (100%) rename {src/.vuepress/public => docs}/assets/image/first_launch.png (100%) rename {src/.vuepress/public => docs}/assets/image/get_captcha.png (100%) rename {src/.vuepress/public => docs}/assets/image/get_gocq_login_token.png (100%) rename {src/.vuepress/public => docs}/assets/image/github-dark.svg (100%) rename {src/.vuepress/public => docs}/assets/image/github-light.svg (100%) rename {src/.vuepress/public => docs}/assets/image/group_chat.png (100%) rename {src/.vuepress/public => docs}/assets/image/layout.svg (100%) rename {src/.vuepress/public => docs}/assets/image/llob_cfg.png (100%) rename {src/.vuepress/public => docs}/assets/image/mah_dl_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/mah_dl_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/mah_dl_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/mah_dl_4.png (100%) rename {src/.vuepress/public => docs}/assets/image/markdown.svg (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_dl_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_dl_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_dl_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_dl_4.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_dl_5.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_4.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_5.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_6.png (100%) rename {src/.vuepress/public => docs}/assets/image/mirai_sign_7.png (100%) rename {src/.vuepress/public => docs}/assets/image/napcat_cfg_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/napcat_cfg_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/napcat_cfg_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/paste_token.png (100%) rename {src/.vuepress/public => docs}/assets/image/private_chat.png (100%) rename {src/.vuepress/public => docs}/assets/image/python_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/python_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/python_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/run_mirai_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/sham_cfg_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/sham_cfg_2.png (100%) rename {src/.vuepress/public => docs}/assets/image/sham_cfg_3.png (100%) rename {src/.vuepress/public => docs}/assets/image/sham_env_1.png (100%) rename {src/.vuepress/public => docs}/assets/image/sham_env_2.png (100%) rename {src/posts/config => docs/config/function}/command.md (83%) rename {src/posts/config => docs/config/function}/pipeline.md (95%) rename {src/posts/config => docs/config/function}/platform.md (92%) rename {src/posts/config => docs/config/function}/provider.md (95%) rename {src/posts/config => docs/config/function}/system.md (91%) rename {src/posts => docs/config}/metadata/adapter-qq-botpy.md (73%) rename {src/posts => docs/config}/metadata/llm-models.md (90%) create mode 100644 docs/config/metadata/sensitive-words.md rename src/posts/deploy/README.md => docs/deploy/index.md (85%) rename src/posts/deploy/platforms/aiocqhttp/README.md => docs/deploy/platforms/aiocqhttp/index.md (65%) rename {src/posts => docs}/deploy/platforms/aiocqhttp/lagrange.md (90%) rename {src/posts => docs}/deploy/platforms/aiocqhttp/llonebot.md (50%) rename {src/posts => docs}/deploy/platforms/aiocqhttp/napcat.md (78%) rename {src/posts => docs}/deploy/platforms/aiocqhttp/shamrock.md (92%) rename {src/posts/deploy/platforms/aiocqhttp => docs/deploy/platforms}/gocq.md (85%) rename src/posts/deploy/platforms/README.md => docs/deploy/platforms/index.md (75%) rename {src/posts => docs}/deploy/platforms/mirai.md (93%) rename {src/posts => docs}/deploy/platforms/official.md (72%) rename {src/posts => docs}/deploy/qchatgpt/docker.md (81%) rename src/posts/deploy/qchatgpt/README.md => docs/deploy/qchatgpt/index.md (53%) rename {src/posts => docs}/deploy/qchatgpt/manual.md (84%) rename {src/posts => docs}/deploy/qchatgpt/more-details/python.md (68%) rename {src/posts/deploy => docs/deploy/quick-config}/config.md (93%) rename src/posts/plugin/apiref.md => docs/develop/api-ref.md (82%) rename {src/posts/plugin => docs/develop}/extension.md (96%) rename src/posts/plugin/develop.md => docs/develop/plugin-dev.md (95%) rename src/posts/plugin/intro.md => docs/develop/plugin-intro.md (92%) rename src/posts/develop/technology-info.md => docs/develop/tech-info.md (94%) create mode 100644 docs/index.md create mode 100644 docs/insight/guide.md rename src/posts/feature.md => docs/insight/intro.md (89%) create mode 100644 docs/tob/contact.md rename src/posts/tob/README.md => docs/tob/index.md (60%) rename {src/posts => docs}/tob/platform.md (87%) rename {src/posts => docs}/tob/provider.md (70%) rename src/posts/error/README.md => docs/usage/faq.md (78%) rename src/posts/plugin/list.md => docs/usage/plugin-list.md (91%) delete mode 100644 nginx/default.conf delete mode 100644 nginx/nginx.conf create mode 100644 package-lock.json delete mode 100644 pnpm-lock.yaml delete mode 100644 src/.vuepress/config.ts delete mode 100644 src/.vuepress/navbar.ts delete mode 100644 src/.vuepress/public/favicon.ico delete mode 100644 src/.vuepress/public/logo.png delete mode 100644 src/.vuepress/public/logo.svg delete mode 100644 src/.vuepress/sidebar.ts delete mode 100644 src/.vuepress/styles/config.scss delete mode 100644 src/.vuepress/styles/index.scss delete mode 100644 src/.vuepress/styles/palette.scss delete mode 100644 src/.vuepress/theme.ts delete mode 100644 src/README.md delete mode 100644 src/posts/command.md delete mode 100644 src/posts/config/README.md delete mode 100644 src/posts/deploy/platforms/nakuru.md delete mode 100644 src/posts/metadata/README.md delete mode 100644 src/posts/metadata/sensitive-words.md delete mode 100644 src/posts/tob/contact.md diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml deleted file mode 100644 index 9ccb4a96f..000000000 --- a/.github/workflows/build-docker-image.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: 构建文档Docker镜像 - -on: - # push: - # branches: - # - main - workflow_dispatch: - -permissions: - contents: write - -jobs: - build-docker-image: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: 设置 Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: 安装 pnpm - run: | - npm install -g pnpm - - - name: 安装依赖 - run: - pnpm install - - - name: 构建文档 - env: - NODE_OPTIONS: --max_old_space_size=8192 - run: | - pnpm run docs:build - ls -R - - - name: Build image - run: | - docker build -t ${{ secrets.DOCKER_ACCOUNT }}/qchatgpt-wiki:latest . - - name: Publish image - run: | - docker login -u ${{ secrets.DOCKER_ACCOUNT }} -p ${{ secrets.DOCKER_PWD}} - docker push ${{ secrets.DOCKER_ACCOUNT }}/qchatgpt-wiki:latest diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml deleted file mode 100644 index 63ebec95c..000000000 --- a/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: 部署文档 - -on: - workflow_dispatch: - -permissions: - contents: write - -jobs: - deploy-docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: 设置 Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: 安装 pnpm - run: | - npm install -g pnpm - - - name: 安装依赖 - run: - pnpm install - - - name: 构建文档 - env: - NODE_OPTIONS: --max_old_space_size=8192 - run: |- - pnpm run docs:build - - - name: 部署文档 - uses: cross-the-world/scp-pipeline@master - env: - WELCOME: "ssh scp ssh pipelines" - LASTSSH: "Doing something after copying" - with: - host: ${{ secrets.ALI_SERVER_HOST }} - user: ${{ secrets.ALI_SERVER_NAME }} - pass: ${{ secrets.ALI_SERVER_PASSWD }} - connect_timeout: 100s - local: './src/.vuepress/dist/*' - remote: ${{ secrets.ALI_TARGET_v3 }} diff --git a/.gitignore b/.gitignore index 411fb0d34..10deb8bdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ - -node_modules/ -src/.vuepress/.cache/ -src/.vuepress/.temp/ -src/.vuepress/dist/ +node_modules/ +docs/.vitepress/cache/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c22a37ee4..000000000 --- a/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM nginx:alpine - -COPY ./src/.vuepress/dist/ /usr/share/nginx/html/ -COPY ./nginx/nginx.conf /etc/nginx/nginx.conf -COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf - -EXPOSE 80 \ No newline at end of file diff --git a/README.md b/README.md index 87da977d6..f094199cf 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,53 @@ -# [QChatGPT](https://github.com/RockChinQ/QChatGPT) 官方文档 - -> 此分支是 QChatGPT 3.x 的文档 -> [QChatGPT 代码仓库](https://github.com/RockChinQ/QChatGPT) - -## 参与编写 - -文档基于 VuePress 生成,本地编写需要安装 Node 和 VuePress - -### NodeJS - -自行安装 - -### VuePress - -Clone 本仓库,在目录下执行以下命令安装依赖: - -```bash -pnpm install -``` - -完成后即可修改文档,修改完后使用以下命令本地启动: - -```bash -pnpm docs:dev -``` - -### 使用图片 - -把图片放到 `src/.vuepress/public/assets/image` 目录下,然后在文档中使用Web访问时的绝对路径引用,如: - -```markdown -![image](/assets/image/xxx.png) -``` - -### 部署细节 - -现在使用 Cloudflare Pages 托管,提交后自动部署。 - -### 推荐环境 - -推荐使用 GitHub Codespaces 编写,仓库页面点击 "Code" -> "Codespaces" -> 直接创建一个 Codespace -在其中按照上述方式安装依赖并运行调试。 - -> 若出现`Error: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29`的报错,请按照如下文章内容解决: -> https://zhuanlan.zhihu.com/p/615111375 - -### 一些规范化标准 - -- 文件夹和文件的命名:**一律使用全小写,单词直接`-`隔开,如**`config-intro.md` -- 子文件(夹)的命名,**不加前缀**(即文件夹的名称),如:`plugin`文件夹下的,插件列表(文件)称之为`list.md`,文件夹`some-plugin-deploy` -- 由于这是有关于文档的规范化命名,所以任何文件的名称都可以以教程的角度来理解,如`plugin`是有关插件的教程 - +# [QChatGPT](https://github.com/RockChinQ/QChatGPT) 官方文档 + +> 此分支是 QChatGPT 3.x 的文档 +> [QChatGPT 代码仓库](https://github.com/RockChinQ/QChatGPT) + +## 参与编写 + +文档基于 VitePress 生成,本地编写需要安装 Node 和 VitePress + +### NodeJS + +自行安装 + +### VitePress + +Clone 本仓库,在目录下执行以下命令安装依赖: + +```bash +npm install +``` + +完成后即可修改文档,修改完后使用以下命令本地启动: + +```bash +npm docs:dev +``` + +### 使用图片 + +把图片放到 `docs/assets/image` 目录下,然后在文档中使用Web访问时的绝对路径引用,如: + +```markdown +![image](/assets/image/xxx.png) +``` + +### 部署细节 + +现在使用 Cloudflare Pages 托管,提交后自动部署。 + +### 推荐环境 + +推荐使用 GitHub Codespaces 编写,仓库页面点击 "Code" -> "Codespaces" -> 直接创建一个 Codespace +在其中按照上述方式安装依赖并运行调试。 + +> 若出现`Error: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29`的报错,请按照如下文章内容解决: +> https://zhuanlan.zhihu.com/p/615111375 + +### 一些规范化标准 + +- 文件夹和文件的命名:**一律使用全小写,单词直接`-`隔开,如**`plugin-intro.md` +- 子文件(夹)的命名,**不加前缀**(即文件夹的名称),如:`deploy`文件夹下的,文件夹`qchatgpt`,`qchatgpt`文件夹下的`manual`文件称之为`manual.md` +- 由于这是有关于文档的规范化命名,所以任何文件的名称都可以以教程的角度来理解,如`deploy`是有关部署的教程 + diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 000000000..8d1c50714 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,165 @@ +import { defineConfig } from "vitepress"; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "QChatGPT 文档", + description: + "😎高稳定性、🧩支持扩展、🦄多模态的 ChatGPT QQ / QQ频道 / One Bot 机器人🤖 | 支持 OpenAI GPT、GPT 4o、Claude、Gemini Pro、DeepSeek、Moonshot(Kimi)、gpt4free、One API、Ollama 的 QQ / QQ频道 / OneBot 机器人 / Agent 平台", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + logo: "/assets/icon/chrome-192.png", + + nav: [ + { text: "首页", link: "/" }, + { text: "概述", link: "/insight/intro" }, + { text: "部署", link: "/deploy/" }, + ], + + sidebar: [ + { + text: "概述", + items: [ + { text: "项目介绍", link: "/insight/intro" }, + { text: "新手指引", link: "/insight/guide" }, + ], + }, + { + text: "部署", + link: "/deploy/", + items: [ + { + text: "部署 QChatGPT", + collapsed: true, + items: [ + { text: "手动部署", link: "/deploy/qchatgpt/manual" }, + { text: "Dokcer部署", link: "/deploy/qchatgpt/docker" }, + ], + }, + { + text: "部署消息平台", + collapsed: true, + link: "/deploy/platforms/", + items: [ + { + text: "aiocqhttp(推荐)", + collapsed: true, + link: "/deploy/platforms/aiocqhttp/", + items: [ + { + text: "Lagrange", + link: "/deploy/platforms/aiocqhttp/lagrange", + }, + { + text: "NapCat", + link: "/deploy/platforms/aiocqhttp/napcat", + }, + { + text: "llonebot", + link: "/deploy/platforms/aiocqhttp/llonebot", + }, + { + text: "shamrock", + link: "/deploy/platforms/aiocqhttp/shamrock", + }, + ], + }, + { + text: "mirai", + link: "/deploy/platforms/mirai", + }, + { + text: "go-cqhttp", + link: "/deploy/platforms/gocq", + }, + { + text: "QQ官方", + link: "/deploy/platforms/official", + }, + ], + }, + { text: "填写配置信息", link: "/deploy/quick-config/config" }, + ], + }, + { + text: "使用", + items: [ + { text: "命令用法", link: "/usage/command" }, + { text: "插件列表", link: "/usage/plugin-list" }, + { text: "常见问题", link: "/usage/faq" }, + ], + }, + { + text: "配置", + items: [ + { + text: "功能配置", + collapsed: true, + items: [ + { text: "platform.json", link: "/config/function/platform" }, + { text: "pipeline.json", link: "/config/function/pipeline" }, + { text: "provider.json", link: "/config/function/provider" }, + { text: "command.json", link: "/config/function/command" }, + { text: "system.json", link: "/config/function/system" }, + ], + }, + { + text: "元数据配置", + collapsed: true, + items: [ + { + text: "敏感词sensitive-words.json", + link: "/config/metadata/adapter-qq-botpy", + }, + { + text: "模型列表llm-models.json", + link: "/config/metadata/llm-models", + }, + { + text: "qq-botpy ID 映射 adapter-qq-botpy.json", + link: "/config/metadata/sensitive-words", + }, + ], + }, + ], + }, + { + text: "开发", + collapsed: true, + items: [ + { text: "技术信息", link: "/develop/tech-info" }, + { text: "插件介绍", link: "/develop/plugin-intro" }, + { text: "插件开发", link: "/develop/plugin-dev" }, + { text: "组件拓展", link: "/develop/extension" }, + { text: "API参考", link: "/develop/api-ref" }, + ], + }, + { + text: "规模化和商用", + collapsed: true, + link: "/tob/", + items: [ + { text: "消息平台误导性", link: "/tob/platform" }, + { text: "AI内容合规性", link: "/tob/provider" }, + { text: "咨询方式", link: "/tob/contact" }, + ], + }, + ], + + // 编辑链接 + editLink: { + pattern: "https://github.com/vuejs/vitepress/edit/main/docs/:path", + }, + + // 本地搜索 + search: { + provider: 'local' + }, + + // 导航栏的社交图标 + socialLinks: [ + { icon: "github", link: "https://github.com/the-lazy-me/QChatGPT-Wiki" }, + ], + }, + // 最后更新时间 + lastUpdated: true, +}); diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css new file mode 100644 index 000000000..fa23cbf5f --- /dev/null +++ b/docs/.vitepress/theme/custom.css @@ -0,0 +1,6 @@ +/* .vitepress/theme/custom.css */ +:root { + /* 自定义主页的hero部分的 name 的字体颜色 */ + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff); +} \ No newline at end of file diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 000000000..b3579b9da --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,5 @@ +// .vitepress/theme/index.ts +import DefaultTheme from 'vitepress/theme' +import './custom.css' + +export default DefaultTheme \ No newline at end of file diff --git a/src/.vuepress/public/assets/icon/chrome-192.png b/docs/assets/icon/chrome-192.png similarity index 100% rename from src/.vuepress/public/assets/icon/chrome-192.png rename to docs/assets/icon/chrome-192.png diff --git a/src/.vuepress/public/assets/icon/chrome-512.png b/docs/assets/icon/chrome-512.png similarity index 100% rename from src/.vuepress/public/assets/icon/chrome-512.png rename to docs/assets/icon/chrome-512.png diff --git a/src/.vuepress/public/assets/icon/chrome-mask-192.png b/docs/assets/icon/chrome-mask-192.png similarity index 100% rename from src/.vuepress/public/assets/icon/chrome-mask-192.png rename to docs/assets/icon/chrome-mask-192.png diff --git a/src/.vuepress/public/assets/icon/chrome-mask-512.png b/docs/assets/icon/chrome-mask-512.png similarity index 100% rename from src/.vuepress/public/assets/icon/chrome-mask-512.png rename to docs/assets/icon/chrome-mask-512.png diff --git a/src/.vuepress/public/assets/icon/guide-maskable.png b/docs/assets/icon/guide-maskable.png similarity index 100% rename from src/.vuepress/public/assets/icon/guide-maskable.png rename to docs/assets/icon/guide-maskable.png diff --git a/src/.vuepress/public/assets/icon/ms-icon-144.png b/docs/assets/icon/ms-icon-144.png similarity index 100% rename from src/.vuepress/public/assets/icon/ms-icon-144.png rename to docs/assets/icon/ms-icon-144.png diff --git a/src/.vuepress/public/assets/image/QChatGPT-0516.png b/docs/assets/image/QChatGPT-0516.png similarity index 100% rename from src/.vuepress/public/assets/image/QChatGPT-0516.png rename to docs/assets/image/QChatGPT-0516.png diff --git a/src/.vuepress/public/assets/image/QChatGPT-1211.png b/docs/assets/image/QChatGPT-1211.png similarity index 100% rename from src/.vuepress/public/assets/image/QChatGPT-1211.png rename to docs/assets/image/QChatGPT-1211.png diff --git a/src/.vuepress/public/assets/image/advanced.svg b/docs/assets/image/advanced.svg similarity index 100% rename from src/.vuepress/public/assets/image/advanced.svg rename to docs/assets/image/advanced.svg diff --git a/src/.vuepress/public/assets/image/blog.svg b/docs/assets/image/blog.svg similarity index 100% rename from src/.vuepress/public/assets/image/blog.svg rename to docs/assets/image/blog.svg diff --git a/src/.vuepress/public/assets/image/box.svg b/docs/assets/image/box.svg similarity index 100% rename from src/.vuepress/public/assets/image/box.svg rename to docs/assets/image/box.svg diff --git a/src/.vuepress/public/assets/image/config_lgr.png b/docs/assets/image/config_lgr.png similarity index 100% rename from src/.vuepress/public/assets/image/config_lgr.png rename to docs/assets/image/config_lgr.png diff --git a/src/.vuepress/public/assets/image/dl_gocq.png b/docs/assets/image/dl_gocq.png similarity index 100% rename from src/.vuepress/public/assets/image/dl_gocq.png rename to docs/assets/image/dl_gocq.png diff --git a/src/.vuepress/public/assets/image/dl_lgr_1.png b/docs/assets/image/dl_lgr_1.png similarity index 100% rename from src/.vuepress/public/assets/image/dl_lgr_1.png rename to docs/assets/image/dl_lgr_1.png diff --git a/src/.vuepress/public/assets/image/dl_lgr_2.png b/docs/assets/image/dl_lgr_2.png similarity index 100% rename from src/.vuepress/public/assets/image/dl_lgr_2.png rename to docs/assets/image/dl_lgr_2.png diff --git a/src/.vuepress/public/assets/image/dl_lgr_3.png b/docs/assets/image/dl_lgr_3.png similarity index 100% rename from src/.vuepress/public/assets/image/dl_lgr_3.png rename to docs/assets/image/dl_lgr_3.png diff --git a/src/.vuepress/public/assets/image/error_q2_1.png b/docs/assets/image/error_q2_1.png similarity index 100% rename from src/.vuepress/public/assets/image/error_q2_1.png rename to docs/assets/image/error_q2_1.png diff --git a/src/.vuepress/public/assets/image/error_q2_2.png b/docs/assets/image/error_q2_2.png similarity index 100% rename from src/.vuepress/public/assets/image/error_q2_2.png rename to docs/assets/image/error_q2_2.png diff --git a/src/.vuepress/public/assets/image/error_q3.png b/docs/assets/image/error_q3.png similarity index 100% rename from src/.vuepress/public/assets/image/error_q3.png rename to docs/assets/image/error_q3.png diff --git a/src/.vuepress/public/assets/image/error_q4.png b/docs/assets/image/error_q4.png similarity index 100% rename from src/.vuepress/public/assets/image/error_q4.png rename to docs/assets/image/error_q4.png diff --git a/src/.vuepress/public/assets/image/error_q5.png b/docs/assets/image/error_q5.png similarity index 100% rename from src/.vuepress/public/assets/image/error_q5.png rename to docs/assets/image/error_q5.png diff --git a/src/.vuepress/public/assets/image/features.svg b/docs/assets/image/features.svg similarity index 100% rename from src/.vuepress/public/assets/image/features.svg rename to docs/assets/image/features.svg diff --git a/src/.vuepress/public/assets/image/first_launch.png b/docs/assets/image/first_launch.png similarity index 100% rename from src/.vuepress/public/assets/image/first_launch.png rename to docs/assets/image/first_launch.png diff --git a/src/.vuepress/public/assets/image/get_captcha.png b/docs/assets/image/get_captcha.png similarity index 100% rename from src/.vuepress/public/assets/image/get_captcha.png rename to docs/assets/image/get_captcha.png diff --git a/src/.vuepress/public/assets/image/get_gocq_login_token.png b/docs/assets/image/get_gocq_login_token.png similarity index 100% rename from src/.vuepress/public/assets/image/get_gocq_login_token.png rename to docs/assets/image/get_gocq_login_token.png diff --git a/src/.vuepress/public/assets/image/github-dark.svg b/docs/assets/image/github-dark.svg similarity index 100% rename from src/.vuepress/public/assets/image/github-dark.svg rename to docs/assets/image/github-dark.svg diff --git a/src/.vuepress/public/assets/image/github-light.svg b/docs/assets/image/github-light.svg similarity index 100% rename from src/.vuepress/public/assets/image/github-light.svg rename to docs/assets/image/github-light.svg diff --git a/src/.vuepress/public/assets/image/group_chat.png b/docs/assets/image/group_chat.png similarity index 100% rename from src/.vuepress/public/assets/image/group_chat.png rename to docs/assets/image/group_chat.png diff --git a/src/.vuepress/public/assets/image/layout.svg b/docs/assets/image/layout.svg similarity index 100% rename from src/.vuepress/public/assets/image/layout.svg rename to docs/assets/image/layout.svg diff --git a/src/.vuepress/public/assets/image/llob_cfg.png b/docs/assets/image/llob_cfg.png similarity index 100% rename from src/.vuepress/public/assets/image/llob_cfg.png rename to docs/assets/image/llob_cfg.png diff --git a/src/.vuepress/public/assets/image/mah_dl_1.png b/docs/assets/image/mah_dl_1.png similarity index 100% rename from src/.vuepress/public/assets/image/mah_dl_1.png rename to docs/assets/image/mah_dl_1.png diff --git a/src/.vuepress/public/assets/image/mah_dl_2.png b/docs/assets/image/mah_dl_2.png similarity index 100% rename from src/.vuepress/public/assets/image/mah_dl_2.png rename to docs/assets/image/mah_dl_2.png diff --git a/src/.vuepress/public/assets/image/mah_dl_3.png b/docs/assets/image/mah_dl_3.png similarity index 100% rename from src/.vuepress/public/assets/image/mah_dl_3.png rename to docs/assets/image/mah_dl_3.png diff --git a/src/.vuepress/public/assets/image/mah_dl_4.png b/docs/assets/image/mah_dl_4.png similarity index 100% rename from src/.vuepress/public/assets/image/mah_dl_4.png rename to docs/assets/image/mah_dl_4.png diff --git a/src/.vuepress/public/assets/image/markdown.svg b/docs/assets/image/markdown.svg similarity index 100% rename from src/.vuepress/public/assets/image/markdown.svg rename to docs/assets/image/markdown.svg diff --git a/src/.vuepress/public/assets/image/mirai_dl_1.png b/docs/assets/image/mirai_dl_1.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_dl_1.png rename to docs/assets/image/mirai_dl_1.png diff --git a/src/.vuepress/public/assets/image/mirai_dl_2.png b/docs/assets/image/mirai_dl_2.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_dl_2.png rename to docs/assets/image/mirai_dl_2.png diff --git a/src/.vuepress/public/assets/image/mirai_dl_3.png b/docs/assets/image/mirai_dl_3.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_dl_3.png rename to docs/assets/image/mirai_dl_3.png diff --git a/src/.vuepress/public/assets/image/mirai_dl_4.png b/docs/assets/image/mirai_dl_4.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_dl_4.png rename to docs/assets/image/mirai_dl_4.png diff --git a/src/.vuepress/public/assets/image/mirai_dl_5.png b/docs/assets/image/mirai_dl_5.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_dl_5.png rename to docs/assets/image/mirai_dl_5.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_1.png b/docs/assets/image/mirai_sign_1.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_1.png rename to docs/assets/image/mirai_sign_1.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_2.png b/docs/assets/image/mirai_sign_2.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_2.png rename to docs/assets/image/mirai_sign_2.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_3.png b/docs/assets/image/mirai_sign_3.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_3.png rename to docs/assets/image/mirai_sign_3.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_4.png b/docs/assets/image/mirai_sign_4.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_4.png rename to docs/assets/image/mirai_sign_4.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_5.png b/docs/assets/image/mirai_sign_5.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_5.png rename to docs/assets/image/mirai_sign_5.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_6.png b/docs/assets/image/mirai_sign_6.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_6.png rename to docs/assets/image/mirai_sign_6.png diff --git a/src/.vuepress/public/assets/image/mirai_sign_7.png b/docs/assets/image/mirai_sign_7.png similarity index 100% rename from src/.vuepress/public/assets/image/mirai_sign_7.png rename to docs/assets/image/mirai_sign_7.png diff --git a/src/.vuepress/public/assets/image/napcat_cfg_1.png b/docs/assets/image/napcat_cfg_1.png similarity index 100% rename from src/.vuepress/public/assets/image/napcat_cfg_1.png rename to docs/assets/image/napcat_cfg_1.png diff --git a/src/.vuepress/public/assets/image/napcat_cfg_2.png b/docs/assets/image/napcat_cfg_2.png similarity index 100% rename from src/.vuepress/public/assets/image/napcat_cfg_2.png rename to docs/assets/image/napcat_cfg_2.png diff --git a/src/.vuepress/public/assets/image/napcat_cfg_3.png b/docs/assets/image/napcat_cfg_3.png similarity index 100% rename from src/.vuepress/public/assets/image/napcat_cfg_3.png rename to docs/assets/image/napcat_cfg_3.png diff --git a/src/.vuepress/public/assets/image/paste_token.png b/docs/assets/image/paste_token.png similarity index 100% rename from src/.vuepress/public/assets/image/paste_token.png rename to docs/assets/image/paste_token.png diff --git a/src/.vuepress/public/assets/image/private_chat.png b/docs/assets/image/private_chat.png similarity index 100% rename from src/.vuepress/public/assets/image/private_chat.png rename to docs/assets/image/private_chat.png diff --git a/src/.vuepress/public/assets/image/python_1.png b/docs/assets/image/python_1.png similarity index 100% rename from src/.vuepress/public/assets/image/python_1.png rename to docs/assets/image/python_1.png diff --git a/src/.vuepress/public/assets/image/python_2.png b/docs/assets/image/python_2.png similarity index 100% rename from src/.vuepress/public/assets/image/python_2.png rename to docs/assets/image/python_2.png diff --git a/src/.vuepress/public/assets/image/python_3.png b/docs/assets/image/python_3.png similarity index 100% rename from src/.vuepress/public/assets/image/python_3.png rename to docs/assets/image/python_3.png diff --git a/src/.vuepress/public/assets/image/run_mirai_1.png b/docs/assets/image/run_mirai_1.png similarity index 100% rename from src/.vuepress/public/assets/image/run_mirai_1.png rename to docs/assets/image/run_mirai_1.png diff --git a/src/.vuepress/public/assets/image/sham_cfg_1.png b/docs/assets/image/sham_cfg_1.png similarity index 100% rename from src/.vuepress/public/assets/image/sham_cfg_1.png rename to docs/assets/image/sham_cfg_1.png diff --git a/src/.vuepress/public/assets/image/sham_cfg_2.png b/docs/assets/image/sham_cfg_2.png similarity index 100% rename from src/.vuepress/public/assets/image/sham_cfg_2.png rename to docs/assets/image/sham_cfg_2.png diff --git a/src/.vuepress/public/assets/image/sham_cfg_3.png b/docs/assets/image/sham_cfg_3.png similarity index 100% rename from src/.vuepress/public/assets/image/sham_cfg_3.png rename to docs/assets/image/sham_cfg_3.png diff --git a/src/.vuepress/public/assets/image/sham_env_1.png b/docs/assets/image/sham_env_1.png similarity index 100% rename from src/.vuepress/public/assets/image/sham_env_1.png rename to docs/assets/image/sham_env_1.png diff --git a/src/.vuepress/public/assets/image/sham_env_2.png b/docs/assets/image/sham_env_2.png similarity index 100% rename from src/.vuepress/public/assets/image/sham_env_2.png rename to docs/assets/image/sham_env_2.png diff --git a/src/posts/config/command.md b/docs/config/function/command.md similarity index 83% rename from src/posts/config/command.md rename to docs/config/function/command.md index 029e4962d..a08b2af3c 100644 --- a/src/posts/config/command.md +++ b/docs/config/function/command.md @@ -1,54 +1,42 @@ ---- -head: - - - meta - - name: keywords - content: command.json 配置文件 -title: command.json 配置项 -icon: config -order: 4 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - -:::info 目录 -[[toc]] -::: - -`data/config/command.json` 中配置命令相关的配置项。 - -## 命令权限 privilege - -设置每个命令的权限配置 - -普通用户权限级别为 1,管理员(`system.json`中设置的)权限级别为 2。 - -在这里设置每个命令的最低权限级别,若设置为1,则用户和管理员均可用,若为2,则仅管理员可用 - - 需要设置子命令,以点号间隔,如`"plugin.on"` 示例: - -```json -{ - "plugin": 1, - "plugin.on": 2 -} -``` - - 意思是 plugin 命令的最低权限级别为 1,plugin.on 命令的最低权限级别为 2。 每个命令都有默认的权限级别 - -若不设置,则使用默认的级别。在`pkg/command/operators`里每个命令类有默认的权限级别 - -## 命令前缀 command-prefix - -设置命令前缀。以数组形式设置,程序将前缀符合设置的消息视为命令(群内需要符合群响应规则)。 - -如下示例将设置命令前缀为`!`、`!`、`#`: - -```json -"command-prefix": [ - "!", - "!", - "#" -] +# command.json 配置项 + +:::info 目录 +[[toc]] +::: + +`data/config/command.json` 中配置命令相关的配置项。 + +## 命令权限 privilege + +设置每个命令的权限配置 + +普通用户权限级别为 1,管理员(`system.json`中设置的)权限级别为 2。 + +在这里设置每个命令的最低权限级别,若设置为1,则用户和管理员均可用,若为2,则仅管理员可用 + + 需要设置子命令,以点号间隔,如`"plugin.on"` 示例: + +```json +{ + "plugin": 1, + "plugin.on": 2 +} +``` + + 意思是 plugin 命令的最低权限级别为 1,plugin.on 命令的最低权限级别为 2。 每个命令都有默认的权限级别 + +若不设置,则使用默认的级别。在`pkg/command/operators`里每个命令类有默认的权限级别 + +## 命令前缀 command-prefix + +设置命令前缀。以数组形式设置,程序将前缀符合设置的消息视为命令(群内需要符合群响应规则)。 + +如下示例将设置命令前缀为`!`、`!`、`#`: + +```json +"command-prefix": [ + "!", + "!", + "#" +] ``` \ No newline at end of file diff --git a/src/posts/config/pipeline.md b/docs/config/function/pipeline.md similarity index 95% rename from src/posts/config/pipeline.md rename to docs/config/function/pipeline.md index 529dc75ee..aca508077 100644 --- a/src/posts/config/pipeline.md +++ b/docs/config/function/pipeline.md @@ -1,211 +1,199 @@ ---- -head: - - - meta - - name: keywords - content: pipeline.json 配置文件 -title: pipeline.json 配置项 -icon: config -order: 2 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - -:::info 目录 -[[toc]] -::: - -`data/config/pipeline.json` 配置程序处理一个请求的过程中的操作流程,平台适配器获取到消息事件之后,发送给pipeline排队进行处理。可以设置黑白名单、群响应规则、是否检查传入消息、传入消息忽略规则、是否检查敏感词、百度云内容审核配置、传入消息长度设置、限速配置等功能。 - - -## 访问控制 access-control - -```json -"access-control":{ - "mode": "blacklist", - "blacklist": [], - "whitelist": [] -}, -``` - -`mode`:设置模式白名单 `whitelist`(仅处理`whitelist`列表中的会话的消息)或黑名单 `blacklist`(忽略`blacklist`列表中的会话的消息) - -`blacklist`:格式`{type}_{id}`,示例:`"blacklist": ["group_12345678","person_12341234"],` - -`whitelist`:格式`{type}_{id}`,示例:`"whitelist": ["group_12345678","person_12341234"]` - - -## 群消息响应规则 respond-rules - -仅处理`access-control`通过的会话的消息,其中可含有多个key,若要对特定群设置响应规则,则以群号作为键。未特指的群,将使用 default 中的响应规则 - -```json -"respond-rules": { - "default": { - "at": true, - "prefix": [ - "/ai", "!ai", "!ai", "ai" - ], - "regexp": [], - "random": 0.0 - } -}, -``` - -`at`:`true`或`false`,设置@响应 - -`prefix`:设置响应前缀 - -`regexp`:正则匹配 - -`random`:随机匹配,为1时所有消息都响应 - -你可以为单个群聊设置特定的响应规则,例如 - -```json -"respond-rules": { - "default": { - "at": true, - "prefix": [ - "/ai", "!ai", "!ai", "ai" - ], - "regexp": [], - "random": 0.0 - }, - "123456":{ - "at": true, - "prefix": [ - "/ai", "!ai", "!ai", "ai" - ], - "regexp": [], - "random": 0.0 - }, - "789012":{ - "at": true, - "prefix": [ - "/ai", "!ai", "!ai", "ai" - ], - "regexp": [], - "random": 0.0 - } -}, -``` - -## 检查传入消息内容开关 income-msg-check - -```json -"income-msg-check": true, -``` - -`income-msg-check`:是否检查传入的消息 - -## 传入消息忽略规则 ignore-rules - -```json -"ignore-rules": { - "prefix": ["/"], - "regexp": [] -}, -``` - -符合规则的传入消息将被忽略,仅`income-msg-check`为`true`时生效 - -`prefix`:前缀为`/`的忽略 - -`regexp`:正则匹配的忽略 - -## 本地敏感词检查 check-sensitive-words - -```json -"check-sensitive-words": true, -``` - -`check-sensitive-words`:是否检查敏感词,敏感词词库为`data/config/sensitive-words.json`里面的 - -## 百度云内容审核配置 baidu-cloud-examine - -```json -"baidu-cloud-examine": { - "enable": false, - "api-key": "", - "api-secret": "" -}, -``` - -`baidu-cloud-examine`:控制是否使用是否进行百度云内容审核 - -`enable`:enable=true时启用,一定会检查AI响应结果,仅`income-msg-check`为true时检查传入消息 - -`api-key`:百度AI开放平台的`API_KEY` - -`api-secret`:百度AI开放平台的`SECRET_KEY` - -*`API_KEY`与`SECRET_KEY`是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的**应用列表**中查看* - -## 请求限速规则 rate-limit - -```json -"rate-limit": { - "strategy": "drop", - "algo": "fixwin", - "fixwin": { - "default": { - "window-size": 60, - "limit": 60 - } - } -} -``` - -`strategy`:会话中的请求速率超过限制时的处理策略,`drop`为丢弃新请求,`wait`为等待请求速率降到限制以下 - -`algo`: 使用的算法,目前仅支持 `fixwin` (固定窗口),即窗口期内最多处理多少个请求,可自行实现其他限速算法,具体查看插件编写教程 - -`fixwin`:具体速率设置,设定的窗口期内最多处理多少个请求,支持对特定session指定限速,格式为 {type}_{id},示例:group_12345678,person_12341234 - -`window-size`:窗口期大小,单位秒 - -`limit`:窗口期内最多处理多少个请求 - -例如: - -```json -"fixwin": { - "default": { - "window-size": 60, - "limit": 60 - }, - "group_12345678": { - "window-size": 30, - "limit": 60 - }, - "person_12341234": { - "window-size": 60, - "limit": 60 - } -} -``` - -将设定: - -- 默认群窗口期60秒内最多处理60个请求 -- 群号为12345678的窗口期30秒内最多处理60个请求 -- 用户号为12341234的窗口期60秒内最多处理60个请求 - -## 对话历史记录截断 msg-truncate - -将在发送消息给模型之前对当前会话的历史消息进行截断,以限制传给模型的消息长度 - -```json -"msg-truncate": { - "method": "round", - "round": { - "max-round": 10 - } -} -``` - -`method`:截断方法,`round`为按回合截断,目前仅支持`round`,可自行实现其他截断方法,具体查看插件编写教程 - -`round`:按回合截断,`max-round`为最多保留多少回合的历史消息 +# pipeline.json 配置项 + +:::info 目录 +[[toc]] +::: + +`data/config/pipeline.json` 配置程序处理一个请求的过程中的操作流程,平台适配器获取到消息事件之后,发送给pipeline排队进行处理。可以设置黑白名单、群响应规则、是否检查传入消息、传入消息忽略规则、是否检查敏感词、百度云内容审核配置、传入消息长度设置、限速配置等功能。 + + +## 访问控制 access-control + +```json +"access-control":{ + "mode": "blacklist", + "blacklist": [], + "whitelist": [] +}, +``` + +`mode`:设置模式白名单 `whitelist`(仅处理`whitelist`列表中的会话的消息)或黑名单 `blacklist`(忽略`blacklist`列表中的会话的消息) + +`blacklist`:格式`{type}_{id}`,示例:`"blacklist": ["group_12345678","person_12341234"],` + +`whitelist`:格式`{type}_{id}`,示例:`"whitelist": ["group_12345678","person_12341234"]` + + +## 群消息响应规则 respond-rules + +仅处理`access-control`通过的会话的消息,其中可含有多个key,若要对特定群设置响应规则,则以群号作为键。未特指的群,将使用 default 中的响应规则 + +```json +"respond-rules": { + "default": { + "at": true, + "prefix": [ + "/ai", "!ai", "!ai", "ai" + ], + "regexp": [], + "random": 0.0 + } +}, +``` + +`at`:`true`或`false`,设置@响应 + +`prefix`:设置响应前缀 + +`regexp`:正则匹配 + +`random`:随机匹配,为1时所有消息都响应 + +你可以为单个群聊设置特定的响应规则,例如 + +```json +"respond-rules": { + "default": { + "at": true, + "prefix": [ + "/ai", "!ai", "!ai", "ai" + ], + "regexp": [], + "random": 0.0 + }, + "123456":{ + "at": true, + "prefix": [ + "/ai", "!ai", "!ai", "ai" + ], + "regexp": [], + "random": 0.0 + }, + "789012":{ + "at": true, + "prefix": [ + "/ai", "!ai", "!ai", "ai" + ], + "regexp": [], + "random": 0.0 + } +}, +``` + +## 检查传入消息内容开关 income-msg-check + +```json +"income-msg-check": true, +``` + +`income-msg-check`:是否检查传入的消息 + +## 传入消息忽略规则 ignore-rules + +```json +"ignore-rules": { + "prefix": ["/"], + "regexp": [] +}, +``` + +符合规则的传入消息将被忽略,仅`income-msg-check`为`true`时生效 + +`prefix`:前缀为`/`的忽略 + +`regexp`:正则匹配的忽略 + +## 本地敏感词检查 check-sensitive-words + +```json +"check-sensitive-words": true, +``` + +`check-sensitive-words`:是否检查敏感词,敏感词词库为`data/config/sensitive-words.json`里面的 + +## 百度云内容审核配置 baidu-cloud-examine + +```json +"baidu-cloud-examine": { + "enable": false, + "api-key": "", + "api-secret": "" +}, +``` + +`baidu-cloud-examine`:控制是否使用是否进行百度云内容审核 + +`enable`:enable=true时启用,一定会检查AI响应结果,仅`income-msg-check`为true时检查传入消息 + +`api-key`:百度AI开放平台的`API_KEY` + +`api-secret`:百度AI开放平台的`SECRET_KEY` + +*`API_KEY`与`SECRET_KEY`是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的**应用列表**中查看* + +## 请求限速规则 rate-limit + +```json +"rate-limit": { + "strategy": "drop", + "algo": "fixwin", + "fixwin": { + "default": { + "window-size": 60, + "limit": 60 + } + } +} +``` + +`strategy`:会话中的请求速率超过限制时的处理策略,`drop`为丢弃新请求,`wait`为等待请求速率降到限制以下 + +`algo`: 使用的算法,目前仅支持 `fixwin` (固定窗口),即窗口期内最多处理多少个请求,可自行实现其他限速算法,具体查看插件编写教程 + +`fixwin`:具体速率设置,设定的窗口期内最多处理多少个请求,支持对特定session指定限速,格式为 {type}_{id},示例:group_12345678,person_12341234 + +`window-size`:窗口期大小,单位秒 + +`limit`:窗口期内最多处理多少个请求 + +例如: + +```json +"fixwin": { + "default": { + "window-size": 60, + "limit": 60 + }, + "group_12345678": { + "window-size": 30, + "limit": 60 + }, + "person_12341234": { + "window-size": 60, + "limit": 60 + } +} +``` + +将设定: + +- 默认群窗口期60秒内最多处理60个请求 +- 群号为12345678的窗口期30秒内最多处理60个请求 +- 用户号为12341234的窗口期60秒内最多处理60个请求 + +## 对话历史记录截断 msg-truncate + +将在发送消息给模型之前对当前会话的历史消息进行截断,以限制传给模型的消息长度 + +```json +"msg-truncate": { + "method": "round", + "round": { + "max-round": 10 + } +} +``` + +`method`:截断方法,`round`为按回合截断,目前仅支持`round`,可自行实现其他截断方法,具体查看插件编写教程 + +`round`:按回合截断,`max-round`为最多保留多少回合的历史消息 \ No newline at end of file diff --git a/src/posts/config/platform.md b/docs/config/function/platform.md similarity index 92% rename from src/posts/config/platform.md rename to docs/config/function/platform.md index 4c16ca805..c1587b1fb 100644 --- a/src/posts/config/platform.md +++ b/docs/config/function/platform.md @@ -1,147 +1,134 @@ ---- -head: - - - meta - - name: keywords - content: platform.json 配置文件 -title: platform.json 配置项 -icon: config -order: 1 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - -:::info 目录 -[[toc]] -::: - -`data/config/platform.json` 配置程序连接的消息平台和相关消息处理配置项。启用的消息适配器列表,是否跟踪内容函数调用过程,群内回复时是否引用原消息,群内回复时是否at原用户,强制消息延迟范围,长消息处理策略,是否向用户隐藏AI的异常信息等。 - -## 消息平台适配器 platform-adapters - -```json -"platform-adapters": [ - { - "adapter": "yiri-mirai", - "enable": false, - "host": "127.0.0.1", - "port": 8080, - "verifyKey": "yirimirai", - "qq": 123456789 - }, - { - "adapter": "nakuru", - "enable": false, - "host": "127.0.0.1", - "ws_port": 8080, - "http_port": 5700, - "token": "" - }, - { - "adapter": "aiocqhttp", - "enable": false, - "host": "127.0.0.1", - "port": 8080, - "access-token": "", - }, - { - "adapter": "qq-botpy", - "enable": false, - "appid": "", - "secret": "", - "intents": [ - "public_guild_messages", - "direct_message" - ] - } -], -``` - -目前支持 `mirai`、`go-cqhttp`、`aiocqhttp`、`qq-botpy` 四种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。 -各个适配器的配置方式请查看[部署教程](../deploy/config.html)。 - -### 多开示例 - -```json -"platform-adapters": [ - { - "adapter": "yiri-mirai", - "enable": true, - "host": "127.0.0.1", - "port": 8080, - "verifyKey": "yirimirai", - "qq": 123456789 - }, - { - "adapter": "nakuru", - "enable": true, - "host": "127.0.0.1", - "ws_port": 8081, - "http_port": 5701, - "token": "token" - } -] -``` - -## 跟踪内容函数调用 track-function-calls - -```json -"track-function-calls": true, -``` - -是否跟踪内容函数调用过程,如果开启了,在对话中调用的内容函数记录也会发给用户 - -关闭后(false)仅会发给用户最终结果 - -> 内容函数功能请查看插件功能文档。 - - -## 引用原消息 quote-origin - -```json -"quote-origin": false, -``` - -在群内回复时是否引用原消息 - -## 是否at原用户 at-sender - -```json -"at-sender": false, -``` - -在群内回复时是否at原用户 - -## 强制消息延迟范围 force-delay - -```json -"force-delay": [0, 0], -``` - -在将响应内容发回给用户前的强制消息延迟时间范围,以防风控,单位是秒。 - -## 长消息处理策略 long-text-process - -```json -"long-text-process": { - "threshold": 256, - "strategy": "forward", - "font-path": "" -}, -``` - -`threshold`:阈值,文字长度大于此值的消息会使用长消息处理策略 - -`strategy`:长消息处理策略,目前支持forward(转发消息组件)和image(文字转图片) - -`font-path`: image的渲染字体。未设置时,如果在windows下,会尝试寻找系统的微软雅黑字体,若找不到,则转为forward策略。未设置时,若不是windows系统,则直接转为forward策略。 - -## 向用户隐藏AI接口的异常信息 hide-exception-info - -``` -"hide-exception-info": true -``` - - 是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。 - +# platform.json 配置项 + +:::info 目录 +[[toc]] +::: + +`data/config/platform.json` 配置程序连接的消息平台和相关消息处理配置项。启用的消息适配器列表,是否跟踪内容函数调用过程,群内回复时是否引用原消息,群内回复时是否at原用户,强制消息延迟范围,长消息处理策略,是否向用户隐藏AI的异常信息等。 + +## 消息平台适配器 platform-adapters + +```json +"platform-adapters": [ + { + "adapter": "yiri-mirai", + "enable": false, + "host": "127.0.0.1", + "port": 8080, + "verifyKey": "yirimirai", + "qq": 123456789 + }, + { + "adapter": "nakuru", + "enable": false, + "host": "127.0.0.1", + "ws_port": 8080, + "http_port": 5700, + "token": "" + }, + { + "adapter": "aiocqhttp", + "enable": false, + "host": "127.0.0.1", + "port": 8080, + "access-token": "", + }, + { + "adapter": "qq-botpy", + "enable": false, + "appid": "", + "secret": "", + "intents": [ + "public_guild_messages", + "direct_message" + ] + } +], +``` + +目前支持 `mirai`、`go-cqhttp`、`aiocqhttp`、`qq-botpy` 四种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。 +各个适配器的配置方式请查看[部署教程](../deploy/config.html)。 + +### 多开示例 + +```json +"platform-adapters": [ + { + "adapter": "yiri-mirai", + "enable": true, + "host": "127.0.0.1", + "port": 8080, + "verifyKey": "yirimirai", + "qq": 123456789 + }, + { + "adapter": "nakuru", + "enable": true, + "host": "127.0.0.1", + "ws_port": 8081, + "http_port": 5701, + "token": "token" + } +] +``` + +## 跟踪内容函数调用 track-function-calls + +```json +"track-function-calls": true, +``` + +是否跟踪内容函数调用过程,如果开启了,在对话中调用的内容函数记录也会发给用户 + +关闭后(false)仅会发给用户最终结果 + +> 内容函数功能请查看插件功能文档。 + + +## 引用原消息 quote-origin + +```json +"quote-origin": false, +``` + +在群内回复时是否引用原消息 + +## 是否at原用户 at-sender + +```json +"at-sender": false, +``` + +在群内回复时是否at原用户 + +## 强制消息延迟范围 force-delay + +```json +"force-delay": [0, 0], +``` + +在将响应内容发回给用户前的强制消息延迟时间范围,以防风控,单位是秒。 + +## 长消息处理策略 long-text-process + +```json +"long-text-process": { + "threshold": 256, + "strategy": "forward", + "font-path": "" +}, +``` + +`threshold`:阈值,文字长度大于此值的消息会使用长消息处理策略 + +`strategy`:长消息处理策略,目前支持forward(转发消息组件)和image(文字转图片) + +`font-path`: image的渲染字体。未设置时,如果在windows下,会尝试寻找系统的微软雅黑字体,若找不到,则转为forward策略。未设置时,若不是windows系统,则直接转为forward策略。 + +## 向用户隐藏AI接口的异常信息 hide-exception-info + +``` +"hide-exception-info": true +``` + + 是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。 \ No newline at end of file diff --git a/src/posts/config/provider.md b/docs/config/function/provider.md similarity index 95% rename from src/posts/config/provider.md rename to docs/config/function/provider.md index c61e94c44..a27fe0cc0 100644 --- a/src/posts/config/provider.md +++ b/docs/config/function/provider.md @@ -1,178 +1,165 @@ ---- -head: - - - meta - - name: keywords - content: provider.json 配置文件 -title: provider.json 配置项 -icon: config -order: 3 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - - -:::info 目录 -[[toc]] -::: - -`data/config/provider.json` 中配置AI接口提供商相关的配置项。 - -## 启用聊天功能 enable-chat - -```json -"enable-chat": true, -``` - -`enable-chat`:是否开启AI聊天功能 - -## 启用 AI 视觉功能 enable-vision - -```json -"enable-vision": true, -``` - -`enable-vision`:是否开启AI视觉功能。需要使用的模型同时支持视觉功能,详情见元数据板块。 - -## 模型接口密钥 keys - -```json -"keys": { - "openai": [ - "sk-1234567890" - ], - "anthropic": [ - "sk-1234567890" - ], - "moonshot": [ - "sk-1234567890" - ], - "deepseek": [ - "sk-1234567890" - ] -}, -``` - -`keys`:设置密钥组,以字典的形式设置若干个密钥组,每个密钥组的键为密钥组名称,值为密钥列表。模型与密钥组的对应关系,请查看元数据板块。 - -目前支持的密钥组: - -- `openai`:OpenAI 的密钥组,如果你没有OpenAI API Key,你可以[在此获取](https://ai.lazyshare.top/) -- `anthropic`:Anthropic 的密钥组 -- `moonshot`:Moonshot(月之暗面 kimi)的密钥组 -- `deepseek`:Deepseek(深度求索)的密钥组 - -## 大模型请求器 requester - -```json -"requester": { - "openai-chat-completions": { - "base-url": "https://api.openai.com/v1", - "args": {}, - "timeout": 120 - }, - "anthropic-messages": { - "base-url": "https://api.anthropic.com", - "args": { - "max_tokens": 1024 - }, - "timeout": 120 - }, - "moonshot-chat-completions": { - "base-url": "https://api.moonshot.cn/v1", - "args": {}, - "timeout": 120 - }, - "deepseek-chat-completions": { - "base-url": "https://api.deepseek.com", - "args": {}, - "timeout": 120 - }, - "ollama-chat": { - "base-url": "http://127.0.0.1:11434", - "args": {}, - "timeout": 600 - } - }, -``` - -`requester`:设置请求器,以字典的形式设置若干个请求器,每个请求器的键为请求器名称,值为请求器配置。模型与请求器的对应关系,请查看元数据板块。实现请求器的方式,请查看插件编写教程。 - -目前支持的请求器有: - -- `openai-chat-completions`:OpenAI 的 ChatCompletion 请求器 -- `anthropic-messages`:Anthropic 请求器(Claude) -- `moonshot-chat-completions`:Moonshot 请求器(月之暗面) -- `deepseek-chat-completions`:Deepseek 请求器(深度求索) -- `ollama-chat`:Ollama 请求器,不需要密钥,直接请求目标地址的 Ollama 服务 - -`base-url`:设置接口地址。 - -`args`:请求时除了model之外的其他参数,以字典的形式设置。 - -`timeout`:设置请求超时时间,以秒为单位,对于耗时较长的模型,建议设置较大值 - -## 使用的模型 model - -```json -"model": "gpt-3.5-turbo", -``` - -`model`:设置要使用的模型名称。通常来说直接填写模型名称即可,但如果要使用原生接口不是 ChatCompletion 但以 ChatCompletion 接口格式接入的模型,请在模型名称前方加一个 `OneAPI/` 前缀以进行区分。 -简单来说可以认为是:现阶段非 OpenAI 的模型接入都需要在模型名称前方加一个 `OneAPI/` 前缀。 - -例如: -1. 通过 OneAPI 等中转服务接入了 OpenAI 的 `gpt-4` 模型,由于 `gpt-4` 也是使用 ChatCompletion 接口格式进行请求,则可以直接填入 `gpt-4`; -2. 通过 OneAPI 等中转服务接入了 Google 的 `gemini-pro` 模型,由于 `gemini-pro` 原生接口格式并非 ChatCompletion,因此需要填入 `OneAPI/gemini-pro`。 - -具体支持的模型列表和各个模型对应的请求器和密钥组,请查看元数据板块 llm-models.json 。 - -## 情景预设(人格) prompt - -```json -"prompt-mode": "normal", -"prompt": { - "default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。" -} -``` - -`prompt-mode`:设置情景预设模式,值为`normal`(单预设模式)和`full-scenario`(完整历史对话模式) - -`normal`时,使用下面的`prompt`,可设置多个 - -```json -"prompt": { - "default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。", - "help": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。" -} -``` - -`normal` 模式也支持读取`data/prompts`目录下的文件内容作为单个 System Prompt,文件名即为`prompt`的名称。 - -在使用中通过`!default set <预设名>`指令将其设为默认(将<预设名>整体替换) - -### full-scenario模式配置方法 - -把完整的历史对话以文件形式添加到`data/scenario/`目录下,参考`data/scenario/default.json` - -```json -{ - "prompt": [ - { - "role": "system", - "content": "You are a helpful assistant. 如果我需要帮助,你要说“输入!help获得帮助”" - }, - { - "role": "assistant", - "content": "好的,我是一个能干的AI助手。 如果你需要帮助,我会说“输入!help获得帮助”" - } - ] -} -``` - -`role` 为消息的角色,可以是`user`(用户)、`assistant`(AI)、`system`(系统) -`content` 为字符串,表示消息内容。 -在使用中通过`!default set <文件名>`指令将其设为默认(将<预设名>整体替换) - -> 社区资源:[人格预设合集1000+(测试版,不确保可用性)](../deploy/README.md#人格预设合集) +# provider.json 配置项 + +:::info 目录 +[[toc]] +::: + +`data/config/provider.json` 中配置AI接口提供商相关的配置项。 + +## 启用聊天功能 enable-chat + +```json +"enable-chat": true, +``` + +`enable-chat`:是否开启AI聊天功能 + +## 启用 AI 视觉功能 enable-vision + +```json +"enable-vision": true, +``` + +`enable-vision`:是否开启AI视觉功能。需要使用的模型同时支持视觉功能,详情见元数据板块。 + +## 模型接口密钥 keys + +```json +"keys": { + "openai": [ + "sk-1234567890" + ], + "anthropic": [ + "sk-1234567890" + ], + "moonshot": [ + "sk-1234567890" + ], + "deepseek": [ + "sk-1234567890" + ] +}, +``` + +`keys`:设置密钥组,以字典的形式设置若干个密钥组,每个密钥组的键为密钥组名称,值为密钥列表。模型与密钥组的对应关系,请查看元数据板块。 + +目前支持的密钥组: + +- `openai`:OpenAI 的密钥组,如果你没有OpenAI API Key,你可以[在此获取](https://ai.lazyshare.top/) +- `anthropic`:Anthropic 的密钥组 +- `moonshot`:Moonshot(月之暗面 kimi)的密钥组 +- `deepseek`:Deepseek(深度求索)的密钥组 + +## 大模型请求器 requester + +```json +"requester": { + "openai-chat-completions": { + "base-url": "https://api.openai.com/v1", + "args": {}, + "timeout": 120 + }, + "anthropic-messages": { + "base-url": "https://api.anthropic.com", + "args": { + "max_tokens": 1024 + }, + "timeout": 120 + }, + "moonshot-chat-completions": { + "base-url": "https://api.moonshot.cn/v1", + "args": {}, + "timeout": 120 + }, + "deepseek-chat-completions": { + "base-url": "https://api.deepseek.com", + "args": {}, + "timeout": 120 + }, + "ollama-chat": { + "base-url": "http://127.0.0.1:11434", + "args": {}, + "timeout": 600 + } + }, +``` + +`requester`:设置请求器,以字典的形式设置若干个请求器,每个请求器的键为请求器名称,值为请求器配置。模型与请求器的对应关系,请查看元数据板块。实现请求器的方式,请查看插件编写教程。 + +目前支持的请求器有: + +- `openai-chat-completions`:OpenAI 的 ChatCompletion 请求器 +- `anthropic-messages`:Anthropic 请求器(Claude) +- `moonshot-chat-completions`:Moonshot 请求器(月之暗面) +- `deepseek-chat-completions`:Deepseek 请求器(深度求索) +- `ollama-chat`:Ollama 请求器,不需要密钥,直接请求目标地址的 Ollama 服务 + +`base-url`:设置接口地址。 + +`args`:请求时除了model之外的其他参数,以字典的形式设置。 + +`timeout`:设置请求超时时间,以秒为单位,对于耗时较长的模型,建议设置较大值 + +## 使用的模型 model + +```json +"model": "gpt-3.5-turbo", +``` + +`model`:设置要使用的模型名称。通常来说直接填写模型名称即可,但如果要使用原生接口不是 ChatCompletion 但以 ChatCompletion 接口格式接入的模型,请在模型名称前方加一个 `OneAPI/` 前缀以进行区分。 +简单来说可以认为是:现阶段非 OpenAI 的模型接入都需要在模型名称前方加一个 `OneAPI/` 前缀。 + +例如: +1. 通过 OneAPI 等中转服务接入了 OpenAI 的 `gpt-4` 模型,由于 `gpt-4` 也是使用 ChatCompletion 接口格式进行请求,则可以直接填入 `gpt-4`; +2. 通过 OneAPI 等中转服务接入了 Google 的 `gemini-pro` 模型,由于 `gemini-pro` 原生接口格式并非 ChatCompletion,因此需要填入 `OneAPI/gemini-pro`。 + +具体支持的模型列表和各个模型对应的请求器和密钥组,请查看元数据板块 llm-models.json 。 + +## 情景预设(人格) prompt + +```json +"prompt-mode": "normal", +"prompt": { + "default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。" +} +``` + +`prompt-mode`:设置情景预设模式,值为`normal`(单预设模式)和`full-scenario`(完整历史对话模式) + +`normal`时,使用下面的`prompt`,可设置多个 + +```json +"prompt": { + "default": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。", + "help": "如果用户之后想获取帮助,请你说”输入!help获取帮助“。" +} +``` + +`normal` 模式也支持读取`data/prompts`目录下的文件内容作为单个 System Prompt,文件名即为`prompt`的名称。 + +在使用中通过`!default set <预设名>`指令将其设为默认(将<预设名>整体替换) + +### full-scenario模式配置方法 + +把完整的历史对话以文件形式添加到`data/scenario/`目录下,参考`data/scenario/default.json` + +```json +{ + "prompt": [ + { + "role": "system", + "content": "You are a helpful assistant. 如果我需要帮助,你要说“输入!help获得帮助”" + }, + { + "role": "assistant", + "content": "好的,我是一个能干的AI助手。 如果你需要帮助,我会说“输入!help获得帮助”" + } + ] +} +``` + +`role` 为消息的角色,可以是`user`(用户)、`assistant`(AI)、`system`(系统) +`content` 为字符串,表示消息内容。 +在使用中通过`!default set <文件名>`指令将其设为默认(将<预设名>整体替换) + +> 社区资源:[人格预设合集1000+(测试版,不确保可用性)](../deploy/README.md#人格预设合集) \ No newline at end of file diff --git a/src/posts/config/system.md b/docs/config/function/system.md similarity index 91% rename from src/posts/config/system.md rename to docs/config/function/system.md index 2875293eb..1fceb30bf 100644 --- a/src/posts/config/system.md +++ b/docs/config/function/system.md @@ -1,103 +1,91 @@ ---- -head: - - - meta - - name: keywords - content: system.json 配置文件 -title: system.json 配置项 -icon: config -order: 6 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - -:::info 目录 -[[toc]] -::: - - - -`data/config/system.json` 中配置系统设置,如管理员、网络代理、是否上报遥测数据供开发者分析、日志等级、会话消息处理并发数、流水线消息处理并发数、帮助消息等 - -## 管理员会话 admin-sessions - -```json -"admin-sessions": [], -``` - -`admin-sessions`:设置管理员会话,格式为 {type}_{id},type 为 "group" 或 "person",如: - -```json -"admin-sessions": ["group_123456789", "person_123456789"], -``` - -## 网络代理 network-proxies - -```json -"network-proxies": { - "http": null, - "https": null -}, -``` - -`network-proxies`:设置网络代理,为正向代理,http和https都要填,例如 - -```json -"network-proxies": { - "http": "http://127.0.0.1:7890", - "https": "http://127.0.0.1:7890" -}, -``` - -正向代理也可以用环境变量设置:http_proxy 和 https_proxy - -## 上报遥测数据 report-usage - -```json -"report-usage": true, -``` - -`report-usage`:是否上报遥测数据供开发者分析,不包含敏感信息 - -## 日志等级 logging-level - -```json -"logging-level": "info", -``` - -`logging-level`:暂时没用,现在只能通过环境变量 DEBUG=true 来设置调试日志输出 - -## 会话消息处理并发数 session-concurrency - -```json -"session-concurrency": { - "default": 1 -}, -``` - -`session-concurrency`:会话消息处理并发数,粒度是每个会话,session格式为 {type}_{id},未指定的session使用 default 配置 - -## 流水线消息处理并发数 pipeline-concurrency - -```json -"pipeline-concurrency": 20, -``` - -`pipeline-concurrency`:流水线消息处理并发数,粒度是整个程序,目前使用 FCFS 算法调度各个请求。 - -## 遥测服务器url qcg-center-url - -QChatGPT 运行期间推送遥测数据的目标地址,默认为官方地址,若您自己部署了[qcg-center](https://github.com/RockChinQ/qcg-center),可以改为你的地址。 - -```json -"qcg-center-url": "https://api.qchatgpt.rockchin.top/api/v2" -``` - -## 帮助消息 help-message - -```json -"help-message": "QChatGPT - 😎高稳定性、🧩支持插件、🦄多模态的 ChatGPT QQ 机器人🤖\n链接:https://q.rkcn.top" -``` - -`help-message`:帮助消息,用户发送 !help 命令时的输出 +# system.json 配置项 + +:::info 目录 +[[toc]] +::: + + + +`data/config/system.json` 中配置系统设置,如管理员、网络代理、是否上报遥测数据供开发者分析、日志等级、会话消息处理并发数、流水线消息处理并发数、帮助消息等 + +## 管理员会话 admin-sessions + +```json +"admin-sessions": [], +``` + +`admin-sessions`:设置管理员会话,格式为 {type}_{id},type 为 "group" 或 "person",如: + +```json +"admin-sessions": ["group_123456789", "person_123456789"], +``` + +## 网络代理 network-proxies + +```json +"network-proxies": { + "http": null, + "https": null +}, +``` + +`network-proxies`:设置网络代理,为正向代理,http和https都要填,例如 + +```json +"network-proxies": { + "http": "http://127.0.0.1:7890", + "https": "http://127.0.0.1:7890" +}, +``` + +正向代理也可以用环境变量设置:http_proxy 和 https_proxy + +## 上报遥测数据 report-usage + +```json +"report-usage": true, +``` + +`report-usage`:是否上报遥测数据供开发者分析,不包含敏感信息 + +## 日志等级 logging-level + +```json +"logging-level": "info", +``` + +`logging-level`:暂时没用,现在只能通过环境变量 DEBUG=true 来设置调试日志输出 + +## 会话消息处理并发数 session-concurrency + +```json +"session-concurrency": { + "default": 1 +}, +``` + +`session-concurrency`:会话消息处理并发数,粒度是每个会话,session格式为 {type}_{id},未指定的session使用 default 配置 + +## 流水线消息处理并发数 pipeline-concurrency + +```json +"pipeline-concurrency": 20, +``` + +`pipeline-concurrency`:流水线消息处理并发数,粒度是整个程序,目前使用 FCFS 算法调度各个请求。 + +## 遥测服务器url qcg-center-url + +QChatGPT 运行期间推送遥测数据的目标地址,默认为官方地址,若您自己部署了[qcg-center](https://github.com/RockChinQ/qcg-center),可以改为你的地址。 + +```json +"qcg-center-url": "https://api.qchatgpt.rockchin.top/api/v2" +``` + +## 帮助消息 help-message + +```json +"help-message": "QChatGPT - 😎高稳定性、🧩支持插件、🦄多模态的 ChatGPT QQ 机器人🤖\n链接:https://q.rkcn.top" +``` + +`help-message`:帮助消息,用户发送 !help 命令时的输出 \ No newline at end of file diff --git a/src/posts/metadata/adapter-qq-botpy.md b/docs/config/metadata/adapter-qq-botpy.md similarity index 73% rename from src/posts/metadata/adapter-qq-botpy.md rename to docs/config/metadata/adapter-qq-botpy.md index 3eb5bf7a6..9d29fa40b 100644 --- a/src/posts/metadata/adapter-qq-botpy.md +++ b/docs/config/metadata/adapter-qq-botpy.md @@ -1,33 +1,21 @@ ---- -head: - - - meta - - name: keywords - content: adapter-qq-botpy.json 元数据 -title: adapter-qq-botpy.json 元数据 -icon: config -order: 3 -author: RockChinQ -date: 2024-03-20 -category: - - 配置文件 ---- - -`data/metadata/adapter-qq-botpy.json`,QQ 官方 API 适配器元数据。官方 API 在使用群聊接口时,群id和成员id为字符串,而 QChatGPT 内部只支持整型 id,为使重启后仍然是相同的对应关系,因此需要保存到一个文件中。 - -## 格式 - -```json -{ - "mapping": { - "groups": { - "15944D6D2B525C6E3536134D4669F067": 443241151434655 - }, - "members": { - "547A6244A731B4BEEBE5EE2AE4CD00A8": 232437565267568 - } - } -} -``` - -- `groups`: 群id映射关系,key为字符串群id,value为整型群id。 -- `members`: 成员id映射关系,key为字符串成员id,value为整型成员id。 +# adapter-qq-botpy.json 元数据 + +`data/metadata/adapter-qq-botpy.json`,QQ 官方 API 适配器元数据。官方 API 在使用群聊接口时,群id和成员id为字符串,而 QChatGPT 内部只支持整型 id,为使重启后仍然是相同的对应关系,因此需要保存到一个文件中。 + +## 格式 + +```json +{ + "mapping": { + "groups": { + "15944D6D2B525C6E3536134D4669F067": 443241151434655 + }, + "members": { + "547A6244A731B4BEEBE5EE2AE4CD00A8": 232437565267568 + } + } +} +``` + +- `groups`: 群id映射关系,key为字符串群id,value为整型群id。 +- `members`: 成员id映射关系,key为字符串成员id,value为整型成员id。 \ No newline at end of file diff --git a/src/posts/metadata/llm-models.md b/docs/config/metadata/llm-models.md similarity index 90% rename from src/posts/metadata/llm-models.md rename to docs/config/metadata/llm-models.md index 7076c4b85..2f347d8f0 100644 --- a/src/posts/metadata/llm-models.md +++ b/docs/config/metadata/llm-models.md @@ -1,64 +1,51 @@ ---- -head: - - - meta - - name: keywords - content: llm-models.json 元数据 -title: llm-models.json 元数据 -icon: config -order: 2 -author: RockChinQ -date: 2024-03-20 -category: - - 配置文件 ---- - -`data/metadata/llm-models.json`,受支持的大语言模型列表,本文件中指定了可用于 `data/config/provider.json` 中的 `model` 列表,指定每个模型对应的 `Key 管理器` 和 `API 请求器`。 - -## 格式 - -```json -{ - "list": [ - { - "name": "default", - "requester": "openai-chat-completions", - "token_mgr": "openai", - "tool_call_supported": false, - "vision_supported": false - }, - { - "name": "gpt-3.5-turbo", - "tool_call_supported": true - }, - { - "name": "gpt-4o", - "tool_call_supported": true, - "vision_supported": true - } - ] -} -``` - -模型均列于`list`数组中,每个模型的字段如下: - -- `name`: 模型名称,用于在 `data/config/provider.json` 中的 `model` 列表中指定。 -- `model_name`: 进行请求时使用的模型名称,用于区分使用不同请求器的相同模型,若未设置则使用 `name` 字段。 -- `requester`: 请求器名称,指定使用哪个请求器请求该模型的响应,不同的请求器对应不同的 API,当前支持的模型,可以在 `data/config/provider.json` 中的 `requester` 列表中找到。 -- `token_mgr`: Key 管理器,此模型使用的 key 组,对应 `data/config/provider.json` 中的 `keys` 列表。 -- `tool_call_supported`: 是否支持工具调用,标记此模型是否支持使用`内容函数`。 -- `vision_supported`: 是否支持图像输入,标记此模型是否支持使用`图像输入`。 - -`default` 模型是必须的,这是模型的默认配置,其他模型可以不设置所有的字段,只需设置 `name` 字段即可,其他字段会继承 `default` 模型的配置。 - -## 自动更新机制 - -每次启动时,程序会自动从中央服务器获取最新的模型列表,已有的的模型名称会被下载的新配置覆盖。 - -## 自定义模型 - -根据上述格式添加即可。 - -- 如果需要使用目前不支持的接口(请求器),需要自己扩展请求器,请参考插件开发文档 -> 组件扩展。 -- key 组可以自己在 `data/config/provider.json` 中的 `keys` 列表中添加。 -- 不建议修改默认的模型配置,因为启动时会被自动更新的信息覆盖。 - +# llm-models.json 元数据 + +`data/metadata/llm-models.json`,受支持的大语言模型列表,本文件中指定了可用于 `data/config/provider.json` 中的 `model` 列表,指定每个模型对应的 `Key 管理器` 和 `API 请求器`。 + +## 格式 + +```json +{ + "list": [ + { + "name": "default", + "requester": "openai-chat-completions", + "token_mgr": "openai", + "tool_call_supported": false, + "vision_supported": false + }, + { + "name": "gpt-3.5-turbo", + "tool_call_supported": true + }, + { + "name": "gpt-4o", + "tool_call_supported": true, + "vision_supported": true + } + ] +} +``` + +模型均列于`list`数组中,每个模型的字段如下: + +- `name`: 模型名称,用于在 `data/config/provider.json` 中的 `model` 列表中指定。 +- `model_name`: 进行请求时使用的模型名称,用于区分使用不同请求器的相同模型,若未设置则使用 `name` 字段。 +- `requester`: 请求器名称,指定使用哪个请求器请求该模型的响应,不同的请求器对应不同的 API,当前支持的模型,可以在 `data/config/provider.json` 中的 `requester` 列表中找到。 +- `token_mgr`: Key 管理器,此模型使用的 key 组,对应 `data/config/provider.json` 中的 `keys` 列表。 +- `tool_call_supported`: 是否支持工具调用,标记此模型是否支持使用`内容函数`。 +- `vision_supported`: 是否支持图像输入,标记此模型是否支持使用`图像输入`。 + +`default` 模型是必须的,这是模型的默认配置,其他模型可以不设置所有的字段,只需设置 `name` 字段即可,其他字段会继承 `default` 模型的配置。 + +## 自动更新机制 + +每次启动时,程序会自动从中央服务器获取最新的模型列表,已有的的模型名称会被下载的新配置覆盖。 + +## 自定义模型 + +根据上述格式添加即可。 + +- 如果需要使用目前不支持的接口(请求器),需要自己扩展请求器,请参考插件开发文档 -> 组件扩展。 +- key 组可以自己在 `data/config/provider.json` 中的 `keys` 列表中添加。 +- 不建议修改默认的模型配置,因为启动时会被自动更新的信息覆盖。 \ No newline at end of file diff --git a/docs/config/metadata/sensitive-words.md b/docs/config/metadata/sensitive-words.md new file mode 100644 index 000000000..91cb4f1f4 --- /dev/null +++ b/docs/config/metadata/sensitive-words.md @@ -0,0 +1,3 @@ +# sensitive-words.json 元数据 + +本地敏感词词库,参考 `data/metadata/sensitive-words.json` 内容进行修改即可。 \ No newline at end of file diff --git a/src/posts/deploy/README.md b/docs/deploy/index.md similarity index 85% rename from src/posts/deploy/README.md rename to docs/deploy/index.md index 8631ad997..5e7aedfd9 100644 --- a/src/posts/deploy/README.md +++ b/docs/deploy/index.md @@ -1,48 +1,38 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 部署教程 -icon: blog -author: Lazy -date: 2024-02-18 -index: false ---- - -## 部署教程 - -请按照以下步骤部署 QChatGPT 项目: - -- 第一步: [部署QChatGPT](qchatgpt/) -- 第二步: [部署消息平台](platforms/) -- 第三步: [填写配置信息](config.md) - -完成以上三个步骤后,你接下来应该仔细阅读左栏中的[配置详解](../config/README.md)和[元数据配置](../metadata/README.md),实现更多样化的配置需求 - -## 社区资源 - -### 视频教程 - - [【8月最新】5min部署 最强AI语音聊天+酒馆角色扮演+QQ机器人,全新角色扮演语音聊天QQ机器人](https://www.bilibili.com/video/BV1vypZeBEW1/?share_source=copy_web&vd_source=1335a044d4fd926920999a0e3ba0a731) - - -## 本项目交流 QQ 群 - -### 社区群 - -> 遇到问题请先认真阅读文档,如无法解决再加群提问 - -Lazy的交流群一:891448839(已满) - -Lazy的交流群二:738382634(已满) - -Lazy的交流群三:248432104(已满) - -Lazy的交流群四:619154800 ([链接](https://qm.qq.com/q/1K9GjQuza)) - -### 官方群 - -> 官方群不解答部署问题 - -四群:195992197 [链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=cSekvWmyezfCE4O8gXS7lSjkmPinjzpP&authKey=G4jHfz2%2BtQawxCRhn1ZRrQiI8bTvlepQubZL6F9fymFuz8jqZZ4FkYh6lhKLMCd9&noverify=0&group_code=195992197) +# 部署教程 + +## 部署教程 + +请按照以下步骤部署 QChatGPT 项目: + +- 第一步: [部署QChatGPT](qchatgpt/) +- 第二步: [部署消息平台](platforms/) +- 第三步: [填写配置信息](config.md) + +完成以上三个步骤后,你接下来应该仔细阅读左栏中的[配置详解](../config/README.md)和[元数据配置](../metadata/README.md),实现更多样化的配置需求 + +## 社区资源 + +### 视频教程 + + [【8月最新】5min部署 最强AI语音聊天+酒馆角色扮演+QQ机器人,全新角色扮演语音聊天QQ机器人](https://www.bilibili.com/video/BV1vypZeBEW1/?share_source=copy_web&vd_source=1335a044d4fd926920999a0e3ba0a731) + + +## 本项目交流 QQ 群 + +### 社区群 + +> 遇到问题请先认真阅读文档,如无法解决再加群提问 + +Lazy的交流群一:891448839(已满) + +Lazy的交流群二:738382634(已满) + +Lazy的交流群三:248432104(已满) + +Lazy的交流群四:619154800 ([链接](https://qm.qq.com/q/1K9GjQuza)) + +### 官方群 + +> 官方群不解答部署问题 + +四群:195992197 [链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=cSekvWmyezfCE4O8gXS7lSjkmPinjzpP&authKey=G4jHfz2%2BtQawxCRhn1ZRrQiI8bTvlepQubZL6F9fymFuz8jqZZ4FkYh6lhKLMCd9&noverify=0&group_code=195992197) \ No newline at end of file diff --git a/src/posts/deploy/platforms/aiocqhttp/README.md b/docs/deploy/platforms/aiocqhttp/index.md similarity index 65% rename from src/posts/deploy/platforms/aiocqhttp/README.md rename to docs/deploy/platforms/aiocqhttp/index.md index 8d873f76a..ac3c1182c 100644 --- a/src/posts/deploy/platforms/aiocqhttp/README.md +++ b/docs/deploy/platforms/aiocqhttp/index.md @@ -1,14 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: Lagrange的部署教程 -title: aiocqhttp适配器系列教程 -icon: mobile -order: 4 -author: RockChinQ,ikun0014 -date: 2024-05-05 ---- +# aiocqhttp适配器系列教程 ## OneBot 11 协议 @@ -30,7 +20,7 @@ OneBot 是用于接入多种消息平台的标准化协议,详细介绍:[htt 当前可用的OneBot 11标准消息平台,你可以选择下方任意 -- [Lagrange.OneBot的教程](lagrange.md) -- [LiteLoaderQQNT的教程](llonebot.md) -- [NapCat的教程](napcat.md) -- [shamrock的教程](shamrock.md) \ No newline at end of file +- [Lagrange.OneBot的教程](./lagrange) +- [NapCat的教程](./napcat) +- [LiteLoaderQQNT的教程](./llonebot) +- [shamrock的教程](./shamrock) \ No newline at end of file diff --git a/src/posts/deploy/platforms/aiocqhttp/lagrange.md b/docs/deploy/platforms/aiocqhttp/lagrange.md similarity index 90% rename from src/posts/deploy/platforms/aiocqhttp/lagrange.md rename to docs/deploy/platforms/aiocqhttp/lagrange.md index ac14cbdd7..60da1ef75 100644 --- a/src/posts/deploy/platforms/aiocqhttp/lagrange.md +++ b/docs/deploy/platforms/aiocqhttp/lagrange.md @@ -1,69 +1,59 @@ ---- -head: - - - meta - - name: keywords - content: Lagrange的部署教程 -title: 部署消息平台Lagrange的教程 -icon: support -order: 1 -author: RockChinQ,ikun0014 -date: 2024-05-05 ---- - -## Lagrange介绍 - -Lagrange 是一个 QQNT 协议逆向工程框架,比 Shamrock 或 Mirai 更加轻便,在目前也较为稳定。通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器,填写配置时可参考 Shamrock 的方式。 - -可选平台(需要.NET 8 or 7支持): - -- Mac OS 也可使用 -- Linux Ubuntu 22.04,Debian 12应该都可以 -- Windows 10,11,Server2019及以上 - -> 注意: -> 要使用NT QQ发信息,旧版QQ无法正常使用 - - -## 部署步骤 - -以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/) - -### 环境配置 - -安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer) - -### 从Github Actions下载最新的build - -需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3 - -[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions) - -看图进行下载: - -![图片1](/assets/image/dl_lgr_1.png) - -![图片2](/assets/image/dl_lgr_2.png) - -![图片3](/assets/image/dl_lgr_3.png) - -### 尾声 - -解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入 - -```bash -.\Lagrange.OneBot -``` - -运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。 - -若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。 - -## 修改配置 - -需要配置 Lagrange 以让其连接上 QChatGPT,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容: - -![配置连接](/assets/image/config_lgr.png) - -其中 Type 必须为 `ReverseWebSocket`; -Host 为 QChatGPT 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`; -Suffix 必须为 `/ws` +# 部署消息平台Lagrange的教程 + +## Lagrange介绍 + +Lagrange 是一个 QQNT 协议逆向工程框架,比 Shamrock 或 Mirai 更加轻便,在目前也较为稳定。通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器,填写配置时可参考 Shamrock 的方式。 + +可选平台(需要.NET 8 or 7支持): + +- Mac OS 也可使用 +- Linux Ubuntu 22.04,Debian 12应该都可以 +- Windows 10,11,Server2019及以上 + +> 注意: +> 要使用NT QQ发信息,旧版QQ无法正常使用 + + +## 部署步骤 + +以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/) + +### 环境配置 + +安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer) + +### 从Github Actions下载最新的build + +需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3 + +[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions) + +看图进行下载: + +![图片1](/assets/image/dl_lgr_1.png) + +![图片2](/assets/image/dl_lgr_2.png) + +![图片3](/assets/image/dl_lgr_3.png) + +### 尾声 + +解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入 + +```bash +.\Lagrange.OneBot +``` + +运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。 + +若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。 + +## 修改配置 + +需要配置 Lagrange 以让其连接上 QChatGPT,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容: + +![配置连接](/assets/image/config_lgr.png) + +其中 Type 必须为 `ReverseWebSocket`; +Host 为 QChatGPT 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`; +Suffix 必须为 `/ws` \ No newline at end of file diff --git a/src/posts/deploy/platforms/aiocqhttp/llonebot.md b/docs/deploy/platforms/aiocqhttp/llonebot.md similarity index 50% rename from src/posts/deploy/platforms/aiocqhttp/llonebot.md rename to docs/deploy/platforms/aiocqhttp/llonebot.md index 855d0b06c..4e3f8950c 100644 --- a/src/posts/deploy/platforms/aiocqhttp/llonebot.md +++ b/docs/deploy/platforms/aiocqhttp/llonebot.md @@ -1,19 +1,9 @@ ---- -head: - - - meta - - name: keywords - content: 其他消息平台 -title: 部署消息平台LiteLoaderQQNT的教程 -icon: more -order: 2 -author: RockChinQ -date: 2024-03-02 ---- - -# LiteLoaderQQNT - -- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议 - -安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started - -![image-20240515185909108](/assets/image/llob_cfg.png) +# 部署消息平台LiteLoaderQQNT的教程 + +# LiteLoaderQQNT + +- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议 + +安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started + +![image-20240515185909108](/assets/image/llob_cfg.png) \ No newline at end of file diff --git a/src/posts/deploy/platforms/aiocqhttp/napcat.md b/docs/deploy/platforms/aiocqhttp/napcat.md similarity index 78% rename from src/posts/deploy/platforms/aiocqhttp/napcat.md rename to docs/deploy/platforms/aiocqhttp/napcat.md index 2eaad706f..75f540722 100644 --- a/src/posts/deploy/platforms/aiocqhttp/napcat.md +++ b/docs/deploy/platforms/aiocqhttp/napcat.md @@ -1,14 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: NapCat的部署教程 -title: 部署消息平台NapCat的教程 -icon: software -order: 3 -author: Lazy -date: 2024-05-13 ---- +# 部署消息平台NapCat的教程 ::: tip diff --git a/src/posts/deploy/platforms/aiocqhttp/shamrock.md b/docs/deploy/platforms/aiocqhttp/shamrock.md similarity index 92% rename from src/posts/deploy/platforms/aiocqhttp/shamrock.md rename to docs/deploy/platforms/aiocqhttp/shamrock.md index 7567c93a0..a89a247d8 100644 --- a/src/posts/deploy/platforms/aiocqhttp/shamrock.md +++ b/docs/deploy/platforms/aiocqhttp/shamrock.md @@ -1,84 +1,74 @@ ---- -head: - - - meta - - name: keywords - content: OpenShamrock的部署教程 -title: 部署消息平台shamrock的教程 -icon: mobile -order: 4 -author: ikun -date: 2023-12-21 ---- - -> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[OpenShamrock官方文档](https://whitechi73.github.io/OpenShamrock/)。 - -::: tip - -项目归档,不建议继续使用 - -::: - -## OpenShamrock简介 - -Mirai、go-cqhttp 之类的是模拟 QQ 的协议进行通信,而 Shamrock 使用的是 安卓的 Hook 来操作 QQ 模拟点击,稳定性较高。 - -可选平台(or设备): - -- 模拟器 -- Linux服务器 -- PVE -- 云手机 -- 实体手机 - -## 步骤(模拟器) - -### 环境配置 - -**注:建议使用[mumu模拟器](https://mumu.163.com/)** - -参考[此文档](https://forum.libfekit.so/d/60-mumu12mo-ni-qi-an-zhuang-magiskhe-lsposed)安装Magisk和LSPosed - -记得打开mumu模拟器的可写系统盘和root权限 - -![](/assets/image/sham_env_1.png) - -![image-20240119154032682](/assets/image/sham_env_2.png) - -### 安装OpenShamrock - -从[OpenShamrock的Actions](https://github.com/whitechi73/OpenShamrock/actions)下载最新的OpenShamrock安装包,注意下载带有`all`字样的版本,如`Shamrock-v1.0.7.r253.81be383-all.zip`,解压,在mumu模拟器安装 - - -#### 配置Shamrock - -1. 在 Shamrock 的设置页面修改设置如图: - -启用被动 Websocket,并填写 QChatGPT 的 aiocqhttp 适配器监听的地址和端口(详见填写配置信息页)。 - -![img](/assets/image/sham_cfg_1.png) - -![img](/assets/image/sham_cfg_2.png) - -填写的被动 Websocket 地址为 QChatGPT 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:8080/ws`,详见填写配置信息页。 - -2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock - -![image-20240119154110877](/assets/image/sham_cfg_3.png) - -### 安装QQ - -参考[此页面](https://whitechi73.github.io/OpenShamrock/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC)给出的支持的QQ版本,选择最新即可 - -在[这里](https://qq.cn.uptodown.com/android/versions)选择对应的版本下载,在mumu模拟器安装即可 - -### 登录机器人QQ - -1. 打开QQ,登录机器人QQ,关闭QQ,重启模拟器。 -2. 启动 LSPosed,Shamrock 将会自动运行,启动 QQ。 -3. 打开 Shamrock 页面,此时应显示 `已激活` 并可以查看到账号信息和相关消息日志。 - -### 后续步骤 - -查看填写配置信息页,通过 aiocqhttp 适配器接入。 - +# 部署消息平台shamrock的教程 + +> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[OpenShamrock官方文档](https://whitechi73.github.io/OpenShamrock/)。 + +::: tip + +项目归档,不建议继续使用 + +::: + +## OpenShamrock简介 + +Mirai、go-cqhttp 之类的是模拟 QQ 的协议进行通信,而 Shamrock 使用的是 安卓的 Hook 来操作 QQ 模拟点击,稳定性较高。 + +可选平台(or设备): + +- 模拟器 +- Linux服务器 +- PVE +- 云手机 +- 实体手机 + +## 步骤(模拟器) + +### 环境配置 + +**注:建议使用[mumu模拟器](https://mumu.163.com/)** + +参考[此文档](https://forum.libfekit.so/d/60-mumu12mo-ni-qi-an-zhuang-magiskhe-lsposed)安装Magisk和LSPosed + +记得打开mumu模拟器的可写系统盘和root权限 + +![](/assets/image/sham_env_1.png) + +![image-20240119154032682](/assets/image/sham_env_2.png) + +### 安装OpenShamrock + +从[OpenShamrock的Actions](https://github.com/whitechi73/OpenShamrock/actions)下载最新的OpenShamrock安装包,注意下载带有`all`字样的版本,如`Shamrock-v1.0.7.r253.81be383-all.zip`,解压,在mumu模拟器安装 + + +#### 配置Shamrock + +1. 在 Shamrock 的设置页面修改设置如图: + +启用被动 Websocket,并填写 QChatGPT 的 aiocqhttp 适配器监听的地址和端口(详见填写配置信息页)。 + +![img](/assets/image/sham_cfg_1.png) + +![img](/assets/image/sham_cfg_2.png) + +填写的被动 Websocket 地址为 QChatGPT 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:8080/ws`,详见填写配置信息页。 + +2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock + +![image-20240119154110877](/assets/image/sham_cfg_3.png) + +### 安装QQ + +参考[此页面](https://whitechi73.github.io/OpenShamrock/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC)给出的支持的QQ版本,选择最新即可 + +在[这里](https://qq.cn.uptodown.com/android/versions)选择对应的版本下载,在mumu模拟器安装即可 + +### 登录机器人QQ + +1. 打开QQ,登录机器人QQ,关闭QQ,重启模拟器。 +2. 启动 LSPosed,Shamrock 将会自动运行,启动 QQ。 +3. 打开 Shamrock 页面,此时应显示 `已激活` 并可以查看到账号信息和相关消息日志。 + +### 后续步骤 + +查看填写配置信息页,通过 aiocqhttp 适配器接入。 + ![img](https://cos.thelazy.cn/pictures/202405292250017.jpeg) \ No newline at end of file diff --git a/src/posts/deploy/platforms/aiocqhttp/gocq.md b/docs/deploy/platforms/gocq.md similarity index 85% rename from src/posts/deploy/platforms/aiocqhttp/gocq.md rename to docs/deploy/platforms/gocq.md index 45e4aeb2e..12e8eea0b 100644 --- a/src/posts/deploy/platforms/aiocqhttp/gocq.md +++ b/docs/deploy/platforms/gocq.md @@ -1,158 +1,151 @@ ---- -head: - - - meta - - name: keywords - content: Go-cqhttp的部署教程 -title: 部署消息平台go-cqhttp的教程 -icon: state -order: 3 -author: ikun0014 -date: 2024-08-18 -category: - - 部署教程 ---- - -> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。 - -::: warning - -gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471) - -::: - -## 下载go-cqhttp - -从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器) - -![下载gocq](/assets/image/dl_gocq.png) - -## 运行并配置go-cqhttp - -解压并运行,首次运行会询问需要开放的网络协议,**请填入`2`并回车,必须输入`2`❗❗❗❗❗❗❗** - -``` -C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe -未找到配置文件,正在为您生成配置文件中! -请选择你需要的通信方式: -> 0: HTTP通信 -> 1: 云函数服务 -> 2: 正向 Websocket 通信 -> 3: 反向 Websocket 通信 -请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233) -您的选择是:2 -``` - -提示已生成`config.yml`文件,关闭go-cqhttp。 - -打开go-cqhttp同目录的`config.yml` - -1. 编辑账号登录信息 - -只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。 - -```yaml -account: # 账号相关 - uin: 1233456 # QQ账号 - password: '' # 密码为空时使用扫码登录 - encrypt: false # 是否开启密码加密 - status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态 - relogin: # 重连设置 - delay: 3 # 首次重连延迟, 单位秒 - interval: 3 # 重连间隔 - max-times: 0 # 最大重连次数, 0为无限制 -``` - -2. 配置签名服务器 - -按照如下填写, - -```yaml - sign-servers: - - url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填 - key: 'selfshare' - authorization: '-' - - url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填 - key: 'selfshare' - authorization: '-' - - auto-register: true -``` - -写入文件/data/versions/6.json, - -```json -{ - "apk_id": "com.tencent.mobileqq", - "app_id": 537220362, - "sub_app_id": 537220362, - "app_key": "0S200MNJT807V3GE", - "sort_version_name": "9.0.56.16830", - "build_time": 1713424357, - "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", - "sdk_version": "6.0.0.2560", - "sso_version": 21, - "misc_bitmap": 150470524, - "main_sig_map": 34869472, - "sub_sig_map": 66560, - "dump_time": 1713424357, - "qua": "V1_AND_SQ_9.0.56_6372_YYB_D", - "protocol_type": 6 -} -``` - -感谢zhaodice大佬带来的QQ 9.0.56签名服务器 - -3.修改反向Websocket连接地址 -```yaml - - ws-reverse: - # 反向WS Universal 地址 - # 注意 设置了此项地址后下面两项将会被忽略 - universal: ws://localhost:8080/ws -``` -如果端口不同请自行修改 - -4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选) - -```yaml -# 默认中间件锚点 -default-middlewares: &default - # 访问密钥, 强烈推荐在公网的服务器设置 - access-token: '' -``` - -5. 配置完成,重新启动go-cqhttp - -## 登录 - -双击登录脚本,一段时间后,可以看到提示 - -![登录gocq](/assets/image/first_launch.png) - -把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具 - -点开 `Network` - -![过验证码](/assets/image/get_captcha.png) - -在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面 - -![获取token](/assets/image/get_gocq_login_token.png) - -ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号 - -**注意** - -- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容 -- 速度要快 -- 注意不要漏字符(没复制完, 后面还有很长) - -把复制下来的东西,粘贴到运行go-cq的终端中 - -![粘贴token](/assets/image/paste_token.png) - -> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。 - - -## 后续步骤 - -查看填写配置信息页,通过 aiocqhttp 适配器接入。 \ No newline at end of file +# 部署消息平台go-cqhttp的教程 + +> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。 + +::: warning + +gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471) + +::: + +## 下载go-cqhttp + +从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器) + +![下载gocq](/assets/image/dl_gocq.png) + +## 运行并配置go-cqhttp + +解压并运行,首次运行会询问需要开放的网络协议,**请填入`02`并回车,必须输入`02`❗❗❗❗❗❗❗** + +``` +C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe +未找到配置文件,正在为您生成配置文件中! +请选择你需要的通信方式: +> 0: HTTP通信 +> 1: 云函数服务 +> 2: 正向 Websocket 通信 +> 3: 反向 Websocket 通信 +请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233) +您的选择是:02 +``` + +提示已生成`config.yml`文件,关闭go-cqhttp。 + +打开go-cqhttp同目录的`config.yml` + +1. 编辑账号登录信息 + +只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。 + +```yaml +account: # 账号相关 + uin: 1233456 # QQ账号 + password: '' # 密码为空时使用扫码登录 + encrypt: false # 是否开启密码加密 + status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态 + relogin: # 重连设置 + delay: 3 # 首次重连延迟, 单位秒 + interval: 3 # 重连间隔 + max-times: 0 # 最大重连次数, 0为无限制 +``` + +2. 修改websocket端口 + +在`config.yml`下方找到以下内容 + +```yaml + - ws: + # 正向WS服务器监听地址 + address: 0.0.0.0:8080 + middlewares: + <<: *default # 引用默认中间件 +``` + +**将`0.0.0.0:8080`改为`0.0.0.0:6700`**,保存并关闭`config.yml`。 + +3. 配置签名服务器 + +按照如下填写, + +```yam + sign-servers: + - url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填 + key: 'selfshare' + authorization: '-' + - url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填 + key: 'selfshare' + authorization: '-' + + auto-register: true +``` + +写入文件/data/versions/6.json, + +```json +{ + "apk_id": "com.tencent.mobileqq", + "app_id": 537220362, + "sub_app_id": 537220362, + "app_key": "0S200MNJT807V3GE", + "sort_version_name": "9.0.56.16830", + "build_time": 1713424357, + "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", + "sdk_version": "6.0.0.2560", + "sso_version": 21, + "misc_bitmap": 150470524, + "main_sig_map": 34869472, + "sub_sig_map": 66560, + "dump_time": 1713424357, + "qua": "V1_AND_SQ_9.0.56_6372_YYB_D", + "protocol_type": 6 +} +``` + +感谢zhaodice大佬带来的QQ 9.0.56签名服务器 + +4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选) + +```yaml +# 默认中间件锚点 +default-middlewares: &default + # 访问密钥, 强烈推荐在公网的服务器设置 + access-token: '' +``` + +5. 配置完成,重新启动go-cqhttp + +## 登录 + +双击登录脚本,一段时间后,可以看到提示 + +![登录gocq](/assets/image/first_launch.png) + +把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具 + +点开 `Network` + +![过验证码](/assets/image/get_captcha.png) + +在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面 + +![获取token](/assets/image/get_gocq_login_token.png) + +ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号 + +**注意** + +- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容 +- 速度要快 +- 注意不要漏字符(没复制完, 后面还有很长) + +把复制下来的东西,粘贴到运行go-cq的终端中 + +![粘贴token](/assets/image/paste_token.png) + +> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。 + + +## 后续步骤 + +查看填写配置信息页,通过 Nakuru 适配器接入。 \ No newline at end of file diff --git a/src/posts/deploy/platforms/README.md b/docs/deploy/platforms/index.md similarity index 75% rename from src/posts/deploy/platforms/README.md rename to docs/deploy/platforms/index.md index 55373e8b2..ac5bedcef 100644 --- a/src/posts/deploy/platforms/README.md +++ b/docs/deploy/platforms/index.md @@ -1,14 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 消息平台部署教程 -icon: merge -author: Lazy -date: 2023-02-17 -index: false ---- +# 消息平台部署教程 :::info 目录 [[toc]] @@ -29,5 +19,4 @@ QChatGPT 需要一个中间程序,处理 QQ 等 IM 的协议(大部分是逆 以前流行的框架,现在长期不再维护或被腾讯严重围追堵截,不推荐使用: - Mirai(QQ):[Mirai部署教程](mirai.md) (使用旧版协议,风控严重) -- go-cqhttp(QQ):[go-cqhttp部署教程(For nakuru)](nakuru.md)(使用旧版协议,[原开发者停止维护](https://github.com/Mrs4s/go-cqhttp?tab=readme-ov-file#%E9%87%8D%E8%A6%81%E4%BF%A1%E6%81%AF)) - +- go-cqhttp(QQ):[go-cqhttp部署教程(For nakuru)](nakuru.md)(使用旧版协议,[原开发者停止维护](https://github.com/Mrs4s/go-cqhttp?tab=readme-ov-file#%E9%87%8D%E8%A6%81%E4%BF%A1%E6%81%AF)) \ No newline at end of file diff --git a/src/posts/deploy/platforms/mirai.md b/docs/deploy/platforms/mirai.md similarity index 93% rename from src/posts/deploy/platforms/mirai.md rename to docs/deploy/platforms/mirai.md index c76761678..4d15c4d9e 100644 --- a/src/posts/deploy/platforms/mirai.md +++ b/docs/deploy/platforms/mirai.md @@ -1,16 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: Yiri-mirai的部署教程 -title: 部署消息平台mirai的教程 -icon: warn -order: 3 -author: Lazy -date: 2023-12-18 -category: - - 部署教程 ---- +# 部署消息平台mirai的教程 > 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[Mirai官方代码库](https://github.com/mamoe/mirai)、[Mirai官方论坛](https://mirai.mamoe.net/) diff --git a/src/posts/deploy/platforms/official.md b/docs/deploy/platforms/official.md similarity index 72% rename from src/posts/deploy/platforms/official.md rename to docs/deploy/platforms/official.md index 58a085463..d3dd07e15 100644 --- a/src/posts/deploy/platforms/official.md +++ b/docs/deploy/platforms/official.md @@ -1,26 +1,14 @@ ---- -head: - - - meta - - name: keywords - content: QQ 官方机器人 API 使用教程 -title: 使用 QQ 官方机器人 API 的教程 -icon: support -order: 5 -author: RockChinQ -date: 2024-02-17 -category: - - 部署教程 ---- - -QQ 官方 API 可以将机器人接入 QQ 频道 和 QQ 群。 -QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。 - -(之前个人创建的机器人是没有此群聊权限的,只要重新申请创建一个即可) - -## 注册 QQ 机器人 - -前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。 - -## 获取凭证 - +# 使用 QQ 官方机器人 API 的教程 + +QQ 官方 API 可以将机器人接入 QQ 频道 和 QQ 群。 +QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。 + +(之前个人创建的机器人是没有此群聊权限的,只要重新申请创建一个即可) + +## 注册 QQ 机器人 + +前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。 + +## 获取凭证 + 注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。 \ No newline at end of file diff --git a/src/posts/deploy/qchatgpt/docker.md b/docs/deploy/qchatgpt/docker.md similarity index 81% rename from src/posts/deploy/qchatgpt/docker.md rename to docs/deploy/qchatgpt/docker.md index 8c9c26076..396a94858 100644 --- a/src/posts/deploy/qchatgpt/docker.md +++ b/docs/deploy/qchatgpt/docker.md @@ -1,15 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: Docker部署(仅推荐在Linux上使用) -icon: stack -order: 4 -author: Lazy,ikun -date: 2023-10-28 ---- - +# Docker部署(仅推荐在Linux上使用) :::info 目录 [[toc]] @@ -56,6 +45,4 @@ docker compose up ## 注意 -- 安装的插件都会保存在`plugins`(映射到本目录`plugins`),安装插件时可能会自动安装相应的依赖,此时若`重新创建`容器,已安装的插件将被加载,但所需的增量依赖并未安装,会导致引入问题。您可以删除插件目录后重启,再次安装插件,以便程序可以自动安装插件所需依赖。 - - \ No newline at end of file +- 安装的插件都会保存在`plugins`(映射到本目录`plugins`),安装插件时可能会自动安装相应的依赖,此时若`重新创建`容器,已安装的插件将被加载,但所需的增量依赖并未安装,会导致引入问题。您可以删除插件目录后重启,再次安装插件,以便程序可以自动安装插件所需依赖。 \ No newline at end of file diff --git a/src/posts/deploy/qchatgpt/README.md b/docs/deploy/qchatgpt/index.md similarity index 53% rename from src/posts/deploy/qchatgpt/README.md rename to docs/deploy/qchatgpt/index.md index 4fff6d9cd..53f65acbd 100644 --- a/src/posts/deploy/qchatgpt/README.md +++ b/docs/deploy/qchatgpt/index.md @@ -1,24 +1,15 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: QChatGPT部署教程 -icon: flow -author: Lazy -date: 2023-02-17 -index: false ---- -:::info 目录 -[[toc]] -::: - -选择一种部署 QChatGPT 的方式。 - -## 手动部署 - -- [ 点击查看手动部署的具体操作](manual.md) - -## Docker部署 - -- [ 点击查看Docker部署的具体操作](docker.md) +# QChatGPT部署教程 + +:::info 目录 +[[toc]] +::: + +选择一种部署 QChatGPT 的方式。 + +## 手动部署 + +- [ 点击查看手动部署的具体操作](manual.md) + +## Docker部署 + +- [ 点击查看Docker部署的具体操作](docker.md) \ No newline at end of file diff --git a/src/posts/deploy/qchatgpt/manual.md b/docs/deploy/qchatgpt/manual.md similarity index 84% rename from src/posts/deploy/qchatgpt/manual.md rename to docs/deploy/qchatgpt/manual.md index bf820fd4f..218a8d41d 100644 --- a/src/posts/deploy/qchatgpt/manual.md +++ b/docs/deploy/qchatgpt/manual.md @@ -1,14 +1,5 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 手动部署(推荐,可以在所有平台上使用) -icon: support -order: 3 -author: Lazy -date: 2023-02-17 ---- +# 手动部署(推荐,可以在所有平台上使用) + :::warning 请使用Python 3.10.1(不包含3.10.0)及以上版本,推荐3.10.9版本,没有Python的需自行安装,参考[此教程](./more-details/python.md) ::: @@ -77,4 +68,4 @@ python3 main.py 当你部署消息平台和填写配置文件后,再次运行 ```bash python3 main.py -``` +``` \ No newline at end of file diff --git a/src/posts/deploy/qchatgpt/more-details/python.md b/docs/deploy/qchatgpt/more-details/python.md similarity index 68% rename from src/posts/deploy/qchatgpt/more-details/python.md rename to docs/deploy/qchatgpt/more-details/python.md index 43185e1d8..ef95920c2 100644 --- a/src/posts/deploy/qchatgpt/more-details/python.md +++ b/docs/deploy/qchatgpt/more-details/python.md @@ -1,14 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: Python的安装教程 -title: Python的安装教程(QChatGPT) -icon: support -order: 3 -author: Lazy -date: 2023-12-18 ---- +# Python的安装教程(QChatGPT) ## 第一步:安装Python @@ -30,4 +20,4 @@ date: 2023-12-18 ![image-20231219222916951](/assets/image/python_3.png) -提示如图时,表明安装成功了 +提示如图时,表明安装成功了 \ No newline at end of file diff --git a/src/posts/deploy/config.md b/docs/deploy/quick-config/config.md similarity index 93% rename from src/posts/deploy/config.md rename to docs/deploy/quick-config/config.md index 2d97fa13d..11191a22b 100644 --- a/src/posts/deploy/config.md +++ b/docs/deploy/quick-config/config.md @@ -1,13 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 填写配置信息 -icon: class -author: Lazy -date: 2024-02-18 ---- +# 填写配置信息 修改以下配置文件即可启用 QChatGPT 的基本功能,当你阅读完此页面后,建议查看[配置详解](../config/),以了解更多的配置项详解 @@ -183,5 +174,4 @@ date: 2024-02-18 阅读并完成以上教程后,你应该可以成功使用QChatGPT了,如果不能请再次阅读(你或许漏做或错做某些步骤),如果完全阅读并充分理解本文档后仍然确实无法使用,你可以在[这里](./README.md)找到交流群 -::: - +::: \ No newline at end of file diff --git a/src/posts/plugin/apiref.md b/docs/develop/api-ref.md similarity index 82% rename from src/posts/plugin/apiref.md rename to docs/develop/api-ref.md index 5affafa47..8cfbf1c8d 100644 --- a/src/posts/plugin/apiref.md +++ b/docs/develop/api-ref.md @@ -1,38 +1,25 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT API 参考 -title: API 参考 -icon: code -order: 5 -author: RockChinQ -date: 2024-03-22 -category: - - 插件介绍 -index: false ---- - -以下 API 仅针对 事件插件 可用,组件扩展形式请自行阅读源码。 - -## 消息处理 - -### 回复消息 - -ctx.reply(message_chain: mirai.MessageChain) - -回复此次事件的发起会话。 - -- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链 - -### 发送主动消息 - -> 由于 QQ 官方 API 对主动消息的支持性很差,故若用户使用的是 QQ 官方 API,发送主动消息可能会失败 - -ctx.send_message(target_type: str, target_id: str, message_chain: mirai.MessageChain) - -发送主动消息给目标。 - -- `target_type`:目标类型,可选值:`"person"`、`"group"` -- `target_id`:目标 ID(QQ 号或群号) -- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链 +# API 参考 + +以下 API 仅针对 事件插件 可用,组件扩展形式请自行阅读源码。 + +## 消息处理 + +### 回复消息 + +ctx.reply(message_chain: mirai.MessageChain) + +回复此次事件的发起会话。 + +- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链 + +### 发送主动消息 + +> 由于 QQ 官方 API 对主动消息的支持性很差,故若用户使用的是 QQ 官方 API,发送主动消息可能会失败 + +ctx.send_message(target_type: str, target_id: str, message_chain: mirai.MessageChain) + +发送主动消息给目标。 + +- `target_type`:目标类型,可选值:`"person"`、`"group"` +- `target_id`:目标 ID(QQ 号或群号) +- `message_chain`:[YiriMirai 的 MessageChain 对象](https://yiri-mirai.wybxc.cc/docs/basic/message-chain),若用户使用的不是 YiriMirai 适配器,程序也能自动转换为目标消息链 \ No newline at end of file diff --git a/src/posts/plugin/extension.md b/docs/develop/extension.md similarity index 96% rename from src/posts/plugin/extension.md rename to docs/develop/extension.md index 4036b1e5c..ba8311038 100644 --- a/src/posts/plugin/extension.md +++ b/docs/develop/extension.md @@ -1,115 +1,102 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT 组件扩展教程 -title: 组件扩展 -icon: code -order: 4 -author: RockChinQ -date: 2024-03-21 -category: - - 插件介绍 -index: false ---- - -> 请先阅读[插件介绍页](../plugin/intro.md) - -:::info 目录 -[[toc]] -::: - -普通的以 `BasePlugin` 子类包装的插件只能监听预定事件,而组件扩展则可以替换整个组件,实现更强大的功能扩展。 - -- 组件扩展不需要包装在 `BasePlugin` 子类中,可以放在插件目录下任意一个模块中 -- 扩展的组件不受插件开关控制 -- 扩展的组件通常由配置文件中的选项选用 - -## 可扩展的组件 - -扩展一个组件的方法,新建一个类,继承于组件的基类,然后在类上使用对应的装饰器,再根据使用方式来配置使用该实现的组件。 - -大部分组件中包含了`ap: pkg.core.app.Application`对象,可以用这个对象来与整个程序的各个部分进行交互。 -大部分组件支持实现`async def initialize(self)`方法,用于在组件加载时进行异步初始化。 -`ap`对象中包含了各个配置文件的管理器对象,可以用于访问各个配置文件。 - -### 命令 - -新增一个命令。 - -- 基类:`pkg.command.operator.CommandOperator` -- 装饰器:`pkg.command.operator.operator_class(name: str, help: str="", usage: str=None, alias: list[str]=[], privilege: int=1, parent_class: typing.Type[CommandOperator] = None)` -- 参考实现:`pkg.command.operators/` -- 使用方式:加载成功后,执行命令`!cmd`可查看所有命令和命令帮助信息。 - -### 内容过滤器 - -新增一个在处理消息前后判断是否要继续的内容处理器。 - -- 基类:`pkg.pipeline.cntfilter.filter.ContentFilter` -- 装饰器:`pkg.pipeline.cntfilter.filter.filter_class(name: str)` -- 参考实现:`pkg.pipeline.cntfilter.filters/` -- 使用方式:加载成功后,每次都会在过滤器实现声明的检查阶段调用内容过滤器的`process`方法。 - -### 长消息处理策略 - -新增一个长消息处理策略。类似:文本转合并转发消息组件、文本转图片。 - -- 基类:`pkg.pipeline.longtext.strategy.LongTextStrategy` -- 装饰器:`pkg.pipeline.longtext.strategy.strategy_class(name: str)` -- 参考实现:`pkg.pipeline.longtext.strategies/` -- 使用方式:需要在 `data/config/platform.json` 的 `long-text-strategy` 字段中将 `strategy` 设置为新增的策略名称。 - -### 会话限速算法 - -新增一个会话限速算法。会话请求在进入和退出时均会调用限速算法实现类的方法,实现类可以控制等待或丢弃请求。 - -- 基类:`pkg.pipeline.ratelimit.algo.RateLimitAlgo` -- 装饰器:`pkg.pipeline.ratelimit.algo.algo_class(name: str)` -- 参考实现:`pkg.pipeline.ratelimit.algos/` -- 使用方式:需要在 `data/config/pipeline.json` 的 `rate-limit` 字段中将 `algo` 设置为新增的算法名称。 - -### LLM 接口请求器 - -新增一个 LLM 接口请求器,例如:接入ChatGLM接口等。 - -- 基类:`pkg.provider.modelmgr.api.LLMAPIRequester` -- 装饰器:`pkg.provider.modelmgr.api.api_requester_class(name: str)` -- 参考实现:`pkg.provider.modelmgr.apis/` -- 使用方式:需要在`data/metadata/llm-models.json`中添加模型,将模型的`requester`字段设置为新增的请求器名称。具体请查看元数据配置板块。 - -### Prompt 加载器 - -新增一个 Prompt 加载器。 - -- 基类:`pkg.provider.sysprompt.loader.PromptLoader` -- 装饰器:`pkg.provider.sysprompt.loader.loader_class(name: str)` -- 参考实现:`pkg.provider.sysprompt.loaders/` -- 使用方式:需要在`data/config/provider.json`将`prompt-mode`设置为新增的加载器名称。 - -### 消息平台适配器 - -新增一个消息平台适配器,例如:接入Telegram等。 - -- 基类:`pkg.platform.adapter.MessageSourceAdapter` -- 装饰器:`pkg.platform.adapter.adapter_class(name: str)` -- 参考实现:`pkg.platform.adapters/` -- 使用方式:`data/config/platform.json`的`platform-adapters`中各个配置信息,将在初始化时自动根据`adapter`名称查找对应的适配器实现,并将配置传递给适配器以进行初始化。消息平台适配器实现复杂,建议多参考现有的实现。 - -### 对话历史消息截断器 - -新增一个对话历史消息截断器,在发送到模型之前对历史消息进行截断。 - -- 基类:`pkg.pipeline.msgtrun.truncator.Truncator` -- 装饰器:`pkg.pipeline.msgtrun.truncator.truncator_class(name: str)` -- 参考实现:`pkg.pipeline.msgtrun.truncators/` -- 使用方式:需要在`data/config/pipeline.json`的`msg-truncate`字段中设置需要使用的截断器`method`为新增的截断器名称。 - -### Chat 请求运行器 - -新增一个聊天消息运行器,默认的是 local-agent,提供了基本的 Prompt 组合、Agent 编排、多轮请求等功能。如果需要接入知识库或者本地 RAG,请在这里实现。 - -- 基类:`pkg.provider.runner.RequesterRunner` -- 装饰器:`pkg.provider.runner.runner_class(name: str)` -- 参考实现:`pkg.provider.runners/` +# 组件扩展 + +> 请先阅读[插件介绍页](../plugin/intro.md) + +:::info 目录 +[[toc]] +::: + +普通的以 `BasePlugin` 子类包装的插件只能监听预定事件,而组件扩展则可以替换整个组件,实现更强大的功能扩展。 + +- 组件扩展不需要包装在 `BasePlugin` 子类中,可以放在插件目录下任意一个模块中 +- 扩展的组件不受插件开关控制 +- 扩展的组件通常由配置文件中的选项选用 + +## 可扩展的组件 + +扩展一个组件的方法,新建一个类,继承于组件的基类,然后在类上使用对应的装饰器,再根据使用方式来配置使用该实现的组件。 + +大部分组件中包含了`ap: pkg.core.app.Application`对象,可以用这个对象来与整个程序的各个部分进行交互。 +大部分组件支持实现`async def initialize(self)`方法,用于在组件加载时进行异步初始化。 +`ap`对象中包含了各个配置文件的管理器对象,可以用于访问各个配置文件。 + +### 命令 + +新增一个命令。 + +- 基类:`pkg.command.operator.CommandOperator` +- 装饰器:`pkg.command.operator.operator_class(name: str, help: str="", usage: str=None, alias: list[str]=[], privilege: int=1, parent_class: typing.Type[CommandOperator] = None)` +- 参考实现:`pkg.command.operators/` +- 使用方式:加载成功后,执行命令`!cmd`可查看所有命令和命令帮助信息。 + +### 内容过滤器 + +新增一个在处理消息前后判断是否要继续的内容处理器。 + +- 基类:`pkg.pipeline.cntfilter.filter.ContentFilter` +- 装饰器:`pkg.pipeline.cntfilter.filter.filter_class(name: str)` +- 参考实现:`pkg.pipeline.cntfilter.filters/` +- 使用方式:加载成功后,每次都会在过滤器实现声明的检查阶段调用内容过滤器的`process`方法。 + +### 长消息处理策略 + +新增一个长消息处理策略。类似:文本转合并转发消息组件、文本转图片。 + +- 基类:`pkg.pipeline.longtext.strategy.LongTextStrategy` +- 装饰器:`pkg.pipeline.longtext.strategy.strategy_class(name: str)` +- 参考实现:`pkg.pipeline.longtext.strategies/` +- 使用方式:需要在 `data/config/platform.json` 的 `long-text-strategy` 字段中将 `strategy` 设置为新增的策略名称。 + +### 会话限速算法 + +新增一个会话限速算法。会话请求在进入和退出时均会调用限速算法实现类的方法,实现类可以控制等待或丢弃请求。 + +- 基类:`pkg.pipeline.ratelimit.algo.RateLimitAlgo` +- 装饰器:`pkg.pipeline.ratelimit.algo.algo_class(name: str)` +- 参考实现:`pkg.pipeline.ratelimit.algos/` +- 使用方式:需要在 `data/config/pipeline.json` 的 `rate-limit` 字段中将 `algo` 设置为新增的算法名称。 + +### LLM 接口请求器 + +新增一个 LLM 接口请求器,例如:接入ChatGLM接口等。 + +- 基类:`pkg.provider.modelmgr.api.LLMAPIRequester` +- 装饰器:`pkg.provider.modelmgr.api.api_requester_class(name: str)` +- 参考实现:`pkg.provider.modelmgr.apis/` +- 使用方式:需要在`data/metadata/llm-models.json`中添加模型,将模型的`requester`字段设置为新增的请求器名称。具体请查看元数据配置板块。 + +### Prompt 加载器 + +新增一个 Prompt 加载器。 + +- 基类:`pkg.provider.sysprompt.loader.PromptLoader` +- 装饰器:`pkg.provider.sysprompt.loader.loader_class(name: str)` +- 参考实现:`pkg.provider.sysprompt.loaders/` +- 使用方式:需要在`data/config/provider.json`将`prompt-mode`设置为新增的加载器名称。 + +### 消息平台适配器 + +新增一个消息平台适配器,例如:接入Telegram等。 + +- 基类:`pkg.platform.adapter.MessageSourceAdapter` +- 装饰器:`pkg.platform.adapter.adapter_class(name: str)` +- 参考实现:`pkg.platform.adapters/` +- 使用方式:`data/config/platform.json`的`platform-adapters`中各个配置信息,将在初始化时自动根据`adapter`名称查找对应的适配器实现,并将配置传递给适配器以进行初始化。消息平台适配器实现复杂,建议多参考现有的实现。 + +### 对话历史消息截断器 + +新增一个对话历史消息截断器,在发送到模型之前对历史消息进行截断。 + +- 基类:`pkg.pipeline.msgtrun.truncator.Truncator` +- 装饰器:`pkg.pipeline.msgtrun.truncator.truncator_class(name: str)` +- 参考实现:`pkg.pipeline.msgtrun.truncators/` +- 使用方式:需要在`data/config/pipeline.json`的`msg-truncate`字段中设置需要使用的截断器`method`为新增的截断器名称。 + +### Chat 请求运行器 + +新增一个聊天消息运行器,默认的是 local-agent,提供了基本的 Prompt 组合、Agent 编排、多轮请求等功能。如果需要接入知识库或者本地 RAG,请在这里实现。 + +- 基类:`pkg.provider.runner.RequesterRunner` +- 装饰器:`pkg.provider.runner.runner_class(name: str)` +- 参考实现:`pkg.provider.runners/` - 使用方式:需要在`data/config/provider.json`的`runner`字段中设置需要使用的运行器`runner`为新增的运行器名称。 \ No newline at end of file diff --git a/src/posts/plugin/develop.md b/docs/develop/plugin-dev.md similarity index 95% rename from src/posts/plugin/develop.md rename to docs/develop/plugin-dev.md index 0a723f5dc..72986bd19 100644 --- a/src/posts/plugin/develop.md +++ b/docs/develop/plugin-dev.md @@ -1,17 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT插件开发教程 -title: 插件开发 -icon: code -order: 3 -author: RockChinQ -date: 2023-09-30 -category: - - 插件介绍 -index: false ---- +# 插件开发 > 请先阅读[插件介绍页](../plugin/intro.md) > 建议先阅读本项目源码,了解项目架构 diff --git a/src/posts/plugin/intro.md b/docs/develop/plugin-intro.md similarity index 92% rename from src/posts/plugin/intro.md rename to docs/develop/plugin-intro.md index 6979b7b0c..344bd7a3c 100644 --- a/src/posts/plugin/intro.md +++ b/docs/develop/plugin-intro.md @@ -1,16 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人插件,QChatGPT项目插件 -title: 插件介绍 -icon: blog -order: 1 -date: 2023-09-30 -category: - - 插件介绍 -index: false ---- +# 插件介绍 :::info 目录 [[toc]] @@ -108,4 +96,4 @@ GPT将会回复一个对`access_the_web`的函数调用请求,QChatGPT将调 `priority`: 插件运行优先级,在初始化、事件调用时,高优先级的插件将优先被处理 -`enabled`:设置为false时,不会初始化,也不会被调用 +`enabled`:设置为false时,不会初始化,也不会被调用 \ No newline at end of file diff --git a/src/posts/develop/technology-info.md b/docs/develop/tech-info.md similarity index 94% rename from src/posts/develop/technology-info.md rename to docs/develop/tech-info.md index dbd42228c..bcec00397 100644 --- a/src/posts/develop/technology-info.md +++ b/docs/develop/tech-info.md @@ -1,16 +1,5 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT插件开发教程 -title: 技术信息 -icon: code -author: RockChinQ -date: 2023-09-30 -category: - - 技术信息 -index: false ---- +# 技术信息 + 以下是QChatGPT实现原理等技术信息,贡献之前请仔细阅读 > 此文档为 QChatGPT 2.x 的技术文档,已过时,3.x 版本请直接查看源码。 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 000000000..3ffb0be8d --- /dev/null +++ b/docs/index.md @@ -0,0 +1,38 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "QChatGPT" + image: + src: /assets/icon/chrome-512.png + alt: QChatGPT-logo + text: "" + tagline: "😎高稳定性、🧩支持插件、🦄多模态的 LLM QQ / QQ频道 / OneBot 机器人 / Agent 平台" + actions: + - theme: brand + text: 查看文档 + link: /insight/intro + - theme: alt + text: 代码仓库 + link: https://github.com/RockChinQ/QChatGPT + +features: + - title: 丰富生态 + details: 支持事件监听、AI Agent 等插件扩展方式,具有多种插件或相关支持项目 + + - title: 功能直观 + details: 集成黑名单、限速、选择响应、上下文控制、Prompt 管理等多种常用功能 + + - title: 多种模型 + details: 适配 OpenAI、Moonshot、Anthropic 等多个提供商的接口,同时深度支持 OneAPI + - title: 高稳定性 + details: 采用主流的设计思想,架构清晰,具有高测试覆盖率 + + - title: 生产就绪 + details: 符合生产环境的高可用性要求,已被多家公司商用部署 + + - title: 持续维护 + details: 长期维护、迭代,持续跟进大模型领域的最新应用实践 +--- + diff --git a/docs/insight/guide.md b/docs/insight/guide.md new file mode 100644 index 000000000..fcb753c42 --- /dev/null +++ b/docs/insight/guide.md @@ -0,0 +1,32 @@ +# 新手指引 + +> 此页面旨在引导新用户如何阅读文档 + +## 阅读顺序 + +### 新用户的: + +对于新用户,我们建议如下阅读顺序 + +1. 部署板块 + - 首先部署QChatGPT,使用手动部署或Docker部署,或者使用社区资源提供的一键部署(通常是最简部署方式,适合纯小白) + - 接着部署消息平台,建议aiocqhttp + - 最后填写配置信息(此时是最简上手配置,进一步使用仍需阅读配置板块) +2. 使用板块 + - 进行上面的最基础部署后 + - 阅读命令语法可以获得机器人的指令,可以在对话中实现切换预设、切换模型等 + - 阅读插件列表,获得插件,增强功能 + - 阅读常见问题,可有助于解决部署和使用时的问题 +3. 配置板块 + - 功能配置,是部署板块配置信息部分的进一步拓展,具体解释了所有的配置信息,实现更多自定义需求 + - 元数据配置,控制敏感词、模型列表等 + +通常来说,对于非开发人员和商用合作用途,上面的已经足够了。 + +### 开发者的: + +对于开发者,包括但不限于项目主体开发和插件开发,我们建议再阅读上述配置后,继续阅读开发板块 + +### 商业合作的 + +请阅读规模化和商用板块 diff --git a/src/posts/feature.md b/docs/insight/intro.md similarity index 89% rename from src/posts/feature.md rename to docs/insight/intro.md index f1466d768..adc2a330a 100644 --- a/src/posts/feature.md +++ b/docs/insight/intro.md @@ -1,15 +1,5 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT的模型一览功能介绍 -title: 模型一览和功能点 -icon: enum -author: RockChinQ -date: 2023-12-20 -category: - - 部署教程 ---- +# 模型一览和功能点 + ## 模型一览 ### 文字对话 @@ -28,14 +18,14 @@ category: - 程序向模型发送近几次对话内容,模型根据上下文生成回复 -
+
✅支持敏感词过滤,避免账号风险 - 难以监测机器人与用户对话时的内容,故引入此功能以减少机器人风险
-
+
✅群内多种响应规则,不必at @@ -43,7 +33,7 @@ category: - 默认回复`ai`作为前缀或`@`机器人的消息
-
+
✅使用官方api,稳定快捷 @@ -51,7 +41,7 @@ category: - 不使用ChatGPT逆向接口,而使用官方的Completion API,稳定性高
-
+
✅组件少,部署方便,提供一键安装器及Docker安装 @@ -59,7 +49,7 @@ category: - 手动部署步骤少 - 提供自动安装器及docker方式,详见安装步骤
-
+
✅支持预设文字 @@ -67,7 +57,7 @@ category: - 支持以自然语言预设文字,自定义机器人人格等信息
-
+
✅支持插件加载🧩 @@ -75,7 +65,7 @@ category: - 自行实现插件加载器及相关支持 - 详细查看插件介绍页
-
+
✅私聊、群聊黑名单机制 @@ -83,7 +73,7 @@ category: - 支持将人或群聊加入黑名单以忽略其消息
-
+
✅回复速度限制 @@ -94,7 +84,7 @@ category: - “丢弃”策略:此分钟内对话次数达到限制时,丢弃之后的对话
-
+ ## 限制 @@ -128,4 +118,4 @@ category: 2. at机器人并发送消息,机器人即会自动回复 3. at机器人并发送`!help`查看帮助信息 -![群聊使用](/assets/image/group_chat.png) +![群聊使用](/assets/image/group_chat.png) \ No newline at end of file diff --git a/docs/tob/contact.md b/docs/tob/contact.md new file mode 100644 index 000000000..3fe11acd4 --- /dev/null +++ b/docs/tob/contact.md @@ -0,0 +1,6 @@ +# 咨询方式 + +作者长期提供定制服务,欢迎咨询: + +- 微信:junyan_qin +- QQ:1010553892 \ No newline at end of file diff --git a/src/posts/tob/README.md b/docs/tob/index.md similarity index 60% rename from src/posts/tob/README.md rename to docs/tob/index.md index 3bbc88aec..ce11df867 100644 --- a/src/posts/tob/README.md +++ b/docs/tob/index.md @@ -1,15 +1,5 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT 规模使用和商用指南 -title: 规模使用和商用指南 -icon: app -author: RockChinQ -date: 2024-05-23 -index: false ---- - -QChatGPT 已经具备了一定的生产能力,目前已在多家公司的生产环境运行并承担一定的业务。我们相信您非常重视合规性和稳定性方面的问题,此章节将基于一些已有的案例讲解商用最佳实践。 - +# 规模使用和商用指南 + +QChatGPT 已经具备了一定的生产能力,目前已在多家公司的生产环境运行并承担一定的业务。我们相信您非常重视合规性和稳定性方面的问题,此章节将基于一些已有的案例讲解商用最佳实践。 + 请点击左侧目录查看具体内容。 \ No newline at end of file diff --git a/src/posts/tob/platform.md b/docs/tob/platform.md similarity index 87% rename from src/posts/tob/platform.md rename to docs/tob/platform.md index ed9609e9a..5fb995d84 100644 --- a/src/posts/tob/platform.md +++ b/docs/tob/platform.md @@ -1,46 +1,33 @@ ---- -head: - - - meta - - name: keywords - content: 商用消息平台稳定性 -title: 消息平台稳定性 -icon: comment -order: 1 -author: RockChinQ -date: 2024-05-23 -category: - - 规模使用和商用 -index: false ---- - -:::info 目录 -[[toc]] -::: - -主流的机器人都是使用`逆向工程`的方式,破解QQ的通信协议,实现程序控制的功能。这种方式具有一定的灰色性质,可能会被腾讯系统风控。 - -目前的案例来看,现有的逆向工程可以实现多个月的较稳定运行,服务宕机恢复不会超过24小时,有完善的社区支持,可以较好地应对商业用途。 - -## 降低被风控风险 - -- 在配置文件中启用`强制消息延迟`、`请求限速功能`,使机器人回复用户消息的速度降低,减少被风控的风险。 - -- 避免将机器人放到人员复杂的大群里使用。这个一般不会出问题,有过在3000人大群稳定运行近一年的案例。但若是群内人员频繁举报机器人账号,可能会被风控。 - -- 使用境内主机或家用网络的电脑运行消息平台,尽量不使用境外主机。 - -## 机器人服务多开 - -如果机器人的业务与账号本身弱相关,可以考虑开启多个`消息平台`(例如使用两个账号登录两个Lagrange实例),在一个机器人被腾讯封号后,另一个机器人还可以继续服务。 - -## 使用 QQ 官方机器人 API - -腾讯官方在23年下半年开放了Q群机器人API,QChatGPT 很好地支持这个 API,可以查看部署教程中的配置方式使用。 - -但 QQ 官方机器人API具有以下已知的局限性: - -- 需要企业资质才能申请 -- 仅支持群内使用,不支持私聊 -- 仅能接收到群内@机器人的消息,无法接收到群内其他消息 -- 主动发送消息每天限次 +# 消息平台稳定性 + +:::info 目录 +[[toc]] +::: + +主流的机器人都是使用`逆向工程`的方式,破解QQ的通信协议,实现程序控制的功能。这种方式具有一定的灰色性质,可能会被腾讯系统风控。 + +目前的案例来看,现有的逆向工程可以实现多个月的较稳定运行,服务宕机恢复不会超过24小时,有完善的社区支持,可以较好地应对商业用途。 + +## 降低被风控风险 + +- 在配置文件中启用`强制消息延迟`、`请求限速功能`,使机器人回复用户消息的速度降低,减少被风控的风险。 + +- 避免将机器人放到人员复杂的大群里使用。这个一般不会出问题,有过在3000人大群稳定运行近一年的案例。但若是群内人员频繁举报机器人账号,可能会被风控。 + +- 使用境内主机或家用网络的电脑运行消息平台,尽量不使用境外主机。 + +## 机器人服务多开 + +如果机器人的业务与账号本身弱相关,可以考虑开启多个`消息平台`(例如使用两个账号登录两个Lagrange实例),在一个机器人被腾讯封号后,另一个机器人还可以继续服务。 + +## 使用 QQ 官方机器人 API + +腾讯官方在23年下半年开放了Q群机器人API,QChatGPT 很好地支持这个 API,可以查看部署教程中的配置方式使用。 + +但 QQ 官方机器人API具有以下已知的局限性: + +- 需要企业资质才能申请 +- 仅支持群内使用,不支持私聊 +- 仅能接收到群内@机器人的消息,无法接收到群内其他消息 +- 主动发送消息每天限次 - 腾讯对 AIGC 功能的机器人审核较严格 \ No newline at end of file diff --git a/src/posts/tob/provider.md b/docs/tob/provider.md similarity index 70% rename from src/posts/tob/provider.md rename to docs/tob/provider.md index 718166abb..cf6055f61 100644 --- a/src/posts/tob/provider.md +++ b/docs/tob/provider.md @@ -1,30 +1,13 @@ ---- -head: - - - meta - - name: keywords - content: 商用消息平台稳定性 -title: AI 内容合规性 -icon: warn -order: 2 -author: RockChinQ -date: 2024-05-23 -category: - - 规模使用和商用 -index: false ---- - -:::info 目录 -[[toc]] -::: - -> 国家对AIGC的管理办法参考资料 -> -> - [生成式人工智能服务管理暂行办法](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm) - -在内容管控方面,QChatGPT 内置了`关键词检测`、`百度智能云审核`等内容过滤器,具体请查看配置文件章节。 - -在实践中,应该辅以群内管理员禁言之类的方式管控内容,模型方面,以下是推荐的方案(按推荐顺序): - -1. 使用国产模型 -2. 使用严格的内容过滤器(可自行实现,详细参考插件功能章节) +# AI 内容合规性 + +> 国家对AIGC的管理办法参考资料 +> +> - [生成式人工智能服务管理暂行办法](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm) + +在内容管控方面,QChatGPT 内置了`关键词检测`、`百度智能云审核`等内容过滤器,具体请查看配置文件章节。 + +在实践中,应该辅以群内管理员禁言之类的方式管控内容,模型方面,以下是推荐的方案(按推荐顺序): + +1. 使用国产模型 +2. 使用严格的内容过滤器(可自行实现,详细参考插件功能章节) 3. 在使用境外模型时辅以严格的 Prompt \ No newline at end of file diff --git a/src/posts/error/README.md b/docs/usage/faq.md similarity index 78% rename from src/posts/error/README.md rename to docs/usage/faq.md index 17ba84448..81551754b 100644 --- a/src/posts/error/README.md +++ b/docs/usage/faq.md @@ -1,13 +1,4 @@ ---- -head: - - - meta - - name: keywords - content: QChatGPT的常见问题 -title: QChatGPT的常见问题 -icon: info -author: Lazy -date: 2024-06-10 ---- +# QChatGPT的常见问题 ## Q1:如何接入 OneAPI、LinkAI 等第三方 OpenAI 格式接口? @@ -34,4 +25,4 @@ date: 2024-06-10 ## Q4:插件安装失败? -尝试在主机上开启网络代理,Linux 需要设置环境变量 http_proxy 和 https_proxy。 +尝试在主机上开启网络代理,Linux 需要设置环境变量 http_proxy 和 https_proxy。 \ No newline at end of file diff --git a/src/posts/plugin/list.md b/docs/usage/plugin-list.md similarity index 91% rename from src/posts/plugin/list.md rename to docs/usage/plugin-list.md index 2967a13e0..10daa7686 100644 --- a/src/posts/plugin/list.md +++ b/docs/usage/plugin-list.md @@ -1,30 +1,18 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人插件,QChatGPT项目插件 -title: 插件列表 -icon: list -order: 2 -author: Lazy -date: 2024-08-19 -category: - - 插件介绍 ---- -以下是部分插件列表,所有插件请查看[RockChinQ的Star集](https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6) - -- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!! -- [https://github.com/the-lazy-me/NewChatVoice](https://github.com/the-lazy-me/miHoYoVoice) - QChatGPT语音插件,可利用多个TTS平台实现语音聊天 -- [Yuumi0221/URLMaskerPlugin](https://github.com/Yuumi0221/URLMaskerPlugin) - 用于掩码(替换)URL,以应对QQ官方机器人API对消息中URL的限制 -- [ElvisChenML/Waifu](https://github.com/ElvisChenML/Waifu) - 一个QChatGPT的插件,旨在利用程式逻辑搭配LLM创建真实感聊天机器人,探索真实的聊天体验。 -- [Pevernow/QChatGPT_Plugin_Emoticon_v3](https://github.com/Pevernow/QChatGPT_Plugin_Emoticon_v3) - QChatGPT v3可用,基于在线api的表情包插件。 -- [https://github.com/kirifujinagisa/RussianRoulette](https://github.com/kirifujinagisa/RussianRoulette) - 一个qchatgpt俄罗斯轮盘赌的游戏插件 -- [https://github.com/kirifujinagisa/FileSender](https://github.com/kirifujinagisa/FileSender) - 基于qchatgpt的将本机指定文件发送给申请人的插件 -- [https://github.com/ElvisChenML/GalgameMaker](https://github.com/ElvisChenML/GalgameMaker) - QChatGPT 插件,用于快速生成在QQ对话中进行的Galgame。 -- [https://github.com/zzseki/QChatGPT_Plugin_News](https://github.com/zzseki/QChatGPT_Plugin_News) - 无介绍(看仓库名猜一下吧) -- [https://github.com/zzseki/QChatGPT_Plugin_Weather ](https://github.com/zzseki/QChatGPT_Plugin_Weather)- 无介绍(看仓库名猜一下吧) -- [https://github.com/zzseki/QChatGPT_Plugin_Music](https://github.com/zzseki/QChatGPT_Plugin_Music) - 无介绍(看仓库名猜一下吧) -- [https://github.com/inkOrCloud/Markdown2IMG](https://github.com/inkOrCloud/Markdown2IMG) - QChatGPT插件,将markdown文本转为图片输出 -- [https://github.com/Annalasu/QcPlugin_Md2QQImage](https://github.com/Annalasu/QcPlugin_Md2QQImage) - 将消息中的md图片链接显示为正常图片 -- [https://github.com/the-lazy-me/SillyTavernPlugin](https://github.com/the-lazy-me/SillyTavernPlugin) - QChatGPT插件,可将酒馆SillyTavern的角色卡转写,以适配QChatGPT的人格预设 - +# 插件列表 + +以下是部分插件列表,所有插件请查看[RockChinQ的Star集](https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6) + +- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!! +- [https://github.com/the-lazy-me/NewChatVoice](https://github.com/the-lazy-me/miHoYoVoice) - QChatGPT语音插件,可利用多个TTS平台实现语音聊天 +- [Yuumi0221/URLMaskerPlugin](https://github.com/Yuumi0221/URLMaskerPlugin) - 用于掩码(替换)URL,以应对QQ官方机器人API对消息中URL的限制 +- [ElvisChenML/Waifu](https://github.com/ElvisChenML/Waifu) - 一个QChatGPT的插件,旨在利用程式逻辑搭配LLM创建真实感聊天机器人,探索真实的聊天体验。 +- [Pevernow/QChatGPT_Plugin_Emoticon_v3](https://github.com/Pevernow/QChatGPT_Plugin_Emoticon_v3) - QChatGPT v3可用,基于在线api的表情包插件。 +- [https://github.com/kirifujinagisa/RussianRoulette](https://github.com/kirifujinagisa/RussianRoulette) - 一个qchatgpt俄罗斯轮盘赌的游戏插件 +- [https://github.com/kirifujinagisa/FileSender](https://github.com/kirifujinagisa/FileSender) - 基于qchatgpt的将本机指定文件发送给申请人的插件 +- [https://github.com/ElvisChenML/GalgameMaker](https://github.com/ElvisChenML/GalgameMaker) - QChatGPT 插件,用于快速生成在QQ对话中进行的Galgame。 +- [https://github.com/zzseki/QChatGPT_Plugin_News](https://github.com/zzseki/QChatGPT_Plugin_News) - 无介绍(看仓库名猜一下吧) +- [https://github.com/zzseki/QChatGPT_Plugin_Weather ](https://github.com/zzseki/QChatGPT_Plugin_Weather)- 无介绍(看仓库名猜一下吧) +- [https://github.com/zzseki/QChatGPT_Plugin_Music](https://github.com/zzseki/QChatGPT_Plugin_Music) - 无介绍(看仓库名猜一下吧) +- [https://github.com/inkOrCloud/Markdown2IMG](https://github.com/inkOrCloud/Markdown2IMG) - QChatGPT插件,将markdown文本转为图片输出 +- [https://github.com/Annalasu/QcPlugin_Md2QQImage](https://github.com/Annalasu/QcPlugin_Md2QQImage) - 将消息中的md图片链接显示为正常图片 +- [https://github.com/the-lazy-me/SillyTavernPlugin](https://github.com/the-lazy-me/SillyTavernPlugin) - QChatGPT插件,可将酒馆SillyTavern的角色卡转写,以适配QChatGPT的人格预设 \ No newline at end of file diff --git a/nginx/default.conf b/nginx/default.conf deleted file mode 100644 index 39bde9415..000000000 --- a/nginx/default.conf +++ /dev/null @@ -1,18 +0,0 @@ -server { - listen 80; - server_name localhost; - - location / { - root /usr/share/nginx/html; - index index.html index.htm; - } - - #error_page 404 /404.html; - - # redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } -} diff --git a/nginx/nginx.conf b/nginx/nginx.conf deleted file mode 100644 index acf29eb09..000000000 --- a/nginx/nginx.conf +++ /dev/null @@ -1,29 +0,0 @@ -user nginx; -worker_processes auto; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - #tcp_nopush on; - - keepalive_timeout 65; - - #gzip on; - - include /etc/nginx/conf.d/*.conf; -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..0fed1fca2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1884 @@ +{ + "name": "QChatGPT-wiki", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "vitepress": "^1.3.4" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "dev": true, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", + "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", + "dev": true + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", + "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", + "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", + "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.1.1.tgz", + "integrity": "sha512-jkQNQbGY+XQB3Eln7wqqdUZKBzG8lETcsaUk5gcMc6iIwyN/qW0v0fhpKPH+Kli+BImLxo0CWk12CvVvx2exWA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", + "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.1.1.tgz", + "integrity": "sha512-SFpb3FI/VouGou/vpuS7qeCA5Y/KpV42P6CEA/1MZQtl/xJkl6PVjikb+Q9YadeHi2jtDV/aQ6PyiVDnX4PQcw==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.1.1", + "@algolia/requester-browser-xhr": "5.1.1", + "@algolia/requester-node-http": "5.1.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", + "dev": true + }, + "node_modules/@algolia/logger-console": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", + "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", + "dev": true, + "dependencies": { + "@algolia/logger-common": "4.24.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", + "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.1.1.tgz", + "integrity": "sha512-NXmN1ujJCj5GlJQaMK6DbdiXdcf6nhRef/X40lu9TYi71q9xTo/5RPMI0K2iOp6g07S26BrXFOz6RSV3Ny4LLw==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.1.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", + "dev": true + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.1.1.tgz", + "integrity": "sha512-xwrgnNTIzgxDEx6zuCKSKTPzQLA8fL/WZiVB6fRpIu5agLMjoAi0cWA5YSDbo+2FFxqVgLqKY/Jz6mKmWtY15Q==", + "dev": true, + "peer": true, + "dependencies": { + "@algolia/client-common": "5.1.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", + "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", + "dev": true + }, + "node_modules/@docsearch/js": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.1.tgz", + "integrity": "sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==", + "dev": true, + "dependencies": { + "@docsearch/react": "3.6.1", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", + "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.6.1", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", + "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", + "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", + "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", + "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", + "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", + "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", + "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", + "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", + "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", + "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", + "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", + "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", + "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", + "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", + "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz", + "integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/transformers": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.14.1.tgz", + "integrity": "sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==", + "dev": true, + "dependencies": { + "shiki": "1.14.1" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz", + "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.40", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.3.9.tgz", + "integrity": "sha512-D+GTYtFg68bqSu66EugQUydsOqaDlPLNmYw5oYk8k81uBu9/bVTUrqlAJrAA9Am7MXhKz2gWdDkopY6sOBf/Bg==", + "dev": true, + "dependencies": { + "@vue/devtools-kit": "^7.3.9" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.3.9.tgz", + "integrity": "sha512-Gr17nA+DaQzqyhNx1DUJr1CJRzTRfbIuuC80ZgU8MD/qNO302tv9la+ROi+Uaw+ULVwU9T71GnwLy4n8m9Lspg==", + "dev": true, + "dependencies": { + "@vue/devtools-shared": "^7.3.9", + "birpc": "^0.2.17", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.3.9.tgz", + "integrity": "sha512-CdfMRZKXyI8vw+hqOcQIiLihB6Hbbi7WNZGp7LsuH1Qe4aYAFmTaKjSciRZ301oTnwmU/knC/s5OGuV6UNiNoA==", + "dev": true, + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", + "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", + "dev": true, + "dependencies": { + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", + "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", + "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/runtime-core": "3.4.38", + "@vue/shared": "3.4.38", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", + "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "vue": "3.4.38" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.0.3.tgz", + "integrity": "sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==", + "dev": true, + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.0.3.tgz", + "integrity": "sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==", + "dev": true, + "dependencies": { + "@vueuse/core": "11.0.3", + "@vueuse/shared": "11.0.3", + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.0.3.tgz", + "integrity": "sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.0.3.tgz", + "integrity": "sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/algoliasearch": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", + "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-account": "4.24.0", + "@algolia/client-analytics": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-personalization": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/recommend": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.24.0" + } + }, + "node_modules/birpc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", + "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "dev": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true + }, + "node_modules/minisearch": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz", + "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==", + "dev": true + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.23.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.23.2.tgz", + "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rollup": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/search-insights": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.0.tgz", + "integrity": "sha512-AskayU3QNsXQzSL6v4LTYST7NNfs2HWyHHB+sdORP9chsytAhro5XRfToAMI/LAVYgNbzowVZTMfBRodgbUHKg==", + "dev": true, + "peer": true + }, + "node_modules/shiki": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz", + "integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==", + "dev": true, + "dependencies": { + "@shikijs/core": "1.14.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superjson": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", + "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", + "dev": true, + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/vite": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.3.4.tgz", + "integrity": "sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.6.1", + "@docsearch/js": "^3.6.1", + "@shikijs/core": "^1.13.0", + "@shikijs/transformers": "^1.13.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.1.2", + "@vue/devtools-api": "^7.3.8", + "@vue/shared": "^3.4.38", + "@vueuse/core": "^11.0.0", + "@vueuse/integrations": "^11.0.0", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.0", + "shiki": "^1.13.0", + "vite": "^5.4.1", + "vue": "^3.4.38" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", + "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-sfc": "3.4.38", + "@vue/runtime-dom": "3.4.38", + "@vue/server-renderer": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json index 94e155cf4..253bbadea 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,10 @@ { - "name": "qchatgpt-v3-docs", - "version": "3.0.0", - "description": "一个开源QQ机器人项目(QChatGPT)的文档", - "license": "MIT", - "type": "module", - "scripts": { - "docs:build": "vuepress-vite build src", - "docs:clean-dev": "vuepress-vite dev src --clean-cache", - "docs:dev": "vuepress-vite dev src", - "docs:update-package": "pnpm dlx vp-update" - }, "devDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.7", - "@vuepress/plugin-catalog": "2.0.0-rc.14", - "nodejs-jieba": "^0.1.2", - "vue": "^3.4.15", - "vuepress": "2.0.0-rc.7", - "vuepress-plugin-search-pro": "2.0.0-rc.23", - "vuepress-theme-hope": "2.0.0-rc.23" + "vitepress": "^1.3.4" + }, + "scripts": { + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 209bdcaf9..000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,4138 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@vuepress/bundler-vite': - specifier: 2.0.0-rc.7 - version: 2.0.0-rc.7 - '@vuepress/plugin-catalog': - specifier: 2.0.0-rc.14 - version: 2.0.0-rc.14(vuepress@2.0.0-rc.7) - nodejs-jieba: - specifier: ^0.1.2 - version: 0.1.2 - vue: - specifier: ^3.4.15 - version: 3.4.31 - vuepress: - specifier: 2.0.0-rc.7 - version: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-search-pro: - specifier: 2.0.0-rc.23 - version: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-theme-hope: - specifier: 2.0.0-rc.23 - version: 2.0.0-rc.23(markdown-it@14.1.0)(nodejs-jieba@0.1.2)(vuepress-plugin-search-pro@2.0.0-rc.23)(vuepress@2.0.0-rc.7) - -packages: - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.8': - resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.24.8': - resolution: {integrity: sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==} - engines: {node: '>=6.9.0'} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@lit-labs/ssr-dom-shim@1.2.0': - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} - - '@lit/reactive-element@2.0.4': - resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - - '@mdit-vue/plugin-component@2.1.3': - resolution: {integrity: sha512-9AG17beCgpEw/4ldo/M6Y/1Rh4E1bqMmr/rCkWKmCAxy9tJz3lzY7HQJanyHMJufwsb3WL5Lp7Om/aPcQTZ9SA==} - - '@mdit-vue/plugin-frontmatter@2.1.3': - resolution: {integrity: sha512-KxsSCUVBEmn6sJcchSTiI5v9bWaoRxe68RBYRDGcSEY1GTnfQ5gQPMIsM48P4q1luLEIWurVGGrRu7u93//LDQ==} - - '@mdit-vue/plugin-headers@2.1.3': - resolution: {integrity: sha512-AcL7a7LHQR3ISINhfjGJNE/bHyM0dcl6MYm1Sr//zF7ZgokPGwD/HhD7TzwmrKA9YNYCcO9P3QmF/RN9XyA6CA==} - - '@mdit-vue/plugin-sfc@2.1.3': - resolution: {integrity: sha512-Ezl0dNvQNS639Yl4siXm+cnWtQvlqHrg+u+lnau/OHpj9Xh3LVap/BSQVugKIV37eR13jXXYf3VaAOP1fXPN+w==} - - '@mdit-vue/plugin-title@2.1.3': - resolution: {integrity: sha512-XWVOQoZqczoN97xCDrnQicmXKoqwOjIymIm9HQnRXhHnYKOgJPW1CxSGhkcOGzvDU1v0mD/adojVyyj/s6ggWw==} - - '@mdit-vue/plugin-toc@2.1.3': - resolution: {integrity: sha512-41Q+iXpLHZt0zJdApVwoVt7WF6za/xUjtjEPf90Z3KLzQO01TXsv48Xp9BsrFHPcPcm8tiZ0+O1/ICJO80V/MQ==} - - '@mdit-vue/shared@2.1.3': - resolution: {integrity: sha512-27YI8b0VVZsAlNwaWoaOCWbr4eL8B04HxiYk/y2ktblO/nMcOEOLt4p0RjuobvdyUyjHvGOS09RKhq7qHm1CHQ==} - - '@mdit-vue/types@2.1.0': - resolution: {integrity: sha512-TMBB/BQWVvwtpBdWD75rkZx4ZphQ6MN0O4QB2Bc0oI5PC2uE57QerhNxdRZ7cvBHE2iY2C+BUNUziCfJbjIRRA==} - - '@mdit/plugin-alert@0.8.0': - resolution: {integrity: sha512-mxA/lhOyDDR6/qSAegGG/XZRjUbr1wjwdULudbpkA/CCQi6piW9D0Z8crDQGYz4KPQM9Bgx4Ac81QFSzHOV66Q==} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-align@0.8.0': - resolution: {integrity: sha512-OJPYzSdmT0UZj/QTvnKYE4GelAL0OD8bNIPxpidXbFd3IqYv/8+xMjT6XeR+R3oZEvtbYSc2e1MmO5fo3DopJA==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-attrs@0.8.0': - resolution: {integrity: sha512-ewmx5i+b3M4CRJNDpDNBA0YTHa1snn+adDsDDpDtPPSzCH1NhtWXdzwI0TrcCQUnueeSEEWX/wY4ESo+NRkBNQ==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-container@0.8.0': - resolution: {integrity: sha512-uWK3t0CWssintcmT5PTJVhAwbstcD+SrtijQKs6BhLRtGGgHJ9mOf0ybGjlJhn4077yFFTHmaCIT3K+n5ZVjPg==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-demo@0.8.0': - resolution: {integrity: sha512-yFRXnp3Lj0g4H9ImzHKQwwgtSykrL/BDNEQzql9fdA9FbSygfu0CIxfm+A8lsVos8cAvdsgxy3gILySxpfR89g==} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-figure@0.8.0': - resolution: {integrity: sha512-/o4RoKjnkdWc+K7m6mR7BAu2J79yYE38s8HUc8iKk9v+e9j1E+6LeXcpx1LoPnHzUhT4EO2QmUsv+kAaPFfZYw==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-footnote@0.8.0': - resolution: {integrity: sha512-AaX1rfkJwq9vLX+H/a+XQ3ZxahOXrnMLr5dVZfNdazjqdDEJ7Cc/A7UFtLfOM19F2w3EgvcHR1gbINxIVDn/eg==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - - '@mdit/plugin-img-lazyload@0.8.0': - resolution: {integrity: sha512-Rrlf2FzOxxyszbv3DpkIwEgmYKmtwHdxIO+Whkn0a9QckxnEKkaGl5KARCnM7LqX2fhEyFLgnfkr3onVOJG54g==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-img-mark@0.8.0': - resolution: {integrity: sha512-4P6z2QOfLHLMSXUP4mB/2Rnd6KeHmJBkUXJWJhybcXoIG5S5FDTFHJxOycSP4eGzfdOYAWSlkx6XwXEUGGZz5w==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-img-size@0.8.0': - resolution: {integrity: sha512-r+LbAizP/hw5SisY44VbHEnR7XUKpcHM2k2fwu5wb1+V1crxeigG4sa8rzrJEddU+k6uCl27yL5FTGbHjAl82Q==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-include@0.8.0': - resolution: {integrity: sha512-e8Z8q5VkJ6UX04tTgELraupB/MdHio7hkdYT71wBJ6UQuhSmFv/xMOxFfTcGKH5yzsbEM45BtAFHzSXIi3dMCw==} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-katex@0.8.0': - resolution: {integrity: sha512-u7CX3Xv5nuc2bu2sHrk1nil83/9ETKTBMmy0icbW8zlqBC0ykLo1xTCEBXmdhXtnJtPi9f/wUZVs6iMZrJzbNg==} - engines: {node: '>= 18'} - peerDependencies: - katex: ^0.16.9 - markdown-it: ^14.0.0 - peerDependenciesMeta: - katex: - optional: true - markdown-it: - optional: true - - '@mdit/plugin-mark@0.8.0': - resolution: {integrity: sha512-1hImu8FskIZ9dumWD2VIyB5USyVGwGY2IuaPxYO25tFvMZkhu4rYBjkSK8x+vXExwp94OLzFUlGgVl94S+nw9w==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-mathjax@0.8.0': - resolution: {integrity: sha512-y016KQHa3PoXDUIcQseISMAz5q2mZJ/qocEs2EABT4PjquXPEh/4rw7Ql7KX9gf/SQIUyzj8hYs4bHyRZc6x4w==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - mathjax-full: ^3.2.2 - peerDependenciesMeta: - markdown-it: - optional: true - mathjax-full: - optional: true - - '@mdit/plugin-stylize@0.8.0': - resolution: {integrity: sha512-oNFI3Z7UTxP8CKxS3CIuawLmsyrc0n9jIw9mPzUcPNp+LtYmLktfZc3FIRlqpUUq34YwHTH3yihayBRdSkVV6A==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-sub@0.8.0': - resolution: {integrity: sha512-oqCcmJVJykESgNJ4fFmDKKxRRQddwkXWIT4PjF83XSeXHxTOz8gMfke/V1mE7BAfKKCLP4io8HbrYfvIiOTZ4A==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-sup@0.8.0': - resolution: {integrity: sha512-5/uE2lONNjCgGDXC8jZ265tzefjUNQNakmK4PSCI4D5jD80xFrxc6MKh70VLCOL8Xk6COK/K9f0SAU2lwa97Tg==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-tab@0.8.0': - resolution: {integrity: sha512-SNa1S14Buuy564egiUTkU9HTTNFrEURJZLqA1+jr/2xYCdICPym0FWcB0cLtBl3lrQZkFtbxhzC6ws5JBt/ERQ==} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-tasklist@0.8.0': - resolution: {integrity: sha512-vfOTZdXIL/jk/ConUqCODI5WuqgB9qiBGc+wIa7UMhe73KcpwFeGFJVQZm9AvjhXDDYqznJxSMVRP/TN7TxVVw==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-tex@0.8.0': - resolution: {integrity: sha512-uh4kOhwBVEESz6dMmHk4Hn/AVfVtUhMA1UKpwMc1EL9qelodJ0YzSYfNXp6d/PS+E1l53yp8nMZK90DUO+3vpA==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-uml@0.8.0': - resolution: {integrity: sha512-6TOVxLhmdzV7bzjlJCRP5uCFq62Xwk2ZAeYUK3RLx9lgM3s2Mww5ENhdysnQMd7VQlUHsPmp4XIMBZZjPddg3g==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.0.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/agent@2.2.2': - resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/fs@3.1.1': - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@rollup/rollup-android-arm-eabi@4.18.1': - resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.18.1': - resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.18.1': - resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.18.1': - resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': - resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.18.1': - resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.18.1': - resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.18.1': - resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': - resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.18.1': - resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.18.1': - resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.18.1': - resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.18.1': - resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.18.1': - resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.18.1': - resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.18.1': - resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} - cpu: [x64] - os: [win32] - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@stackblitz/sdk@1.11.0': - resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/hash-sum@1.0.2': - resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} - - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - - '@types/katex@0.16.7': - resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} - - '@types/linkify-it@3.0.5': - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - - '@types/markdown-it-emoji@2.0.5': - resolution: {integrity: sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==} - - '@types/markdown-it@13.0.8': - resolution: {integrity: sha512-V+KmpgiipS+zoypeUSS9ojesWtY/0k4XfqcK2fnVrX/qInJhX7rsCxZ/rygiPH2zxlPPrhfuW0I6ddMcWTKLsg==} - - '@types/markdown-it@14.1.1': - resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} - - '@types/mdurl@1.0.5': - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} - - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - - '@vitejs/plugin-vue@5.0.5': - resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: ^5.0.0 - vue: ^3.2.25 - - '@vue/compiler-core@3.4.31': - resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - - '@vue/compiler-dom@3.4.31': - resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - - '@vue/compiler-sfc@3.4.31': - resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - - '@vue/compiler-ssr@3.4.31': - resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} - - '@vue/devtools-api@6.6.3': - resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - - '@vue/reactivity@3.4.31': - resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} - - '@vue/runtime-core@3.4.31': - resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} - - '@vue/runtime-dom@3.4.31': - resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} - - '@vue/server-renderer@3.4.31': - resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} - peerDependencies: - vue: 3.4.31 - - '@vue/shared@3.4.31': - resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} - - '@vuepress/bundler-vite@2.0.0-rc.7': - resolution: {integrity: sha512-2jNnU3sgHJuUCPfE0DvGRsAxo/A/Locguvnv4Q6QwJYdB1fuAqE6x5p8RDzq8Lv/GsyeexDWiV/PFER5EtVP3w==} - - '@vuepress/cli@2.0.0-rc.7': - resolution: {integrity: sha512-SD9Z8vRF1tEKYE4X0qzARr3tHyqfKJJ1MpySL44w1uYSf7nmpJD5ejNsUZxEetj5Vrv8u1jX5IO/3GkPXj5OWA==} - hasBin: true - - '@vuepress/client@2.0.0-rc.7': - resolution: {integrity: sha512-T8jf9h8dfP1ln/7uOIiTAJrdyKRTyq1x+RHXuc7GoRxTfOw+bIYgGvh63Z7m1e3K/yh1nO9aM1WcXbDN1Swp4w==} - - '@vuepress/core@2.0.0-rc.7': - resolution: {integrity: sha512-SPd2C9MIwHLe4mEWJfbcTHT5caS/vW+oeP79wAW0otSGgn2uY3Mmu5qcYPzl+17o8EYv7vDvPiO+uitp/Cek+A==} - - '@vuepress/helper@2.0.0-rc.12': - resolution: {integrity: sha512-98sWHoXquQw7UYcmP2fJN4ALV815kXxccSne7MN1OqvpkgeLyEKzlHDf/HCtTYznWT3eSZ6FIvDiq6BaH8PQjQ==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/helper@2.0.0-rc.37': - resolution: {integrity: sha512-Sa2H6EqRuG0+521Z5WN7I8EQNwLwFe7U+1KtV01zFp2BcehsgD3EigBjBP7hl01ubb4T8wR7CxWv7cGVA4bPcw==} - peerDependencies: - vuepress: 2.0.0-rc.14 - - '@vuepress/markdown@2.0.0-rc.7': - resolution: {integrity: sha512-mczvo7MZxxXXj5htDXK22r0a7JjTP5sTlcywtVOTJurzCKp8SNSbr3HdmsAnr9S838Hn9+dkvhs57rqgPG3UHA==} - - '@vuepress/plugin-active-header-links@2.0.0-rc.12': - resolution: {integrity: sha512-t9pgjeu5mZJgtJ1u8+xZxd5uGNtSraRavx4o9juVGy/DjHXJHYbS4qnfAhE8GmVUThzQUfvPFZRsuNqiZn2lLA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-back-to-top@2.0.0-rc.12': - resolution: {integrity: sha512-LTdAeJje6zOBPdWST1qIyzjP35kjAUJAbMkzH7tddejIEfRkfVf6l9nZ8ksMSgzNVVSkO+4unBHqBLa2pLRsUw==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-blog@2.0.0-rc.12': - resolution: {integrity: sha512-LZ0oX9QBxTHHtiUk7ONZHTwDaWoCejXjGgJXGXZDvCfQetCzLWoRYOao7bUxHUrmtD10JyaW+5fCAgHynXgBNQ==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-catalog@2.0.0-rc.12': - resolution: {integrity: sha512-qlWDUeIsYKcxLa0A//344DarCdLdD3pxfcR5YvJm0CwGCBgA0LnG4gbfMGXyvvRDea/aOnsWK7ePXoDPWvCOPw==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-catalog@2.0.0-rc.14': - resolution: {integrity: sha512-lpWg/vooMHssbF17hSjh22iqMcP5c7UkzLi8YaKNntk9frdKGPRhs5A74fFjr8jTHGt4+S3PxOaGkcmgfnbRdQ==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-copy-code@2.0.0-rc.12': - resolution: {integrity: sha512-6FELMaKsaQ/hjPom8VjTC5N9QKdtCLrHLeSz2D2z16+9rnbkAfootEH1T08GN3/PyP2ZZA8OqCPvaNAKiCKGiQ==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-copyright@2.0.0-rc.13': - resolution: {integrity: sha512-EGKZ6o7Oj3HeSG4VMAIwLBn/O2LSk5uI90LzbLAfsl9eE0nBCanOlL3SnB5AiDTW8zeDZVwJk6BTbd6ymoajXw==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-external-link-icon@2.0.0-rc.12': - resolution: {integrity: sha512-ycvrDK+/75bmvbBPhUSxoOm2OiO+yC36iDs/Vs1OIlVuLDWz3GHuMxkP4uXrla0tQbkxKqyPA/O5Ihhlxz6KAA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-git@2.0.0-rc.12': - resolution: {integrity: sha512-DYriGdqDscbbt1y4nHrjS7ye+wdiY1fBJU+RvimId26Y1Q/I3DKsQSvRqtTg6tcQ4vt7/NJh1OiiuSaoNIQrnA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-nprogress@2.0.0-rc.12': - resolution: {integrity: sha512-Tuf9AsT4OwCwNFV4jf6vYefPrzDOdMobsUs94kvglDCkEUgepClmW+1KfK3RCoNC4GCrsX95Fz7LvfbeaxtKsQ==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-photo-swipe@2.0.0-rc.13': - resolution: {integrity: sha512-OAOtrQIOaS0Bd1iBc7SqbOEkNsQsJKDT8FHY2hhDPatrSQBaWO1ilgTU0LYbBQ/Ewfkkafy6wsjtLuM8xkh4pA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-prismjs@2.0.0-rc.12': - resolution: {integrity: sha512-DiTdHgH3JFbCn5toSSsMsWvb+PYc4IHjt39o+3GU9j12GtFwHke7hDmXUWwegzYa7bWR0CfikDAto/8WIguRbA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-reading-time@2.0.0-rc.12': - resolution: {integrity: sha512-HVD5JZcKE06hWs8/DemKVWh+Z5dUh3Ztw0OmFxpObN3NkO5jQvLnlmKj5b14dbyk2nsMOfFDzkvMgezBXKiHFw==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-rtl@2.0.0-rc.12': - resolution: {integrity: sha512-keyD4LLnFL3awjVdpentqUGWX0iB93uk5GSL7L4lppn20vnS8StrjTvGxYiViAYu+vB9drVG/3DiPkOcp5dy9Q==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-seo@2.0.0-rc.12': - resolution: {integrity: sha512-aOiuZ7y0B99GROuhqTXQQsB0+sWX2l3geoZMzrJlbsykBCGcSN8RBHmdcIouzid83jBkOkBt6AxLRQKpQyWgwA==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-sitemap@2.0.0-rc.12': - resolution: {integrity: sha512-XrFBpQvfeJqQuL5ofCVf/hui5IRJPP6tEA2sBJTjtJH4y0xRgnE23RALE7mpsqD2Mo7TnAgrDORRgZL0Zzy94g==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/plugin-theme-data@2.0.0-rc.12': - resolution: {integrity: sha512-0hhb83MLG275BDF6OE4gNhz/tZBks6OyjPqkaTbdRHCEhuZD3UwFp+t3b7lUbAkftWSBSidhE0unkaqJw5zJuw==} - peerDependencies: - vuepress: 2.0.0-rc.7 - - '@vuepress/shared@2.0.0-rc.7': - resolution: {integrity: sha512-zNsYzAW5tuENb4vML0pK/61W3EscyOcn5JVPC+c6AwvsYWyAigZaMSu9ycGAptjDwzdYSi3gd33N9Q9T7pG77Q==} - - '@vuepress/utils@2.0.0-rc.7': - resolution: {integrity: sha512-47c7T72JwOWH1EgG7f/KwWNpIknd9IC5JmrizGI5IVUM4G16Vyj5oPQuXqLobV47m8JOxPW4dLpsglZGVaKQeg==} - - '@vueuse/core@10.11.0': - resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} - - '@vueuse/metadata@10.11.0': - resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} - - '@vueuse/shared@10.11.0': - resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balloon-css@1.2.0: - resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==} - - bcrypt-ts@5.0.2: - resolution: {integrity: sha512-gDwQ5784AkkfhHACh3jGcg1hUubyZyeq9AtVd5gXkcyHGVOC+mORjRIHSj+fHfqwY5vxwyBLXQpcfk8MpK0ROg==} - engines: {node: '>=18'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.23.2: - resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cacache@18.0.4: - resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001641: - resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - create-codepen@1.0.1: - resolution: {integrity: sha512-XzSWwGCFNeOnNGp3KdCDGaKq4Cp1SvjzpPGQqO0tj1HT3BhksLdl/xQ2ZEY4+0MQ3m1I/K1Fvpm4GGMthtamyA==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.4.827: - resolution: {integrity: sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==} - - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-east-asian-width@1.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - giscus@1.5.0: - resolution: {integrity: sha512-t3LL0qbSO3JXq3uyQeKpF5CegstGfKX/0gI6eDe1cmnI7D56R7j52yLdzw4pdKrg3VnufwCgCM3FDz7G1Qr6lg==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - immutable@4.3.6: - resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} - engines: {node: '>=18'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - - lit-element@4.0.6: - resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==} - - lit-html@3.1.4: - resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==} - - lit@3.1.4: - resolution: {integrity: sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-fetch-happen@13.0.1: - resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} - engines: {node: ^16.14.0 || >=18.0.0} - - markdown-it-anchor@8.6.7: - resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - - markdown-it-emoji@3.0.0: - resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} - - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-fetch@3.0.5: - resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-gyp@10.2.0: - resolution: {integrity: sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - nodejs-jieba@0.1.2: - resolution: {integrity: sha512-VOBhc1muuH00apYn78bVJSPUn7xakyawJNTl+3jVu3038FpxKBp4qxfGkpb07DXWFf12IlcIT4UzmhqXzASKxg==} - engines: {node: ^18.0.0 || ^20.0.0} - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - ora@8.0.1: - resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} - engines: {node: '>=18'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - photoswipe@5.4.4: - resolution: {integrity: sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==} - engines: {node: '>= 0.12.0'} - - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} - engines: {node: ^10 || ^12 || >=14} - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - - qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rollup@4.18.1: - resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass@1.77.8: - resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} - engines: {node: '>=14.0.0'} - hasBin: true - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - 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'} - - sitemap@7.1.2: - resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slimsearch@2.1.1: - resolution: {integrity: sha512-l1utJWal8F/RIheYk88DE2+enI12nIrn5SHt4ih/CNAH81PzkTv2GVBODlLynDJb7xan5hjd8XTL5f0L4cxLQA==} - engines: {node: '>=18.18.0'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} - engines: {node: '>= 14'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - - ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite@5.0.13: - resolution: {integrity: sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vue-demi@0.14.8: - resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - - vue-router@4.4.0: - resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} - peerDependencies: - vue: ^3.2.0 - - vue@3.4.31: - resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - vuepress-plugin-comment2@2.0.0-rc.23: - resolution: {integrity: sha512-HyF+RFrvQljAdbHLAdRdx5VMq1268l0U0yQAg6ikI44hb/eB04D5+KRfWhqpQNUayHv28V3PsDQ8KqcrfD8cSA==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Use @vuepress/plugin-comment@next instead - peerDependencies: - '@waline/client': ^2.15.8 || ^3.0.0-alpha.11 - artalk: ^2.7.3 - sass-loader: ^14.0.0 - twikoo: ^1.5.0 - vuepress: 2.0.0-rc.7 - peerDependenciesMeta: - '@waline/client': - optional: true - artalk: - optional: true - sass-loader: - optional: true - twikoo: - optional: true - - vuepress-plugin-components@2.0.0-rc.23: - resolution: {integrity: sha512-A0bh2a5aLXSg2YfZLicLRc4kbNwGNljBTV9xv1JhLzBqbvd/TRXX5NQFKz4Fgq9Ju/aYOXDEHkinMXFNvZvjBw==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - artplayer: ^5.0.0 - dashjs-pure: ^1.0.0 - hls.js: ^1.4.12 - mpegts.js: ^1.7.3 - plyr: ^3.7.8 - sass-loader: ^14.0.0 - vidstack: ^1.9.0 - vuepress: 2.0.0-rc.7 - peerDependenciesMeta: - artplayer: - optional: true - dashjs-pure: - optional: true - hls.js: - optional: true - mpegts.js: - optional: true - plyr: - optional: true - sass-loader: - optional: true - vidstack: - optional: true - - vuepress-plugin-md-enhance@2.0.0-rc.23: - resolution: {integrity: sha512-oyQjb2pGjAVSzIRmf24ALKfEE/fVTR5/9N/9Y2IaIJnB1xB+uvsa9NlRRORro1+niNmcbG9ETMHzkC0J9CVrlg==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - '@types/reveal.js': ^4.4.5 - '@vue/repl': ^3.0.0 - chart.js: ^4.0.0 - echarts: ^5.0.0 - flowchart.ts: ^2.0.0 || ^3.0.0 - katex: ^0.16.0 - kotlin-playground: ^1.23.0 - markmap-lib: ^0.15.5 - markmap-toolbar: ^0.15.5 - markmap-view: ^0.15.5 - mathjax-full: ^3.2.2 - mermaid: ^10.8.0 - reveal.js: ^5.0.0 - sandpack-vue3: ^3.0.0 - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.7 - peerDependenciesMeta: - '@types/reveal.js': - optional: true - '@vue/repl': - optional: true - chart.js: - optional: true - echarts: - optional: true - flowchart.ts: - optional: true - katex: - optional: true - kotlin-playground: - optional: true - markmap-lib: - optional: true - markmap-toolbar: - optional: true - markmap-view: - optional: true - mathjax-full: - optional: true - mermaid: - optional: true - reveal.js: - optional: true - sandpack-vue3: - optional: true - sass-loader: - optional: true - - vuepress-plugin-sass-palette@2.0.0-rc.23: - resolution: {integrity: sha512-tszb4KpJegfNMrmp1DZn95qAIRAJJAfuuCAhAHuwQ+yZI1GrZd3m8b5hOQejHLE1Bimwb3Kj/lYPVMnb/2c6gA==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.7 - peerDependenciesMeta: - sass-loader: - optional: true - - vuepress-plugin-search-pro@2.0.0-rc.23: - resolution: {integrity: sha512-pWihTdqKusQAOue88DUtW67RJpNDNdwHAcM3kJTEzLfTIaJdsji/gjt3Sm8eX44qhYs+vWa9ZX/MkjbCPg9cdw==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.7 - peerDependenciesMeta: - sass-loader: - optional: true - - vuepress-shared@2.0.0-rc.23: - resolution: {integrity: sha512-1es+bJ13E4UNkIr5kuPMX8h77aGZEuHLknH4u8B0qh+kP/CuuRXhUVQ6AHCuyDArL9mUc7CFwo+ro7zqDpsA1Q==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - vuepress: 2.0.0-rc.7 - - vuepress-theme-hope@2.0.0-rc.23: - resolution: {integrity: sha512-4ONVCNpQ0IiJsFwoGIQO7kV2OWJNr+LuDv7TsM+fa/b1b+bu/oeOGObnBMXc91YofB8Pqno0W+wYHEhLwheY0A==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.12 - '@vuepress/plugin-feed': 2.0.0-rc.12 - '@vuepress/plugin-redirect': 2.0.0-rc.12 - '@vuepress/plugin-search': 2.0.0-rc.12 - nodejs-jieba: ^0.1.2 - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.7 - vuepress-plugin-pwa2: 2.0.0-rc.23 - vuepress-plugin-search-pro: 2.0.0-rc.23 - peerDependenciesMeta: - '@vuepress/plugin-docsearch': - optional: true - '@vuepress/plugin-feed': - optional: true - '@vuepress/plugin-redirect': - optional: true - '@vuepress/plugin-search': - optional: true - nodejs-jieba: - optional: true - sass-loader: - optional: true - vuepress-plugin-pwa2: - optional: true - vuepress-plugin-search-pro: - optional: true - - vuepress@2.0.0-rc.7: - resolution: {integrity: sha512-j0Fb0XtrGnlLxKflarjPa4V/NMzj0lc0RIFNgcQBFZnQHSr5IuSVES7Kt7mDNBlLRpAadQxB6IFC1v2wDEcD/w==} - engines: {node: '>=18.16.0'} - hasBin: true - peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.7 - '@vuepress/bundler-webpack': 2.0.0-rc.7 - vue: ^3.4.0 - peerDependenciesMeta: - '@vuepress/bundler-vite': - optional: true - '@vuepress/bundler-webpack': - optional: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - -snapshots: - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/parser@7.24.8': - dependencies: - '@babel/types': 7.24.8 - - '@babel/types@7.24.8': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@isaacs/cliui@8.0.2': - 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 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@lit-labs/ssr-dom-shim@1.2.0': {} - - '@lit/reactive-element@2.0.4': - dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 - - '@mapbox/node-pre-gyp@1.0.11': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.2 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@mdit-vue/plugin-component@2.1.3': - dependencies: - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-frontmatter@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - gray-matter: 4.0.3 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-headers@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-sfc@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-title@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-toc@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/shared@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.1 - markdown-it: 14.1.0 - - '@mdit-vue/types@2.1.0': {} - - '@mdit/plugin-alert@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-align@0.8.0(markdown-it@14.1.0)': - dependencies: - '@mdit/plugin-container': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-attrs@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-container@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-demo@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-figure@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-footnote@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-img-lazyload@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-img-mark@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-img-size@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-include@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - upath: 2.0.1 - - '@mdit/plugin-katex@0.8.0(markdown-it@14.1.0)': - dependencies: - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) - '@types/katex': 0.16.7 - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-mark@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-mathjax@0.8.0(markdown-it@14.1.0)': - dependencies: - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - upath: 2.0.1 - - '@mdit/plugin-stylize@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-sub@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-sup@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-tab@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-tasklist@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-tex@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@mdit/plugin-uml@0.8.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@npmcli/agent@2.2.2': - dependencies: - agent-base: 7.1.1 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - - '@npmcli/fs@3.1.1': - dependencies: - semver: 7.6.2 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@rollup/rollup-android-arm-eabi@4.18.1': - optional: true - - '@rollup/rollup-android-arm64@4.18.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.18.1': - optional: true - - '@rollup/rollup-darwin-x64@4.18.1': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.18.1': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.18.1': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.18.1': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.18.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.18.1': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.18.1': - optional: true - - '@rollup/rollup-linux-x64-musl@4.18.1': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.18.1': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.18.1': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.18.1': - optional: true - - '@sindresorhus/merge-streams@2.3.0': {} - - '@stackblitz/sdk@1.11.0': {} - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree@1.0.5': {} - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 20.14.10 - - '@types/hash-sum@1.0.2': {} - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 20.14.10 - - '@types/katex@0.16.7': {} - - '@types/linkify-it@3.0.5': {} - - '@types/linkify-it@5.0.0': {} - - '@types/markdown-it-emoji@2.0.5': - dependencies: - '@types/markdown-it': 13.0.8 - - '@types/markdown-it@13.0.8': - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - - '@types/markdown-it@14.1.1': - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 - - '@types/mdurl@1.0.5': {} - - '@types/mdurl@2.0.0': {} - - '@types/ms@0.7.34': {} - - '@types/node@17.0.45': {} - - '@types/node@20.14.10': - dependencies: - undici-types: 5.26.5 - - '@types/sax@1.2.7': - dependencies: - '@types/node': 17.0.45 - - '@types/trusted-types@2.0.7': {} - - '@types/web-bluetooth@0.0.20': {} - - '@vitejs/plugin-vue@5.0.5(vite@5.0.13)(vue@3.4.31)': - dependencies: - vite: 5.0.13 - vue: 3.4.31 - - '@vue/compiler-core@3.4.31': - dependencies: - '@babel/parser': 7.24.8 - '@vue/shared': 3.4.31 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - - '@vue/compiler-dom@3.4.31': - dependencies: - '@vue/compiler-core': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/compiler-sfc@3.4.31': - dependencies: - '@babel/parser': 7.24.8 - '@vue/compiler-core': 3.4.31 - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.39 - source-map-js: 1.2.0 - - '@vue/compiler-ssr@3.4.31': - dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/devtools-api@6.6.3': {} - - '@vue/reactivity@3.4.31': - dependencies: - '@vue/shared': 3.4.31 - - '@vue/runtime-core@3.4.31': - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/shared': 3.4.31 - - '@vue/runtime-dom@3.4.31': - dependencies: - '@vue/reactivity': 3.4.31 - '@vue/runtime-core': 3.4.31 - '@vue/shared': 3.4.31 - csstype: 3.1.3 - - '@vue/server-renderer@3.4.31(vue@3.4.31)': - dependencies: - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - vue: 3.4.31 - - '@vue/shared@3.4.31': {} - - '@vuepress/bundler-vite@2.0.0-rc.7': - dependencies: - '@vitejs/plugin-vue': 5.0.5(vite@5.0.13)(vue@3.4.31) - '@vuepress/client': 2.0.0-rc.7 - '@vuepress/core': 2.0.0-rc.7 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - autoprefixer: 10.4.19(postcss@8.4.39) - connect-history-api-fallback: 2.0.0 - postcss: 8.4.39 - postcss-load-config: 5.1.0(postcss@8.4.39) - rollup: 4.18.1 - vite: 5.0.13 - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - transitivePeerDependencies: - - '@types/node' - - '@vue/composition-api' - - jiti - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - '@vuepress/cli@2.0.0-rc.7': - dependencies: - '@vuepress/core': 2.0.0-rc.7 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - cac: 6.7.14 - chokidar: 3.6.0 - envinfo: 7.13.0 - esbuild: 0.19.12 - transitivePeerDependencies: - - '@vue/composition-api' - - supports-color - - typescript - - '@vuepress/client@2.0.0-rc.7': - dependencies: - '@vue/devtools-api': 6.6.3 - '@vuepress/shared': 2.0.0-rc.7 - '@vueuse/core': 10.11.0(vue@3.4.31) - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/core@2.0.0-rc.7': - dependencies: - '@vuepress/client': 2.0.0-rc.7 - '@vuepress/markdown': 2.0.0-rc.7 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - vue: 3.4.31 - transitivePeerDependencies: - - '@vue/composition-api' - - supports-color - - typescript - - '@vuepress/helper@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vue/shared': 3.4.31 - cheerio: 1.0.0-rc.12 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/helper@2.0.0-rc.37(vuepress@2.0.0-rc.7)': - dependencies: - '@vue/shared': 3.4.31 - cheerio: 1.0.0-rc.12 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/markdown@2.0.0-rc.7': - dependencies: - '@mdit-vue/plugin-component': 2.1.3 - '@mdit-vue/plugin-frontmatter': 2.1.3 - '@mdit-vue/plugin-headers': 2.1.3 - '@mdit-vue/plugin-sfc': 2.1.3 - '@mdit-vue/plugin-title': 2.1.3 - '@mdit-vue/plugin-toc': 2.1.3 - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 13.0.8 - '@types/markdown-it-emoji': 2.0.5 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - markdown-it: 14.1.0 - markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.8)(markdown-it@14.1.0) - markdown-it-emoji: 3.0.0 - mdurl: 2.0.0 - transitivePeerDependencies: - - supports-color - - '@vuepress/plugin-active-header-links@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vueuse/core': 10.11.0(vue@3.4.31) - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-back-to-top@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-blog@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - chokidar: 3.6.0 - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-catalog@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-catalog@2.0.0-rc.14(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.37(vuepress@2.0.0-rc.7) - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-copy-code@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-copyright@2.0.0-rc.13(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-external-link-icon@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-git@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - execa: 8.0.1 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - - '@vuepress/plugin-nprogress@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-photo-swipe@2.0.0-rc.13(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - photoswipe: 5.4.4 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-prismjs@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - prismjs: 1.29.0 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - - '@vuepress/plugin-reading-time@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-rtl@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-seo@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-sitemap@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - sitemap: 7.1.2 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-theme-data@2.0.0-rc.12(vuepress@2.0.0-rc.7)': - dependencies: - '@vue/devtools-api': 6.6.3 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - typescript - - '@vuepress/shared@2.0.0-rc.7': - dependencies: - '@mdit-vue/types': 2.1.0 - - '@vuepress/utils@2.0.0-rc.7': - dependencies: - '@types/debug': 4.1.12 - '@types/fs-extra': 11.0.4 - '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.7 - debug: 4.3.5 - fs-extra: 11.2.0 - globby: 14.0.2 - hash-sum: 2.0.0 - ora: 8.0.1 - picocolors: 1.0.1 - upath: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@vueuse/core@10.11.0(vue@3.4.31)': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.31) - vue-demi: 0.14.8(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/metadata@10.11.0': {} - - '@vueuse/shared@10.11.0(vue@3.4.31)': - dependencies: - vue-demi: 0.14.8(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - abbrev@1.1.1: {} - - abbrev@2.0.0: {} - - agent-base@6.0.2: - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - agent-base@7.1.1: - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@5.0.2: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - autoprefixer@10.4.19(postcss@8.4.39): - dependencies: - browserslist: 4.23.2 - caniuse-lite: 1.0.30001641 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.39 - postcss-value-parser: 4.2.0 - - balanced-match@1.0.2: {} - - balloon-css@1.2.0: {} - - bcrypt-ts@5.0.2: {} - - binary-extensions@2.3.0: {} - - boolbase@1.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.23.2: - dependencies: - caniuse-lite: 1.0.30001641 - electron-to-chromium: 1.4.827 - node-releases: 2.0.14 - update-browserslist-db: 1.1.0(browserslist@4.23.2) - - cac@6.7.14: {} - - cacache@18.0.4: - dependencies: - '@npmcli/fs': 3.1.1 - fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.6 - tar: 6.2.1 - unique-filename: 3.0.0 - - camelcase@5.3.1: {} - - caniuse-lite@1.0.30001641: {} - - chalk@5.3.0: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chownr@2.0.0: {} - - clean-stack@2.2.0: {} - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - color-support@1.1.3: {} - - concat-map@0.0.1: {} - - connect-history-api-fallback@2.0.0: {} - - console-control-strings@1.1.0: {} - - create-codepen@1.0.1: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - - css-what@6.1.0: {} - - csstype@3.1.3: {} - - dayjs@1.11.11: {} - - debug@4.3.5: - dependencies: - ms: 2.1.2 - - decamelize@1.2.0: {} - - delegates@1.0.0: {} - - detect-libc@2.0.3: {} - - dijkstrajs@1.0.3: {} - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.4.827: {} - - emoji-regex@10.3.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - encode-utf8@1.0.3: {} - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - envinfo@7.13.0: {} - - err-code@2.0.3: {} - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - escalade@3.1.2: {} - - esprima@4.0.1: {} - - estree-walker@2.0.2: {} - - execa@8.0.1: - 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 - - exponential-backoff@3.1.1: {} - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fflate@0.8.2: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - foreground-child@3.2.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.2 - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.2.0: {} - - get-stream@8.0.1: {} - - giscus@1.5.0: - dependencies: - lit: 3.1.4 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.2.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.1 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - graceful-fs@4.2.11: {} - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - has-unicode@2.0.1: {} - - hash-sum@2.0.0: {} - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.5: - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - - human-signals@5.0.0: {} - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ignore@5.3.1: {} - - immutable@4.3.6: {} - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extendable@0.1.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@2.0.0: {} - - is-lambda@1.0.1: {} - - is-number@7.0.0: {} - - is-stream@3.0.0: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.0.0: {} - - isexe@2.0.0: {} - - isexe@3.1.1: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsbn@1.1.0: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - kind-of@6.0.3: {} - - lilconfig@3.1.2: {} - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - lit-element@4.0.6: - dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 - '@lit/reactive-element': 2.0.4 - lit-html: 3.1.4 - - lit-html@3.1.4: - dependencies: - '@types/trusted-types': 2.0.7 - - lit@3.1.4: - dependencies: - '@lit/reactive-element': 2.0.4 - lit-element: 4.0.6 - lit-html: 3.1.4 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - log-symbols@6.0.0: - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - - lru-cache@10.4.3: {} - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-fetch-happen@13.0.1: - dependencies: - '@npmcli/agent': 2.2.2 - cacache: 18.0.4 - http-cache-semantics: 4.1.1 - is-lambda: 1.0.1 - minipass: 7.1.2 - minipass-fetch: 3.0.5 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - proc-log: 4.2.0 - promise-retry: 2.0.1 - ssri: 10.0.6 - transitivePeerDependencies: - - supports-color - - markdown-it-anchor@8.6.7(@types/markdown-it@13.0.8)(markdown-it@14.1.0): - dependencies: - '@types/markdown-it': 13.0.8 - markdown-it: 14.1.0 - - markdown-it-emoji@3.0.0: {} - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - mdurl@2.0.0: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.2 - - minipass-fetch@3.0.5: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mkdirp@1.0.4: {} - - ms@2.1.2: {} - - nanoid@3.3.7: {} - - negotiator@0.6.3: {} - - node-addon-api@7.1.1: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp@10.2.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.4.5 - graceful-fs: 4.2.11 - make-fetch-happen: 13.0.1 - nopt: 7.2.1 - proc-log: 4.2.0 - semver: 7.6.2 - tar: 6.2.1 - which: 4.0.0 - transitivePeerDependencies: - - supports-color - - node-releases@2.0.14: {} - - nodejs-jieba@0.1.2: - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - node-addon-api: 7.1.1 - node-gyp: 10.2.0 - transitivePeerDependencies: - - encoding - - supports-color - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - - nopt@7.2.1: - dependencies: - abbrev: 2.0.0 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-assign@4.1.1: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - ora@8.0.1: - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-try@2.2.0: {} - - package-json-from-dist@1.0.0: {} - - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - - parse5@7.1.2: - dependencies: - entities: 4.5.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-type@5.0.0: {} - - photoswipe@5.4.4: {} - - picocolors@1.0.1: {} - - picomatch@2.3.1: {} - - pngjs@5.0.0: {} - - postcss-load-config@5.1.0(postcss@8.4.39): - dependencies: - lilconfig: 3.1.2 - postcss: 8.4.39 - yaml: 2.4.5 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.39: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - prismjs@1.29.0: {} - - proc-log@4.2.0: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - punycode.js@2.3.1: {} - - qrcode@1.5.3: - dependencies: - dijkstrajs: 1.0.3 - encode-utf8: 1.0.3 - pngjs: 5.0.0 - yargs: 15.4.1 - - queue-microtask@1.2.3: {} - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - require-directory@2.1.1: {} - - require-main-filename@2.0.0: {} - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - retry@0.12.0: {} - - reusify@1.0.4: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rollup@4.18.1: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.1 - '@rollup/rollup-android-arm64': 4.18.1 - '@rollup/rollup-darwin-arm64': 4.18.1 - '@rollup/rollup-darwin-x64': 4.18.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 - '@rollup/rollup-linux-arm-musleabihf': 4.18.1 - '@rollup/rollup-linux-arm64-gnu': 4.18.1 - '@rollup/rollup-linux-arm64-musl': 4.18.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 - '@rollup/rollup-linux-riscv64-gnu': 4.18.1 - '@rollup/rollup-linux-s390x-gnu': 4.18.1 - '@rollup/rollup-linux-x64-gnu': 4.18.1 - '@rollup/rollup-linux-x64-musl': 4.18.1 - '@rollup/rollup-win32-arm64-msvc': 4.18.1 - '@rollup/rollup-win32-ia32-msvc': 4.18.1 - '@rollup/rollup-win32-x64-msvc': 4.18.1 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: - optional: true - - sass@1.77.8: - dependencies: - chokidar: 3.6.0 - immutable: 4.3.6 - source-map-js: 1.2.0 - - sax@1.4.1: {} - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - semver@6.3.1: {} - - semver@7.6.2: {} - - set-blocking@2.0.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sitemap@7.1.2: - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.4.1 - - slash@5.1.0: {} - - slimsearch@2.1.1: {} - - smart-buffer@4.2.0: {} - - socks-proxy-agent@8.0.4: - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - source-map-js@1.2.0: {} - - sprintf-js@1.0.3: {} - - sprintf-js@1.1.3: {} - - ssri@10.0.6: - dependencies: - minipass: 7.1.2 - - stdin-discarder@0.2.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.2.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-bom-string@1.0.0: {} - - strip-final-newline@3.0.0: {} - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tr46@0.0.3: {} - - uc.micro@2.1.0: {} - - undici-types@5.26.5: {} - - unicorn-magic@0.1.0: {} - - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - - universalify@2.0.1: {} - - upath@2.0.1: {} - - update-browserslist-db@1.1.0(browserslist@4.23.2): - dependencies: - browserslist: 4.23.2 - escalade: 3.1.2 - picocolors: 1.0.1 - - util-deprecate@1.0.2: {} - - vite@5.0.13: - dependencies: - esbuild: 0.19.12 - postcss: 8.4.39 - rollup: 4.18.1 - optionalDependencies: - fsevents: 2.3.3 - - vue-demi@0.14.8(vue@3.4.31): - dependencies: - vue: 3.4.31 - - vue-router@4.4.0(vue@3.4.31): - dependencies: - '@vue/devtools-api': 6.6.3 - vue: 3.4.31 - - vue@3.4.31: - dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-sfc': 3.4.31 - '@vue/runtime-dom': 3.4.31 - '@vue/server-renderer': 3.4.31(vue@3.4.31) - '@vue/shared': 3.4.31 - - vuepress-plugin-comment2@2.0.0-rc.23(vuepress@2.0.0-rc.7): - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - giscus: 1.5.0 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-sass-palette: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-components@2.0.0-rc.23(vuepress@2.0.0-rc.7): - dependencies: - '@stackblitz/sdk': 1.11.0 - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - balloon-css: 1.2.0 - create-codepen: 1.0.1 - qrcode: 1.5.3 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-sass-palette: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-md-enhance@2.0.0-rc.23(markdown-it@14.1.0)(vuepress@2.0.0-rc.7): - dependencies: - '@mdit/plugin-alert': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-align': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-attrs': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-container': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-demo': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-figure': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-footnote': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-lazyload': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-mark': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-size': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-include': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-katex': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-mark': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-mathjax': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-stylize': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-sub': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-sup': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tab': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tasklist': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-uml': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.8 - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - balloon-css: 1.2.0 - js-yaml: 4.1.0 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-sass-palette: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@vue/composition-api' - - markdown-it - - typescript - - vuepress-plugin-sass-palette@2.0.0-rc.23(vuepress@2.0.0-rc.7): - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - chokidar: 3.6.0 - sass: 1.77.8 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-search-pro@2.0.0-rc.23(vuepress@2.0.0-rc.7): - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - cheerio: 1.0.0-rc.12 - chokidar: 3.6.0 - slimsearch: 2.1.1 - vue: 3.4.31 - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-sass-palette: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-shared@2.0.0-rc.23(vuepress@2.0.0-rc.7): - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - cheerio: 1.0.0-rc.12 - dayjs: 1.11.11 - execa: 8.0.1 - fflate: 0.8.2 - gray-matter: 4.0.3 - semver: 7.6.2 - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-theme-hope@2.0.0-rc.23(markdown-it@14.1.0)(nodejs-jieba@0.1.2)(vuepress-plugin-search-pro@2.0.0-rc.23)(vuepress@2.0.0-rc.7): - dependencies: - '@vuepress/helper': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-active-header-links': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-back-to-top': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-blog': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-catalog': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-copy-code': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-copyright': 2.0.0-rc.13(vuepress@2.0.0-rc.7) - '@vuepress/plugin-external-link-icon': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-git': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-nprogress': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-photo-swipe': 2.0.0-rc.13(vuepress@2.0.0-rc.7) - '@vuepress/plugin-prismjs': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-reading-time': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-rtl': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-seo': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-sitemap': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vuepress/plugin-theme-data': 2.0.0-rc.12(vuepress@2.0.0-rc.7) - '@vueuse/core': 10.11.0(vue@3.4.31) - balloon-css: 1.2.0 - bcrypt-ts: 5.0.2 - cheerio: 1.0.0-rc.12 - chokidar: 3.6.0 - gray-matter: 4.0.3 - nodejs-jieba: 0.1.2 - vue: 3.4.31 - vue-router: 4.4.0(vue@3.4.31) - vuepress: 2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31) - vuepress-plugin-comment2: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-plugin-components: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-plugin-md-enhance: 2.0.0-rc.23(markdown-it@14.1.0)(vuepress@2.0.0-rc.7) - vuepress-plugin-sass-palette: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-plugin-search-pro: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - vuepress-shared: 2.0.0-rc.23(vuepress@2.0.0-rc.7) - transitivePeerDependencies: - - '@types/reveal.js' - - '@vue/composition-api' - - '@vue/repl' - - '@waline/client' - - artalk - - artplayer - - chart.js - - dashjs-pure - - echarts - - flowchart.ts - - hls.js - - katex - - kotlin-playground - - markdown-it - - markmap-lib - - markmap-toolbar - - markmap-view - - mathjax-full - - mermaid - - mpegts.js - - plyr - - reveal.js - - sandpack-vue3 - - twikoo - - typescript - - vidstack - - vuepress@2.0.0-rc.7(@vuepress/bundler-vite@2.0.0-rc.7)(vue@3.4.31): - dependencies: - '@vuepress/bundler-vite': 2.0.0-rc.7 - '@vuepress/cli': 2.0.0-rc.7 - '@vuepress/client': 2.0.0-rc.7 - '@vuepress/core': 2.0.0-rc.7 - '@vuepress/markdown': 2.0.0-rc.7 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - vue: 3.4.31 - transitivePeerDependencies: - - '@vue/composition-api' - - supports-color - - typescript - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-module@2.0.1: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@4.0.0: - dependencies: - isexe: 3.1.1 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - y18n@4.0.3: {} - - yallist@4.0.0: {} - - yaml@2.4.5: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts deleted file mode 100644 index 314e7c9cf..000000000 --- a/src/.vuepress/config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineUserConfig } from "vuepress"; -import theme from "./theme.js"; - -export default defineUserConfig({ - base: "/", - - lang: "zh-CN", - title: "QChatGPT", - description: "QChatGPT项目的Wiki页", - - theme, -}); diff --git a/src/.vuepress/navbar.ts b/src/.vuepress/navbar.ts deleted file mode 100644 index 437046081..000000000 --- a/src/.vuepress/navbar.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { navbar } from "vuepress-theme-hope"; - -export default navbar([ - "/", - { - text: "功能介绍", - icon: "operate", - link: "/posts/feature", - }, - { - text: "部署教程", - icon: "blog", - link: "/posts/deploy/", - }, - // "/posts/deploy/", - // "/posts/Features", - { - text: "配置详解", - icon: "context", - link: "/posts/config/", - }, - { - text: "代码仓库", - icon: "github", - link: "https://github.com/RockChinQ/QChatGPT", - }, -]); diff --git a/src/.vuepress/public/favicon.ico b/src/.vuepress/public/favicon.ico deleted file mode 100644 index b5aa824e0731888f0e10db2516c20a4fc60e655c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35504 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 E0M6%=SO5S3 diff --git a/src/.vuepress/public/logo.png b/src/.vuepress/public/logo.png deleted file mode 100644 index b5aa824e0731888f0e10db2516c20a4fc60e655c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35504 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 E0M6%=SO5S3 diff --git a/src/.vuepress/public/logo.svg b/src/.vuepress/public/logo.svg deleted file mode 100644 index 364d184e1..000000000 --- a/src/.vuepress/public/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts deleted file mode 100644 index 01abb91b3..000000000 --- a/src/.vuepress/sidebar.ts +++ /dev/null @@ -1,236 +0,0 @@ -import { sidebar } from "vuepress-theme-hope"; - -export default sidebar({ - "/": [ - "", - { - text: "功能介绍", - icon: "operate", - link: "posts/feature", - }, - { - text: "部署教程", - icon: "blog", - collapsible: true, - prefix: "posts/deploy/", - link: "posts/deploy/", - children: [ - { - text: "部署QChatGPT", - icon: "flow", - prefix: "qchatgpt/", - link: "qchatgpt/", - children: [ - { - text: "手动部署", - icon: "support", - link: "manual", - }, - { - text: "Docker部署", - icon: "stack", - link: "docker", - }, - ], - }, - { - text: "部署消息平台", - icon: "merge", - prefix: "platforms/", - link: "platforms/", - children: [ - { - text: "aiocqhttp", - icon: "hot", - collapsible: true, - prefix: "aiocqhttp/", - link: "aiocqhttp/", - children: [ - { - text: "Lagrange", - icon: "support", - link: "lagrange", - }, - { - text: "LLOneBot", - icon: "more", - link: "llonebot", - }, - { - text: "NapCat", - icon: "software", - link: "napcat", - }, - { - text: "Shamrock", - icon: "mobile", - link: "shamrock", - }, - { - text: "Go-cqhttp", - icon: "support", - link: "gocq", - }, - ], - }, - { - text: "yiri-mirai", - icon: "warn", - link: "mirai", - }, - { - text: "Go-cqhttp(nakuru)", - icon: "state", - link: "nakuru", - }, - - { - text: "QQ 官方 API", - icon: "network", - link: "official", - }, - ], - }, - { - text: "填写配置信息", - icon: "class", - link: "config", - }, - ], - }, - { - text: "命令用法", - icon: "command", - link: "posts/command", - }, - { - text: "配置详解", - icon: "config", - collapsible: true, - prefix: "posts/config/", - link: "posts/config/", - children: [ - { - text: "platform.json", - icon: "config", - link: "platform", - }, - { - text: "pipeline.json", - icon: "config", - link: "pipeline", - }, - { - text: "provider.json", - icon: "config", - link: "provider", - }, - { - text: "command.json", - icon: "config", - link: "command", - }, - { - text: "system.json", - icon: "config", - link: "system", - }, - ], - }, - { - text: "元数据配置", - icon: "enum", - collapsible: true, - prefix: "posts/metadata/", - link: "posts/metadata/", - children: [ - { - text: "敏感词 sensitive-words.json", - icon: "enum", - link: "sensitive-words", - }, - { - text: "模型列表 llm-models.json", - icon: "enum", - link: "llm-models", - }, - { - text: "qq-botpy ID 映射 adapter-qq-botpy.json", - icon: "enum", - link: "adapter-qq-botpy", - }, - ], - }, - { - text: "常见问题", - icon: "info", - collapsible: true, - link: "posts/error/", - prefix: "posts/error/", - }, - { - text: "规模使用和商用", - icon: "app", - collapsible: true, - link: "posts/tob/", - prefix: "posts/tob/", - children: [ - { - text: "消息平台稳定性", - icon: "comment", - link: "platform", - }, - { - text: "AI 内容合规性", - icon: "warn", - link: "provider", - }, - { - text: "咨询方式", - icon: "profile", - link: "contact", - }, - ], - }, - { - text: "插件功能", - icon: "plugin", - collapsible: true, - prefix: "posts/plugin/", - link: "posts/plugin/intro", - // collapsible: true, - children: [ - { - text: "插件介绍", - icon: "info", - link: "intro", - }, - { - text: "插件列表", - icon: "list", - link: "list", - }, - { - text: "插件开发", - icon: "code", - link: "develop", - }, - { - text: "组件扩展", - icon: "code", - link: "extension", - }, - { - text: "API 参考", - icon: "api", - link: "apiref", - }, - ], - }, - { - text: "技术信息", - icon: "blog", - link: "posts/develop/technology-info", - }, - ], -}); diff --git a/src/.vuepress/styles/config.scss b/src/.vuepress/styles/config.scss deleted file mode 100644 index bfe335f1b..000000000 --- a/src/.vuepress/styles/config.scss +++ /dev/null @@ -1 +0,0 @@ -$font-family: '"LXGW WenKai", sans-serif'; \ No newline at end of file diff --git a/src/.vuepress/styles/index.scss b/src/.vuepress/styles/index.scss deleted file mode 100644 index 3d35ee3ff..000000000 --- a/src/.vuepress/styles/index.scss +++ /dev/null @@ -1,12 +0,0 @@ -// place your custom styles here -// .vuepress/styles/index.scss - -// 覆盖代码块背景色 -#app { - --text-color-light: #000; - - html[data-theme="dark"] & { - --text-color-light: #ffffff; - } -} - diff --git a/src/.vuepress/styles/palette.scss b/src/.vuepress/styles/palette.scss deleted file mode 100644 index c693e25c0..000000000 --- a/src/.vuepress/styles/palette.scss +++ /dev/null @@ -1,5 +0,0 @@ -// you can change colors here -// $theme-colors: #367cc0 !default; -//$font-family: 'Playpen Sans,ZCOOL XiaoWei'; - -$theme-color: #2d89e4; diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts deleted file mode 100644 index 1e35a2869..000000000 --- a/src/.vuepress/theme.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { hopeTheme } from "vuepress-theme-hope"; -import { cut } from "nodejs-jieba"; -import navbar from "./navbar.js"; -import sidebar from "./sidebar.js"; - -export default hopeTheme({ - hostname: "https://qchatgpt.rockchin.top/", - - author: { - name: "Lazy", - url: "https://github.com/the-lazy-me", - }, - - iconAssets: "iconfont", - - logo: "/logo.png", - - repo: "https://github.com/the-lazy-me/QChatGPT-Wiki", - - docsDir: "src", - - // navbar - navbar, - - // sidebar - sidebar, - - footer: "QChatGPT项目文档", - - displayFooter: true, - encrypt: { - config: { - "/demo/encrypt.html": ["qchatgpt"], - }, - }, - - // page meta - metaLocales: { - editLink: "在 GitHub 上编辑此页", - }, - - // 如果想要实时查看任何改变,启用它。注: 这对更新性能有很大负面影响 - // hotReload: true, - - // 在这里配置主题提供的插件 - plugins: { - // 你应该自行生成自己的评论服务 - // comment: { - // provider: "Giscus", - // repo: "vuepress-theme-hope/giscus-discussions", - // repoId: "R_kgDOG_Pt2A", - // category: "Announcements", - // categoryId: "DIC_kwDOG_Pt2M4COD69", - // }, - - searchPro: { - indexContent: true, - indexLocaleOptions: { - "/zh/": { - // 使用 nodejs-jieba 进行分词 - tokenize: (text, fieldName) => - fieldName === "id" ? [text] : cut(text, true), - }, - }, - }, - - components: { - components: ["Badge", "VPCard", "BiliBili", "Share"], - }, - - // 此处开启了很多功能用于演示,你应仅保留用到的功能。 - mdEnhance: { - align: true, - hint: true, - attrs: true, - codetabs: true, - component: true, - demo: true, - figure: true, - imgLazyload: true, - imgSize: true, - include: true, - mark: true, - stylize: [ - { - matcher: "Recommended", - replacer: ({ tag }) => { - if (tag === "em") - return { - tag: "Badge", - attrs: { type: "tip" }, - content: "Recommended", - }; - }, - }, - ], - sub: true, - sup: true, - tabs: true, - vPre: true, - - // 在启用之前安装 chart.js - // chart: true, - - // insert component easily - - // 在启用之前安装 echarts - // echarts: true, - - // 在启用之前安装 flowchart.ts - // flowchart: true, - - // gfm requires mathjax-full to provide tex support - // gfm: true, - - // 在启用之前安装 katex - // katex: true, - - // 在启用之前安装 mathjax-full - // mathjax: true, - - // 在启用之前安装 mermaid - // mermaid: true, - - // playground: { - // presets: ["ts", "vue"], - // }, - - // 在启用之前安装 reveal.js - // revealJs: { - // plugins: ["highlight", "math", "search", "notes", "zoom"], - // }, - - // 在启用之前安装 @vue/repl - // vuePlayground: true, - - // install sandpack-vue3 before enabling it - // sandpack: true, - }, - - sitemap: true, - catalog: true, - - // 如果你需要 PWA。安装 vuepress-plugin-pwa2 并取消下方注释 - // pwa: { - // favicon: "/favicon.ico", - // cacheHTML: true, - // cachePic: true, - // appendBase: true, - // apple: { - // icon: "/assets/icon/apple-icon-152.png", - // statusBarColor: "black", - // }, - // msTile: { - // image: "/assets/icon/ms-icon-144.png", - // color: "#ffffff", - // }, - // manifest: { - // icons: [ - // { - // src: "/assets/icon/chrome-mask-512.png", - // sizes: "512x512", - // purpose: "maskable", - // type: "image/png", - // }, - // { - // src: "/assets/icon/chrome-mask-192.png", - // sizes: "192x192", - // purpose: "maskable", - // type: "image/png", - // }, - // { - // src: "/assets/icon/chrome-512.png", - // sizes: "512x512", - // type: "image/png", - // }, - // { - // src: "/assets/icon/chrome-192.png", - // sizes: "192x192", - // type: "image/png", - // }, - // ], - // shortcuts: [ - // { - // name: "Demo", - // short_name: "Demo", - // url: "/demo/", - // icons: [ - // { - // src: "/assets/icon/guide-maskable.png", - // sizes: "192x192", - // purpose: "maskable", - // type: "image/png", - // }, - // ], - // }, - // ], - // }, - // }, - }, -}); diff --git a/src/README.md b/src/README.md deleted file mode 100644 index f86c4acae..000000000 --- a/src/README.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: 😎高稳定性、🧩支持插件、🦄多模态的 LLM QQ / QQ频道 / OneBot 机器人 / Agent 平台 -home: true -icon: home -title: 项目主页 -heroImage: /logo.png -# bgImage: https://theme-hope-assets.vuejs.press/bg/6-light.svg -# bgImageDark: https://theme-hope-assets.vuejs.press/bg/6-dark.svg -# bgImageStyle: -# background-attachment: fixed -heroText: QChatGPT -tagline: 😎高稳定性、🧩支持插件、🦄多模态的 LLM QQ / QQ频道 / OneBot 机器人 / Agent 平台 -actions: - - text: 🚀 快速上手 - link: ./posts/deploy/ - type: primary - - - text: 查看源码 - link: https://github.com/RockChinQ/QChatGPT - -highlights: - - header: 功能概览 - # image: /assets/image/features.svg - # bgImage: https://theme-hope-assets.vuejs.press/bg/1-light.svg - # bgImageDark: https://theme-hope-assets.vuejs.press/bg/1-dark.svg - features: - - title: 丰富生态 - icon: plugin - details: 支持事件监听、AI Agent 等插件扩展方式,具有多种插件或相关支持项目 - - - title: 功能直观 - icon: type - details: 集成黑名单、限速、选择响应、上下文控制、Prompt 管理等多种常用功能 - - - title: 多种模型 - icon: stack - details: 适配 OpenAI、Moonshot、Anthropic 等多个提供商的接口,同时深度支持 OneAPI - - - title: 高稳定性 - icon: code - details: 采用主流的设计思想,架构清晰,具有高测试覆盖率 - - - title: 生产就绪 - icon: module - details: 符合生产环境的高可用性要求,已被多家公司商用部署 - - - title: 持续维护 - icon: cycle - details: 长期维护、迭代,持续跟进大模型领域的最新应用实践 - - - header: 链接 - description: - # image: /assets/image/blog.svg - # bgImage: https://theme-hope-assets.vuejs.press/bg/5-light.svg - # bgImageDark: https://theme-hope-assets.vuejs.press/bg/5-dark.svg - features: - - - title: 源码仓库 - icon: github - details: QChatGPT 的仓库页 - link: https://github.com/RockChinQ/QChatGPT - - - title: 文档仓库 - icon: file - details: 此文档的仓库页 - link: https://github.com/the-lazy-me/QChatGPT-Wiki/graphs/contributors - - - title: 插件列表 - icon: plugin - details: QChatGPT 插件列表 - link: https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6 - -copyright: false -footer: QChatGPT 项目的Wiki页  |  MIT 协议, 版权所有 © 2023-present Lazy

津 ICP 备 2023007711 号  津公网安备12011102001610号 ---- diff --git a/src/posts/command.md b/src/posts/command.md deleted file mode 100644 index 191fcd62e..000000000 --- a/src/posts/command.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: QChatGPT的命令讲解 -icon: context -# 这是侧边栏的顺序 -order: 3 -# 设置作者 -author: RockChinQ -# 设置写作时间 -date: 2024-02-13 -category: - - 使用指南 -tag: - - 配置方法 - - 使用指南 ---- - - -:::info 目录 -[[toc]] -::: - - -> `<>` 中的为必填参数,使用时请不要包含`<>` -> `[]` 中的为可选参数,使用时请不要包含`[]` - -以下是默认情况下的权限分类,可以根据下方的命令权限控制进行修改 - -> 这里只简单列举命令,具体使用方式请使用 `!cmd` 命令查看 - -## 用户级别命令 - -任何对象可使用 - -``` -!help 显示自定义的帮助信息(可在配置文件中更改) -!cmd [命令名称] 显示命令列表或指定命令的详细信息 -!list [页数] 列出本对象的历史会话列表 -!del <序号> 删除指定的历史记录,可以通过 !list 查看序号 -!del all 删除本会话对象的所有历史记录 -!last 切换到前一次会话 -!next 切换到后一次会话 -!reset 重置当前会话 -!prompt 查看当前会话的所有记录 -!version 查看当前版本并检查更新 -!resend 回滚前一次请求 -!plugin 用法请查看插件介绍页的`管理`章节 -!default 查看可用的情景预设值 -``` - -## 管理员命令 - -仅管理员私聊机器人时可使用,必须先在`data/config/system.json`里设置管理员 - -``` -!update 进行程序自动更新 -!default set <情景预设名称> 会话!reset时的默认情景预设 -!ollama [show|pull|del] [模型名称] 显示、拉取或删除模型的 Ollama 模型数据 -!model [show|set] [模型名称] 显示或设置当前使用的模型 -``` - -## 命令权限控制 - -您可以编辑`data/config/command.json`来设置命令节点的权限,当命令被发起时,若用户的权限级别(管理员为`2`,普通用户为`1`)大于等于命令节点的权限级别,命令即可被成功执行。具体配置方式请查看配置文件详解页。 diff --git a/src/posts/config/README.md b/src/posts/config/README.md deleted file mode 100644 index 839118e80..000000000 --- a/src/posts/config/README.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 配置文件详解 -icon: config -author: Lazy -date: 2024-02-18 -index: false ---- - -配置文件均位于 `data/config/` 目录下,请点击左侧目录查看各个文件的详细配置项。 \ No newline at end of file diff --git a/src/posts/deploy/platforms/nakuru.md b/src/posts/deploy/platforms/nakuru.md deleted file mode 100644 index f4e2d5e62..000000000 --- a/src/posts/deploy/platforms/nakuru.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: Go-cqhttp的部署教程 -title: 部署消息平台go-cqhttp的教程 -icon: state -order: 3 -author: Anonymous -date: 2023-12-21 -category: - - 部署教程 ---- - -> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。 - -::: warning - -gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471) - -::: - -## 下载go-cqhttp - -从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器) - -![下载gocq](/assets/image/dl_gocq.png) - -## 运行并配置go-cqhttp - -解压并运行,首次运行会询问需要开放的网络协议,**请填入`02`并回车,必须输入`02`❗❗❗❗❗❗❗** - -``` -C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe -未找到配置文件,正在为您生成配置文件中! -请选择你需要的通信方式: -> 0: HTTP通信 -> 1: 云函数服务 -> 2: 正向 Websocket 通信 -> 3: 反向 Websocket 通信 -请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233) -您的选择是:02 -``` - -提示已生成`config.yml`文件,关闭go-cqhttp。 - -打开go-cqhttp同目录的`config.yml` - -1. 编辑账号登录信息 - -只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。 - -```yaml -account: # 账号相关 - uin: 1233456 # QQ账号 - password: '' # 密码为空时使用扫码登录 - encrypt: false # 是否开启密码加密 - status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态 - relogin: # 重连设置 - delay: 3 # 首次重连延迟, 单位秒 - interval: 3 # 重连间隔 - max-times: 0 # 最大重连次数, 0为无限制 -``` - -2. 修改websocket端口 - -在`config.yml`下方找到以下内容 - -```yaml - - ws: - # 正向WS服务器监听地址 - address: 0.0.0.0:8080 - middlewares: - <<: *default # 引用默认中间件 -``` - -**将`0.0.0.0:8080`改为`0.0.0.0:6700`**,保存并关闭`config.yml`。 - -3. 配置签名服务器 - -按照如下填写, - -```yam - sign-servers: - - url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填 - key: 'selfshare' - authorization: '-' - - url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填 - key: 'selfshare' - authorization: '-' - - auto-register: true -``` - -写入文件/data/versions/6.json, - -```json -{ - "apk_id": "com.tencent.mobileqq", - "app_id": 537220362, - "sub_app_id": 537220362, - "app_key": "0S200MNJT807V3GE", - "sort_version_name": "9.0.56.16830", - "build_time": 1713424357, - "apk_sign": "a6b745bf24a2c277527716f6f36eb68d", - "sdk_version": "6.0.0.2560", - "sso_version": 21, - "misc_bitmap": 150470524, - "main_sig_map": 34869472, - "sub_sig_map": 66560, - "dump_time": 1713424357, - "qua": "V1_AND_SQ_9.0.56_6372_YYB_D", - "protocol_type": 6 -} -``` - -感谢zhaodice大佬带来的QQ 9.0.56签名服务器 - -4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选) - -```yaml -# 默认中间件锚点 -default-middlewares: &default - # 访问密钥, 强烈推荐在公网的服务器设置 - access-token: '' -``` - -5. 配置完成,重新启动go-cqhttp - -## 登录 - -双击登录脚本,一段时间后,可以看到提示 - -![登录gocq](/assets/image/first_launch.png) - -把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具 - -点开 `Network` - -![过验证码](/assets/image/get_captcha.png) - -在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面 - -![获取token](/assets/image/get_gocq_login_token.png) - -ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号 - -**注意** - -- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容 -- 速度要快 -- 注意不要漏字符(没复制完, 后面还有很长) - -把复制下来的东西,粘贴到运行go-cq的终端中 - -![粘贴token](/assets/image/paste_token.png) - -> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。 - - -## 后续步骤 - -查看填写配置信息页,通过 Nakuru 适配器接入。 \ No newline at end of file diff --git a/src/posts/metadata/README.md b/src/posts/metadata/README.md deleted file mode 100644 index 2aec922e1..000000000 --- a/src/posts/metadata/README.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: ChatGPT QQ机器人教程,QChatGPT项目部署教程 -title: 元数据配置详解 -icon: config -author: RockChinQ -date: 2024-03-20 -index: false ---- - -元数据配置是程序运行期间生成的,用于描述某些数据的数据文件,比如:大语言模型数据、敏感词库、QQ 官方 API 的 ID 映射关系等,这些数据相比于配置文件较为复杂,一般不需要用户手动修改。 -元数据文件均位于 `data/metadata/` 目录下,请点击左侧目录查看各个文件的详细配置项。 \ No newline at end of file diff --git a/src/posts/metadata/sensitive-words.md b/src/posts/metadata/sensitive-words.md deleted file mode 100644 index 6a9d82ea3..000000000 --- a/src/posts/metadata/sensitive-words.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: sensitive-words.json 元数据 -title: sensitive-words.json 元数据 -icon: config -order: 1 -author: RockChinQ -date: 2024-02-18 -category: - - 配置文件 ---- - -本地敏感词词库,参考 `data/metadata/sensitive-words.json` 内容进行修改即可。 \ No newline at end of file diff --git a/src/posts/tob/contact.md b/src/posts/tob/contact.md deleted file mode 100644 index 5714cc030..000000000 --- a/src/posts/tob/contact.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -head: - - - meta - - name: keywords - content: 商用咨询方式 -title: 咨询方式 -icon: profile -order: 3 -author: RockChinQ -date: 2024-05-23 -category: - - 规模使用和商用 -index: false ---- - -作者长期提供定制服务,欢迎咨询: - -- 微信:junyan_qin -- QQ:1010553892 \ No newline at end of file