diff --git a/.github/workflows/electron-release.yml b/.github/workflows/electron-release.yml new file mode 100644 index 00000000..352969bf --- /dev/null +++ b/.github/workflows/electron-release.yml @@ -0,0 +1,156 @@ +# 打 tag(如 v1.2.3)后自动构建 Windows / macOS(Intel+Apple Silicon) 桌面包并发布到 GitHub Release。 +# 手动运行 workflow 仅上传 Actions Artifact,不创建 Release(便于试打)。 + +name: Electron Release + +on: + push: + tags: + - "v*" + workflow_dispatch: + +permissions: + contents: write + +concurrency: + group: electron-release-${{ github.ref }} + cancel-in-progress: true + +env: + NODE_VERSION: "20" + CSC_IDENTITY_AUTO_DISCOVERY: false + +jobs: + electron-windows: + runs-on: windows-latest + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + cache-dependency-path: frontend/pnpm-lock.yaml + + - name: Set package.json version + shell: bash + run: | + if [[ "${{ github.ref }}" == refs/tags/v* ]]; then + V="${GITHUB_REF_NAME#v}" + else + V="0.0.0-ci.${{ github.run_number }}" + fi + # electron-builder 要求严格 semver(至少 major.minor.patch 三段) + if [[ "$V" =~ ^[0-9]+\.[0-9]+$ ]]; then + V="${V}.0" + fi + node -e "const fs=require('fs');const p='package.json';const j=JSON.parse(fs.readFileSync(p,'utf8'));j.version=process.argv[1];fs.writeFileSync(p,JSON.stringify(j,null,2)+'\n');" "$V" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + # 仅在 Windows Runner 上开启 signAndEditExecutable(写入 exe 图标等);Linux/WSL 需 false,否则会要求 wine + - name: Build Windows (portable + NSIS) + run: pnpm run electron:ci:win:native + + - name: Collect artifacts + shell: bash + run: | + mkdir -p ../_electron_upload + shopt -s nullglob + cp release/*.exe ../_electron_upload/ || true + cp release/*.yml ../_electron_upload/ || true + ls -la ../_electron_upload/ + + - uses: actions/upload-artifact@v4 + with: + name: electron-windows-x64 + path: _electron_upload/ + + electron-macos: + runs-on: macos-latest + defaults: + run: + working-directory: frontend + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: pnpm + cache-dependency-path: frontend/pnpm-lock.yaml + + - name: Set package.json version + run: | + if [[ "${{ github.ref }}" == refs/tags/v* ]]; then + V="${GITHUB_REF_NAME#v}" + else + V="0.0.0-ci.${{ github.run_number }}" + fi + if [[ "$V" =~ ^[0-9]+\.[0-9]+$ ]]; then + V="${V}.0" + fi + node -e "const fs=require('fs');const p='package.json';const j=JSON.parse(fs.readFileSync(p,'utf8'));j.version=process.argv[1];fs.writeFileSync(p,JSON.stringify(j,null,2)+'\n');" "$V" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + # 目标格式(dmg / zip)取自 package.json 的 build.mac.target + - name: Build macOS (arm64 + x64) + run: pnpm run electron:ci:mac + + - name: Collect artifacts + run: | + mkdir -p ../_electron_upload + shopt -s nullglob + cp release/*.dmg ../_electron_upload/ || true + cp release/*.zip ../_electron_upload/ || true + cp release/*.yml ../_electron_upload/ || true + ls -la ../_electron_upload/ + + - uses: actions/upload-artifact@v4 + with: + name: electron-macos-universal + path: _electron_upload/ + + publish-release: + needs: [electron-windows, electron-macos] + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: electron-windows-x64 + path: release-assets/windows + + - uses: actions/download-artifact@v4 + with: + name: electron-macos-universal + path: release-assets/macos + + - name: List release files + run: find release-assets -type f -exec ls -lh {} \; + + - uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + name: MonkeyCode Desktop ${{ github.ref_name }} + generate_release_notes: true + fail_on_unmatched_files: false + files: | + release-assets/windows/* + release-assets/macos/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 0eb97202..eda91cd7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ logs # Local build artifacts monkeycode-ai/ .pnpm-store/ + +# Electron (electron-builder) +frontend/release/ diff --git a/README.md b/README.md index 23adfd1a..e67fb1a5 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,21 @@ # MonkeyCode -

- MonkeyCode -

+> 由长亭科技推出的企业级 AI 开发平台,覆盖需求 → 设计 → 开发 → 代码审查全流程 -

- ⚡ 在线使用   |   - 📖 帮助文档   |   - 🐙 GitHub -

+## 简介 -## 👋 简介 +MonkeyCode 是面向研发团队的企业级 AI 开发平台,通过自然语言交互,让 AI 帮你完成从需求分析、技术设计、代码开发到代码审查的完整开发流程。平台支持多种 AI 模型,集成 GitHub/GitLab/Gitee 等主流 Git 平台,提供在线 IDE、终端、文件管理等功能,大幅提升团队开发效率。 -**MonkeyCode** 是由长亭科技推出的企业级 AI 开发平台,覆盖 **需求 → 设计 → 开发 → 代码审查** 全流程。 - -MonkeyCode 不是简单的 AI 编程工具,而是对传统研发模式的变革,带来全新的 AI 编程体验,让研发团队效率 Max。你可以用自然语言描述需求,让 AI 帮你完成从需求分析、技术设计、代码开发到代码审查的完整开发流程。 - -## 💡 核心功能 +## 核心功能 ### 智能任务 - 用自然语言描述需求,AI 自动完成开发、设计或代码审查。支持从 Git 仓库或 ZIP 文件导入代码,可选择开发工具和 AI 模型。 ### 项目管理 - 关联 Git 仓库,管理项目需求和任务。可创建需求文档、启动设计任务和开发任务,实现需求驱动的开发流程。 ### 在线开发环境 - 提供完整的在线开发环境,包括: - - **在线 IDE**:支持多语言高亮的代码编辑器 - **终端**:支持多会话的 Web 终端 - **文件管理**:在线浏览、编辑、上传下载文件 @@ -37,23 +23,16 @@ MonkeyCode 不是简单的 AI 编程工具,而是对传统研发模式的变 - **远程协助**:支持与他人共享终端 ### 代码审查 - 配置 Git 机器人,自动审查 GitHub/GitLab/Gitee 的 PR/MR,提供智能代码改进建议。 ### 团队协作 - 企业管理员可以管理团队成员、分配资源(宿主机、镜像、AI 模型),实现权限控制和资源统一管理。 -## 🚀 快速开始 - -本项目为 MonkeyCode **在线版** 前端,需配合后端服务使用。 +## 快速开始 ```bash -# 进入前端目录 -cd frontend - # 安装依赖 -pnpm install +cd frontend && pnpm install # 启动开发服务器 pnpm dev @@ -64,40 +43,11 @@ pnpm build 访问 http://localhost:5173 查看应用。 -## 📖 使用文档 - -- **在线使用**:访问 [monkeycode-ai.com](https://monkeycode-ai.com/) 直接体验 -- **帮助文档**:查看 [MonkeyCode 文档](https://monkeycode.docs.baizhi.cloud/) 了解团队版、点数说明、配置等 -- **使用指南**:项目内详细操作说明见 [frontend/doc.md](./frontend/doc.md) - -## ⚡ 界面展示 - -| | | -| --------------------------------------------------- | --------------------------------------------------- | -| | | - -## 🔗 相关链接 - -- [MonkeyCode 官网](https://monkeycode-ai.com/) -- [MonkeyCode 文档](https://monkeycode.docs.baizhi.cloud/) -- [长亭科技](https://chaitin.cn/) -- [长亭百智云](https://baizhi.cloud/) - -## 💬 社区交流 - -欢迎加入我们的微信群进行交流。 - -微信交流群 - -## 🙋‍♂️ 贡献 - -欢迎提交 [Pull Request](https://github.com/chaitin/MonkeyCode/pulls) 或创建 [Issue](https://github.com/chaitin/MonkeyCode/issues) 来帮助改进项目。 +## 使用文档 -## 📝 许可证 +详细的使用指南请参考 [frontend/doc.md](./frontend/doc.md)。 -本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 许可证。这意味着: +## 联系我们 -- 你可以自由使用、修改和分发本软件 -- 你必须以相同的许可证开源你的修改 -- 如果你通过网络提供服务,也必须开源你的代码 -- 商业使用需要遵守相同的开源要求 +- 官网:https://monkeycode-ai.com +- 帮助文档:https://monkeycode-ai.com/docs diff --git a/frontend/doc.md b/frontend/doc.md index 31c8aae4..bbaced0a 100644 --- a/frontend/doc.md +++ b/frontend/doc.md @@ -8,7 +8,7 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 → 设计 → 开发 → 代码审查** 全流程。你可以用自然语言描述需求,让 AI 帮你写代码、做设计、做 Review。 -**入口说明**:首页(`/`)提供「开始使用」进入控制台;开发者广场(`/playground`)、公开任务(`/tasks/public`)可从首页或直接访问对应路径。 +**入口说明**:首页(`/`)顶部导航含「控制台」(已登录时)、「广场」(`/playground`)、「使用文档」等;开发者广场(`/playground`)、发布内容(`/playground/create`)、公开任务(`/tasks/public`)可直接访问对应路径。登录后个人控制台默认进入 **新任务页**(`/console/tasks`,顶栏面包屑显示为「新任务」)。 --- @@ -16,31 +16,43 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 ### 登录 -1. 打开登录页,选择 **用户登录** 或 **团队管理登录** +1. 打开登录页(`/login`),在 **普通用户** 与 **团队管理员** 两个标签之间切换 2. 输入邮箱和密码 3. 完成验证码验证 4. 点击登录 -- **用户登录**:进入个人控制台,使用智能任务、项目管理等功能 -- **团队管理登录**:进入企业管理后台,管理团队资源 +- **普通用户**:进入个人控制台(`/console/…`),使用智能任务、项目管理等功能。同一区域还提供 **百智云账号登录**、**注册**(跳转 OAuth 流程)入口。 +- **团队管理员**:进入企业管理后台(`/manager/…`),管理团队资源(该标签下暂无「找回密码」入口,密码问题需按团队流程处理)。 ### 找回密码 -在登录页点击「找回密码」,输入注册邮箱,系统会发送重置链接到你的邮箱。点击邮件中的链接,按提示设置新密码即可。 +在 **普通用户** 登录表单中点击「找回密码」,将打开找回密码页(`/findpassword`)。输入注册邮箱并完成验证后,系统会发送重置链接到你的邮箱;点击邮件中的链接,按提示设置新密码即可。 --- ## 三、控制台导航 -登录后进入控制台,左侧是导航栏: +登录后进入个人控制台,布局为 **左侧边栏 + 顶栏 + 主内容区**。 -- **代码审查**:进入 Git 机器人页面,配置和管理代码审查机器人 -- **开发项目**:展示项目列表。点击「+」可**创建项目**,点击刷新图标可刷新列表。每个项目可展开子菜单显示其下的任务。另有 **默认** 分组,用于展示未关联到项目的任务 - - 点击「默认」进入新任务页(`/console/tasks`),可创建任务;默认分组旁的「+」为创建任务 - - 点击某个项目进入项目概览页;项目旁的「+」为**启动任务**(基于该项目仓库创建 AI 任务) -- **配置**:点击底部「配置」打开设置弹窗,可管理 Git 身份、AI 大模型、系统镜像、宿主机、开发环境、通知等 +**左侧边栏** -底部可查看账户余额和点数,点击头像可退出登录。 +- **开发项目**:展示 **默认** 分组与各项目。点击刷新图标可刷新列表;标签右侧「+」为 **创建项目**。 + - **默认**:点击进入新任务页(`/console/tasks`);旁的「+」为 **创建任务**(与进入同一页后创建任务等价)。展开后列出未归属项目的任务;每条任务悬停可出现 **更多** 菜单,支持 **删除任务**。 + - **具体项目**:点击进入该项目概览(`/console/project/:projectId`);项目行右侧「+」为 **启动任务**(基于该项目仓库创建 AI 任务,未绑定仓库时该按钮不可用)。展开后列出该项目下任务,同样支持 **删除任务**。 +- **配置**:侧栏底部点击「配置」打开设置弹窗,可管理 Git 身份、AI 大模型、系统镜像、宿主机、开发环境、通知等。 +- **用户区**:侧栏最底部为当前账号信息。点击展开菜单可 **修改昵称**、**修改密码**、**登出**;点击头像区域可 **修改头像**(图片 ≤5MB)。 + +**顶栏(个人控制台)** + +- 面包屑导航(例如任务详情中会显示任务名称)。 +- **技术交流群**:悬停展示微信、飞书、钉钉群二维码。 +- **钱包**:查看点数余额(充值/赠送)、兑换码兑换、交易记录、邀请链接等(大屏下显示;小屏可能收纳)。 +- **帮助**:跳转官方文档站点。 + +**未在侧栏列出的页面(需直接访问 URL 或自行收藏)** + +- **Git 机器人 / 代码审查**:`/console/gitbot`(审查任务与审查机器人配置)。 +- **IDE 辅助工具**:`/console/ide`(当前为占位页,含开源与文档链接,见下文「IDE 辅助工具」一节)。 --- @@ -59,7 +71,7 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 3. **选择代码来源** 点击「代码」按钮: - - **我的仓库**:展开后按已绑定的 Git 身份(GitHub、Gitee、GitLab、Gitea 等)分组,选择身份后显示该身份下授权的仓库列表(支持搜索);若未绑定,会提示「去绑定」并跳转到配置页 + - **我的仓库**:展开后按已绑定的 Git 身份分组,选择身份后显示该身份下授权的仓库列表(支持搜索)。其中 GitHub 需使用 **GitHub App 安装** 方式绑定的身份才会出现可选仓库;Gitee、Gitea、GitLab 等为 OAuth 类绑定。若未绑定,会提示「去绑定」并跳转到配置页 - **其他仓库**:输入完整的 Git 仓库地址,按回车确认;下方会显示历史使用过的仓库供快速选择 - **ZIP 文件**:选择本地的 .zip 压缩包上传(最大 10MB),上传成功后该文件会作为代码来源 @@ -92,42 +104,44 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 - Token 用量(若有) - 创建时间 -点击任务卡片进入任务详情页。列表支持无限滚动,向下滚动可加载更多任务。 +点击任务卡片进入任务详情页。列表支持无限滚动,接近底部时自动加载下一页(每页 24 条,与接口分页一致)。 --- ## 五、任务开发页面 -任务执行时,会进入任务详情页(`/console/task/:taskId`),你可以在这里与 AI 协作。 +任务创建后或从列表进入,会打开任务详情页(`/console/task/:taskId`),你可以在这里与 AI 协作。 ### 页面布局 -- **主区域**:与 AI 的对话区域,包含执行步骤、消息列表、输入框 -- **底部按钮**:文件、终端、修改、预览、续期。点击任一按钮可展开右侧面板,再次点击可收起 +- **主区域**:与 AI 的对话与交互区。上方为可滚动的 **消息列表**;其下依次为 **执行步骤**(有规划时显示)、**文件变更提示条**(有待提交改动且 AI 等待你输入时可能出现)、**输入框**。展开右侧面板时,中间会出现 **可拖动的竖向分割线**,用于调整左右区域宽度。 +- **底部工具条**:**文件**、**终端**、**修改**(若有未提交改动会显示数量)、**预览**(已开放端口时显示数量)、**续期**。点击前四项可在右侧展开对应面板,再次点击可收起。**续期**为打开续期弹窗,而非右侧面板。 - **文件**:项目文件树,可浏览、打开、编辑文件 - **终端**:终端输出,展示 AI 执行的命令,也可手动输入 - **修改**:查看 AI 修改过的文件及 Diff - **预览**:端口转发与在线预览 - - **续期**:延长开发环境使用时间 + - **续期**:延长开发环境使用时间;当剩余可用时间不足约 1 小时时,「续期」文字会闪烁提醒 -开发环境准备中时,主区域会显示准备状态(如「正在创建虚拟机」等)。 +任务已结束(非执行中状态)时,文件/终端/修改/预览按钮会禁用,悬停提示「任务已结束,无法查看」。**续期**仅在虚拟机仍在线时可用。 + +开发环境准备中时,主区域会显示准备状态(如「正在创建虚拟机」等)。若当前开发环境不可用,原输入框位置会显示「开发环境不可用」。 ### 与 AI 对话 - 当 AI 执行完毕、等待你的反馈时,底部输入框会变为可输入状态 - 输入补充说明或新指令,点击发送,AI 会继续执行 - 支持 **Shift+Enter** 换行,**Enter** 发送 -- 输入框旁有菜单按钮,可进行: - - **重置上下文**:清空当前对话上下文,后续操作基于新上下文 +- 输入框左侧有 **菜单(≡)** 按钮,可进行: + - **重置上下文**:清空当前对话上下文,后续操作基于新上下文(会二次确认) - **重新加载开发工具**:重新加载 OpenCode 等开发工具 - 支持**语音输入**:点击麦克风按钮,用语音描述需求,系统会自动转为文字 -- 支持**斜杠命令**:点击终端图标可查看可用命令(如 `/command`),选择后插入到输入框 +- 支持**斜杠命令**:点击 **终端样式** 的按钮可展开服务端下发的可用命令列表(如 `/command`),选择后会将对应内容插入输入框 ### 查看 AI 的执行进度 -- 对话区域顶部会展示「执行步骤」区块,显示 AI 的 TODO 计划及每个步骤的完成状态 -- 执行中会显示耗时,可点击停止按钮中断执行 -- 任务完成后会显示 Token 用量(输入/输出 tokens) +- **执行步骤**区块位于 **消息列表下方、输入框上方**,展示 AI 的计划步骤及完成进度;可通过右侧按钮 **展开/折叠** 全部步骤(执行中且折叠时可能仅显示当前进行中的步骤) +- 执行中可点击 **停止** 中断当前执行 +- 页面底部工具条右侧会展示 Token 用量(宽屏为输入/输出分项,窄屏可为合计展示) ### 提交代码变更 @@ -168,11 +182,11 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 ## 六、代码审查(Git 机器人) -在「代码审查」页面(`/console/gitbot`),可以配置 Git 机器人,让 AI 自动审查你的合并请求(PR/MR)。 +在 **Git 机器人** 页面(`/console/gitbot`,个人控制台侧栏无固定入口时需手动输入地址访问),可以配置 Git 机器人,让 AI 自动审查你的合并请求(PR/MR)。页面默认展示 **审查任务** 标签。 ### 审查任务 -切换到「审查任务」标签: +「审查任务」标签下: - 以列表形式展示所有由机器人触发的审查任务 - 每个任务显示关联的 PR/MR、状态、平台等,点击可跳转到对应 Git 平台的 PR 页面 @@ -219,7 +233,9 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 ### 项目页面 -进入项目后,顶部有三个 Tab:**信息**、**需求**、**任务**。 +若项目 **未绑定仓库**,进入项目页后会显示「项目异常」提示,无法使用启动 AI、自动 Review 等依赖仓库的能力;需先在创建/编辑流程中完成仓库绑定。 + +进入正常项目后,顶部有三个 Tab:**信息**、**需求**、**任务**。 **信息** Tab: @@ -238,6 +254,10 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 - 弹出「启动 AI 任务」对话框,选择分支后点击「开始对话」 - 系统会基于当前项目仓库创建开发任务,并跳转到任务详情页与 AI 对话 +### 自动 Review + +项目信息区还提供 **自动 Review** 入口(与「启动 AI」并列):用于为该项目配置是否开启自动代码审查(需已绑定仓库)。开启后状态会显示为「已开启自动 Review」,未开启为「未开启自动 Review」,点击可进入配置。 + ### 项目设置 点击项目信息区域的「更多」菜单: @@ -276,7 +296,7 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 ## 八、配置 -在「配置」页面,可以管理各类基础设置。 +点击侧栏底部的「配置」会打开 **设置弹窗**(非独立路由页面),可在其中管理各类基础设置。 ### Git 平台身份凭证 @@ -415,13 +435,13 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求 ## 十一、IDE 辅助工具 -IDE 辅助工具(`/console/ide`)目前为「敬请期待」状态,后续将提供与 IDE 集成的辅助能力。可通过控制台内直接访问该路径进入。 +IDE 辅助工具(`/console/ide`)当前为占位页:提示功能「敬请期待」,并说明相关能力已开源。页面提供 **开源仓库**(跳转 GitHub `chaitin/MonkeyCode`)与 **阅读文档** 按钮。侧栏无入口时需直接在地址栏访问 `/console/ide`。 --- ## 十二、开发者广场 -开发者广场(`/playground`)可浏览和分享内容,可从首页进入或直接访问。未登录时可浏览,发布需先登录。 +开发者广场(`/playground`)可浏览和分享内容,可从首页进入或直接访问。未登录时可浏览,发布需先登录;**发布**流程对应路由 **`/playground/create`**(从广场点击发布会进入该页)。 ### 浏览 @@ -467,7 +487,7 @@ IDE 辅助工具(`/console/ide`)目前为「敬请期待」状态,后续 ## 十五、企业管理后台 -使用团队管理员账号登录后,可进入企业管理后台(`/manager`)。左侧导航包含:仪表盘、成员管理、开发环境(宿主机)、AI 大模型、系统镜像、管理员、操作记录、其他配置。下面分别说明每个页面的功能和操作方式。 +使用团队管理员账号登录后,可进入企业管理后台(`/manager`,默认重定向到 `/manager/dashboard`)。左侧 **企业管理** 分组下的菜单为:**仪表盘**、**成员管理**、**开发环境**(管理团队接入的宿主机)、**AI 大模型**、**系统镜像**、**管理员**、**操作记录**、**其他配置**(界面文案与路由 `/manager/images` 等一一对应)。下面分别说明每个页面的功能和操作方式。 ### 仪表盘 @@ -561,9 +581,9 @@ IDE 辅助工具(`/console/ide`)目前为「敬请期待」状态,后续 --- -### 镜像管理 +### 系统镜像(管理后台) -管理团队可用的系统镜像,用于构建开发环境。 +管理团队可用的 Docker 系统镜像,用于构建开发环境(与侧栏菜单名称「系统镜像」一致)。 **绑定镜像** @@ -677,4 +697,4 @@ A:子账号在创建任务时可以选择宿主机和系统镜像;主账号 --- -如有更多问题,可点击页面顶部的「帮助文档」查看官方文档,或扫码加入微信交流群。 +如有更多问题,可在个人控制台顶栏点击 **帮助** 打开官方文档站点;顶栏 **技术交流群** 内提供微信、飞书、钉钉群二维码。企业管理后台顶栏同样有 **帮助** 入口。 diff --git a/frontend/electron-builder.ci-win.json b/frontend/electron-builder.ci-win.json new file mode 100644 index 00000000..ee5a06b5 --- /dev/null +++ b/frontend/electron-builder.ci-win.json @@ -0,0 +1,5 @@ +{ + "win": { + "signAndEditExecutable": true + } +} diff --git a/frontend/electron-builder.full.json b/frontend/electron-builder.full.json new file mode 100644 index 00000000..94b8f612 --- /dev/null +++ b/frontend/electron-builder.full.json @@ -0,0 +1,8 @@ +{ + "directories": { + "output": "release-full" + }, + "icon": "electron/icon.png", + "files": ["dist/**/*", "electron/**/*", "package.json"], + "asarUnpack": ["electron/icon.png"] +} diff --git a/frontend/electron/icon.png b/frontend/electron/icon.png new file mode 100644 index 00000000..69390886 Binary files /dev/null and b/frontend/electron/icon.png differ diff --git a/frontend/electron/main.cjs b/frontend/electron/main.cjs new file mode 100644 index 00000000..75ee93cf --- /dev/null +++ b/frontend/electron/main.cjs @@ -0,0 +1,124 @@ +const { app, BrowserWindow, shell, dialog, Menu } = require("electron") +const fs = require("fs") +const path = require("path") + +const isDev = !app.isPackaged +const DEFAULT_PROD_URL = "https://monkeycode-ai.com" +/** 桌面端启动路径(相对站点根),可用 MONKEYCODE_DESKTOP_START_PATH 覆盖 */ +const START_PATH = (process.env.MONKEYCODE_DESKTOP_START_PATH || "/login").replace(/\/$/, "") || "/login" + +function desktopEntryUrl(base) { + const href = (base || "").trim() || DEFAULT_PROD_URL + return new URL(`${START_PATH.startsWith("/") ? START_PATH : `/${START_PATH}`}`, href).href +} + +/** Windows 任务栏/窗口图标不能从 app.asar 内读,需配合 package.json 的 asarUnpack */ +function windowIconPath() { + if (app.isPackaged) { + const unpacked = path.join(process.resourcesPath, "app.asar.unpacked", "electron", "icon.png") + if (fs.existsSync(unpacked)) return unpacked + } + const local = path.join(__dirname, "icon.png") + return fs.existsSync(local) ? local : undefined +} + +/** 避免 ready-to-show 迟迟不触发时窗口永远隐藏(用户以为程序没启动) */ +function ensureWindowVisible(win, ms = 2000) { + const show = () => { + if (!win.isDestroyed() && !win.isVisible()) win.show() + } + win.once("ready-to-show", show) + win.webContents.once("did-finish-load", () => { + if (!win.isDestroyed() && !win.isVisible()) show() + }) + setTimeout(show, ms) +} + +function createWindow() { + const win = new BrowserWindow({ + width: 1280, + height: 800, + minWidth: 900, + minHeight: 640, + show: false, + autoHideMenuBar: true, + icon: windowIconPath(), + webPreferences: { + preload: path.join(__dirname, "preload.cjs"), + contextIsolation: true, + nodeIntegration: false, + // 加载完整 Web 应用时 sandbox 可能导致部分站点行为异常,桌面壳使用非沙箱更稳妥 + sandbox: false, + }, + }) + + ensureWindowVisible(win, 2000) + + win.webContents.on("did-fail-load", (_event, code, desc, url, isMainFrame) => { + if (!isMainFrame) return + if (!win.isDestroyed() && !win.isVisible()) win.show() + if (isDev) return + dialog.showErrorBox( + "MonkeyCode", + `页面加载失败(${code})\n${desc}\n\n${url}\n\n请检查网络或代理;也可设置环境变量 MONKEYCODE_DESKTOP_URL 指向可访问的地址。` + ) + }) + + win.webContents.setWindowOpenHandler(({ url }) => { + shell.openExternal(url) + return { action: "deny" } + }) + + if (isDev) { + const devBase = process.env.VITE_DEV_SERVER_URL || "http://localhost:5173" + win.loadURL(desktopEntryUrl(devBase)) + win.webContents.openDevTools({ mode: "detach" }) + } else if (process.env.MONKEYCODE_LOAD_LOCAL_DIST === "1") { + const indexHtml = path.join(__dirname, "..", "dist", "index.html") + if (!fs.existsSync(indexHtml)) { + dialog.showErrorBox( + "MonkeyCode", + "未找到 dist/index.html。请先执行 ELECTRON=true pnpm build,或不要使用 MONKEYCODE_LOAD_LOCAL_DIST。" + ) + app.quit() + return + } + // 本地 file:// + BrowserRouter 无法可靠使用 /login,仍打开入口页 + win.loadFile(indexHtml) + } else { + const base = process.env.MONKEYCODE_DESKTOP_URL || DEFAULT_PROD_URL + win.loadURL(desktopEntryUrl(base)) + } +} + +const gotLock = app.requestSingleInstanceLock() +if (!gotLock) { + app.quit() +} else { + app.on("second-instance", () => { + const w = BrowserWindow.getAllWindows()[0] + if (w) { + if (w.isMinimized()) w.restore() + w.focus() + } + }) + + app.whenReady().then(() => { + // Windows / Linux:去掉顶部「文件、编辑…」应用菜单栏 + if (process.platform !== "darwin") { + Menu.setApplicationMenu(null) + } else { + const icon = windowIconPath() + if (icon) app.dock.setIcon(icon) + } + createWindow() + }) +} + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") app.quit() +}) + +app.on("activate", () => { + if (BrowserWindow.getAllWindows().length === 0) createWindow() +}) diff --git a/frontend/electron/preload.cjs b/frontend/electron/preload.cjs new file mode 100644 index 00000000..cec9af7e --- /dev/null +++ b/frontend/electron/preload.cjs @@ -0,0 +1,2 @@ +"use strict" +// Preload:若需向页面暴露安全 API,请使用 contextBridge.exposeInMainWorld。 diff --git a/frontend/package.json b/frontend/package.json index b050e6cc..4d7227a2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,14 +1,31 @@ { "name": "monkeycode-ai", "private": true, - "version": "0.0.0", + "version": "260323.0.1", + "description": "MonkeyCode 桌面客户端", + "author": "MonkeyCode", "type": "module", + "main": "electron/main.cjs", "scripts": { "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", - "api": "sta --path ${SWAGGER} --output src/api" + "api": "sta --path ${SWAGGER} --output src/api", + "electron:dev": "concurrently -k \"vite\" \"wait-on http://localhost:5173 && electron .\"", + "electron:build:dist": "ELECTRON=true pnpm build", + "electron:pack": "electron-builder --mac --publish never", + "electron:pack:dir": "electron-builder --mac dir --publish never", + "electron:pack:with-dist": "pnpm electron:build:dist && electron-builder --mac -c electron-builder.full.json --publish never", + "electron:pack:win": "node scripts/pack-win.mjs", + "electron:pack:win:portable": "node scripts/pack-win.mjs -- --win portable --x64 --publish never", + "electron:pack:win:nsis": "node scripts/pack-win.mjs -- --win nsis --x64 --publish never", + "electron:pack:win:dir": "node scripts/pack-win.mjs -- --win dir --x64 --publish never", + "electron:sync-icon": "node -e \"require('fs').copyFileSync('public/logo-colored.png','electron/icon.png')\"", + "electron:ci:win": "electron-builder --win portable nsis --x64 --publish never", + "electron:ci:win:native": "electron-builder --win portable nsis --x64 --publish never -c electron-builder.ci-win.json", + "electron:ci:mac": "electron-builder --mac --arm64 --x64 --publish never", + "postinstall": "node scripts/electron-postinstall.cjs" }, "dependencies": { "@cap.js/widget": "^0.1.32", @@ -49,7 +66,6 @@ "clsx": "^2.1.1", "cmdk": "^1.1.1", "dayjs": "^1.11.19", - "dev": "^0.1.3", "diff": "^8.0.3", "gray-matter": "^4.0.3", "jszip": "^3.10.1", @@ -95,6 +111,55 @@ "typescript": "~5.9.3", "typescript-eslint": "^8.46.3", "vite": "^7.2.2", - "vite-plugin-node-polyfills": "^0.23.0" + "vite-plugin-node-polyfills": "^0.23.0", + "concurrently": "^9.2.1", + "electron": "^35.1.5", + "electron-builder": "^26.0.12", + "wait-on": "^8.0.3" + }, + "build": { + "appId": "com.monkeycode.desktop", + "productName": "MonkeyCode", + "directories": { + "output": "release" + }, + "npmRebuild": false, + "icon": "electron/icon.png", + "asarUnpack": [ + "electron/icon.png" + ], + "files": [ + "electron/**/*", + "package.json" + ], + "mac": { + "category": "public.app-category.developer-tools", + "target": [ + "dmg", + "zip" + ] + }, + "win": { + "signAndEditExecutable": false, + "target": [ + { + "target": "portable", + "arch": [ + "x64" + ] + }, + { + "target": "nsis", + "arch": [ + "x64" + ] + } + ] + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true + }, + "asar": true } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 8c913789..2b667a46 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -122,9 +122,6 @@ importers: dayjs: specifier: ^1.11.19 version: 1.11.19 - dev: - specifier: ^0.1.3 - version: 0.1.3 diff: specifier: ^8.0.3 version: 8.0.3 @@ -228,6 +225,15 @@ importers: baseline-browser-mapping: specifier: ^2.9.19 version: 2.9.19 + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + electron: + specifier: ^35.1.5 + version: 35.7.5 + electron-builder: + specifier: ^26.0.12 + version: 26.8.1(electron-builder-squirrel-windows@26.8.1) eslint: specifier: ^9.39.1 version: 9.39.1(jiti@2.6.1) @@ -242,7 +248,7 @@ importers: version: 16.5.0 swagger-typescript-api: specifier: ^12.0.4 - version: 12.0.4 + version: 12.0.4(encoding@0.1.13) tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -258,9 +264,15 @@ importers: vite-plugin-node-polyfills: specifier: ^0.23.0 version: 0.23.1(rollup@4.53.2)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + wait-on: + specifier: ^8.0.3 + version: 8.0.5 packages: + 7zip-bin@5.2.0: + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} + '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -477,6 +489,50 @@ packages: react: ^16.8.0 || ^17 || ^18 || ^19 react-dom: ^16.8.0 || ^17 || ^18 || ^19 + '@develar/schema-utils@2.6.5': + resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} + engines: {node: '>= 8.9.0'} + + '@electron/asar@3.4.1': + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} + engines: {node: '>=10.12.0'} + hasBin: true + + '@electron/fuses@1.8.0': + resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} + hasBin: true + + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + + '@electron/get@3.1.0': + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} + engines: {node: '>=14'} + + '@electron/notarize@2.5.0': + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} + engines: {node: '>= 10.0.0'} + + '@electron/osx-sign@1.3.3': + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@electron/rebuild@4.0.3': + resolution: {integrity: sha512-u9vpTHRMkOYCs/1FLiSVAFZ7FbjsXK+bQuzviJZa+lG7BHZl1nz52/IcGvwa3sk80/fc3llutBkbCq10Vh8WQA==} + engines: {node: '>=22.12.0'} + hasBin: true + + '@electron/universal@2.0.3': + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} + engines: {node: '>=16.4'} + + '@electron/windows-sign@1.2.2': + resolution: {integrity: sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==} + engines: {node: '>=14.14'} + hasBin: true + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -695,6 +751,26 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@hapi/address@5.1.1': + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} + engines: {node: '>=14.0.0'} + + '@hapi/formula@3.0.2': + resolution: {integrity: sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==} + + '@hapi/hoek@11.0.7': + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} + + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} + + '@hapi/tlds@1.1.6': + resolution: {integrity: sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==} + engines: {node: '>=14.0.0'} + + '@hapi/topo@6.0.2': + resolution: {integrity: sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -717,6 +793,14 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -855,6 +939,14 @@ packages: '@lezer/yaml@1.0.3': resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} + '@malept/cross-spawn-promise@2.0.0': + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} + engines: {node: '>= 12.13.0'} + + '@malept/flatpak-bundler@0.4.0': + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} + engines: {node: '>= 10.0.0'} + '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} @@ -887,9 +979,21 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@npmcli/agent@3.0.0': + resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/fs@4.0.0': + resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} + engines: {node: ^18.17.0 || >=20.5.0} + '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} @@ -1554,67 +1658,56 @@ packages: resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.53.2': resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.53.2': resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.53.2': resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.2': resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.53.2': resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.53.2': resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.53.2': resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.53.2': resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.53.2': resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.53.2': resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openharmony-arm64@4.53.2': resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} @@ -1641,9 +1734,20 @@ packages: cpu: [x64] os: [win32] + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@stitches/core@1.2.8': resolution: {integrity: sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==} + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + '@tabler/icons-react@3.35.0': resolution: {integrity: sha512-XG7t2DYf3DyHT5jxFNp5xyLVbL4hMJYJhiSdHADzAjLRYfL7AnjlRfiHDHeXxkb2N103rEIvTsBRazxXtAUz2g==} peerDependencies: @@ -1690,28 +1794,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.17': resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.17': resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.17': resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.17': resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} @@ -1767,6 +1867,9 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -1869,27 +1972,42 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@22.19.15': + resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} + '@types/node@24.10.1': resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/plist@3.0.5': + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} + '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -1904,6 +2022,9 @@ packages: '@types/react@19.2.4': resolution: {integrity: sha512-tBFxBp9Nfyy5rsmefN+WXc1JeW/j2BpBHFdLZbEVfs9wn3E3NRFxwV0pJg8M1qQAexFpvz73hJXFofV0ZAu92A==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + '@types/streamsaver@2.0.5': resolution: {integrity: sha512-93o0zjV8swEhR2YI57h/2ytbJF8bJh7sI9GNB02TLJHdM4fWDxZuChwfWhyD8vt2ub4kw4rsfZ0C0yAUX+3gcg==} @@ -1919,6 +2040,12 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/verror@1.10.11': + resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@typescript-eslint/eslint-plugin@8.46.4': resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1994,6 +2121,10 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} + engines: {node: '>=10.0.0'} + '@xterm/addon-fit@0.10.0': resolution: {integrity: sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==} peerDependencies: @@ -2017,6 +2148,10 @@ packages: '@xterm/xterm@5.5.0': resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==} + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + ace-builds@1.43.4: resolution: {integrity: sha512-8hAxVfo2ImICd69BWlZwZlxe9rxDGDjuUhh+WeWgGDvfBCE+r3lkynkQvIovDz4jcMi8O7bsEaFygaDT+h9sBA==} @@ -2030,6 +2165,15 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2040,10 +2184,28 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + app-builder-bin@5.0.0-alpha.12: + resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} + + app-builder-lib@26.8.1: + resolution: {integrity: sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 26.8.1 + electron-builder-squirrel-windows: 26.8.1 + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -2057,19 +2219,48 @@ packages: asn1.js@4.10.1: resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2077,8 +2268,8 @@ packages: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} bn.js@4.12.2: resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} @@ -2086,12 +2277,20 @@ packages: bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2127,6 +2326,12 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -2136,9 +2341,28 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + builder-util-runtime@9.5.1: + resolution: {integrity: sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==} + engines: {node: '>=12.0.0'} + + builder-util@26.8.1: + resolution: {integrity: sha512-pm1lTYbGyc90DHgCDO7eo8Rl4EqKLciayNbZqGziqnH9jrlKe8ZANGdityLZU+pJh16dfzjAx2xQq9McuIPEtw==} + builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + cacache@19.0.1: + resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2188,6 +2412,21 @@ packages: chevrotain@11.0.3: resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + cipher-base@1.0.7: resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} engines: {node: '>= 0.10'} @@ -2201,10 +2440,29 @@ packages: clean-set@1.1.2: resolution: {integrity: sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2233,9 +2491,17 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2244,12 +2510,25 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + compute-scroll-into-view@2.0.4: resolution: {integrity: sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} + engines: {node: '>=18'} + hasBin: true + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -2266,6 +2545,9 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2279,6 +2561,9 @@ packages: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} + crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -2294,6 +2579,9 @@ packages: crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + cross-dirname@0.1.0: + resolution: {integrity: sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2484,9 +2772,20 @@ packages: decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2498,6 +2797,10 @@ packages: delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2512,9 +2815,8 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev@0.1.3: - resolution: {integrity: sha512-flCHQwAkXk3+1up/wo93Ms9E5Wf9K28ZGA7Oz55nBZ8OTdPPhyvZrwsT+twtySTFHIwv0w9CUNtagZgu1MgzXQ==} - hasBin: true + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2536,6 +2838,18 @@ packages: diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dir-compare@4.2.0: + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} + + dmg-builder@26.8.1: + resolution: {integrity: sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg==} + + dmg-license@1.0.11: + resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} + engines: {node: '>=8'} + os: [darwin] + hasBin: true + domain-browser@4.22.0: resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==} engines: {node: '>=10'} @@ -2543,6 +2857,10 @@ packages: dompurify@3.3.1: resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -2556,15 +2874,52 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-builder-squirrel-windows@26.8.1: + resolution: {integrity: sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA==} + + electron-builder@26.8.1: + resolution: {integrity: sha512-uWhx1r74NGpCagG0ULs/P9Nqv2nsoo+7eo4fLUOB8L8MdWltq9odW/uuLXMFCDGnPafknYLZgjNX0ZIFRzOQAw==} + engines: {node: '>=14.0.0'} + hasBin: true + + electron-publish@26.8.1: + resolution: {integrity: sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w==} + electron-to-chromium@1.5.250: resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + electron-winstaller@5.4.0: + resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} + engines: {node: '>=8.0.0'} + + electron@35.7.5: + resolution: {integrity: sha512-dnL+JvLraKZl7iusXTVTGYs10TKfzUi30uEDTqsmTm0guN9V2tbOjTzyIZbh9n3ygUjgEYyo+igAwMRXIi3IPw==} + engines: {node: '>= 12.20.55'} + hasBin: true + elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} @@ -2573,6 +2928,13 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -2588,10 +2950,17 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} @@ -2707,6 +3076,9 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -2717,6 +3089,15 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2742,6 +3123,9 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2759,8 +3143,8 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -2777,10 +3161,27 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -2789,6 +3190,33 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.4: + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + 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} @@ -2821,6 +3249,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + gitdiff-parser@0.3.1: resolution: {integrity: sha512-YQJnY8aew65id8okGxKCksH3efDCJ9HzV7M9rsvd65habf39Pkh4cgYJ27AaoDMqo1X98pgNJhNMrm/kpV7UVQ==} @@ -2832,6 +3264,18 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2840,10 +3284,18 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2920,18 +3372,42 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http2-client@1.3.5: resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iconv-corefoundation@1.1.7: + resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} + engines: {node: ^8.11.2 || >=10} + os: [darwin] + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -2958,17 +3434,16 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + 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==} inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - inotify@1.4.6: - resolution: {integrity: sha512-WW8/uqIA04O3AePQVe/Ms3ZLR0yGamaz8YOEpaXc4WBAGOPZfzu58wWErEPSUYaPyDrJRIeCn6PEIQgC1ZyQ5w==} - engines: {node: '>=0.8'} - os: [linux] - internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -2980,6 +3455,10 @@ packages: resolution: {integrity: sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==} deprecated: The Intersection Observer polyfill is no longer needed and can safely be removed. Intersection Observer has been Baseline since 2019. + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3027,6 +3506,10 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3047,15 +3530,31 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isbinaryfile@5.0.7: + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} + engines: {node: '>= 18.0.0'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + isomorphic-timers-promises@1.0.1: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} @@ -3063,10 +3562,22 @@ packages: isomorphic.js@0.2.5: resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + joi@18.0.2: + resolution: {integrity: sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==} + engines: {node: '>= 20'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3099,11 +3610,20 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -3135,6 +3655,9 @@ packages: layout-base@2.0.1: resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3185,28 +3708,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.30.2: resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.30.2: resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.30.2: resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.30.2: resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} @@ -3251,6 +3770,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -3258,12 +3781,23 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + lucide-react@0.553.0: resolution: {integrity: sha512-BRgX5zrWmNy/lkVAe0dXBgd7XQdZ3HTf+Hwe3c9WK6dqgnj9h+hxV+MDncM88xDWlCq27+TKvHGE70ViODNILw==} peerDependencies: @@ -3280,6 +3814,10 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + make-fetch-happen@14.0.3: + resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} + engines: {node: ^18.17.0 || >=20.5.0} + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -3288,6 +3826,10 @@ packages: engines: {node: '>= 20'} hasBin: true + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3481,23 +4023,95 @@ packages: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-fetch@4.0.1: + resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} + engines: {node: ^18.17.0 || >=20.5.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@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} @@ -3508,9 +4122,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nan@2.25.0: - resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3524,6 +4135,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -3533,6 +4148,16 @@ packages: next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + node-abi@4.28.0: + resolution: {integrity: sha512-Qfp5XZL1cJDOabOT8H5gnqMTmM4NjvYzHp4I/Kt/Sl76OVkOBBHRFlPspGV0hYvMoqQsypFjT/Yp7Km0beXW9g==} + engines: {node: '>=22.12.0'} + + node-addon-api@1.7.2: + resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} + + node-api-version@0.2.1: + resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -3558,6 +4183,11 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp@11.5.0: + resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + node-readfiles@0.2.0: resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} @@ -3568,6 +4198,15 @@ packages: resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} engines: {node: '>=10'} + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + oas-kit-common@1.0.8: resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} @@ -3604,16 +4243,31 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + 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'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} outvariant@1.4.0: resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -3622,6 +4276,13 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + engines: {node: '>=18'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -3656,6 +4317,10 @@ packages: 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'} @@ -3663,6 +4328,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3674,6 +4343,13 @@ packages: resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} engines: {node: '>= 0.10'} + pe-library@0.4.1: + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} + engines: {node: '>=12', npm: '>=6'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3692,6 +4368,10 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + points-on-curve@0.2.0: resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} @@ -3706,6 +4386,11 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postject@1.0.0-alpha.6: + resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} + engines: {node: '>=14.0.0'} + hasBin: true + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3719,6 +4404,10 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} + proc-log@5.0.0: + resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} + engines: {node: ^18.17.0 || >=20.5.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -3726,15 +4415,32 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -3753,6 +4459,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -3869,6 +4579,10 @@ packages: resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} + read-binary-file-arch@1.0.6: + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} + hasBin: true + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -3910,6 +4624,13 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + resedit@1.7.2: + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} + engines: {node: '>=12', npm: '>=6'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3919,14 +4640,34 @@ packages: engines: {node: '>= 0.4'} hasBin: true + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + ripemd160@2.0.3: resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} engines: {node: '>= 0.8'} + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} @@ -3944,6 +4685,9 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -3961,6 +4705,13 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sanitize-filename@1.6.4: + resolution: {integrity: sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -3968,6 +4719,13 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -3977,6 +4735,10 @@ packages: engines: {node: '>=10'} hasBin: true + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} @@ -4003,6 +4765,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + should-equal@2.0.0: resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} @@ -4037,6 +4803,33 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + 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'} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: @@ -4047,12 +4840,30 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + ssri@12.0.0: + resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + static-browser-server@1.0.3: resolution: {integrity: sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==} @@ -4072,6 +4883,10 @@ packages: 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_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -4082,6 +4897,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} @@ -4105,10 +4924,18 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -4137,10 +4964,24 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tar@7.5.12: + resolution: {integrity: sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==} + engines: {node: '>=18'} + + temp-file@3.4.0: + resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} + + temp@0.9.4: + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} + engines: {node: '>=6.0.0'} + timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -4149,6 +4990,13 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + to-buffer@1.2.2: resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} @@ -4160,12 +5008,19 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -4189,6 +5044,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -4216,6 +5075,9 @@ packages: ufo@1.6.2: resolution: {integrity: sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -4225,6 +5087,14 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unique-filename@4.0.0: + resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + unique-slug@5.0.0: + resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} + engines: {node: ^18.17.0 || >=20.5.0} + unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} @@ -4243,6 +5113,14 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + update-browserslist-db@1.1.4: resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true @@ -4281,6 +5159,9 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -4306,6 +5187,10 @@ packages: react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + verror@1.10.1: + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} + engines: {node: '>=0.6.0'} + vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -4387,9 +5272,17 @@ packages: w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + wait-on@8.0.5: + resolution: {integrity: sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==} + engines: {node: '>=12.0.0'} + hasBin: true + warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -4412,6 +5305,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4420,6 +5318,17 @@ packages: 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==} + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -4431,6 +5340,13 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -4448,6 +5364,9 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yjs@13.6.27: resolution: {integrity: sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} @@ -4461,6 +5380,8 @@ packages: snapshots: + 7zip-bin@5.2.0: {} + '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 @@ -4895,6 +5816,111 @@ snapshots: react-dom: 19.2.0(react@19.2.0) react-is: 17.0.2 + '@develar/schema-utils@2.6.5': + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + '@electron/asar@3.4.1': + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + + '@electron/fuses@1.8.0': + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + minimist: 1.2.8 + + '@electron/get@2.0.3': + dependencies: + debug: 4.4.3 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/get@3.1.0': + dependencies: + debug: 4.4.3 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/notarize@2.5.0': + dependencies: + debug: 4.4.3 + fs-extra: 9.1.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@electron/osx-sign@1.3.3': + dependencies: + compare-version: 0.1.2 + debug: 4.4.3 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/rebuild@4.0.3': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + detect-libc: 2.1.2 + got: 11.8.6 + graceful-fs: 4.2.11 + node-abi: 4.28.0 + node-api-version: 0.2.1 + node-gyp: 11.5.0 + ora: 5.4.1 + read-binary-file-arch: 1.0.6 + semver: 7.7.3 + tar: 7.5.12 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@electron/universal@2.0.3': + dependencies: + '@electron/asar': 3.4.1 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3 + dir-compare: 4.2.0 + fs-extra: 11.3.4 + minimatch: 9.0.5 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/windows-sign@1.2.2': + dependencies: + cross-dirname: 0.1.0 + debug: 4.4.3 + fs-extra: 11.3.4 + minimist: 1.2.8 + postject: 1.0.0-alpha.6 + transitivePeerDependencies: + - supports-color + optional: true + '@esbuild/aix-ppc64@0.25.12': optional: true @@ -5046,6 +6072,22 @@ snapshots: '@floating-ui/utils@0.2.10': {} + '@hapi/address@5.1.1': + dependencies: + '@hapi/hoek': 11.0.7 + + '@hapi/formula@3.0.2': {} + + '@hapi/hoek@11.0.7': {} + + '@hapi/pinpoint@2.0.1': {} + + '@hapi/tlds@1.1.6': {} + + '@hapi/topo@6.0.2': + dependencies: + '@hapi/hoek': 11.0.7 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -5065,6 +6107,19 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -5323,6 +6378,19 @@ snapshots: '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.5 + '@malept/cross-spawn-promise@2.0.0': + dependencies: + cross-spawn: 7.0.6 + + '@malept/flatpak-bundler@0.4.0': + dependencies: + debug: 4.4.3 + fs-extra: 9.1.0 + lodash: 4.17.21 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + '@marijn/find-cluster-break@1.0.2': {} '@mdxeditor/editor@3.52.1(@codemirror/language@6.11.3)(@lezer/highlight@1.2.3)(@types/react-dom@19.2.3(@types/react@19.2.4))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(yjs@13.6.27)': @@ -5414,8 +6482,25 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@npmcli/agent@3.0.0': + dependencies: + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@4.0.0': + dependencies: + semver: 7.7.3 + '@open-draft/deferred-promise@2.2.0': {} + '@pkgjs/parseargs@0.11.0': + optional: true + '@radix-ui/colors@3.0.0': {} '@radix-ui/number@1.1.1': {} @@ -6109,8 +7194,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.53.2': optional: true + '@sindresorhus/is@4.6.0': {} + + '@standard-schema/spec@1.1.0': {} + '@stitches/core@1.2.8': {} + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + '@tabler/icons-react@3.35.0(react@19.2.0)': dependencies: '@tabler/icons': 3.35.0 @@ -6215,6 +7308,13 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.2.0 + '@types/keyv': 3.1.4 + '@types/node': 24.10.1 + '@types/responselike': 1.0.3 + '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -6342,26 +7442,46 @@ snapshots: '@types/estree@1.0.8': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 24.10.1 + '@types/geojson@7946.0.16': {} '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/http-cache-semantics@4.2.0': {} + '@types/json-schema@7.0.15': {} + '@types/keyv@3.1.4': + dependencies: + '@types/node': 24.10.1 + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 '@types/ms@2.1.0': {} + '@types/node@22.19.15': + dependencies: + undici-types: 6.21.0 + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 '@types/parse-json@4.0.2': {} + '@types/plist@3.0.5': + dependencies: + '@types/node': 24.10.1 + xmlbuilder: 15.1.1 + optional: true + '@types/prismjs@1.26.5': {} '@types/react-dom@19.2.3(@types/react@19.2.4)': @@ -6376,6 +7496,10 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/responselike@1.0.3': + dependencies: + '@types/node': 24.10.1 + '@types/streamsaver@2.0.5': {} '@types/swagger-schema-official@2.0.22': {} @@ -6387,6 +7511,14 @@ snapshots: '@types/unist@3.0.3': {} + '@types/verror@1.10.11': + optional: true + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 24.10.1 + optional: true + '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -6500,6 +7632,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@xmldom/xmldom@0.8.11': {} + '@xterm/addon-fit@0.10.0(@xterm/xterm@5.5.0)': dependencies: '@xterm/xterm': 5.5.0 @@ -6518,6 +7652,8 @@ snapshots: '@xterm/xterm@5.5.0': {} + abbrev@3.0.1: {} + ace-builds@1.43.4: {} acorn-jsx@5.3.2(acorn@8.15.0): @@ -6526,6 +7662,12 @@ snapshots: acorn@8.15.0: {} + agent-base@7.1.4: {} + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -6537,10 +7679,59 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.2.2: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.3: {} + + app-builder-bin@5.0.0-alpha.12: {} + + app-builder-lib@26.8.1(dmg-builder@26.8.1)(electron-builder-squirrel-windows@26.8.1): + dependencies: + '@develar/schema-utils': 2.6.5 + '@electron/asar': 3.4.1 + '@electron/fuses': 1.8.0 + '@electron/get': 3.1.0 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.3 + '@electron/rebuild': 4.0.3 + '@electron/universal': 2.0.3 + '@malept/flatpak-bundler': 0.4.0 + '@types/fs-extra': 9.0.13 + async-exit-hook: 2.0.1 + builder-util: 26.8.1 + builder-util-runtime: 9.5.1 + chromium-pickle-js: 0.2.0 + ci-info: 4.3.1 + debug: 4.4.3 + dmg-builder: 26.8.1(electron-builder-squirrel-windows@26.8.1) + dotenv: 16.6.1 + dotenv-expand: 11.0.7 + ejs: 3.1.10 + electron-builder-squirrel-windows: 26.8.1(dmg-builder@26.8.1) + electron-publish: 26.8.1 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + isbinaryfile: 5.0.7 + jiti: 2.6.1 + js-yaml: 4.1.1 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.2.4 + plist: 3.1.0 + proper-lockfile: 4.1.2 + resedit: 1.7.2 + semver: 7.7.3 + tar: 7.5.12 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + which: 5.0.0 + transitivePeerDependencies: + - supports-color + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -6557,6 +7748,9 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 + assert-plus@1.0.0: + optional: true + assert@2.1.0: dependencies: call-bind: 1.0.8 @@ -6565,26 +7759,52 @@ snapshots: object.assign: 4.1.7 util: 0.12.5 - available-typed-arrays@1.0.7: + astral-regex@2.0.0: + optional: true + + async-exit-hook@2.0.1: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + bail@2.0.2: {} balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base64-js@1.5.1: {} baseline-browser-mapping@2.9.19: {} - bindings@1.5.0: + bl@4.1.0: dependencies: - file-uri-to-path: 1.0.0 + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 bn.js@4.12.2: {} bn.js@5.2.2: {} + boolean@3.2.0: + optional: true + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -6594,6 +7814,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -6656,6 +7880,10 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + buffer-xor@1.0.3: {} buffer@5.7.1: @@ -6668,8 +7896,63 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + builder-util-runtime@9.5.1: + dependencies: + debug: 4.4.3 + sax: 1.6.0 + transitivePeerDependencies: + - supports-color + + builder-util@26.8.1: + dependencies: + 7zip-bin: 5.2.0 + '@types/debug': 4.1.12 + app-builder-bin: 5.0.0-alpha.12 + builder-util-runtime: 9.5.1 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + fs-extra: 10.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + js-yaml: 4.1.1 + sanitize-filename: 1.6.4 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + tiny-async-pool: 1.3.0 + transitivePeerDependencies: + - supports-color + builtin-status-codes@3.0.0: {} + cacache@19.0.1: + dependencies: + '@npmcli/fs': 4.0.0 + fs-minipass: 3.0.3 + glob: 10.5.0 + lru-cache: 10.4.3 + minipass: 7.1.3 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 7.0.4 + ssri: 12.0.0 + tar: 7.5.12 + unique-filename: 4.0.0 + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -6722,6 +8005,14 @@ snapshots: '@chevrotain/utils': 11.0.3 lodash-es: 4.17.21 + chownr@3.0.0: {} + + chromium-pickle-js@0.2.0: {} + + ci-info@4.3.1: {} + + ci-info@4.4.0: {} + cipher-base@1.0.7: dependencies: inherits: 2.0.4 @@ -6736,12 +8027,30 @@ snapshots: clean-set@1.1.2: {} + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + optional: true + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + clsx@2.1.1: {} cm6-theme-basic-light@0.2.0(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.3): @@ -6779,16 +8088,36 @@ snapshots: color-name@1.1.4: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@5.1.0: {} + commander@7.2.0: {} commander@8.3.0: {} + commander@9.5.0: + optional: true + + compare-version@0.1.2: {} + compute-scroll-into-view@2.0.4: {} concat-map@0.0.1: {} + concurrently@9.2.1: + dependencies: + chalk: 4.1.2 + rxjs: 7.8.2 + shell-quote: 1.8.3 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + confbox@0.1.8: {} console-browserify@1.2.0: {} @@ -6799,6 +8128,9 @@ snapshots: cookie@1.0.2: {} + core-util-is@1.0.2: + optional: true + core-util-is@1.0.3: {} cose-base@1.0.3: @@ -6817,6 +8149,11 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + crc@3.8.0: + dependencies: + buffer: 5.7.1 + optional: true + create-ecdh@4.0.4: dependencies: bn.js: 4.12.2 @@ -6843,6 +8180,9 @@ snapshots: crelt@1.0.6: {} + cross-dirname@0.1.0: + optional: true + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -7067,8 +8407,18 @@ snapshots: dependencies: character-entities: 2.0.2 + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-is@0.1.4: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -7085,6 +8435,8 @@ snapshots: dependencies: robust-predicates: 3.0.2 + delayed-stream@1.0.0: {} + dequal@2.0.3: {} des.js@1.1.0: @@ -7096,9 +8448,8 @@ snapshots: detect-node-es@1.1.0: {} - dev@0.1.3: - dependencies: - inotify: 1.4.6 + detect-node@2.1.0: + optional: true devlop@1.1.0: dependencies: @@ -7118,12 +8469,46 @@ snapshots: miller-rabin: 4.0.1 randombytes: 2.1.0 + dir-compare@4.2.0: + dependencies: + minimatch: 3.1.2 + p-limit: 3.1.0 + + dmg-builder@26.8.1(electron-builder-squirrel-windows@26.8.1): + dependencies: + app-builder-lib: 26.8.1(dmg-builder@26.8.1)(electron-builder-squirrel-windows@26.8.1) + builder-util: 26.8.1 + fs-extra: 10.1.0 + iconv-lite: 0.6.3 + js-yaml: 4.1.1 + optionalDependencies: + dmg-license: 1.0.11 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + + dmg-license@1.0.11: + dependencies: + '@types/plist': 3.0.5 + '@types/verror': 1.10.11 + ajv: 6.12.6 + crc: 3.8.0 + iconv-corefoundation: 1.1.7 + plist: 3.1.0 + smart-buffer: 4.2.0 + verror: 1.10.1 + optional: true + domain-browser@4.22.0: {} dompurify@3.3.1: optionalDependencies: '@types/trusted-types': 2.0.7 + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.6.1 + dotenv@16.6.1: {} downshift@7.6.2(react@19.2.0): @@ -7141,8 +8526,72 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + + electron-builder-squirrel-windows@26.8.1(dmg-builder@26.8.1): + dependencies: + app-builder-lib: 26.8.1(dmg-builder@26.8.1)(electron-builder-squirrel-windows@26.8.1) + builder-util: 26.8.1 + electron-winstaller: 5.4.0 + transitivePeerDependencies: + - dmg-builder + - supports-color + + electron-builder@26.8.1(electron-builder-squirrel-windows@26.8.1): + dependencies: + app-builder-lib: 26.8.1(dmg-builder@26.8.1)(electron-builder-squirrel-windows@26.8.1) + builder-util: 26.8.1 + builder-util-runtime: 9.5.1 + chalk: 4.1.2 + ci-info: 4.4.0 + dmg-builder: 26.8.1(electron-builder-squirrel-windows@26.8.1) + fs-extra: 10.1.0 + lazy-val: 1.0.5 + simple-update-notifier: 2.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - electron-builder-squirrel-windows + - supports-color + + electron-publish@26.8.1: + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 26.8.1 + builder-util-runtime: 9.5.1 + chalk: 4.1.2 + form-data: 4.0.5 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + electron-to-chromium@1.5.250: {} + electron-winstaller@5.4.0: + dependencies: + '@electron/asar': 3.4.1 + debug: 4.4.3 + fs-extra: 7.0.1 + lodash: 4.17.21 + temp: 0.9.4 + optionalDependencies: + '@electron/windows-sign': 1.2.2 + transitivePeerDependencies: + - supports-color + + electron@35.7.5: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 22.19.15 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + elliptic@6.6.1: dependencies: bn.js: 4.12.2 @@ -7155,6 +8604,17 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 @@ -7162,6 +8622,10 @@ snapshots: entities@6.0.1: {} + env-paths@2.2.1: {} + + err-code@2.0.3: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -7174,6 +8638,13 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 @@ -7181,6 +8652,9 @@ snapshots: esniff: 2.0.1 next-tick: 1.1.0 + es6-error@4.1.1: + optional: true + es6-iterator@2.0.3: dependencies: d: 1.0.2 @@ -7339,6 +8813,8 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.1.2 + exponential-backoff@3.1.3: {} + ext@1.7.0: dependencies: type: 2.7.3 @@ -7349,6 +8825,19 @@ snapshots: extend@3.0.2: {} + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extsprintf@1.4.1: + optional: true + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -7377,6 +8866,10 @@ snapshots: dependencies: format: 0.2.2 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -7390,7 +8883,9 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 fill-range@7.1.1: dependencies: @@ -7408,16 +8903,68 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.11: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + format@0.2.2: {} formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@11.3.4: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.3 + + fs.realpath@1.0.0: {} + fsevents@2.3.3: optional: true @@ -7449,6 +8996,10 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + gitdiff-parser@0.3.1: {} glob-parent@5.1.2: @@ -7459,12 +9010,60 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + 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 + + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.3 + serialize-error: 7.0.1 + optional: true + globals@14.0.0: {} globals@16.5.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + optional: true + gopd@1.2.0: {} + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -7600,14 +9199,45 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + html-url-attributes@3.0.1: {} html-void-elements@3.0.0: {} + http-cache-semantics@4.2.0: {} + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + http2-client@1.3.5: {} + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + https-browserify@1.0.0: {} + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + iconv-corefoundation@1.1.7: + dependencies: + cli-truncate: 2.1.0 + node-addon-api: 1.7.2 + optional: true + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -7627,21 +9257,23 @@ snapshots: imurmurhash@0.1.4: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} inline-style-parser@0.2.7: {} - inotify@1.4.6: - dependencies: - bindings: 1.5.0 - nan: 2.25.0 - internmap@1.0.1: {} internmap@2.0.3: {} intersection-observer@0.10.0: {} + ip-address@10.1.0: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -7684,6 +9316,8 @@ snapshots: is-hexadecimal@2.0.1: {} + is-interactive@1.0.0: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.8 @@ -7704,18 +9338,48 @@ snapshots: dependencies: which-typed-array: 1.1.20 + is-unicode-supported@0.1.0: {} + isarray@1.0.0: {} isarray@2.0.5: {} + isbinaryfile@4.0.10: {} + + isbinaryfile@5.0.7: {} + isexe@2.0.0: {} + isexe@3.1.5: {} + isomorphic-timers-promises@1.0.1: {} isomorphic.js@0.2.5: {} + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + jiti@2.6.1: {} + joi@18.0.2: + dependencies: + '@hapi/address': 5.1.1 + '@hapi/formula': 3.0.2 + '@hapi/hoek': 11.0.7 + '@hapi/pinpoint': 2.0.1 + '@hapi/tlds': 1.1.6 + '@hapi/topo': 6.0.2 + '@standard-schema/spec': 1.1.0 + js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -7741,8 +9405,21 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: + optional: true + json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jszip@3.10.1: dependencies: lie: 3.3.0 @@ -7776,6 +9453,8 @@ snapshots: layout-base@2.0.1: {} + lazy-val@1.0.5: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -7858,21 +9537,34 @@ snapshots: lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 + lowercase-keys@2.0.0: {} + lowlight@1.20.0: dependencies: fault: 1.0.4 highlight.js: 10.7.3 + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lucide-react@0.553.0(react@19.2.0): dependencies: react: 19.2.0 @@ -7887,10 +9579,31 @@ snapshots: dependencies: semver: 6.3.1 + make-fetch-happen@14.0.3: + dependencies: + '@npmcli/agent': 3.0.0 + cacache: 19.0.1 + http-cache-semantics: 4.2.0 + minipass: 7.1.3 + minipass-fetch: 4.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + markdown-table@3.0.4: {} marked@16.4.2: {} + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + optional: true + math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -8416,20 +10129,82 @@ snapshots: bn.js: 4.12.2 brorand: 1.1.0 + mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.3 + + minipass-fetch@4.0.1: + dependencies: + minipass: 7.1.3 + minipass-sized: 1.0.3 + minizlib: 3.1.0 + 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@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mlly@1.8.0: dependencies: acorn: 8.15.0 @@ -8441,14 +10216,14 @@ snapshots: ms@2.1.3: {} - nan@2.25.0: {} - nanoid@3.3.11: {} nanoid@3.3.4: {} natural-compare@1.4.0: {} + negotiator@1.0.0: {} + next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: react: 19.2.0 @@ -8456,6 +10231,17 @@ snapshots: next-tick@1.1.0: {} + node-abi@4.28.0: + dependencies: + semver: 7.7.3 + + node-addon-api@1.7.2: + optional: true + + node-api-version@0.2.1: + dependencies: + semver: 7.7.3 + node-domexception@1.0.0: {} node-emoji@1.11.0: @@ -8466,9 +10252,11 @@ snapshots: dependencies: http2-client: 1.3.5 - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-fetch@3.3.2: dependencies: @@ -8476,6 +10264,21 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + node-gyp@11.5.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + make-fetch-happen: 14.0.3 + nopt: 8.1.0 + proc-log: 5.0.0 + semver: 7.7.3 + tar: 7.5.12 + tinyglobby: 0.2.15 + which: 5.0.0 + transitivePeerDependencies: + - supports-color + node-readfiles@0.2.0: dependencies: es6-promise: 3.3.1 @@ -8512,6 +10315,12 @@ snapshots: util: 0.12.5 vm-browserify: 1.1.2 + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + + normalize-url@6.1.0: {} + oas-kit-common@1.0.8: dependencies: fast-safe-stringify: 2.1.1 @@ -8563,6 +10372,14 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -8572,10 +10389,24 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + os-browserify@0.3.0: {} outvariant@1.4.0: {} + p-cancelable@2.1.1: {} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -8584,6 +10415,10 @@ snapshots: dependencies: p-limit: 3.1.0 + p-map@7.0.4: {} + + package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} pako@1.0.11: {} @@ -8627,10 +10462,17 @@ snapshots: path-exists@4.0.0: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + path-type@4.0.0: {} pathe@2.0.3: {} @@ -8644,6 +10486,10 @@ snapshots: sha.js: 2.4.12 to-buffer: 1.2.2 + pe-library@0.4.1: {} + + pend@1.2.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -8660,6 +10506,12 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.11 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + points-on-curve@0.2.0: {} points-on-path@0.2.1: @@ -8675,24 +10527,46 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postject@1.0.0-alpha.6: + dependencies: + commander: 9.5.0 + optional: true + prelude-ls@1.2.1: {} prettier@2.7.1: {} prismjs@1.30.0: {} + proc-log@5.0.0: {} + process-nextick-args@2.0.1: {} process@0.11.10: {} + progress@2.0.3: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + property-information@7.1.0: {} + proxy-from-env@1.1.0: {} + public-encrypt@4.0.3: dependencies: bn.js: 4.12.2 @@ -8702,6 +10576,11 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.1.2 + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@1.4.1: {} punycode@2.3.1: {} @@ -8714,6 +10593,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-lru@5.1.1: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.1.2 @@ -8843,6 +10724,12 @@ snapshots: react@19.2.0: {} + read-binary-file-arch@1.0.6: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -8933,6 +10820,12 @@ snapshots: require-directory@2.1.1: {} + resedit@1.7.2: + dependencies: + pe-library: 0.4.1 + + resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} resolve@1.22.11: @@ -8941,13 +10834,38 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + reusify@1.1.0: {} + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + ripemd160@2.0.3: dependencies: hash-base: 3.1.2 inherits: 2.0.4 + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + optional: true + robust-predicates@3.0.2: {} rollup@4.53.2: @@ -8991,6 +10909,10 @@ snapshots: rw@1.3.3: {} + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + sade@1.8.1: dependencies: mri: 1.2.0 @@ -9007,6 +10929,12 @@ snapshots: safer-buffer@2.1.2: {} + sanitize-filename@1.6.4: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sax@1.6.0: {} + scheduler@0.27.0: {} section-matter@1.0.0: @@ -9014,10 +10942,20 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 + semver-compare@1.0.0: + optional: true + + semver@5.7.2: {} + semver@6.3.1: {} semver@7.7.3: {} + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + optional: true + set-cookie-parser@2.7.2: {} set-function-length@1.2.2: @@ -9045,6 +10983,8 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.8.3: {} + should-equal@2.0.0: dependencies: should-type: 1.4.0 @@ -9099,6 +11039,36 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.3 + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + optional: true + + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.1.0 + smart-buffer: 4.2.0 + sonner@2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: react: 19.2.0 @@ -9106,10 +11076,26 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + space-separated-tokens@2.0.2: {} sprintf-js@1.0.3: {} + sprintf-js@1.1.3: + optional: true + + ssri@12.0.0: + dependencies: + minipass: 7.1.3 + + stat-mode@1.0.0: {} + static-browser-server@1.0.3: dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -9139,6 +11125,12 @@ snapshots: 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.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -9152,6 +11144,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-bom-string@1.0.0: {} strip-json-comments@3.1.1: {} @@ -9172,15 +11168,25 @@ snapshots: stylis@4.3.6: {} + sumchecker@3.0.1: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} swagger-schema-official@2.0.0-bab6bed: {} - swagger-typescript-api@12.0.4: + swagger-typescript-api@12.0.4(encoding@0.1.13): dependencies: '@types/swagger-schema-official': 2.0.22 cosmiconfig: 7.0.1 @@ -9194,15 +11200,15 @@ snapshots: node-fetch: 3.3.2 prettier: 2.7.1 swagger-schema-official: 2.0.0-bab6bed - swagger2openapi: 7.0.8 + swagger2openapi: 7.0.8(encoding@0.1.13) typescript: 4.8.4 transitivePeerDependencies: - encoding - swagger2openapi@7.0.8: + swagger2openapi@7.0.8(encoding@0.1.13): dependencies: call-me-maybe: 1.0.2 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) node-fetch-h2: 2.3.0 node-readfiles: 0.2.0 oas-kit-common: 1.0.8 @@ -9223,10 +11229,32 @@ snapshots: tapable@2.3.0: {} + tar@7.5.12: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + temp-file@3.4.0: + dependencies: + async-exit-hook: 2.0.1 + fs-extra: 10.1.0 + + temp@0.9.4: + dependencies: + mkdirp: 0.5.6 + rimraf: 2.6.3 + timers-browserify@2.0.12: dependencies: setimmediate: 1.0.5 + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -9234,6 +11262,12 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.5 + + tmp@0.2.5: {} + to-buffer@1.2.2: dependencies: isarray: 2.0.5 @@ -9246,10 +11280,16 @@ snapshots: tr46@0.0.3: {} + tree-kill@1.2.2: {} + trim-lines@3.0.1: {} trough@2.2.0: {} + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -9266,6 +11306,9 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@0.13.1: + optional: true + type@2.7.3: {} typed-array-buffer@1.0.3: @@ -9291,6 +11334,8 @@ snapshots: ufo@1.6.2: {} + undici-types@6.21.0: {} + undici-types@7.16.0: {} unidiff@1.0.4: @@ -9307,6 +11352,14 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unique-filename@4.0.0: + dependencies: + unique-slug: 5.0.0 + + unique-slug@5.0.0: + dependencies: + imurmurhash: 0.1.4 + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -9334,6 +11387,10 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + universalify@0.1.2: {} + + universalify@2.0.1: {} + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: browserslist: 4.28.0 @@ -9368,6 +11425,8 @@ snapshots: dependencies: react: 19.2.0 + utf8-byte-length@1.0.5: {} + util-deprecate@1.0.2: {} util@0.12.5: @@ -9398,6 +11457,13 @@ snapshots: - '@types/react' - '@types/react-dom' + verror@1.10.1: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + optional: true + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -9457,10 +11523,24 @@ snapshots: w3c-keyname@2.2.8: {} + wait-on@8.0.5: + dependencies: + axios: 1.13.6 + joi: 18.0.2 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + warning@4.0.3: dependencies: loose-envify: 1.4.0 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + web-namespaces@2.0.1: {} web-streams-polyfill@3.3.3: {} @@ -9486,6 +11566,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@5.0.0: + dependencies: + isexe: 3.1.5 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -9494,12 +11578,26 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + xmlbuilder@15.1.1: {} + xtend@4.0.2: {} y18n@5.0.8: {} yallist@3.1.1: {} + yallist@4.0.0: {} + + yallist@5.0.0: {} + yaml@1.10.2: {} yaml@2.8.2: {} @@ -9516,6 +11614,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + yjs@13.6.27: dependencies: lib0: 0.2.115 diff --git a/frontend/public/ppt/index.html b/frontend/public/ppt/index.html index a9efa8fb..7d063e85 100644 --- a/frontend/public/ppt/index.html +++ b/frontend/public/ppt/index.html @@ -3,7 +3,7 @@ - MonkeyCode - 企业级 AI 开发平台 + MonkeyCode AI — 产品介绍 @@ -25,82 +25,56 @@ --orange-glow: #fb923c; } - .reveal { - font-weight: 400; - } - - .reveal .slides { - text-align: left; - } - + .reveal { font-weight: 400; } + .reveal .slides { text-align: left; } .reveal .slides section { - padding: 50px 60px; + padding: 48px 56px; box-sizing: border-box; height: 100%; } - .reveal h1, .reveal h2, .reveal h3 { text-transform: none; font-weight: 700; letter-spacing: -0.02em; } - .reveal h1 { - font-size: 2.5em; + font-size: 2.4em; background: var(--accent-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } - .reveal h2 { - font-size: 1.8em; + font-size: 1.7em; color: var(--cyan-glow); - margin-bottom: 0.6em; + margin-bottom: 0.45em; } - .reveal h3 { - font-size: 1.15em; + font-size: 1.05em; color: var(--purple-glow); + margin-top: 0.65em; } - .reveal p, .reveal li { - font-size: 0.95em; + font-size: 0.92em; line-height: 1.7; color: #b8c0cc; } - .reveal ul { list-style: none; padding-left: 0; - margin-top: 20px; + margin-top: 14px; } - .reveal ul li { position: relative; - padding-left: 1.8em; - margin-bottom: 0.7em; + padding-left: 1.55em; + margin-bottom: 0.55em; } - .reveal ul li::before { content: "▹"; position: absolute; left: 0; color: var(--cyan-glow); - font-size: 1em; } - - .reveal code { - font-family: var(--r-code-font); - background: rgba(100, 255, 218, 0.1); - border: 1px solid rgba(100, 255, 218, 0.2); - border-radius: 4px; - padding: 0.1em 0.4em; - color: var(--cyan-glow); - font-size: 0.9em; - } - - /* Title slide styling */ .title-slide { text-align: center !important; display: flex !important; @@ -108,169 +82,120 @@ justify-content: center; align-items: center; } - - .title-slide h1 { - font-size: 3.5em; - margin-bottom: 0.2em; - } - + .title-slide h1 { font-size: 3.2em; margin-bottom: 0.12em; } .title-slide .subtitle { - font-size: 1.2em; - color: #8892a6; - font-weight: 300; + font-size: 1.25em; + color: #c4cad4; + font-weight: 400; + max-width: 28em; + line-height: 1.5; } - - .title-slide .company { - font-size: 0.9em; - color: var(--orange-glow); - margin-top: 30px; + .title-slide .hint { + font-size: 0.8em; + color: #8892a6; + margin-top: 36px; } - - /* Flow diagram */ .flow-box { display: inline-flex; align-items: center; - gap: 12px; + gap: 10px; + flex-wrap: wrap; background: rgba(100, 255, 218, 0.08); border: 1px solid rgba(100, 255, 218, 0.2); border-radius: 8px; padding: 12px 20px; - margin: 20px 0; + margin: 22px 0; } - .flow-box .step { background: linear-gradient(135deg, #667eea, #764ba2); color: white; padding: 8px 16px; border-radius: 6px; - font-size: 0.85em; + font-size: 0.82em; font-weight: 500; } - - .flow-box .arrow { - color: var(--cyan-glow); - font-size: 1.2em; - } - - /* Feature cards */ + .flow-box .arrow { color: var(--cyan-glow); font-size: 1.1em; } .feature-grid { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 24px; - margin-top: 30px; - } - - .feature-grid.three-col { - grid-template-columns: repeat(3, 1fr); + gap: 20px; + margin-top: 22px; } - + .feature-grid.three-col { grid-template-columns: repeat(3, 1fr); } .feature-card { background: linear-gradient(145deg, rgba(30, 41, 59, 0.8), rgba(15, 23, 42, 0.9)); border: 1px solid rgba(100, 255, 218, 0.15); border-radius: 14px; - padding: 24px; - transition: all 0.3s ease; + padding: 22px; + transition: border-color 0.25s ease; } - .feature-card:hover { - border-color: rgba(100, 255, 218, 0.4); - transform: translateY(-3px); - box-shadow: 0 15px 30px rgba(100, 255, 218, 0.08); + border-color: rgba(100, 255, 218, 0.35); } - - .feature-card h3 { - margin-top: 0; - font-size: 1.05em; - } - - .feature-card p { - font-size: 0.85em; - margin-bottom: 0; + .feature-card h3 { margin-top: 0; font-size: 1.02em; } + .feature-card p { font-size: 0.82em; margin-bottom: 0; line-height: 1.65; } + .icon { font-size: 1.6em; margin-bottom: 10px; display: block; } + .pull-quote { + font-size: 1.15em; + font-weight: 400; + color: #e8eaed; + line-height: 1.65; + border-left: 4px solid var(--cyan-glow); + padding: 8px 0 8px 26px; + margin: 28px 0; } - - /* Icon styling */ - .icon { - font-size: 1.8em; - margin-bottom: 12px; - display: block; + .pull-quote footer { + margin-top: 16px; + font-size: 0.75em; + color: #8892a6; + font-style: normal; } - - /* Highlight box */ .highlight-box { - background: linear-gradient(135deg, rgba(102, 126, 234, 0.15), rgba(118, 75, 162, 0.1)); + background: linear-gradient(135deg, rgba(102, 126, 234, 0.12), rgba(118, 75, 162, 0.08)); border-left: 3px solid var(--purple-glow); padding: 16px 24px; - border-radius: 0 10px 10px 0; + border-radius: 0 12px 12px 0; margin: 20px 0; } - - .highlight-box p { - margin: 0; - font-size: 0.9em; - } - - /* Two column layout */ + .highlight-box p { margin: 0; font-size: 0.88em; } .two-col { display: grid; grid-template-columns: 1fr 1fr; - gap: 40px; + gap: 36px; align-items: start; } - - /* Tag list */ - .tag-list { - display: flex; - flex-wrap: wrap; - gap: 10px; - margin-top: 16px; - } - + .tag-list { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; } .tag { - background: rgba(167, 139, 250, 0.15); - border: 1px solid rgba(167, 139, 250, 0.3); + background: rgba(167, 139, 250, 0.12); + border: 1px solid rgba(167, 139, 250, 0.28); color: var(--purple-glow); padding: 6px 14px; - border-radius: 20px; - font-size: 0.8em; + border-radius: 999px; + font-size: 0.76em; } - - /* Animated background */ .reveal .slides::before { content: ""; position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: + inset: 0; + background: radial-gradient(ellipse at 20% 80%, rgba(102, 126, 234, 0.15) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(167, 139, 250, 0.1) 0%, transparent 50%), radial-gradient(ellipse at 50% 50%, rgba(240, 147, 251, 0.05) 0%, transparent 70%); pointer-events: none; z-index: -1; } - - /* CTA button */ .cta-button { display: inline-block; - padding: 14px 36px; + padding: 14px 38px; background: var(--accent-gradient); - color: white; + color: white !important; text-decoration: none; border-radius: 50px; font-weight: 600; font-size: 1em; - margin-top: 30px; - transition: all 0.3s ease; - box-shadow: 0 8px 30px rgba(102, 126, 234, 0.3); + margin-top: 28px; + box-shadow: 0 8px 30px rgba(102, 126, 234, 0.35); } - - .cta-button:hover { - transform: scale(1.05); - box-shadow: 0 12px 40px rgba(102, 126, 234, 0.5); - } - - /* Center helper */ .centered { text-align: center !important; display: flex !important; @@ -278,318 +203,154 @@ justify-content: center; align-items: center; } - - /* Slide number */ - .reveal .slide-number { - font-family: var(--r-code-font); - font-size: 0.8em; - color: #8892a6; - background: transparent; - } - - /* Progress bar */ - .reveal .progress { - height: 3px; - background: rgba(100, 255, 218, 0.1); - } - - .reveal .progress span { - background: var(--accent-gradient); - } - - /* Role cards */ - .role-grid { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 20px; - margin-top: 24px; - } - - .role-card { - background: rgba(30, 41, 59, 0.6); - border: 1px solid rgba(100, 255, 218, 0.1); - border-radius: 10px; - padding: 20px; - text-align: center; - } - - .role-card .role-icon { - font-size: 2em; - margin-bottom: 10px; - } - - .role-card h4 { - color: var(--cyan-glow); - font-size: 0.95em; - margin: 0 0 8px 0; - } - - .role-card p { - font-size: 0.8em; - margin: 0; - } - - /* Git platforms */ - .platform-list { - display: flex; - gap: 16px; - margin: 20px 0; - flex-wrap: wrap; - } - - .platform { - background: rgba(100, 255, 218, 0.08); - border: 1px solid rgba(100, 255, 218, 0.2); - padding: 10px 20px; - border-radius: 8px; - font-size: 0.9em; - color: var(--cyan-glow); - } - - /* Quote */ - .quote { - font-size: 1.1em; - font-style: italic; - color: #e8eaed; - border-left: 3px solid var(--cyan-glow); - padding-left: 24px; - margin: 24px 0; - } - - /* Compact list */ - .compact-list li { - margin-bottom: 0.5em; - font-size: 0.88em; + .reveal .progress span { background: var(--accent-gradient); } + .lede { + font-size: 1.02em; + color: #d1d5db; + margin-bottom: 8px; }
-
-

MonkeyCode

-

企业级 AI 开发平台

-

长亭科技 出品

-

- 按 Space 键继续 -

+

MonkeyCode AI

+

让 AI 走进真实研发流程——从想法到合并请求,可治理、可协作、可落地。

+

按 Space 或 → 翻页

-
-

什么是 MonkeyCode?

-

- MonkeyCode 不只是一个 AI 编程工具,而是一个面向专业团队的 AI 研发基础设施 -

- +

我们相信

+
+ 优秀的 AI 编程,不该停留在「单次补全」或「一次性对话」,而应嵌入需求、设计、实现与审查的闭环,并运行在团队信得过的边界里。 +
—— 产品哲学
+
+

MonkeyCode 面向专业研发团队:把自然语言变成可执行、可回顾、可审计的工程活动,而不是孤立的代码片段。

+
+ +
+

一条链路,拉通研发

+

同一套产品叙事,覆盖从意图到质量门禁的完整路径:

- 需求 + 需求与意图 - 设计 + 方案与设计 - 开发 + 编码与验证 - Review + 审查与合并
- -

覆盖研发全流程,提供安全、隔离、可并行的开发环境

-
-

📢 当前提供 SaaS 版,后续计划推出 离线部署版开源版

+

目标很简单:少换工具、少丢上下文、少踩安全雷——让人与 AI 在同一条流水线上协作。

+
+
+ +
+

三大差异化

+
+
+ 🧭 +

流程,而不是插件

+

智能任务、项目与需求相互承接;开发、设计、审查可按场景切换,沉淀在工程资产里,而不是散落在聊天记录中。

+
+
+ 🛡️ +

边界清晰的执行环境

+

任务在隔离环境中运行,与本地和线上资产解耦;支持并行、失败重来与资源治理,让企业敢把真仓库交进来。

+
+
+ ⚙️ +

可运营、可扩展

+

模型与镜像、宿主机与通知可配置;团队侧支持分组、配额与审计——AI 能力可按组织方式落地,而非个人英雄主义。

+
-
-

✨ 产品定位

+

自然语言,驱动工程

+

用描述替代繁琐编排:想做什么、对哪份代码做、希望产出什么形态,交给统一体验。

    -
  • 企业级 AI Coding 平台
  • -
  • 面向专业开发者与研发团队
  • -
  • 支持真实工程场景,支持复杂项目与多人协作
  • -
  • 不只是写代码,而是参与完整研发流程
  • +
  • 开发:在真实仓库语境下迭代实现,对话、终端、文件与预览同一屏协作。
  • +
  • 设计:把模糊需求推成可讨论、可落地的技术叙述与设计产出。
  • +
  • 审查:以评审视角审视改动,提前消化风险与债务。
- -
- 需求 - - 设计 - - 开发 - - Review -
-
-

🚀 AI 智能任务

-

核心能力:通过自然语言驱动 AI 执行任务

- -
+

项目,即协作的「锚点」

+
-

底层能力

-

由业内顶尖工具驱动:

-
- OpenAI Codex - Claude Code -
-

已使用 Codex 或 Claude Code?
可无缝迁移至 MonkeyCode

+

仓库、需求文档、任务历史被组织在项目这一层:团队对「我们在做什么」有共同画面,AI 的每次介入都可追溯到业务上下文。

-

国产模型适配

-

完整支持国内主流模型:

-
- DeepSeek - Qwen - Kimi - GLM - Doubao -
+
    +
  • 需求可演进:从原始描述到方案,再到实现任务。
  • +
  • 可选的自动化审查策略,让质量意识长在仓库上,而不是依赖个人习惯。
  • +
-
-

🚀 SDD 项目开发

-

基于 SDD(规范驱动开发) 的项目开发模式

-

相比 "Vibe coding",更强调可控性、可追溯性与工程质量

- -
- 原始需求 - - 产品设计 - - 技术设计 - - 任务列表 -
- -
-
-
👔
-

产品经理

-

需求拆解与产品设计

-
-
-
📋
-

项目管理

-

流程与进度管理

-
-
-
💻
-

研发工程师

-

技术设计与实现

-
-
+

审查,回到流水线中央

+

代码审查不应是「另一个网站里的附加功能」,而应紧贴 PR / MR 与团队习惯。

+
    +
  • 对接主流 Git 平台,Webhook 驱动,审查任务与合并请求天然关联。
  • +
  • 机器人可配置、可共享权限,适合多仓库、多团队协作。
  • +
  • 把 AI Review 从「尝鲜」推进为「流程默认项」。
  • +
-
-

🚀 Git Review Bot

-

深度集成主流 Git 平台,支持 AI 驱动的代码审查

- -
- GitHub - GitLab - Gitea - Gitee +

开放栈,保持选择权

+

不在模型与基础设施上绑架用户:

+
+ 多模型接入 + 自建或托管 API + 多平台 Git + 自有宿主机 + 自定义镜像 + 消息通知打通
- -

使用场景

-
    -
  • 在 PR / MR 中 @MonkeyCode,自动进行代码 Review
  • -
  • 接入 DevOps 流程,代码提交时自动触发 AI Review
  • -
  • 支持独立部署的私有化 GitLab 集成
  • -
+

在「能用」与「可控」之间取平衡:团队按合规与成本选择栈,MonkeyCode 负责把能力接到同一条产品链路上。

-
-

🚀 在线开发环境

-

灵活、安全的开发环境:本地开发机 + 云端控制

- -
-
- 🔒 -

环境隔离

-

每次任务自动创建虚拟机,AI 操作仅在虚拟机内执行,不影响真实环境

-
-
- -

并行运行

-

多个 AI 任务并行,每个任务独立虚拟环境,互不影响

-
-
- 🔄 -

失败重试

-

任务失败可直接重试,系统自动创建新虚拟机

+

面向组织,也面向社区

+
+
+

企业侧

+

成员与分组、宿主与镜像、模型与操作审计——为规模化使用预留管理平面,让 AI 研发可授权、可追责、可优化

-
- 📱 -

多端访问

-

支持 PC 与移动端,随时随地驱动 AI 执行研发任务

+
+

开放与分享

+

开发者广场与任务分享,让实践可被看见、被复用;核心方向持续开源,与社区共同演进工具链。

-
-

✨ 核心特色

-
-
- 🔧 -

工具无关性

-

支持 Codex、Claude Code 等,无缝切换

-
-
- 🤖 -

模型无关性

-

兼容 GPT、Claude、DeepSeek、Kimi 等

-
-
- 📐 -

SDD 驱动

-

严格管理技术设计,解决 AI 放飞自我问题

-
-
- 🌐 -

多入口触发

-

IDE / Web / Git / API 多种方式发起任务

-
-
- 🛡️ -

环境隔离

-

任务启动创建全新 OS,安全可控

-
-
- 🏢 -

企业级配置

-

支持离线大模型,支持企业内网使用

-
-
+

路线图愿景

+
    +
  • 更深的 IDE 与本地工具集成,减少上下文切换。
  • +
  • 更丰富的团队洞察与治理视图,服务技术管理者。
  • +
  • 持续强化安全与隔离叙事,成为企业愿意标准化的 AI 研发底座。
  • +
-
-

开始使用 MonkeyCode

-

- 让 AI 成为你的研发基础设施 -

- 立即体验 -

- monkeycode-ai.com +

一起重塑研发流水线

+

+ 官网体验产品 · 文档了解细节 · 欢迎交流场景与合作

+ 访问 MonkeyCode +

长亭科技 · MonkeyCode

-
-

感谢观看

-

Q & A

-

- 长亭科技 · MonkeyCode 团队 -

+

谢谢

+

欢迎提问与交流

@@ -608,22 +369,15 @@

感谢观看

transitionSpeed: 'default', backgroundTransition: 'fade', plugins: [RevealHighlight, RevealNotes, RevealMarkdown], - // 16:9 宽高比 width: 1920, height: 1080, - // 自适应缩放 margin: 0.04, minScale: 0.2, maxScale: 2.0, - // 键盘控制 keyboard: true, - // 触摸滑动 touch: true, - // 循环播放 loop: false, - // 右下角控制按钮 controls: true, - // 显示幻灯片编号 showSlideNumber: 'all', }); diff --git a/frontend/scripts/electron-postinstall.cjs b/frontend/scripts/electron-postinstall.cjs new file mode 100644 index 00000000..1cdde4a7 --- /dev/null +++ b/frontend/scripts/electron-postinstall.cjs @@ -0,0 +1,15 @@ +"use strict" + +/** CI / 无桌面需求时设为 1,可跳过 Chromium 下载 */ +if (process.env.ELECTRON_SKIP_BINARY_DOWNLOAD === "1") { + process.exit(0) +} + +const { execSync } = require("child_process") +const fs = require("fs") +const path = require("path") + +const installScript = path.join(__dirname, "..", "node_modules", "electron", "install.js") +if (fs.existsSync(installScript)) { + execSync(`node "${installScript}"`, { stdio: "inherit" }) +} diff --git a/frontend/scripts/pack-win.mjs b/frontend/scripts/pack-win.mjs new file mode 100644 index 00000000..fa6648e3 --- /dev/null +++ b/frontend/scripts/pack-win.mjs @@ -0,0 +1,41 @@ +#!/usr/bin/env node +/** + * Windows 打包:默认使用 dir(免 NSIS 下载,适合 WSL/弱 GitHub 网络)。 + * 可选参数会原样传给 electron-builder,例如: + * node scripts/pack-win.mjs -- --win portable --x64 --publish never + */ +import { spawnSync } from "node:child_process" +import { readFileSync } from "node:fs" +import path from "node:path" +import { fileURLToPath } from "node:url" + +const root = path.join(path.dirname(fileURLToPath(import.meta.url)), "..") + +process.env.ELECTRON_MIRROR ||= "https://npmmirror.com/mirrors/electron/" +process.env.ELECTRON_BUILDER_BINARIES_MIRROR ||= "https://npmmirror.com/mirrors/electron-builder-binaries/" +process.env.CSC_IDENTITY_AUTO_DISCOVERY = "false" + +const eb = path.join(root, "node_modules", ".bin", "electron-builder") +let extra = process.argv.slice(2) +if (extra[0] === "--") extra = extra.slice(1) +const useDefaultDir = extra.length === 0 +const args = useDefaultDir ? ["--win", "dir", "--x64", "--publish", "never"] : extra + +const r = spawnSync(eb, args, { stdio: "inherit", cwd: root, shell: false }) +if ((r.status ?? 1) !== 0) process.exit(r.status ?? 1) + +if (useDefaultDir) { + const pkg = JSON.parse(readFileSync(path.join(root, "package.json"), "utf8")) + const ver = pkg.version || "0.0.0" + const zipName = `MonkeyCode-${ver}-win-x64.zip` + const releaseDir = path.join(root, "release") + const z = spawnSync("zip", ["-rq", zipName, "win-unpacked"], { + stdio: "inherit", + cwd: releaseDir, + }) + if ((z.status ?? 1) !== 0) { + console.error("[pack-win] zip 失败,请手动压缩 release/win-unpacked") + process.exit(z.status ?? 1) + } + console.log(`[pack-win] 已生成 ${path.join(releaseDir, zipName)}`) +} diff --git a/frontend/src/components/console/nav/nav-main.tsx b/frontend/src/components/console/nav/nav-main.tsx deleted file mode 100644 index 2064f9c3..00000000 --- a/frontend/src/components/console/nav/nav-main.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Github } from "lucide-react" -import { Link, useLocation } from "react-router-dom" - -import { - SidebarGroup, - SidebarMenu, - SidebarMenuButton, - SidebarMenuItem, -} from "@/components/ui/sidebar" - -export default function NavMain() { - const location = useLocation() - - return ( - - - - - - - 代码审查 - - - - - - ) -} diff --git a/frontend/src/components/console/nav/user-sidebar.tsx b/frontend/src/components/console/nav/user-sidebar.tsx index bd4b8830..40c6681e 100644 --- a/frontend/src/components/console/nav/user-sidebar.tsx +++ b/frontend/src/components/console/nav/user-sidebar.tsx @@ -10,7 +10,6 @@ import { SidebarMenuButton, SidebarMenuItem, } from "@/components/ui/sidebar" -import NavMain from "./nav-main" import { useSettingsDialog } from "@/pages/console/user/page" import { Settings } from "lucide-react" @@ -36,7 +35,6 @@ export default function UserSidebar({ - diff --git a/frontend/src/components/console/settings/add-model.tsx b/frontend/src/components/console/settings/add-model.tsx index 4eb61225..dbf55903 100644 --- a/frontend/src/components/console/settings/add-model.tsx +++ b/frontend/src/components/console/settings/add-model.tsx @@ -1,4 +1,4 @@ -import { useState } from "react" +import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Dialog, @@ -45,6 +45,28 @@ export default function AddModel({ const [modelList, setModelList] = useState([]) const [loadingModels, setLoadingModels] = useState(false) const [saving, setSaving] = useState(false) + const [modelListFetchFailed, setModelListFetchFailed] = useState(false) + const [modelListAttempted, setModelListAttempted] = useState(false) + + useEffect(() => { + if (open) { + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) + } + }, [open]) + + const resetModelListState = () => { + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) + } + + const showManualModelInput = + apiToken.trim() && + !loadingModels && + modelListAttempted && + (modelListFetchFailed || modelList.length === 0) const fetchModelList = async () => { if (!apiToken.trim()) { @@ -52,6 +74,9 @@ export default function AddModel({ return } + setModelListAttempted(true) + setModelListFetchFailed(false) + if (modelProviderList[baseUrl.trim()]) { setModelList(modelProviderList[baseUrl.trim()]) return @@ -66,13 +91,16 @@ export default function AddModel({ if (resp.code === 0) { const models = resp.data?.models || [] setModelList(models) + setModelListFetchFailed(false) if (models.length === 0) { - toast.warning("未获取到可用模型") + toast.warning("未获取到可用模型,可手动填写模型名称") } else { toast.success(`获取到 ${models.length} 个可用模型`) } } else { - toast.error("获取模型列表失败: " + resp.message) + setModelList([]) + setModelListFetchFailed(true) + toast.error("获取模型列表失败: " + resp.message + ",可手动填写模型名称") } }) setLoadingModels(false) @@ -122,7 +150,7 @@ export default function AddModel({ setApiToken("") setBaseUrl("https://model-square.app.baizhi.cloud/v1") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() onOpenChange(false) onRefresh?.() } else { @@ -143,7 +171,7 @@ export default function AddModel({ setApiToken("") setBaseUrl("https://model-square.app.baizhi.cloud/v1") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() onOpenChange(false) } @@ -218,7 +246,10 @@ export default function AddModel({ setBaseUrl(e.target.value)} + onChange={(e) => { + setBaseUrl(e.target.value) + resetModelListState() + }} /> {getModelUrlDescription(baseUrl, interfaceType)} @@ -242,55 +273,73 @@ export default function AddModel({ setApiToken(e.target.value)} + onChange={(e) => { + setApiToken(e.target.value) + resetModelListState() + }} /> 模型名称 - + {showManualModelInput ? ( + <> + setModel(e.target.value)} + /> + + {modelListFetchFailed + ? "无法拉取模型列表,请按服务商文档填写模型 ID。" + : "当前未返回可用模型,请手动填写模型名称。"} + + + ) : ( + + )} diff --git a/frontend/src/components/console/settings/edit-model.tsx b/frontend/src/components/console/settings/edit-model.tsx index bca4aa6d..df6a95bb 100644 --- a/frontend/src/components/console/settings/edit-model.tsx +++ b/frontend/src/components/console/settings/edit-model.tsx @@ -46,6 +46,20 @@ export default function EditModel({ const [modelList, setModelList] = useState([]) const [loadingModels, setLoadingModels] = useState(false) const [saving, setSaving] = useState(false) + const [modelListFetchFailed, setModelListFetchFailed] = useState(false) + const [modelListAttempted, setModelListAttempted] = useState(false) + + const resetModelListState = () => { + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) + } + + const showManualModelInput = + apiToken.trim() && + !loadingModels && + modelListAttempted && + (modelListFetchFailed || modelList.length === 0) useEffect(() => { if (model && open) { @@ -53,7 +67,7 @@ export default function EditModel({ setBaseUrl(model.base_url || "https://model-square.app.baizhi.cloud/v1") setSelectedModel(model.model || "") setInterfaceType(model.interface_type || ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() } }, [model, open]) @@ -63,6 +77,9 @@ export default function EditModel({ return } + setModelListAttempted(true) + setModelListFetchFailed(false) + if (modelProviderList[baseUrl.trim()]) { setModelList(modelProviderList[baseUrl.trim()]) return @@ -77,14 +94,16 @@ export default function EditModel({ if (resp.code === 0) { const models = resp.data?.models || [] setModelList(models) + setModelListFetchFailed(false) if (models.length === 0) { - toast.warning("未获取到可用模型") + toast.warning("未获取到可用模型,可手动填写模型名称") } else { toast.success(`获取到 ${models.length} 个可用模型`) } } else { - toast.error("获取模型列表失败: " + resp.message) + toast.error("获取模型列表失败: " + resp.message + ",可手动填写模型名称") setModelList([]) + setModelListFetchFailed(true) } }) setLoadingModels(false) @@ -144,7 +163,7 @@ export default function EditModel({ setBaseUrl("") setSelectedModel("") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() onOpenChange(false) onRefresh?.() } @@ -163,7 +182,7 @@ export default function EditModel({ setBaseUrl("") setSelectedModel("") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() onOpenChange(false) } @@ -234,7 +253,10 @@ export default function EditModel({ setBaseUrl(e.target.value)} + onChange={(e) => { + setBaseUrl(e.target.value) + resetModelListState() + }} /> @@ -247,59 +269,77 @@ export default function EditModel({ setApiToken(e.target.value)} + onChange={(e) => { + setApiToken(e.target.value) + resetModelListState() + }} /> 模型名称 - + {showManualModelInput ? ( + <> + setSelectedModel(e.target.value)} + /> + + {modelListFetchFailed + ? "无法拉取模型列表,请按服务商文档填写模型 ID。" + : "当前未返回可用模型,请手动填写模型名称。"} + + + ) : ( + + )} diff --git a/frontend/src/components/manager/add-model.tsx b/frontend/src/components/manager/add-model.tsx index 1b2673ab..de14648b 100644 --- a/frontend/src/components/manager/add-model.tsx +++ b/frontend/src/components/manager/add-model.tsx @@ -48,14 +48,31 @@ export default function AddModel({ const [modelList, setModelList] = useState([]) const [loadingModels, setLoadingModels] = useState(false) const [saving, setSaving] = useState(false) + const [modelListFetchFailed, setModelListFetchFailed] = useState(false) + const [modelListAttempted, setModelListAttempted] = useState(false) const [selectedGroupIds, setSelectedGroupIds] = useState([]) const [groups, setGroups] = useState([]) const [selectOpen, setSelectOpen] = useState(false) const selectRef = useRef(null) + const resetModelListState = () => { + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) + } + + const showManualModelInput = + apiToken.trim() && + !loadingModels && + modelListAttempted && + (modelListFetchFailed || modelList.length === 0) + useEffect(() => { if (open) { fetchGroups() + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) } }, [open]) @@ -99,6 +116,9 @@ export default function AddModel({ return } + setModelListAttempted(true) + setModelListFetchFailed(false) + if (modelProviderList[baseUrl.trim()]) { setModelList(modelProviderList[baseUrl.trim()]) return @@ -113,13 +133,16 @@ export default function AddModel({ if (resp.code === 0) { const models = resp.data?.models || [] setModelList(models) + setModelListFetchFailed(false) if (models.length === 0) { - toast.warning("未获取到可用模型") + toast.warning("未获取到可用模型,可手动填写模型名称") } else { toast.success(`获取到 ${models.length} 个可用模型`) } } else { - toast.error("获取模型列表失败: " + resp.message); + setModelList([]) + setModelListFetchFailed(true) + toast.error("获取模型列表失败: " + resp.message + ",可手动填写模型名称") } }) setLoadingModels(false) @@ -170,7 +193,7 @@ export default function AddModel({ setApiToken("") setBaseUrl("https://model-square.app.baizhi.cloud/v1") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() setSelectedGroupIds([]) setSelectOpen(false) onOpenChange(false) @@ -193,7 +216,7 @@ export default function AddModel({ setApiToken("") setBaseUrl("https://model-square.app.baizhi.cloud/v1") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() setSelectedGroupIds([]) setSelectOpen(false) onOpenChange(false) @@ -269,7 +292,10 @@ export default function AddModel({ setBaseUrl(e.target.value)} + onChange={(e) => { + setBaseUrl(e.target.value) + resetModelListState() + }} /> {getModelUrlDescription(baseUrl, interfaceType)} @@ -293,55 +319,73 @@ export default function AddModel({ setApiToken(e.target.value)} + onChange={(e) => { + setApiToken(e.target.value) + resetModelListState() + }} /> 模型名称 - + {showManualModelInput ? ( + <> + setModel(e.target.value)} + /> + + {modelListFetchFailed + ? "无法拉取模型列表,请按服务商文档填写模型 ID。" + : "当前未返回可用模型,请手动填写模型名称。"} + + + ) : ( + + )} diff --git a/frontend/src/components/manager/edit-model.tsx b/frontend/src/components/manager/edit-model.tsx index b679b28f..e9f734a5 100644 --- a/frontend/src/components/manager/edit-model.tsx +++ b/frontend/src/components/manager/edit-model.tsx @@ -48,6 +48,8 @@ export default function EditModel({ const [modelList, setModelList] = useState([]) const [loadingModels, setLoadingModels] = useState(false) const [saving, setSaving] = useState(false) + const [modelListFetchFailed, setModelListFetchFailed] = useState(false) + const [modelListAttempted, setModelListAttempted] = useState(false) const [selectedGroupIds, setSelectedGroupIds] = useState([]) const [groups, setGroups] = useState([]) const [selectOpen, setSelectOpen] = useState(false) @@ -59,13 +61,25 @@ export default function EditModel({ } }, [open]) + const resetModelListState = () => { + setModelList([]) + setModelListAttempted(false) + setModelListFetchFailed(false) + } + + const showManualModelInput = + apiToken.trim() && + !loadingModels && + modelListAttempted && + (modelListFetchFailed || modelList.length === 0) + useEffect(() => { if (model && open) { setApiToken(model.api_key || "") setBaseUrl(model.base_url || "https://model-square.app.baizhi.cloud/v1") setSelectedModel(model.model || "") setInterfaceType(model.interface_type || ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() // 初始化已选中的分组 setSelectedGroupIds(model.groups?.map(g => g.id || "").filter(id => id) || []) } @@ -111,6 +125,9 @@ export default function EditModel({ return } + setModelListAttempted(true) + setModelListFetchFailed(false) + if (modelProviderList[baseUrl.trim()]) { setModelList(modelProviderList[baseUrl.trim()]) return @@ -125,13 +142,16 @@ export default function EditModel({ if (resp.code === 0) { const models = resp.data?.models || [] setModelList(models) + setModelListFetchFailed(false) if (models.length === 0) { - toast.warning("未获取到可用模型") + toast.warning("未获取到可用模型,可手动填写模型名称") } else { toast.success(`获取到 ${models.length} 个可用模型`) } } else { - toast.error("获取模型列表失败: " + resp.message); + setModelList([]) + setModelListFetchFailed(true) + toast.error("获取模型列表失败: " + resp.message + ",可手动填写模型名称") } }) setLoadingModels(false) @@ -192,7 +212,7 @@ export default function EditModel({ setBaseUrl("") setSelectedModel("") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() setSelectedGroupIds([]) setSelectOpen(false) onOpenChange(false) @@ -215,7 +235,7 @@ export default function EditModel({ setBaseUrl("") setSelectedModel("") setInterfaceType(ConstsInterfaceType.InterfaceTypeOpenAIChat) - setModelList([]) + resetModelListState() setSelectedGroupIds([]) setSelectOpen(false) onOpenChange(false) @@ -288,7 +308,10 @@ export default function EditModel({ setBaseUrl(e.target.value)} + onChange={(e) => { + setBaseUrl(e.target.value) + resetModelListState() + }} /> @@ -301,59 +324,77 @@ export default function EditModel({ setApiToken(e.target.value)} + onChange={(e) => { + setApiToken(e.target.value) + resetModelListState() + }} /> 模型名称 - + {showManualModelInput ? ( + <> + setSelectedModel(e.target.value)} + /> + + {modelListFetchFailed + ? "无法拉取模型列表,请按服务商文档填写模型 ID。" + : "当前未返回可用模型,请手动填写模型名称。"} + + + ) : ( + + )} diff --git a/frontend/src/components/welcome/banner.tsx b/frontend/src/components/welcome/banner.tsx index 135310b9..e7a3460c 100644 --- a/frontend/src/components/welcome/banner.tsx +++ b/frontend/src/components/welcome/banner.tsx @@ -8,7 +8,7 @@ const Banner = () => { MonkeyCode — 免费的 AI 编程平台

- 说需求,AI 写代码、做设计、做 Review。云开发环境开箱即用,多模型不限量。 + 说需求,AI 写代码、做设计、做 Review。云开发环境开箱即用,基础版免费起步,专业版支持多模型自选与多任务并行。

diff --git a/frontend/src/components/welcome/highlights.tsx b/frontend/src/components/welcome/highlights.tsx index 0decbffb..104d9975 100644 --- a/frontend/src/components/welcome/highlights.tsx +++ b/frontend/src/components/welcome/highlights.tsx @@ -9,8 +9,8 @@ const Highlights = () => { const items = [ { icon: IconGift, - title: "完全免费", - description: "零成本使用,无需订阅费用,节省开发环境和大模型费用。", + title: "基础版免费", + description: "注册即可使用云开发环境与大模型,零订阅门槛。", }, { icon: IconCloud, @@ -24,8 +24,9 @@ const Highlights = () => { }, { icon: IconBrandOpenai, - title: "多模型不限量", - description: "内置 GLM、MiniMax、Kimi、Deepseek 等大模型,不限额度,无限畅用。", + title: "大模型能力", + description: + "基础版使用平台指定模型免费畅用;专业版可从多种内置模型中自主选择,并支持多任务并行。", }, ]; diff --git a/frontend/src/components/welcome/pricing.tsx b/frontend/src/components/welcome/pricing.tsx index 35405301..de5df29a 100644 --- a/frontend/src/components/welcome/pricing.tsx +++ b/frontend/src/components/welcome/pricing.tsx @@ -9,68 +9,97 @@ import { } from "@/components/ui/card"; import { cn } from "@/lib/utils"; -const Pricing = () => { - const plans = [ - { - name: "个人版", - description: "适合个人开发者", - price: "免费", - priceUnit: "", - features: [ - "完全免费,零成本使用", - "云开发环境(2 核 8GB)", - "多模型不限额度", - "智能任务 + Git 机器人", - ], - buttonText: "立即开始", - buttonLink: "/console", - buttonVariant: "default" as const, - popular: true, - }, - { - name: "团队版", - description: "适合中小型研发团队", - price: "限时免费", - priceUnit: "", - features: [ - "智能任务模式", - "在线 Git 机器人", - "IDE 辅助插件", - "团队配置管理", - "团队数据统计", - ], - buttonText: "在线申请", - buttonLink: "https://baizhi.cloud/consult", - buttonVariant: "outline" as const, - popular: false, - }, - { - name: "离线版", - description: "本地部署,数据完全私有", - price: "敬请期待", - priceUnit: "", - features: [ - "智能任务模式", - "在线 Git 机器人", - "IDE 辅助插件", - "团队配置管理", - "团队数据统计", - "本地部署" - ], - buttonText: "提前预定", - buttonLink: "https://baizhi.cloud/consult", - buttonVariant: "outline" as const, - popular: false, - }, - ]; +type Plan = { + eyebrow?: string; + name: string; + description: string; + price: string; + priceUnit?: string; + features: string[]; + buttonText: string; + buttonLink: string; + buttonVariant: "default" | "outline"; + popular?: boolean; + external?: boolean; +}; +const plans: Plan[] = [ + { + eyebrow: "在线版 · 个人", + name: "基础版", + description: "注册即可使用,云开发环境与大模型在平台规则内免费使用。", + price: "免费", + features: [ + "使用平台指定的免费模型", + "同时仅可并行 1 个任务", + "云开发环境(2 核 8GB)", + "智能任务 + Git 机器人", + ], + buttonText: "立即开始", + buttonLink: "/console", + buttonVariant: "default", + popular: true, + }, + { + eyebrow: "在线版 · 个人", + name: "专业版", + description: "使用积分兑换,解锁多模型自选与多任务并行。", + price: "10,000", + priceUnit: "积分 / 月", + features: [ + "可从多种内置模型中自主选择", + "支持多个任务并行执行", + "含基础版全部能力", + "积分来源:注册赠送 5,000、每邀请新用户 5,000、支持充值", + ], + buttonText: "立即开始", + buttonLink: "/console", + buttonVariant: "outline", + }, + { + eyebrow: "在线版 · 团队", + name: "团队版", + description: "在个人版能力基础上,提供团队协作与团队管理。", + price: "限时免费", + features: [ + "团队协作开发", + "团队管理面板", + "智能任务、Git 机器人、IDE 辅助等个人版能力", + ], + buttonText: "在线申请", + buttonLink: "https://baizhi.cloud/consult", + buttonVariant: "outline", + external: true, + }, + { + eyebrow: "离线部署", + name: "离线版", + description: "由开源版本打包,支持本地离线部署,数据完全私有。", + price: "敬请期待", + features: [ + "GitHub 开源,可自行克隆部署(见下方仓库链接)", + "本地或内网部署", + "核心研发能力离线可用", + "适合安全与合规要求高的场景", + ], + buttonText: "开源仓库", + buttonLink: "https://github.com/chaitin/MonkeyCode", + buttonVariant: "default", + external: true, + }, +]; + +const Pricing = () => { return (
-

- 价格方案 +

+ 版本与方案

-
+

+ 在线版在云端使用,分为个人与团队;离线版可本地部署。个人用户默认为基础版,可使用积分兑换专业版。 +

+
{plans.map((plan, index) => ( {
)} + {plan.eyebrow && ( +

+ {plan.eyebrow} +

+ )} {plan.name} {plan.description}
-
+
{plan.price} {plan.priceUnit && ( @@ -131,7 +165,14 @@ const Pricing = () => { size="lg" asChild > - {plan.buttonText} + + {plan.buttonText} + @@ -142,4 +183,4 @@ const Pricing = () => { ); }; -export default Pricing; \ No newline at end of file +export default Pricing; diff --git a/frontend/src/pages/console/user/task/task-detail.tsx b/frontend/src/pages/console/user/task/task-detail.tsx index 51c229f3..a69185a5 100644 --- a/frontend/src/pages/console/user/task/task-detail.tsx +++ b/frontend/src/pages/console/user/task/task-detail.tsx @@ -261,7 +261,7 @@ export default function TaskDetailPage() { const [renewDialogOpen, setRenewDialogOpen] = React.useState(false) const chatSection = ( -
+
{ const env = loadEnv(mode, process.cwd(), '') + const electronBuild = process.env.ELECTRON === 'true' return { + base: electronBuild ? './' : '/', plugins: [react(), tailwindcss()], resolve: { alias: {