From f3a3e99df26535ce985b68eda81a35e5bf1ee509 Mon Sep 17 00:00:00 2001 From: Takagi <1103069291@qq.com> Date: Thu, 25 Sep 2025 17:13:54 +0800 Subject: [PATCH 1/9] Update LICENSE.txt --- LICENSE.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 042baf3..e0861eb 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,8 +1,8 @@ # Open Source License -SQLBot is licensed under a modified version of the GNU General Public License version 3 (GPLv3), with the following additional conditions: +UPage is licensed under a modified version of the GNU General Public License version 3 (GPLv3), with the following additional conditions: -1. LOGO and copyright information: In the process of using SQLBot's frontend, you may not remove or modify the LOGO or copyright information in the SQLBot console or applications. +1. LOGO and copyright information: In the process of using UPage, you may not remove or modify the LOGO or copyright information in the UPage applications. 2. As a contributor, you should agree that: From 54d1d656428b307335d5381184032eed7c6fc63a Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 26 Sep 2025 16:46:52 +0800 Subject: [PATCH 2/9] docs: add upage usage instructions document --- .env.example | 2 +- .gitignore | 1 - Dockerfile | 6 +++++- README.md | 9 ++++++--- app/lib/.server/auth.ts | 2 +- docker-compose-dev.yaml | 2 +- docker-compose-prod.yaml | 2 +- logto/.env | 4 +++- logto/docker-compose.yaml | 2 ++ package.json | 11 +++++++---- 10 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index a0e3161..29cad77 100644 --- a/.env.example +++ b/.env.example @@ -140,7 +140,7 @@ LOGTO_BASE_URL=http://localhost:5173 # 随机任意的 36 位字符串,用于加密 Logto 的 cookie。 LOGTO_COOKIE_SECRET= # 是否在开发环境中启用 Logto 认证,设置为 false 则在开发环境不强制认证 -LOGTO_ENABLE_DEV=false +LOGTO_ENABLE=false # 运行环境,与 NODE_ENV 有所不同, NODE_ENV 在打包时就已确定,而此变量用于某些功能在不同环境下的开放 # development | production | test OPERATING_ENV=production diff --git a/.gitignore b/.gitignore index ea0db88..0f473bb 100644 --- a/.gitignore +++ b/.gitignore @@ -52,5 +52,4 @@ mock # storage /public/uploads - /data/ diff --git a/Dockerfile b/Dockerfile index 6ffff48..8b3c899 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,10 +32,14 @@ RUN pnpm prune --prod --ignore-scripts FROM node:20.18.0-alpine AS runtime WORKDIR /app +ENV OPERATING_ENV=production ENV NODE_ENV=production -ENV LOGTO_ENABLE_DEV=false +ENV LOGTO_ENABLE=false ENV PORT=3000 ENV HOST=0.0.0.0 +ENV USAGE_LOG_FILE=true +ENV MAX_UPLOAD_SIZE_MB=5 +ENV LOG_LEVEL=debug # Use pnpm RUN corepack enable && corepack prepare pnpm@9.4.0 --activate diff --git a/README.md b/README.md index 741ee93..a1e49af 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@

UPage

-

基于人工智能的可视化网页构建平台

+

基于大模型的可视化网页构建平台

GitHub release GitHub last commit GitHub Workflow Status +Documentation

------------------------------ -UPage 是一款基于人工智能的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。 +UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,使用自然语言快速实现定制化网页。 ------------------------------ @@ -27,17 +28,19 @@ docker run -d \ --restart unless-stopped \ -p 3000:3000 \ -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ./data:/app/data \ -v ./logs:/app/logs \ -v ./storage:/app/storage \ - ghcr.io/halo-dev/upage + halohub/upage:latest ``` 其中参数说明如下: - `-e LLM_DEFAULT_PROVIDER=OpenAILike`:设置默认的 LLM 提供商为 OpenAILike,即兼容 OpenAI 的 API 接口。 +- `-e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url`:设置 OpenAILike 的 API 基础 URL。 - `-e OPENAI_LIKE_API_KEY=your-openai-like-api-key`:设置 OpenAILike 的 API 密钥。 - `-e LLM_DEFAULT_MODEL=your-default-model`:设置默认的 LLM 模型,用于构建页面。 - `-e LLM_MINOR_MODEL=your-minor-model`:设置次要的 LLM 模型,用于执行其他任务。 diff --git a/app/lib/.server/auth.ts b/app/lib/.server/auth.ts index 1fc7ba5..216d1a6 100644 --- a/app/lib/.server/auth.ts +++ b/app/lib/.server/auth.ts @@ -93,7 +93,7 @@ const config: LogtoConfig = { const originalLogto = makeLogtoRemix(config, { sessionStorage }); export function shouldEnforceAuth(): boolean { - return process.env.LOGTO_ENABLE_DEV !== 'false'; + return process.env.LOGTO_ENABLE !== 'false'; } function getMockDevUser(): MockUser { diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 3cfccb9..dc55e18 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -41,7 +41,7 @@ services: - LOGTO_APP_SECRET=${LOGTO_APP_SECRET} - LOGTO_COOKIE_SECRET=${LOGTO_COOKIE_SECRET} - LOGTO_BASE_URL=${LOGTO_BASE_URL} - - LOGTO_ENABLE_DEV=${LOGTO_ENABLE_DEV:-false} + - LOGTO_ENABLE=${LOGTO_ENABLE:-false} - USAGE_LOG_FILE=true - STORAGE_DIR=/app/storage - MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-5} diff --git a/docker-compose-prod.yaml b/docker-compose-prod.yaml index 890b4bd..3bcef2c 100644 --- a/docker-compose-prod.yaml +++ b/docker-compose-prod.yaml @@ -41,7 +41,7 @@ services: - LOGTO_APP_SECRET=${LOGTO_APP_SECRET} - LOGTO_COOKIE_SECRET=${LOGTO_COOKIE_SECRET} - LOGTO_BASE_URL=${LOGTO_BASE_URL} - - LOGTO_ENABLE_DEV=${LOGTO_ENABLE_DEV:-false} + - LOGTO_ENABLE=${LOGTO_ENABLE:-false} - USAGE_LOG_FILE=${USAGE_LOG_FILE:-true} - MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-5} volumes: diff --git a/logto/.env b/logto/.env index 9d638a9..23e39ef 100644 --- a/logto/.env +++ b/logto/.env @@ -1,5 +1,7 @@ +TAG=1.31.0 LOGTO_ENDPOINT= LOGTO_ADMIN_ENDPOINT= +LOGTO_POSTGRES_PORT= LOGTO_POSTGRES_PASSWORD=postgres1 LOGTO_CORE_PORT=3001 -LOGTO_ADMIN_PORT=3002 \ No newline at end of file +LOGTO_ADMIN_PORT=3002 diff --git a/logto/docker-compose.yaml b/logto/docker-compose.yaml index 3190cfd..d3a9032 100644 --- a/logto/docker-compose.yaml +++ b/logto/docker-compose.yaml @@ -20,6 +20,8 @@ services: postgres: image: postgres:17-alpine user: postgres + ports: + - ${LOGTO_POSTGRES_PORT:-5432}:5432 environment: POSTGRES_USER: logto POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD} diff --git a/package.json b/package.json index 18cabba..1da8636 100644 --- a/package.json +++ b/package.json @@ -13,14 +13,17 @@ "check": "biome check --write --no-errors-on-unmatched .", "check:stage": "biome check --write --staged --no-errors-on-unmatched", "clean": "node scripts/clean.js", - "setup": "prisma generate && prisma migrate deploy", + "setup": "prisma migrate deploy && prisma generate", "docker:build": "docker build -t upage-ai:production -t upage-ai:latest --target runtime .", "docker:dev:run": "docker compose -f docker-compose-dev.yaml up", "docker:prod:run": "docker compose -f docker-compose-prod.yaml up", "prepare": "husky || true", "test": "vitest --run", "test:watch": "vitest", - "typecheck": "tsc" + "typecheck": "tsc", + "docs:start": "pnpm --filter upage-docs run start", + "docs:build": "pnpm --filter upage-docs run build", + "docs:serve": "pnpm --filter upage-docs run serve" }, "dependencies": { "@agentic/ai-sdk": "^8.4.4", @@ -105,7 +108,8 @@ "unist-util-visit": "^5.0.0", "winston": "^3.17.0", "winston-daily-rotate-file": "^5.0.0", - "zod": "^4.1.11" + "zod": "^4.1.11", + "node-fetch": "^3.3.2" }, "devDependencies": { "@biomejs/biome": "2.2.4", @@ -130,7 +134,6 @@ "dotenv": "^17.2.2", "fast-glob": "^3.3.3", "husky": "9.1.7", - "node-fetch": "^3.3.2", "pnpm": "^10.17.1", "sass-embedded": "^1.93.1", "typescript": "^5.9.2", From 793782cd02c718bcc003475d640e58f2d9289d61 Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 26 Sep 2025 16:47:07 +0800 Subject: [PATCH 3/9] docs: add upage usage instructions document --- .github/workflows/docs.yaml | 26 +- docs/.gitignore | 20 + docs/README.md | 64 + docs/content/404.md | 22 + docs/content/changelog.md | 115 + docs/content/configuration.md | 201 + docs/content/contributing.md | 199 + docs/content/deployment/docker-compose.md | 144 + docs/content/deployment/docker.md | 160 + docs/content/deployment/logto.md | 138 + docs/content/deployment/others.md | 40 + docs/content/deployment/source.md | 229 + docs/content/faq.md | 286 + docs/content/index.md | 34 + docs/content/quick-start.md | 121 + docs/content/user-guide/ai-page-generation.md | 159 + docs/content/user-guide/basics.md | 142 + docs/content/user-guide/page-management.md | 192 + docs/docusaurus.config.js | 133 + docs/index.md | 14 - docs/package.json | 45 + docs/sidebars.js | 73 + docs/src/css/custom.css | 30 + docs/static/img/logo.svg | 4 + pnpm-lock.yaml | 8113 ++++++++++++++++- pnpm-workspace.yaml | 3 + 26 files changed, 10637 insertions(+), 70 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/README.md create mode 100644 docs/content/404.md create mode 100644 docs/content/changelog.md create mode 100644 docs/content/configuration.md create mode 100644 docs/content/contributing.md create mode 100644 docs/content/deployment/docker-compose.md create mode 100644 docs/content/deployment/docker.md create mode 100644 docs/content/deployment/logto.md create mode 100644 docs/content/deployment/others.md create mode 100644 docs/content/deployment/source.md create mode 100644 docs/content/faq.md create mode 100644 docs/content/index.md create mode 100644 docs/content/quick-start.md create mode 100644 docs/content/user-guide/ai-page-generation.md create mode 100644 docs/content/user-guide/basics.md create mode 100644 docs/content/user-guide/page-management.md create mode 100644 docs/docusaurus.config.js delete mode 100644 docs/index.md create mode 100644 docs/package.json create mode 100644 docs/sidebars.js create mode 100644 docs/src/css/custom.css create mode 100644 docs/static/img/logo.svg create mode 100644 pnpm-workspace.yaml diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index c0f117b..dec4e93 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -20,16 +20,20 @@ jobs: run: | git config user.name github-actions[bot] git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v5 + - uses: actions/setup-node@v4 with: - python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v4 - with: - key: mkdocs-material-${{ env.cache_id }} - path: .cache - restore-keys: | - mkdocs-material- + node-version: 18 + cache: npm + cache-dependency-path: docs/package-lock.json - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force + - name: Install dependencies + run: npm ci + + - name: Build website + run: npm run build + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs/build diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..7cab78c --- /dev/null +++ b/docs/README.md @@ -0,0 +1,64 @@ +# UPage 文档 + +这是 UPage 的官方文档网站,基于 [Docusaurus 3](https://docusaurus.io/) 构建。 + +## 本地开发 + +```bash +# 安装依赖 +pnpm install + +# 启动本地开发服务器 +pnpm start +``` + +此命令会启动本地开发服务器并打开浏览器窗口。大多数更改都会实时反映,无需重新启动服务器。 + +## 构建 + +```bash +# 构建静态网站 +pnpm run build +``` + +此命令会在 `build` 目录中生成静态内容,可以使用任何静态内容托管服务进行部署。 + +## 部署 + +使用 GitHub Actions 自动部署到 GitHub Pages。每当 `docs` 目录中的文件发生变更并推送到 `main` 分支时,会自动触发部署流程。 + +## 目录结构 + +``` +docs/ +├── content/ # 文档 Markdown 文件 +│ ├── index.md # 首页 +│ ├── quick-start.md # 快速开始 +│ ├── deployment/ # 部署指南 +│ ├── user-guide/ # 用户指南 +│ └── ... +├── src/ # 源代码 +│ ├── css/ # CSS 文件 +│ └── pages/ # 自定义页面 +├── static/ # 静态文件 +│ └── img/ # 图片 +├── docusaurus.config.js # Docusaurus 配置 +├── sidebars.js # 侧边栏配置 +└── package.json # 项目依赖 +``` + +## 添加新文档 + +1. 在 `docs` 目录中创建新的 Markdown 文件 +2. 添加前置元数据: + +```md +--- +id: document-id +title: 文档标题 +--- + +# 文档内容 +``` + +3. 更新 `sidebars.js` 文件,将新文档添加到侧边栏中 diff --git a/docs/content/404.md b/docs/content/404.md new file mode 100644 index 0000000..175d8d8 --- /dev/null +++ b/docs/content/404.md @@ -0,0 +1,22 @@ +--- +id: 404-page +title: 页面未找到 +--- + +# 页面未找到 + +很抱歉,您访问的页面不存在。 + +## 可能的原因 + +- 链接已过期或被移除 +- URL 输入错误 +- 页面正在建设中 + +## 您可以尝试 + +- [返回首页](/) +- 使用顶部的搜索功能查找相关内容 +- 查看[文档目录](/)浏览所有可用文档 + +如果您认为这是一个错误,请[提交问题](https://github.com/halo-dev/upage/issues)告诉我们。 diff --git a/docs/content/changelog.md b/docs/content/changelog.md new file mode 100644 index 0000000..cd4f5eb --- /dev/null +++ b/docs/content/changelog.md @@ -0,0 +1,115 @@ +--- +id: changelog +title: 更新日志 +--- + +# 更新日志 + +本文档记录了 UPage 的版本更新历史,包括新功能、改进和修复的问题。 + +## 1.0.0 (2025-09-15) + +### 🚀 新功能 + +- **AI 页面生成**:基于自然语言描述生成完整网页 +- **多 AI 提供商支持**: + - OpenAI (GPT-3.5/GPT-4) + - Anthropic Claude + - Google Gemini + - 兼容 OpenAI 接口的服务 + - Ollama (本地模型) +- **可视化编辑器**:拖拽式页面编辑器,实时预览 +- **组件库**:丰富的预设组件,包括布局、表单、媒体等 +- **响应式设计**:自动适应不同屏幕尺寸 +- **主题系统**:内置多种主题,支持自定义 +- **页面管理**:创建、编辑、复制、删除页面 +- **版本历史**:自动保存页面版本,支持回滚 +- **导出功能**:导出为 HTML/CSS/JS、ZIP、JSON 或 PDF +- **部署集成**: + - Vercel 部署支持 + - Netlify 部署支持 +- **用户认证**:通过 Logto 实现用户认证和权限管理 +- **Docker 部署**:提供官方 Docker 镜像和 Docker Compose 配置 + +### 🔧 技术栈 + +- **前端**:React、TypeScript、Vite、UnoCSS +- **后端**:Node.js、Express、Remix +- **数据库**:SQLite +- **AI 集成**:AI SDK、各大 AI 提供商 API +- **部署**:Docker、GitHub Actions + +## 0.9.0 (2025-08-20) + +### 🚀 新功能 + +- **Beta 版本发布**:首个公开测试版本 +- **核心功能实现**: + - AI 页面生成 + - 可视化编辑器 + - 页面管理 + - 导出功能 +- **Docker 部署支持**:提供 Docker 镜像和部署指南 +- **文档系统**:基本使用文档和部署指南 + +### 🐛 修复 + +- 修复页面生成时的布局问题 +- 修复组件拖拽在某些浏览器中的兼容性问题 +- 修复导出功能中的资源路径问题 + +## 0.8.0 (2025-07-15) + +### 🚀 新功能 + +- **Alpha 版本**:内部测试版本 +- **概念验证**: + - AI 生成基本页面结构 + - 简单的可视化编辑 + - 基本的导出功能 +- **技术选型确定**: + - 前端框架和库 + - AI 集成方案 + - 部署策略 + +### 📝 计划 + +- 完善 AI 生成功能 +- 增强可视化编辑器 +- 添加更多组件和模板 +- 实现部署集成 +- 准备公开测试版本 + +## 未来计划 + +以下是 UPage 计划在未来版本中实现的功能: + +### 近期计划 (1.x) + +- **协作功能**:多用户同时编辑页面 +- **评论和反馈**:页面内评论和反馈系统 +- **更多组件**:扩展组件库,添加更多高级组件 +- **自定义主题编辑器**:可视化主题编辑工具 +- **更多 AI 提供商支持**:增加对更多 AI 模型的支持 +- **性能优化**:提升页面生成和编辑的性能 +- **移动端编辑器**:支持在移动设备上编辑页面 + +### 中期计划 (2.x) + +- **插件系统**:支持第三方插件扩展功能 +- **高级动画**:更丰富的页面动画效果 +- **数据集成**:与外部数据源集成 +- **多语言支持**:界面和生成内容的多语言支持 +- **AI 辅助编程**:生成自定义组件和交互逻辑 +- **高级分析**:页面性能和访问分析 +- **A/B 测试**:内置 A/B 测试功能 + +### 长期愿景 + +- **完整网站生成**:从描述生成完整多页面网站 +- **智能内容管理**:AI 辅助的内容创建和管理 +- **无代码应用构建**:扩展至应用程序构建 +- **生态系统**:建立开发者和设计师社区 +- **企业级功能**:满足大型组织的需求 + +我们欢迎社区参与和贡献,共同推动 UPage 的发展。如果您有功能建议或发现问题,请在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中提出。 diff --git a/docs/content/configuration.md b/docs/content/configuration.md new file mode 100644 index 0000000..67abec1 --- /dev/null +++ b/docs/content/configuration.md @@ -0,0 +1,201 @@ +--- +id: configuration +title: 配置参考 +--- + +# 配置参考 + +本文档提供了 UPage 的完整配置参考,包括基础配置、AI 提供商配置、认证配置,帮助您根据自己的需求定制和优化 UPage。 + +UPage 使用环境变量进行配置。您可以通过以下方式设置环境变量: + +- 在 Docker 运行命令中使用 `-e` 参数 +- 在 Docker Compose 文件中使用 `environment` 部分 +- 在源码部署中创建 `.env` 文件 + +## 基础配置 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `PORT` | 服务监听端口 | `3000` | 否 | +| `NODE_ENV` | Node.js 环境 | `production` | 否 | +| `OPERATING_ENV` | 运行环境 | `production` | 否 | +| `LOG_LEVEL` | 日志级别(debug, info, warn, error) | `info` | 否 | +| `USAGE_LOG_FILE` | 是否开启文件日志 | `true` | 否 | +| `MAX_UPLOAD_SIZE_MB` | 附件上传的最大大小 (MB) | `5` | 否 | +| `STORAGE_DIR` | 资源文件存储位置 | `/app/storage` | 否 | + +## AI 提供商配置 + +### AI 基础配置 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | LLM 提供商,根据需要配置一个 | - | 是 | +| `LLM_DEFAULT_MODEL` | 生成页面所使用的模型 | - | 是 | +| `LLM_MINOR_MODEL` | 辅助页面生成所使用的模型 | - | 是 | +| `LLM_ENABLED_PROVIDERS` | 启用的 LLM 提供商列表(逗号分隔) | 所有支持的提供商 | 否 | + +### DeepSeek + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | DeepSeek 提供商名称 | Deepseek | 是 | +| `DEEPSEEK_API_KEY` | DeepSeek API 密钥 | - | 是(如果使用 DeepSeek) | + +### OpenAI + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | OpenAI 提供商名称 | OpenAI | 是 | +| `OPENAI_API_KEY` | OpenAI API 密钥 | - | 是(如果使用 OpenAI) | + +### Anthropic Claude + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | +| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | +| `ANTHROPIC_API_BASE_URL` | Anthropic API 基础 URL | `https://api.anthropic.com` | 否 | + +### 兼容 OpenAI 接口的服务 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | +| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | +| `OPENAI_LIKE_ORGANIZATION_ID` | 组织 ID | - | 否 | + +### Ollama + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `OLLAMA_API_BASE_URL` | Ollama API 基础 URL | `http://localhost:11434` | 是(如果使用 Ollama) | + +### Groq + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | + +### HuggingFace + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | + +### OpenRouter + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | + +### Google Gemini + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `GOOGLE_API_KEY` | Google API 密钥 | - | 是(如果使用 Google) | +| `GOOGLE_API_BASE_URL` | Google API 基础 URL | `https://generativelanguage.googleapis.com` | 否 | + +## 认证配置 + +### Logto 认证 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `false` | 否 | +| `LOGTO_ENDPOINT` | Logto 服务的 URL | - | 是(如果使用 Logto) | +| `LOGTO_APP_ID` | Logto 应用程序 ID | - | 是(如果使用 Logto) | +| `LOGTO_APP_SECRET` | Logto 应用程序密钥 | - | 是(如果使用 Logto) | +| `LOGTO_COOKIE_SECRET` | 用于加密 cookie 的密钥 | - | 是(如果使用 Logto) | +| `LOGTO_BASE_URL` | UPage 地址 | - | 是(如果使用 Logto) | + +:::info +Logto 集成请参阅 [Logto 认证集成](./deployment/logto)文档。 +::: + +## 配置示例 + +### 基本配置示例 + +```bash +# 基础配置 +PORT=3000 +NODE_ENV=production +LOG_LEVEL=info + +# AI 提供商配置 +LLM_DEFAULT_PROVIDER=OpenAI +OPENAI_API_KEY=your-openai-api-key +LLM_DEFAULT_MODEL=gpt-4-turbo +LLM_MINOR_MODEL=gpt-3.5-turbo +``` + +### 完整的 Docker Compose 配置示例 + +```yaml +version: "3.9" +services: + upage: + image: ghcr.io/halo-dev/upage:latest + container_name: upage + restart: unless-stopped + ports: + - "3000:3000" + environment: + # 基础配置 + - PORT=3000 + - NODE_ENV=production + - OPERATING_ENV=production + - LOG_LEVEL=info + - USAGE_LOG_FILE=true + - MAX_UPLOAD_SIZE_MB=10 + - STORAGE_DIR=/app/storage + + # AI 提供商配置 + - LLM_DEFAULT_PROVIDER=OpenAI + - OPENAI_API_KEY=your-openai-api-key + - LLM_DEFAULT_MODEL=gpt-4-turbo + - LLM_MINOR_MODEL=gpt-3.5-turbo + + # Logto 认证配置 + - LOGTO_ENABLE=true + - LOGTO_ENDPOINT=http://logto:3001 + - LOGTO_APP_ID=your-app-id + - LOGTO_APP_SECRET=your-app-secret + - LOGTO_COOKIE_SECRET=your-cookie-secret + - LOGTO_BASE_URL=https://api.upage.io + volumes: + - ./data:/app/data + - ./logs:/app/logs + - ./storage:/app/storage +``` + +## 多环境配置 + +### 开发环境 + +```bash +NODE_ENV=development +OPERATING_ENV=development +LOG_LEVEL=debug +PORT=3000 +``` + +### 测试环境 + +```bash +NODE_ENV=production +OPERATING_ENV=testing +LOG_LEVEL=info +PORT=3000 +``` + +### 生产环境 + +```bash +NODE_ENV=production +OPERATING_ENV=production +LOG_LEVEL=warn +PORT=3000 +``` diff --git a/docs/content/contributing.md b/docs/content/contributing.md new file mode 100644 index 0000000..d64aef6 --- /dev/null +++ b/docs/content/contributing.md @@ -0,0 +1,199 @@ +--- +id: contributing +title: 贡献指南 +--- + +# 贡献指南 + +感谢您对 UPage 项目的关注!我们非常欢迎各种形式的贡献,无论是功能开发、bug 修复、文档改进还是使用反馈。本指南将帮助您了解如何参与 UPage 的开发和贡献。 + +## 行为准则 + +参与 UPage 项目的所有贡献者都应遵循以下行为准则: + +- 尊重所有参与者,无论其背景、经验或观点 +- 接受建设性的批评和反馈 +- 专注于对社区最有利的事情 +- 展现同理心和善意 + +## 贡献方式 + +您可以通过多种方式为 UPage 做出贡献: + +### 报告问题 + +如果您发现了 bug 或有功能建议,请在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中提出。提交问题时,请尽可能提供以下信息: + +- 清晰的问题描述 +- 复现步骤 +- 预期行为与实际行为 +- 截图(如适用) +- 环境信息(浏览器、操作系统、UPage 版本等) + +### 提交代码 + +如果您想直接贡献代码,请遵循以下步骤: + +1. Fork 项目仓库 +2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`) +3. 提交您的更改 (`git commit -m 'Add some amazing feature'`) +4. 推送到分支 (`git push origin feature/amazing-feature`) +5. 创建 Pull Request + +### 改进文档 + +文档对于任何项目都至关重要。您可以通过以下方式改进 UPage 的文档: + +- 修复文档中的错误或不准确之处 +- 添加缺失的信息或示例 +- 改进文档的结构和可读性 +- 翻译文档到其他语言 + +### 分享和推广 + +您也可以通过以下方式支持 UPage: + +- 在社交媒体上分享项目 +- 撰写关于 UPage 的博客文章或教程 +- 在相关论坛和社区中推荐 UPage +- 为项目加星标(Star) + +## 开发环境设置 + +### 前置条件 + +开始开发 UPage 前,请确保您的系统满足以下要求: + +- Node.js 18.18.0 或更高版本 +- pnpm 9.4.0 或更高版本 +- Git + +### 克隆仓库 + +```bash +git clone https://github.com/halo-dev/upage.git +cd upage +``` + +### 安装依赖 + +```bash +pnpm install +``` + +### 启动开发服务器 + +```bash +pnpm dev +``` + +此命令会启动开发服务器,您可以通过 `http://localhost:3000` 访问。 + +### 构建项目 + +```bash +pnpm build +``` + +### 运行测试 + +```bash +pnpm test +``` + +## 代码规范 + +### JavaScript/TypeScript 规范 + +UPage 使用 [Biome](https://biomejs.dev/) 进行代码格式化和 linting。在提交代码前,请确保您的代码符合项目的代码规范: + +```bash +pnpm check +``` + +您也可以使用以下命令自动修复格式问题: + +```bash +pnpm check --write +``` + +### Git 提交规范 + +我们使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范来格式化 Git 提交信息。提交信息应遵循以下格式: + +``` +(): + +[optional body] + +[optional footer(s)] +``` + +常用的 `type` 包括: + +- `feat`: 新功能 +- `fix`: 修复 bug +- `docs`: 文档更新 +- `style`: 代码风格更改(不影响代码功能) +- `refactor`: 代码重构 +- `perf`: 性能优化 +- `test`: 添加或修改测试 +- `chore`: 构建过程或辅助工具的变动 + +例如: + +``` +feat(editor): 添加拖拽调整组件大小功能 + +添加了一个新的拖拽句柄,允许用户直接调整组件的大小。 +同时优化了调整过程中的性能。 + +Closes #123 +``` + +## 分支策略 + +- `main`: 主分支,包含稳定的代码 +- `develop`: 开发分支,包含最新的开发代码 +- `feature/*`: 功能分支,用于开发新功能 +- `fix/*`: 修复分支,用于修复 bug +- `release/*`: 发布分支,用于准备新版本发布 + +请基于 `develop` 分支创建您的功能或修复分支,并在完成后向 `develop` 分支提交 Pull Request。 + +## Pull Request 流程 + +1. 确保您的代码符合项目的代码规范 +2. 更新相关文档(如适用) +3. 添加或更新测试(如适用) +4. 确保所有测试通过 +5. 提交 Pull Request 到 `develop` 分支 +6. 在 PR 描述中详细说明您的更改 + +## 版本发布流程 + +UPage 遵循 [语义化版本控制](https://semver.org/) 规范。版本号格式为 `X.Y.Z`: + +- `X`: 主版本号,当进行不兼容的 API 更改时递增 +- `Y`: 次版本号,当添加向后兼容的功能时递增 +- `Z`: 修订号,当进行向后兼容的 bug 修复时递增 + +## 文档贡献 + +UPage 的文档使用 [Docusaurus](https://docusaurus.io/) 构建。如果您想贡献文档,请遵循以下步骤: + +1. 在 `docs` 目录中找到相关的 Markdown 文件 +2. 进行必要的更改 +3. 在本地预览更改:`pnpm docs:start` +4. 提交 Pull Request + +## 社区 + +加入 UPage 社区,与其他贡献者交流: + +- [GitHub Discussions](https://github.com/halo-dev/upage/discussions) +- [GitHub Issues](https://github.com/halo-dev/upage/issues) + +## 许可证 + +UPage 采用 [MIT 许可证](https://github.com/halo-dev/upage/blob/main/LICENSE)。通过贡献代码,您同意您的贡献将在相同的许可证下发布。 diff --git a/docs/content/deployment/docker-compose.md b/docs/content/deployment/docker-compose.md new file mode 100644 index 0000000..510c7f9 --- /dev/null +++ b/docs/content/deployment/docker-compose.md @@ -0,0 +1,144 @@ +--- +id: docker-compose +title: Docker Compose 部署 +--- + +# Docker Compose 部署 + +本文档详细介绍如何使用 Docker Compose 部署 UPage,这是一种更便捷的方式来管理 UPage 的部署。 + +## 前置条件 +在开始之前,请确保您的系统满足以下要求: +- Docker 已安装(推荐 Docker 20.10.0 或更高版本) +- Docker Compose 已安装(推荐 Docker Compose 1.29.0 或更高版本) +- 至少 2GB 可用内存 +- 至少 2GB 可用磁盘空间 +- 互联网连接(用于拉取 Docker 镜像和访问大模型 API) + +### 安装 Docker 和 Docker Compose + +如果您的系统未安装 Docker,请参考[Docker 官方文档](https://docs.docker.com/engine/install/)进行安装。 +如果您的系统未安装 Docker Compose,请参考[Docker Compose 官方文档](https://docs.docker.com/compose/install/)进行安装。 + +## 使用 Docker Compose 部署 + +### 准备目录 + +创建必要的目录用于持久化数据,例如 `~/upage`: + +```bash +mkdir -p ~/upage/data +mkdir -p ~/upage/logs +mkdir -p ~/upage/storage +cd ~/upage +``` +:::tip +UPage 所有数据与日志均存储在此目录中,请妥善保管。 +::: + +### 创建配置文件 +创建 `docker-compose.yml` 文件: + +```yaml +version: "3.9" +services: + upage: + image: upage-ai:production + restart: unless-stopped + ports: + - "${PORT:-3000}:3000" + environment: + - OPENAI_LIKE_API_BASE_URL=${OPENAI_LIKE_API_BASE_URL} + - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} + - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} + - LLM_DEFAULT_MODEL=${LLM_DEFAULT_MODEL} + - LLM_MINOR_MODEL=${LLM_MINOR_MODEL} + volumes: + - ./data:/app/data + - ./logs:/app/logs + - ./storage:/app/storage + +volumes: + upage-db: +``` + +### 启动服务 + +在 `docker-compose.yml` 文件所在目录执行: + +```bash +docker-compose up -d +``` + +### 服务管理 + +使用 Docker Compose 管理服务的常用命令: + +```bash +# 启动服务 +docker-compose up -d + +# 停止服务 +docker-compose down + +# 重启服务 +docker-compose restart + +# 查看服务日志 +docker-compose logs + +# 查看服务状态 +docker-compose ps +``` + +## 环境变量配置 + +UPage 支持通过环境变量进行配置。以下是一些比较重要的环境变量: + +:::tip +完整的配置请参考[配置参考](../configuration)。 +::: + +### 基础配置 + +| 环境变量 | 描述 | 默认值 | +| --- | --- | --- | +| `PORT` | 服务监听端口 | `3000` | +| `NODE_ENV` | Node.js 环境 | `production` | +| `OPERATING_ENV` | 运行环境 | `production` | +| `LOG_LEVEL` | 日志级别 | `debug` | +| `USAGE_LOG_FILE` | 是否开启文件日志 | `true` | +| `MAX_UPLOAD_SIZE_MB` | 附件上传的最大大小 (MB) | `5` | +| `STORAGE_DIR` | 资源文件存储位置 | `/app/storage` | + +### 模型提供商配置 +根据您选择的 AI 提供商,您还需要配置相应的 API 密钥和基础 URL,例如: + +| 环境变量 | 描述 | 必填 | 示例 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | +| `OPENAI_LIKE_API_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | +| `OPENAI_LIKE_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | + +### 大模型配置 + +| 环境变量 | 描述 | 必填 | 示例 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_MODEL` | 生成页面所使用的主要模型 | 是 | `gpt-4-turbo` | +| `LLM_MINOR_MODEL` | 辅助页面生成所使用的次级模型 | 是 | `gpt-3.5-turbo` | + +## 升级 UPage + +当有新版本发布时,您可以按照以下步骤升级 UPage: + +```bash +docker-compose pull +docker-compose down +docker-compose up -d +``` + +## 下一步 + +- 阅读[用户指南](user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](logto)了解如何集成 Logto 实现用户认证 diff --git a/docs/content/deployment/docker.md b/docs/content/deployment/docker.md new file mode 100644 index 0000000..9f0c97e --- /dev/null +++ b/docs/content/deployment/docker.md @@ -0,0 +1,160 @@ +--- +id: docker +title: Docker 部署 +--- + +# Docker 部署 + +本文档详细介绍如何使用 Docker 部署 UPage。 + +## 前置条件 +在开始之前,请确保您的系统满足以下要求: +- Docker 已安装(推荐 Docker 20.10.0 或更高版本) +- 至少 2GB 可用内存 +- 至少 2GB 可用磁盘空间 +- 互联网连接(用于拉取 Docker 镜像和访问大模型 API) + +### 安装 Docker + +如果您的系统未安装 Docker,请参考[Docker 官方文档](https://docs.docker.com/engine/install/)进行安装。 + +## 使用 Docker 部署 + +### 拉取镜像 + +首先,拉取 UPage 的最新 Docker 镜像: + +```bash +docker pull halohub/upage:latest +``` + +您也可以使用特定版本的镜像,例如: + +```bash +docker pull halohub/upage:1.0.0 +``` + +### 准备目录 + +创建必要的目录用于持久化数据,例如 `~/upage`: + +```bash +mkdir -p ~/upage/data +mkdir -p ~/upage/logs +mkdir -p ~/upage/storage +``` +:::tip +UPage 所有数据与日志均存储在此目录中,请妥善保管。 +::: + +### 启动容器 + +使用以下命令启动 UPage 容器: + +```bash +docker run -d \ + --name upage \ + --restart unless-stopped \ + -p 3000:3000 \ + -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ + -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_DEFAULT_MODEL=your-default-model \ + -e LLM_MINOR_MODEL=your-minor-model \ + -v ~/upage/data:/app/data \ + -v ~/upage/logs:/app/logs \ + -v ~/upage/storage:/app/storage \ + halohub/upage:latest +``` + +### 容器管理 + +常用的容器管理命令: + +```bash +# 停止容器 +docker stop upage + +# 启动容器 +docker start upage + +# 重启容器 +docker restart upage + +# 查看容器日志 +docker logs upage + +# 查看容器状态 +docker ps -a | grep upage +``` + +## 环境变量配置 + +UPage 支持通过环境变量进行配置。以下是一些比较重要的环境变量,均可以使用 `-e` 参数在启动容器时设置: + +:::tip +完整的配置请参考[配置参考](../configuration)。 +::: + +### 基础配置 + +| 环境变量 | 描述 | 默认值 | +| --- | --- | --- | +| `PORT` | 服务监听端口 | `3000` | +| `NODE_ENV` | Node.js 环境 | `production` | +| `OPERATING_ENV` | 运行环境 | `production` | +| `LOG_LEVEL` | 日志级别 | `debug` | +| `USAGE_LOG_FILE` | 是否开启文件日志 | `true` | +| `MAX_UPLOAD_SIZE_MB` | 附件上传的最大大小 (MB) | `5` | +| `STORAGE_DIR` | 资源文件存储位置 | `/app/storage` | + +### 模型提供商配置 +根据您选择的 AI 提供商,您还需要配置相应的 API 密钥和基础 URL,例如: + +| 环境变量 | 描述 | 必填 | 示例 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | +| `OPENAI_LIKE_API_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | +| `OPENAI_LIKE_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | + +### 大模型配置 + +| 环境变量 | 描述 | 必填 | 示例 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_MODEL` | 生成页面所使用的主要模型 | 是 | `gpt-4-turbo` | +| `LLM_MINOR_MODEL` | 辅助页面生成所使用的次级模型 | 是 | `gpt-3.5-turbo` | + +## 升级 UPage + +当有新版本发布时,您可以按照以下步骤升级 UPage: + +```bash +# 拉取最新镜像 +docker pull halohub/upage:latest + +# 停止并删除旧容器 +docker stop upage +docker rm upage + +# 使用新镜像启动容器(使用与之前相同的环境变量和挂载) +docker run -d \ + --name upage \ + --restart unless-stopped \ + -p 3000:3000 \ + -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ + -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_DEFAULT_MODEL=your-default-model \ + -e LLM_MINOR_MODEL=your-minor-model \ + -v ~/upage/data:/app/data \ + -v ~/upage/logs:/app/logs \ + -v ~/upage/storage:/app/storage \ + halohub/upage:latest +``` + +## 下一步 + +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](./logto)了解如何集成 Logto 实现用户认证 + diff --git a/docs/content/deployment/logto.md b/docs/content/deployment/logto.md new file mode 100644 index 0000000..2a5a58f --- /dev/null +++ b/docs/content/deployment/logto.md @@ -0,0 +1,138 @@ +--- +id: logto +title: Logto 认证集成 +--- + +# Logto 认证集成 + +:::info +UPage 默认仅支持单一匿名用户访问,但您可以通过集成 Logto 实现用户认证,支持多用户登录 +::: + +UPage 支持与 [Logto](https://logto.io/) 集成,提供完整的用户认证体系。本文档将指导您如何配置 UPage 与 Logto 的集成。 + +## 什么是 Logto? + +Logto 是一个开源的身份验证和授权解决方案,提供了完整的用户管理、身份验证和授权功能。通过与 Logto 集成,UPage 可以支持用户注册、登录、密码重置等功能,同时提供基于角色的访问控制。 + +## Logto 接入方式 + +Logto 支持两种接入方式,您可以根据自己的需求选择合适的方式。 + +1. 使用 Logto 官方提供的托管服务 - Logto Cloud。 +2. 本地部署开源版 Logto 服务。 + +:::info +两种方式仅在接入方式上有所区别,在配置上完全一致。 +::: + +### 使用官方托管服务 + +访问 [Logto 官方网站](https://logto.io/),注册一个账号即可进行下一步操作。 + +### 本地部署 Logto + +UPage 提供了一个简化的 Logto 部署配置。在 UPage 项目目录下,您可以找到 `logto/docker-compose.yaml` 文件以及 `.env` 文件。 + +```bash +curl -L https://raw.githubusercontent.com/halo-dev/upage/refs/heads/main/logto/docker-compose.yaml -o ~/upage/logto/docker-compose.yaml +curl -L https://raw.githubusercontent.com/halo-dev/upage/refs/heads/main/logto/.env -o ~/upage/logto/.env +cd ~/upage/logto +docker-compose up -d +``` + +这将启动 Logto 服务,默认情况下可以通过 `http://localhost:3002` 访问 Logto 管理控制台。 + +:::caution +在生产环境部署时,请务必修改 `.env` 文件中的 `LOGTO_ENDPOINT` 、 `LOGTO_ADMIN_ENDPOINT` 以及 `LOGTO_POSTGRES_PASSWORD` 配置。 +::: + +## 配置 Logto + +1. 访问 Logto 管理控制台, +2. 创建一个新的应用程序: + - 应用类型:传统网页应用 + - 应用名称:UPage + - 重定向 URIs:`http://${UPAGE_URL}/api/auth/callback` + - 退出登录后重定向 URIs:`http://${UPAGE_URL}` + - CORS 允许的来源:`http://${UPAGE_URL}` + - 其他配置根据实际情况填写 +3. 记录应用程序的 ID 和密钥,这些将用于配置 UPage + +## 配置 UPage 与 Logto 集成 + +### 环境变量配置 + +在 UPage 的环境变量中配置 Logto 相关参数: + +```bash +# 启用 Logto 认证 +LOGTO_ENABLE=true +# Logto LOGTO_ENDPOINT 地址 +LOGTO_ENDPOINT=http://localhost:3001 +# Logto 应用程序 ID +LOGTO_APP_ID=your-app-id +# Logto 应用程序密钥 +LOGTO_APP_SECRET=your-app-secret +# Logto 用于加密 cookie 的密钥,随机生成一个 32 位密钥即可 +LOGTO_COOKIE_SECRET=your-cookie-secret +# 填写 UPage 地址,根据实际部署地址修改 +LOGTO_BASE_URL=http://localhost:3000 +``` + +如果使用 Docker compose 部署 UPage,在 `docker-compose.yml` 文件中添加这些环境变量: + +```yaml +services: + upage: + # ... 其他配置 + environment: + # ... 其他环境变量 + - LOGTO_ENABLE=true + - LOGTO_ENDPOINT=http://logto:3001 + - LOGTO_APP_ID=your-app-id + - LOGTO_APP_SECRET=your-app-secret + - LOGTO_COOKIE_SECRET=your-cookie-secret + - LOGTO_BASE_URL=http://localhost:3000 +``` + +### 配置说明 + +| 环境变量 | 描述 | 示例 | +| --- | --- | --- | +| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `true` | +| `LOGTO_ENDPOINT` | Logto 服务的 URL | `http://localhost:3001` | +| `LOGTO_APP_ID` | Logto 应用程序 ID | `your-app-id` | +| `LOGTO_APP_SECRET` | Logto 应用程序密钥 | `your-app-secret` | +| `LOGTO_COOKIE_SECRET` | 用于加密 cookie 的密钥 | `00bf44b6ceaa648eca6ad172f0cd8c8c` | +| `LOGTO_BASE_URL` | UPage 地址 | `http://localhost:3000` | + +## Logto 使用技巧 + +:::tip +UPage 集成 Logto 步骤已完成,以下内容是 Logto 的特殊使用技巧,供扩展阅读,如无定制化需求可忽略。 +::: + +### 自定义登录界面 + +Logto 提供了自定义登录界面的功能: + +1. 在 Logto 管理控制台中,导航到"外观" +2. 自定义登录页面的样式、颜色和品牌元素 +3. 预览并保存更改 + +### 配置社交登录 + +Logto 支持多种社交登录方式: + +1. 在 Logto 管理控制台中,导航到"连接器" +2. 添加社交登录连接器(如 Google、GitHub、微信等) +3. 按照向导完成配置 + +### 配置多因素认证 + +启用多因素认证以提高安全性: + +1. 在 Logto 管理控制台中,导航到"安全" +2. 启用多因素认证 +3. 配置多因素认证方式(如 TOTP、短信等) diff --git a/docs/content/deployment/others.md b/docs/content/deployment/others.md new file mode 100644 index 0000000..f56de31 --- /dev/null +++ b/docs/content/deployment/others.md @@ -0,0 +1,40 @@ +--- +id: others +title: 其他配置 +--- + +# 其他配置 + +本文档提供了部署 UPage 时的一些其他配置选项和最佳实践。 + +## 使用 Nginx 反向代理 + +如果您需要使用 Nginx 作为反向代理,可以参考以下配置: + +```nginx +server { + listen 80; + server_name your-domain.com; + + location / { + proxy_pass http://localhost:3000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +## 配置 HTTPS + +建议使用 Nginx 或其他反向代理来处理 HTTPS 请求。您可以使用 Let's Encrypt 获取免费的 SSL 证书。 + +## 数据备份 + +UPage 的数据存储在挂载的 `data` 目录中,您可以定期备份该目录来保护您的数据: + +```bash +# 备份数据目录 +tar -czf upage-data-backup-$(date +%Y%m%d).tar.gz ./upage/data +``` diff --git a/docs/content/deployment/source.md b/docs/content/deployment/source.md new file mode 100644 index 0000000..7cf6f58 --- /dev/null +++ b/docs/content/deployment/source.md @@ -0,0 +1,229 @@ +--- +id: source +title: 源码部署 +--- + +# 源码部署 + +本文档详细介绍如何从源码构建和部署 UPage。如果您希望自定义 UPage 或者参与开发,这是最合适的部署方式。 + +## 前置条件 + +在开始之前,请确保您的系统满足以下要求: + +- Node.js 18.18.0 或更高版本 +- pnpm 9.4.0 或更高版本 +- Git + +## 下载并构建代码 + +### 克隆代码库 + +首先,克隆 UPage 的代码库: + +```bash +git clone https://github.com/halo-dev/upage.git +cd upage +``` + +### 安装依赖 + +使用 pnpm 安装项目依赖: + +```bash +pnpm install +``` + +### 配置环境变量 + +拷贝 `.env.example` 文件,创建 `.env` 文件: + +```bash +cp .env.example .env +``` + +配置必要的环境变量: + +```bash +# 基础配置 +PORT=3000 +NODE_ENV=production +OPERATING_ENV=production +LOG_LEVEL=info +USAGE_LOG_FILE=true +MAX_UPLOAD_SIZE_MB=5 +STORAGE_DIR=./storage + +# AI 提供商配置 +LLM_DEFAULT_PROVIDER=OpenAILike +OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url +OPENAI_LIKE_API_KEY=your-openai-like-api-key +LLM_DEFAULT_MODEL=your-default-model +LLM_MINOR_MODEL=your-minor-model +``` + +您可以根据需要配置不同的 AI 提供商,详细配置请参考[配置参考](../configuration)。 + +### 生成 Prisma 客户端 + +```bash +pnpm setup +``` + +## 开发模式使用 + +如果您想在开发模式下运行 UPage,可以使用以下命令: + +```bash +pnpm dev +``` + +开发服务器启动后,您可以通过浏览器访问: + +``` +http://localhost:5173 +``` + +这将启动开发服务器,支持热重载,方便您进行开发和调试。 + +## 生产模式使用 + +构建 UPage 项目: + +```bash +pnpm build +``` + +### 启动服务 + +启动 UPage 服务: + +```bash +pnpm preview +``` + +服务启动后,您可以通过浏览器访问: + +``` +http://localhost:3000 +``` + +## 使用 PM2 管理服务(可选) + +在生产环境中,可以使用 PM2 来管理 Node.js 应用程序: + +### 全局安装 PM2 + +```bash +npm install -g pm2 +``` + +### 创建 PM2 配置文件 + +创建 `ecosystem.config.js` 文件: + +```javascript +module.exports = { + apps: [{ + name: 'upage', + script: './server.mjs', + instances: 1, + autorestart: true, + watch: false, + max_memory_restart: '1G', + env: { + NODE_ENV: 'production', + OPERATING_ENV: 'production', + PORT: 3000, + LLM_DEFAULT_PROVIDER: 'OpenAILike', + OPENAI_LIKE_API_BASE_URL: 'your-openai-like-api-base-url', + OPENAI_LIKE_API_KEY: 'your-openai-like-api-key', + LLM_DEFAULT_MODEL: 'your-default-model', + LLM_MINOR_MODEL: 'your-minor-model', + } + }] +}; +``` + +### 启动服务 + +```bash +pm2 start ecosystem.config.js +``` + +### 查看日志 + +```bash +pm2 logs upage +``` + +### 监控服务 + +```bash +pm2 monit +``` + +## 升级 UPage + +当有新版本发布时,您可以按照以下步骤升级 UPage: + +```bash +# 拉取最新代码 +git pull origin main + +# 安装依赖 +pnpm install + +# 构建项目 +pnpm build + +# 开发环境使用 +pnpm dev + +# 生产环境使用 +pnpm preview + +# 或者如果使用 PM2 +pm2 restart upage +``` + +## 故障排除 + +### 依赖安装失败 + +如果依赖安装失败,可以尝试清除 pnpm 缓存: + +```bash +pnpm store prune +pnpm install +``` + +### 构建失败 + +如果构建失败,可以尝试清除构建缓存: + +```bash +pnpm clean +pnpm build +``` + +### 数据库错误 + +如果遇到数据库相关错误,可以尝试重新初始化数据库 + +```bash +pnpm prisma migrate reset +``` + +:::danger +请注意,这将清空所有数据并重置数据库,切勿在生产环境中使用。 +::: + +### 日志查看 + +检查日志文件以获取更多错误信息: + +```bash +cat logs/combined-*.log +cat logs/error-*.log +``` diff --git a/docs/content/faq.md b/docs/content/faq.md new file mode 100644 index 0000000..884e7f5 --- /dev/null +++ b/docs/content/faq.md @@ -0,0 +1,286 @@ +--- +id: faq +title: 常见问题 +--- + +# 常见问题 + +本文档整理了使用 UPage 时的常见问题和解答,帮助您快速解决可能遇到的问题。 + +## 基本问题 + +### UPage 是什么? + +UPage 是一款基于人工智能的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。它允许用户通过简单的文字描述生成完整的网页,并提供可视化编辑工具进行进一步定制。 + +### UPage 适合哪些用户? + +UPage 适合各类需要快速创建网页的用户,包括但不限于: + +- 开发者:快速创建原型和演示页面 +- 设计师:将设计理念转化为实际网页 +- 内容创作者:创建展示内容的网页 +- 营销人员:制作营销着陆页 +- 小企业主:创建企业网站和产品展示页面 +- 教育工作者:制作教学资源和课程页面 + +### UPage 是开源的吗? + +是的,UPage 是一个开源项目,采用 MIT 许可证。您可以在 [GitHub](https://github.com/halo-dev/upage) 上查看源代码,也可以参与项目开发和改进。 + +## 安装和部署 + +### 如何安装 UPage? + +UPage 提供多种安装方式,最简单的方法是使用 Docker: + +```bash +docker run -d \ + --name upage \ + --restart unless-stopped \ + -p 3000:3000 \ + -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_DEFAULT_MODEL=your-default-model \ + -e LLM_MINOR_MODEL=your-minor-model \ + -v ./data:/app/data \ + -v ./logs:/app/logs \ + -v ./storage:/app/storage \ + ghcr.io/halo-dev/upage +``` + +详细的安装说明请参考[快速开始](quick-start)文档。 + +### UPage 的系统要求是什么? + +UPage 的最低系统要求: + +- Docker 20.10.0 或更高版本(如果使用 Docker 部署) +- Node.js 18.18.0 或更高版本(如果源码部署) +- 至少 2GB 可用内存 +- 至少 1GB 可用磁盘空间 +- 互联网连接(用于访问 AI API) + +### 如何更新 UPage? + +如果使用 Docker 部署,可以按照以下步骤更新 UPage: + +```bash +# 拉取最新镜像 +docker pull ghcr.io/halo-dev/upage:latest + +# 停止并删除旧容器 +docker stop upage +docker rm upage + +# 使用新镜像启动容器(使用与之前相同的环境变量和挂载) +docker run -d \ + --name upage \ + --restart unless-stopped \ + -p 3000:3000 \ + ... # 其他环境变量和挂载 + ghcr.io/halo-dev/upage:latest +``` + +如果使用 Docker Compose,则可以执行: + +```bash +docker-compose pull +docker-compose down +docker-compose up -d +``` + +## AI 集成 + +### UPage 支持哪些 AI 提供商? + +UPage 支持多种 AI 提供商,包括: + +- OpenAI(GPT-3.5、GPT-4 等) +- Anthropic Claude +- Google Gemini +- 兼容 OpenAI 接口的服务(如 Azure OpenAI、智谱 AI 等) +- Ollama(本地部署的开源模型) + +### 如何配置 AI 提供商? + +通过环境变量配置 AI 提供商,例如: + +```bash +# OpenAI +-e LLM_DEFAULT_PROVIDER=OpenAI \ +-e OPENAI_API_KEY=your-openai-api-key \ +-e LLM_DEFAULT_MODEL=gpt-4-turbo \ +-e LLM_MINOR_MODEL=gpt-3.5-turbo + +# Anthropic Claude +-e LLM_DEFAULT_PROVIDER=Anthropic \ +-e ANTHROPIC_API_KEY=your-anthropic-api-key \ +-e LLM_DEFAULT_MODEL=claude-3-opus-20240229 \ +-e LLM_MINOR_MODEL=claude-3-haiku-20240307 +``` + +详细的配置选项请参考[配置参考](configuration)文档。 + +### 使用 AI 生成页面需要多少 token? + +生成一个标准页面通常需要 2,000-10,000 个 token,具体取决于页面的复杂度和内容量。复杂的页面可能需要更多 token。UPage 会优化 prompt,尽量减少 token 消耗。 + +### 如何优化 AI 提示以获得更好的结果? + +有效的 AI 提示应该: + +- 明确指定页面类型和目的 +- 列出所需的主要组件和内容 +- 描述设计风格和布局偏好 +- 提供具体的内容示例或要求 +- 使用清晰、具体的语言 + +例如: +``` +创建一个现代风格的产品登录页面,用于展示我们的智能手表产品。页面应包含: +1. 顶部导航栏,带有品牌标志和菜单 +2. 醒目的标题和副标题,强调产品的主要卖点 +3. 产品图片展示区,包含至少3张不同角度的产品图 +... +``` + +## 使用问题 + +### 如何创建第一个页面? + +1. 登录 UPage +2. 点击侧边栏中的"新建页面"按钮 +3. 选择"AI 创建"、"从模板创建"或"空白页面" +4. 如果选择 AI 创建,输入页面描述并点击"生成" +5. 等待 AI 生成页面,然后进行进一步编辑 + +### 如何编辑 AI 生成的页面? + +1. 在页面列表中选择要编辑的页面 +2. 使用可视化编辑器修改页面元素 +3. 可以拖拽组件、调整布局、编辑文本和图片 +4. 使用右侧属性面板修改组件属性和样式 +5. 也可以使用 AI 辅助功能进行局部或整体调整 + +### 如何导出页面? + +1. 在页面列表中选择要导出的页面 +2. 点击操作菜单中的"导出"选项 +3. 选择导出格式(HTML/CSS/JS、ZIP、JSON 或 PDF) +4. 配置导出选项 +5. 点击"导出"开始下载 + +### UPage 支持响应式设计吗? + +是的,UPage 生成的页面默认支持响应式设计,可以自动适应不同屏幕尺寸。您可以在编辑器中预览页面在不同设备上的显示效果,并进行针对性调整。 + +## 数据和安全 + +### UPage 如何存储数据? + +UPage 使用 SQLite 数据库存储页面数据和用户配置,存储在挂载的 `data` 目录中。上传的文件和资源存储在挂载的 `storage` 目录中。日志文件存储在挂载的 `logs` 目录中。 + +### 如何备份 UPage 数据? + +备份 UPage 数据的最简单方法是备份挂载的数据目录: + +```bash +# 备份数据目录 +tar -czf upage-data-backup-$(date +%Y%m%d).tar.gz ./data + +# 备份存储目录 +tar -czf upage-storage-backup-$(date +%Y%m%d).tar.gz ./storage +``` + +### UPage 如何处理用户隐私? + +UPage 本身不会收集或传输用户数据,除非明确配置。当使用 AI 功能时,页面内容会发送到配置的 AI 提供商进行处理。请确保您使用的 AI 提供商符合您的隐私要求。 + +### 如何配置 UPage 的访问控制? + +UPage 支持通过 Logto 进行用户认证和访问控制。配置 Logto 后,您可以创建用户账户、分配角色和权限,实现细粒度的访问控制。详细配置请参考[Logto 认证集成](deployment/logto)文档。 + +## 故障排除 + +### 页面生成失败怎么办? + +如果页面生成失败,可能的原因和解决方法: + +1. **AI API 连接问题**:检查网络连接和 API 密钥是否正确 +2. **提示过于复杂**:尝试简化页面描述,分步骤生成 +3. **token 限制**:检查是否达到 AI 提供商的 token 限制 +4. **模型不支持**:尝试使用更强大的模型或不同的 AI 提供商 + +### 如何查看系统日志? + +可以通过以下方式查看系统日志: + +```bash +# 查看容器日志 +docker logs upage + +# 查看错误日志文件 +cat logs/error-*.log + +# 查看所有日志文件 +cat logs/combined-*.log +``` + +### 如何解决数据库错误? + +如果遇到数据库相关错误,可以尝试: + +1. 检查数据目录的权限:`chmod -R 755 ./data` +2. 备份并重新初始化数据库: + ```bash + # 备份当前数据库 + cp ./data/upage.db ./data/upage.db.bak + + # 删除并重新初始化 + rm ./data/upage.db + docker restart upage + ``` + +### 容器无法启动怎么办? + +如果 Docker 容器无法启动,可以尝试: + +1. 检查日志:`docker logs upage` +2. 验证环境变量:确保所有必需的环境变量都已正确设置 +3. 检查磁盘空间:确保有足够的磁盘空间 +4. 检查端口冲突:确保端口 3000 没有被其他服务占用 +5. 检查文件权限:确保挂载的目录具有正确的权限 + +## 高级问题 + +### 如何自定义 UPage 的主题? + +目前 UPage 不支持完全自定义主题,但您可以通过以下方式调整外观: + +1. 在页面编辑器中使用自定义 CSS +2. 使用 AI 生成符合特定设计风格的页面 +3. 在导出的代码中进行进一步自定义 + +### UPage 支持插件系统吗? + +目前 UPage 不提供正式的插件系统,但作为开源项目,您可以通过 fork 代码库并进行修改来扩展功能。 + +### 如何与现有系统集成? + +UPage 提供多种集成方式: + +1. **API 集成**:使用 UPage API 与其他系统交互 +2. **导出集成**:导出页面代码并集成到现有系统 +3. **部署集成**:使用 Vercel 或 Netlify 集成直接部署页面 +4. **认证集成**:通过 Logto 与现有认证系统集成 + +### UPage 与其他页面构建器的区别是什么? + +UPage 的主要区别在于: + +1. **AI 驱动**:基于自然语言描述生成页面 +2. **开源**:完全开源,可自由定制和扩展 +3. **多 AI 提供商支持**:支持多种 AI 模型和提供商 +4. **本地部署**:可在本地或私有云部署,保护数据安全 +5. **轻量级**:资源占用较低,易于部署和维护 diff --git a/docs/content/index.md b/docs/content/index.md new file mode 100644 index 0000000..2c5b15c --- /dev/null +++ b/docs/content/index.md @@ -0,0 +1,34 @@ +--- +id: index +title: UPage 文档 +slug: / +--- + +# UPage + +UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。 + +## 什么是 UPage? + +UPage 是一个开源的网页构建工具,它利用大语言模型,让用户能够通过自然语言描述来创建和定制网页。无论您是开发者、设计师还是内容创作者,UPage 都能帮助您快速将想法转化为可视化的网页。 + +## 核心特性 + +- **基于 AI 的页面生成**:通过自然语言描述生成完整的网页 +- **多种 AI 提供商支持**:兼容 OpenAI、Anthropic Claude、Google Gemini 等多种 AI 模型 +- **可视化编辑器**:简洁直观的可视化编辑器界面,实时预览 +- **代码导出**:生成标准的 HTML/CSS/JS 代码,方便集成到现有项目 +- **响应式设计**:自动适应不同屏幕尺寸 +- **部署集成**:支持一键部署到常见托管平台 + +## 快速开始 + +请查看[快速开始](quick-start.md)指南,了解如何安装和使用 UPage。 + +## 贡献 + +UPage 是一个开源项目,我们欢迎任何形式的贡献。请查看[贡献指南](contributing.md)了解如何参与项目开发。 + +## 许可证 + +UPage 采用 [基于 GPLv3 的补充协议许可证](https://github.com/halo-dev/upage/blob/main/LICENSE)。 diff --git a/docs/content/quick-start.md b/docs/content/quick-start.md new file mode 100644 index 0000000..c9b2d56 --- /dev/null +++ b/docs/content/quick-start.md @@ -0,0 +1,121 @@ +--- +id: quick-start +title: 快速开始 +--- + +# 快速开始 + +本指南将帮助您快速部署和启动 UPage,让您在几分钟内体验基于大模型的网页构建平台。 + +:::caution 注意 +此快速启动方式仅适用于体验和测试目的,如需在生产环境中完整部署,请参考[Docker 部署指南](deployment/docker)。 +::: + +## 前置条件 + +在开始之前,请确保您的系统满足以下要求: + +- Docker 已安装(推荐 Docker 20.10.0 或更高版本) +- 至少 2GB 可用内存 +- 至少 2GB 可用磁盘空间 +- 互联网连接(用于拉取 Docker 镜像和访问大模型 API) + +## 使用 Docker 快速部署 + +UPage 提供了官方 Docker 镜像,可以通过以下命令快速启动: + +```bash +docker run -d \ + --name upage \ + --restart unless-stopped \ + -p 3000:3000 \ + -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ + -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_DEFAULT_MODEL=your-default-model \ + -e LLM_MINOR_MODEL=your-minor-model \ + -v ./data:/app/data \ + -v ./logs:/app/logs \ + -v ./storage:/app/storage \ + halo-dev/upage:latest +``` + +### 参数说明 + +- `-e LLM_DEFAULT_PROVIDER=OpenAILike`:设置默认的 LLM 提供商 +- `-e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url`:设置 API 基础 URL +- `-e OPENAI_LIKE_API_KEY=your-openai-like-api-key`:设置 API 密钥 +- `-e LLM_DEFAULT_MODEL=your-default-model`:设置用于页面生成的默认 AI 模型 +- `-e LLM_MINOR_MODEL=your-minor-model`:设置用于辅助任务的 AI 模型 +- `-v ./data:/app/data`:挂载数据目录,用于存储数据库文件 +- `-v ./logs:/app/logs`:挂载日志目录 +- `-v ./storage:/app/storage`:挂载存储目录,用于存储上传的文件 + + +## 访问 UPage + +服务启动后,您可以通过浏览器访问: + +``` +http://localhost:3000 +``` + +## 配置 AI 提供商 + +UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能使用页面生成功能。以下是常见的 AI 提供商配置示例: + +### DeepSeek + +```bash +-e LLM_DEFAULT_PROVIDER=Deepseek \ +-e DEEPSEEK_API_KEY=your-deepseek-api-key \ +-e LLM_DEFAULT_MODEL=deepseek-chat \ +-e LLM_MINOR_MODEL=deepseek-reasoner +``` + +### 兼容 OpenAI 接口的服务 + +```bash +-e LLM_DEFAULT_PROVIDER=OpenAILike \ +-e OPENAI_LIKE_API_BASE_URL=https://your-api-base-url \ +-e OPENAI_LIKE_API_KEY=your-api-key \ +-e LLM_DEFAULT_MODEL=your-model-name \ +-e LLM_MINOR_MODEL=your-minor-model-name +``` + +### OpenAI + +```bash +-e LLM_DEFAULT_PROVIDER=OpenAI \ +-e OPENAI_API_KEY=your-openai-api-key \ +-e LLM_DEFAULT_MODEL=gpt-4-turbo \ +-e LLM_MINOR_MODEL=gpt-3.5-turbo +``` + +### Anthropic Claude + +```bash +-e LLM_DEFAULT_PROVIDER=Anthropic \ +-e ANTHROPIC_API_KEY=your-anthropic-api-key \ +-e LLM_DEFAULT_MODEL=claude-3-opus-20240229 \ +-e LLM_MINOR_MODEL=claude-3-haiku-20240307 +``` + +### Ollama + +```bash +-e LLM_DEFAULT_PROVIDER=Ollama \ +-e OLLAMA_API_BASE_URL=http://127.0.0.1:11434 \ +-e LLM_DEFAULT_MODEL=llama3 \ +-e LLM_MINOR_MODEL=llama3 +``` + +:::info +详细的 AI 提供商配置请阅读[配置参考](configuration#ai-提供商配置)。 +::: + +## 下一步 + +- 探索[Docker 部署指南](deployment/docker)了解生产环境部署方案,包括使用 Docker Compose、数据备份、HTTPS 配置等 +- 查看[配置参考](configuration)了解所有可用的配置选项 +- 阅读[用户指南](user-guide/basics)学习如何使用 UPage 创建网页 diff --git a/docs/content/user-guide/ai-page-generation.md b/docs/content/user-guide/ai-page-generation.md new file mode 100644 index 0000000..a2cb64e --- /dev/null +++ b/docs/content/user-guide/ai-page-generation.md @@ -0,0 +1,159 @@ +--- +id: ai-page-generation +title: AI 页面生成 +--- + +# AI 页面生成 + +UPage 的核心功能是通过人工智能生成网页。本文档将指导您如何使用 AI 功能快速创建和定制网页。 + +## 基于自然语言创建页面 + +### 创建新页面 + +1. 在 UPage 主界面,点击侧边栏中的"新建页面"按钮 +2. 选择"AI 创建"选项 +3. 在对话框中输入您的页面需求描述 +4. 点击"生成"按钮 + +### 编写有效的页面描述 + +为了获得最佳结果,建议按照以下方式编写页面描述: + +- **明确页面类型**:例如"产品展示页面"、"博客文章"、"联系表单"等 +- **指定关键元素**:列出页面应包含的主要组件和内容 +- **描述风格和布局**:说明您期望的设计风格和布局结构 +- **提供具体内容**:如果有特定文本或图片要求,请明确说明 + +示例描述: + +``` +创建一个现代风格的产品登录页面,用于展示我们的智能手表产品。页面应包含: +1. 顶部导航栏,带有品牌标志和菜单 +2. 醒目的标题和副标题,强调产品的主要卖点 +3. 产品图片展示区,包含至少3张不同角度的产品图 +4. 产品特点列表,使用图标和简短描述 +5. 价格信息和"立即购买"按钮 +6. 客户评价部分 +7. 常见问题解答 +8. 页脚,包含联系信息和社交媒体链接 +整体配色应使用深蓝色和白色为主,符合科技产品的定位 +``` + +## 迭代优化页面 + +### 修改现有页面 + +1. 选择要修改的页面 +2. 点击工具栏中的"AI 辅助"按钮 +3. 描述您想要进行的修改 +4. AI 将生成修改建议并应用到页面 + +### 局部调整 + +您也可以针对页面的特定部分进行 AI 辅助调整: + +1. 选择页面中的特定组件或区域 +2. 点击右键菜单中的"AI 辅助"选项 +3. 描述您希望对该部分进行的修改 +4. 确认 AI 生成的调整 + +## AI 提示技巧 + +### 有效的提示模式 + +以下是一些有效的 AI 提示模式: + +- **添加内容**:"在页面顶部添加一个公告栏,显示最新促销信息" +- **修改样式**:"将按钮颜色改为蓝色,并增加圆角效果" +- **调整布局**:"将产品展示区改为两列网格布局,每个产品卡片包含图片、标题和价格" +- **优化文案**:"将页面标题改为更吸引人的营销语言,强调产品的独特卖点" +- **增强功能**:"在产品图片区添加轮播效果,允许用户浏览多张产品图片" + +### 提示示例 + +以下是一些实际的提示示例: + +``` +将页面背景改为浅灰色,增加视觉层次感 +``` + +``` +优化页面的移动端显示效果,确保在小屏幕上也能良好展示 +``` + +``` +添加一个简单的联系表单,包含姓名、邮箱和留言字段 +``` + +``` +将产品描述文本改为更简洁有力的表达,突出产品解决的问题 +``` + +## 高级 AI 功能 + +### 风格迁移 + +您可以使用 AI 将一个页面的设计风格应用到另一个页面: + +1. 在 AI 提示中引用现有页面 +2. 描述您希望迁移的风格元素 +3. AI 将分析并应用相似的设计风格 + +示例: +``` +将我的"关于我们"页面的设计风格应用到这个"联系我们"页面,保持一致的视觉语言 +``` + +### 多语言支持 + +UPage 支持使用 AI 生成多语言内容: + +1. 创建基础页面 +2. 使用 AI 辅助功能,指定目标语言 +3. AI 将翻译页面内容并保持布局结构 + +示例: +``` +将此页面内容翻译成英文,保持相同的布局和设计 +``` + +## 最佳实践 + +### 审查和编辑 + +AI 生成的内容通常需要人工审查和编辑: + +1. 检查生成的文本是否准确、相关 +2. 调整布局和样式以符合品牌要求 +3. 确保所有链接和功能正常工作 +4. 优化图片和媒体内容 + +### 渐进式生成 + +对于复杂页面,采用渐进式生成方法: + +1. 首先生成基本页面结构 +2. 逐步添加和完善各个部分 +3. 使用 AI 辅助进行细节优化 +4. 最后进行整体协调和统一 + +## 故障排除 + +### 生成结果不理想 + +如果 AI 生成的页面不符合预期: + +1. 尝试提供更具体、更详细的描述 +2. 分解复杂需求为多个简单步骤 +3. 提供参考示例或链接 +4. 调整使用的 AI 模型(如果可用) + +### 性能问题 + +如果遇到性能问题: + +1. 减少单次生成的页面复杂度 +2. 分步骤生成复杂页面 +3. 检查网络连接和 API 状态 +4. 确认 AI 提供商配置正确 diff --git a/docs/content/user-guide/basics.md b/docs/content/user-guide/basics.md new file mode 100644 index 0000000..6e35da2 --- /dev/null +++ b/docs/content/user-guide/basics.md @@ -0,0 +1,142 @@ +--- +id: basics +title: 基础使用 +--- + +# 基础使用 + +本文档介绍 UPage 的基本使用方法,帮助您快速上手这款基于 AI 的网页构建平台。 + +## 登录系统 + +1. 打开浏览器,访问 UPage 的地址(例如 `http://localhost:3000`) +2. 如果已配置 Logto 认证,您将被重定向到登录页面 +3. 输入用户名和密码登录系统 +4. 如果未配置认证系统,您将直接进入 UPage 主界面 + +## 界面概览 + +UPage 的界面主要分为以下几个部分: + +- **顶部导航栏**:包含项目切换、用户信息和全局设置 +- **侧边栏**:包含页面列表和创建新页面的入口 +- **主内容区**:显示当前编辑的页面或预览 +- **工具栏**:提供各种编辑工具和操作按钮 + +## 创建新页面 + +### 使用 AI 创建页面 + +1. 点击侧边栏中的"新建页面"按钮 +2. 选择"AI 创建"选项 +3. 在对话框中描述您想要创建的页面,例如: + ``` + 创建一个产品展示页面,包含标题、产品图片、详细描述和购买按钮 + ``` +4. 点击"生成"按钮,系统将基于您的描述生成页面 +5. 生成完成后,您可以进一步编辑和调整页面内容 + +### 从模板创建页面 + +1. 点击侧边栏中的"新建页面"按钮 +2. 选择"从模板创建"选项 +3. 浏览可用的模板并选择一个适合您需求的模板 +4. 点击"使用此模板"按钮 +5. 根据需要编辑和自定义模板内容 + +### 从空白页面开始 + +1. 点击侧边栏中的"新建页面"按钮 +2. 选择"空白页面"选项 +3. 使用拖拽方式添加组件到页面 +4. 配置组件属性和样式 + +## 编辑页面 + +### 添加组件 + +1. 在编辑模式下,点击工具栏中的"组件"按钮 +2. 从组件库中选择所需组件 +3. 将组件拖拽到页面中的目标位置 +4. 调整组件大小和位置 + +### 编辑组件属性 + +1. 在页面中点击选择要编辑的组件 +2. 在右侧属性面板中编辑组件的属性 +3. 修改文本内容、图片、链接等 +4. 调整组件的样式、颜色、字体等 + +### 使用 AI 辅助编辑 + +1. 选择要编辑的组件或页面区域 +2. 点击工具栏中的"AI 辅助"按钮 +3. 描述您想要进行的修改,例如: + ``` + 将这段文本改为更吸引人的营销语言,强调产品的优势 + ``` +4. AI 将根据您的描述生成修改建议 +5. 确认修改或进行进一步调整 + +## 预览和发布 + +### 预览页面 + +1. 点击工具栏中的"预览"按钮 +2. 在预览模式下查看页面在不同设备上的显示效果 +3. 使用设备切换按钮查看响应式效果 + +### 发布页面 + +1. 完成页面编辑后,点击工具栏中的"发布"按钮 +2. 选择发布选项(如发布到网站、导出代码等) +3. 根据提示完成发布流程 + +## 管理页面 + +### 页面列表 + +1. 在侧边栏中查看所有已创建的页面 +2. 点击页面名称打开并编辑页面 +3. 使用搜索框查找特定页面 + +### 页面操作 + +1. 在页面列表中,每个页面右侧有操作菜单 +2. 点击操作菜单可以进行复制、重命名、删除等操作 +3. 使用拖拽调整页面顺序 + +## 系统设置 + +### 用户设置 + +1. 点击顶部导航栏中的用户头像 +2. 选择"个人设置" +3. 修改个人信息、密码等 + +### 系统配置 + +1. 点击顶部导航栏中的设置图标 +2. 配置系统参数、AI 提供商等 +3. 管理用户权限和角色(需要管理员权限) + +## 键盘快捷键 + +UPage 提供了一系列键盘快捷键,帮助您提高工作效率: + +| 快捷键 | 功能 | +| --- | --- | +| Ctrl+S | 保存当前页面 | +| Ctrl+Z | 撤销操作 | +| Ctrl+Y | 重做操作 | +| Ctrl+C | 复制选中的组件 | +| Ctrl+V | 粘贴组件 | +| Delete | 删除选中的组件 | +| Ctrl+P | 预览页面 | +| Esc | 退出当前模式或取消选择 | + +## 下一步 + +- 了解如何[使用 AI 生成页面](ai-page-generation) +- 学习[页面管理](page-management)的高级技巧 +- 探索更多[配置选项](../configuration) diff --git a/docs/content/user-guide/page-management.md b/docs/content/user-guide/page-management.md new file mode 100644 index 0000000..70d0af6 --- /dev/null +++ b/docs/content/user-guide/page-management.md @@ -0,0 +1,192 @@ +--- +id: page-management +title: 页面管理 +--- + +# 页面管理 + +本文档介绍如何在 UPage 中管理、组织和维护您的页面,帮助您有效地管理网站内容。 + +## 页面列表 + +### 查看页面列表 + +1. 在 UPage 主界面,侧边栏显示了所有已创建的页面 +2. 页面按创建时间或自定义顺序排列 +3. 每个页面条目显示页面名称和最后修改时间 + +### 搜索和筛选 + +1. 使用侧边栏顶部的搜索框搜索特定页面 +2. 可以按页面名称、标签或内容进行搜索 +3. 使用筛选选项按页面类型、创建日期或状态筛选 + +## 页面操作 + +### 基本操作 + +在页面列表中,每个页面右侧有操作菜单,提供以下功能: + +- **编辑**:打开页面编辑器 +- **预览**:在新标签页中预览页面 +- **复制**:创建页面的副本 +- **重命名**:修改页面名称 +- **删除**:删除页面(可恢复) +- **导出**:导出页面代码或资源 + +### 批量操作 + +选择多个页面可以执行批量操作: + +1. 使用复选框选择多个页面 +2. 点击批量操作按钮 +3. 选择要执行的操作(如删除、导出、应用标签等) + +## 页面组织 + +### 使用标签 + +标签是组织页面的有效方式: + +1. 在页面设置中添加标签 +2. 使用侧边栏中的标签筛选器查看特定标签的页面 +3. 标签可以用于分类页面(如"产品"、"博客"、"着陆页"等) + +### 创建文件夹 + +对于大型项目,可以使用文件夹组织页面: + +1. 点击侧边栏中的"新建文件夹"按钮 +2. 输入文件夹名称 +3. 将页面拖放到文件夹中 +4. 点击文件夹可以展开或折叠其内容 + +## 页面版本控制 + +### 版本历史 + +UPage 自动保存页面的版本历史: + +1. 在页面编辑器中,点击"版本历史"按钮 +2. 查看页面的所有历史版本 +3. 点击任何版本可以预览该版本的页面状态 + +### 恢复版本 + +如果需要恢复到之前的版本: + +1. 在版本历史中找到要恢复的版本 +2. 点击"恢复此版本"按钮 +3. 确认恢复操作 +4. 系统将创建一个新版本,内容与选定的历史版本相同 + +### 比较版本 + +比较不同版本之间的差异: + +1. 在版本历史中选择两个版本 +2. 点击"比较"按钮 +3. 系统将显示两个版本之间的差异,包括添加、删除和修改的内容 + +## 页面设置 + +### 基本设置 + +每个页面都有以下基本设置: + +1. **页面名称**:显示在侧边栏和浏览器标签中 +2. **页面描述**:用于 SEO 和社交媒体分享 +3. **URL 路径**:页面的访问路径 +4. **标签**:用于组织和分类页面 +5. **状态**:草稿、已发布或已归档 + +### SEO 设置 + +优化页面的搜索引擎表现: + +1. **Meta 标题**:搜索结果中显示的标题 +2. **Meta 描述**:搜索结果中显示的描述 +3. **关键词**:与页面内容相关的关键词 +4. **规范 URL**:指定页面的规范 URL +5. **索引设置**:控制搜索引擎是否索引页面 + +### 社交媒体设置 + +自定义页面在社交媒体上的显示方式: + +1. **社交图片**:在社交媒体分享时显示的图片 +2. **社交标题**:在社交媒体分享时显示的标题 +3. **社交描述**:在社交媒体分享时显示的描述 + +## 页面导出和导入 + +### 导出页面 + +UPage 支持多种导出格式: + +1. **HTML/CSS/JS**:导出标准 Web 文件 +2. **ZIP 归档**:包含所有页面资源的压缩包 +3. **JSON**:页面数据的 JSON 表示 +4. **PDF**:页面的 PDF 版本(适用于文档) + +导出步骤: + +1. 在页面列表中选择要导出的页面 +2. 点击"导出"按钮 +3. 选择导出格式 +4. 配置导出选项 +5. 点击"导出"开始下载 + +### 导入页面 + +导入现有页面: + +1. 点击"导入"按钮 +2. 选择导入源(文件、URL 或代码) +3. 上传文件或输入 URL/代码 +4. 配置导入选项 +5. 点击"导入"开始处理 + +## 页面备份 + +### 创建备份 + +定期备份您的页面: + +1. 在设置中找到"备份"选项 +2. 点击"创建备份"按钮 +3. 输入备份描述(可选) +4. 选择要包含的页面 +5. 点击"开始备份" + +### 恢复备份 + +从备份中恢复页面: + +1. 在设置中找到"备份"选项 +2. 找到要恢复的备份 +3. 点击"恢复"按钮 +4. 选择要恢复的页面 +5. 选择恢复模式(覆盖或创建新页面) +6. 点击"开始恢复" + +## 协作功能 + +### 共享页面 + +与团队成员共享页面: + +1. 在页面操作菜单中选择"共享" +2. 输入团队成员的电子邮件地址 +3. 选择权限级别(查看、编辑或管理) +4. 点击"发送邀请" + +### 评论和反馈 + +在页面上添加评论和反馈: + +1. 在预览模式下,点击"评论"按钮 +2. 点击页面任何位置添加评论 +3. 输入评论内容 +4. 可以@提及团队成员 +5. 评论可以标记为已解决 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js new file mode 100644 index 0000000..e49c54f --- /dev/null +++ b/docs/docusaurus.config.js @@ -0,0 +1,133 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'UPage 文档', + tagline: 'UPage 是一款基于人工智能的可视化网页构建平台', + favicon: '../public/favicon.svg', + + // Set the production url of your site here + url: 'https://halo-dev.github.io', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/upage/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'halo-dev', // Usually your GitHub org/user name. + projectName: 'upage', // Usually your repo name. + trailingSlash: false, + + onBrokenLinks: 'warn', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'zh-Hans', + locales: ['zh-Hans'], + }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + path: 'content', + routeBasePath: '/', + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + editUrl: + 'https://github.com/halo-dev/upage/edit/main/docs/content/', + }, + blog: false, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/social-card.png', + navbar: { + title: 'UPage', + logo: { + alt: 'UPage Logo', + src: 'img/logo.svg', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'tutorialSidebar', + position: 'left', + label: '文档', + }, + { + href: 'https://github.com/halo-dev/upage', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: '文档', + items: [ + { + label: '快速开始', + to: '/quick-start', + }, + { + label: '部署指南', + to: '/category/deployment-guide', + }, + ], + }, + { + title: '社区', + items: [ + { + label: 'GitHub Issues', + href: 'https://github.com/halo-dev/upage/issues', + }, + { + label: 'GitHub Discussions', + href: 'https://github.com/halo-dev/upage/discussions', + }, + ], + }, + { + title: '更多', + items: [ + { + label: 'GitHub', + href: 'https://github.com/halo-dev/upage', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} Halo 社区`, + }, + prism: { + theme: require('prism-react-renderer').themes.github, + darkTheme: require('prism-react-renderer').themes.dracula, + }, + colorMode: { + defaultMode: 'light', + disableSwitch: false, + respectPrefersColorScheme: true, + }, + }), +}; + +module.exports = config; diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 809cadf..0000000 --- a/docs/index.md +++ /dev/null @@ -1,14 +0,0 @@ -# 简介 - -欢迎阅读 UPage 文档。UPage 是一个基于人工智能的可视化网页构建平台,支持多种 AI 提供商集成,能够轻松创建和定制网页内容。 - -## 目录 - -- [简介](#简介) -- [目录](#目录) -- [快速开始](#快速开始) -- [部署指南](#部署指南) -- [常见问题](#常见问题) -- [贡献指南](#贡献指南) -- [开发指南](#开发指南) -- [更新日志](#更新日志) diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000..10804e7 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,45 @@ +{ + "name": "upage-docs", + "version": "0.0.0", + "private": true, + "workspaces": [".."], + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "3.9.0", + "@docusaurus/preset-classic": "3.9.0", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.9.0", + "@docusaurus/types": "3.9.0" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=18.0" + } +} diff --git a/docs/sidebars.js b/docs/sidebars.js new file mode 100644 index 0000000..b356b45 --- /dev/null +++ b/docs/sidebars.js @@ -0,0 +1,73 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + tutorialSidebar: [ + { + type: 'doc', + id: 'index', + label: '首页', + }, + { + type: 'doc', + id: 'quick-start', + label: '快速开始', + }, + { + type: 'category', + label: '部署指南', + link: { + type: 'generated-index', + title: '部署指南', + slug: 'deployment-guide', + }, + items: [ + 'deployment/docker', + 'deployment/docker-compose', + 'deployment/source', + 'deployment/logto', + 'deployment/others', + ], + }, + { + type: 'doc', + id: 'configuration', + label: '配置参考', + }, + { + type: 'category', + label: '用户指南', + items: [ + 'user-guide/basics', + 'user-guide/ai-page-generation', + 'user-guide/page-management', + ], + }, + { + type: 'doc', + id: 'faq', + label: '常见问题', + }, + { + type: 'doc', + id: 'changelog', + label: '更新日志', + }, + { + type: 'doc', + id: 'contributing', + label: '贡献指南', + }, + ], +}; + +module.exports = sidebars; diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css new file mode 100644 index 0000000..09eae3d --- /dev/null +++ b/docs/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #3f51b5; + --ifm-color-primary-dark: #3949a3; + --ifm-color-primary-darker: #36459a; + --ifm-color-primary-darkest: #2c397f; + --ifm-color-primary-light: #4c5ec1; + --ifm-color-primary-lighter: #5566c4; + --ifm-color-primary-lightest: #707ecd; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #7986cb; + --ifm-color-primary-dark: #6271c2; + --ifm-color-primary-darker: #5767be; + --ifm-color-primary-darkest: #3f50a8; + --ifm-color-primary-light: #909bd4; + --ifm-color-primary-lighter: #9ba5d8; + --ifm-color-primary-lightest: #bcc2e5; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/docs/static/img/logo.svg b/docs/static/img/logo.svg new file mode 100644 index 0000000..c68d62f --- /dev/null +++ b/docs/static/img/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c30dd1..177e0e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,7 +272,7 @@ importers: version: 15.0.0 '@remix-run/dev': specifier: ^2.17.1 - version: 2.17.1(@remix-run/react@2.17.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@remix-run/serve@2.17.1(typescript@5.9.2))(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + version: 2.17.1(@remix-run/react@2.17.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@remix-run/serve@2.17.1(typescript@5.9.2))(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) '@remix-run/serve': specifier: ^2.17.1 version: 2.17.1(typescript@5.9.2) @@ -308,7 +308,7 @@ importers: version: 66.5.2 '@vitejs/plugin-react': specifier: ^5.0.3 - version: 5.0.3(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + version: 5.0.3(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -338,16 +338,47 @@ importers: version: 5.9.2 unocss: specifier: ^66.5.2 - version: 66.5.2(postcss@8.5.3)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + version: 66.5.2(postcss@8.5.3)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) vite: specifier: ^5.4.19 - version: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + version: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + version: 5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.21)(jsdom@26.1.0)(sass-embedded@1.93.1)(sass@1.93.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.21)(jsdom@26.1.0)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) + + docs: + dependencies: + '@docusaurus/core': + specifier: 3.9.0 + version: 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/preset-classic': + specifier: 3.9.0 + version: 3.9.0(@algolia/client-search@5.38.0)(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + '@mdx-js/react': + specifier: ^3.0.0 + version: 3.1.1(@types/react@18.3.24)(react@18.3.1) + clsx: + specifier: ^2.0.0 + version: 2.1.1 + prism-react-renderer: + specifier: ^2.3.0 + version: 2.4.1(react@18.3.1) + react: + specifier: ^18.0.0 + version: 18.3.1 + react-dom: + specifier: ^18.0.0 + version: 18.3.1(react@18.3.1) + devDependencies: + '@docusaurus/module-type-aliases': + specifier: 3.9.0 + version: 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': + specifier: 3.9.0 + version: 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) packages: @@ -473,6 +504,79 @@ packages: zod: optional: true + '@algolia/abtesting@1.4.0': + resolution: {integrity: sha512-N0blWT/C0KOZ/OJ9GXBX66odJZlrYjMj3M+01y8ob1mjBFnBaBo7gOCyHBDQy60+H4pJXp3pSGlJOqJIueBH+A==} + engines: {node: '>= 14.0.0'} + + '@algolia/autocomplete-core@1.19.2': + resolution: {integrity: sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.19.2': + resolution: {integrity: sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-shared@1.19.2': + resolution: {integrity: sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.38.0': + resolution: {integrity: sha512-15d6zv8vtj2l9pnnp/EH7Rhq3/snCCHRz56NnX6xIUPrbJl5gCsIYXAz8C2IEkwOpoDb0r5G6ArY2gKdVMNezw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.38.0': + resolution: {integrity: sha512-jJIbYAhYvTG3+gEAP5Q5Dp6PFJfUR+atz5rsqm5KjAKK+faLFdHJbM2IbOo0xdyGd+SH259MzfQKLJ9mZZ27dQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.38.0': + resolution: {integrity: sha512-aMCXzVPGJTeQnVU3Sdf30TfMN2+QyWcjfPTCCHyqVVgjPipb6RnK40aISGoO+rlYjh9LunDsNVFLwv+JEIF8bQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.38.0': + resolution: {integrity: sha512-4c3FbpMiJX+VcaAj0rYaQdTLS/CkrdOn4hW+5y1plPov7KC7iSHai/VBbirmHuAfW1hVPCIh1w/4erKKTKuo+Q==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.38.0': + resolution: {integrity: sha512-FzLs6c8TBL4FSgNfnH2NL7O33ktecGiaKO4ZFG51QYORUzD5d6YwB9UBteaIYu/sgFoEdY57diYU4vyBH8R6iA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.38.0': + resolution: {integrity: sha512-7apiahlgZLvOqrh0+hAYAp/UWjqz6AfSJrCwnsoQNzgIT09dLSPIKREelkuQeUrKy38vHWWpSQE3M0zWSp/YrA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.38.0': + resolution: {integrity: sha512-PTAFMJOpVtJweExEYYgdmSCC6n4V/R+ctDL3fRQy77ulZM/p+zMLIQC9c7HCQE1zqpauvVck3f2zYSejaUTtrw==} + engines: {node: '>= 14.0.0'} + + '@algolia/events@4.0.1': + resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} + + '@algolia/ingestion@1.38.0': + resolution: {integrity: sha512-qGSUGgceJHGyJLZ06bFLwVe2Tpf9KwabmoBjFvFscVmMmU5scKya6voCYd9bdX7V0Xy1qya9MGbmTm4zlLuveQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.38.0': + resolution: {integrity: sha512-VnCtAUcHirvv/dDHg9jK1Z5oo4QOC5FKDxe40x8qloru2qDcjueT34jiAsB0gRos3VWf9v4iPSYTqMIFOcADpQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.38.0': + resolution: {integrity: sha512-fqgeU9GqxQorFUeGP4et1MyY28ccf9PCeciHwDPSbPYYiTqBItHdUIiytsNpjC5Dnc0RWtuXWCltLwSw9wN/bQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.38.0': + resolution: {integrity: sha512-nAUKbv4YQIXbpPi02AQvSPisD5FDDbT8XeYSh9HFoYP0Z3IpBLLDg7R4ahPvzd7gGsVKgEbXzRPWESXSji5yIg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.38.0': + resolution: {integrity: sha512-bkuAHaadC6OxJd3SVyQQnU1oJ9G/zdCqua7fwr1tJDrA/v7KzeS5np4/m6BuRUpTgVgFZHSewGnMcgj9DLBoaQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.38.0': + resolution: {integrity: sha512-yHDKZTnMPR3/4bY0CVC1/uRnnbAaJ+pctRuX7G/HflBkKOrnUBDEGtQQHzEfMz2FHZ/tbCL+Q9r6mvwTSGp8nw==} + engines: {node: '>= 14.0.0'} + '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -506,6 +610,10 @@ packages: resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.4': resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} @@ -522,6 +630,10 @@ packages: resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -532,6 +644,23 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.28.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.5': + resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -564,6 +693,12 @@ packages: resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.27.1': resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} @@ -586,6 +721,10 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.28.3': + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.4': resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} @@ -605,12 +744,65 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.27.1': resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -623,12 +815,264 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.28.0': + resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.4': + resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.3': + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.4': + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.0': + resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.28.0': + resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.27.1': resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.4': + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-constant-elements@7.27.1': + resolution: {integrity: sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -641,18 +1085,129 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.27.1': + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.28.4': + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.28.3': + resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.27.1': resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.28.3': + resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.27.1': + resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.27.1': resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime-corejs3@7.28.4': + resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==} + engines: {node: '>=6.9.0'} + '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} @@ -740,14 +1295,29 @@ packages: '@bufbuild/protobuf@2.9.0': resolution: {integrity: sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + '@csstools/css-calc@2.1.3': resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} engines: {node: '>=18'} @@ -755,6 +1325,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.4 '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-color-parser@3.0.9': resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} engines: {node: '>=18'} @@ -762,19 +1339,468 @@ packages: '@csstools/css-parser-algorithms': ^3.0.4 '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms@3.0.4': resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer@3.0.3': resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/postcss-alpha-function@1.0.1': + resolution: {integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-cascade-layers@5.0.2': + resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function-display-p3-linear@1.0.1': + resolution: {integrity: sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function@4.0.12': + resolution: {integrity: sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-function@3.0.12': + resolution: {integrity: sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2': + resolution: {integrity: sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.8': + resolution: {integrity: sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-contrast-color-function@2.0.12': + resolution: {integrity: sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.9': + resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-font-format-keywords@4.0.0': + resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gamut-mapping@2.0.11': + resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gradients-interpolation-method@5.0.12': + resolution: {integrity: sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-hwb-function@4.0.12': + resolution: {integrity: sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-ic-unit@4.0.4': + resolution: {integrity: sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-initial@2.0.1': + resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-is-pseudo-class@5.0.3': + resolution: {integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-light-dark-function@2.0.11': + resolution: {integrity: sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-float-and-clear@3.0.0': + resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overflow@2.0.0': + resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0': + resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-resize@3.0.0': + resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-viewport-units@3.0.4': + resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-minmax@2.0.9': + resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5': + resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-nested-calc@4.0.0': + resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-normalize-display-values@4.0.0': + resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.12': + resolution: {integrity: sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-progressive-custom-properties@4.2.1': + resolution: {integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-random-function@2.0.1': + resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-relative-color-syntax@3.0.12': + resolution: {integrity: sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-scope-pseudo-class@4.0.1': + resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-sign-functions@1.1.4': + resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-stepped-value-functions@4.0.9': + resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-text-decoration-shorthand@4.0.3': + resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-trigonometric-functions@4.0.9': + resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-unset-value@4.0.0': + resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/selector-resolve-nested@3.1.0': + resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/utilities@2.0.0': + resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@dabh/diagnostics@2.0.3': resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@docsearch/css@4.1.0': + resolution: {integrity: sha512-nuNKGjHj/FQeWgE9t+i83QD/V67QiaAmGY7xS9TVCRUiCqSljOgIKlsLoQZKKVwEG8f+OWKdznzZkJxGZ7d06A==} + + '@docsearch/react@4.1.0': + resolution: {integrity: sha512-4GHI7TT3sJZ2Vs4Kjadv7vAkMrTsJqHvzvxO3JA7UT8iPRKaDottG5o5uNshPWhVVaBYPC35Ukf8bfCotGpjSg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 20.0.0' + react: '>= 16.8.0 < 20.0.0' + react-dom: '>= 16.8.0 < 20.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + + '@docusaurus/babel@3.9.0': + resolution: {integrity: sha512-QcZ+Rey0OvlLK9SPN4/+VWL+ut/tuADVdunA1fmC96fytdYjatdJrcw1koYdp/c+3k6lVYlwg9DDVNDecyLCAA==} + engines: {node: '>=20.0'} + + '@docusaurus/bundler@3.9.0': + resolution: {integrity: sha512-HaRLSmiwnJQ3uHBV3rd/BRDM9S/nHAshRk54djRZ+RX9ze4ONuFAovdD5es20ZDj7PRTjo38GVnBtHvuL/SwsQ==} + engines: {node: '>=20.0'} + peerDependencies: + '@docusaurus/faster': '*' + peerDependenciesMeta: + '@docusaurus/faster': + optional: true + + '@docusaurus/core@3.9.0': + resolution: {integrity: sha512-sEJ4MW/zuh1MfPORCRbSwnW/PjsVmOigWwBU6clcxm221/CNdnI/XqgfBrl2jj/zocSdNoQM8E3IP2W8dygi6g==} + engines: {node: '>=20.0'} + hasBin: true + peerDependencies: + '@mdx-js/react': ^3.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/cssnano-preset@3.9.0': + resolution: {integrity: sha512-prCJXUcoJZBlovJzSFkfnfWr1gXd53VZfE+17fIpUWS6Zioc7WE4FPoXPi5ldAGZ8brhXre5xQ8NWDE90XP9yw==} + engines: {node: '>=20.0'} + + '@docusaurus/logger@3.9.0': + resolution: {integrity: sha512-lDtThsocWTF8ZrVF01ltfctA/xgtD/3oXWqEkKIDzF4fCWsWXH7hC4LCqT23xSuxZTIo8N+y02XSPvA/8DLInw==} + engines: {node: '>=20.0'} + + '@docusaurus/mdx-loader@3.9.0': + resolution: {integrity: sha512-9bfJYdkZFE+REwevkT4CYdTJ2f6ydgkbUFylkzTXrNGtBXtx25TRJGdn2cVzm3eVkeWdJrGkG/ypwrIWnbu5UA==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/module-type-aliases@3.9.0': + resolution: {integrity: sha512-0ucYr79FpTCebN+l3ZlKqoW7HbMqSKT8JdsEg6QoUtxD3C7trF6KZiK/X6Yh+xekO1w3zzXYgPcIYTF2DV81tQ==} + peerDependencies: + react: '*' + react-dom: '*' + + '@docusaurus/plugin-content-blog@3.9.0': + resolution: {integrity: sha512-XZXJ/rQgi2jT0XWNXOnSKooJgtGHPzkjaBjww6K9PD+YevNMTP9U8Y5sA7cLA5Bwuqrpee4i8NO3tSrjhhDW5w==} + engines: {node: '>=20.0'} + peerDependencies: + '@docusaurus/plugin-content-docs': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-content-docs@3.9.0': + resolution: {integrity: sha512-PP+iDJg+lj4cn/7GbbmiguaQ8OX08YxnzQ17KqRC4ufJm11jdyXD33wA7vVtbeG/BkkgkiB/K7YyPHCPwmfVhg==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-content-pages@3.9.0': + resolution: {integrity: sha512-ngetCpAZuivlaHC0l8a5KoK6PQWGuZ8742VwK7dbXeIW0Y70P4xwuocBdsCIQ9J6nB9rlTXRYMpNVyYyCpD7/Q==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-css-cascade-layers@3.9.0': + resolution: {integrity: sha512-giPTCjEzeaamMn8EHY/oDvsPDxF5ei1/q5lPUFQLldbc65jFQ1k6pPwKjtOznYy3TSfClCF1F1DNpYWIx7B5LA==} + engines: {node: '>=20.0'} + + '@docusaurus/plugin-debug@3.9.0': + resolution: {integrity: sha512-DuFOZya+bcrYiL54qBEn2rdKuoWWNyOV5IoHI2MURLzwuYaKu/J9Gi618XUsj3N3qvqG2uxWQiXZcs9ecfMadA==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-google-analytics@3.9.0': + resolution: {integrity: sha512-mUXvpasTDR2pXdnkkhGxEgB9frVAvLGc+T3fp6SGT2F+YoEQtjcmz9D43zubQawLn+W1KEhoj+vPusYe+HAl+A==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-google-gtag@3.9.0': + resolution: {integrity: sha512-L4tCKYnmcyLV6VQs7XWQ3r7YSllagAU2GylZzdvz7NRMcXE12uSW5MCC2aSltbk09MYlqrYv1Ntp+ESsMvptYw==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-google-tag-manager@3.9.0': + resolution: {integrity: sha512-+jWO3tkrvsMUKQ69KTIj9ZBf8sKY5kodLcP4yIaEkPzfWq9IEpE+ekQCtFWlrAmkJUtSxbjHK6HNZZkUNwwq7w==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-sitemap@3.9.0': + resolution: {integrity: sha512-QOyLooWuF+On4q2RDGVZtKY0tlfdZwD9e/p7g1sJLUfOwN518V2Bo+kZtU82Or42SCKjyJ0lhSqAUOZfbeFhFw==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/plugin-svgr@3.9.0': + resolution: {integrity: sha512-pUZIfnhFtAYDmDwimFiBY+sxNUigyJnKbCwI9pTiXr3uGp43CsSsN8gwl/i8jBmqfsZzvNnGZNxc75wy9v6RXA==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/preset-classic@3.9.0': + resolution: {integrity: sha512-nLoiDxf8bDNNxDSZ28+pFfSfT+QRi08Pn2K0zIvbjkM/X/otMs4ho0K8+2FpoLOoGApifaSuNfJXpGYnQV3rGA==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/react-loadable@6.0.0': + resolution: {integrity: sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==} + peerDependencies: + react: '*' + + '@docusaurus/theme-classic@3.9.0': + resolution: {integrity: sha512-RToUIabJOyX41nMIxkFn8LPeA+uHgySzyd6Ak/gsINqWHHTLDMoYPxBUmNm3S+okcfuMI54kNYvD6TY+6TIYDA==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/theme-common@3.9.0': + resolution: {integrity: sha512-pqNoQgttIpk7Ndm6N8OGbhi+1wBIQXQPYM7bPf1HDraXfvVpOzhcDty1yyK4coPWl0M7NxednZvKw4atfQ70Ew==} + engines: {node: '>=20.0'} + peerDependencies: + '@docusaurus/plugin-content-docs': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/theme-search-algolia@3.9.0': + resolution: {integrity: sha512-nbY7ZJVA10kTiBLJtscxK1aECeYvYFz+Sno9PkCE9KeFXqRDr6omtNmLVkbvyl4b6xgz+6yOIBdO/idLPVDpWg==} + engines: {node: '>=20.0'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/theme-translations@3.9.0': + resolution: {integrity: sha512-4HUELBsE+rhtlnR1MsaNB9nJXPFZANeDQa5If1GfFVlis5mWUfdmXmbGangR7PfpK2tc56UETMtzjKrX5L5UWw==} + engines: {node: '>=20.0'} + + '@docusaurus/types@3.9.0': + resolution: {integrity: sha512-0klJLhHFHqkYoxIVp1LD7dnU1ASRTfSX+HFDiELOdz+YQUkOSfuU5hDa46zD8bLxrYffCb8FtJI7Z6BWAmVodg==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + '@docusaurus/utils-common@3.9.0': + resolution: {integrity: sha512-zpmzRn2mniMnrx8ZEYyyDsr0/7EksVgUXL9IuODp0DSK+R19nDGCY7w2NaMGRmGnrQQKsT3t0NDZzBk0V6N9Iw==} + engines: {node: '>=20.0'} + + '@docusaurus/utils-validation@3.9.0': + resolution: {integrity: sha512-xpVLdFPpsE5dYuE7hOtghccCrRWRhM6tUQ4YpfSy5snCDWgROITG5Mj22fGstd/HBqTzKD8NFs7qPPs42qjgWg==} + engines: {node: '>=20.0'} + + '@docusaurus/utils@3.9.0': + resolution: {integrity: sha512-wpVRQbDhXxqbb1llhkpu++aD4UdHHQ5M7J8DmJELDphlwmpI44TdS5elQZOsjzPfGyITZyQLekcDXjyteJ0/bw==} + engines: {node: '>=20.0'} + '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -1090,6 +2116,12 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@headlessui/react@2.2.8': resolution: {integrity: sha512-vkiZulDC0lFeTrZTbA4tHvhZHvkUb2PFh5xJ1BvWAZdRK0fayMKO1QEO4inWkXxK1i0I1rcwwu1d6mo0K7Pcbw==} engines: {node: '>=10'} @@ -1126,6 +2158,14 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1144,6 +2184,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -1156,12 +2199,51 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@1.0.0': + resolution: {integrity: sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.14.0': + resolution: {integrity: sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + '@jspm/core@2.1.0': resolution: {integrity: sha512-3sRl+pkyFY/kLmHl0cgHiFp2xEqErA8N3ECjMs7serSUBmoJ70lBa0PG5t0IM6WJgdZNyyI0R8YFfi5wM8+mzg==} '@kurkle/color@0.3.4': resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@logto/client@3.1.4': resolution: {integrity: sha512-aaz1XrLLTBii5lz3c7oHr/kqcR2iTbTehxlCn3YMnSyGUBVjoUYH4eU37wqf08nEYjtsLaSndYu63WVN8/Fpqw==} @@ -1179,6 +2261,15 @@ packages: '@mdx-js/mdx@2.3.0': resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + '@nanostores/react@1.0.0': resolution: {integrity: sha512-eDduyNy+lbQJMg6XxZ/YssQqF6b4OXMFEZMYKPJCCmBevp1lg0g+4ZRi94qGHirMtsNfAWKNwsjOhC+q1gvC+A==} engines: {node: ^20.0.0 || >=22.0.0} @@ -1382,6 +2473,18 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -2135,10 +3238,30 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + '@silverhand/essentials@2.9.2': resolution: {integrity: sha512-bD+82D9Dfa1F5xX1kfdR5ODIoJS41NOxTuHx4shVS5A4/ayEG+ZplpDDjB19fsa7kZXgSgD75R4sUCXjm88x6w==} engines: {node: ^18.12.0 || ^20.9.0 || ^22.0.0, pnpm: ^9.0.0} + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + '@sindresorhus/slugify@2.2.1': resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} engines: {node: '>=12'} @@ -2147,6 +3270,15 @@ packages: resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} engines: {node: '>=12'} + '@slorber/react-helmet-async@1.3.0': + resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@slorber/remark-comment@1.0.0': + resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} + '@smithy/eventstream-codec@4.0.4': resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==} engines: {node: '>=18.0.0'} @@ -2186,9 +3318,91 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/plugin-svgo@8.1.0': + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/webpack@8.1.0': + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} + '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + '@tanstack/react-virtual@3.13.9': resolution: {integrity: sha512-SPWC8kwG/dWBf7Py7cfheAPOxuvIv4fFQ54PdmYbg7CpXfsKxkucak43Q0qKsxVthhUJQ1A7CIMAIplq4BjVwA==} peerDependencies: @@ -2228,6 +3442,10 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -2249,12 +3467,18 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} '@types/compression@1.8.1': resolution: {integrity: sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==} + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -2267,6 +3491,12 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2276,27 +3506,60 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@5.0.6': resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@5.0.3': resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + '@types/gtag.js@0.0.12': + resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} + '@types/hast@2.3.10': resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + '@types/hoist-non-react-statics@3.3.6': resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash@4.17.20': resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} @@ -2315,6 +3578,12 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/node@22.15.21': resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} @@ -2324,6 +3593,9 @@ packages: '@types/path-browserify@1.0.3': resolution: {integrity: sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==} + '@types/prismjs@1.26.5': + resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} @@ -2341,15 +3613,36 @@ packages: peerDependencies: '@types/react': ^18.0.0 + '@types/react-router-config@5.0.11': + resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} + + '@types/react-router-dom@5.3.3': + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + '@types/react@18.3.24': resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + '@types/serve-static@1.15.7': resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} @@ -2362,6 +3655,15 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -2501,6 +3803,57 @@ packages: '@web3-storage/multipart-parser@1.0.0': resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@zxing/text-encoding@0.9.0': resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} @@ -2512,16 +3865,35 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -2536,6 +3908,51 @@ packages: peerDependencies: zod: ^3.25.76 || ^4 + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + algoliasearch-helper@3.26.0: + resolution: {integrity: sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==} + peerDependencies: + algoliasearch: '>= 3.1 < 6' + + algoliasearch@5.38.0: + resolution: {integrity: sha512-8VJKIzheeI9cjuVJhU1hYEVetOTe7LvA+CujAI7yqvYsPtZfVEvv1pg9AeFNtHBg/ZoSLGU5LPijhcY5l3Ea9g==} + engines: {node: '>= 14.0.0'} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2563,6 +3980,9 @@ packages: arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2580,6 +4000,10 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + asn1.js@4.10.1: resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} @@ -2594,6 +4018,13 @@ packages: async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -2601,6 +4032,31 @@ packages: aws4fetch@1.0.20: resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + babel-loader@9.2.1: + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-polyfill-corejs2@0.4.14: + resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.5: + resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -2614,16 +4070,26 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.7: + resolution: {integrity: sha512-bxxN2M3a4d1CRoQC//IqsR5XrLh0IJ8TCv2x6Y9N0nckNz/rTjZB3//GGscZziZOxmjP55rzxg/ze7usFI9FqQ==} + hasBin: true + basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} better-sqlite3@11.10.0: resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2644,6 +4110,23 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + bonjour-service@1.3.0: + resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -2679,6 +4162,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-builder@0.2.0: resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} @@ -2691,6 +4179,14 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2711,6 +4207,14 @@ packages: resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2723,6 +4227,13 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camelcase-keys@9.1.3: resolution: {integrity: sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==} engines: {node: '>=16'} @@ -2731,13 +4242,27 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + camelcase@8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001718: resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + caniuse-lite@1.0.30001745: + resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} + canvg@3.0.11: resolution: {integrity: sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==} engines: {node: '>=10.0.0'} @@ -2757,6 +4282,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2777,6 +4306,13 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -2792,6 +4328,14 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + cipher-base@1.0.6: resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} engines: {node: '>= 0.10'} @@ -2805,10 +4349,18 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2817,6 +4369,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -2824,6 +4380,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -2832,6 +4392,9 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -2851,6 +4414,9 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2860,9 +4426,35 @@ packages: colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + combine-promises@1.2.0: + resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} + engines: {node: '>=10'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + 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'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -2871,6 +4463,9 @@ packages: resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concurrently@9.2.1: resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} @@ -2882,10 +4477,25 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2912,6 +4522,18 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + copy-webpack-plugin@11.0.0: + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + + core-js-compat@3.45.1: + resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} + + core-js-pure@3.45.1: + resolution: {integrity: sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ==} + core-js@3.42.0: resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} @@ -2922,6 +4544,15 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -2944,9 +4575,88 @@ packages: resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} engines: {node: '>= 0.10'} + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-blank-pseudo@7.0.1: + resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-declaration-sorter@7.3.0: + resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-has-pseudo@7.0.3: + resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@5.0.1: + resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + + css-prefers-color-scheme@10.0.0: + resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -2958,11 +4668,42 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssdb@8.4.2: + resolution: {integrity: sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + cssnano-preset-advanced@6.1.2: + resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-preset-default@6.1.2: + resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@4.0.2: + resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@6.1.2: + resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@4.3.1: resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} engines: {node: '>=18'} @@ -2985,6 +4726,9 @@ packages: date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -3047,13 +4791,37 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + 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'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -3061,6 +4829,10 @@ packages: resolution: {integrity: sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==} engines: {node: '>=16'} + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -3091,6 +4863,14 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -3108,18 +4888,59 @@ packages: dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dnd-core@16.0.1: resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==} + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dompurify@3.2.7: resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -3150,6 +4971,9 @@ packages: electron-to-chromium@1.5.155: resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + electron-to-chromium@1.5.224: + resolution: {integrity: sha512-kWAoUu/bwzvnhpdZSIc6KUyvkI1rbRXMT0Eq8pKReyOyaPZcctMli+EgvcN1PAvwVc7Tdo4Fxi2PsLNDU05mdg==} + elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -3163,6 +4987,16 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + emoticon@4.1.0: + resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} + empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} @@ -3184,6 +5018,17 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@6.0.0: resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} engines: {node: '>=0.12'} @@ -3191,6 +5036,9 @@ packages: 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==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -3206,6 +5054,12 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + esbuild-plugins-node-modules-polyfill@1.7.0: resolution: {integrity: sha512-Z81w5ReugIBAgufGeGWee+Uxzgs5Na4LprUAK3XlJEh2ktY3LkNuEGMaZyBXxQxGK8SQDS5yKLW5QKGF5qLjYA==} engines: {node: '>=14.0.0'} @@ -3226,19 +5080,58 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + estree-util-attach-comments@2.1.1: resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + estree-util-build-jsx@2.2.2: resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + estree-util-is-identifier-name@1.1.0: resolution: {integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==} @@ -3248,19 +5141,39 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + estree-util-to-js@1.2.0: resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + estree-util-value-to-estree@1.3.0: resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} engines: {node: '>=12.0.0'} + estree-util-value-to-estree@3.4.0: + resolution: {integrity: sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==} + estree-util-visit@1.2.1: resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -3273,6 +5186,13 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + eventsource-parser@3.0.6: resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} engines: {node: '>=18.0.0'} @@ -3312,6 +5232,10 @@ packages: exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -3329,15 +5253,25 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-png@6.4.0: resolution: {integrity: sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -3350,6 +5284,10 @@ packages: fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -3357,6 +5295,16 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-loader@6.2.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + file-stream-rotator@0.6.1: resolution: {integrity: sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==} @@ -3375,6 +5323,10 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -3383,9 +5335,26 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + 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'} @@ -3394,6 +5363,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -3406,6 +5379,9 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + framer-motion@12.23.19: resolution: {integrity: sha512-AaWAohgTs2+wUoDdpJaaqMgV6vkm1uzzDlZUItem45linLrFiFqi4iw7bryhcVqu4loaaSLtSjAojfCAB3qczw==} peerDependencies: @@ -3431,6 +5407,10 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} + fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -3466,6 +5446,9 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + get-port@5.1.1: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} @@ -3485,14 +5468,34 @@ packages: github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regex.js@1.0.1: + resolution: {integrity: sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -3501,6 +5504,14 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -3508,9 +5519,20 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + gunzip-maybe@1.4.2: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true @@ -3519,6 +5541,9 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3534,6 +5559,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hash-base@3.0.5: resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} engines: {node: '>= 0.10'} @@ -3560,6 +5589,9 @@ packages: hast-util-to-estree@2.3.3: resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -3578,6 +5610,13 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} @@ -3592,28 +5631,96 @@ packages: resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + html-webpack-plugin@5.6.4: + resolution: {integrity: sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + html2canvas@1.4.1: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http-proxy-middleware@2.0.9: + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -3627,6 +5734,10 @@ packages: engines: {node: '>=18'} hasBin: true + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3644,12 +5755,29 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} + engines: {node: '>=16.x'} + hasBin: true + immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} immutable@5.1.2: resolution: {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3662,18 +5790,32 @@ packages: resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} engines: {node: '>=18'} + infima@0.2.0-alpha.45: + resolution: {integrity: sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==} + engines: {node: '>=12'} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + iobuffer@5.4.0: resolution: {integrity: sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==} @@ -3685,6 +5827,10 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3695,6 +5841,9 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -3710,6 +5859,10 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -3720,6 +5873,20 @@ packages: is-deflate@1.0.0: resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3743,18 +5910,47 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-network-error@1.3.0: + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} + engines: {node: '>=16'} + + is-npm@6.1.0: + resolution: {integrity: sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + is-obj@3.0.0: resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} engines: {node: '>=12'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -3763,6 +5959,10 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -3773,6 +5973,10 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3781,10 +5985,28 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -3795,12 +6017,32 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -3809,6 +6051,9 @@ packages: resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + jose@5.10.0: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} @@ -3828,6 +6073,10 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -3846,10 +6095,27 @@ packages: engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@3.0.2: resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} @@ -3871,6 +6137,17 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -3885,6 +6162,17 @@ packages: resolution: {integrity: sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==} engines: {node: '>=18'} + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + + launch-editor@2.11.1: + resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} @@ -3892,6 +6180,17 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + loader-utils@3.3.1: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} @@ -3908,12 +6207,22 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3938,6 +6247,13 @@ packages: loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3966,9 +6282,21 @@ packages: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@2.0.0: + resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.3.0: + resolution: {integrity: sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==} + engines: {node: '>= 20'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3979,6 +6307,9 @@ packages: mdast-util-definitions@5.1.2: resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + mdast-util-directive@3.1.0: + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -3991,6 +6322,9 @@ packages: mdast-util-frontmatter@1.0.1: resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + mdast-util-gfm-autolink-literal@2.0.1: resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} @@ -4024,6 +6358,9 @@ packages: mdast-util-mdx@2.0.1: resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + mdast-util-mdxjs-esm@1.3.1: resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} @@ -4054,6 +6391,12 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -4064,6 +6407,9 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + memfs@4.46.1: + resolution: {integrity: sha512-2wjHDg7IjP+ufAqqqSxjiNePFDrvWviA79ajUwG9lkHhk3HzZOLBzzoUG8cx9vCagj6VvBQD7oXuLuFz5LaAOQ==} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -4084,9 +6430,15 @@ packages: micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + micromark-extension-directive@3.0.2: + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} + micromark-extension-frontmatter@1.1.1: resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + micromark-extension-gfm-autolink-literal@2.1.0: resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} @@ -4111,18 +6463,33 @@ packages: micromark-extension-mdx-expression@1.0.8: resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + micromark-extension-mdx-jsx@1.0.5: resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + micromark-extension-mdx-md@1.0.1: resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + micromark-extension-mdxjs-esm@1.0.5: resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + micromark-extension-mdxjs@1.0.1: resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + micromark-factory-destination@1.1.0: resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} @@ -4138,6 +6505,9 @@ packages: micromark-factory-mdx-expression@1.0.9: resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + micromark-factory-space@1.1.0: resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} @@ -4201,6 +6571,9 @@ packages: micromark-util-events-to-acorn@1.2.3: resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + micromark-util-html-tag-name@1.2.0: resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} @@ -4257,6 +6630,10 @@ packages: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -4265,10 +6642,18 @@ packages: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -4282,16 +6667,29 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + mini-css-extract-plugin@2.9.4: + resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + 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@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -4372,6 +6770,10 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4392,6 +6794,12 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.77.0: resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} engines: {node: '>=10'} @@ -4404,6 +6812,10 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + node-fetch-native@1.6.6: resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} @@ -4411,9 +6823,16 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + normalize-package-data@5.0.0: resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4422,6 +6841,14 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.1.0: + resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} + engines: {node: '>=14.16'} + npm-install-checks@6.3.0: resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4442,6 +6869,18 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + null-loader@4.0.1: + resolution: {integrity: sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + nwsapi@2.2.20: resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} @@ -4462,6 +6901,17 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -4502,6 +6952,14 @@ packages: oniguruma-to-es@4.3.3: resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + openai-zod-to-json-schema@1.0.3: resolution: {integrity: sha512-CFU+KtOmX1dk2nPCZcGYgbrI3YLJJgMSehx1mLbH1A2fsRmZevHzMau6vFIhtkCpHWkGQ3ossA4a0OzVHlGrkw==} engines: {node: '>=18'} @@ -4517,6 +6975,10 @@ packages: openapi3-ts@4.5.0: resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -4524,6 +6986,14 @@ packages: outdent@0.8.0: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4532,6 +7002,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -4540,14 +7014,30 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + p-throttle@6.2.0: resolution: {integrity: sha512-NCKkOVj6PZa6NiTmfvGilDdf6vO1rFCD3KDnkHko8dTOtkpk4cSR/VTAhhLMG9aiQ7/A9HYgEDNmxzf6hxzR3g==} engines: {node: '>=18'} + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4555,6 +7045,10 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + package-manager-detector@1.3.0: resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} @@ -4567,6 +7061,13 @@ packages: pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + parse-asn1@5.1.7: resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} engines: {node: '>= 0.10'} @@ -4574,6 +7075,10 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse-json@8.3.0: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} @@ -4582,6 +7087,12 @@ packages: resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} engines: {node: '>=6'} + parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -4589,6 +7100,9 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -4596,10 +7110,20 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + 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'} @@ -4607,6 +7131,16 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -4653,6 +7187,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -4675,12 +7213,155 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@7.0.1: + resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-calc@9.0.1: + resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.2.2 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@7.0.12: + resolution: {integrity: sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-hex-alpha@10.0.0: + resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@10.0.0: + resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-colormin@6.1.0: + resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@6.1.0: + resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-properties@14.0.6: + resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-selectors@8.0.5: + resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-dir-pseudo-class@9.0.1: + resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-discard-comments@6.0.2: + resolution: {integrity: sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + postcss-discard-duplicates@5.1.0: resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 + postcss-discard-duplicates@6.0.3: + resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@6.0.3: + resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@6.0.2: + resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-unused@6.0.5: + resolution: {integrity: sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-double-position-gradients@6.0.4: + resolution: {integrity: sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-visible@10.0.1: + resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@9.0.1: + resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@6.0.0: + resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-image-set-function@7.0.0: + resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-lab-function@7.0.12: + resolution: {integrity: sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-load-config@4.0.2: resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -4693,6 +7374,61 @@ packages: ts-node: optional: true + postcss-loader@7.3.4: + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-logical@8.1.0: + resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-merge-idents@6.0.3: + resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-longhand@6.0.5: + resolution: {integrity: sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@6.1.1: + resolution: {integrity: sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@6.1.0: + resolution: {integrity: sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@6.0.3: + resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@6.1.0: + resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@6.0.4: + resolution: {integrity: sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} @@ -4722,13 +7458,171 @@ packages: peerDependencies: postcss: ^8.0.0 + postcss-nesting@13.0.2: + resolution: {integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-normalize-charset@6.0.2: + resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@6.0.2: + resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@6.0.2: + resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@6.0.2: + resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@6.0.2: + resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@6.0.2: + resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@6.1.0: + resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@6.0.2: + resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@6.0.2: + resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-opacity-percentage@3.0.0: + resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-ordered-values@6.0.2: + resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-overflow-shorthand@6.0.0: + resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@10.0.0: + resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-preset-env@10.4.0: + resolution: {integrity: sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-pseudo-class-any-link@10.0.1: + resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-reduce-idents@6.0.3: + resolution: {integrity: sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@6.1.0: + resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@6.0.2: + resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-selector-not@8.0.1: + resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + postcss-selector-parser@7.1.0: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} + postcss-sort-media-queries@5.2.0: + resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.4.23 + + postcss-svgo@6.0.3: + resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} + engines: {node: ^14 || ^16 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@6.0.4: + resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss-zindex@6.0.2: + resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} @@ -4752,6 +7646,9 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -4760,6 +7657,15 @@ packages: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} + pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + + prism-react-renderer@2.4.1: + resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} + peerDependencies: + react: '>=16.0.0' + prisma@6.16.2: resolution: {integrity: sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==} engines: {node: '>=18.18'} @@ -4770,6 +7676,10 @@ packages: typescript: optional: true + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4789,6 +7699,10 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -4798,6 +7712,9 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -4818,6 +7735,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pupa@3.3.0: + resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} + engines: {node: '>=12.20'} + pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} @@ -4839,6 +7760,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'} + quick-lru@6.1.2: resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} engines: {node: '>=12'} @@ -4852,6 +7777,10 @@ packages: randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -4896,6 +7825,9 @@ packages: peerDependencies: react: ^18.3.1 + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + react-frame-component@5.2.7: resolution: {integrity: sha512-ROjHtSLoSVYUBfTieazj/nL8jIX9rZFmHC0yXEU+dx6Y82OcBEGgU9o7VyHMrBFUN9FuQ849MtIPNNLsb4krbg==} peerDependencies: @@ -4909,6 +7841,19 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-json-view-lite@2.5.0: + resolution: {integrity: sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==} + engines: {node: '>=18'} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + + react-loadable-ssr-addon-v5-slorber@1.0.1: + resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + engines: {node: '>=10.13.0'} + peerDependencies: + react-loadable: '*' + webpack: '>=4.41.1 || 5.x' + react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} peerDependencies: @@ -4949,6 +7894,17 @@ packages: react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-router-config@5.1.1: + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + + react-router-dom@5.3.4: + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + react-router-dom@6.30.0: resolution: {integrity: sha512-x30B78HV5tFk8ex0ITwzC9TTZMua4jGyA9IUlH1JLQYQTFyxr/ZxwOJq7evg1JX1qGVUcvhsmQSKdPncQrjTgA==} engines: {node: '>=14.0.0'} @@ -4956,6 +7912,11 @@ packages: react: '>=16.8' react-dom: '>=16.8' + react-router@5.3.4: + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + react-router@6.30.0: resolution: {integrity: sha512-D3X8FyH9nBcTSHGdEKurK7r8OYE1kKFn3d/CF+CoxbSHkxU7o37+Uh7eAHRXr6k2tSExXYO++07PeXJtA/dEhQ==} engines: {node: '>=14.0.0'} @@ -4997,6 +7958,20 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -5004,6 +7979,13 @@ packages: redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -5016,15 +7998,51 @@ packages: regex@6.0.1: resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + rehype-sanitize@6.0.0: resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remark-directive@3.0.1: + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} + + remark-emoji@4.0.1: + resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} + remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -5035,6 +8053,9 @@ packages: remark-mdx@2.3.0: resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + remark-parse@10.0.2: resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} @@ -5086,20 +8107,53 @@ packages: react-router: optional: true + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + 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'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -5108,6 +8162,10 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -5127,6 +8185,15 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + rtlcss@4.3.0: + resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} + engines: {node: '>=12.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5268,6 +8335,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -5275,6 +8345,35 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + schema-dts@1.1.5: + resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5288,6 +8387,16 @@ packages: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -5305,6 +8414,9 @@ packages: setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5312,6 +8424,13 @@ packages: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5362,16 +8481,50 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + sort-css-media-queries@2.2.0: + resolution: {integrity: sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==} + engines: {node: '>= 6.3.0'} + sort-keys@5.1.0: resolution: {integrity: sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==} engines: {node: '>=12'} @@ -5406,6 +8559,20 @@ packages: spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + ssri@10.0.6: resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5420,6 +8587,10 @@ packages: resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==} engines: {node: '>=0.1.14'} + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -5453,6 +8624,10 @@ packages: stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5461,6 +8636,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -5477,6 +8656,10 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} @@ -5493,6 +8676,12 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + stylehacks@6.1.1: + resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} + engines: {node: ^14 || ^16 || >=18.0} + peerDependencies: + postcss: ^8.4.31 + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5501,10 +8690,22 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + svg-pathdata@6.0.3: resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} engines: {node: '>=12.0.0'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + swr@2.3.3: resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} peerDependencies: @@ -5524,6 +8725,10 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} @@ -5535,12 +8740,39 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + engines: {node: '>=10'} + hasBin: true + text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + throttleit@2.1.0: resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} engines: {node: '>=18'} @@ -5548,6 +8780,15 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -5607,6 +8848,12 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -5644,6 +8891,18 @@ packages: turbo-stream@2.4.1: resolution: {integrity: sha512-v8kOJXpG3WoTN/+at8vK7erSzo6nW6CIaeOvNOkHQVDajfz1ZVeSxCbc6tOH4hrGZW7VUCV0TOXd8CPzYnYkrw==} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} @@ -5652,6 +8911,9 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript@5.9.2: resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} @@ -5674,6 +8936,26 @@ packages: resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} engines: {node: '>=18.17'} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -5688,6 +8970,10 @@ packages: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + unist-util-generated@2.0.1: resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} @@ -5700,6 +8986,9 @@ packages: unist-util-position-from-estree@1.1.2: resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + unist-util-position@4.0.4: resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} @@ -5760,6 +9049,23 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-loader@4.1.1: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -5791,6 +9097,13 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -5798,6 +9111,10 @@ packages: utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -5818,6 +9135,9 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -5929,6 +9249,13 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -5946,6 +9273,69 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@5.2.2: + resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + engines: {node: '>= 18.12.0'} + hasBin: true + peerDependencies: + webpack: ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + + webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + + webpack-merge@6.0.1: + resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} + engines: {node: '>=18.0.0'} + + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + + webpack@5.101.3: + resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpackbar@6.0.1: + resolution: {integrity: sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + webpack: 3 || 4 || 5 + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -5980,6 +9370,13 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + winston-daily-rotate-file@5.0.0: resolution: {integrity: sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==} engines: {node: '>=8'} @@ -6009,6 +9406,9 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -6033,6 +9433,18 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -6082,6 +9494,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + zod-validation-error@3.5.3: resolution: {integrity: sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw==} engines: {node: '>=18.0.0'} @@ -6313,6 +9729,114 @@ snapshots: optionalDependencies: zod: 4.1.11 + '@algolia/abtesting@1.4.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0)': + dependencies: + '@algolia/client-search': 5.38.0 + algoliasearch: 5.38.0 + + '@algolia/client-abtesting@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/client-analytics@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/client-common@5.38.0': {} + + '@algolia/client-insights@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/client-personalization@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/client-query-suggestions@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/client-search@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/events@4.0.1': {} + + '@algolia/ingestion@1.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/monitoring@1.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/recommend@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + '@algolia/requester-browser-xhr@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + + '@algolia/requester-fetch@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + + '@algolia/requester-node-http@5.38.0': + dependencies: + '@algolia/client-common': 5.38.0 + '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.3.0 @@ -6359,6 +9883,8 @@ snapshots: '@babel/compat-data@7.27.2': {} + '@babel/compat-data@7.28.4': {} + '@babel/core@7.28.4': dependencies: '@babel/code-frame': 7.27.1 @@ -6399,6 +9925,10 @@ snapshots: dependencies: '@babel/types': 7.27.1 + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.4 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 @@ -6420,6 +9950,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.1 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} '@babel/helper-member-expression-to-functions@7.27.1': @@ -6460,6 +10021,15 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6482,6 +10052,14 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.28.3': + dependencies: + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 @@ -6499,11 +10077,65 @@ snapshots: dependencies: '@babel/types': 7.28.4 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6514,6 +10146,172 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6522,6 +10320,121 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6532,6 +10445,79 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6543,6 +10529,124 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.4 + esutils: 2.0.3 + + '@babel/preset-react@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -6554,6 +10658,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/runtime-corejs3@7.28.4': + dependencies: + core-js-pure: 3.45.1 + '@babel/runtime@7.27.1': {} '@babel/template@7.27.2': @@ -6647,17 +10755,32 @@ snapshots: '@bufbuild/protobuf@2.9.0': {} + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers@5.0.2': optional: true + '@csstools/color-helpers@5.1.0': {} + '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 optional: true + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/color-helpers': 5.0.2 @@ -6666,20 +10789,1066 @@ snapshots: '@csstools/css-tokenizer': 3.0.3 optional: true + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': dependencies: '@csstools/css-tokenizer': 3.0.3 optional: true + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer@3.0.3': optional: true + '@csstools/css-tokenizer@3.0.4': {} + + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/postcss-alpha-function@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-function@4.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-mix-function@3.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.2(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-content-alt-text@2.0.8(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-contrast-color-function@2.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-gradients-interpolation-method@5.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-hwb-function@4.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-ic-unit@4.0.4(postcss@8.5.6)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-initial@2.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.6)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@4.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-random-function@2.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-relative-color-syntax@3.0.12(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)': + dependencies: + '@csstools/color-helpers': 5.1.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@csstools/utilities@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + '@dabh/diagnostics@2.0.3': dependencies: colorspace: 1.1.4 enabled: 2.0.0 kuler: 2.0.0 + '@discoveryjs/json-ext@0.5.7': {} + + '@docsearch/css@4.1.0': {} + + '@docsearch/react@4.1.0(@algolia/client-search@5.38.0)(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + dependencies: + '@ai-sdk/react': 2.0.49(react@18.3.1)(zod@4.1.11) + '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.38.0)(algoliasearch@5.38.0)(search-insights@2.17.3) + '@docsearch/css': 4.1.0 + ai: 5.0.49(zod@4.1.11) + algoliasearch: 5.38.0 + marked: 16.3.0 + zod: 4.1.11 + optionalDependencies: + '@types/react': 18.3.24 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + + '@docusaurus/babel@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/runtime': 7.27.1 + '@babel/runtime-corejs3': 7.28.4 + '@babel/traverse': 7.28.4 + '@docusaurus/logger': 3.9.0 + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-plugin-dynamic-import-node: 2.3.3 + fs-extra: 11.3.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/bundler@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@babel/core': 7.28.4 + '@docusaurus/babel': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/cssnano-preset': 3.9.0 + '@docusaurus/logger': 3.9.0 + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.101.3(esbuild@0.17.6)) + clean-css: 5.3.3 + copy-webpack-plugin: 11.0.0(webpack@5.101.3(esbuild@0.17.6)) + css-loader: 6.11.0(webpack@5.101.3(esbuild@0.17.6)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.17.6)(webpack@5.101.3(esbuild@0.17.6)) + cssnano: 6.1.2(postcss@8.5.6) + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.17.6)) + html-minifier-terser: 7.2.0 + mini-css-extract-plugin: 2.9.4(webpack@5.101.3(esbuild@0.17.6)) + null-loader: 4.0.1(webpack@5.101.3(esbuild@0.17.6)) + postcss: 8.5.6 + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(esbuild@0.17.6)) + postcss-preset-env: 10.4.0(postcss@8.5.6) + terser-webpack-plugin: 5.3.14(esbuild@0.17.6)(webpack@5.101.3(esbuild@0.17.6)) + tslib: 2.8.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.17.6)))(webpack@5.101.3(esbuild@0.17.6)) + webpack: 5.101.3(esbuild@0.17.6) + webpackbar: 6.0.1(webpack@5.101.3(esbuild@0.17.6)) + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - csso + - esbuild + - lightningcss + - react + - react-dom + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/core@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/babel': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/bundler': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@18.3.24)(react@18.3.1) + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cli-table3: 0.6.5 + combine-promises: 1.2.0 + commander: 5.1.0 + core-js: 3.42.0 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + eval: 0.1.8 + execa: 5.1.1 + fs-extra: 11.3.2 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.4(webpack@5.101.3(esbuild@0.17.6)) + leven: 3.1.0 + lodash: 4.17.21 + open: 8.4.2 + p-map: 4.0.0 + prompts: 2.4.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.101.3(esbuild@0.17.6)) + react-router: 5.3.4(react@18.3.1) + react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + semver: 7.7.2 + serve-handler: 6.1.6 + tinypool: 1.1.1 + tslib: 2.8.1 + update-notifier: 6.0.2 + webpack: 5.101.3(esbuild@0.17.6) + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 5.2.2(webpack@5.101.3(esbuild@0.17.6)) + webpack-merge: 6.0.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/cssnano-preset@3.9.0': + dependencies: + cssnano-preset-advanced: 6.1.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-sort-media-queries: 5.2.0(postcss@8.5.6) + tslib: 2.8.1 + + '@docusaurus/logger@3.9.0': + dependencies: + chalk: 4.1.2 + tslib: 2.8.1 + + '@docusaurus/mdx-loader@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/logger': 3.9.0 + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/mdx': 3.1.1 + '@slorber/remark-comment': 1.0.0 + escape-html: 1.0.3 + estree-util-value-to-estree: 3.4.0 + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.17.6)) + fs-extra: 11.3.2 + image-size: 2.0.2 + mdast-util-mdx: 3.0.0 + mdast-util-to-string: 4.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + rehype-raw: 7.0.0 + remark-directive: 3.0.1 + remark-emoji: 4.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.1 + stringify-object: 3.3.0 + tslib: 2.8.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.17.6)))(webpack@5.101.3(esbuild@0.17.6)) + vfile: 6.0.3 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/module-type-aliases@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/history': 4.7.11 + '@types/react': 18.3.24 + '@types/react-router-config': 5.0.11 + '@types/react-router-dom': 5.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/plugin-content-blog@3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 11.3.2 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + schema-dts: 1.1.5 + srcset: 4.0.0 + tslib: 2.8.1 + unist-util-visit: 5.0.0 + utility-types: 3.11.0 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.3.2 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + schema-dts: 1.1.5 + tslib: 2.8.1 + utility-types: 3.11.0 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-content-pages@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fs-extra: 11.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-css-cascade-layers@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - react + - react-dom + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-debug@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fs-extra: 11.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-json-view-lite: 2.5.0(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-google-analytics@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-google-gtag@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/gtag.js': 0.0.12 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-google-tag-manager@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-sitemap@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fs-extra: 11.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sitemap: 7.1.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-svgr@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@svgr/core': 8.1.0(typescript@5.9.2) + '@svgr/webpack': 8.1.0(typescript@5.9.2) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/preset-classic@3.9.0(@algolia/client-search@5.38.0)(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-blog': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-css-cascade-layers': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-debug': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-analytics': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-gtag': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-tag-manager': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-sitemap': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-svgr': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-classic': 3.9.0(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-search-algolia': 3.9.0(@algolia/client-search@5.38.0)(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/react-loadable@6.0.0(react@18.3.1)': + dependencies: + '@types/react': 18.3.24 + react: 18.3.1 + + '@docusaurus/theme-classic@3.9.0(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + dependencies: + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.9.0 + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@18.3.24)(react@18.3.1) + clsx: 2.1.1 + infima: 0.2.0-alpha.45 + lodash: 4.17.21 + nprogress: 0.2.0 + postcss: 8.5.6 + prism-react-renderer: 2.4.1(react@18.3.1) + prismjs: 1.30.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + rtlcss: 4.3.0 + tslib: 2.8.1 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@docusaurus/faster' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/theme-common@3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/mdx-loader': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/history': 4.7.11 + '@types/react': 18.3.24 + '@types/react-router-config': 5.0.11 + clsx: 2.1.1 + parse-numeric-range: 1.3.0 + prism-react-renderer: 2.4.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/theme-search-algolia@3.9.0(@algolia/client-search@5.38.0)(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + dependencies: + '@docsearch/react': 4.1.0(@algolia/client-search@5.38.0)(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + '@docusaurus/core': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/logger': 3.9.0 + '@docusaurus/plugin-content-docs': 3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.9.0(@docusaurus/plugin-content-docs@3.9.0(@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.9.0 + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + algoliasearch: 5.38.0 + algoliasearch-helper: 3.26.0(algoliasearch@5.38.0) + clsx: 2.1.1 + eta: 2.2.0 + fs-extra: 11.3.2 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + utility-types: 3.11.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/theme-translations@3.9.0': + dependencies: + fs-extra: 11.3.2 + tslib: 2.8.1 + + '@docusaurus/types@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@mdx-js/mdx': 3.1.1 + '@types/history': 4.7.11 + '@types/mdast': 4.0.4 + '@types/react': 18.3.24 + commander: 5.1.0 + joi: 17.13.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' + utility-types: 3.11.0 + webpack: 5.101.3(esbuild@0.17.6) + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-common@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils-validation@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/logger': 3.9.0 + '@docusaurus/utils': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + fs-extra: 11.3.2 + joi: 17.13.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + + '@docusaurus/utils@3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@docusaurus/logger': 3.9.0 + '@docusaurus/types': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.9.0(esbuild@0.17.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + escape-string-regexp: 4.0.0 + execa: 5.1.1 + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.17.6)) + fs-extra: 11.3.2 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + jiti: 1.21.7 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.8 + p-queue: 6.6.2 + prompts: 2.4.2 + resolve-pathname: 3.0.0 + tslib: 2.8.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.17.6)))(webpack@5.101.3(esbuild@0.17.6)) + utility-types: 3.11.0 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - react + - react-dom + - supports-color + - uglify-js + - webpack-cli + '@emotion/hash@0.9.2': {} '@epic-web/invariant@1.0.0': {} @@ -6867,6 +12036,12 @@ snapshots: '@floating-ui/utils@0.2.10': {} + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + '@headlessui/react@2.2.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -6923,6 +12098,19 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.21 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -6943,6 +12131,11 @@ snapshots: '@jridgewell/set-array@1.2.1': {} + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -6957,10 +12150,47 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.14.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + '@jspm/core@2.1.0': {} '@kurkle/color@0.3.4': {} + '@leichtgewicht/ip-codec@2.0.5': {} + '@logto/client@3.1.4': dependencies: '@logto/js': 6.1.0 @@ -7006,6 +12236,42 @@ snapshots: transitivePeerDependencies: - supports-color + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.14.1 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.14.1) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.1.1(@types/react@18.3.24)(react@18.3.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.24 + react: 18.3.1 + '@nanostores/react@1.0.0(nanostores@1.0.1)(react@18.3.1)': dependencies: nanostores: 1.0.1 @@ -7207,6 +12473,18 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + '@polka/url@1.0.0-next.29': {} '@prisma/adapter-better-sqlite3@6.16.2': @@ -7756,7 +13034,7 @@ snapshots: dependencies: react: 18.3.1 - '@remix-run/dev@2.17.1(@remix-run/react@2.17.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@remix-run/serve@2.17.1(typescript@5.9.2))(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1))': + '@remix-run/dev@2.17.1(@remix-run/react@2.17.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@remix-run/serve@2.17.1(typescript@5.9.2))(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0))': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -7773,7 +13051,7 @@ snapshots: '@remix-run/router': 1.23.0 '@remix-run/server-runtime': 2.17.1(typescript@5.9.2) '@types/mdx': 2.0.13 - '@vanilla-extract/integration': 6.5.0(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + '@vanilla-extract/integration': 6.5.0(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) arg: 5.0.2 cacache: 17.1.4 chalk: 4.1.2 @@ -7813,12 +13091,12 @@ snapshots: tar-fs: 2.1.4 tsconfig-paths: 4.2.0 valibot: 0.41.0(typescript@5.9.2) - vite-node: 3.1.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite-node: 3.1.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) ws: 7.5.10 optionalDependencies: '@remix-run/serve': 2.17.1(typescript@5.9.2) typescript: 5.9.2 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -8023,8 +13301,22 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + '@silverhand/essentials@2.9.2': {} + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/is@5.6.0': {} + '@sindresorhus/slugify@2.2.1': dependencies: '@sindresorhus/transliterate': 1.6.0 @@ -8034,6 +13326,22 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 + '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.1 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + + '@slorber/remark-comment@1.0.0': + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + '@smithy/eventstream-codec@4.0.4': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -8079,10 +13387,107 @@ snapshots: '@standard-schema/spec@1.0.0': {} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + + '@svgr/babel-preset@8.1.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.4) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.4) + + '@svgr/core@8.1.0(typescript@5.9.2)': + dependencies: + '@babel/core': 7.28.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.4) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.9.2) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.28.4 + entities: 4.5.0 + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.9.2))': + dependencies: + '@babel/core': 7.28.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.4) + '@svgr/core': 8.1.0(typescript@5.9.2) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.9.2))(typescript@5.9.2)': + dependencies: + '@svgr/core': 8.1.0(typescript@5.9.2) + cosmiconfig: 8.3.6(typescript@5.9.2) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + + '@svgr/webpack@8.1.0(typescript@5.9.2)': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.4) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@svgr/core': 8.1.0(typescript@5.9.2) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2))(typescript@5.9.2) + transitivePeerDependencies: + - supports-color + - typescript + '@swc/helpers@0.5.17': dependencies: tslib: 2.8.1 + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + '@tanstack/react-virtual@3.13.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/virtual-core': 3.13.9 @@ -8131,6 +13536,8 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@trysound/sax@0.2.0': {} + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.7 @@ -8163,6 +13570,10 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 22.15.21 + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 22.15.21 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -8172,6 +13583,11 @@ snapshots: '@types/express': 5.0.3 '@types/node': 22.15.21 + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.0.6 + '@types/node': 22.15.21 + '@types/connect@3.4.38': dependencies: '@types/node': 22.15.21 @@ -8184,6 +13600,16 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.7 @@ -8192,6 +13618,13 @@ snapshots: '@types/estree@1.0.8': {} + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 22.15.21 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + '@types/express-serve-static-core@5.0.6': dependencies: '@types/node': 22.15.21 @@ -8199,12 +13632,21 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + '@types/express@4.17.23': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.7 + '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 5.0.6 '@types/serve-static': 1.15.7 + '@types/gtag.js@0.0.12': {} + '@types/hast@2.3.10': dependencies: '@types/unist': 2.0.11 @@ -8213,16 +13655,38 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/history@4.7.11': {} + '@types/hoist-non-react-statics@3.3.6': dependencies: '@types/react': 18.3.24 hoist-non-react-statics: 3.3.2 optional: true + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-cache-semantics@4.0.4': {} + '@types/http-errors@2.0.4': {} + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 22.15.21 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/js-cookie@3.0.6': {} + '@types/json-schema@7.0.15': {} + '@types/lodash@4.17.20': {} '@types/mdast@3.0.15': @@ -8239,6 +13703,12 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 22.15.21 + + '@types/node@17.0.45': {} + '@types/node@22.15.21': dependencies: undici-types: 6.21.0 @@ -8247,6 +13717,8 @@ snapshots: '@types/path-browserify@1.0.3': {} + '@types/prismjs@1.26.5': {} + '@types/prop-types@15.7.15': {} '@types/qs@6.14.0': {} @@ -8260,22 +13732,53 @@ snapshots: dependencies: '@types/react': 18.3.24 + '@types/react-router-config@5.0.11': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.3.24 + '@types/react-router': 5.1.20 + + '@types/react-router-dom@5.3.3': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.3.24 + '@types/react-router': 5.1.20 + + '@types/react-router@5.1.20': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.3.24 + '@types/react@18.3.24': dependencies: '@types/prop-types': 15.7.15 csstype: 3.1.3 + '@types/retry@0.12.2': {} + + '@types/sax@1.2.7': + dependencies: + '@types/node': 22.15.21 + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 '@types/node': 22.15.21 + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 5.0.3 + '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 '@types/node': 22.15.21 '@types/send': 0.17.4 + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 22.15.21 + '@types/triple-beam@1.3.5': {} '@types/trusted-types@2.0.7': @@ -8285,15 +13788,25 @@ snapshots: '@types/unist@3.0.3': {} + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.15.21 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + '@ungap/structured-clone@1.3.0': {} - '@unocss/astro@66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1))': + '@unocss/astro@66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0))': dependencies: '@unocss/core': 66.5.2 '@unocss/reset': 66.5.2 - '@unocss/vite': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + '@unocss/vite': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) optionalDependencies: - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) '@unocss/cli@66.5.2': dependencies: @@ -8423,7 +13936,7 @@ snapshots: dependencies: '@unocss/core': 66.5.2 - '@unocss/vite@66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1))': + '@unocss/vite@66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0))': dependencies: '@jridgewell/remapping': 2.3.5 '@unocss/config': 66.5.2 @@ -8434,7 +13947,7 @@ snapshots: pathe: 2.0.3 tinyglobby: 0.2.15 unplugin-utils: 0.3.0 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) '@vanilla-extract/babel-plugin-debug-ids@1.2.0': dependencies: @@ -8459,7 +13972,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/integration@6.5.0(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)': + '@vanilla-extract/integration@6.5.0(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)': dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) @@ -8472,8 +13985,8 @@ snapshots: lodash: 4.17.21 mlly: 1.7.4 outdent: 0.8.0 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) - vite-node: 1.6.1(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) + vite-node: 1.6.1(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -8488,7 +14001,7 @@ snapshots: '@vanilla-extract/private@1.0.7': {} - '@vitejs/plugin-react@5.0.3(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1))': + '@vitejs/plugin-react@5.0.3(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -8496,7 +14009,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.35 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - supports-color @@ -8508,13 +14021,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1))': + '@vitest/mocker@3.2.4(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -8544,6 +14057,86 @@ snapshots: '@web3-storage/multipart-parser@1.0.0': {} + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + '@zxing/text-encoding@0.9.0': optional: true @@ -8556,12 +14149,24 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-import-phases@1.0.4(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + acorn@8.14.1: {} + acorn@8.15.0: {} + + address@1.2.2: {} + agent-base@7.1.3: optional: true @@ -8578,6 +14183,65 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 4.1.11 + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + algoliasearch-helper@3.26.0(algoliasearch@5.38.0): + dependencies: + '@algolia/events': 4.0.1 + algoliasearch: 5.38.0 + + algoliasearch@5.38.0: + dependencies: + '@algolia/abtesting': 1.4.0 + '@algolia/client-abtesting': 5.38.0 + '@algolia/client-analytics': 5.38.0 + '@algolia/client-common': 5.38.0 + '@algolia/client-insights': 5.38.0 + '@algolia/client-personalization': 5.38.0 + '@algolia/client-query-suggestions': 5.38.0 + '@algolia/client-search': 5.38.0 + '@algolia/ingestion': 1.38.0 + '@algolia/monitoring': 1.38.0 + '@algolia/recommend': 5.38.0 + '@algolia/requester-browser-xhr': 5.38.0 + '@algolia/requester-fetch': 5.38.0 + '@algolia/requester-node-http': 5.38.0 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -8597,6 +14261,10 @@ snapshots: arg@5.0.2: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-hidden@1.2.6: @@ -8611,6 +14279,8 @@ snapshots: array-flatten@1.1.1: {} + array-union@2.1.0: {} + asn1.js@4.10.1: dependencies: bn.js: 4.12.2 @@ -8623,12 +14293,57 @@ snapshots: async@3.2.6: {} + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.26.2 + caniuse-lite: 1.0.30001718 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 aws4fetch@1.0.20: {} + babel-loader@9.2.1(@babel/core@7.28.4)(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@babel/core': 7.28.4 + find-cache-dir: 4.0.0 + schema-utils: 4.3.2 + webpack: 5.101.3(esbuild@0.17.6) + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -8638,10 +14353,14 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.8.7: {} + basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 + batch@0.6.1: {} + before-after-hook@4.0.0: {} better-sqlite3@11.10.0: @@ -8649,6 +14368,8 @@ snapshots: bindings: 1.5.0 prebuild-install: 7.1.3 + big.js@5.2.2: {} + binary-extensions@2.3.0: {} bindings@1.5.0: @@ -8682,6 +14403,40 @@ snapshots: transitivePeerDependencies: - supports-color + bonjour-service@1.3.0: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + boxen@6.2.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -8744,6 +14499,14 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) + browserslist@4.26.2: + dependencies: + baseline-browser-mapping: 2.8.7 + caniuse-lite: 1.0.30001745 + electron-to-chromium: 1.5.224 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) + buffer-builder@0.2.0: {} buffer-from@1.1.2: {} @@ -8755,6 +14518,12 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + bytes@3.0.0: {} + bytes@3.1.2: {} c12@3.1.0: @@ -8789,6 +14558,18 @@ snapshots: tar: 6.2.1 unique-filename: 3.0.0 + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.1.0 + responselike: 3.0.0 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -8806,6 +14587,13 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + camelcase-keys@9.1.3: dependencies: camelcase: 8.0.0 @@ -8815,10 +14603,23 @@ snapshots: camelcase@5.3.1: {} + camelcase@6.3.0: {} + + camelcase@7.0.1: {} + camelcase@8.0.0: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001718: {} + caniuse-lite@1.0.30001745: {} + canvg@3.0.11: dependencies: '@babel/runtime': 7.27.1 @@ -8848,6 +14649,8 @@ snapshots: chalk@5.6.2: {} + char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -8862,6 +14665,25 @@ snapshots: check-error@2.1.1: {} + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.0.0-rc.12: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + htmlparser2: 8.0.2 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -8882,6 +14704,10 @@ snapshots: chownr@2.0.0: {} + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + cipher-base@1.0.6: dependencies: inherits: 2.0.4 @@ -8897,14 +14723,26 @@ snapshots: classnames@2.5.1: {} + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + clean-stack@2.2.0: {} + cli-boxes@3.0.0: {} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cliui@6.0.0: dependencies: string-width: 4.2.3 @@ -8917,10 +14755,18 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + clone@1.0.4: {} clsx@2.1.1: {} + collapse-white-space@2.1.0: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -8943,6 +14789,8 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 + colord@2.9.3: {} + colorette@2.0.20: {} colorjs.io@0.5.2: {} @@ -8952,8 +14800,22 @@ snapshots: color: 3.2.1 text-hex: 1.0.0 + combine-promises@1.2.0: {} + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + + commander@2.20.3: {} + + commander@5.1.0: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + common-path-prefix@3.0.0: {} + compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -8970,6 +14832,8 @@ snapshots: transitivePeerDependencies: - supports-color + concat-map@0.0.1: {} + concurrently@9.2.1: dependencies: chalk: 4.1.2 @@ -8983,8 +14847,25 @@ snapshots: confbox@0.2.2: {} + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@6.0.0: + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + + connect-history-api-fallback@2.0.0: {} + consola@3.4.2: {} + content-disposition@0.5.2: {} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -9001,8 +14882,23 @@ snapshots: cookie@0.7.2: {} - core-js@3.42.0: - optional: true + copy-webpack-plugin@11.0.0(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + fast-glob: 3.3.3 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + webpack: 5.101.3(esbuild@0.17.6) + + core-js-compat@3.45.1: + dependencies: + browserslist: 4.26.2 + + core-js-pure@3.45.1: {} + + core-js@3.42.0: {} core-util-is@1.0.3: {} @@ -9011,6 +14907,15 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@8.3.6(typescript@5.9.2): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.9.2 + create-ecdh@4.0.4: dependencies: bn.js: 4.12.2 @@ -9059,11 +14964,87 @@ snapshots: randombytes: 2.1.0 randomfill: 1.0.4 + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + + css-blank-pseudo@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + css-declaration-sorter@7.3.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + css-has-pseudo@7.0.3(postcss@8.5.6): + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + css-line-break@2.1.0: dependencies: utrie: 1.0.2 optional: true + css-loader@6.11.0(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + semver: 7.7.2 + optionalDependencies: + webpack: 5.101.3(esbuild@0.17.6) + + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.17.6)(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + cssnano: 6.1.2(postcss@8.5.6) + jest-worker: 29.7.0 + postcss: 8.5.6 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + webpack: 5.101.3(esbuild@0.17.6) + optionalDependencies: + clean-css: 5.3.3 + esbuild: 0.17.6 + + css-prefers-color-scheme@10.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + css-tree@3.1.0: dependencies: mdn-data: 2.12.2 @@ -9073,8 +15054,69 @@ snapshots: css.escape@1.5.1: {} + cssdb@8.4.2: {} + cssesc@3.0.0: {} + cssnano-preset-advanced@6.1.2(postcss@8.5.6): + dependencies: + autoprefixer: 10.4.21(postcss@8.5.6) + browserslist: 4.24.5 + cssnano-preset-default: 6.1.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-discard-unused: 6.0.5(postcss@8.5.6) + postcss-merge-idents: 6.0.3(postcss@8.5.6) + postcss-reduce-idents: 6.0.3(postcss@8.5.6) + postcss-zindex: 6.0.2(postcss@8.5.6) + + cssnano-preset-default@6.1.2(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + css-declaration-sorter: 7.3.0(postcss@8.5.6) + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 9.0.1(postcss@8.5.6) + postcss-colormin: 6.1.0(postcss@8.5.6) + postcss-convert-values: 6.1.0(postcss@8.5.6) + postcss-discard-comments: 6.0.2(postcss@8.5.6) + postcss-discard-duplicates: 6.0.3(postcss@8.5.6) + postcss-discard-empty: 6.0.3(postcss@8.5.6) + postcss-discard-overridden: 6.0.2(postcss@8.5.6) + postcss-merge-longhand: 6.0.5(postcss@8.5.6) + postcss-merge-rules: 6.1.1(postcss@8.5.6) + postcss-minify-font-values: 6.1.0(postcss@8.5.6) + postcss-minify-gradients: 6.0.3(postcss@8.5.6) + postcss-minify-params: 6.1.0(postcss@8.5.6) + postcss-minify-selectors: 6.0.4(postcss@8.5.6) + postcss-normalize-charset: 6.0.2(postcss@8.5.6) + postcss-normalize-display-values: 6.0.2(postcss@8.5.6) + postcss-normalize-positions: 6.0.2(postcss@8.5.6) + postcss-normalize-repeat-style: 6.0.2(postcss@8.5.6) + postcss-normalize-string: 6.0.2(postcss@8.5.6) + postcss-normalize-timing-functions: 6.0.2(postcss@8.5.6) + postcss-normalize-unicode: 6.1.0(postcss@8.5.6) + postcss-normalize-url: 6.0.2(postcss@8.5.6) + postcss-normalize-whitespace: 6.0.2(postcss@8.5.6) + postcss-ordered-values: 6.0.2(postcss@8.5.6) + postcss-reduce-initial: 6.1.0(postcss@8.5.6) + postcss-reduce-transforms: 6.0.2(postcss@8.5.6) + postcss-svgo: 6.0.3(postcss@8.5.6) + postcss-unique-selectors: 6.0.4(postcss@8.5.6) + + cssnano-utils@4.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + cssnano@6.1.2(postcss@8.5.6): + dependencies: + cssnano-preset-default: 6.1.2(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssstyle@4.3.1: dependencies: '@asamuzakjp/css-color': 3.2.0 @@ -9095,6 +15137,8 @@ snapshots: date-fns@4.1.0: {} + debounce@1.2.1: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -9130,20 +15174,41 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + 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 es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + defu@6.1.4: {} delay@6.0.0: {} + depd@1.1.2: {} + depd@2.0.0: {} dequal@2.0.3: {} @@ -9164,6 +15229,15 @@ snapshots: detect-node-es@1.1.0: {} + detect-node@2.1.0: {} + + detect-port@1.6.1: + dependencies: + address: 1.2.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -9180,21 +15254,76 @@ snapshots: dijkstrajs@1.0.3: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + dnd-core@16.0.1: dependencies: '@react-dnd/asap': 5.0.2 '@react-dnd/invariant': 4.0.2 redux: 4.2.1 + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + dompurify@3.2.7: optionalDependencies: '@types/trusted-types': 2.0.7 optional: true + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@6.0.1: + dependencies: + is-obj: 2.0.0 + dotenv@16.6.1: {} dotenv@17.2.2: {} @@ -9225,6 +15354,8 @@ snapshots: electron-to-chromium@1.5.155: {} + electron-to-chromium@1.5.224: {} + elliptic@6.6.1: dependencies: bn.js: 4.12.2 @@ -9241,6 +15372,12 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + + emojis-list@3.0.0: {} + + emoticon@4.1.0: {} + empathic@2.0.0: {} enabled@2.0.0: {} @@ -9255,10 +15392,23 @@ snapshots: dependencies: once: 1.4.0 + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + + entities@2.2.0: {} + + entities@4.5.0: {} + entities@6.0.0: {} err-code@2.0.3: {} + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -9269,6 +15419,20 @@ snapshots: dependencies: es-errors: 1.3.0 + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.14.1 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.2 + esbuild-plugins-node-modules-polyfill@1.7.0(esbuild@0.17.6): dependencies: '@jspm/core': 2.1.0 @@ -9329,45 +15493,101 @@ snapshots: escalade@3.2.0: {} + escape-goat@4.0.0: {} + escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esprima@4.0.1: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + estree-util-attach-comments@2.1.1: dependencies: '@types/estree': 1.0.7 + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx@2.2.2: dependencies: '@types/estree-jsx': 1.0.5 estree-util-is-identifier-name: 2.1.0 estree-walker: 3.0.3 + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + estree-util-is-identifier-name@1.1.0: {} estree-util-is-identifier-name@2.1.0: {} estree-util-is-identifier-name@3.0.0: {} + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-to-js@1.2.0: dependencies: '@types/estree-jsx': 1.0.5 astring: 1.9.0 source-map: 0.7.4 + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + estree-util-value-to-estree@1.3.0: dependencies: is-plain-obj: 3.0.0 + estree-util-value-to-estree@3.4.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-visit@1.2.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/unist': 2.0.11 + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.7 + esutils@2.0.3: {} + + eta@2.2.0: {} + etag@1.8.1: {} eval@0.1.8: @@ -9377,6 +15597,10 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} + + events@3.3.0: {} + eventsource-parser@3.0.6: {} evp_bytestokey@1.0.3: @@ -9447,6 +15671,10 @@ snapshots: exsolve@1.0.7: {} + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} fast-check@3.23.2: @@ -9465,12 +15693,16 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + fast-png@6.4.0: dependencies: '@types/pako': 2.0.4 iobuffer: 5.4.0 pako: 2.1.0 + fast-uri@3.1.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -9479,12 +15711,20 @@ snapshots: dependencies: format: 0.2.2 + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 fecha@4.2.3: {} + feed@4.2.2: + dependencies: + xml-js: 1.6.11 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -9492,6 +15732,16 @@ snapshots: fflate@0.8.2: {} + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-loader@6.2.0(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.101.3(esbuild@0.17.6) + file-stream-rotator@0.6.1: dependencies: moment: 2.30.1 @@ -9523,6 +15773,11 @@ snapshots: transitivePeerDependencies: - supports-color + find-cache-dir@4.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -9533,8 +15788,17 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + flat@5.0.2: {} + fn.name@1.1.0: {} + follow-redirects@1.15.11: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -9544,6 +15808,8 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data-encoder@2.1.4: {} + format@0.2.2: {} formdata-polyfill@4.0.10: @@ -9552,6 +15818,8 @@ snapshots: forwarded@0.2.0: {} + fraction.js@4.3.7: {} + framer-motion@12.23.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: motion-dom: 12.23.19 @@ -9571,6 +15839,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@11.3.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -9607,6 +15881,8 @@ snapshots: get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} + get-port@5.1.1: {} get-proto@1.0.1: @@ -9627,10 +15903,22 @@ snapshots: github-from-package@0.0.0: {} + github-slugger@1.5.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regex.js@1.0.1(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + glob-to-regexp@0.4.1: {} + glob@10.4.5: dependencies: foreground-child: 3.3.1 @@ -9640,16 +15928,60 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + globals@11.12.0: {} globals@15.15.0: {} + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + globrex@0.1.2: {} gopd@1.2.0: {} + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.10: {} + graceful-fs@4.2.11: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + gunzip-maybe@1.4.2: dependencies: browserify-zlib: 0.1.4 @@ -9663,6 +15995,8 @@ snapshots: dependencies: duplexer: 0.1.2 + handle-thing@2.0.1: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -9675,6 +16009,8 @@ snapshots: dependencies: has-symbols: 1.1.0 + has-yarn@3.0.0: {} + hash-base@3.0.5: dependencies: inherits: 2.0.4 @@ -9746,6 +16082,27 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.16 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -9804,6 +16161,17 @@ snapshots: property-information: 7.1.0 space-separated-tokens: 2.0.2 + he@1.2.0: {} + + history@4.10.1: + dependencies: + '@babel/runtime': 7.27.1 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 @@ -9820,21 +16188,87 @@ snapshots: dependencies: lru-cache: 7.18.3 + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 optional: true + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.44.0 + + html-minifier-terser@7.2.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 10.0.1 + entities: 4.5.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.44.0 + + html-tags@3.3.1: {} + html-url-attributes@3.0.1: {} html-void-elements@3.0.0: {} + html-webpack-plugin@5.6.4(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.3 + optionalDependencies: + webpack: 5.101.3(esbuild@0.17.6) + html2canvas@1.4.1: dependencies: css-line-break: 2.1.0 text-segmentation: 1.0.3 optional: true + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-cache-semantics@4.2.0: {} + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -9843,6 +16277,8 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-parser-js@0.5.10: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -9851,6 +16287,31 @@ snapshots: - supports-color optional: true + http-proxy-middleware@2.0.9(@types/express@4.17.23): + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.23 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.11 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 @@ -9863,6 +16324,8 @@ snapshots: husky@9.1.7: {} + hyperdyperid@1.2.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -9876,32 +16339,59 @@ snapshots: dependencies: postcss: 8.5.3 + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + ieee754@1.2.1: {} + ignore@5.3.2: {} + + image-size@2.0.2: {} + immediate@3.0.6: {} immutable@5.1.2: {} + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@4.0.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} index-to-position@1.1.0: {} + infima@0.2.0-alpha.45: {} + + inherits@2.0.3: {} + inherits@2.0.4: {} ini@1.3.8: {} + ini@2.0.0: {} + inline-style-parser@0.1.1: {} inline-style-parser@0.2.4: {} + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + iobuffer@5.4.0: {} ip-address@10.0.1: {} ipaddr.js@1.9.1: {} + ipaddr.js@2.2.0: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -9914,6 +16404,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} is-binary-path@2.1.0: @@ -9924,6 +16416,10 @@ snapshots: is-callable@1.2.7: {} + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -9932,6 +16428,12 @@ snapshots: is-deflate@1.0.0: {} + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -9951,16 +16453,39 @@ snapshots: is-hexadecimal@2.0.1: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + is-interactive@1.0.0: {} + is-network-error@1.3.0: {} + + is-npm@6.1.0: {} + is-number@7.0.0: {} + is-obj@1.0.1: {} + + is-obj@2.0.0: {} + is-obj@3.0.0: {} + is-path-inside@3.0.3: {} + is-plain-obj@3.0.0: {} is-plain-obj@4.1.0: {} + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + is-potential-custom-element-name@1.0.1: optional: true @@ -9975,20 +16500,38 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + is-regexp@1.0.0: {} + is-stream@2.0.1: {} is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 + is-typedarray@1.0.0: {} + is-unicode-supported@0.1.0: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is-yarn-global@0.4.1: {} + + isarray@0.0.1: {} + isarray@1.0.0: {} isbot@5.1.30: {} isexe@2.0.0: {} + isobject@3.0.1: {} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -9997,10 +16540,42 @@ snapshots: javascript-stringify@2.1.0: {} + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.15.21 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.15.21 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.7: {} + jiti@2.4.2: {} jiti@2.6.0: {} + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + jose@5.10.0: {} js-base64@3.7.7: {} @@ -10015,6 +16590,11 @@ snapshots: js-tokens@9.0.1: {} + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -10049,8 +16629,18 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + json-parse-even-better-errors@3.0.2: {} + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + json-schema@0.4.0: {} json5@2.2.3: {} @@ -10081,6 +16671,14 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + kleur@4.1.5: {} kolorist@1.8.0: {} @@ -10089,12 +16687,33 @@ snapshots: ky@1.8.1: {} + latest-version@7.0.0: + dependencies: + package-json: 8.1.1 + + launch-editor@2.11.1: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.3 + + leven@3.1.0: {} + lie@3.3.0: dependencies: immediate: 3.0.6 lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + + loader-runner@4.3.0: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + loader-utils@3.3.1: {} local-pkg@1.1.1: @@ -10111,10 +16730,18 @@ snapshots: dependencies: p-locate: 5.0.0 + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + lodash.camelcase@4.3.0: {} lodash.debounce@4.0.8: {} + lodash.memoize@4.1.2: {} + + lodash.uniq@4.5.0: {} + lodash@4.17.21: {} log-symbols@4.1.0: @@ -10141,6 +16768,12 @@ snapshots: loupe@3.2.1: {} + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lowercase-keys@3.0.0: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -10163,8 +16796,16 @@ snapshots: markdown-extensions@1.1.1: {} + markdown-extensions@2.0.0: {} + + markdown-table@2.0.0: + dependencies: + repeat-string: 1.6.1 + markdown-table@3.0.4: {} + marked@16.3.0: {} + math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -10179,6 +16820,20 @@ snapshots: '@types/unist': 2.0.11 unist-util-visit: 4.1.2 + mdast-util-directive@3.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -10226,6 +16881,17 @@ snapshots: mdast-util-to-markdown: 1.5.0 micromark-extension-frontmatter: 1.1.1 + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-gfm-autolink-literal@2.0.1: dependencies: '@types/mdast': 4.0.4 @@ -10348,6 +17014,16 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + mdast-util-mdxjs-esm@1.3.1: dependencies: '@types/estree-jsx': 1.0.5 @@ -10433,6 +17109,10 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + mdn-data@2.12.2: {} media-query-parser@2.0.2: @@ -10441,6 +17121,15 @@ snapshots: media-typer@0.3.0: {} + memfs@4.46.1: + dependencies: + '@jsonjoy.com/json-pack': 1.14.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.0.1(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -10487,6 +17176,16 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 + micromark-extension-directive@3.0.2: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 + micromark-extension-frontmatter@1.1.1: dependencies: fault: 2.0.1 @@ -10494,6 +17193,13 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: micromark-util-character: 2.1.1 @@ -10563,6 +17269,17 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-mdx-jsx@1.0.5: dependencies: '@types/acorn': 4.0.6 @@ -10576,10 +17293,27 @@ snapshots: uvu: 0.5.6 vfile-message: 3.1.4 + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.2 + micromark-extension-mdx-md@1.0.1: dependencies: micromark-util-types: 1.1.0 + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + micromark-extension-mdxjs-esm@1.0.5: dependencies: '@types/estree': 1.0.7 @@ -10592,6 +17326,18 @@ snapshots: uvu: 0.5.6 vfile-message: 3.1.4 + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + micromark-extension-mdxjs@1.0.1: dependencies: acorn: 8.14.1 @@ -10603,6 +17349,17 @@ snapshots: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + micromark-factory-destination@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -10640,6 +17397,18 @@ snapshots: uvu: 0.5.6 vfile-message: 3.1.4 + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + micromark-factory-space@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -10755,6 +17524,16 @@ snapshots: uvu: 0.5.6 vfile-message: 3.1.4 + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.2 + micromark-util-html-tag-name@1.2.0: {} micromark-util-html-tag-name@2.0.1: {} @@ -10863,26 +17642,48 @@ snapshots: bn.js: 4.12.2 brorand: 1.1.0 + mime-db@1.33.0: {} + mime-db@1.52.0: {} mime-db@1.54.0: {} + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mimic-fn@2.1.0: {} mimic-response@3.1.0: {} + mimic-response@4.0.0: {} + min-indent@1.0.1: {} + mini-css-extract-plugin@2.9.4(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + schema-utils: 4.3.2 + tapable: 2.2.3 + webpack: 5.101.3(esbuild@0.17.6) + minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -10955,6 +17756,11 @@ snapshots: ms@2.1.3: {} + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + nanoid@3.3.11: {} nanostores@1.0.1: {} @@ -10965,6 +17771,13 @@ snapshots: negotiator@0.6.4: {} + neo-async@2.6.2: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + node-abi@3.77.0: dependencies: semver: 7.7.2 @@ -10974,6 +17787,13 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-native@1.6.6: {} node-fetch@3.3.2: @@ -10982,8 +17802,12 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + node-forge@1.3.1: {} + node-releases@2.0.19: {} + node-releases@2.0.21: {} + normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.3 @@ -10993,6 +17817,10 @@ snapshots: normalize-path@3.0.0: {} + normalize-range@0.1.2: {} + + normalize-url@8.1.0: {} + npm-install-checks@6.3.0: dependencies: semver: 7.7.2 @@ -11017,6 +17845,18 @@ snapshots: dependencies: path-key: 3.1.1 + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + null-loader@4.0.1(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.101.3(esbuild@0.17.6) + nwsapi@2.2.20: optional: true @@ -11034,6 +17874,19 @@ snapshots: object-inspect@1.13.4: {} + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + obuf@1.1.2: {} + ofetch@1.4.1: dependencies: destr: 2.0.5 @@ -11078,6 +17931,19 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 + open@10.2.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + openai-zod-to-json-schema@1.0.3(zod@4.1.11): dependencies: zod: 4.1.11 @@ -11094,6 +17960,8 @@ snapshots: dependencies: yaml: 2.8.0 + opener@1.5.2: {} + ora@5.4.1: dependencies: bl: 4.1.0 @@ -11108,6 +17976,10 @@ snapshots: outdent@0.8.0: {} + p-cancelable@3.0.0: {} + + p-finally@1.0.0: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -11116,6 +17988,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -11124,16 +18000,42 @@ snapshots: dependencies: p-limit: 3.1.0 + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@6.2.1: + dependencies: + '@types/retry': 0.12.2 + is-network-error: 1.3.0 + retry: 0.13.1 + p-throttle@6.2.0: {} + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + p-try@2.2.0: {} package-json-from-dist@1.0.1: {} + package-json@8.1.1: + dependencies: + got: 12.6.1 + registry-auth-token: 5.1.0 + registry-url: 6.0.1 + semver: 7.7.2 + package-manager-detector@1.3.0: {} pako@0.2.9: {} @@ -11142,6 +18044,15 @@ snapshots: pako@2.1.0: {} + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + parse-asn1@5.1.7: dependencies: asn1.js: 4.10.1 @@ -11161,6 +18072,13 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse-json@8.3.0: dependencies: '@babel/code-frame': 7.27.1 @@ -11169,18 +18087,36 @@ snapshots: parse-ms@2.1.0: {} + parse-numeric-range@1.3.0: {} + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + parse5@7.3.0: dependencies: entities: 6.0.0 parseurl@1.3.3: {} + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + path-browserify@1.0.1: {} path-exists@4.0.0: {} + path-exists@5.0.0: {} + + path-is-inside@1.0.2: {} + path-key@3.1.1: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -11188,6 +18124,14 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + + path-to-regexp@3.3.0: {} + + path-type@4.0.0: {} + pathe@1.1.2: {} pathe@2.0.3: {} @@ -11229,6 +18173,10 @@ snapshots: pidtree@0.6.0: {} + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -11253,10 +18201,152 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-calc@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-clamp@4.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@7.0.12(postcss@8.5.6): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-color-hex-alpha@10.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@10.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-colormin@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-convert-values@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-media@11.0.6(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + postcss-custom-properties@14.0.6(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@8.0.5(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-discard-comments@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-discard-duplicates@5.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 + postcss-discard-duplicates@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-empty@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-overridden@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-unused@6.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-double-position-gradients@6.0.4(postcss@8.5.6): + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-focus-visible@10.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-focus-within@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-font-variant@5.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-gap-properties@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-image-set-function@7.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-lab-function@7.0.12(postcss@8.5.6): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 @@ -11264,10 +18354,73 @@ snapshots: optionalDependencies: postcss: 8.5.3 + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + cosmiconfig: 8.3.6(typescript@5.9.2) + jiti: 1.21.7 + postcss: 8.5.6 + semver: 7.7.2 + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - typescript + + postcss-logical@8.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-merge-idents@6.0.3(postcss@8.5.6): + dependencies: + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-merge-longhand@6.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + stylehacks: 6.1.1(postcss@8.5.6) + + postcss-merge-rules@6.1.1(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@6.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@6.0.3(postcss@8.5.6): + dependencies: + colord: 2.9.3 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-params@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@6.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): dependencies: postcss: 8.5.3 + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): dependencies: icss-utils: 5.1.0(postcss@8.5.3) @@ -11275,16 +18428,33 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + postcss-modules-scope@3.2.1(postcss@8.5.3): dependencies: postcss: 8.5.3 postcss-selector-parser: 7.1.0 + postcss-modules-scope@3.2.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-modules-values@4.0.0(postcss@8.5.3): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 + postcss-modules-values@4.0.0(postcss@8.5.6): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules@6.0.1(postcss@8.5.3): dependencies: generic-names: 4.0.0 @@ -11297,13 +18467,215 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.3) string-hash: 1.1.3 + postcss-nesting@13.0.2(postcss@8.5.6): + dependencies: + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-normalize-charset@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-normalize-display-values@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-opacity-percentage@3.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-ordered-values@6.0.2(postcss@8.5.6): + dependencies: + cssnano-utils: 4.0.2(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-overflow-shorthand@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-place@10.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-preset-env@10.4.0(postcss@8.5.6): + dependencies: + '@csstools/postcss-alpha-function': 1.0.1(postcss@8.5.6) + '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.6) + '@csstools/postcss-color-function': 4.0.12(postcss@8.5.6) + '@csstools/postcss-color-function-display-p3-linear': 1.0.1(postcss@8.5.6) + '@csstools/postcss-color-mix-function': 3.0.12(postcss@8.5.6) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.2(postcss@8.5.6) + '@csstools/postcss-content-alt-text': 2.0.8(postcss@8.5.6) + '@csstools/postcss-contrast-color-function': 2.0.12(postcss@8.5.6) + '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.6) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.6) + '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.6) + '@csstools/postcss-gradients-interpolation-method': 5.0.12(postcss@8.5.6) + '@csstools/postcss-hwb-function': 4.0.12(postcss@8.5.6) + '@csstools/postcss-ic-unit': 4.0.4(postcss@8.5.6) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.6) + '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.6) + '@csstools/postcss-light-dark-function': 2.0.11(postcss@8.5.6) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.6) + '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.6) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.6) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6) + '@csstools/postcss-oklab-function': 4.0.12(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/postcss-random-function': 2.0.1(postcss@8.5.6) + '@csstools/postcss-relative-color-syntax': 3.0.12(postcss@8.5.6) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6) + '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.6) + '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.6) + '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.6) + '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) + autoprefixer: 10.4.21(postcss@8.5.6) + browserslist: 4.26.2 + css-blank-pseudo: 7.0.1(postcss@8.5.6) + css-has-pseudo: 7.0.3(postcss@8.5.6) + css-prefers-color-scheme: 10.0.0(postcss@8.5.6) + cssdb: 8.4.2 + postcss: 8.5.6 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) + postcss-clamp: 4.1.0(postcss@8.5.6) + postcss-color-functional-notation: 7.0.12(postcss@8.5.6) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) + postcss-custom-media: 11.0.6(postcss@8.5.6) + postcss-custom-properties: 14.0.6(postcss@8.5.6) + postcss-custom-selectors: 8.0.5(postcss@8.5.6) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) + postcss-double-position-gradients: 6.0.4(postcss@8.5.6) + postcss-focus-visible: 10.0.1(postcss@8.5.6) + postcss-focus-within: 9.0.1(postcss@8.5.6) + postcss-font-variant: 5.0.0(postcss@8.5.6) + postcss-gap-properties: 6.0.0(postcss@8.5.6) + postcss-image-set-function: 7.0.0(postcss@8.5.6) + postcss-lab-function: 7.0.12(postcss@8.5.6) + postcss-logical: 8.1.0(postcss@8.5.6) + postcss-nesting: 13.0.2(postcss@8.5.6) + postcss-opacity-percentage: 3.0.0(postcss@8.5.6) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.6) + postcss-page-break: 3.0.4(postcss@8.5.6) + postcss-place: 10.0.0(postcss@8.5.6) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) + postcss-selector-not: 8.0.1(postcss@8.5.6) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-reduce-idents@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@6.1.0(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + postcss: 8.5.6 + + postcss-reduce-transforms@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-selector-not@8.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-sort-media-queries@5.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + sort-css-media-queries: 2.2.0 + + postcss-svgo@6.0.3(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@6.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser@4.2.0: {} + postcss-zindex@6.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss@8.5.3: dependencies: nanoid: 3.3.11 @@ -11335,6 +18707,11 @@ snapshots: prettier@3.6.2: {} + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -11345,6 +18722,14 @@ snapshots: dependencies: parse-ms: 2.1.0 + pretty-time@1.1.0: {} + + prism-react-renderer@2.4.1(react@18.3.1): + dependencies: + '@types/prismjs': 1.26.5 + clsx: 2.1.1 + react: 18.3.1 + prisma@6.16.2(typescript@5.9.2): dependencies: '@prisma/config': 6.16.2 @@ -11354,6 +18739,8 @@ snapshots: transitivePeerDependencies: - magicast + prismjs@1.30.0: {} + proc-log@3.0.0: {} process-nextick-args@2.0.1: {} @@ -11365,6 +18752,11 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -11375,6 +18767,8 @@ snapshots: property-information@7.1.0: {} + proto-list@1.2.4: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -11405,8 +18799,11 @@ snapshots: inherits: 2.0.4 pump: 2.0.1 - punycode@2.3.1: - optional: true + punycode@2.3.1: {} + + pupa@3.3.0: + dependencies: + escape-goat: 4.0.0 pure-rand@6.1.0: {} @@ -11427,6 +18824,8 @@ snapshots: queue-microtask@1.2.3: {} + quick-lru@5.1.1: {} + quick-lru@6.1.2: {} raf@3.4.1: @@ -11443,6 +18842,8 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 + range-parser@1.2.0: {} + range-parser@1.2.1: {} raw-body@2.5.2: @@ -11492,6 +18893,8 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-fast-compare@3.2.2: {} + react-frame-component@5.2.7(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: prop-types: 15.8.1 @@ -11502,6 +18905,16 @@ snapshots: react-is@17.0.2: {} + react-json-view-lite@2.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@babel/runtime': 7.27.1 + react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' + webpack: 5.101.3(esbuild@0.17.6) + react-markdown@10.1.0(@types/react@18.3.24)(react@18.3.1): dependencies: '@types/hast': 3.0.4 @@ -11548,6 +18961,23 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.1 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) + + react-router-dom@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.1 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-router: 5.3.4(react@18.3.1) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@remix-run/router': 1.23.0 @@ -11555,6 +18985,19 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-router: 6.30.0(react@18.3.1) + react-router@5.3.4(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.1 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.9.0 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + react-router@6.30.0(react@18.3.1): dependencies: '@remix-run/router': 1.23.0 @@ -11599,6 +19042,35 @@ snapshots: readdirp@4.1.2: {} + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -11608,6 +19080,12 @@ snapshots: dependencies: '@babel/runtime': 7.27.1 + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + regenerator-runtime@0.13.11: optional: true @@ -11621,17 +19099,67 @@ snapshots: dependencies: regex-utilities: 2.3.0 + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + registry-auth-token@5.1.0: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + regjsgen@0.8.0: {} + + regjsparser@0.13.0: + dependencies: + jsesc: 3.1.0 + rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 hast-util-raw: 9.1.0 vfile: 6.0.3 + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + rehype-sanitize@6.0.0: dependencies: '@types/hast': 3.0.4 hast-util-sanitize: 5.0.2 + relateurl@0.2.7: {} + + remark-directive@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 3.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-emoji@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + emoticon: 4.1.0 + mdast-util-find-and-replace: 3.0.2 + node-emoji: 2.2.0 + unified: 11.0.5 + remark-frontmatter@4.0.1: dependencies: '@types/mdast': 3.0.15 @@ -11639,6 +19167,15 @@ snapshots: micromark-extension-frontmatter: 1.1.1 unified: 10.1.2 + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -11664,6 +19201,13 @@ snapshots: transitivePeerDependencies: - supports-color + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + remark-parse@10.0.2: dependencies: '@types/mdast': 3.0.15 @@ -11709,14 +19253,44 @@ snapshots: '@standard-schema/spec': 1.0.0 react: 18.3.1 + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + repeat-string@1.6.1: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + require-like@0.1.2: {} require-main-filename@2.0.0: {} + requires-port@1.0.0: {} + + resolve-alpn@1.2.1: {} + + resolve-from@4.0.0: {} + + resolve-pathname@3.0.0: {} + resolve.exports@2.0.3: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -11724,6 +19298,8 @@ snapshots: retry@0.12.0: {} + retry@0.13.1: {} + reusify@1.1.0: {} rgbcolor@1.0.1: @@ -11765,6 +19341,15 @@ snapshots: rrweb-cssom@0.8.0: optional: true + rtlcss@4.3.0: + dependencies: + escalade: 3.2.0 + picocolors: 1.1.1 + postcss: 8.5.6 + strip-json-comments: 3.1.1 + + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -11888,6 +19473,8 @@ snapshots: '@parcel/watcher': 2.5.1 optional: true + sax@1.4.1: {} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -11897,6 +19484,39 @@ snapshots: dependencies: loose-envify: 1.4.0 + schema-dts@1.1.5: {} + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + search-insights@2.17.3: {} + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.3.1 + + semver-diff@4.0.0: + dependencies: + semver: 7.7.2 + semver@6.3.1: {} semver@7.7.2: {} @@ -11919,6 +19539,32 @@ snapshots: transitivePeerDependencies: - supports-color + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-handler@6.1.6: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -11943,6 +19589,8 @@ snapshots: setimmediate@1.0.5: {} + setprototypeof@1.1.0: {} + setprototypeof@1.2.0: {} sha.js@2.4.11: @@ -11950,6 +19598,12 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shallowequal@1.1.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -12015,17 +19669,53 @@ snapshots: dependencies: is-arrayish: 0.3.2 + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 + sisteransi@1.0.5: {} + + sitemap@7.1.2: + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.4.1 + + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + + slash@3.0.0: {} + + slash@4.0.0: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + sort-css-media-queries@2.2.0: {} + sort-keys@5.1.0: dependencies: is-plain-obj: 4.1.0 @@ -12057,6 +19747,31 @@ snapshots: spdx-license-ids@3.0.21: {} + spdy-transport@3.0.0: + dependencies: + debug: 4.4.1 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.4.1 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + sprintf-js@1.0.3: {} + + srcset@4.0.0: {} + ssri@10.0.6: dependencies: minipass: 7.1.2 @@ -12068,6 +19783,8 @@ snapshots: stackblur-canvas@2.7.0: optional: true + statuses@1.5.0: {} + statuses@2.0.1: {} std-env@3.9.0: {} @@ -12103,6 +19820,12 @@ snapshots: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -12111,6 +19834,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom-string@1.0.0: {} + strip-bom@3.0.0: {} strip-final-newline@2.0.0: {} @@ -12121,6 +19846,8 @@ snapshots: strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} + strip-literal@3.0.0: dependencies: js-tokens: 9.0.1 @@ -12141,6 +19868,12 @@ snapshots: dependencies: inline-style-parser: 0.2.4 + stylehacks@6.1.1(postcss@8.5.6): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -12149,9 +19882,23 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + + svg-parser@2.0.4: {} + svg-pathdata@6.0.3: optional: true + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + swr@2.3.3(react@18.3.1): dependencies: dequal: 2.0.3 @@ -12169,6 +19916,8 @@ snapshots: tabbable@6.2.0: {} + tapable@2.2.3: {} + tar-fs@2.1.4: dependencies: chownr: 1.1.4 @@ -12193,6 +19942,24 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + terser-webpack-plugin@5.3.14(esbuild@0.17.6)(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.44.0 + webpack: 5.101.3(esbuild@0.17.6) + optionalDependencies: + esbuild: 0.17.6 + + terser@5.44.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + text-hex@1.0.0: {} text-segmentation@1.0.3: @@ -12200,6 +19967,10 @@ snapshots: utrie: 1.0.2 optional: true + thingies@2.5.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + throttleit@2.1.0: {} through2@2.0.5: @@ -12207,6 +19978,12 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 + thunky@1.1.0: {} + + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -12258,6 +20035,10 @@ snapshots: punycode: 2.3.1 optional: true + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -12284,6 +20065,12 @@ snapshots: turbo-stream@2.4.1: {} + type-fest@0.21.3: {} + + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + type-fest@4.41.0: {} type-is@1.6.18: @@ -12291,6 +20078,10 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + typescript@5.9.2: {} ufo@1.6.1: {} @@ -12308,6 +20099,19 @@ snapshots: undici@6.21.3: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-emoji-modifier-base@1.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.11 @@ -12336,6 +20140,10 @@ snapshots: dependencies: imurmurhash: 0.1.4 + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + unist-util-generated@2.0.1: {} unist-util-is@5.2.1: @@ -12350,6 +20158,10 @@ snapshots: dependencies: '@types/unist': 2.0.11 + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-position@4.0.4: dependencies: '@types/unist': 2.0.11 @@ -12397,9 +20209,9 @@ snapshots: universalify@2.0.1: {} - unocss@66.5.2(postcss@8.5.3)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)): + unocss@66.5.2(postcss@8.5.3)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)): dependencies: - '@unocss/astro': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + '@unocss/astro': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) '@unocss/cli': 66.5.2 '@unocss/core': 66.5.2 '@unocss/postcss': 66.5.2(postcss@8.5.3) @@ -12417,9 +20229,9 @@ snapshots: '@unocss/transformer-compile-class': 66.5.2 '@unocss/transformer-directives': 66.5.2 '@unocss/transformer-variant-group': 66.5.2 - '@unocss/vite': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + '@unocss/vite': 66.5.2(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) optionalDependencies: - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - postcss - supports-color @@ -12437,6 +20249,42 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.3(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@6.0.2: + dependencies: + boxen: 7.1.1 + chalk: 5.6.2 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.1.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.3.0 + semver: 7.7.2 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.17.6)))(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.101.3(esbuild@0.17.6) + optionalDependencies: + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.17.6)) + use-callback-ref@1.3.3(@types/react@18.3.24)(react@18.3.1): dependencies: react: 18.3.1 @@ -12466,6 +20314,10 @@ snapshots: is-typed-array: 1.1.15 which-typed-array: 1.1.19 + utila@0.4.0: {} + + utility-types@3.11.0: {} + utils-merge@1.0.1: {} utrie@1.0.2: @@ -12473,6 +20325,8 @@ snapshots: base64-arraybuffer: 1.0.2 optional: true + uuid@8.3.2: {} + uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -12491,6 +20345,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + value-equal@1.0.1: {} + varint@6.0.0: {} vary@1.1.2: {} @@ -12522,13 +20378,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.6.1(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1): + vite-node@1.6.1(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -12540,13 +20396,13 @@ snapshots: - supports-color - terser - vite-node@3.1.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1): + vite-node@3.1.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -12558,13 +20414,13 @@ snapshots: - supports-color - terser - vite-node@3.2.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1): + vite-node@3.2.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -12576,18 +20432,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.2) optionalDependencies: - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1): + vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -12597,12 +20453,13 @@ snapshots: fsevents: 2.3.3 sass: 1.93.1 sass-embedded: 1.93.1 + terser: 5.44.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.15.21)(jsdom@26.1.0)(sass-embedded@1.93.1)(sass@1.93.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.15.21)(jsdom@26.1.0)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)) + '@vitest/mocker': 3.2.4(vite@5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -12620,8 +20477,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) - vite-node: 3.2.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1) + vite: 5.4.19(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) + vite-node: 3.2.4(@types/node@22.15.21)(sass-embedded@1.93.1)(sass@1.93.1)(terser@5.44.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -12645,6 +20502,15 @@ snapshots: xml-name-validator: 5.0.0 optional: true + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -12662,6 +20528,139 @@ snapshots: webidl-conversions@7.0.0: optional: true + webpack-bundle-analyzer@4.10.2: + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.14.1 + acorn-walk: 8.3.4 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + opener: 1.5.2 + picocolors: 1.1.1 + sirv: 2.0.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + colorette: 2.0.20 + memfs: 4.46.1 + mime-types: 3.0.1 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.2 + optionalDependencies: + webpack: 5.101.3(esbuild@0.17.6) + + webpack-dev-server@5.2.2(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.23 + '@types/express-serve-static-core': 4.19.6 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.23) + ipaddr.js: 2.2.0 + launch-editor: 2.11.1 + open: 10.2.0 + p-retry: 6.2.1 + schema-utils: 4.3.2 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.5(webpack@5.101.3(esbuild@0.17.6)) + ws: 8.18.2 + optionalDependencies: + webpack: 5.101.3(esbuild@0.17.6) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-merge@5.10.0: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-merge@6.0.1: + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + webpack-sources@3.3.3: {} + + webpack@5.101.3(esbuild@0.17.6): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.24.5 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.3 + terser-webpack-plugin: 5.3.14(esbuild@0.17.6)(webpack@5.101.3(esbuild@0.17.6)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpackbar@6.0.1(webpack@5.101.3(esbuild@0.17.6)): + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + consola: 3.4.2 + figures: 3.2.0 + markdown-table: 2.0.0 + pretty-time: 1.1.0 + std-env: 3.9.0 + webpack: 5.101.3(esbuild@0.17.6) + wrap-ansi: 7.0.0 + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -12701,6 +20700,12 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + wildcard@2.0.1: {} + winston-daily-rotate-file@5.0.0(winston@3.17.0): dependencies: file-stream-rotator: 0.6.1 @@ -12749,10 +20754,26 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + ws@7.5.10: {} - ws@8.18.2: - optional: true + ws@8.18.2: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + + xdg-basedir@5.1.0: {} + + xml-js@1.6.11: + dependencies: + sax: 1.4.1 xml-name-validator@5.0.0: optional: true @@ -12805,6 +20826,8 @@ snapshots: yocto-queue@0.1.0: {} + yocto-queue@1.2.1: {} + zod-validation-error@3.5.3(zod@4.1.11): dependencies: zod: 4.1.11 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..4d60b36 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - "." + - "docs" From eb25a56271f3a63a000e9fe83bc9f7079283bdc5 Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 26 Sep 2025 16:47:22 +0800 Subject: [PATCH 4/9] docs: add upage usage instructions document --- docs/src/css/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 09eae3d..e884f5c 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -18,7 +18,7 @@ } /* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme='dark'] { +[data-theme="dark"] { --ifm-color-primary: #7986cb; --ifm-color-primary-dark: #6271c2; --ifm-color-primary-darker: #5767be; From f4d6e383ce87f392927c0734059fd28531aa32bc Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Fri, 26 Sep 2025 18:49:06 +0800 Subject: [PATCH 5/9] docs: add upage usage instructions document --- .env.example | 9 - .../actions/docker-buildx-push/action.yaml | 2 +- app/lib/modules/llm/providers/lmstudio.ts | 2 +- app/lib/modules/llm/providers/ollama.ts | 4 - .../api.system.$action/git-info.server.ts | 2 +- docker-compose-dev.yaml | 2 - docker-compose-prod.yaml | 2 - docs/content/configuration.md | 320 ++++++++++++++---- docs/content/deployment/docker-compose.md | 6 +- docs/content/deployment/logto.md | 5 + docs/content/deployment/source.md | 6 + docs/sidebars.js | 15 +- 12 files changed, 273 insertions(+), 102 deletions(-) diff --git a/.env.example b/.env.example index 29cad77..749c1e0 100644 --- a/.env.example +++ b/.env.example @@ -55,7 +55,6 @@ TOGETHER_API_KEY= #Get your Hyperbolics API Key at https://app.hyperbolic.xyz/settings #baseURL="https://api.hyperbolic.xyz/v1/chat/completions" HYPERBOLIC_API_KEY= -HYPERBOLIC_API_BASE_URL= # Get your Mistral API Key by following these instructions - # https://console.mistral.ai/api-keys/ @@ -99,14 +98,6 @@ USAGE_LOG_FILE=false # Include this environment variable if you want more logging for debugging locally LOG_LEVEL=debug -# Example Context Values for qwen2.5-coder:32b -# -# DEFAULT_NUM_CTX=32768 # Consumes 36GB of VRAM -# DEFAULT_NUM_CTX=24576 # Consumes 32GB of VRAM -# DEFAULT_NUM_CTX=12288 # Consumes 26GB of VRAM -# DEFAULT_NUM_CTX=6144 # Consumes 24GB of VRAM -DEFAULT_NUM_CTX= - # Get your Serper API Key https://serper.dev/ SERPER_API_KEY= diff --git a/.github/actions/docker-buildx-push/action.yaml b/.github/actions/docker-buildx-push/action.yaml index 681afa7..f18731a 100644 --- a/.github/actions/docker-buildx-push/action.yaml +++ b/.github/actions/docker-buildx-push/action.yaml @@ -46,7 +46,7 @@ runs: type=semver,pattern={{ version }} type=sha,enabled=${{ github.event_name == 'push' }} flavor: | - latest=false + latest=${{ github.event_name == 'release' }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx diff --git a/app/lib/modules/llm/providers/lmstudio.ts b/app/lib/modules/llm/providers/lmstudio.ts index cecc10f..312ecbb 100644 --- a/app/lib/modules/llm/providers/lmstudio.ts +++ b/app/lib/modules/llm/providers/lmstudio.ts @@ -13,7 +13,7 @@ export default class LMStudioProvider extends BaseProvider { config = { baseUrlKey: 'LMSTUDIO_API_BASE_URL', - baseUrl: 'http://localhost:1234/', + baseUrl: 'http://127.0.0.1:1234/', }; staticModels: ModelInfo[] = []; diff --git a/app/lib/modules/llm/providers/ollama.ts b/app/lib/modules/llm/providers/ollama.ts index 63888c8..4c33ec7 100644 --- a/app/lib/modules/llm/providers/ollama.ts +++ b/app/lib/modules/llm/providers/ollama.ts @@ -39,10 +39,6 @@ export default class OllamaProvider extends BaseProvider { staticModels: ModelInfo[] = []; - getDefaultNumCtx(): number { - return process.env.DEFAULT_NUM_CTX ? parseInt(process.env.DEFAULT_NUM_CTX, 10) : 32768; - } - async getDynamicModels(apiKeys?: Record, settings?: IProviderSetting): Promise { let { baseUrl } = this.getProviderBaseUrlAndKey({ apiKeys, diff --git a/app/routes/api.system.$action/git-info.server.ts b/app/routes/api.system.$action/git-info.server.ts index f4a70be..6a13fef 100644 --- a/app/routes/api.system.$action/git-info.server.ts +++ b/app/routes/api.system.$action/git-info.server.ts @@ -86,7 +86,7 @@ export const gitInfoLoader: LoaderFunction = async ({ if (action === 'getUser' || action === 'getRepos' || action === 'getOrgs' || action === 'getActivity') { // Use server-side token instead of client-side token - const serverGithubToken = process.env.GITHUB_ACCESS_TOKEN || context.env?.GITHUB_ACCESS_TOKEN; + const serverGithubToken = context.env?.GITHUB_ACCESS_TOKEN; const cookieToken = request.headers .get('Cookie') ?.split(';') diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index dc55e18..b67e78c 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -21,7 +21,6 @@ services: - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} - TOGETHER_API_KEY=${TOGETHER_API_KEY} - HYPERBOLIC_API_KEY=${HYPERBOLIC_API_KEY} - - HYPERBOLIC_API_BASE_URL=${HYPERBOLIC_API_BASE_URL} - MISTRAL_API_KEY=${MISTRAL_API_KEY} - COHERE_API_KEY=${COHERE_API_KEY} - LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} @@ -29,7 +28,6 @@ services: - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} - AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} - LOG_LEVEL=${LOG_LEVEL:-debug} - - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - SERPER_API_KEY=${SERPER_API_KEY} - WEATHER_API_KEY=${WEATHER_API_KEY} - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} diff --git a/docker-compose-prod.yaml b/docker-compose-prod.yaml index 3bcef2c..58a42a5 100644 --- a/docker-compose-prod.yaml +++ b/docker-compose-prod.yaml @@ -21,7 +21,6 @@ services: - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} - TOGETHER_API_KEY=${TOGETHER_API_KEY} - HYPERBOLIC_API_KEY=${HYPERBOLIC_API_KEY} - - HYPERBOLIC_API_BASE_URL=${HYPERBOLIC_API_BASE_URL} - MISTRAL_API_KEY=${MISTRAL_API_KEY} - COHERE_API_KEY=${COHERE_API_KEY} - LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} @@ -29,7 +28,6 @@ services: - PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} - AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} - LOG_LEVEL=${LOG_LEVEL:-debug} - - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - SERPER_API_KEY=${SERPER_API_KEY} - WEATHER_API_KEY=${WEATHER_API_KEY} - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} diff --git a/docs/content/configuration.md b/docs/content/configuration.md index 67abec1..9d65111 100644 --- a/docs/content/configuration.md +++ b/docs/content/configuration.md @@ -27,6 +27,8 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 ## AI 提供商配置 +UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用页面生成功能。 + ### AI 基础配置 | 环境变量 | 描述 | 默认值 | 必填 | @@ -36,6 +38,52 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_MINOR_MODEL` | 辅助页面生成所使用的模型 | - | 是 | | `LLM_ENABLED_PROVIDERS` | 启用的 LLM 提供商列表(逗号分隔) | 所有支持的提供商 | 否 | +### Amazon Bedrock + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Amazon Bedrock 提供商名称 | AmazonBedrock | 是 | +| `AWS_BEDROCK_CONFIG` | Amazon Bedrock 配置 | - | 是(如果使用 Amazon Bedrock) | + +:::info +前往 [Amazon Bedrock](https://console.aws.amazon.com/iam/home) 中获取配置。 +`AWS_BEDROCK_CONFIG` 应为 JSON 格式,例如: +```json +{ + // Bedrock 可用的 AWS 区域 + "region": "us-east-1", + // 你的 AWS 访问密钥 ID + "accessKeyId": "your-access-key-id", + // 你的 AWS 访问密钥令牌 + "secretAccessKey": "your-secret-access-key", + // AWS 会话令牌(可选),如果使用 IAM 角色或临时凭据,则为临时会话令牌 + "sessionToken": "your-session-token" +} +``` +::: + +### Anthropic Claude + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | +| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | + +:::info +前往 [Anthropic](https://console.anthropic.com/settings/keys) 获取 API 密钥。 +::: + +### Cohere + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Cohere 提供商名称 | Cohere | 是 | +| `COHERE_API_KEY` | Cohere API 密钥 | - | 是(如果使用 Cohere) | + +:::info +前往 [Cohere](https://dashboard.cohere.com/api-keys) 获取 API 密钥。 +::: + ### DeepSeek | 环境变量 | 描述 | 默认值 | 必填 | @@ -43,6 +91,117 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_DEFAULT_PROVIDER` | DeepSeek 提供商名称 | Deepseek | 是 | | `DEEPSEEK_API_KEY` | DeepSeek API 密钥 | - | 是(如果使用 DeepSeek) | +:::info +前往 [DeepSeek](https://platform.deepseek.com/api_keys) 获取 API 密钥。 +::: + +### Github + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Github 提供商名称 | Github | 是 | +| `GITHUB_API_KEY` | Github API 密钥 | - | 是(如果使用 Github) | + +:::info +前往 [Github](https://github.com/settings/personal-access-tokens) 获取 API 密钥。 +::: + +### Google + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Google 提供商名称 | Google | 是 | +| `GOOGLE_GENERATIVE_AI_API_KEY` | Google 生成式 AI API 密钥 | - | 是(如果使用 Google) | + +:::info +前往 [Google](https://console.cloud.google.com/apis/credentials) 获取 API 密钥。 +::: + +### Groq + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Groq 提供商名称 | Groq | 是 | +| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | + +:::info +前往 [Groq](https://console.groq.com/keys) 获取 API 密钥。 +::: + +### HuggingFace + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | HuggingFace 提供商名称 | HuggingFace | 是 | +| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | + +:::info +前往 [HuggingFace](https://huggingface.co/settings/tokens) 获取 API 密钥。 +::: + +### Hyperbolic + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Hyperbolic 提供商名称 | Hyperbolic | 是 | +| `HYPERBOLIC_API_KEY` | Hyperbolic API 密钥 | - | 是(如果使用 Hyperbolic) | + +:::info +前往 [Hyperbolic](https://hyperbolic.ai/dashboard/api-keys) 获取 API 密钥。 +::: + +### LMStudio + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | LMStudio 提供商名称 | LMStudio | 是 | +| `LMSTUDIO_API_BASE_URL` | LMStudio API URL | `http://127.0.0.1:1234` | 是(如果使用 LMStudio) | + +:::warning +由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:1234 而应该使用类似于 http://127.0.0.1:1234 的地址 +::: + +### Mistral + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Mistral 提供商名称 | Mistral | 是 | +| `MISTRAL_API_KEY` | Mistral API 密钥 | - | 是(如果使用 Mistral) | + +:::info +前往 [Mistral](https://console.mistral.ai/api-keys/) 获取 API 密钥。 +::: + +### Ollama + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | Ollama 提供商名称 | Ollama | 是 | +| `OLLAMA_API_BASE_URL` | Ollama API URL | `http://127.0.0.1:11434` | 是(如果使用 Ollama) | + +:::warning +由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:11434 而应该使用类似于 http://127.0.0.1:11434 的地址 +::: + +### OpenRouter + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | OpenRouter 提供商名称 | OpenRouter | 是 | +| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | + +:::info +前往 [OpenRouter](https://openrouter.ai/settings/keys) 获取 API 密钥。 +::: + +### 兼容 OpenAI 接口的服务 + +| 环境变量 | 描述 | 默认值 | 必填 | +| --- | --- | --- | --- | +| `LLM_DEFAULT_PROVIDER` | OpenAILike 提供商名称 | OpenAILike | 是 | +| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | +| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | + ### OpenAI | 环境变量 | 描述 | 默认值 | 必填 | @@ -50,60 +209,81 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 | `LLM_DEFAULT_PROVIDER` | OpenAI 提供商名称 | OpenAI | 是 | | `OPENAI_API_KEY` | OpenAI API 密钥 | - | 是(如果使用 OpenAI) | -### Anthropic Claude +:::info +前往 [OpenAI](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) 获取 API 密钥。 +::: + +### Perplexity | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | -| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | -| `ANTHROPIC_API_BASE_URL` | Anthropic API 基础 URL | `https://api.anthropic.com` | 否 | +| `LLM_DEFAULT_PROVIDER` | Perplexity 提供商名称 | Perplexity | 是 | +| `PERPLEXITY_API_KEY` | Perplexity API 密钥 | - | 是(如果使用 Perplexity) | -### 兼容 OpenAI 接口的服务 +:::info +前往 [Perplexity](https://www.perplexity.ai/settings/api) 获取 API 密钥。 +::: + +### Together | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | -| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | -| `OPENAI_LIKE_ORGANIZATION_ID` | 组织 ID | - | 否 | +| `LLM_DEFAULT_PROVIDER` | Together 提供商名称 | Together | 是 | +| `TOGETHER_API_BASE_URL` | Together API 基础 URL | - | 是(如果使用 Together) | +| `TOGETHER_API_KEY` | Together API 密钥 | - | 是(如果使用 Together) | -### Ollama +:::info +前往 [Together](https://api.together.xyz/settings/api-keys) 获取 API 密钥。 +::: + +### xAI | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `OLLAMA_API_BASE_URL` | Ollama API 基础 URL | `http://localhost:11434` | 是(如果使用 Ollama) | +| `LLM_DEFAULT_PROVIDER` | xAI 提供商名称 | xAI | 是 | +| `XAI_API_KEY` | xAI API 密钥 | - | 是(如果使用 xAI) | -### Groq +:::info +前往 [xAI](https://x.ai/api) 获取 API 密钥。 +::: + +## AI 工具配置 + +UPage 支持集成部分 AI 工具调用,用于为 UPage 提供服务,您可以根据需要配置。 + +### Serper(网络搜索工具) + +UPage 集成了 [Serper](https://serper.dev) 的搜索服务,您可以通过配置 `SERPER_API_KEY` 来使用 Serper 的搜索服务。 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | +| `SERPER_API_KEY` | Serper API 密钥 | - | 是(如果使用 Serper) | -### HuggingFace +:::info +前往 [Serper](https://serper.dev/api-keys) 获取 API 密钥。 +::: + +### Weather(天气工具) + +UPage 集成了 [Weather](https://weatherapi.com) 的天气服务,您可以通过配置 `WEATHER_API_KEY` 来使用 Weather 的天气服务。 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | +| `WEATHER_API_KEY` | Weather API 密钥 | - | 是(如果使用 Weather) | -### OpenRouter - -| 环境变量 | 描述 | 默认值 | 必填 | -| --- | --- | --- | --- | -| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | - -### Google Gemini - -| 环境变量 | 描述 | 默认值 | 必填 | -| --- | --- | --- | --- | -| `GOOGLE_API_KEY` | Google API 密钥 | - | 是(如果使用 Google) | -| `GOOGLE_API_BASE_URL` | Google API 基础 URL | `https://generativelanguage.googleapis.com` | 否 | +:::info +前往 [Weather](https://www.weatherapi.com/my/) 获取 API 密钥。 +::: ## 认证配置 ### Logto 认证 +UPage 默认仅支持单一的匿名用户访问,您可以通过集成 Logto 后配置 `LOGTO_ENABLE` 来启用 Logto 认证,支持多用户登录。 + | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `false` | 否 | +| `LOGTO_ENABLE` | 是否启用 Logto 认证 | `false` | 是 | | `LOGTO_ENDPOINT` | Logto 服务的 URL | - | 是(如果使用 Logto) | | `LOGTO_APP_ID` | Logto 应用程序 ID | - | 是(如果使用 Logto) | | `LOGTO_APP_SECRET` | Logto 应用程序密钥 | - | 是(如果使用 Logto) | @@ -116,28 +296,13 @@ Logto 集成请参阅 [Logto 认证集成](./deployment/logto)文档。 ## 配置示例 -### 基本配置示例 - -```bash -# 基础配置 -PORT=3000 -NODE_ENV=production -LOG_LEVEL=info - -# AI 提供商配置 -LLM_DEFAULT_PROVIDER=OpenAI -OPENAI_API_KEY=your-openai-api-key -LLM_DEFAULT_MODEL=gpt-4-turbo -LLM_MINOR_MODEL=gpt-3.5-turbo -``` - -### 完整的 Docker Compose 配置示例 +以下内容以使用 Docker Compose 作为示例,用于展示 UPage 的完整配置。 ```yaml version: "3.9" services: upage: - image: ghcr.io/halo-dev/upage:latest + image: halo-dev/upage:latest container_name: upage restart: unless-stopped ports: @@ -152,11 +317,16 @@ services: - MAX_UPLOAD_SIZE_MB=10 - STORAGE_DIR=/app/storage - # AI 提供商配置 - - LLM_DEFAULT_PROVIDER=OpenAI - - OPENAI_API_KEY=your-openai-api-key - - LLM_DEFAULT_MODEL=gpt-4-turbo - - LLM_MINOR_MODEL=gpt-3.5-turbo + # 使用 DeepSeek 提供商配置 + - LLM_DEFAULT_PROVIDER=DeepSeek + # 这里使用 DEEPSEEK_API_KEY + - DEEPSEEK_API_KEY=your-deepseek-api-key + - LLM_DEFAULT_MODEL=deepseek-chat + - LLM_MINOR_MODEL=deepseek-chat + + # AI 工具配置 + - SERPER_API_KEY=your-serper-api-key + - WEATHER_API_KEY=your-weather-api-key # Logto 认证配置 - LOGTO_ENABLE=true @@ -164,38 +334,40 @@ services: - LOGTO_APP_ID=your-app-id - LOGTO_APP_SECRET=your-app-secret - LOGTO_COOKIE_SECRET=your-cookie-secret - - LOGTO_BASE_URL=https://api.upage.io + - LOGTO_BASE_URL=http://localhost:3000 volumes: - ./data:/app/data - ./logs:/app/logs - ./storage:/app/storage ``` -## 多环境配置 +如果你要切换使用其他 AI 提供商,则只需要修改 `LLM_DEFAULT_PROVIDER` 和相应的 API 密钥、Model 即可,例如: -### 开发环境 +```yaml +version: "3.9" +services: + upage: + image: halo-dev/upage:latest + container_name: upage + restart: unless-stopped + ports: + - "3000:3000" + environment: + # 使用 OpenAI 提供商配置 + - LLM_DEFAULT_PROVIDER=OpenAI + # 这里注意需要改为 OPENAI_API_KEY + - OPENAI_API_KEY=your-openai-api-key + - LLM_DEFAULT_MODEL=gpt-4.1 + - LLM_MINOR_MODEL=gpt-4.1-mini -```bash -NODE_ENV=development -OPERATING_ENV=development -LOG_LEVEL=debug -PORT=3000 -``` + # ...其他配置 + volumes: + - ./data:/app/data + - ./logs:/app/logs + - ./storage:/app/storage +``` -### 测试环境 +## 下一步 -```bash -NODE_ENV=production -OPERATING_ENV=testing -LOG_LEVEL=info -PORT=3000 -``` - -### 生产环境 - -```bash -NODE_ENV=production -OPERATING_ENV=production -LOG_LEVEL=warn -PORT=3000 -``` +- 阅读[用户指南](./user-guide/basics)学习如何使用 UPage 创建网页 +- 阅读[贡献指南](./contributing)了解如何贡献 UPage diff --git a/docs/content/deployment/docker-compose.md b/docs/content/deployment/docker-compose.md index 510c7f9..8893400 100644 --- a/docs/content/deployment/docker-compose.md +++ b/docs/content/deployment/docker-compose.md @@ -139,6 +139,6 @@ docker-compose up -d ## 下一步 -- 阅读[用户指南](user-guide/basics)学习如何使用 UPage 创建网页 -- 探索[配置参考](configuration)了解所有可用的配置选项 -- 探索[Logto 认证集成](logto)了解如何集成 Logto 实现用户认证 +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](./logto)了解如何集成 Logto 实现用户认证 diff --git a/docs/content/deployment/logto.md b/docs/content/deployment/logto.md index 2a5a58f..bd0486e 100644 --- a/docs/content/deployment/logto.md +++ b/docs/content/deployment/logto.md @@ -136,3 +136,8 @@ Logto 支持多种社交登录方式: 1. 在 Logto 管理控制台中,导航到"安全" 2. 启用多因素认证 3. 配置多因素认证方式(如 TOTP、短信等) + +## 下一步 + +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 diff --git a/docs/content/deployment/source.md b/docs/content/deployment/source.md index 7cf6f58..ec49978 100644 --- a/docs/content/deployment/source.md +++ b/docs/content/deployment/source.md @@ -227,3 +227,9 @@ pnpm prisma migrate reset cat logs/combined-*.log cat logs/error-*.log ``` + +## 下一步 + +- 阅读[用户指南](../user-guide/basics)学习如何使用 UPage 创建网页 +- 探索[配置参考](../configuration)了解所有可用的配置选项 +- 探索[Logto 认证集成](./logto)了解如何集成 Logto 实现用户认证 diff --git a/docs/sidebars.js b/docs/sidebars.js index b356b45..92f42e8 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -46,12 +46,22 @@ const sidebars = { { type: 'category', label: '用户指南', + link: { + type: 'generated-index', + title: '用户指南', + slug: 'user-guide', + }, items: [ 'user-guide/basics', 'user-guide/ai-page-generation', 'user-guide/page-management', ], }, + { + type: 'doc', + id: 'contributing', + label: '贡献指南', + }, { type: 'doc', id: 'faq', @@ -62,11 +72,6 @@ const sidebars = { id: 'changelog', label: '更新日志', }, - { - type: 'doc', - id: 'contributing', - label: '贡献指南', - }, ], }; From e6747664c206744a93bcba95353bae64a958f013 Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Sun, 28 Sep 2025 15:26:44 +0800 Subject: [PATCH 6/9] docs: add upage usage instructions document --- .env.example | 38 ++-- .github/workflows/ci.yaml | 2 +- .github/workflows/docs.yaml | 27 ++- app/utils/constants.ts | 5 +- docs/content/changelog.md | 115 ---------- docs/content/contributing.md | 199 ------------------ docs/content/contributing/code-of-conduct.md | 47 +++++ docs/content/contributing/code-standards.md | 156 ++++++++++++++ .../content/contributing/development-setup.md | 161 ++++++++++++++ docs/content/contributing/index.md | 28 +++ .../contributing/ways-to-contribute.md | 91 ++++++++ docs/content/contributing/workflow.md | 143 +++++++++++++ docs/content/deployment/logto.md | 9 + docs/content/faq.md | 82 +++----- docs/content/index.md | 6 +- docs/docusaurus.config.js | 4 +- docs/sidebars.js | 19 +- 17 files changed, 720 insertions(+), 412 deletions(-) delete mode 100644 docs/content/changelog.md delete mode 100644 docs/content/contributing.md create mode 100644 docs/content/contributing/code-of-conduct.md create mode 100644 docs/content/contributing/code-standards.md create mode 100644 docs/content/contributing/development-setup.md create mode 100644 docs/content/contributing/index.md create mode 100644 docs/content/contributing/ways-to-contribute.md create mode 100644 docs/content/contributing/workflow.md diff --git a/.env.example b/.env.example index 749c1e0..25e062f 100644 --- a/.env.example +++ b/.env.example @@ -93,7 +93,7 @@ PERPLEXITY_API_KEY= # {"region": "us-east-1", "accessKeyId": "yourAccessKeyId", "secretAccessKey": "yourSecretAccessKey", "sessionToken": "yourSessionToken"} AWS_BEDROCK_CONFIG= -# 是否开启文件日志 +# Whether to enable file logging USAGE_LOG_FILE=false # Include this environment variable if you want more logging for debugging locally LOG_LEVEL=debug @@ -109,34 +109,34 @@ WEATHER_API_KEY= # Default LLM provider to use (e.g.,OpenAILike,OpenAI, Anthropic, Mistral) LLM_DEFAULT_PROVIDER= -# 生成页面所使用的 MODEL(应该与 LLM_DEFAULT_PROVIDER 相对应) +# The MODEL used to generate the page (should correspond to LLM_DEFAULT_PROVIDER) LLM_DEFAULT_MODEL= -# 用于辅助页面生成所使用的 MODEL,例如总结和预分析。(应该与 LLM_DEFAULT_PROVIDER 相对应) +# Used for the MODEL assisting page generation, such as summary and pre-analysis. (Should correspond to LLM_DEFAULT_PROVIDER.) LLM_MINOR_MODEL= # Comma-separated list of enabled providers (empty means all providers) # Example: OpenAILike,OpenAI,Anthropic,Mistral LLM_ENABLED_PROVIDERS= -# Logto 集成所需环境变量 -# Logto 地址 -LOGTO_ENDPOINT= -# Logto 应用 ID -LOGTO_APP_ID= -# Logto 应用密钥 -LOGTO_APP_SECRET= -# 应用基础 URL,根据实际部署环境修改 -LOGTO_BASE_URL=http://localhost:5173 -# 随机任意的 36 位字符串,用于加密 Logto 的 cookie。 -LOGTO_COOKIE_SECRET= -# 是否在开发环境中启用 Logto 认证,设置为 false 则在开发环境不强制认证 +# Logto integration required environment variables +# Whether to enable Logto authentication LOGTO_ENABLE=false -# 运行环境,与 NODE_ENV 有所不同, NODE_ENV 在打包时就已确定,而此变量用于某些功能在不同环境下的开放 +# Logto Address +LOGTO_ENDPOINT= +# Logto Application ID +LOGTO_APP_ID= +# Logto Application secret +LOGTO_APP_SECRET= +# Application base URL, modify according to the actual deployment environment +LOGTO_BASE_URL=http://localhost:5173 +# A random 36-character string used for encrypting Logto cookies. +LOGTO_COOKIE_SECRET= + +# Runtime environment, which differs from NODE_ENV. NODE_ENV is determined at build time, whereas this variable is used to enable certain features in different environments. # development | production | test OPERATING_ENV=production - -# 资源文件存储位置 +# Resource file storage location STORAGE_DIR=/public/uploads -# 附件上传的最大大小 +# Maximum size for attachment upload MAX_UPLOAD_SIZE_MB=5 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 274f480..def7f83 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,7 +3,7 @@ name: CI/CD on: push: branches: - - master + - main pull_request: jobs: diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index dec4e93..63b1fb3 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -5,32 +5,37 @@ on: branches: - main paths: - - 'docs/**' # This will only trigger the workflow when files in docs directory change + - 'docs/**' permissions: contents: write jobs: build_docs: runs-on: ubuntu-latest - defaults: - run: - working-directory: ./docs steps: - uses: actions/checkout@v4 + - name: Configure Git Credentials run: | git config user.name github-actions[bot] git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-node@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 with: - node-version: 18 - cache: npm - cache-dependency-path: docs/package-lock.json + version: '9.4.0' + run_install: false + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.15.1' + cache: pnpm - name: Install dependencies - run: npm ci + run: pnpm install --filter upage-docs... - - name: Build website - run: npm run build + - name: Build docs website + run: pnpm run docs:build - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 diff --git a/app/utils/constants.ts b/app/utils/constants.ts index c2de829..feb9265 100644 --- a/app/utils/constants.ts +++ b/app/utils/constants.ts @@ -1,15 +1,14 @@ import { LLMManager } from '~/lib/modules/llm/manager'; -export const WORK_DIR_NAME = 'project'; export const MODEL_REGEX = /^\[Model: (.*?)\]\n\n/; export const PROVIDER_REGEX = /\[Provider: (.*?)\]\n\n/; const llmManager = LLMManager.getInstance(); -export const DEFAULT_MODEL = llmManager.getDefaultModel(); -export const MINOR_MODEL = llmManager.getMinorModel(); export const PROVIDER_LIST = llmManager.getAllProviders(); export const DEFAULT_PROVIDER = llmManager.getDefaultProvider(); +export const DEFAULT_MODEL = llmManager.getDefaultModel(); +export const MINOR_MODEL = llmManager.getMinorModel(); export const DEFAULT_MODEL_DETAILS = DEFAULT_PROVIDER.staticModels.find((m) => m.name === DEFAULT_MODEL); export const MINOR_MODEL_DETAILS = DEFAULT_PROVIDER.staticModels.find((m) => m.name === MINOR_MODEL); diff --git a/docs/content/changelog.md b/docs/content/changelog.md deleted file mode 100644 index cd4f5eb..0000000 --- a/docs/content/changelog.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -id: changelog -title: 更新日志 ---- - -# 更新日志 - -本文档记录了 UPage 的版本更新历史,包括新功能、改进和修复的问题。 - -## 1.0.0 (2025-09-15) - -### 🚀 新功能 - -- **AI 页面生成**:基于自然语言描述生成完整网页 -- **多 AI 提供商支持**: - - OpenAI (GPT-3.5/GPT-4) - - Anthropic Claude - - Google Gemini - - 兼容 OpenAI 接口的服务 - - Ollama (本地模型) -- **可视化编辑器**:拖拽式页面编辑器,实时预览 -- **组件库**:丰富的预设组件,包括布局、表单、媒体等 -- **响应式设计**:自动适应不同屏幕尺寸 -- **主题系统**:内置多种主题,支持自定义 -- **页面管理**:创建、编辑、复制、删除页面 -- **版本历史**:自动保存页面版本,支持回滚 -- **导出功能**:导出为 HTML/CSS/JS、ZIP、JSON 或 PDF -- **部署集成**: - - Vercel 部署支持 - - Netlify 部署支持 -- **用户认证**:通过 Logto 实现用户认证和权限管理 -- **Docker 部署**:提供官方 Docker 镜像和 Docker Compose 配置 - -### 🔧 技术栈 - -- **前端**:React、TypeScript、Vite、UnoCSS -- **后端**:Node.js、Express、Remix -- **数据库**:SQLite -- **AI 集成**:AI SDK、各大 AI 提供商 API -- **部署**:Docker、GitHub Actions - -## 0.9.0 (2025-08-20) - -### 🚀 新功能 - -- **Beta 版本发布**:首个公开测试版本 -- **核心功能实现**: - - AI 页面生成 - - 可视化编辑器 - - 页面管理 - - 导出功能 -- **Docker 部署支持**:提供 Docker 镜像和部署指南 -- **文档系统**:基本使用文档和部署指南 - -### 🐛 修复 - -- 修复页面生成时的布局问题 -- 修复组件拖拽在某些浏览器中的兼容性问题 -- 修复导出功能中的资源路径问题 - -## 0.8.0 (2025-07-15) - -### 🚀 新功能 - -- **Alpha 版本**:内部测试版本 -- **概念验证**: - - AI 生成基本页面结构 - - 简单的可视化编辑 - - 基本的导出功能 -- **技术选型确定**: - - 前端框架和库 - - AI 集成方案 - - 部署策略 - -### 📝 计划 - -- 完善 AI 生成功能 -- 增强可视化编辑器 -- 添加更多组件和模板 -- 实现部署集成 -- 准备公开测试版本 - -## 未来计划 - -以下是 UPage 计划在未来版本中实现的功能: - -### 近期计划 (1.x) - -- **协作功能**:多用户同时编辑页面 -- **评论和反馈**:页面内评论和反馈系统 -- **更多组件**:扩展组件库,添加更多高级组件 -- **自定义主题编辑器**:可视化主题编辑工具 -- **更多 AI 提供商支持**:增加对更多 AI 模型的支持 -- **性能优化**:提升页面生成和编辑的性能 -- **移动端编辑器**:支持在移动设备上编辑页面 - -### 中期计划 (2.x) - -- **插件系统**:支持第三方插件扩展功能 -- **高级动画**:更丰富的页面动画效果 -- **数据集成**:与外部数据源集成 -- **多语言支持**:界面和生成内容的多语言支持 -- **AI 辅助编程**:生成自定义组件和交互逻辑 -- **高级分析**:页面性能和访问分析 -- **A/B 测试**:内置 A/B 测试功能 - -### 长期愿景 - -- **完整网站生成**:从描述生成完整多页面网站 -- **智能内容管理**:AI 辅助的内容创建和管理 -- **无代码应用构建**:扩展至应用程序构建 -- **生态系统**:建立开发者和设计师社区 -- **企业级功能**:满足大型组织的需求 - -我们欢迎社区参与和贡献,共同推动 UPage 的发展。如果您有功能建议或发现问题,请在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中提出。 diff --git a/docs/content/contributing.md b/docs/content/contributing.md deleted file mode 100644 index d64aef6..0000000 --- a/docs/content/contributing.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -id: contributing -title: 贡献指南 ---- - -# 贡献指南 - -感谢您对 UPage 项目的关注!我们非常欢迎各种形式的贡献,无论是功能开发、bug 修复、文档改进还是使用反馈。本指南将帮助您了解如何参与 UPage 的开发和贡献。 - -## 行为准则 - -参与 UPage 项目的所有贡献者都应遵循以下行为准则: - -- 尊重所有参与者,无论其背景、经验或观点 -- 接受建设性的批评和反馈 -- 专注于对社区最有利的事情 -- 展现同理心和善意 - -## 贡献方式 - -您可以通过多种方式为 UPage 做出贡献: - -### 报告问题 - -如果您发现了 bug 或有功能建议,请在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中提出。提交问题时,请尽可能提供以下信息: - -- 清晰的问题描述 -- 复现步骤 -- 预期行为与实际行为 -- 截图(如适用) -- 环境信息(浏览器、操作系统、UPage 版本等) - -### 提交代码 - -如果您想直接贡献代码,请遵循以下步骤: - -1. Fork 项目仓库 -2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`) -3. 提交您的更改 (`git commit -m 'Add some amazing feature'`) -4. 推送到分支 (`git push origin feature/amazing-feature`) -5. 创建 Pull Request - -### 改进文档 - -文档对于任何项目都至关重要。您可以通过以下方式改进 UPage 的文档: - -- 修复文档中的错误或不准确之处 -- 添加缺失的信息或示例 -- 改进文档的结构和可读性 -- 翻译文档到其他语言 - -### 分享和推广 - -您也可以通过以下方式支持 UPage: - -- 在社交媒体上分享项目 -- 撰写关于 UPage 的博客文章或教程 -- 在相关论坛和社区中推荐 UPage -- 为项目加星标(Star) - -## 开发环境设置 - -### 前置条件 - -开始开发 UPage 前,请确保您的系统满足以下要求: - -- Node.js 18.18.0 或更高版本 -- pnpm 9.4.0 或更高版本 -- Git - -### 克隆仓库 - -```bash -git clone https://github.com/halo-dev/upage.git -cd upage -``` - -### 安装依赖 - -```bash -pnpm install -``` - -### 启动开发服务器 - -```bash -pnpm dev -``` - -此命令会启动开发服务器,您可以通过 `http://localhost:3000` 访问。 - -### 构建项目 - -```bash -pnpm build -``` - -### 运行测试 - -```bash -pnpm test -``` - -## 代码规范 - -### JavaScript/TypeScript 规范 - -UPage 使用 [Biome](https://biomejs.dev/) 进行代码格式化和 linting。在提交代码前,请确保您的代码符合项目的代码规范: - -```bash -pnpm check -``` - -您也可以使用以下命令自动修复格式问题: - -```bash -pnpm check --write -``` - -### Git 提交规范 - -我们使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范来格式化 Git 提交信息。提交信息应遵循以下格式: - -``` -(): - -[optional body] - -[optional footer(s)] -``` - -常用的 `type` 包括: - -- `feat`: 新功能 -- `fix`: 修复 bug -- `docs`: 文档更新 -- `style`: 代码风格更改(不影响代码功能) -- `refactor`: 代码重构 -- `perf`: 性能优化 -- `test`: 添加或修改测试 -- `chore`: 构建过程或辅助工具的变动 - -例如: - -``` -feat(editor): 添加拖拽调整组件大小功能 - -添加了一个新的拖拽句柄,允许用户直接调整组件的大小。 -同时优化了调整过程中的性能。 - -Closes #123 -``` - -## 分支策略 - -- `main`: 主分支,包含稳定的代码 -- `develop`: 开发分支,包含最新的开发代码 -- `feature/*`: 功能分支,用于开发新功能 -- `fix/*`: 修复分支,用于修复 bug -- `release/*`: 发布分支,用于准备新版本发布 - -请基于 `develop` 分支创建您的功能或修复分支,并在完成后向 `develop` 分支提交 Pull Request。 - -## Pull Request 流程 - -1. 确保您的代码符合项目的代码规范 -2. 更新相关文档(如适用) -3. 添加或更新测试(如适用) -4. 确保所有测试通过 -5. 提交 Pull Request 到 `develop` 分支 -6. 在 PR 描述中详细说明您的更改 - -## 版本发布流程 - -UPage 遵循 [语义化版本控制](https://semver.org/) 规范。版本号格式为 `X.Y.Z`: - -- `X`: 主版本号,当进行不兼容的 API 更改时递增 -- `Y`: 次版本号,当添加向后兼容的功能时递增 -- `Z`: 修订号,当进行向后兼容的 bug 修复时递增 - -## 文档贡献 - -UPage 的文档使用 [Docusaurus](https://docusaurus.io/) 构建。如果您想贡献文档,请遵循以下步骤: - -1. 在 `docs` 目录中找到相关的 Markdown 文件 -2. 进行必要的更改 -3. 在本地预览更改:`pnpm docs:start` -4. 提交 Pull Request - -## 社区 - -加入 UPage 社区,与其他贡献者交流: - -- [GitHub Discussions](https://github.com/halo-dev/upage/discussions) -- [GitHub Issues](https://github.com/halo-dev/upage/issues) - -## 许可证 - -UPage 采用 [MIT 许可证](https://github.com/halo-dev/upage/blob/main/LICENSE)。通过贡献代码,您同意您的贡献将在相同的许可证下发布。 diff --git a/docs/content/contributing/code-of-conduct.md b/docs/content/contributing/code-of-conduct.md new file mode 100644 index 0000000..20126a6 --- /dev/null +++ b/docs/content/contributing/code-of-conduct.md @@ -0,0 +1,47 @@ +--- +id: code-of-conduct +title: 行为准则 +--- + +# 行为准则 + +UPage 项目致力于为所有贡献者和参与者提供一个友好、安全和包容的环境。我们希望每个人都能够在没有骚扰和歧视的情况下参与项目。 + +## 我们的标准 + +参与 UPage 项目的所有贡献者都应遵循以下行为准则: + +- **尊重所有参与者**,无论其背景、经验或观点 +- **接受建设性的批评和反馈**,并以专业和尊重的方式回应 +- **专注于对社区最有利的事情**,考虑项目和用户的长期利益 +- **展现同理心和善意**,理解他人的观点和立场 + +## 不可接受的行为 + +以下行为被视为不可接受: + +- 使用性暗示的语言或图像 +- 人身攻击、侮辱或贬低性评论 +- 公开或私下的骚扰 +- 未经明确许可发布他人的私人信息 +- 任何其他可能被合理认为不适当或冒犯的行为 + +## 责任 + +项目维护者有责任明确行为标准,并对任何不可接受行为采取适当和公正的纠正措施。 + +项目维护者有权和责任删除、编辑或拒绝与本行为准则不符的评论、提交、代码、问题和其他贡献,并在适当时暂时或永久禁止任何贡献者参与项目。 + +## 范围 + +本行为准则适用于所有项目空间,包括但不限于 GitHub 仓库、问题跟踪器、讨论区、社交媒体和公共活动。它也适用于个人在代表项目或其社区时的行为。 + +## 反馈 + +如果您遇到滥用、骚扰或其他不可接受的行为,请通过 [GitHub Issues](https://github.com/halo-dev/upage/issues) 或直接联系项目维护者报告。 + +所有投诉将被审查和调查,并将导致被认为必要和适当的回应。项目维护者有义务对报告事件的人保密。 + +## 参考 + +本行为准则改编自 [Contributor Covenant](https://www.contributor-covenant.org),版本 2.0,可在 [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html) 查阅。 diff --git a/docs/content/contributing/code-standards.md b/docs/content/contributing/code-standards.md new file mode 100644 index 0000000..a77b3d0 --- /dev/null +++ b/docs/content/contributing/code-standards.md @@ -0,0 +1,156 @@ +--- +id: code-standards +title: 代码规范 +--- + +# 代码规范 + +UPage 项目遵循严格的代码规范和最佳实践,以确保代码质量和一致性。本文档概述了这些规范,所有贡献者在提交代码前应确保遵循这些规范。 + +## JavaScript/TypeScript 规范 + +UPage 使用 [Biome](https://biomejs.dev/) 进行代码格式化和 linting。Biome 是一个快速的代码格式化工具和 linter,可以帮助我们保持代码风格的一致性。 + +### 代码检查 + +在提交代码前,请确保您的代码符合项目的代码规范: + +```bash +pnpm check +``` + +### 自动修复 + +您也可以使用以下命令自动修复格式问题: + +```bash +pnpm check --write +``` + +### 主要规范 + +- **缩进**: 使用 2 个空格 +- **分号**: 必须使用分号 +- **引号**: 使用单引号 +- **命名约定**: + - 变量和函数使用 camelCase + - 类和接口使用 PascalCase + - 常量使用 UPPER_SNAKE_CASE +- **类型注解**: 尽可能使用类型注解提高代码可读性和类型安全性 +- **注释**: 对复杂逻辑和公共 API 添加适当的注释 + +## Git 提交规范 + +我们使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范来格式化 Git 提交信息。提交信息应遵循以下格式: + +``` +(): + +[optional body] + +[optional footer(s)] +``` + +### 类型 (Type) + +提交类型必须是以下之一: + +- `feat`: 新功能 +- `fix`: 修复 bug +- `docs`: 文档更新 +- `style`: 代码风格更改(不影响代码功能) +- `refactor`: 代码重构(既不是新功能,也不是修复 bug) +- `perf`: 性能优化 +- `test`: 添加或修改测试 +- `chore`: 构建过程或辅助工具的变动 +- `ci`: CI 配置文件和脚本的更改 +- `revert`: 回滚之前的提交 + +### 范围 (Scope) + +范围是可选的,用于指定更改的范围(例如组件或文件名)。 + +### 描述 (Description) + +描述是对更改的简短摘要: + +- 使用现在时态("change",而不是"changed"或"changes") +- 不要首字母大写 +- 不要以句号结尾 + +### 示例 + +``` +feat(editor): 添加拖拽调整组件大小功能 + +添加了一个新的拖拽句柄,允许用户直接调整组件的大小。 +同时优化了调整过程中的性能。 + +Closes #123 +``` + +``` +fix: 修复用户认证失败问题 + +修复了当用户凭证包含特殊字符时认证失败的问题。 + +Fixes #456 +``` + +## CSS/SCSS 规范 + +UPage 使用 SCSS 和 CSS Modules 来组织样式代码。 + +### 命名约定 + +- 使用 kebab-case 命名 CSS 类和 ID +- 使用有意义的名称,避免过于简短或抽象的名称 +- 使用 BEM(Block Element Modifier)命名方法论 + +### 组织结构 + +- 将全局样式放在 `app/styles` 目录下 +- 将组件特定样式放在组件同级目录下的 `.scss` 或 `.module.scss` 文件中 + +## 可访问性标准 + +UPage 致力于创建可访问的 Web 应用程序。所有贡献的代码应遵循 [WCAG 2.1 AA](https://www.w3.org/WAI/WCAG21/quickref/) 标准。 + +- 确保适当的颜色对比度 +- 提供替代文本和 ARIA 标签 +- 确保键盘导航功能 +- 支持屏幕阅读器 + +## 测试规范 + +所有新功能和 bug 修复应包含适当的测试: + +- **单元测试**: 测试单个函数和组件 +- **集成测试**: 测试多个组件或功能的交互 +- **端到端测试**: 测试完整的用户流程 + +测试应该: + +- 覆盖正常和边缘情况 +- 清晰描述测试的目的 +- 保持独立性,不依赖于其他测试的状态 + +## 性能考虑 + +贡献的代码应考虑性能影响: + +- 避免不必要的重新渲染 +- 优化大型列表和表格 +- 懒加载大型资源 +- 减少网络请求 +- 优化打包大小 + +## 安全最佳实践 + +所有代码应遵循安全最佳实践: + +- 防止 XSS 攻击 +- 避免 SQL 注入 +- 正确处理用户输入 +- 保护敏感数据 +- 实施适当的访问控制 diff --git a/docs/content/contributing/development-setup.md b/docs/content/contributing/development-setup.md new file mode 100644 index 0000000..d8855c6 --- /dev/null +++ b/docs/content/contributing/development-setup.md @@ -0,0 +1,161 @@ +--- +id: development-setup +title: 开发环境设置 +--- + +# 开发环境设置 + +本指南将帮助您设置 UPage 的本地开发环境,以便您可以开始贡献代码。 + +## 前置条件 + +开始开发 UPage 前,请确保您的系统满足以下要求: + +- **Node.js**: 18.18.0 或更高版本 +- **pnpm**: 9.4.0 或更高版本 +- **Git**: 最新版本 + +### 安装 Node.js + +您可以从 [Node.js 官网](https://nodejs.org/) 下载并安装 Node.js,或使用版本管理工具如 [nvm](https://github.com/nvm-sh/nvm): + +```bash +# 使用 nvm 安装 Node.js +nvm install 18.18.0 +nvm use 18.18.0 +``` + +### 安装 pnpm + +安装 pnpm 的最简单方法是通过 npm: + +```bash +npm install -g pnpm@9.4.0 +``` + +或者按照 [pnpm 官方文档](https://pnpm.io/installation) 的说明进行安装。 + +## 克隆仓库 + +首先,[fork UPage 仓库](https://github.com/halo-dev/upage/fork)到您的 GitHub 账户,然后将其克隆到本地: + +```bash +# 克隆您 fork 的仓库 +git clone https://github.com/YOUR-USERNAME/upage.git + +# 进入项目目录 +cd upage + +# 添加上游仓库 +git remote add upstream https://github.com/halo-dev/upage.git +``` + +## 安装依赖 + +使用 pnpm 安装项目依赖: + +```bash +pnpm install +``` + +## 生成 Prisma 客户端 + +UPage 使用 Prisma 作为数据库 ORM,因此需要生成 Prisma 客户端。 + +```bash +pnpm setup +``` + +## 配置环境变量 + +拷贝 `.env.example` 文件,创建 `.env` 文件: + +```bash +cp .env.example .env +``` + +按照[配置参考](../configuration)的说明修改 `.env` 文件进行配置。 + +## 启用 Logto 认证(可选) + +UPage 默认仅支持单一用户匿名访问,如果您想要开发用户认证功能,可以按照[Logto 认证集成](../deployment/logto)的说明配置 Logto 认证。 + +## 启动开发服务器 + +启动开发服务器,这将允许您在本地预览和测试您的更改: + +```bash +pnpm dev +``` + +此命令会启动开发服务器,您可以通过 `http://localhost:5173` 访问。 + +## 构建项目 + +要构建生产版本的项目,运行: + +```bash +pnpm build +``` + +构建完成后,您可以通过以下命令预览生产版本: + +```bash +pnpm preview +``` + +预生产版本项目运行在 `http://localhost:3000`。 + +## 运行测试 + +运行项目的测试套件: + +```bash +pnpm test +``` + +## 文档开发 + +如果您想要修改或预览文档,可以使用以下命令: + +```bash +# 启动文档开发服务器 +pnpm docs:start + +# 构建文档 +pnpm docs:build +``` + +文档开发服务器默认在 `http://localhost:3000` 运行。 + +## 常见问题解决 + +### 依赖安装失败 + +如果您在安装依赖时遇到问题,可以尝试以下解决方案: + +```bash +# 清除 pnpm 缓存 +pnpm store prune + +# 重新安装依赖 +pnpm install --force +``` + +### 开发服务器启动失败 + +如果开发服务器无法启动,请检查: + +1. 端口 5173 是否被其他应用占用 +2. Node.js 版本是否符合要求 +3. 是否所有依赖都已正确安装 + +您可以尝试使用不同的端口启动: + +```bash +pnpm dev --port 5174 +``` + +### 其他问题 + +如果您遇到其他问题,请查看项目的 [常见问题](../faq.md) 或在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中搜索相关问题。如果没有找到解决方案,请创建新的 issue。 diff --git a/docs/content/contributing/index.md b/docs/content/contributing/index.md new file mode 100644 index 0000000..1fc9184 --- /dev/null +++ b/docs/content/contributing/index.md @@ -0,0 +1,28 @@ +--- +id: contributing +title: 贡献指南 +slug: /contributing +--- + +# 贡献指南 + +感谢您对 UPage 项目的关注!我们非常欢迎各种形式的贡献,无论是功能开发、bug 修复、文档改进还是使用反馈。本指南将帮助您了解如何参与 UPage 的开发和贡献。 + +## 目录 + +- [行为准则](./code-of-conduct.md) - 参与 UPage 项目的行为准则 +- [贡献方式](./ways-to-contribute.md) - 如何为 UPage 项目做出贡献 +- [开发环境设置](./development-setup.md) - 如何设置本地开发环境 +- [代码规范](./code-standards.md) - 代码风格和提交规范 +- [工作流程](./workflow.md) - 分支策略、PR流程和版本发布 + +## 社区 + +加入 UPage 社区,与其他贡献者交流: + +- [GitHub Discussions](https://github.com/halo-dev/upage/discussions) +- [GitHub Issues](https://github.com/halo-dev/upage/issues) + +## 许可证 + +UPage 采用 [基于 GPLv3 的补充协议许可证](https://github.com/halo-dev/upage/blob/main/LICENSE.txt)。通过贡献代码,您同意您的贡献将在相同的许可证下发布。 diff --git a/docs/content/contributing/ways-to-contribute.md b/docs/content/contributing/ways-to-contribute.md new file mode 100644 index 0000000..dfd96b1 --- /dev/null +++ b/docs/content/contributing/ways-to-contribute.md @@ -0,0 +1,91 @@ +--- +id: ways-to-contribute +title: 贡献方式 +--- + +# 贡献方式 + +您可以通过多种方式为 UPage 做出贡献,无论您是开发者、设计师、文档撰写者还是用户,都能找到适合您的贡献方式。 + +## 报告问题 + +如果您发现了 bug 或有功能建议,请在 [GitHub Issues](https://github.com/halo-dev/upage/issues) 中提出。提交问题时,请尽可能提供以下信息: + +- 清晰的问题描述 +- 复现步骤 +- 预期行为与实际行为 +- 截图(如适用) +- 环境信息(浏览器、操作系统、UPage 版本等) + +## 提交代码 + +如果您想直接贡献代码,请遵循以下步骤: + +1. [Fork](https://github.com/halo-dev/upage/fork) 项目仓库 +2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`) +3. 提交您的更改 (`git commit -m 'Add some amazing feature'`) +4. 推送到分支 (`git push origin feature/amazing-feature`) +5. 创建 Pull Request + +### 代码贡献指南 + +- 确保您的代码符合项目的[代码规范](./code-standards.md) +- 为新功能编写测试 +- 更新相关文档 +- 确保所有测试通过 +- 遵循[工作流程](./workflow.md)中的分支策略和 PR 流程 + +## 改进文档 + +文档对于任何项目都至关重要。您可以通过以下方式改进 UPage 的文档: + +- 修复文档中的错误或不准确之处 +- 添加缺失的信息或示例 +- 改进文档的结构和可读性 +- 翻译文档到其他语言 + +### 文档贡献步骤 + +1. 在 `docs/content` 目录中找到相关的 Markdown 文件 +2. 进行必要的更改 +3. 在本地预览更改:`pnpm docs:start` +4. 提交 Pull Request + +## 设计贡献 + +如果您是设计师,您可以通过以下方式贡献: + +- 改进用户界面设计 +- 创建图标和插图 +- 设计宣传材料 +- 提供用户体验建议 + +## 测试和反馈 + +即使您不是开发者,您也可以通过以下方式做出重要贡献: + +- 测试新功能和版本 +- 提供详细的反馈 +- 报告使用过程中遇到的问题 +- 提出改进建议 + +## 分享和推广 + +您也可以通过以下方式支持 UPage: + +- 在社交媒体上分享项目 +- 撰写关于 UPage 的博客文章或教程 +- 在相关论坛和社区中推荐 UPage +- 为项目加星标(Star) + +## 社区支持 + +帮助其他用户解决问题也是一种重要的贡献方式: + +- 回答 [GitHub Discussions](https://github.com/halo-dev/upage/discussions) 中的问题 +- 帮助新用户入门 +- 分享您的使用经验和最佳实践 + +## 感谢您的贡献 + +无论您以何种方式支持和参与 UPage 项目,我们都由衷地感谢您的每一份贡献。正是因为有诸多像您这样的社区成员的支持和参与,UPage 才能不断成长和进步。每一个问题报告、每一行代码、每一份文档改进以及每一次分享都是宝贵的。 diff --git a/docs/content/contributing/workflow.md b/docs/content/contributing/workflow.md new file mode 100644 index 0000000..b9e2cab --- /dev/null +++ b/docs/content/contributing/workflow.md @@ -0,0 +1,143 @@ +--- +id: workflow +title: 工作流程 +--- + +# 工作流程 + +本文档描述了 UPage 项目的开发工作流程,包括分支策略、Pull Request 流程和版本发布流程。 + +## 分支策略 + +UPage 项目使用以下分支策略: + +### 主要分支 + +- **`main`**: 主分支,包含最新的开发代码,用于集成功能和修复,同时也对应最新的发布版本 + +### 功能分支 + +开发新功能时,应从 `main` 分支创建功能分支: + +- **`feature/*`**: 功能分支,用于开发新功能 + - 例如:`feature/drag-and-drop`、`feature/user-authentication` + +### 修复分支 + +修复 bug 时,应从 `main` 分支创建修复分支: + +- **`fix/*`**: 修复分支,用于修复 bug + - 例如:`fix/login-error`、`fix/memory-leak` + +### 发布分支 + +准备新版本发布时,从 `main` 分支创建发布分支: + +- **`release/*`**: 发布分支,用于准备新版本发布 + - 例如:`release/v1.0.0`、`release/v1.1.0` + +### 热修复分支 + +对已发布版本的紧急修复,从 `main` 分支创建热修复分支: + +- **`hotfix/*`**: 热修复分支,用于对已发布版本的紧急修复 + - 例如:`hotfix/v1.0.1`、`hotfix/v1.1.2` + +## 工作流程图 + +``` +main ─────┬───────────────┬───────────────────────────────── + │ │ ↑ ↑ + ↓ ↓ │ │ +feature feature/A feature/B │ │ + │ │ +fix fix/bug-1 fix/bug-2 + │ │ │ + │ │ │ +release └─────────────────────────────────┴───────────┘ + release/v1.0.0 +``` + +## Pull Request 流程 + +### 准备 Pull Request + +1. 确保您的代码符合项目的[代码规范](./code-standards.md) +2. 更新相关文档(如适用) +3. 添加或更新测试(如适用) +4. 确保所有测试通过 +5. 将您的分支与目标分支(通常是 `main`)同步 + +### 创建 Pull Request + +1. 在 GitHub 上创建一个新的 Pull Request +2. 选择正确的目标分支(通常是 `main`) +3. 填写 Pull Request 模板,提供以下信息: + - 清晰的标题,简要描述更改 + - 详细的描述,解释更改的目的和实现方式 + - 相关的 issue 链接(如适用) + - 截图或视频(如适用) + - 任何需要审核者特别注意的事项 + +### Pull Request 审核 + +1. 至少需要一个项目维护者的批准才能合并 PR +2. 审核者可能会要求进行更改 +3. 根据反馈进行必要的更改 +4. 确保 CI 检查通过 + +### 合并 Pull Request + +1. 一旦 PR 获得批准并且所有检查通过,它将被合并 +2. 通常使用 "Squash and merge" 策略,将所有提交合并为一个 +3. 合并后,相关的分支可以被删除 + +## 版本发布流程 + +UPage 遵循 [语义化版本控制](https://semver.org/) 规范。版本号格式为 `X.Y.Z`: + +- **X**: 主版本号,当进行不兼容的 API 更改时递增 +- **Y**: 次版本号,当添加向后兼容的功能时递增 +- **Z**: 修订号,当进行向后兼容的 bug 修复时递增 + +### 发布准备 + +1. 从 `main` 分支创建发布分支,例如 `release/v1.0.0` +2. 在发布分支上进行最终测试和修复 +3. 更新版本号和更新日志 +4. 创建 Pull Request 将发布分支合并回 `main` + +### 发布步骤 + +1. 合并发布分支到 `main` +2. 在 `main` 分支上创建版本标签,例如 `v1.0.0` +3. 发布 GitHub Release,包含详细的更新日志 + +### 热修复发布 + +1. 从 `main` 分支创建热修复分支,例如 `hotfix/v1.0.1` +2. 实现必要的修复 +3. 更新版本号和更新日志 +4. 创建 Pull Request 将热修复分支合并到 `main` +5. 必要时创建 cherry-pick PR 将热修复分支合并到对应的发布分支 + +## 持续集成和部署 + +UPage 使用 GitHub Actions 进行持续集成和部署: + +### CI 工作流程 + +- 每个 PR 会触发构建和测试 +- 代码质量检查(linting、类型检查) +- 单元测试和集成测试 +- 构建检查 + +### CD 工作流程 + +- 合并到 `main` 分支会触发开发构建和部署 +- 自动生成和发布 Docker 镜像 +- 更新文档网站 + +## 问题跟踪 + +UPage 使用 GitHub [Issues](https://github.com/halo-dev/upage/issues) 进行问题跟踪,使用标签对问题进行分类(bug、feature、documentation 等) diff --git a/docs/content/deployment/logto.md b/docs/content/deployment/logto.md index bd0486e..827c11e 100644 --- a/docs/content/deployment/logto.md +++ b/docs/content/deployment/logto.md @@ -34,6 +34,15 @@ Logto 支持两种接入方式,您可以根据自己的需求选择合适的 UPage 提供了一个简化的 Logto 部署配置。在 UPage 项目目录下,您可以找到 `logto/docker-compose.yaml` 文件以及 `.env` 文件。 +如果是开发环境,执行以下命令: + +```bash +cd ./logto +docker-compose up -d +``` + +如果是生产环境,执行以下命令: + ```bash curl -L https://raw.githubusercontent.com/halo-dev/upage/refs/heads/main/logto/docker-compose.yaml -o ~/upage/logto/docker-compose.yaml curl -L https://raw.githubusercontent.com/halo-dev/upage/refs/heads/main/logto/.env -o ~/upage/logto/.env diff --git a/docs/content/faq.md b/docs/content/faq.md index 884e7f5..67b533e 100644 --- a/docs/content/faq.md +++ b/docs/content/faq.md @@ -11,7 +11,7 @@ title: 常见问题 ### UPage 是什么? -UPage 是一款基于人工智能的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。它允许用户通过简单的文字描述生成完整的网页,并提供可视化编辑工具进行进一步定制。 +UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。它允许用户通过简单的文字描述生成完整的网页,并提供可视化编辑工具进行进一步定制。 ### UPage 适合哪些用户? @@ -26,7 +26,7 @@ UPage 适合各类需要快速创建网页的用户,包括但不限于: ### UPage 是开源的吗? -是的,UPage 是一个开源项目,采用 MIT 许可证。您可以在 [GitHub](https://github.com/halo-dev/upage) 上查看源代码,也可以参与项目开发和改进。 +是的,UPage 是一个开源项目,采用 [基于 GPLv3 的补充协议许可证](https://github.com/halo-dev/upage/blob/main/LICENSE.txt)。您可以在 [GitHub](https://github.com/halo-dev/upage) 上查看源代码,也可以参与项目开发和改进。 ## 安装和部署 @@ -40,16 +40,17 @@ docker run -d \ --restart unless-stopped \ -p 3000:3000 \ -e LLM_DEFAULT_PROVIDER=OpenAILike \ + -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ./data:/app/data \ -v ./logs:/app/logs \ -v ./storage:/app/storage \ - ghcr.io/halo-dev/upage + halo-dev/upage:latest ``` -详细的安装说明请参考[快速开始](quick-start)文档。 +详细的安装说明请参考[快速开始](./quick-start)文档。 ### UPage 的系统要求是什么? @@ -58,7 +59,7 @@ UPage 的最低系统要求: - Docker 20.10.0 或更高版本(如果使用 Docker 部署) - Node.js 18.18.0 或更高版本(如果源码部署) - 至少 2GB 可用内存 -- 至少 1GB 可用磁盘空间 +- 至少 2GB 可用磁盘空间 - 互联网连接(用于访问 AI API) ### 如何更新 UPage? @@ -67,7 +68,7 @@ UPage 的最低系统要求: ```bash # 拉取最新镜像 -docker pull ghcr.io/halo-dev/upage:latest +docker pull halo-dev/upage:latest # 停止并删除旧容器 docker stop upage @@ -79,7 +80,7 @@ docker run -d \ --restart unless-stopped \ -p 3000:3000 \ ... # 其他环境变量和挂载 - ghcr.io/halo-dev/upage:latest + halo-dev/upage:latest ``` 如果使用 Docker Compose,则可以执行: @@ -96,12 +97,15 @@ docker-compose up -d UPage 支持多种 AI 提供商,包括: -- OpenAI(GPT-3.5、GPT-4 等) +- DeepSeek(DeepSeek-Chat、DeepSeek-Reasoner) +- OpenAI(GPT-4o、GPT-5 等) - Anthropic Claude - Google Gemini - 兼容 OpenAI 接口的服务(如 Azure OpenAI、智谱 AI 等) - Ollama(本地部署的开源模型) +所有支持的 AI 提供商请参考[配置参考- AI 提供商配置](./configuration#ai-提供商配置)文档。 + ### 如何配置 AI 提供商? 通过环境变量配置 AI 提供商,例如: @@ -120,11 +124,11 @@ UPage 支持多种 AI 提供商,包括: -e LLM_MINOR_MODEL=claude-3-haiku-20240307 ``` -详细的配置选项请参考[配置参考](configuration)文档。 +详细的配置选项请参考[配置参考 - AI 提供商配置](./configuration#ai-提供商配置)文档。 ### 使用 AI 生成页面需要多少 token? -生成一个标准页面通常需要 2,000-10,000 个 token,具体取决于页面的复杂度和内容量。复杂的页面可能需要更多 token。UPage 会优化 prompt,尽量减少 token 消耗。 +生成一个标准页面通常需要 2,000-10,000 个 token,具体取决于页面的复杂度和内容量。复杂的页面可能需要更多 token。UPage 会尽可能优化 prompt,尽量减少 token 消耗。 ### 如何优化 AI 提示以获得更好的结果? @@ -145,35 +149,22 @@ UPage 支持多种 AI 提供商,包括: ... ``` +你可以使用 UPage 的优化提示功能来优化您的提示。 + ## 使用问题 -### 如何创建第一个页面? - -1. 登录 UPage -2. 点击侧边栏中的"新建页面"按钮 -3. 选择"AI 创建"、"从模板创建"或"空白页面" -4. 如果选择 AI 创建,输入页面描述并点击"生成" -5. 等待 AI 生成页面,然后进行进一步编辑 - ### 如何编辑 AI 生成的页面? 1. 在页面列表中选择要编辑的页面 -2. 使用可视化编辑器修改页面元素 -3. 可以拖拽组件、调整布局、编辑文本和图片 -4. 使用右侧属性面板修改组件属性和样式 -5. 也可以使用 AI 辅助功能进行局部或整体调整 - -### 如何导出页面? - -1. 在页面列表中选择要导出的页面 -2. 点击操作菜单中的"导出"选项 -3. 选择导出格式(HTML/CSS/JS、ZIP、JSON 或 PDF) -4. 配置导出选项 -5. 点击"导出"开始下载 +2. 使用可视化编辑器点击要修改的页面元素 +3. 对于文本组件,可以直接输入文本进行修改 +4. 对于图片组件,可以点击上传图片进行替换 +5. 使用弹出的属性面板修改组件属性和样式 +6. 也可以使用 AI 辅助功能进行局部或整体调整 ### UPage 支持响应式设计吗? -是的,UPage 生成的页面默认支持响应式设计,可以自动适应不同屏幕尺寸。您可以在编辑器中预览页面在不同设备上的显示效果,并进行针对性调整。 +是的,UPage 生成的页面默认支持响应式设计,可以自动适应不同屏幕尺寸。您可以在编辑器中预览页面在不同设备上的显示效果,并进行针对性调整。如果生成的页面不符合您的预期,您可以尝试使用 AI 辅助调整。 ## 数据和安全 @@ -197,9 +188,9 @@ tar -czf upage-storage-backup-$(date +%Y%m%d).tar.gz ./storage UPage 本身不会收集或传输用户数据,除非明确配置。当使用 AI 功能时,页面内容会发送到配置的 AI 提供商进行处理。请确保您使用的 AI 提供商符合您的隐私要求。 -### 如何配置 UPage 的访问控制? +### 如何配置 UPage 的多用户? -UPage 支持通过 Logto 进行用户认证和访问控制。配置 Logto 后,您可以创建用户账户、分配角色和权限,实现细粒度的访问控制。详细配置请参考[Logto 认证集成](deployment/logto)文档。 +UPage 支持通过 Logto 进行用户认证和访问控制。详细配置请参考[Logto 认证集成](deployment/logto)文档。 ## 故障排除 @@ -211,10 +202,11 @@ UPage 支持通过 Logto 进行用户认证和访问控制。配置 Logto 后, 2. **提示过于复杂**:尝试简化页面描述,分步骤生成 3. **token 限制**:检查是否达到 AI 提供商的 token 限制 4. **模型不支持**:尝试使用更强大的模型或不同的 AI 提供商 +5. **生成内容超过限制**:UPage 默认限制单次回答不超过 3 次 Token 上限,您可以尝试分步骤生成 ### 如何查看系统日志? -可以通过以下方式查看系统日志: +默认情况下,UPage 会将日志保存在挂载的 `logs` 目录中,可以通过以下方式查看系统日志: ```bash # 查看容器日志 @@ -254,33 +246,15 @@ cat logs/combined-*.log ## 高级问题 -### 如何自定义 UPage 的主题? - -目前 UPage 不支持完全自定义主题,但您可以通过以下方式调整外观: - -1. 在页面编辑器中使用自定义 CSS -2. 使用 AI 生成符合特定设计风格的页面 -3. 在导出的代码中进行进一步自定义 - ### UPage 支持插件系统吗? -目前 UPage 不提供正式的插件系统,但作为开源项目,您可以通过 fork 代码库并进行修改来扩展功能。 +UPage 不提供正式的插件系统,但作为开源项目,您可以通过 fork 代码库并进行修改来扩展功能。 ### 如何与现有系统集成? UPage 提供多种集成方式: 1. **API 集成**:使用 UPage API 与其他系统交互 -2. **导出集成**:导出页面代码并集成到现有系统 +2. **导出集成**:下载页面源代码(HTML/CSS/JS)并集成到现有系统 3. **部署集成**:使用 Vercel 或 Netlify 集成直接部署页面 4. **认证集成**:通过 Logto 与现有认证系统集成 - -### UPage 与其他页面构建器的区别是什么? - -UPage 的主要区别在于: - -1. **AI 驱动**:基于自然语言描述生成页面 -2. **开源**:完全开源,可自由定制和扩展 -3. **多 AI 提供商支持**:支持多种 AI 模型和提供商 -4. **本地部署**:可在本地或私有云部署,保护数据安全 -5. **轻量级**:资源占用较低,易于部署和维护 diff --git a/docs/content/index.md b/docs/content/index.md index 2c5b15c..908bd2b 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -21,6 +21,10 @@ UPage 是一个开源的网页构建工具,它利用大语言模型,让用 - **响应式设计**:自动适应不同屏幕尺寸 - **部署集成**:支持一键部署到常见托管平台 +:::note +特别感谢 [bolt.diy](https://github.com/stackblitz-labs/bolt.diy) 项目,UPage 的实现基于该项目的代码结构。 +::: + ## 快速开始 请查看[快速开始](quick-start.md)指南,了解如何安装和使用 UPage。 @@ -31,4 +35,4 @@ UPage 是一个开源项目,我们欢迎任何形式的贡献。请查看[贡 ## 许可证 -UPage 采用 [基于 GPLv3 的补充协议许可证](https://github.com/halo-dev/upage/blob/main/LICENSE)。 +UPage 采用 [基于 GPLv3 的补充协议许可证](https://github.com/halo-dev/upage/blob/main/LICENSE.txt)。 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index e49c54f..d83447b 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -68,7 +68,7 @@ const config = { type: 'docSidebar', sidebarId: 'tutorialSidebar', position: 'left', - label: '文档', + label: '使用文档', }, { href: 'https://github.com/halo-dev/upage', @@ -116,7 +116,7 @@ const config = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} Halo 社区`, + copyright: `Copyright © ${new Date().getFullYear()} 凌霞软件. Built with Docusaurus.`, }, prism: { theme: require('prism-react-renderer').themes.github, diff --git a/docs/sidebars.js b/docs/sidebars.js index 92f42e8..badec8c 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -58,20 +58,25 @@ const sidebars = { ], }, { - type: 'doc', - id: 'contributing', + type: 'category', label: '贡献指南', + link: { + type: 'doc', + id: 'contributing/contributing', + }, + items: [ + 'contributing/code-of-conduct', + 'contributing/ways-to-contribute', + 'contributing/development-setup', + 'contributing/code-standards', + 'contributing/workflow', + ], }, { type: 'doc', id: 'faq', label: '常见问题', }, - { - type: 'doc', - id: 'changelog', - label: '更新日志', - }, ], }; From 1d944e54e85c3c812aa848a69f2f53d6bbee0314 Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Sun, 28 Sep 2025 18:01:20 +0800 Subject: [PATCH 7/9] docs: add upage usage instructions document --- .env.example | 4 +- app/lib/modules/llm/providers/together.ts | 5 +- docker-compose-dev.yaml | 2 +- docker-compose-prod.yaml | 2 +- docs/content/configuration.md | 107 +++++++++++----------- docs/content/deployment/docker-compose.md | 12 +-- docs/content/deployment/docker.md | 18 ++-- docs/content/deployment/source.md | 12 +-- docs/content/faq.md | 14 +-- docs/content/quick-start.md | 34 +++---- docs/src/css/custom.css | 22 +++++ 11 files changed, 130 insertions(+), 102 deletions(-) diff --git a/.env.example b/.env.example index 14554e3..63d2e46 100644 --- a/.env.example +++ b/.env.example @@ -40,10 +40,10 @@ PROVIDER_BASE_URL= # {"region": "us-east-1", "accessKeyId": "yourAccessKeyId", "secretAccessKey": "yourSecretAccessKey", "sessionToken": "yourSessionToken"} PROVIDER_API_KEY= -# MODEL used for page generation (should correspond to LLM_DEFAULT_PROVIDER) +# MODEL used for page generation (should correspond to LLM_PROVIDER) LLM_DEFAULT_MODEL= -# MODEL used for auxiliary page generation, such as summarization and pre-analysis. (should correspond to LLM_DEFAULT_PROVIDER) +# MODEL used for auxiliary page generation, such as summarization and pre-analysis. (should correspond to LLM_PROVIDER) LLM_MINOR_MODEL= # Get your Serper API Key https://serper.dev/ diff --git a/app/lib/modules/llm/providers/together.ts b/app/lib/modules/llm/providers/together.ts index 5703023..743e911 100644 --- a/app/lib/modules/llm/providers/together.ts +++ b/app/lib/modules/llm/providers/together.ts @@ -58,9 +58,10 @@ export default class TogetherProvider extends BaseProvider { getModelInstance(options: { model: string; providerSettings?: Record }): LanguageModel { const { model, providerSettings } = options; - const { baseUrl, apiKey } = this.getProviderBaseUrlAndKey(providerSettings?.[this.name]); + const { baseUrl: fetchBaseUrl, apiKey } = this.getProviderBaseUrlAndKey(providerSettings?.[this.name]); + const baseUrl = fetchBaseUrl || 'https://api.together.xyz/v1'; - if (!baseUrl || !apiKey) { + if (!apiKey) { throw new Error(`Missing configuration for ${this.name} provider`); } diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index d834862..1bc39f9 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -10,7 +10,7 @@ services: - NODE_ENV=${NODE_ENV:-production} - LOG_LEVEL=${LOG_LEVEL:-debug} - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - - LLM_PROVIDER=${LLM_DEFAULT_PROVIDER} + - LLM_PROVIDER=${LLM_PROVIDER} - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} - PROVIDER_API_KEY=${PROVIDER_API_KEY} - LLM_DEFAULT_MODEL=${LLM_DEFAULT_MODEL} diff --git a/docker-compose-prod.yaml b/docker-compose-prod.yaml index b5f3e02..f0ecf41 100644 --- a/docker-compose-prod.yaml +++ b/docker-compose-prod.yaml @@ -10,7 +10,7 @@ services: - NODE_ENV=${NODE_ENV:-production} - LOG_LEVEL=${LOG_LEVEL:-debug} - DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX:-32768} - - LLM_PROVIDER=${LLM_DEFAULT_PROVIDER} + - LLM_PROVIDER=${LLM_PROVIDER} - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} - PROVIDER_API_KEY=${PROVIDER_API_KEY} - LLM_DEFAULT_MODEL=${LLM_DEFAULT_MODEL} diff --git a/docs/content/configuration.md b/docs/content/configuration.md index 9d65111..1a951e2 100644 --- a/docs/content/configuration.md +++ b/docs/content/configuration.md @@ -29,25 +29,31 @@ UPage 使用环境变量进行配置。您可以通过以下方式设置环境 UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用页面生成功能。 -### AI 基础配置 +:::tip 配置参数颜色说明 +为了帮助您区分不同提供商所需的配置参数,我们使用了不同的颜色标记: +- API 基础 URL: 用蓝色标记,通常是服务的访问地址 +- API 密钥: 用红色标记,通常是敏感信息,需要从提供商处获取 +::: | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | LLM 提供商,根据需要配置一个 | - | 是 | +| `LLM_PROVIDER` | LLM 提供商,按照下述配置项配置一个 | - | 是 | +| `PROVIDER_BASE_URL` | LLM 提供商的 API 基础 URL,部分提供商需要设置此项,例如 OpenAILike, Ollama, LMStudio | - | 否,部分提供商不需要设置此项 | +| `PROVIDER_API_KEY` | LLM 提供商的 API 密钥,大部分提供商需要设置此项 | - | 否,部分提供商不需要设置此项 | | `LLM_DEFAULT_MODEL` | 生成页面所使用的模型 | - | 是 | | `LLM_MINOR_MODEL` | 辅助页面生成所使用的模型 | - | 是 | -| `LLM_ENABLED_PROVIDERS` | 启用的 LLM 提供商列表(逗号分隔) | 所有支持的提供商 | 否 | + +以下是常见的 AI 提供商配置: ### Amazon Bedrock | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Amazon Bedrock 提供商名称 | AmazonBedrock | 是 | -| `AWS_BEDROCK_CONFIG` | Amazon Bedrock 配置 | - | 是(如果使用 Amazon Bedrock) | +| `LLM_PROVIDER` | Amazon Bedrock 提供商名称 | AmazonBedrock | 是 | +| `PROVIDER_API_KEY` | Amazon Bedrock 配置 | - | 是(如果使用 Amazon Bedrock) | :::info -前往 [Amazon Bedrock](https://console.aws.amazon.com/iam/home) 中获取配置。 -`AWS_BEDROCK_CONFIG` 应为 JSON 格式,例如: +在 Amazon Bedrock 提供商中,`PROVIDER_API_KEY` 应为 JSON 格式。例如: ```json { // Bedrock 可用的 AWS 区域 @@ -60,14 +66,15 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 "sessionToken": "your-session-token" } ``` +前往 [Amazon Bedrock](https://console.aws.amazon.com/iam/home) 中获取配置。 ::: ### Anthropic Claude | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | -| `ANTHROPIC_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | +| `LLM_PROVIDER` | Anthropic 提供商 | Anthropic | 是 | +| `PROVIDER_API_KEY` | Anthropic API 密钥 | - | 是(如果使用 Anthropic) | :::info 前往 [Anthropic](https://console.anthropic.com/settings/keys) 获取 API 密钥。 @@ -77,8 +84,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Cohere 提供商名称 | Cohere | 是 | -| `COHERE_API_KEY` | Cohere API 密钥 | - | 是(如果使用 Cohere) | +| `LLM_PROVIDER` | Cohere 提供商名称 | Cohere | 是 | +| `PROVIDER_API_KEY` | Cohere API 密钥 | - | 是(如果使用 Cohere) | :::info 前往 [Cohere](https://dashboard.cohere.com/api-keys) 获取 API 密钥。 @@ -88,8 +95,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | DeepSeek 提供商名称 | Deepseek | 是 | -| `DEEPSEEK_API_KEY` | DeepSeek API 密钥 | - | 是(如果使用 DeepSeek) | +| `LLM_PROVIDER` | DeepSeek 提供商名称 | Deepseek | 是 | +| `PROVIDER_API_KEY` | DeepSeek API 密钥 | - | 是(如果使用 DeepSeek) | :::info 前往 [DeepSeek](https://platform.deepseek.com/api_keys) 获取 API 密钥。 @@ -99,8 +106,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Github 提供商名称 | Github | 是 | -| `GITHUB_API_KEY` | Github API 密钥 | - | 是(如果使用 Github) | +| `LLM_PROVIDER` | Github 提供商名称 | Github | 是 | +| `PROVIDER_API_KEY` | Github API 密钥 | - | 是(如果使用 Github) | :::info 前往 [Github](https://github.com/settings/personal-access-tokens) 获取 API 密钥。 @@ -110,8 +117,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Google 提供商名称 | Google | 是 | -| `GOOGLE_GENERATIVE_AI_API_KEY` | Google 生成式 AI API 密钥 | - | 是(如果使用 Google) | +| `LLM_PROVIDER` | Google 提供商名称 | Google | 是 | +| `PROVIDER_API_KEY` | Google 生成式 AI API 密钥 | - | 是(如果使用 Google) | :::info 前往 [Google](https://console.cloud.google.com/apis/credentials) 获取 API 密钥。 @@ -121,8 +128,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Groq 提供商名称 | Groq | 是 | -| `GROQ_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | +| `LLM_PROVIDER` | Groq 提供商名称 | Groq | 是 | +| `PROVIDER_API_KEY` | Groq API 密钥 | - | 是(如果使用 Groq) | :::info 前往 [Groq](https://console.groq.com/keys) 获取 API 密钥。 @@ -132,8 +139,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | HuggingFace 提供商名称 | HuggingFace | 是 | -| `HuggingFace_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | +| `LLM_PROVIDER` | HuggingFace 提供商名称 | HuggingFace | 是 | +| `PROVIDER_API_KEY` | HuggingFace API 密钥 | - | 是(如果使用 HuggingFace) | :::info 前往 [HuggingFace](https://huggingface.co/settings/tokens) 获取 API 密钥。 @@ -143,8 +150,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Hyperbolic 提供商名称 | Hyperbolic | 是 | -| `HYPERBOLIC_API_KEY` | Hyperbolic API 密钥 | - | 是(如果使用 Hyperbolic) | +| `LLM_PROVIDER` | Hyperbolic 提供商名称 | Hyperbolic | 是 | +| `PROVIDER_API_KEY` | Hyperbolic API 密钥 | - | 是(如果使用 Hyperbolic) | :::info 前往 [Hyperbolic](https://hyperbolic.ai/dashboard/api-keys) 获取 API 密钥。 @@ -154,8 +161,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | LMStudio 提供商名称 | LMStudio | 是 | -| `LMSTUDIO_API_BASE_URL` | LMStudio API URL | `http://127.0.0.1:1234` | 是(如果使用 LMStudio) | +| `LLM_PROVIDER` | LMStudio 提供商名称 | LMStudio | 是 | +| `PROVIDER_BASE_URL` | LMStudio API URL | `http://127.0.0.1:1234` | 是(如果使用 LMStudio) | :::warning 由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:1234 而应该使用类似于 http://127.0.0.1:1234 的地址 @@ -165,8 +172,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Mistral 提供商名称 | Mistral | 是 | -| `MISTRAL_API_KEY` | Mistral API 密钥 | - | 是(如果使用 Mistral) | +| `LLM_PROVIDER` | Mistral 提供商名称 | Mistral | 是 | +| `PROVIDER_API_KEY` | Mistral API 密钥 | - | 是(如果使用 Mistral) | :::info 前往 [Mistral](https://console.mistral.ai/api-keys/) 获取 API 密钥。 @@ -176,8 +183,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Ollama 提供商名称 | Ollama | 是 | -| `OLLAMA_API_BASE_URL` | Ollama API URL | `http://127.0.0.1:11434` | 是(如果使用 Ollama) | +| `LLM_PROVIDER` | Ollama 提供商名称 | Ollama | 是 | +| `PROVIDER_BASE_URL` | Ollama API URL | `http://127.0.0.1:11434` | 是(如果使用 Ollama) | :::warning 由于可能存在的 IPV6 的问题,所以不要使用 http://localhost:11434 而应该使用类似于 http://127.0.0.1:11434 的地址 @@ -187,8 +194,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | OpenRouter 提供商名称 | OpenRouter | 是 | -| `OPEN_ROUTER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | +| `LLM_PROVIDER` | OpenRouter 提供商名称 | OpenRouter | 是 | +| `PROVIDER_API_KEY` | OpenRouter API 密钥 | - | 是(如果使用 OpenRouter) | :::info 前往 [OpenRouter](https://openrouter.ai/settings/keys) 获取 API 密钥。 @@ -198,16 +205,16 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | OpenAILike 提供商名称 | OpenAILike | 是 | -| `OPENAI_LIKE_API_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | -| `OPENAI_LIKE_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | +| `LLM_PROVIDER` | OpenAILike 提供商名称 | OpenAILike | 是 | +| `PROVIDER_BASE_URL` | API 基础 URL | - | 是(如果使用 OpenAILike) | +| `PROVIDER_API_KEY` | API 密钥 | - | 是(如果使用 OpenAILike) | ### OpenAI | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | OpenAI 提供商名称 | OpenAI | 是 | -| `OPENAI_API_KEY` | OpenAI API 密钥 | - | 是(如果使用 OpenAI) | +| `LLM_PROVIDER` | OpenAI 提供商名称 | OpenAI | 是 | +| `PROVIDER_API_KEY` | OpenAI API 密钥 | - | 是(如果使用 OpenAI) | :::info 前往 [OpenAI](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) 获取 API 密钥。 @@ -217,8 +224,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Perplexity 提供商名称 | Perplexity | 是 | -| `PERPLEXITY_API_KEY` | Perplexity API 密钥 | - | 是(如果使用 Perplexity) | +| `LLM_PROVIDER` | Perplexity 提供商名称 | Perplexity | 是 | +| `PROVIDER_API_KEY` | Perplexity API 密钥 | - | 是(如果使用 Perplexity) | :::info 前往 [Perplexity](https://www.perplexity.ai/settings/api) 获取 API 密钥。 @@ -228,9 +235,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | Together 提供商名称 | Together | 是 | -| `TOGETHER_API_BASE_URL` | Together API 基础 URL | - | 是(如果使用 Together) | -| `TOGETHER_API_KEY` | Together API 密钥 | - | 是(如果使用 Together) | +| `LLM_PROVIDER` | Together 提供商名称 | Together | 是 | +| `PROVIDER_API_KEY` | Together API 密钥 | - | 是(如果使用 Together) | :::info 前往 [Together](https://api.together.xyz/settings/api-keys) 获取 API 密钥。 @@ -240,8 +246,8 @@ UPage 支持多种 AI 提供商,您需要配置一个 AI 提供商才能使用 | 环境变量 | 描述 | 默认值 | 必填 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | xAI 提供商名称 | xAI | 是 | -| `XAI_API_KEY` | xAI API 密钥 | - | 是(如果使用 xAI) | +| `LLM_PROVIDER` | xAI 提供商名称 | xAI | 是 | +| `PROVIDER_API_KEY` | xAI API 密钥 | - | 是(如果使用 xAI) | :::info 前往 [xAI](https://x.ai/api) 获取 API 密钥。 @@ -318,9 +324,8 @@ services: - STORAGE_DIR=/app/storage # 使用 DeepSeek 提供商配置 - - LLM_DEFAULT_PROVIDER=DeepSeek - # 这里使用 DEEPSEEK_API_KEY - - DEEPSEEK_API_KEY=your-deepseek-api-key + - LLM_PROVIDER=DeepSeek + - PROVIDER_API_KEY=your-deepseek-api-key - LLM_DEFAULT_MODEL=deepseek-chat - LLM_MINOR_MODEL=deepseek-chat @@ -341,7 +346,7 @@ services: - ./storage:/app/storage ``` -如果你要切换使用其他 AI 提供商,则只需要修改 `LLM_DEFAULT_PROVIDER` 和相应的 API 密钥、Model 即可,例如: +如果你要切换使用其他 AI 提供商,则只需要修改 `LLM_PROVIDER` 和相应的 API 密钥、Model 即可,例如: ```yaml version: "3.9" @@ -353,10 +358,10 @@ services: ports: - "3000:3000" environment: - # 使用 OpenAI 提供商配置 - - LLM_DEFAULT_PROVIDER=OpenAI - # 这里注意需要改为 OPENAI_API_KEY - - OPENAI_API_KEY=your-openai-api-key + # 使用 OpenAI 兼容接口的提供商配置 + - LLM_PROVIDER=OpenAILike + - PROVIDER_BASE_URL=your-openai-api-base-url + - PROVIDER_API_KEY=your-openai-api-key - LLM_DEFAULT_MODEL=gpt-4.1 - LLM_MINOR_MODEL=gpt-4.1-mini diff --git a/docs/content/deployment/docker-compose.md b/docs/content/deployment/docker-compose.md index 8893400..b367c4d 100644 --- a/docs/content/deployment/docker-compose.md +++ b/docs/content/deployment/docker-compose.md @@ -48,9 +48,9 @@ services: ports: - "${PORT:-3000}:3000" environment: - - OPENAI_LIKE_API_BASE_URL=${OPENAI_LIKE_API_BASE_URL} - - OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} - - LLM_DEFAULT_PROVIDER=${LLM_DEFAULT_PROVIDER} + - LLM_PROVIDER=${LLM_PROVIDER} + - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} + - PROVIDER_API_KEY=${PROVIDER_API_KEY} - LLM_DEFAULT_MODEL=${LLM_DEFAULT_MODEL} - LLM_MINOR_MODEL=${LLM_MINOR_MODEL} volumes: @@ -116,9 +116,9 @@ UPage 支持通过环境变量进行配置。以下是一些比较重要的环 | 环境变量 | 描述 | 必填 | 示例 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | -| `OPENAI_LIKE_API_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | -| `OPENAI_LIKE_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | +| `LLM_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | +| `PROVIDER_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | +| `PROVIDER_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | ### 大模型配置 diff --git a/docs/content/deployment/docker.md b/docs/content/deployment/docker.md index 9f0c97e..e22e38c 100644 --- a/docs/content/deployment/docker.md +++ b/docs/content/deployment/docker.md @@ -56,9 +56,9 @@ docker run -d \ --name upage \ --restart unless-stopped \ -p 3000:3000 \ - -e LLM_DEFAULT_PROVIDER=OpenAILike \ - -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ - -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_PROVIDER=OpenAILike \ + -e PROVIDER_BASE_URL=your-openai-like-api-base-url \ + -e PROVIDER_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ~/upage/data:/app/data \ @@ -113,9 +113,9 @@ UPage 支持通过环境变量进行配置。以下是一些比较重要的环 | 环境变量 | 描述 | 必填 | 示例 | | --- | --- | --- | --- | -| `LLM_DEFAULT_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | -| `OPENAI_LIKE_API_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | -| `OPENAI_LIKE_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | +| `LLM_PROVIDER` | 默认 LLM 提供商 | 是 | `OpenAILike` | +| `PROVIDER_BASE_URL` | OpenAI 兼容 API 基础 URL | 是 | `https://your-api-base-url` | +| `PROVIDER_API_KEY` | OpenAI 兼容 API 密钥 | 是 | `your-openai-like-api-key` | ### 大模型配置 @@ -141,9 +141,9 @@ docker run -d \ --name upage \ --restart unless-stopped \ -p 3000:3000 \ - -e LLM_DEFAULT_PROVIDER=OpenAILike \ - -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ - -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_PROVIDER=OpenAILike \ + -e PROVIDER_BASE_URL=your-openai-like-api-base-url \ + -e PROVIDER_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ~/upage/data:/app/data \ diff --git a/docs/content/deployment/source.md b/docs/content/deployment/source.md index ec49978..5dd277a 100644 --- a/docs/content/deployment/source.md +++ b/docs/content/deployment/source.md @@ -55,9 +55,9 @@ MAX_UPLOAD_SIZE_MB=5 STORAGE_DIR=./storage # AI 提供商配置 -LLM_DEFAULT_PROVIDER=OpenAILike -OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url -OPENAI_LIKE_API_KEY=your-openai-like-api-key +LLM_PROVIDER=OpenAILike +PROVIDER_BASE_URL=your-openai-like-api-base-url +PROVIDER_API_KEY=your-openai-like-api-key LLM_DEFAULT_MODEL=your-default-model LLM_MINOR_MODEL=your-minor-model ``` @@ -135,9 +135,9 @@ module.exports = { NODE_ENV: 'production', OPERATING_ENV: 'production', PORT: 3000, - LLM_DEFAULT_PROVIDER: 'OpenAILike', - OPENAI_LIKE_API_BASE_URL: 'your-openai-like-api-base-url', - OPENAI_LIKE_API_KEY: 'your-openai-like-api-key', + LLM_PROVIDER: 'OpenAILike', + PROVIDER_BASE_URL: 'your-openai-like-api-base-url', + PROVIDER_API_KEY: 'your-openai-like-api-key', LLM_DEFAULT_MODEL: 'your-default-model', LLM_MINOR_MODEL: 'your-minor-model', } diff --git a/docs/content/faq.md b/docs/content/faq.md index 67b533e..3fe1d81 100644 --- a/docs/content/faq.md +++ b/docs/content/faq.md @@ -39,9 +39,9 @@ docker run -d \ --name upage \ --restart unless-stopped \ -p 3000:3000 \ - -e LLM_DEFAULT_PROVIDER=OpenAILike \ - -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ - -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_PROVIDER=OpenAILike \ + -e PROVIDER_BASE_URL=your-openai-like-api-base-url \ + -e PROVIDER_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ./data:/app/data \ @@ -112,14 +112,14 @@ UPage 支持多种 AI 提供商,包括: ```bash # OpenAI --e LLM_DEFAULT_PROVIDER=OpenAI \ --e OPENAI_API_KEY=your-openai-api-key \ +-e LLM_PROVIDER=OpenAI \ +-e PROVIDER_API_KEY=your-openai-api-key \ -e LLM_DEFAULT_MODEL=gpt-4-turbo \ -e LLM_MINOR_MODEL=gpt-3.5-turbo # Anthropic Claude --e LLM_DEFAULT_PROVIDER=Anthropic \ --e ANTHROPIC_API_KEY=your-anthropic-api-key \ +-e LLM_PROVIDER=Anthropic \ +-e PROVIDER_API_KEY=your-anthropic-api-key \ -e LLM_DEFAULT_MODEL=claude-3-opus-20240229 \ -e LLM_MINOR_MODEL=claude-3-haiku-20240307 ``` diff --git a/docs/content/quick-start.md b/docs/content/quick-start.md index c9b2d56..1b8ebd3 100644 --- a/docs/content/quick-start.md +++ b/docs/content/quick-start.md @@ -29,9 +29,9 @@ docker run -d \ --name upage \ --restart unless-stopped \ -p 3000:3000 \ - -e LLM_DEFAULT_PROVIDER=OpenAILike \ - -e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url \ - -e OPENAI_LIKE_API_KEY=your-openai-like-api-key \ + -e LLM_PROVIDER=OpenAILike \ + -e PROVIDER_BASE_URL=your-openai-like-api-base-url \ + -e PROVIDER_API_KEY=your-openai-like-api-key \ -e LLM_DEFAULT_MODEL=your-default-model \ -e LLM_MINOR_MODEL=your-minor-model \ -v ./data:/app/data \ @@ -42,9 +42,9 @@ docker run -d \ ### 参数说明 -- `-e LLM_DEFAULT_PROVIDER=OpenAILike`:设置默认的 LLM 提供商 -- `-e OPENAI_LIKE_API_BASE_URL=your-openai-like-api-base-url`:设置 API 基础 URL -- `-e OPENAI_LIKE_API_KEY=your-openai-like-api-key`:设置 API 密钥 +- `-e LLM_PROVIDER=OpenAILike`:设置默认的 LLM 提供商 +- `-e PROVIDER_BASE_URL=your-openai-like-api-base-url`:设置 API 基础 URL +- `-e PROVIDER_API_KEY=your-openai-like-api-key`:设置 API 密钥 - `-e LLM_DEFAULT_MODEL=your-default-model`:设置用于页面生成的默认 AI 模型 - `-e LLM_MINOR_MODEL=your-minor-model`:设置用于辅助任务的 AI 模型 - `-v ./data:/app/data`:挂载数据目录,用于存储数据库文件 @@ -67,8 +67,8 @@ UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能 ### DeepSeek ```bash --e LLM_DEFAULT_PROVIDER=Deepseek \ --e DEEPSEEK_API_KEY=your-deepseek-api-key \ +-e LLM_PROVIDER=Deepseek \ +-e PROVIDER_API_KEY=your-deepseek-api-key \ -e LLM_DEFAULT_MODEL=deepseek-chat \ -e LLM_MINOR_MODEL=deepseek-reasoner ``` @@ -76,9 +76,9 @@ UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能 ### 兼容 OpenAI 接口的服务 ```bash --e LLM_DEFAULT_PROVIDER=OpenAILike \ --e OPENAI_LIKE_API_BASE_URL=https://your-api-base-url \ --e OPENAI_LIKE_API_KEY=your-api-key \ +-e LLM_PROVIDER=OpenAILike \ +-e PROVIDER_BASE_URL=https://your-api-base-url \ +-e PROVIDER_API_KEY=your-api-key \ -e LLM_DEFAULT_MODEL=your-model-name \ -e LLM_MINOR_MODEL=your-minor-model-name ``` @@ -86,8 +86,8 @@ UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能 ### OpenAI ```bash --e LLM_DEFAULT_PROVIDER=OpenAI \ --e OPENAI_API_KEY=your-openai-api-key \ +-e LLM_PROVIDER=OpenAI \ +-e PROVIDER_API_KEY=your-openai-api-key \ -e LLM_DEFAULT_MODEL=gpt-4-turbo \ -e LLM_MINOR_MODEL=gpt-3.5-turbo ``` @@ -95,8 +95,8 @@ UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能 ### Anthropic Claude ```bash --e LLM_DEFAULT_PROVIDER=Anthropic \ --e ANTHROPIC_API_KEY=your-anthropic-api-key \ +-e LLM_PROVIDER=Anthropic \ +-e PROVIDER_API_KEY=your-anthropic-api-key \ -e LLM_DEFAULT_MODEL=claude-3-opus-20240229 \ -e LLM_MINOR_MODEL=claude-3-haiku-20240307 ``` @@ -104,8 +104,8 @@ UPage 支持多种 AI 提供商,您需要至少配置一个 AI 提供商才能 ### Ollama ```bash --e LLM_DEFAULT_PROVIDER=Ollama \ --e OLLAMA_API_BASE_URL=http://127.0.0.1:11434 \ +-e LLM_PROVIDER=Ollama \ +-e PROVIDER_BASE_URL=http://127.0.0.1:11434 \ -e LLM_DEFAULT_MODEL=llama3 \ -e LLM_MINOR_MODEL=llama3 ``` diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index e884f5c..ac25312 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -28,3 +28,25 @@ --ifm-color-primary-lightest: #bcc2e5; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } + +/* 为 API KEY 和 BASE URL 添加不同的颜色样式 */ +/* 红色,表示 API KEY */ +.api-key-highlight { + color: #e53935; + font-weight: bold; +} + +/* 蓝色,表示 BASE URL */ +.base-url-highlight { + color: #2196f3; + font-weight: bold; +} + +/* 暗色模式下的颜色调整 */ +[data-theme="dark"] .api-key-highlight { + color: #ff7961; +} + +[data-theme="dark"] .base-url-highlight { + color: #64b5f6; +} From c1ca87462c35bb6c60b59695801d8984589a80a7 Mon Sep 17 00:00:00 2001 From: LIlGG <1103069291@qq.com> Date: Mon, 29 Sep 2025 10:44:44 +0800 Subject: [PATCH 8/9] docs: add upage usage instructions document --- docs/content/index.md | 22 +- docs/content/user-guide/ai-page-generation.md | 159 --------------- docs/content/user-guide/basics.md | 136 +------------ docs/content/user-guide/page-management.md | 192 ------------------ docs/sidebars.js | 2 - docs/src/css/custom.css | 14 ++ docs/static/img/logo1.png | Bin 0 -> 25592 bytes docs/static/img/logo2.png | Bin 0 -> 26507 bytes docs/static/img/logo3.png | Bin 0 -> 26274 bytes 9 files changed, 34 insertions(+), 491 deletions(-) delete mode 100644 docs/content/user-guide/ai-page-generation.md delete mode 100644 docs/content/user-guide/page-management.md create mode 100644 docs/static/img/logo1.png create mode 100644 docs/static/img/logo2.png create mode 100644 docs/static/img/logo3.png diff --git a/docs/content/index.md b/docs/content/index.md index 908bd2b..9d0d676 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -2,21 +2,33 @@ id: index title: UPage 文档 slug: / +hide_title: true --- -# UPage +

+

+ UPage 主界面 +
+

+ +

+GitHub release +GitHub last commit +GitHub Workflow Status +Documentation +

-UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。 ## 什么是 UPage? -UPage 是一个开源的网页构建工具,它利用大语言模型,让用户能够通过自然语言描述来创建和定制网页。无论您是开发者、设计师还是内容创作者,UPage 都能帮助您快速将想法转化为可视化的网页。 +UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。它利用大语言模型,让用户能够通过自然语言描述来创建和定制网页。无论您是开发者、设计师还是内容创作者,UPage 都能帮助您快速将想法转化为可视化的网页。 ## 核心特性 -- **基于 AI 的页面生成**:通过自然语言描述生成完整的网页 -- **多种 AI 提供商支持**:兼容 OpenAI、Anthropic Claude、Google Gemini 等多种 AI 模型 +- **基于 LLM 的页面生成**:通过自然语言描述生成完整的网页 +- **多种 LLM 提供商支持**:兼容 OpenAI、Anthropic Claude、Google Gemini 等多种 LLM 模型 - **可视化编辑器**:简洁直观的可视化编辑器界面,实时预览 +- **多页面生成**:支持同时生成多个页面 - **代码导出**:生成标准的 HTML/CSS/JS 代码,方便集成到现有项目 - **响应式设计**:自动适应不同屏幕尺寸 - **部署集成**:支持一键部署到常见托管平台 diff --git a/docs/content/user-guide/ai-page-generation.md b/docs/content/user-guide/ai-page-generation.md deleted file mode 100644 index a2cb64e..0000000 --- a/docs/content/user-guide/ai-page-generation.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -id: ai-page-generation -title: AI 页面生成 ---- - -# AI 页面生成 - -UPage 的核心功能是通过人工智能生成网页。本文档将指导您如何使用 AI 功能快速创建和定制网页。 - -## 基于自然语言创建页面 - -### 创建新页面 - -1. 在 UPage 主界面,点击侧边栏中的"新建页面"按钮 -2. 选择"AI 创建"选项 -3. 在对话框中输入您的页面需求描述 -4. 点击"生成"按钮 - -### 编写有效的页面描述 - -为了获得最佳结果,建议按照以下方式编写页面描述: - -- **明确页面类型**:例如"产品展示页面"、"博客文章"、"联系表单"等 -- **指定关键元素**:列出页面应包含的主要组件和内容 -- **描述风格和布局**:说明您期望的设计风格和布局结构 -- **提供具体内容**:如果有特定文本或图片要求,请明确说明 - -示例描述: - -``` -创建一个现代风格的产品登录页面,用于展示我们的智能手表产品。页面应包含: -1. 顶部导航栏,带有品牌标志和菜单 -2. 醒目的标题和副标题,强调产品的主要卖点 -3. 产品图片展示区,包含至少3张不同角度的产品图 -4. 产品特点列表,使用图标和简短描述 -5. 价格信息和"立即购买"按钮 -6. 客户评价部分 -7. 常见问题解答 -8. 页脚,包含联系信息和社交媒体链接 -整体配色应使用深蓝色和白色为主,符合科技产品的定位 -``` - -## 迭代优化页面 - -### 修改现有页面 - -1. 选择要修改的页面 -2. 点击工具栏中的"AI 辅助"按钮 -3. 描述您想要进行的修改 -4. AI 将生成修改建议并应用到页面 - -### 局部调整 - -您也可以针对页面的特定部分进行 AI 辅助调整: - -1. 选择页面中的特定组件或区域 -2. 点击右键菜单中的"AI 辅助"选项 -3. 描述您希望对该部分进行的修改 -4. 确认 AI 生成的调整 - -## AI 提示技巧 - -### 有效的提示模式 - -以下是一些有效的 AI 提示模式: - -- **添加内容**:"在页面顶部添加一个公告栏,显示最新促销信息" -- **修改样式**:"将按钮颜色改为蓝色,并增加圆角效果" -- **调整布局**:"将产品展示区改为两列网格布局,每个产品卡片包含图片、标题和价格" -- **优化文案**:"将页面标题改为更吸引人的营销语言,强调产品的独特卖点" -- **增强功能**:"在产品图片区添加轮播效果,允许用户浏览多张产品图片" - -### 提示示例 - -以下是一些实际的提示示例: - -``` -将页面背景改为浅灰色,增加视觉层次感 -``` - -``` -优化页面的移动端显示效果,确保在小屏幕上也能良好展示 -``` - -``` -添加一个简单的联系表单,包含姓名、邮箱和留言字段 -``` - -``` -将产品描述文本改为更简洁有力的表达,突出产品解决的问题 -``` - -## 高级 AI 功能 - -### 风格迁移 - -您可以使用 AI 将一个页面的设计风格应用到另一个页面: - -1. 在 AI 提示中引用现有页面 -2. 描述您希望迁移的风格元素 -3. AI 将分析并应用相似的设计风格 - -示例: -``` -将我的"关于我们"页面的设计风格应用到这个"联系我们"页面,保持一致的视觉语言 -``` - -### 多语言支持 - -UPage 支持使用 AI 生成多语言内容: - -1. 创建基础页面 -2. 使用 AI 辅助功能,指定目标语言 -3. AI 将翻译页面内容并保持布局结构 - -示例: -``` -将此页面内容翻译成英文,保持相同的布局和设计 -``` - -## 最佳实践 - -### 审查和编辑 - -AI 生成的内容通常需要人工审查和编辑: - -1. 检查生成的文本是否准确、相关 -2. 调整布局和样式以符合品牌要求 -3. 确保所有链接和功能正常工作 -4. 优化图片和媒体内容 - -### 渐进式生成 - -对于复杂页面,采用渐进式生成方法: - -1. 首先生成基本页面结构 -2. 逐步添加和完善各个部分 -3. 使用 AI 辅助进行细节优化 -4. 最后进行整体协调和统一 - -## 故障排除 - -### 生成结果不理想 - -如果 AI 生成的页面不符合预期: - -1. 尝试提供更具体、更详细的描述 -2. 分解复杂需求为多个简单步骤 -3. 提供参考示例或链接 -4. 调整使用的 AI 模型(如果可用) - -### 性能问题 - -如果遇到性能问题: - -1. 减少单次生成的页面复杂度 -2. 分步骤生成复杂页面 -3. 检查网络连接和 API 状态 -4. 确认 AI 提供商配置正确 diff --git a/docs/content/user-guide/basics.md b/docs/content/user-guide/basics.md index 6e35da2..1327adb 100644 --- a/docs/content/user-guide/basics.md +++ b/docs/content/user-guide/basics.md @@ -5,138 +5,8 @@ title: 基础使用 # 基础使用 -本文档介绍 UPage 的基本使用方法,帮助您快速上手这款基于 AI 的网页构建平台。 +本文档介绍 UPage 的基本使用方法,帮助您快速上手这款基于大模型的可视化网页构建平台。 -## 登录系统 +## 主界面概览 -1. 打开浏览器,访问 UPage 的地址(例如 `http://localhost:3000`) -2. 如果已配置 Logto 认证,您将被重定向到登录页面 -3. 输入用户名和密码登录系统 -4. 如果未配置认证系统,您将直接进入 UPage 主界面 - -## 界面概览 - -UPage 的界面主要分为以下几个部分: - -- **顶部导航栏**:包含项目切换、用户信息和全局设置 -- **侧边栏**:包含页面列表和创建新页面的入口 -- **主内容区**:显示当前编辑的页面或预览 -- **工具栏**:提供各种编辑工具和操作按钮 - -## 创建新页面 - -### 使用 AI 创建页面 - -1. 点击侧边栏中的"新建页面"按钮 -2. 选择"AI 创建"选项 -3. 在对话框中描述您想要创建的页面,例如: - ``` - 创建一个产品展示页面,包含标题、产品图片、详细描述和购买按钮 - ``` -4. 点击"生成"按钮,系统将基于您的描述生成页面 -5. 生成完成后,您可以进一步编辑和调整页面内容 - -### 从模板创建页面 - -1. 点击侧边栏中的"新建页面"按钮 -2. 选择"从模板创建"选项 -3. 浏览可用的模板并选择一个适合您需求的模板 -4. 点击"使用此模板"按钮 -5. 根据需要编辑和自定义模板内容 - -### 从空白页面开始 - -1. 点击侧边栏中的"新建页面"按钮 -2. 选择"空白页面"选项 -3. 使用拖拽方式添加组件到页面 -4. 配置组件属性和样式 - -## 编辑页面 - -### 添加组件 - -1. 在编辑模式下,点击工具栏中的"组件"按钮 -2. 从组件库中选择所需组件 -3. 将组件拖拽到页面中的目标位置 -4. 调整组件大小和位置 - -### 编辑组件属性 - -1. 在页面中点击选择要编辑的组件 -2. 在右侧属性面板中编辑组件的属性 -3. 修改文本内容、图片、链接等 -4. 调整组件的样式、颜色、字体等 - -### 使用 AI 辅助编辑 - -1. 选择要编辑的组件或页面区域 -2. 点击工具栏中的"AI 辅助"按钮 -3. 描述您想要进行的修改,例如: - ``` - 将这段文本改为更吸引人的营销语言,强调产品的优势 - ``` -4. AI 将根据您的描述生成修改建议 -5. 确认修改或进行进一步调整 - -## 预览和发布 - -### 预览页面 - -1. 点击工具栏中的"预览"按钮 -2. 在预览模式下查看页面在不同设备上的显示效果 -3. 使用设备切换按钮查看响应式效果 - -### 发布页面 - -1. 完成页面编辑后,点击工具栏中的"发布"按钮 -2. 选择发布选项(如发布到网站、导出代码等) -3. 根据提示完成发布流程 - -## 管理页面 - -### 页面列表 - -1. 在侧边栏中查看所有已创建的页面 -2. 点击页面名称打开并编辑页面 -3. 使用搜索框查找特定页面 - -### 页面操作 - -1. 在页面列表中,每个页面右侧有操作菜单 -2. 点击操作菜单可以进行复制、重命名、删除等操作 -3. 使用拖拽调整页面顺序 - -## 系统设置 - -### 用户设置 - -1. 点击顶部导航栏中的用户头像 -2. 选择"个人设置" -3. 修改个人信息、密码等 - -### 系统配置 - -1. 点击顶部导航栏中的设置图标 -2. 配置系统参数、AI 提供商等 -3. 管理用户权限和角色(需要管理员权限) - -## 键盘快捷键 - -UPage 提供了一系列键盘快捷键,帮助您提高工作效率: - -| 快捷键 | 功能 | -| --- | --- | -| Ctrl+S | 保存当前页面 | -| Ctrl+Z | 撤销操作 | -| Ctrl+Y | 重做操作 | -| Ctrl+C | 复制选中的组件 | -| Ctrl+V | 粘贴组件 | -| Delete | 删除选中的组件 | -| Ctrl+P | 预览页面 | -| Esc | 退出当前模式或取消选择 | - -## 下一步 - -- 了解如何[使用 AI 生成页面](ai-page-generation) -- 学习[页面管理](page-management)的高级技巧 -- 探索更多[配置选项](../configuration) +建设中... diff --git a/docs/content/user-guide/page-management.md b/docs/content/user-guide/page-management.md deleted file mode 100644 index 70d0af6..0000000 --- a/docs/content/user-guide/page-management.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -id: page-management -title: 页面管理 ---- - -# 页面管理 - -本文档介绍如何在 UPage 中管理、组织和维护您的页面,帮助您有效地管理网站内容。 - -## 页面列表 - -### 查看页面列表 - -1. 在 UPage 主界面,侧边栏显示了所有已创建的页面 -2. 页面按创建时间或自定义顺序排列 -3. 每个页面条目显示页面名称和最后修改时间 - -### 搜索和筛选 - -1. 使用侧边栏顶部的搜索框搜索特定页面 -2. 可以按页面名称、标签或内容进行搜索 -3. 使用筛选选项按页面类型、创建日期或状态筛选 - -## 页面操作 - -### 基本操作 - -在页面列表中,每个页面右侧有操作菜单,提供以下功能: - -- **编辑**:打开页面编辑器 -- **预览**:在新标签页中预览页面 -- **复制**:创建页面的副本 -- **重命名**:修改页面名称 -- **删除**:删除页面(可恢复) -- **导出**:导出页面代码或资源 - -### 批量操作 - -选择多个页面可以执行批量操作: - -1. 使用复选框选择多个页面 -2. 点击批量操作按钮 -3. 选择要执行的操作(如删除、导出、应用标签等) - -## 页面组织 - -### 使用标签 - -标签是组织页面的有效方式: - -1. 在页面设置中添加标签 -2. 使用侧边栏中的标签筛选器查看特定标签的页面 -3. 标签可以用于分类页面(如"产品"、"博客"、"着陆页"等) - -### 创建文件夹 - -对于大型项目,可以使用文件夹组织页面: - -1. 点击侧边栏中的"新建文件夹"按钮 -2. 输入文件夹名称 -3. 将页面拖放到文件夹中 -4. 点击文件夹可以展开或折叠其内容 - -## 页面版本控制 - -### 版本历史 - -UPage 自动保存页面的版本历史: - -1. 在页面编辑器中,点击"版本历史"按钮 -2. 查看页面的所有历史版本 -3. 点击任何版本可以预览该版本的页面状态 - -### 恢复版本 - -如果需要恢复到之前的版本: - -1. 在版本历史中找到要恢复的版本 -2. 点击"恢复此版本"按钮 -3. 确认恢复操作 -4. 系统将创建一个新版本,内容与选定的历史版本相同 - -### 比较版本 - -比较不同版本之间的差异: - -1. 在版本历史中选择两个版本 -2. 点击"比较"按钮 -3. 系统将显示两个版本之间的差异,包括添加、删除和修改的内容 - -## 页面设置 - -### 基本设置 - -每个页面都有以下基本设置: - -1. **页面名称**:显示在侧边栏和浏览器标签中 -2. **页面描述**:用于 SEO 和社交媒体分享 -3. **URL 路径**:页面的访问路径 -4. **标签**:用于组织和分类页面 -5. **状态**:草稿、已发布或已归档 - -### SEO 设置 - -优化页面的搜索引擎表现: - -1. **Meta 标题**:搜索结果中显示的标题 -2. **Meta 描述**:搜索结果中显示的描述 -3. **关键词**:与页面内容相关的关键词 -4. **规范 URL**:指定页面的规范 URL -5. **索引设置**:控制搜索引擎是否索引页面 - -### 社交媒体设置 - -自定义页面在社交媒体上的显示方式: - -1. **社交图片**:在社交媒体分享时显示的图片 -2. **社交标题**:在社交媒体分享时显示的标题 -3. **社交描述**:在社交媒体分享时显示的描述 - -## 页面导出和导入 - -### 导出页面 - -UPage 支持多种导出格式: - -1. **HTML/CSS/JS**:导出标准 Web 文件 -2. **ZIP 归档**:包含所有页面资源的压缩包 -3. **JSON**:页面数据的 JSON 表示 -4. **PDF**:页面的 PDF 版本(适用于文档) - -导出步骤: - -1. 在页面列表中选择要导出的页面 -2. 点击"导出"按钮 -3. 选择导出格式 -4. 配置导出选项 -5. 点击"导出"开始下载 - -### 导入页面 - -导入现有页面: - -1. 点击"导入"按钮 -2. 选择导入源(文件、URL 或代码) -3. 上传文件或输入 URL/代码 -4. 配置导入选项 -5. 点击"导入"开始处理 - -## 页面备份 - -### 创建备份 - -定期备份您的页面: - -1. 在设置中找到"备份"选项 -2. 点击"创建备份"按钮 -3. 输入备份描述(可选) -4. 选择要包含的页面 -5. 点击"开始备份" - -### 恢复备份 - -从备份中恢复页面: - -1. 在设置中找到"备份"选项 -2. 找到要恢复的备份 -3. 点击"恢复"按钮 -4. 选择要恢复的页面 -5. 选择恢复模式(覆盖或创建新页面) -6. 点击"开始恢复" - -## 协作功能 - -### 共享页面 - -与团队成员共享页面: - -1. 在页面操作菜单中选择"共享" -2. 输入团队成员的电子邮件地址 -3. 选择权限级别(查看、编辑或管理) -4. 点击"发送邀请" - -### 评论和反馈 - -在页面上添加评论和反馈: - -1. 在预览模式下,点击"评论"按钮 -2. 点击页面任何位置添加评论 -3. 输入评论内容 -4. 可以@提及团队成员 -5. 评论可以标记为已解决 diff --git a/docs/sidebars.js b/docs/sidebars.js index badec8c..cf62cb4 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -53,8 +53,6 @@ const sidebars = { }, items: [ 'user-guide/basics', - 'user-guide/ai-page-generation', - 'user-guide/page-management', ], }, { diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index ac25312..349b681 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -50,3 +50,17 @@ [data-theme="dark"] .base-url-highlight { color: #64b5f6; } + +/* 亮暗模式下的 logo 切换 */ +.theme-logo { + position: relative; + display: inline-block; +} + +.theme-logo img { + content: url('/img/logo1.png'); +} + +[data-theme="dark"] .theme-logo img { + content: url('/img/logo2.png'); +} diff --git a/docs/static/img/logo1.png b/docs/static/img/logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..ae107db82401883e23c1e7a217d4bfe676ea0e9b GIT binary patch literal 25592 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 literal 0 HcmV?d00001 diff --git a/docs/static/img/logo2.png b/docs/static/img/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..665811da998fad0a4853f7ee81745c4b43755507 GIT binary patch literal 26507 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 LGCx^lfD8UFlwPYw literal 0 HcmV?d00001 diff --git a/docs/static/img/logo3.png b/docs/static/img/logo3.png new file mode 100644 index 0000000000000000000000000000000000000000..b17364ab886ccaa7bc6c16a3ec59a10f2a4c3c2b GIT binary patch literal 26274 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 l9P2w@gm&}#|DQ(hEbu Date: Mon, 29 Sep 2025 11:00:39 +0800 Subject: [PATCH 9/9] docs: add upage usage instructions document --- README.md | 31 ++++++++++++++++++++++++++++++- docs/src/css/custom.css | 4 ++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 51f8386..809f6bd 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,16 @@ ------------------------------ -UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。 +UPage 是一款基于大模型的可视化网页构建平台,支持多种 AI 提供商集成,基于自然语言快速实现定制化网页。UPage 优势在于: + +- **基于 LLM 的页面生成**:通过自然语言描述生成完整的网页 +- **多种 LLM 提供商支持**:兼容 OpenAI、Anthropic Claude、Google Gemini 等多种 LLM 模型 +- **可视化编辑器**:简洁直观的可视化编辑器界面,实时预览 +- **多页面生成**:支持同时生成多个页面 +- **代码导出**:生成标准的 HTML/CSS/JS 代码,方便集成到现有项目 +- **响应式设计**:自动适应不同屏幕尺寸 +- **部署集成**:支持一键部署到常见托管平台 + ------------------------------ @@ -49,3 +58,23 @@ docker run -d \ - `-v ./storage:/app/storage`:挂载存储目录 访问 `http://localhost:3000` 即可访问 UPage 的界面。 + +## 飞致云旗下的其他明星项目 + +- [Halo](https://github.com/halo-dev/halo) - 强大易用的开源建站工具 +- [JumpServer](https://github.com/jumpserver/jumpserver) - 广受欢迎的开源堡垒机 +- [DataEase](https://github.com/dataease/dataease) - 人人可用的开源 BI 工具 +- [MaxKB](https://github.com/maxkb/maxkb) - 强大易用的企业级智能体平台 +- [1Panel](https://github.com/1Panel-dev/1Panel) - 现代化、开源的 Linux 服务器运维管理面板 +- [Cordys CRM](https://github.com/cordys/cordys-crm) - 新一代的开源 AI CRM 系统 +- [MeterSphere](https://github.com/metersphere/metersphere) - 新一代的开源持续测试工具 + +## 许可证 + +本仓库遵循 [FIT2CLOUD Open Source License](https://github.com/halo-dev/upage/blob/main/LICENSE.txt) 开源协议,该许可证本质上是 GPLv3,但有一些额外的限制。 + +你可以基于 UPage 的源代码进行二次开发,但是需要遵守以下规定: + +不能替换和修改 UPage 的 Logo 和版权信息; +二次开发后的衍生作品必须遵守 GPL V3 的开源义务。 +如需商业授权,请联系 support@fit2cloud.com 。 diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 349b681..3eab65e 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -58,9 +58,9 @@ } .theme-logo img { - content: url('/img/logo1.png'); + content: url("/img/logo1.png"); } [data-theme="dark"] .theme-logo img { - content: url('/img/logo2.png'); + content: url("/img/logo2.png"); }