From d468195db04ddd846ac561e01c4355715c4e2682 Mon Sep 17 00:00:00 2001 From: lengbone <107662693+lengbone@users.noreply.github.com> Date: Thu, 2 Apr 2026 09:40:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 63 - README.md | 136 - backend/.env.example | 14 +- backend/config/custom_scene.py | 14 +- backend/config/prompt_config.py | 29 + backend/prompts/default.md | 20 + backend/routes/chat_callback.py | 32 +- backend/routes/proxy.py | 19 +- backend/routes/scenes.py | 13 +- backend/schemas/chat.py | 19 +- backend/services/local_llm_service.py | 111 +- backend/services/session_store.py | 35 + backend/tools/__init__.py | 6 + backend/tools/builtin/__init__.py | 4 + backend/tools/builtin/api_tools.py | 204 + backend/tools/builtin/current_time.py | 12 + backend/tools/builtin/rag_tool.py | 128 + backend/tools/builtin/weather.py | 23 + backend/tools/registry.py | 63 + frontend/.eslintrc | 132 - frontend/.npmrc | 1 - frontend/.prettierrc | 10 - frontend/.stylelintrc | 25 - frontend/craco.config.js | 27 - frontend/message.js | 12 - frontend/package-lock.json | 20491 ---------------- frontend/package.json | 71 - frontend/public/favicon.png | Bin 3251 -> 0 bytes frontend/public/index.html | 38 - frontend/public/robots.txt | 3 - frontend/src/App.tsx | 24 - frontend/src/app/api.ts | 31 - frontend/src/app/base.ts | 112 - frontend/src/app/index.ts | 15 - frontend/src/app/type.ts | 34 - frontend/src/assets/img/CallWrapper.svg | 37 - frontend/src/assets/img/CameraClose.svg | 5 - frontend/src/assets/img/CameraCloseNote.svg | 12 - frontend/src/assets/img/CameraOpen.svg | 5 - frontend/src/assets/img/Checked.svg | 5 - frontend/src/assets/img/Close.svg | 3 - frontend/src/assets/img/LeaveRoom.svg | 4 - frontend/src/assets/img/Logo.svg | 8 - frontend/src/assets/img/MicClose.svg | 5 - frontend/src/assets/img/MicOpen.svg | 8 - frontend/src/assets/img/Phone.svg | 5 - frontend/src/assets/img/ScreenCloseNote.svg | 5 - frontend/src/assets/img/ScreenOff.svg | 5 - frontend/src/assets/img/ScreenOn.svg | 4 - frontend/src/assets/img/mobileBg.png | Bin 339796 -> 0 bytes frontend/src/assets/img/setLocalPlayer.svg | 19 - frontend/src/assets/img/userAvatar.png | Bin 14013 -> 0 bytes .../AIAvatarLoading/index.module.less | 26 - .../src/components/AIAvatarLoading/index.tsx | 76 - .../components/AiAvatarCard/index.module.less | 100 - .../src/components/AiAvatarCard/index.tsx | 52 - .../AiChangeCard/CheckScene/index.module.less | 84 - .../AiChangeCard/CheckScene/index.tsx | 29 - .../components/AiChangeCard/index.module.less | 64 - .../src/components/AiChangeCard/index.tsx | 50 - .../DrawerRowItem/index.module.less | 84 - .../src/components/DrawerRowItem/index.tsx | 72 - .../FullScreenCard/index.module.less | 37 - .../src/components/FullScreenCard/index.tsx | 39 - .../src/components/Header/index.module.less | 129 - frontend/src/components/Header/index.tsx | 102 - .../Loading/AudioLoading/index.module.less | 37 - .../components/Loading/AudioLoading/index.tsx | 33 - .../Loading/HorizonLoading/index.module.less | 16 - .../Loading/HorizonLoading/index.tsx | 41 - .../Loading/VerticalLoading/index.module.less | 48 - .../Loading/VerticalLoading/index.tsx | 19 - .../LocalPlayerSet/index.module.less | 20 - .../src/components/LocalPlayerSet/index.tsx | 40 - .../NetworkIndicator/index.module.less | 60 - .../src/components/NetworkIndicator/index.tsx | 112 - .../ResizeWrapper/index.module.less | 8 - .../src/components/ResizeWrapper/index.tsx | 37 - .../src/components/UserTag/index.module.less | 34 - frontend/src/components/UserTag/index.tsx | 26 - frontend/src/config/index.ts | 24 - frontend/src/index.less | 43 - frontend/src/index.module.less | 42 - frontend/src/index.tsx | 17 - frontend/src/interface.ts | 9 - frontend/src/lib/RtcClient.ts | 436 - frontend/src/lib/listenerHooks.ts | 268 - frontend/src/lib/useCommon.ts | 272 - .../InvokeButton/index.module.less | 68 - .../Antechamber/InvokeButton/index.tsx | 33 - .../Antechamber/InvokeButton/loading.tsx | 27 - .../MainArea/Antechamber/index.module.less | 69 - .../MainPage/MainArea/Antechamber/index.tsx | 39 - .../MainArea/Room/AudioController.tsx | 56 - .../MainPage/MainArea/Room/CameraArea.tsx | 128 - .../MainPage/MainArea/Room/Conversation.tsx | 113 - .../pages/MainPage/MainArea/Room/ToolBar.tsx | 83 - .../MainPage/MainArea/Room/index.module.less | 430 - .../pages/MainPage/MainArea/Room/index.tsx | 49 - .../pages/MainPage/MainArea/index.module.less | 262 - .../src/pages/MainPage/MainArea/index.tsx | 16 - .../DeviceDrawerButton/index.module.less | 38 - .../components/DeviceDrawerButton/index.tsx | 118 - .../components/Operation/index.module.less | 21 - .../Menu/components/Operation/index.tsx | 23 - .../components/Subtitle/index.module.less | 23 - .../Menu/components/Subtitle/index.tsx | 35 - .../src/pages/MainPage/Menu/index.module.less | 231 - frontend/src/pages/MainPage/Menu/index.tsx | 79 - frontend/src/pages/MainPage/index.module.less | 37 - frontend/src/pages/MainPage/index.tsx | 82 - .../Mobile/MobileToolBar/index.module.less | 61 - .../src/pages/Mobile/MobileToolBar/index.tsx | 63 - .../Mobile/SettingsDrawer/index.module.less | 58 - .../src/pages/Mobile/SettingsDrawer/index.tsx | 91 - .../components/SettingsItem/index.module.less | 36 - .../Mobile/components/SettingsItem/index.tsx | 33 - frontend/src/react-app-env.d.ts | 11 - frontend/src/store/index.ts | 26 - frontend/src/store/slices/device.ts | 74 - frontend/src/store/slices/room.ts | 394 - frontend/src/theme.less | 6 - frontend/src/utils/handler.ts | 160 - frontend/src/utils/logger.ts | 24 - frontend/src/utils/utils.less | 32 - frontend/src/utils/utils.ts | 82 - frontend/tsconfig.json | 24 - simple-frontend/aigc-voice-client.js | 639 + simple-frontend/cert.pem | 19 + simple-frontend/example.html | 448 + simple-frontend/frontend-integration.md | 259 + simple-frontend/key.pem | 28 + 132 files changed, 2081 insertions(+), 27234 deletions(-) delete mode 100644 CLAUDE.md delete mode 100644 README.md create mode 100644 backend/config/prompt_config.py create mode 100644 backend/prompts/default.md create mode 100644 backend/services/session_store.py create mode 100644 backend/tools/__init__.py create mode 100644 backend/tools/builtin/__init__.py create mode 100644 backend/tools/builtin/api_tools.py create mode 100644 backend/tools/builtin/current_time.py create mode 100644 backend/tools/builtin/rag_tool.py create mode 100644 backend/tools/builtin/weather.py create mode 100644 backend/tools/registry.py delete mode 100644 frontend/.eslintrc delete mode 100644 frontend/.npmrc delete mode 100644 frontend/.prettierrc delete mode 100644 frontend/.stylelintrc delete mode 100644 frontend/craco.config.js delete mode 100644 frontend/message.js delete mode 100644 frontend/package-lock.json delete mode 100644 frontend/package.json delete mode 100644 frontend/public/favicon.png delete mode 100644 frontend/public/index.html delete mode 100644 frontend/public/robots.txt delete mode 100644 frontend/src/App.tsx delete mode 100644 frontend/src/app/api.ts delete mode 100644 frontend/src/app/base.ts delete mode 100644 frontend/src/app/index.ts delete mode 100644 frontend/src/app/type.ts delete mode 100644 frontend/src/assets/img/CallWrapper.svg delete mode 100644 frontend/src/assets/img/CameraClose.svg delete mode 100644 frontend/src/assets/img/CameraCloseNote.svg delete mode 100644 frontend/src/assets/img/CameraOpen.svg delete mode 100644 frontend/src/assets/img/Checked.svg delete mode 100644 frontend/src/assets/img/Close.svg delete mode 100644 frontend/src/assets/img/LeaveRoom.svg delete mode 100644 frontend/src/assets/img/Logo.svg delete mode 100644 frontend/src/assets/img/MicClose.svg delete mode 100644 frontend/src/assets/img/MicOpen.svg delete mode 100644 frontend/src/assets/img/Phone.svg delete mode 100644 frontend/src/assets/img/ScreenCloseNote.svg delete mode 100644 frontend/src/assets/img/ScreenOff.svg delete mode 100644 frontend/src/assets/img/ScreenOn.svg delete mode 100644 frontend/src/assets/img/mobileBg.png delete mode 100644 frontend/src/assets/img/setLocalPlayer.svg delete mode 100644 frontend/src/assets/img/userAvatar.png delete mode 100644 frontend/src/components/AIAvatarLoading/index.module.less delete mode 100644 frontend/src/components/AIAvatarLoading/index.tsx delete mode 100644 frontend/src/components/AiAvatarCard/index.module.less delete mode 100644 frontend/src/components/AiAvatarCard/index.tsx delete mode 100644 frontend/src/components/AiChangeCard/CheckScene/index.module.less delete mode 100644 frontend/src/components/AiChangeCard/CheckScene/index.tsx delete mode 100644 frontend/src/components/AiChangeCard/index.module.less delete mode 100644 frontend/src/components/AiChangeCard/index.tsx delete mode 100644 frontend/src/components/DrawerRowItem/index.module.less delete mode 100644 frontend/src/components/DrawerRowItem/index.tsx delete mode 100644 frontend/src/components/FullScreenCard/index.module.less delete mode 100644 frontend/src/components/FullScreenCard/index.tsx delete mode 100644 frontend/src/components/Header/index.module.less delete mode 100644 frontend/src/components/Header/index.tsx delete mode 100644 frontend/src/components/Loading/AudioLoading/index.module.less delete mode 100644 frontend/src/components/Loading/AudioLoading/index.tsx delete mode 100644 frontend/src/components/Loading/HorizonLoading/index.module.less delete mode 100644 frontend/src/components/Loading/HorizonLoading/index.tsx delete mode 100644 frontend/src/components/Loading/VerticalLoading/index.module.less delete mode 100644 frontend/src/components/Loading/VerticalLoading/index.tsx delete mode 100644 frontend/src/components/LocalPlayerSet/index.module.less delete mode 100644 frontend/src/components/LocalPlayerSet/index.tsx delete mode 100644 frontend/src/components/NetworkIndicator/index.module.less delete mode 100644 frontend/src/components/NetworkIndicator/index.tsx delete mode 100644 frontend/src/components/ResizeWrapper/index.module.less delete mode 100644 frontend/src/components/ResizeWrapper/index.tsx delete mode 100644 frontend/src/components/UserTag/index.module.less delete mode 100644 frontend/src/components/UserTag/index.tsx delete mode 100644 frontend/src/config/index.ts delete mode 100644 frontend/src/index.less delete mode 100644 frontend/src/index.module.less delete mode 100644 frontend/src/index.tsx delete mode 100644 frontend/src/interface.ts delete mode 100644 frontend/src/lib/RtcClient.ts delete mode 100644 frontend/src/lib/listenerHooks.ts delete mode 100644 frontend/src/lib/useCommon.ts delete mode 100644 frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.module.less delete mode 100644 frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/loading.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Antechamber/index.module.less delete mode 100644 frontend/src/pages/MainPage/MainArea/Antechamber/index.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/AudioController.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/CameraArea.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/Conversation.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/ToolBar.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/index.module.less delete mode 100644 frontend/src/pages/MainPage/MainArea/Room/index.tsx delete mode 100644 frontend/src/pages/MainPage/MainArea/index.module.less delete mode 100644 frontend/src/pages/MainPage/MainArea/index.tsx delete mode 100644 frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.module.less delete mode 100644 frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.tsx delete mode 100644 frontend/src/pages/MainPage/Menu/components/Operation/index.module.less delete mode 100644 frontend/src/pages/MainPage/Menu/components/Operation/index.tsx delete mode 100644 frontend/src/pages/MainPage/Menu/components/Subtitle/index.module.less delete mode 100644 frontend/src/pages/MainPage/Menu/components/Subtitle/index.tsx delete mode 100644 frontend/src/pages/MainPage/Menu/index.module.less delete mode 100644 frontend/src/pages/MainPage/Menu/index.tsx delete mode 100644 frontend/src/pages/MainPage/index.module.less delete mode 100644 frontend/src/pages/MainPage/index.tsx delete mode 100644 frontend/src/pages/Mobile/MobileToolBar/index.module.less delete mode 100644 frontend/src/pages/Mobile/MobileToolBar/index.tsx delete mode 100644 frontend/src/pages/Mobile/SettingsDrawer/index.module.less delete mode 100644 frontend/src/pages/Mobile/SettingsDrawer/index.tsx delete mode 100644 frontend/src/pages/Mobile/components/SettingsItem/index.module.less delete mode 100644 frontend/src/pages/Mobile/components/SettingsItem/index.tsx delete mode 100644 frontend/src/react-app-env.d.ts delete mode 100644 frontend/src/store/index.ts delete mode 100644 frontend/src/store/slices/device.ts delete mode 100644 frontend/src/store/slices/room.ts delete mode 100644 frontend/src/theme.less delete mode 100644 frontend/src/utils/handler.ts delete mode 100644 frontend/src/utils/logger.ts delete mode 100644 frontend/src/utils/utils.less delete mode 100644 frontend/src/utils/utils.ts delete mode 100644 frontend/tsconfig.json create mode 100644 simple-frontend/aigc-voice-client.js create mode 100644 simple-frontend/cert.pem create mode 100644 simple-frontend/example.html create mode 100644 simple-frontend/frontend-integration.md create mode 100644 simple-frontend/key.pem diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index fce5f44..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,63 +0,0 @@ -# CLAUDE.md - -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## 项目概述 - -RTC AIGC Demo — 基于火山引擎 RTC SDK 的实时 AI 语音对话演示应用,前后端分离架构。前端 React + TypeScript,后端 Python FastAPI。 - -## 常用命令 - -### 前端 (frontend/) -```bash -cd frontend -npm install # 安装依赖 -npm run dev # 开发服务器 (localhost:3000) -npm run build # 生产构建 -npm run eslint # ESLint 检查并修复 -npm run stylelint # LESS 样式检查 -npm run prettier # 代码格式化 -npm run test # 运行测试 -``` - -### 后端 (backend/) -```bash -cd backend -cp .env.example .env # 首次需复制环境变量配置 -uv sync # 安装依赖(使用 uv 包管理器) -uv run uvicorn server:app --host 0.0.0.0 --port 3001 --reload # 启动开发服务器 -``` - -## 架构 - -### 前后端通信 -- 前端默认连接 `http://localhost:3001`(配置在 `frontend/src/config/index.ts` 的 `AIGC_PROXY_HOST`) -- 后端 FastAPI 入口:`backend/server.py` - -### 前端核心模块 -- **状态管理**: Redux Toolkit,两个 slice:`store/slices/room.ts`(房间状态)、`store/slices/device.ts`(设备状态) -- **RTC 封装**: `src/lib/RtcClient.ts` 封装 `@volcengine/rtc` SDK -- **API 层**: `src/app/api.ts` 定义 `getScenes`、`StartVoiceChat`、`StopVoiceChat` 接口 -- **页面结构**: `pages/MainPage/` 包含 Room(通话中)和 Antechamber(通话前)两个主要区域 -- **路径别名**: `@/` → `src/`(通过 craco + tsconfig paths 配置) -- **UI 组件库**: Arco Design -- **CSS**: LESS - -### 后端核心模块 -- **场景配置**: `config/custom_scene.py` — 从环境变量构建场景配置,自动生成 RoomId/UserId/Token -- **API 代理**: `/proxy` 端点转发请求到火山引擎 RTC OpenAPI(含请求签名) -- **LLM 集成**: `services/local_llm_service.py` — Ark SDK 对接,SSE 流式响应 -- **请求签名**: `security/signer.py` -- **Token 生成**: `security/rtc_token.py` - -### LLM 模式 -固定使用 `CustomLLM` 模式:火山 RTC 回调本后端的 `/api/chat_callback`,再由本后端调用方舟 LLM。 - -### 关键环境变量(backend/.env) - -- `CUSTOM_ACCESS_KEY_ID` / `CUSTOM_SECRET_KEY`: 火山引擎凭证 -- `CUSTOM_RTC_APP_ID` / `CUSTOM_RTC_APP_KEY`: RTC 应用配置 -- `CUSTOM_LLM_URL`: 回调地址(默认本地,生产用 ngrok 公网地址) -- `LOCAL_LLM_API_KEY` / `LOCAL_LLM_MODEL`: 本地回调调用方舟的凭证 -- `CUSTOM_ASR_APP_ID` / `CUSTOM_TTS_APP_ID`: 语音识别/合成配置 -- `CUSTOM_AVATAR_*`: 数字人配置(可选) diff --git a/README.md b/README.md deleted file mode 100644 index a52fe3d..0000000 --- a/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# 交互式AIGC场景 AIGC Demo - -此 Demo 为简化版本, 如您有 1.5.x 版本 UI 的诉求, 可切换至 1.5.1 分支。 -跑通阶段时, 无须关心代码实现。当前推荐直接使用 `backend/.env` + `backend/config/custom_scene.py` 完成 `Custom` 场景配置。 - -## 简介 -- 在 AIGC 对话场景下,火山引擎 AIGC-RTC Server 云端服务,通过整合 RTC 音视频流处理,ASR 语音识别,大模型接口调用集成,以及 TTS 语音生成等能力,提供基于流式语音的端到端AIGC能力链路。 -- 用户只需调用基于标准的 OpenAPI 接口即可配置所需的 ASR、LLM、TTS 类型和参数。火山引擎云端计算服务负责边缘用户接入、云端资源调度、音视频流压缩、文本与语音转换处理以及数据订阅传输等环节。简化开发流程,让开发者更专注在对大模型核心能力的训练及调试,从而快速推进AIGC产品应用创新。 -- 同时火山引擎 RTC拥有成熟的音频 3A 处理、视频处理等技术以及大规模音视频聊天能力,可支持 AIGC 产品更便捷的支持多模态交互、多人互动等场景能力,保持交互的自然性和高效性。 - -## 【必看】环境准备 - -> 本项目已重构为 monorepo 结构,前端位于 `frontend/`,Python 后端位于 `backend/`。 - -**前端环境:Node 16.0+** -**后端环境:Python 3.13+** - -### 1. 运行环境 -需要准备两个 Terminal,分别启动后端服务和前端页面。 - -### 2. 服务开通 -开通 ASR、TTS、LLM、RTC 等服务,可参考 [开通服务](https://www.volcengine.com/docs/6348/1315561?s=g) 进行相关服务的授权与开通。 - -### 3. 场景配置 -当前真正生效的主配置入口是 `backend/.env` + `backend/config/custom_scene.py`。 - -您可以自定义具体场景, 并按需根据模版填充 `SceneConfig`、`AccountConfig`、`RTCConfig`、`VoiceChat` 中需要的参数。 - -Demo 中以 `Custom` 场景为例,您也可以自行新增其他 JSON 场景。 - -`Custom` 场景建议先执行以下步骤: - -```shell -cp backend/.env.example backend/.env -``` - -注意: -- `SceneConfig`:场景的信息,例如名称、头像等。 -- `AccountConfig`:`Custom` 场景默认从 `backend/.env` 读取 AK/SK,其他场景仍在 JSON 中配置。 -- `RTCConfig`:场景下的 RTC 配置。 - - AppId、AppKey 可从 https://console.volcengine.com/rtc/aigc/listRTC 中获取。 - - `Custom` 场景的 AppId、AppKey、RoomId、UserId、Token 可通过 `backend/.env` 注入。 - - RoomId、UserId 可自定义也可不填,交由服务端生成。 -- `VoiceChat`: 场景下的 AIGC 配置。 - - `Custom` 场景的 TaskId、Agent 用户信息、欢迎语、System Message 以及 LLM 模式参数均通过 `backend/.env` 注入。 - - 固定使用 `CustomLLM` 模式,由本后端提供回调接口,推荐通过 ngrok 暴露公网地址。 - - 可参考 https://www.volcengine.com/docs/6348/1558163 中参数描述,完整填写参数内容。 - - `ASRConfig`、`TTSConfig`、`AvatarConfig` 等复杂结构由 `backend/config/custom_scene.py` 维护默认值,并从 `backend/.env` 读取关键运行参数。 - - 当前首版默认不启用 RAG 主链路,`backend/services/rag_service.py` 仅保留为后续扩展位。 - - 可通过 [快速跑通 Demo](https://console.volcengine.com/rtc/aigc/run?s=g) 快速获取参数,再分别填入 `backend/.env` 和 `backend/config/custom_scene.py` 的默认结构中。 - -### 第三方 CustomLLM 接入 - -当前 `backend` 自己提供回调接口,核心配置: - -```dotenv -CUSTOM_LLM_URL=http://127.0.0.1:3001/api/chat_callback -CUSTOM_LLM_API_KEY=your-callback-token -LOCAL_LLM_API_KEY=your-ark-api-key -LOCAL_LLM_MODEL=your-ark-endpoint-id -``` - -本地起好 `backend` 以后,用 `ngrok` 暴露 `3001` 端口,再把 `CUSTOM_LLM_URL` 改成公网地址: - -```dotenv -CUSTOM_LLM_URL=https://your-ngrok-domain.ngrok-free.app/api/chat_callback -``` - -说明: - -- `CUSTOM_LLM_URL` 是写进 `StartVoiceChat.LLMConfig.Url` 的地址 -- 默认可以先用本地地址启动服务,等 `ngrok` 跑起来后再改成公网 `https` 地址 -- 当前 backend 内置的固定回调路由是 `POST /api/chat_callback` -- `RTC_OPENAPI_VERSION` 默认使用 `2025-06-01` -## 快速开始 -请注意,服务端和 Web 端都需要启动, 启动步骤如下: -### 后端服务(Python FastAPI) -```shell -cd backend -cp .env.example .env -uv sync -uv run uvicorn server:app --host 0.0.0.0 --port 3001 --reload -``` - -### 前端页面 -```shell -cd frontend -npm install -npm run dev -``` - -### 常见问题 -| 问题 | 解决方案 | -| :-- | :-- | -| 如何使用第三方模型、Coze Bot | 当前主配置入口是 `backend/.env` + `backend/config/custom_scene.py`。如果接自己的模型,推荐使用当前 backend 内置的 `/api/chat_callback` 作为 `CustomLLM` 回调接口,再通过 `ngrok` 暴露公网地址,并把它填到 `CUSTOM_LLM_URL`。 | -| **启动智能体之后, 对话无反馈,或者一直停留在 "AI 准备中, 请稍侯";在启用数字人的情况下,一直停留在“数字人准备中,请稍候”** |
  • 可能因为控制台中相关权限没有正常授予,请参考[流程](https://www.volcengine.com/docs/6348/1315561?s=g)再次确认下是否完成相关操作。此问题的可能性较大,建议仔细对照是否已经将相应的权限开通。
  • 参数传递可能有问题, 例如参数大小写、类型等问题,请再次确认下这类型问题是否存在。
  • 相关资源可能未开通或者用量不足/欠费,请再次确认。
  • **请检查当前使用的模型 ID / 数字人 AppId / Token 等内容都是正确且可用的。**
  • 数字人服务有并发限制,当达到并发限制时,同样会表现为一直停留在“数字人准备中”状态
  • | -| **浏览器报了 `Uncaught (in promise) r: token_error` 错误** | 请检查您填在项目中的 RTC Token 是否合法,检测用于生成 Token 的 UserId、RoomId 以及 Token 本身是否与项目中填写的一致;或者 Token 可能过期, 可尝试重新生成下。 | -| **[StartVoiceChat]Failed(Reason: The task has been started. Please do not call the startup task interface repeatedly.)** 报错 | 如果设置的 RoomId、UserId 为固定值,重复调用 startAgent 会导致出错,只需先调用 stopAgent 后再重新 startAgent 即可。 | -| 为什么麦克风、摄像头开启失败?浏览器报了`TypeError: Cannot read properties of undefined (reading 'getUserMedia')` | 检查当前页面是否为[安全上下文](https://developer.mozilla.org/zh-CN/docs/Web/Security/Secure_Contexts)(简单来说,检查当前页面是否为 `localhost` 或者 是否为 https 协议)。浏览器[限制](https://developer.mozilla.org/zh-CN/docs/Web/Security/Secure_Contexts/features_restricted_to_secure_contexts) `getUserMedia` 只能在安全上下文中使用。 | -| 为什么我的麦克风正常、摄像头也正常,但是设备没有正常工作? | 可能是设备权限未授予,详情可参考 [Web 排查设备权限获取失败问题](https://www.volcengine.com/docs/6348/1356355?s=g)。 | -| 接口调用时, 返回 "Invalid 'Authorization' header, Pls check your authorization header" 错误 | `Custom` 场景请检查 `backend/.env` 中的 `CUSTOM_ACCESS_KEY_ID` / `CUSTOM_SECRET_KEY`;其他场景请检查对应 `backend/scenes/*.json` 中的 AK/SK | -| 什么是 RTC | **R**eal **T**ime **C**ommunication, RTC 的概念可参考[官网文档](https://www.volcengine.com/docs/6348/66812?s=g)。 | -| 不清楚什么是主账号,什么是子账号 | 可以参考[官方概念](https://www.volcengine.com/docs/6257/64963?hyperlink_open_type=lark.open_in_browser&s=g) 。| -| 我有自己的服务端了, 我应该怎么让前端调用我的服务端呢 | 修改 `frontend/src/config/index.ts` 中的 `AIGC_PROXY_HOST` 请求域名;如需同步调整接口路由,可再看 `frontend/src/app/api.ts` 里的 `BasicAPIs` / `AigcAPIs` | - -如果有上述以外的问题,欢迎联系我们反馈。 - -### 相关文档 -- [场景介绍](https://www.volcengine.com/docs/6348/1310537?s=g) -- [Demo 体验](https://www.volcengine.com/docs/6348/1310559?s=g) -- [场景搭建方案](https://www.volcengine.com/docs/6348/1310560?s=g) - -## 更新日志 - -### OpenAPI 更新 -参考 [OpenAPI 更新](https://www.volcengine.com/docs/6348/1544162) 中与 实时对话式 AI 相关的更新内容。 - -### Demo 更新 - -#### [1.6.0] -- 2025-09-30 - - 更新数字人场景相关配置 -- 2025-07-08 - - 更新 RTC Web SDK 版本至 4.66.20 -- 2025-06-26 - - 修复进房有问题的 BUG -- 2025-06-23 - - 简化 Demo 使用, 配置归一化。 - - 删除无用组件。 - - 追加服务端 README。 -- 2025-06-18 - - 更新 RTC Web SDK 版本至 4.66.16 - - 更新 UI 和参数配置方式 - - 更新 Readme 文档 - - 追加 Node 服务的参数检测能力 - - 追加 Node 服务的 Token 生成能力 diff --git a/backend/.env.example b/backend/.env.example index 7db803a..62bafa9 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -16,19 +16,18 @@ CUSTOM_SCENE_ICON=https://lf3-rtc-demo.volccdn.com/obj/rtc-aigc-assets/DoubaoAva CUSTOM_TASK_ID=your-task-id CUSTOM_AGENT_USER_ID=your-agent-user-id CUSTOM_AGENT_TARGET_USER_ID= # 留空默认等于 RTC_USER_ID -CUSTOM_AGENT_WELCOME_MESSAGE=你好,我是小乖,有什么需要帮忙的吗? +CUSTOM_AGENT_WELCOME_MESSAGE=你好,我是小块,有什么需要帮忙的吗? CUSTOM_INTERRUPT_MODE=0 # ============ LLM 配置 (RTC OpenAPI 侧) ============ # RTC 会回调 CUSTOM_LLM_URL 指定的地址(通常是本后端的 /api/chat_callback) -CUSTOM_LLM_SYSTEM_MESSAGE=你是小乖,性格幽默又善解人意。你在表达时需简明扼要,有自己的观点。 CUSTOM_LLM_THINKING_TYPE=disabled CUSTOM_LLM_VISION_ENABLE=false # 本地调试时,可先保持默认本地回调地址。 # 等 ngrok 跑起来后,再把 CUSTOM_LLM_URL 改成公网 https 地址,例如: # https://your-ngrok-domain.ngrok-free.app/api/chat_callback -CUSTOM_LLM_URL=https://postvarioloid-leeann-didynamous.ngrok-free.dev +CUSTOM_LLM_URL= https://postvarioloid-leeann-didynamous.ngrok-free.dev # 火山调用当前 backend 的 /api/chat_callback 时使用的 Bearer Token,可留空 CUSTOM_LLM_API_KEY= CUSTOM_LLM_MODEL_NAME= @@ -70,8 +69,8 @@ VOLC_KB_ENABLED=false VOLC_KB_NAME=your_collection_name # 知识库名称(与 VOLC_KB_RESOURCE_ID 二选一) VOLC_KB_RESOURCE_ID= # 知识库唯一 ID(优先级高于 NAME) VOLC_KB_PROJECT=default # 知识库所属项目 -VOLC_KB_ENDPOINT=https://api-knowledgebase.mlp.cn-beijing.volces.com -VOLC_KB_TOP_K=5 # 检索返回条数 +VOLC_KB_ENDPOINT=https://postvarioloid-leeann-didynamous.ngrok-free.dev +VOLC_KB_TOP_K=3 # 检索返回条数 VOLC_KB_RERANK=false # 是否开启 rerank 重排 VOLC_KB_ATTACHMENT_LINK=false # 是否返回图片临时链接(图文混合场景开启,链接有效期 10 分钟) @@ -87,3 +86,8 @@ CUSTOM_AVATAR_BACKGROUND_URL= CUSTOM_AVATAR_VIDEO_BITRATE=2000 CUSTOM_AVATAR_APP_ID= CUSTOM_AVATAR_TOKEN= + +# ============ Tools (Function Calling) 配置 ============ +# 启用后 LLM 可主动调用已注册的工具函数查询真实数据 +TOOLS_ENABLED=true +TOOLS_MAX_ROUNDS=5 # 单次对话最大工具调用轮数(防无限循环) diff --git a/backend/config/custom_scene.py b/backend/config/custom_scene.py index a19b99d..8c70cb2 100644 --- a/backend/config/custom_scene.py +++ b/backend/config/custom_scene.py @@ -3,6 +3,7 @@ Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. SPDX-license-identifier: BSD-3-Clause """ +import uuid from typing import Any from utils.env import ( @@ -21,7 +22,7 @@ from utils.env import ( CUSTOM_SCENE_ID = "Custom" -DEFAULT_SCENE_NAME = "自定义助手" +DEFAULT_SCENE_NAME = "小块" DEFAULT_SCENE_ICON = ( "https://lf3-rtc-demo.volccdn.com/obj/rtc-aigc-assets/DoubaoAvatar.png" ) @@ -32,7 +33,7 @@ DEFAULT_ASR_MODE = "smallmodel" DEFAULT_ASR_CLUSTER = "volcengine_streaming_common" DEFAULT_TTS_PROVIDER = "volcano" DEFAULT_TTS_CLUSTER = "volcano_tts" -DEFAULT_TTS_VOICE_TYPE = "BV001_streaming" +DEFAULT_TTS_VOICE_TYPE = "zh_female_vv_uranus_bigtts" DEFAULT_AVATAR_TYPE = "3min" DEFAULT_AVATAR_ROLE = "250623-zhibo-linyunzhi" DEFAULT_AVATAR_VIDEO_BITRATE = 2000 @@ -43,12 +44,11 @@ def get_rtc_openapi_version() -> str: def build_llm_settings_from_env(missing: list[str]) -> dict[str, Any]: + from config.prompt_config import load_prompt settings = { - "system_message": require_env("CUSTOM_LLM_SYSTEM_MESSAGE", missing), + "system_message":load_prompt("default"), "vision_enable": env_bool("CUSTOM_LLM_VISION_ENABLE", False), - "thinking_type": env_str( - "CUSTOM_LLM_THINKING_TYPE", DEFAULT_LLM_THINKING_TYPE - ), + "thinking_type": env_str("CUSTOM_LLM_THINKING_TYPE", DEFAULT_LLM_THINKING_TYPE), "url": require_env("CUSTOM_LLM_URL", missing), "api_key": env_str("CUSTOM_LLM_API_KEY"), "model_name": env_str("CUSTOM_LLM_MODEL_NAME"), @@ -106,7 +106,7 @@ def build_custom_scene_from_env() -> dict[str, Any]: access_key_id = require_env("CUSTOM_ACCESS_KEY_ID", missing) secret_key = require_env("CUSTOM_SECRET_KEY", missing) rtc_app_id = require_env("CUSTOM_RTC_APP_ID", missing) - task_id = require_env("CUSTOM_TASK_ID", missing) + task_id = env_str("CUSTOM_TASK_ID") or str(uuid.uuid4()) agent_user_id = require_env("CUSTOM_AGENT_USER_ID", missing) welcome_message = require_env("CUSTOM_AGENT_WELCOME_MESSAGE", missing) asr_app_id = require_env("CUSTOM_ASR_APP_ID", missing) diff --git a/backend/config/prompt_config.py b/backend/config/prompt_config.py new file mode 100644 index 0000000..273878e --- /dev/null +++ b/backend/config/prompt_config.py @@ -0,0 +1,29 @@ +""" +提示词注册表。 + +- 每个提示词对应 prompts/ 目录下的一个 .md 文件 +- 新增提示词:1) 在 prompts/ 下新建 .md 文件;2) 在 PROMPT_MAP 中追加一行 +- 不同接口/模型调用 chat_stream(prompt_name="xxx") 来切换提示词 +""" + +from pathlib import Path + +PROMPTS_DIR = Path(__file__).parent.parent / "prompts" + +# name → .md 文件路径 +PROMPT_MAP: dict[str, Path] = { + "default": PROMPTS_DIR / "default.md", + # 追加示例: + # "checkin": PROMPTS_DIR / "checkin.md", +} + + +def load_prompt(name: str = "default") -> str: + """加载指定名称的提示词,文件不存在时抛出清晰的错误。""" + path = PROMPT_MAP.get(name) + if path is None: + available = list(PROMPT_MAP.keys()) + raise ValueError(f"未知提示词名称: {name!r},可选: {available}") + if not path.exists(): + raise FileNotFoundError(f"提示词文件不存在: {path}") + return path.read_text(encoding="utf-8").strip() diff --git a/backend/prompts/default.md b/backend/prompts/default.md new file mode 100644 index 0000000..6021f29 --- /dev/null +++ b/backend/prompts/default.md @@ -0,0 +1,20 @@ +# 角色定位 +你是语音助手小块,专门负责解答考勤打卡相关问题和系统使用说明,回答会直接朗读给用户。 + +# 输出规范 +- 禁止使用任何Markdown语法,比如加粗、标题、表格、列表符号等 +- 数字要口语化,像“二十三个人”“出勤率百分之九十五”这样说 +- 每次回答控制在三到五句话,语气要自然,就像真人说话一样 + +# 信息使用优先级 +回答问题时按以下顺序使用信息: +1. 优先用系统提供的知识库内容,回答系统功能介绍、操作说明类问题时,必须以知识库为准,不能自己发挥 +2. 回答考勤数据、打卡记录等实时数据时,必须调用工具查询,不能凭空编造数字 + +# 工具使用规范 +- 用户问某部门出勤、打卡人数这类数据时,要调用对应的工具 +- 工具返回结果后,用口语总结关键信息,不要直接读原始数据格式 + +# 兜底处理 +- 如果知识库和工具都查不到相关信息,就告诉用户“暂时查不到,稍后再试” +- 遇到超出考勤和系统说明范围的问题,简短回应“这个我帮不上忙”,不用展开说别的 \ No newline at end of file diff --git a/backend/routes/chat_callback.py b/backend/routes/chat_callback.py index dd5367b..65f159e 100644 --- a/backend/routes/chat_callback.py +++ b/backend/routes/chat_callback.py @@ -7,8 +7,8 @@ import json from fastapi import APIRouter, Request from fastapi.responses import StreamingResponse +from schemas.chat import ChatCallbackRequest from services.local_llm_service import local_llm_service -from services.rag_service import rag_service from services.scene_service import ensure_custom_llm_authorized, get_custom_llm_callback_settings from utils.responses import custom_llm_error_response @@ -16,23 +16,16 @@ router = APIRouter() @router.post("/api/chat_callback") -async def chat_callback(request: Request): +async def chat_callback(request: Request, body: ChatCallbackRequest): try: settings = get_custom_llm_callback_settings() ensure_custom_llm_authorized(request, settings["api_key"]) - payload = await request.json() except PermissionError as exc: return custom_llm_error_response( str(exc), code="AuthenticationError", status_code=401, ) - except json.JSONDecodeError: - return custom_llm_error_response( - "请求体必须是合法的 JSON", - code="BadRequest", - status_code=400, - ) except ValueError as exc: return custom_llm_error_response(str(exc)) except Exception as exc: @@ -42,8 +35,8 @@ async def chat_callback(request: Request): status_code=500, ) - messages = payload.get("messages") - if not isinstance(messages, list) or not messages: + messages = [m.model_dump() for m in body.messages] + if not messages: return custom_llm_error_response( "messages 不能为空", code="BadRequest", @@ -58,24 +51,15 @@ async def chat_callback(request: Request): status_code=400, ) - import time as _time - user_query = last_message.get("content", "") - _rag_t0 = _time.monotonic() - try: - rag_context = await rag_service.retrieve(user_query) - except Exception as exc: - print(f"⚠️ RAG 检索异常,已跳过: {exc}") - rag_context = "" - print(f"⏱️ RAG 检索耗时: {_time.monotonic() - _rag_t0:.2f}s") + # RAG 已改为 tool 按需调用,不再预检索 try: stream_iterator = local_llm_service.chat_stream( history_messages=messages, - rag_context=rag_context, request_options={ - "temperature": payload.get("temperature"), - "max_tokens": payload.get("max_tokens"), - "top_p": payload.get("top_p"), + "temperature": body.temperature, + "max_tokens": body.max_tokens, + "top_p": body.top_p, }, ) except Exception as exc: diff --git a/backend/routes/proxy.py b/backend/routes/proxy.py index b5c3c87..ac0941b 100644 --- a/backend/routes/proxy.py +++ b/backend/routes/proxy.py @@ -9,6 +9,7 @@ from fastapi.responses import JSONResponse from config.custom_scene import get_rtc_openapi_version from security.signer import Signer from services.scene_service import Scenes, prepare_scene_runtime +from services.session_store import load_session from utils.responses import error_response from utils.validation import assert_scene_value, assert_value @@ -42,11 +43,25 @@ async def proxy(request: Request): ) if action == "StartVoiceChat": + # 从 session 取回 getScenes 时分配的 RoomId/UserId/TaskId + sess = load_session(request, scene_id) + if sess.get("RoomId"): + voice_chat["RoomId"] = sess["RoomId"] + if sess.get("TaskId"): + voice_chat["TaskId"] = sess["TaskId"] + if sess.get("UserId"): + agent_config = voice_chat.get("AgentConfig", {}) + target_user_ids = agent_config.get("TargetUserId", []) + if target_user_ids: + target_user_ids[0] = sess["UserId"] + else: + agent_config["TargetUserId"] = [sess["UserId"]] req_body = voice_chat elif action == "StopVoiceChat": app_id = voice_chat.get("AppId", "") - room_id = voice_chat.get("RoomId", "") - task_id = voice_chat.get("TaskId", "") + sess = load_session(request, scene_id) + room_id = sess.get("RoomId") or voice_chat.get("RoomId", "") + task_id = sess.get("TaskId") or voice_chat.get("TaskId", "") assert_scene_value(scene_id, "VoiceChat.AppId", app_id) assert_scene_value(scene_id, "VoiceChat.RoomId", room_id) assert_scene_value(scene_id, "VoiceChat.TaskId", task_id) diff --git a/backend/routes/scenes.py b/backend/routes/scenes.py index e4a119a..a527ff2 100644 --- a/backend/routes/scenes.py +++ b/backend/routes/scenes.py @@ -2,16 +2,17 @@ POST /getScenes — 场景列表 """ -from fastapi import APIRouter +from fastapi import APIRouter, Request from fastapi.responses import JSONResponse from services.scene_service import Scenes, prepare_scene_runtime +from services.session_store import save_session router = APIRouter() @router.post("/getScenes") -async def get_scenes(): +async def get_scenes(request: Request): try: scenes_list = [] for scene_name, data in Scenes.items(): @@ -48,6 +49,14 @@ async def get_scenes(): ) rtc_out = {k: v for k, v in rtc_config.items() if k != "AppKey"} + rtc_out["TaskId"] = voice_chat.get("TaskId", "") + + # 存储本次生成的房间信息,供后续 StartVoiceChat 使用 + save_session(request, scene_name, { + "RoomId": rtc_config.get("RoomId", ""), + "UserId": rtc_config.get("UserId", ""), + "TaskId": voice_chat.get("TaskId", ""), + }) scenes_list.append( { diff --git a/backend/schemas/chat.py b/backend/schemas/chat.py index 7775214..859bfb3 100644 --- a/backend/schemas/chat.py +++ b/backend/schemas/chat.py @@ -6,10 +6,23 @@ from pydantic import BaseModel, Field class ChatMessage(BaseModel): - role: str - content: str + role: str = Field(default="user", description="消息角色: user / assistant / system") + content: str = Field(default="你好,请介绍一下你自己", description="消息内容") + + +class ChatCallbackRequest(BaseModel): + """Custom LLM 回调请求体(带默认值方便 Swagger 调试)""" + messages: list[ChatMessage] = Field( + default=[ + ChatMessage(role="user", content="你好,请介绍一下你自己"), + ], + description="对话消息列表,最后一条必须是 user 角色", + ) + temperature: float | None = Field(default=None, description="采样温度") + max_tokens: int | None = Field(default=None, description="最大生成 token 数") + top_p: float | None = Field(default=None, description="Top-P 采样") class DebugChatRequest(BaseModel): history: list[ChatMessage] = Field(default_factory=list) - question: str + question: str = Field(default="你好", description="用户问题") diff --git a/backend/services/local_llm_service.py b/backend/services/local_llm_service.py index 1006ef1..a30ed0f 100644 --- a/backend/services/local_llm_service.py +++ b/backend/services/local_llm_service.py @@ -1,13 +1,32 @@ from __future__ import annotations import logging +import os from dataclasses import dataclass from typing import Any, Iterator from openai import OpenAI +from config.prompt_config import load_prompt +from tools import tool_registry from utils.env import env_float, env_int, env_str logger = logging.getLogger(__name__) + +def _accumulate_tool_calls(buffer: dict[int, dict], delta_tool_calls: list) -> None: + """将流式增量 tool_calls 合并到 buffer[index] 中。""" + for tc_delta in delta_tool_calls: + idx = tc_delta.index + if idx not in buffer: + buffer[idx] = {"id": tc_delta.id or "", "name": "", "arguments": ""} + if tc_delta.id: + buffer[idx]["id"] = tc_delta.id + fn = tc_delta.function + if fn: + if fn.name: + buffer[idx]["name"] += fn.name + if fn.arguments: + buffer[idx]["arguments"] += fn.arguments + DEFAULT_LLM_TIMEOUT_SECONDS = 1800 DEFAULT_LLM_TEMPERATURE = 0 @@ -25,7 +44,6 @@ class LocalLLMSettings: model: str base_url: str timeout_seconds: int - system_prompt: str default_temperature: float thinking_type: str @@ -49,7 +67,6 @@ def _load_settings() -> LocalLLMSettings: timeout_seconds=env_int( "LOCAL_LLM_TIMEOUT_SECONDS", DEFAULT_LLM_TIMEOUT_SECONDS ), - system_prompt=env_str("CUSTOM_LLM_SYSTEM_MESSAGE"), default_temperature=env_float( "LOCAL_LLM_TEMPERATURE", DEFAULT_LLM_TEMPERATURE ), @@ -84,24 +101,23 @@ class LocalLLMService: def chat_stream( self, history_messages: list[dict[str, Any]], - rag_context: str = "", request_options: dict[str, Any] | None = None, + prompt_name: str = "default", ) -> Iterator[Any]: settings = self.settings client = self._get_client() request_options = request_options or {} - system_blocks = [settings.system_prompt] - if rag_context: - system_blocks.append(f"### 参考知识库(绝对准则)\n{rag_context.strip()}") - messages = [ { "role": "system", - "content": "\n\n".join(block for block in system_blocks if block), + "content": load_prompt(prompt_name), } ] - messages.extend(history_messages) + # 过滤掉 history 中已有的 system 消息,避免重复 + messages.extend( + msg for msg in history_messages if msg.get("role") != "system" + ) payload: dict[str, Any] = { "model": settings.model, @@ -119,18 +135,83 @@ class LocalLLMService: if request_options.get("top_p") is not None: payload["top_p"] = request_options["top_p"] - # thinking 仅在启用时通过 extra_body 传递(避免不支持的模型报错) + # thinking 配置通过 extra_body 传递 + payload["extra_body"] = {"thinking": {"type": settings.thinking_type}} if settings.thinking_type != "disabled": - payload["extra_body"] = {"thinking": {"type": settings.thinking_type}} - payload["reasoning_effort"] = "low" + payload["reasoning_effort"] = "medium" # 可选值:low / medium / high + + # 注入 tools + tools_enabled = os.getenv("TOOLS_ENABLED", "false").lower() == "true" + tools_list = tool_registry.get_openai_tools() if tools_enabled else [] + if tools_list: + payload["tools"] = tools_list + + max_rounds = int(os.getenv("TOOLS_MAX_ROUNDS", "3")) import json as _json logger.info("发起流式调用 (Model: %s, Thinking: %s)", settings.model, settings.thinking_type) logger.debug("请求 payload:\n%s", _json.dumps(payload, ensure_ascii=False, indent=2)) + try: - stream = client.chat.completions.create(**payload) - for chunk in stream: - yield chunk + for round_idx in range(max_rounds): + logger.info("LLM 调用第 %d 轮 (tools=%d)", round_idx + 1, len(tools_list)) + + tc_buffer: dict[int, dict] = {} + has_tool_calls = False + + stream = client.chat.completions.create(**payload) + + for chunk in stream: + if not chunk.choices: + if not has_tool_calls: + yield chunk + continue + + choice = chunk.choices[0] + delta = choice.delta + + # 收集 tool_calls 增量片段(不 yield 给客户端) + if delta and delta.tool_calls: + has_tool_calls = True + _accumulate_tool_calls(tc_buffer, delta.tool_calls) + continue + + # 正常文本内容直接 yield + if not has_tool_calls: + yield chunk + + if not tc_buffer: + break # 无 tool_calls,结束循环 + + # 构造 assistant message(含 tool_calls) + sorted_tcs = sorted(tc_buffer.items()) + tool_calls_for_msg = [ + { + "id": tc["id"], + "type": "function", + "function": {"name": tc["name"], "arguments": tc["arguments"]}, + } + for _, tc in sorted_tcs + ] + payload["messages"].append({ + "role": "assistant", + "content": None, + "tool_calls": tool_calls_for_msg, + }) + + # 执行工具并追加结果 + for tc in tool_calls_for_msg: + fn_name = tc["function"]["name"] + fn_args = tc["function"]["arguments"] + logger.info("执行工具: %s(%s)", fn_name, fn_args) + result = tool_registry.execute(fn_name, fn_args) + logger.info("工具结果: %s → %s", fn_name, result[:200]) + payload["messages"].append({ + "role": "tool", + "tool_call_id": tc["id"], + "content": result, + }) + # 继续下一轮 LLM 调用 except Exception as exc: logger.error("LLM 调用失败: %s", exc) raise diff --git a/backend/services/session_store.py b/backend/services/session_store.py new file mode 100644 index 0000000..96052b6 --- /dev/null +++ b/backend/services/session_store.py @@ -0,0 +1,35 @@ +""" +轻量级服务端 Session 存储。 + +以客户端 IP + User-Agent 的哈希值作为 session key, +无需 cookie,无需前端改动。 +每次 getScenes 写入,StartVoiceChat/StopVoiceChat 读取。 +""" + +import hashlib +from fastapi import Request + +# { session_key: { scene_id: { RoomId, UserId, TaskId } } } +_store: dict[str, dict[str, dict]] = {} + + +def _key(request: Request) -> str: + forwarded = request.headers.get("X-Forwarded-For") + ip = ( + forwarded.split(",")[0].strip() + if forwarded + else (request.client.host if request.client else "unknown") + ) + ua = request.headers.get("User-Agent", "") + return hashlib.sha256(f"{ip}:{ua}".encode()).hexdigest() + + +def save_session(request: Request, scene_id: str, data: dict) -> None: + key = _key(request) + if key not in _store: + _store[key] = {} + _store[key][scene_id] = data + + +def load_session(request: Request, scene_id: str) -> dict: + return _store.get(_key(request), {}).get(scene_id, {}) diff --git a/backend/tools/__init__.py b/backend/tools/__init__.py new file mode 100644 index 0000000..fa8f418 --- /dev/null +++ b/backend/tools/__init__.py @@ -0,0 +1,6 @@ +from tools.registry import tool_registry, ToolRegistry + +# 自动加载内置工具(触发 @tool_registry.register 装饰器) +import tools.builtin # noqa: F401 + +__all__ = ["tool_registry", "ToolRegistry"] diff --git a/backend/tools/builtin/__init__.py b/backend/tools/builtin/__init__.py new file mode 100644 index 0000000..9b83d6f --- /dev/null +++ b/backend/tools/builtin/__init__.py @@ -0,0 +1,4 @@ +from tools.builtin import api_tools # noqa: F401 +from tools.builtin import current_time # noqa: F401 +from tools.builtin import weather # noqa: F401 +from tools.builtin import rag_tool # noqa: F401 diff --git a/backend/tools/builtin/api_tools.py b/backend/tools/builtin/api_tools.py new file mode 100644 index 0000000..0486fa9 --- /dev/null +++ b/backend/tools/builtin/api_tools.py @@ -0,0 +1,204 @@ +""" +可声明式批量注册的 HTTP API 工具。 + +添加新接口只需在 API_ENDPOINTS 列表中追加一条配置,无需编写函数代码。 +URL 中支持 {param} 路径参数,GET 自动走 query string,POST/PUT 自动走 JSON body。 +""" + +import json +import re + +import httpx + +from tools.registry import tool_registry + +# ── 公共默认值(所有接口共享) ───────────────────────────── + +DEFAULT_BASE_URL = "https://hskuaikuai.com:9000/test" # TODO: 替换为实际服务地址 + +DEFAULT_HEADERS = { + "Content-Type": "application/json", + "token": "265a068eb7af455ca97f1a5063561a5d", # TODO: 后续由前端传入 +} + +DEFAULT_TIMEOUT = 10 # 秒 + + +# ── API 端点声明 ───────────────────────────────────────── +# +# 字段说明: +# name ─ 工具名称(英文,唯一) +# description ─ 工具描述(LLM 据此判断何时调用) +# method ─ HTTP 方法:GET / POST / PUT / DELETE +# path ─ 请求路径(自动拼接 DEFAULT_BASE_URL),可含 {param} 占位符 +# headers ─ 可选,额外请求头(与 DEFAULT_HEADERS 合并) +# parameters ─ OpenAI function calling parameters schema +# +# 路由规则: +# - path 自动拼接 DEFAULT_BASE_URL +# - {param} 占位符 → 从参数中取出并替换到 URL +# - GET → 剩余参数作为 query string +# - POST / PUT → 剩余参数作为 JSON body +# + +API_ENDPOINTS: list[dict] = [ + # ── 示例:签到汇总 ── + { + "name": "checkin_sum", + "description": "查询出勤人数", + "method": "POST", + "path": "/checkin/sum", + "parameters": { + "type": "object", + "properties": {}, + "required": [], + }, + }, + # ── APP获取不同部门考勤打卡信息 ── + { + "name": "get_checkin_app_dept", + "description": "获取不同部门的考勤打卡信息,包括出勤率、总人数、打卡人数等。deptName传'全部'可一次查询所有部门汇总。", + "method": "POST", + "path": "/checkin/app/dept", + "parameters": { + "type": "object", + "properties": { + "deptName": { + "type": "string", + "description": "部门名称,传'全部'查所有部门", + "enum": ["养护部", "工程部", "环卫部", "办公室", "全部"], + }, + }, + "required": ["deptName"], + }, + }, +] + + +def _summarize_checkin_dept(raw: str) -> str: + """将 get_checkin_app_dept 的完整返回精简为摘要,大幅减少 token 消耗。""" + try: + obj = json.loads(raw) + data = obj.get("data") + if not data or "workerList" not in data: + return raw + + workers = data["workerList"] + attendance = data.get("attendance", "") + worker_num = data.get("workerNum", 0) + checkin_num = data.get("checkinNum", 0) + + # 最早打卡 + checked_in = [w for w in workers if w.get("checkin")] + earliest = None + if checked_in: + checked_in.sort(key=lambda w: w["checkin"]) + e = checked_in[0] + t = e["checkin"].split("T")[1][:5] if "T" in e["checkin"] else e["checkin"] + earliest = f"{e['name']} {t}({e.get('deptName', '')})" + + # 未打卡/请假 + un_checked = [ + f"{w['name']}({w.get('checkinState', '未打卡')})" + for w in workers if not w.get("checkin") + ] + + # 各子部门打卡人数汇总 + dept_stats = {} + for w in workers: + dept = w.get("deptName", "未知") + if dept not in dept_stats: + dept_stats[dept] = {"total": 0, "checked": 0} + dept_stats[dept]["total"] += 1 + if w.get("checkin"): + dept_stats[dept]["checked"] += 1 + + summary = { + "出勤率": f"{attendance}%", + "总人数": worker_num, + "已打卡": checkin_num, + "最早到岗": earliest, + "未到岗": un_checked if un_checked else "全部已打卡", + "子部门": {k: f"{v['checked']}/{v['total']}" for k, v in dept_stats.items()}, + } + return json.dumps(summary, ensure_ascii=False) + except Exception: + return raw + + +# 工具名 → 后处理函数 +_RESULT_SUMMARIZERS = { + "get_checkin_app_dept": _summarize_checkin_dept, +} + + +# ── 通用请求执行器 ──────────────────────────────────────── + +_PATH_PARAM_RE = re.compile(r"\{(\w+)\}") + + +def _call_api(endpoint: dict, **kwargs) -> str: + method = endpoint["method"].upper() + headers = {**DEFAULT_HEADERS, **endpoint.get("headers", {})} + + # "全部"部门:批量查询所有部门,合并摘要后返回 + if endpoint["name"] == "get_checkin_app_dept" and kwargs.get("deptName") == "全部": + all_depts = ["养护部", "工程部", "环卫部", "办公室"] + combined = {} + for dept in all_depts: + try: + url = DEFAULT_BASE_URL.rstrip("/") + endpoint["path"] + resp = httpx.request(method, url, headers=headers, json={"deptName": dept}, timeout=DEFAULT_TIMEOUT) + resp.raise_for_status() + summary = _summarize_checkin_dept(resp.text) + combined[dept] = json.loads(summary) + except Exception as exc: + combined[dept] = f"查询失败: {exc}" + result = json.dumps(combined, ensure_ascii=False) + print(f"全部部门摘要: {result[:300]}...") + return result + + url = DEFAULT_BASE_URL.rstrip("/") + endpoint["path"] + # 1) 路径参数替换:{user_id} → kwargs["user_id"] + path_params = set(_PATH_PARAM_RE.findall(url)) + for p in path_params: + value = kwargs.pop(p, "") + url = url.replace(f"{{{p}}}", str(value)) + + # 2) 分流:GET → query string;POST/PUT/DELETE → JSON body + try: + if method == "GET": + resp = httpx.request( + method, url, headers=headers, params=kwargs, timeout=DEFAULT_TIMEOUT + ) + else: + resp = httpx.request( + method, url, headers=headers, json=kwargs or None, timeout=DEFAULT_TIMEOUT + ) + resp.raise_for_status() + result = resp.text + print(f"API 调用成功 ({endpoint['name']}): {result[:200]}...") + # 对特定工具的返回做摘要,减少 LLM 上下文消耗 + summarizer = _RESULT_SUMMARIZERS.get(endpoint["name"]) + if summarizer: + result = summarizer(result) + print(f"摘要后 ({endpoint['name']}): {result}") + return result + except Exception as exc: + return f"API 调用失败 ({endpoint['name']}): {exc}" + + +# ── 自动注册所有声明的端点 ──────────────────────────────── + +for _ep in API_ENDPOINTS: + + def _make_handler(ep=_ep): + def handler(**kw) -> str: + return _call_api(ep, **kw) + return handler + + tool_registry.register( + name=_ep["name"], + description=_ep["description"], + parameters=_ep["parameters"], + )(_make_handler()) diff --git a/backend/tools/builtin/current_time.py b/backend/tools/builtin/current_time.py new file mode 100644 index 0000000..f31f88b --- /dev/null +++ b/backend/tools/builtin/current_time.py @@ -0,0 +1,12 @@ +from datetime import datetime + +from tools.registry import tool_registry + + +@tool_registry.register( + name="get_current_time", + description="获取当前日期和时间", + parameters={"type": "object", "properties": {}}, +) +def get_current_time() -> str: + return datetime.now().strftime("%Y-%m-%d %H:%M:%S %A") diff --git a/backend/tools/builtin/rag_tool.py b/backend/tools/builtin/rag_tool.py new file mode 100644 index 0000000..7d47ddc --- /dev/null +++ b/backend/tools/builtin/rag_tool.py @@ -0,0 +1,128 @@ +""" +知识库检索工具 —— 将 RAG 作为 Function Calling 工具注册, +LLM 按需调用,而非每次请求都预检索。 +""" + +import json +import logging + +import httpx + +from security.signer import Signer +from tools.registry import tool_registry +from utils.env import env_bool, env_int, env_str + +logger = logging.getLogger(__name__) + +_KB_API_PATH = "/api/knowledge/collection/search_knowledge" +_KB_SERVICE = "air" +_KB_REGION = "cn-beijing" + + +def _retrieve_sync(query: str) -> str: + """同步调用火山引擎知识库检索 API,返回格式化后的知识片段。""" + access_key = env_str("CUSTOM_ACCESS_KEY_ID") + secret_key = env_str("CUSTOM_SECRET_KEY") + if not access_key or not secret_key: + return "知识库凭证未配置,无法检索" + + endpoint = env_str("VOLC_KB_ENDPOINT", "https://api-knowledgebase.mlp.cn-beijing.volces.com") + kb_resource_id = env_str("VOLC_KB_RESOURCE_ID") + kb_name = env_str("VOLC_KB_NAME") + kb_project = env_str("VOLC_KB_PROJECT", "default") + top_k = env_int("VOLC_KB_TOP_K", 3) + rerank = env_bool("VOLC_KB_RERANK", False) + attachment_link = env_bool("VOLC_KB_ATTACHMENT_LINK", False) + + if not kb_resource_id and not kb_name: + return "知识库 ID 未配置,无法检索" + + body: dict = {"query": query, "limit": top_k} + if kb_resource_id: + body["resource_id"] = kb_resource_id + else: + body["name"] = kb_name + body["project"] = kb_project + + post_processing: dict = {} + if rerank: + post_processing["rerank_switch"] = True + if attachment_link: + post_processing["get_attachment_link"] = True + if post_processing: + body["post_processing"] = post_processing + + headers = {"Content-Type": "application/json"} + signer = Signer( + request_data={ + "region": _KB_REGION, + "method": "POST", + "path": _KB_API_PATH, + "headers": headers, + "body": body, + }, + service=_KB_SERVICE, + ) + signer.add_authorization({"accessKeyId": access_key, "secretKey": secret_key}) + + body_bytes = json.dumps(body, separators=(",", ":"), ensure_ascii=False).encode("utf-8") + url = endpoint.rstrip("/") + _KB_API_PATH + + resp = httpx.post(url, headers=headers, content=body_bytes, timeout=15) + resp_data = resp.json() + + if resp_data.get("code") != 0: + msg = resp_data.get("message", "未知错误") + logger.warning("知识库检索失败: code=%s, message=%s", resp_data.get("code"), msg) + return f"知识库检索失败: {msg}" + + result_list = resp_data.get("data", {}).get("result_list", []) + if not result_list: + return "知识库中未找到相关内容" + + # 格式化为简洁文本 + parts = [] + for i, chunk in enumerate(result_list, start=1): + title = chunk.get("chunk_title") or "" + content = chunk.get("content") or "" + header = f"[{i}] {title}" if title else f"[{i}]" + block = f"{header}\n{content}" + + if attachment_link: + attachments = chunk.get("chunk_attachment") or [] + image_links = [a["link"] for a in attachments if a.get("link")] + if image_links: + block += "\n附件: " + ", ".join(image_links) + + parts.append(block) + + result = "\n\n".join(parts) + logger.info("知识库检索到 %d 条结果 (query=%s)", len(result_list), query[:50]) + return result + + +# ── 注册工具 ── + +if env_bool("VOLC_KB_ENABLED", False): + @tool_registry.register( + name="search_knowledge", + description="从知识库检索相关内容,用于回答系统功能介绍、操作说明、规章制度等问题。当用户询问的问题涉及业务知识而非实时数据时使用。", + parameters={ + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "检索关键词或问题", + }, + }, + "required": ["query"], + }, + ) + def search_knowledge(query: str) -> str: + try: + return _retrieve_sync(query) + except Exception as exc: + logger.exception("知识库检索异常") + return f"知识库检索出错: {exc}" + + logger.info("✅ RAG 知识库工具已注册 (resource_id=%s)", env_str("VOLC_KB_RESOURCE_ID")) diff --git a/backend/tools/builtin/weather.py b/backend/tools/builtin/weather.py new file mode 100644 index 0000000..c2f58ce --- /dev/null +++ b/backend/tools/builtin/weather.py @@ -0,0 +1,23 @@ +import httpx + +from tools.registry import tool_registry + + +@tool_registry.register( + name="query_weather", + description="查询指定城市的实时天气信息", + parameters={ + "type": "object", + "properties": { + "city": {"type": "string", "description": "城市名称,如:北京、上海"}, + }, + "required": ["city"], + }, +) +def query_weather(city: str) -> str: + try: + resp = httpx.get(f"https://wttr.in/{city}?format=3", timeout=3) + resp.raise_for_status() + return resp.text.strip() + except Exception as exc: + return f"天气查询失败:{exc}" diff --git a/backend/tools/registry.py b/backend/tools/registry.py new file mode 100644 index 0000000..91f783b --- /dev/null +++ b/backend/tools/registry.py @@ -0,0 +1,63 @@ +from __future__ import annotations + +import json +import logging +from dataclasses import dataclass +from typing import Any, Callable + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class ToolDef: + name: str + description: str + parameters: dict[str, Any] + handler: Callable[..., str] + + +class ToolRegistry: + def __init__(self): + self._tools: dict[str, ToolDef] = {} + + def register(self, name: str, description: str, parameters: dict[str, Any]): + """装饰器:将函数注册为工具。""" + + def decorator(fn: Callable[..., str]) -> Callable[..., str]: + self._tools[name] = ToolDef( + name=name, + description=description, + parameters=parameters, + handler=fn, + ) + logger.info("工具已注册: %s", name) + return fn + + return decorator + + def get_openai_tools(self) -> list[dict[str, Any]]: + return [ + { + "type": "function", + "function": { + "name": t.name, + "description": t.description, + "parameters": t.parameters, + }, + } + for t in self._tools.values() + ] + + def execute(self, name: str, arguments_json: str) -> str: + tool = self._tools.get(name) + if tool is None: + return f"错误:未知工具 '{name}'" + try: + kwargs = json.loads(arguments_json) if arguments_json.strip() else {} + return tool.handler(**kwargs) + except Exception as exc: + logger.exception("工具 %s 执行失败", name) + return f"工具 {name} 执行出错:{exc}" + + +tool_registry = ToolRegistry() diff --git a/frontend/.eslintrc b/frontend/.eslintrc deleted file mode 100644 index 80b12c9..0000000 --- a/frontend/.eslintrc +++ /dev/null @@ -1,132 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "commonjs": true, - "es6": true, - "node": true, - "jest": true - }, - "parser": "@typescript-eslint/parser", - "extends": [ - "airbnb", - "plugin:react/recommended", - "plugin:prettier/recommended", - "plugin:react-hooks/recommended" - ], - "parserOptions": { - "ecmaFeatures": { - "experimentalObjectRestSpread": true - }, - "sourceType": "module" - }, - "plugins": ["react", "babel", "@typescript-eslint/eslint-plugin"], - "globals": { - "ActiveXObject": false, - "describe": false, - "it": false, - "expect": false, - "jest": false, - "$": false, - "afterEach": false, - "beforeEach": false - }, - "overrides": [ - { - "files": ["*.ts", "*.tsx"], - "rules": { - "@typescript-eslint/no-unused-vars": [2, { "args": "none" }], - "@typescript-eslint/no-use-before-define": [2, { "functions": false, "classes": false }] - } - } - ], - "rules": { - "prettier/prettier": ["warn", { "trailingComma": "es5", "printWidth": 100 }], - "linebreak-style": "off", - "no-console": ["warn", { "allow": ["warn", "error", "log"] }], - "no-case-declarations": 0, - "no-param-reassign": 0, - "no-underscore-dangle": 0, - "no-useless-constructor": 0, - "no-unused-vars": [2, { "vars": "all", "args": "none" }], - "no-restricted-syntax": 0, - "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }], - "no-plusplus": 0, - "no-return-assign": 0, - "no-script-url": 0, - "no-extend-native": 0, - "no-restricted-globals": 0, - "no-nested-ternary": 0, - "no-empty": 0, - "no-void": 0, - "no-useless-escape": 0, - "no-bitwise": 0, - "no-mixed-operators": 0, - "consistent-return": 0, - "one-var": 0, - "prefer-promise-reject-errors": 0, - "prefer-destructuring": 0, - "global-require": 0, - "guard-for-in": 0, - "func-names": 0, - "strict": 0, - "radix": 0, - "no-prototype-builtins": 0, - "class-methods-use-this": 0, - "import/no-dynamic-require": 0, - "import/no-unresolved": 0, - "import/extensions": 0, - "import/no-extraneous-dependencies": 0, - "import/prefer-default-export": 0, - "import/no-absolute-path": 0, - "react/no-danger": 0, - "react/forbid-prop-types": 0, - "react/prop-types": 0, - "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", "ts", "tsx"] }], - "react/sort-comp": 0, - "react/no-did-update-set-state": 0, - "react/prefer-stateless-function": 0, - "react/jsx-closing-tag-location": 0, - "react/jsx-no-bind": 0, - "react/no-array-index-key": 0, - "react/no-children-prop": 0, - "react/no-did-mount-set-state": 0, - "react/no-find-dom-node": 0, - "react/default-props-match-prop-types": 0, - "react/jsx-one-expression-per-line": 0, - "react/react-in-jsx-scope": 0, - "react/jsx-props-no-spreading": 0, - "jsx-a11y/anchor-is-valid": 0, - "jsx-a11y/no-static-element-interactions": 0, - "jsx-a11y/click-events-have-key-events": 0, - "jsx-a11y/no-noninteractive-element-interactions": 0, - "jsx-a11y/alt-text": 0, - "jsx-a11y/label-has-for": 0, - "jsx-a11y/label-has-associated-control": 0, - "jsx-a11y/no-noninteractive-tabindex": 0, - "jsx-a11y/tabindex-no-positive": 0, - "react/jsx-indent": 0, - "react/display-name": 0, - "react/no-multi-comp": 0, - "react/destructuring-assignment": 0, - "react/no-access-state-in-setstate": 0, - "react/button-has-type": 0, - "react/require-default-props": 0, - "react/jsx-wrap-multilines": 0, - "react/no-render-return-value": 0, - "array-callback-return": 0, - "no-cond-assign": 0, - "@typescript-eslint/explicit-function-return-type": 0, - "no-use-before-define": 0, - "@typescript-eslint/no-use-before-define": 2, - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/no-empty-function": 0, - "no-shadow": 0, - "no-continue": 0, - "no-loop-func": 0, - "prefer-spread": 0, - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "warn", - "no-undef": 0 - } -} diff --git a/frontend/.npmrc b/frontend/.npmrc deleted file mode 100644 index f4e1e4a..0000000 --- a/frontend/.npmrc +++ /dev/null @@ -1 +0,0 @@ -registry = 'https://registry.npmjs.org/' diff --git a/frontend/.prettierrc b/frontend/.prettierrc deleted file mode 100644 index 1b78833..0000000 --- a/frontend/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "arrowParens": "always", - "semi": true, - "singleQuote": true, - "jsxSingleQuote": false, - "printWidth": 100, - "useTabs": false, - "tabWidth": 2, - "trailingComma": "es5" -} diff --git a/frontend/.stylelintrc b/frontend/.stylelintrc deleted file mode 100644 index 7fb1d63..0000000 --- a/frontend/.stylelintrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": ["stylelint-config-standard", "stylelint-config-prettier"], - "customSyntax": "postcss-less", - "rules": { - "no-descending-specificity": null, - "no-duplicate-selectors": null, - "font-family-no-missing-generic-family-keyword": null, - "block-opening-brace-space-before": "always", - "declaration-block-trailing-semicolon": null, - "declaration-colon-newline-after": null, - "indentation": null, - "selector-descendant-combinator-no-non-space": null, - "selector-class-pattern": null, - "keyframes-name-pattern": null, - "no-invalid-position-at-import-rule": null, - "number-max-precision": 6, - "color-function-notation": null, - "selector-pseudo-class-no-unknown": [ - true, - { - "ignorePseudoClasses": ["global"] - } - ] - } -} diff --git a/frontend/craco.config.js b/frontend/craco.config.js deleted file mode 100644 index 0743dd8..0000000 --- a/frontend/craco.config.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -const CracoLessPlugin = require('craco-less'); -const path = require('path'); - -module.exports = { - webpack: { - alias: { - '@': path.resolve(__dirname, 'src'), - }, - }, - plugins: [ - { - plugin: CracoLessPlugin, - options: { - lessLoaderOptions: { - lessOptions: { - javascriptEnabled: true, - }, - }, - }, - }, - ], -}; diff --git a/frontend/message.js b/frontend/message.js deleted file mode 100644 index d8327d4..0000000 --- a/frontend/message.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -const reset = '\x1b[0m'; -const bright = '\x1b[1m'; -const green = '\x1b[32m'; - -console.log(`${bright}${bright}===================================================`); -console.log(`${bright}${green}| 请查看目录下的 README.md 内容, 否则启动可能失败 |`); -console.log(`${bright}${reset}===================================================${reset}`); \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json deleted file mode 100644 index 1ba5178..0000000 --- a/frontend/package-lock.json +++ /dev/null @@ -1,20491 +0,0 @@ -{ - "name": "aigc", - "version": "1.6.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "aigc", - "version": "1.6.0", - "license": "BSD-3-Clause", - "dependencies": { - "@arco-design/web-react": "^2.65.0", - "@reduxjs/toolkit": "^1.8.3", - "@volcengine/rtc": "~4.66.20", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-redux": "^8.0.2", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", - "redux": "^4.2.0", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@craco/craco": "^6.4.5", - "@types/lodash": "^4.17.4", - "@types/node": "^16.11.45", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6", - "@types/react-helmet": "^6.1.11", - "@types/uuid": "^8.3.4", - "craco-less": "^2.0.0", - "cross-env": "^7.0.3", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-prettier": "^4.2.1", - "postcss-less": "^6.0.0", - "prettier": "^2.7.1", - "react-scripts": "5.0.1", - "stylelint": "^14.9.1", - "stylelint-config-prettier": "^9.0.3", - "stylelint-config-standard": "^26.0.0", - "typescript": "^4.7.4" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@arco-design/color": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@arco-design/color/-/color-0.4.0.tgz", - "integrity": "sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3" - } - }, - "node_modules/@arco-design/web-react": { - "version": "2.66.12", - "resolved": "https://registry.npmjs.org/@arco-design/web-react/-/web-react-2.66.12.tgz", - "integrity": "sha512-8gZYKPqdPcDrM+5gDdorqBuqX+fw3sUmmtHQy5x967DtWg5izKIwgwcsOQUdgjhmaiLkD//Q5nvkhqpAQmCNZA==", - "license": "MIT", - "dependencies": { - "@arco-design/color": "^0.4.0", - "@babel/runtime": "^7.5.5", - "b-tween": "^0.3.3", - "b-validate": "^1.4.2", - "compute-scroll-into-view": "^1.0.17", - "dayjs": "^1.10.5", - "lodash": "^4.17.21", - "number-precision": "^1.3.1", - "react-focus-lock": "^2.13.2", - "react-is": "^18.2.0", - "react-transition-group": "^4.3.0", - "resize-observer-polyfill": "^1.5.1", - "scroll-into-view-if-needed": "^2.2.20", - "shallowequal": "^1.1.0" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz", - "integrity": "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", - "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", - "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", - "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", - "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", - "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", - "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", - "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-syntax-decorators": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", - "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", - "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", - "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", - "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", - "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", - "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", - "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", - "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", - "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", - "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/template": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", - "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", - "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", - "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", - "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", - "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-flow": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", - "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", - "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", - "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", - "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", - "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", - "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", - "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", - "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", - "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", - "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", - "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", - "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-syntax-jsx": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", - "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", - "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", - "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", - "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", - "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", - "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", - "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", - "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.28.6", - "@babel/plugin-syntax-import-attributes": "^7.28.6", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.29.0", - "@babel/plugin-transform-async-to-generator": "^7.28.6", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.6", - "@babel/plugin-transform-class-properties": "^7.28.6", - "@babel/plugin-transform-class-static-block": "^7.28.6", - "@babel/plugin-transform-classes": "^7.28.6", - "@babel/plugin-transform-computed-properties": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.28.6", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.6", - "@babel/plugin-transform-exponentiation-operator": "^7.28.6", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.28.6", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.0", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", - "@babel/plugin-transform-numeric-separator": "^7.28.6", - "@babel/plugin-transform-object-rest-spread": "^7.28.6", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.28.6", - "@babel/plugin-transform-optional-chaining": "^7.28.6", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.28.6", - "@babel/plugin-transform-private-property-in-object": "^7.28.6", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.29.0", - "@babel/plugin-transform-regexp-modifiers": "^7.28.6", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.28.6", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.28.6", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.15", - "babel-plugin-polyfill-corejs3": "^0.14.0", - "babel-plugin-polyfill-regenerator": "^0.6.6", - "core-js-compat": "^3.48.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", - "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.28.0", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", - "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@craco/craco": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz", - "integrity": "sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cosmiconfig": "^7.0.1", - "cosmiconfig-typescript-loader": "^1.0.0", - "cross-spawn": "^7.0.0", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "webpack-merge": "^4.2.2" - }, - "bin": { - "craco": "bin/craco.js" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "react-scripts": "^4.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@csstools/normalize.css": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", - "integrity": "sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", - "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.10" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz", - "integrity": "sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-html": "^0.0.9", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^4.2.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x || 5.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/@reduxjs/toolkit": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", - "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", - "license": "MIT", - "dependencies": { - "immer": "^9.0.21", - "redux": "^4.2.1", - "redux-thunk": "^2.4.2", - "reselect": "^4.1.8" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.2" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@remix-run/router": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", - "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz", - "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.12.6" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", - "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.25", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", - "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "^1" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.8", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", - "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", - "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", - "license": "MIT", - "dependencies": { - "hoist-non-react-statics": "^3.3.0" - }, - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.17", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", - "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", - "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", - "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/@types/react-helmet": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.11.tgz", - "integrity": "sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", - "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "<1" - } - }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", - "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "16.0.11", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.11.tgz", - "integrity": "sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@volcengine/rtc": { - "version": "4.66.36", - "resolved": "https://registry.npmjs.org/@volcengine/rtc/-/rtc-4.66.36.tgz", - "integrity": "sha512-Z0Ok1/WXPWy89C91WLK5dah97oAWXb/wMWcy4entTgGBOhNK1+Snf1N38lylWyy3GCssMxAPuJA3qcHPM9qY0g==", - "license": "BSD-3-Clause", - "dependencies": { - "eventemitter3": "^4.0.7" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", - "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", - "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-array-method-boxes-properly": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "is-string": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.27", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", - "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001774", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", - "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/b-tween": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/b-tween/-/b-tween-0.3.3.tgz", - "integrity": "sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==", - "license": "MIT" - }, - "node_modules/b-validate": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/b-validate/-/b-validate-1.5.3.tgz", - "integrity": "sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==", - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-loader": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", - "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.4", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/babel-loader/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-named-asset-import": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@babel/core": "^7.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", - "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.8", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", - "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8", - "core-js-compat": "^3.48.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", - "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-react-app": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", - "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-decorators": "^7.16.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24" - } - }, - "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.11", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.11.tgz", - "integrity": "sha512-DAKrHphkJyiGuau/cFieRYhcTFeK/lBuD++C7cZ6KZHbMhBrisoi+EvhQ5RZrIfV5qwsW8kgQ07JIC+MDJRAhg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bfj": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", - "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.7.2", - "check-types": "^11.2.3", - "hoopy": "^0.1.4", - "jsonpath": "^1.1.1", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001781", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", - "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/check-types": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", - "dev": true, - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/coa/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true, - "license": "MIT" - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/core-js": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", - "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", - "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz", - "integrity": "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^7", - "ts-node": "^10.7.0" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "typescript": ">=3" - } - }, - "node_modules/craco-less": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/craco-less/-/craco-less-2.0.0.tgz", - "integrity": "sha512-980mQaZVrC4ZsvOwvud6/AgvW7fLY3mW5m5+gR4sw4krxszgHb+qoRyOjqsYPD0F4oUmQoSiZSrlYY/bFGD9kQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "less": "^4.1.1", - "less-loader": "^7.3.0" - }, - "peerDependencies": { - "@craco/craco": "^6.0.0", - "react-scripts": "^5.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-functions-list": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz", - "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "license": "CC0-1.0", - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssdb": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", - "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - } - ], - "license": "CC0-1.0" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true, - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.328", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.328.tgz", - "integrity": "sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", - "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.1", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "math-intrinsics": "^1.1.0", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", - "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" - }, - "engines": { - "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "license": "MIT", - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-config-react-app": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", - "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz", - "integrity": "sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-rule-composer": "^0.3.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": ">=4.0.0" - } - }, - "node_modules/eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@babel/plugin-syntax-flow": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "eslint": "^8.1.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", - "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", - "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "node-exports-info": "^1.6.0", - "object-keys": "^1.1.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-testing-library": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", - "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.58.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/focus-lock": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.6.tgz", - "integrity": "sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/form-data": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", - "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true, - "license": "ISC" - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true, - "license": "MIT" - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true, - "license": "(Apache-2.0 OR MPL-1.1)" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.6.6", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", - "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", - "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "dev": true, - "license": "MIT", - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", - "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.3.0.tgz", - "integrity": "sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "esprima": "1.2.5", - "static-eval": "2.1.1", - "underscore": "1.13.6" - } - }, - "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", - "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", - "dev": true, - "license": "MIT" - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/launch-editor": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", - "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } - }, - "node_modules/less": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz", - "integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "copy-anything": "^3.0.5", - "parse-node-version": "^1.0.1" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", - "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/needle": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", - "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-exports-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", - "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.flatmap": "^1.3.3", - "es-errors": "^1.3.0", - "object.entries": "^1.1.9", - "semver": "^6.3.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/node-exports-info/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-precision": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/number-precision/-/number-precision-1.6.0.tgz", - "integrity": "sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==", - "license": "MIT" - }, - "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz", - "integrity": "sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.reduce": "^1.0.8", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "gopd": "^1.2.0", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", - "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true, - "license": "CC0-1.0", - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.4" - } - }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", - "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-less": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-6.0.0.tgz", - "integrity": "sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "postcss": "^8.3.5" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", - "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", - "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", - "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", - "dev": true, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], - "license": "MIT", - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8" - } - }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.13", - "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.3" - } - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.2.tgz", - "integrity": "sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "sax": "^1.5.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "performance-now": "^2.1.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-clientside-effect": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.8.tgz", - "integrity": "sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.13" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-error-overlay": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", - "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-focus-lock": { - "version": "2.13.7", - "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.7.tgz", - "integrity": "sha512-20lpZHEQrXPb+pp1tzd4ULL6DyO5D2KnR0G69tTDdydrmNhU7pdFmbQUYVyHUgp+xN29IuFR0PVuhOmvaZL9Og==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "focus-lock": "^1.3.6", - "prop-types": "^15.6.2", - "react-clientside-effect": "^1.2.7", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-redux": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", - "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.1", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/use-sync-external-store": "^0.0.3", - "hoist-non-react-statics": "^3.3.2", - "react-is": "^18.0.0", - "use-sync-external-store": "^1.0.0" - }, - "peerDependencies": { - "@types/react": "^16.8 || ^17.0 || ^18.0", - "@types/react-dom": "^16.8 || ^17.0 || ^18.0", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0", - "react-native": ">=0.59", - "redux": "^4 || ^5.0.0-beta.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router": { - "version": "6.30.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", - "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.30.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", - "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.2", - "react-router": "6.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "node_modules/react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "bin": { - "react-scripts": "bin/react-scripts.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - }, - "peerDependencies": { - "react": ">= 16", - "typescript": "^3.2.1 || ^4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "license": "MIT", - "peerDependencies": { - "redux": "^4" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true, - "license": "MIT" - }, - "node_modules/regex-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", - "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.1.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/reselect": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", - "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", - "license": "MIT" - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" - }, - "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { - "optional": true - } - } - }, - "node_modules/resolve-url-loader/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.80.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", - "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/scroll-into-view-if-needed": { - "version": "2.2.31", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", - "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", - "license": "MIT", - "dependencies": { - "compute-scroll-into-view": "^1.0.20" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true, - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", - "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.8.0", - "mime-types": "~2.1.35", - "parseurl": "~1.3.3" - }, - "engines": { - "node": ">= 0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", - "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true, - "license": "MIT" - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true, - "license": "MIT" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT" - }, - "node_modules/static-eval": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", - "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "escodegen": "^2.1.0" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-loader": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", - "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" - }, - "bin": { - "stylelint": "bin/stylelint.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-prettier": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz", - "integrity": "sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==", - "dev": true, - "license": "MIT", - "bin": { - "stylelint-config-prettier": "bin/check.js", - "stylelint-config-prettier-check": "bin/check.js" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "stylelint": ">= 11.x < 15" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz", - "integrity": "sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "stylelint": "^14.8.0" - } - }, - "node_modules/stylelint-config-standard": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-26.0.0.tgz", - "integrity": "sha512-hUuB7LaaqM8abvkOO84wh5oYSkpXgTzHu2Zza6e7mY+aOmpNTjoFBRxSLlzY0uAOMWEFx0OMKzr+reG1BUtcqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "stylelint-config-recommended": "^8.0.0" - }, - "peerDependencies": { - "stylelint": "^14.9.0" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/sucrase": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", - "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "tinyglobby": "^0.2.11", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/svgo/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/svgo/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/svgo/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "license": "ISC" - }, - "node_modules/svgo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/tailwindcss": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", - "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.7", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=10.4" - } - }, - "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", - "dev": true, - "license": "MIT", - "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.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", - "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "dev": true, - "license": "MIT", - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-build": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.6.0", - "workbox-broadcast-update": "6.6.0", - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-google-analytics": "6.6.0", - "workbox-navigation-preload": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-range-requests": "6.6.0", - "workbox-recipes": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0", - "workbox-streams": "6.6.0", - "workbox-sw": "6.6.0", - "workbox-window": "6.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/workbox-build/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "deprecated": "The work that was done in this beta branch won't be included in future versions", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", - "deprecated": "workbox-background-sync@6.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/workbox-expiration": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-google-analytics": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", - "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-background-sync": "6.6.0", - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-precaching": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-range-requests": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-recipes": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } - }, - "node_modules/workbox-routing": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-strategies": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0" - } - }, - "node_modules/workbox-streams": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0" - } - }, - "node_modules/workbox-sw": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", - "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.6.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/workbox-window": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.6.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", - "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index 9159e68..0000000 --- a/frontend/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "aigc", - "version": "1.6.0", - "license": "BSD-3-Clause", - "private": true, - "dependencies": { - "@reduxjs/toolkit": "^1.8.3", - "@volcengine/rtc": "~4.66.20", - "@arco-design/web-react": "^2.65.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-redux": "^8.0.2", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", - "redux": "^4.2.0", - "uuid": "^8.3.2" - }, - "scripts": { - "dev": "npm run echo && npm run start", - "start": "cross-env REACT_APP_LOCAL=cn craco start", - "server:start": "node Server/app.js", - "build": "craco build", - "test": "craco test", - "eject": "react-scripts eject", - "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", - "eslint": "eslint src/ --fix --cache --quiet --ext .js,.jsx,.ts,.tsx", - "stylelint": "stylelint 'src/**/*.less' --fix", - "pre-commit": "npm run eslint && npm run stylelint", - "echo": "node message.js" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@craco/craco": "^6.4.5", - "@types/lodash": "^4.17.4", - "@types/node": "^16.11.45", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6", - "@types/react-helmet": "^6.1.11", - "@types/uuid": "^8.3.4", - "craco-less": "^2.0.0", - "cross-env": "^7.0.3", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-prettier": "^4.2.1", - "postcss-less": "^6.0.0", - "prettier": "^2.7.1", - "react-scripts": "5.0.1", - "stylelint": "^14.9.1", - "stylelint-config-prettier": "^9.0.3", - "stylelint-config-standard": "^26.0.0", - "typescript": "^4.7.4" - } -} diff --git a/frontend/public/favicon.png b/frontend/public/favicon.png deleted file mode 100644 index 87017b545d29aa1c731a4af31f0941a80ddf4085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3251 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 diff --git a/frontend/public/index.html b/frontend/public/index.html deleted file mode 100644 index e925ebd..0000000 --- a/frontend/public/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - 火山引擎 RTC 实时对话式 AI 体验 Demo ——— 支持 DeepSeek 和 豆包视觉理解模型 - - - -
    - - - diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/frontend/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx deleted file mode 100644 index 9653984..0000000 --- a/frontend/src/App.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { BrowserRouter, Routes, Route } from 'react-router-dom'; -import MainPage from './pages/MainPage'; -import '@arco-design/web-react/dist/css/arco.css'; - -function App() { - console.warn('运行问题可参考 README 内容进行排查'); - return ( - - - - } /> - } /> - - - - ); -} - -export default App; diff --git a/frontend/src/app/api.ts b/frontend/src/app/api.ts deleted file mode 100644 index c5e7e04..0000000 --- a/frontend/src/app/api.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -/** - * @brief Basic APIs - */ -export const BasicAPIs = [ - { - action: 'getScenes', - apiPath: '/getScenes', - method: 'post', - }, -] as const; - -/** - * @brief Basic APIs - */ -export const AigcAPIs = [ - { - action: 'StartVoiceChat', - apiPath: '/proxy', - method: 'post', - }, - { - action: 'StopVoiceChat', - apiPath: '/proxy', - method: 'post', - }, -] as const; diff --git a/frontend/src/app/base.ts b/frontend/src/app/base.ts deleted file mode 100644 index 9a98d34..0000000 --- a/frontend/src/app/base.ts +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { Message } from '@arco-design/web-react'; -import { AIGC_PROXY_HOST } from '@/config'; -import type { RequestResponse, ApiConfig, ApiNames, Apis } from './type'; - -type Headers = Record; - -export type DeepPartial = { - [P in keyof T]?: T[P] extends Array - ? Array> - : T[P] extends object - ? DeepPartial - : T[P]; -}; - -/** - * @brief Get - * @param apiName - * @param headers - */ -export const requestGetMethod = ({ - action, - headers = {}, -}: { - action: string; - headers?: Record; -}) => { - return async (params: Record = {}) => { - const url = `${AIGC_PROXY_HOST}?Action=${action}&${Object.keys(params) - .map((key) => `${key}=${params[key]}`) - .join('&')}`; - const res = await fetch(url, { - headers: { - ...headers, - }, - }); - return res; - }; -}; - -/** - * @brief Post - */ -export const requestPostMethod = ({ - action, - apiPath, - isJson = true, - headers = {}, -}: { - action: string; - apiPath: string; - isJson?: boolean; - headers?: Headers; -}) => { - return async (params: T) => { - const res = await fetch(`${AIGC_PROXY_HOST}${apiPath}?Action=${action}`, { - method: 'post', - headers: { - 'content-type': 'application/json', - ...headers, - }, - body: (isJson ? JSON.stringify(params) : params) as BodyInit, - }); - return res; - }; -}; - -/** - * @brief Return handler - * @param res - */ -export const resultHandler = (res: RequestResponse) => { - const { Result, ResponseMetadata } = res || {}; - // Record request id for debug. - if (ResponseMetadata.Action === 'StartVoiceChat') { - const requestId = ResponseMetadata.RequestId; - requestId && sessionStorage.setItem('RequestID', requestId); - } - if (ResponseMetadata.Error) { - Message.error( - `[${ResponseMetadata?.Action}]call failed(reason: ${ResponseMetadata.Error?.Message})` - ); - throw new Error( - `[${ResponseMetadata?.Action}]call failed(${JSON.stringify(ResponseMetadata, null, 2)})` - ); - } - return Result; -}; - -/** - * @brief Generate APIs by apiConfigs - * @param apiConfigs - */ -export const generateAPIs = (apiConfigs: T) => - apiConfigs.reduce>((store, cur) => { - const { action, apiPath = '', method = 'get' } = cur; - - const actionKey = action as ApiNames; - store[actionKey] = async (params) => { - const queryData = - method === 'get' - ? await requestGetMethod({ action })(params) - : await requestPostMethod({ action, apiPath })(params); - const res = await queryData?.json(); - return resultHandler(res); - }; - return store; - }, {} as Apis); diff --git a/frontend/src/app/index.ts b/frontend/src/app/index.ts deleted file mode 100644 index d8317c4..0000000 --- a/frontend/src/app/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { AigcAPIs, BasicAPIs } from './api'; -import { generateAPIs } from './base'; - -const VoiceChat = generateAPIs(AigcAPIs); -const Basic = generateAPIs(BasicAPIs); - -export default { - VoiceChat, - Basic, -}; diff --git a/frontend/src/app/type.ts b/frontend/src/app/type.ts deleted file mode 100644 index 43fb328..0000000 --- a/frontend/src/app/type.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -export type RequestParams = Record; - -export interface RequestResponse { - ResponseMetadata: Partial<{ - Action: string; - Version: string; - Service: string; - Region: string; - RequestId: string; - Error: { - Code: string; - Message: string; - }; - }>; - Result: any; -} - -type TupleToUnion = T[number]; -type RequestFn = (params?: RequestParams[T]) => RequestResponse[T]; -type PromiseRequestFn = ( - params?: RequestParams[T] -) => Promise; - -export type ApiConfig = { action: string; method: string; apiPath?: string }; -export type ApiNames = TupleToUnion['action']; -export type Apis = Record< - ApiNames, - RequestFn | PromiseRequestFn ->; diff --git a/frontend/src/assets/img/CallWrapper.svg b/frontend/src/assets/img/CallWrapper.svg deleted file mode 100644 index 75baa60..0000000 --- a/frontend/src/assets/img/CallWrapper.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/assets/img/CameraClose.svg b/frontend/src/assets/img/CameraClose.svg deleted file mode 100644 index 13274b3..0000000 --- a/frontend/src/assets/img/CameraClose.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/frontend/src/assets/img/CameraCloseNote.svg b/frontend/src/assets/img/CameraCloseNote.svg deleted file mode 100644 index 92647a7..0000000 --- a/frontend/src/assets/img/CameraCloseNote.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/frontend/src/assets/img/CameraOpen.svg b/frontend/src/assets/img/CameraOpen.svg deleted file mode 100644 index bc41d37..0000000 --- a/frontend/src/assets/img/CameraOpen.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/frontend/src/assets/img/Checked.svg b/frontend/src/assets/img/Checked.svg deleted file mode 100644 index e6b2491..0000000 --- a/frontend/src/assets/img/Checked.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/frontend/src/assets/img/Close.svg b/frontend/src/assets/img/Close.svg deleted file mode 100644 index fc025f6..0000000 --- a/frontend/src/assets/img/Close.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/frontend/src/assets/img/LeaveRoom.svg b/frontend/src/assets/img/LeaveRoom.svg deleted file mode 100644 index 473d174..0000000 --- a/frontend/src/assets/img/LeaveRoom.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/frontend/src/assets/img/Logo.svg b/frontend/src/assets/img/Logo.svg deleted file mode 100644 index d8e87fc..0000000 --- a/frontend/src/assets/img/Logo.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/frontend/src/assets/img/MicClose.svg b/frontend/src/assets/img/MicClose.svg deleted file mode 100644 index afae328..0000000 --- a/frontend/src/assets/img/MicClose.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/frontend/src/assets/img/MicOpen.svg b/frontend/src/assets/img/MicOpen.svg deleted file mode 100644 index 9c9c730..0000000 --- a/frontend/src/assets/img/MicOpen.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/frontend/src/assets/img/Phone.svg b/frontend/src/assets/img/Phone.svg deleted file mode 100644 index 0c2c282..0000000 --- a/frontend/src/assets/img/Phone.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/frontend/src/assets/img/ScreenCloseNote.svg b/frontend/src/assets/img/ScreenCloseNote.svg deleted file mode 100644 index 434afbe..0000000 --- a/frontend/src/assets/img/ScreenCloseNote.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/assets/img/ScreenOff.svg b/frontend/src/assets/img/ScreenOff.svg deleted file mode 100644 index 57fdd64..0000000 --- a/frontend/src/assets/img/ScreenOff.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/assets/img/ScreenOn.svg b/frontend/src/assets/img/ScreenOn.svg deleted file mode 100644 index 067d5e9..0000000 --- a/frontend/src/assets/img/ScreenOn.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/frontend/src/assets/img/mobileBg.png b/frontend/src/assets/img/mobileBg.png deleted file mode 100644 index 34100739cccf8ffdfe6aaa0d0a55f8a14caa74f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339796 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%0APsx)3SZW^^zR3S^)0-+rRV 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 - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/assets/img/userAvatar.png b/frontend/src/assets/img/userAvatar.png deleted file mode 100644 index d4c7de3d5d6fbd723ef043dcd8aa49505443cc67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14013 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 diff --git a/frontend/src/components/AIAvatarLoading/index.module.less b/frontend/src/components/AIAvatarLoading/index.module.less deleted file mode 100644 index 0f47246..0000000 --- a/frontend/src/components/AIAvatarLoading/index.module.less +++ /dev/null @@ -1,26 +0,0 @@ -.container { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; -} - -.avatarContainer { - position: relative; - display: flex; - flex-direction: column; - align-items: center; -} - -.avatarSvg { - max-width: 80%; - height: auto; -} - -/* 加载文字样式 */ -.loadingText { - margin-top: 30px; - font-size: 18px; - text-align: center; -} diff --git a/frontend/src/components/AIAvatarLoading/index.tsx b/frontend/src/components/AIAvatarLoading/index.tsx deleted file mode 100644 index 0d1d213..0000000 --- a/frontend/src/components/AIAvatarLoading/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import styles from './index.module.less'; - -function AIAvatarReadying() { - return ( -

    - ); -} - -export default AIAvatarReadying; diff --git a/frontend/src/components/AiAvatarCard/index.module.less b/frontend/src/components/AiAvatarCard/index.module.less deleted file mode 100644 index 4cda08a..0000000 --- a/frontend/src/components/AiAvatarCard/index.module.less +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.card { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - text-align: center; - text-align: center; - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 24px; - - .avatar { - position: relative; - border-radius: 50%; - width: 167.5px; - height: 167.5px; - img { - width: 100%; - height: 100%; - } - } - - .aiStatus { - position: absolute; - border: 1px solid; - border-image-source: linear-gradient(77.86deg, #e5f2ff -3.23%, #d9e5ff 51.11%, #f6e2ff 98.65%); - box-shadow: 0px 2px 22px 0px #0000001a; - width: 93px; - height: 73px; - border-radius: 24px; - top: -28px; - left: -56px; - color: #635bff; - font-weight: 500; - font-size: 16px; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - gap: 8px; - background: #ffffff; - } - - .barContainer { - display: flex; - gap: 4px; - } - - .bar { - width: 11px; - height: 16px; - border-radius: 6px; - animation: shake 1s ease infinite; - background-color: #4f4fff; - } - - .bar:nth-child(1) { - animation-delay: -0.4s; - } - - .bar:nth-child(2) { - animation-delay: -0.2s; - } - - @keyframes shake { - 0% { - transform: scaleY(1); - } - 50% { - transform: scaleY(0.5); - } - 100% { - transform: scaleY(1); - } - } -} - -.fullScreen { - .avatar { - width: 115px; - height: 115px; - } - - .aiStatus { - width: 72px; - height: 56px; - top: -24px; - left: 86px; - font-size: 12px; - } -} diff --git a/frontend/src/components/AiAvatarCard/index.tsx b/frontend/src/components/AiAvatarCard/index.tsx deleted file mode 100644 index 50841e4..0000000 --- a/frontend/src/components/AiAvatarCard/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useSelector } from 'react-redux'; -import { RootState } from '@/store'; -import UserTag from '../UserTag'; -import { useDeviceState, useScene } from '@/lib/useCommon'; -import style from './index.module.less'; - -interface IAiAvatarCardProps { - showStatus: boolean; - showUserTag: boolean; - className?: string; -} - -const THRESHOLD_VOLUME = 18; - -function AiAvatarCard(props: IAiAvatarCardProps) { - const { showStatus, showUserTag, className } = props; - const room = useSelector((state: RootState) => state.room); - const { icon } = useScene(); - const { scene, isAITalking, isFullScreen } = room; - const volume = room.localUser.audioPropertiesInfo?.linearVolume || 0; - const { isAudioPublished } = useDeviceState(); - const isLoading = volume >= THRESHOLD_VOLUME && isAudioPublished; - - return ( -
    -
    - Avatar - {showStatus ? ( - isAITalking ? ( -
    -
    -
    -
    -
    -
    -
    - ) : isLoading ? ( -
    正在听...
    - ) : null - ) : null} -
    - {showUserTag ? : null} -
    - ); -} - -export default AiAvatarCard; diff --git a/frontend/src/components/AiChangeCard/CheckScene/index.module.less b/frontend/src/components/AiChangeCard/CheckScene/index.module.less deleted file mode 100644 index 416a7bd..0000000 --- a/frontend/src/components/AiChangeCard/CheckScene/index.module.less +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.wrapper { - position: relative; - width: max-content; - height: 50px; - border-radius: 100px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - color: #737a87; - font-size: 14px; - line-height: 22px; - border: 1px solid#DDE2E9; - margin-bottom: 16px; - - .content { - width: 100%; - height: 100%; - padding: 12px; - display: flex; - justify-content: center; - align-items: center; - z-index: 1; - gap: 4px; - - .icon { - border-radius: 50%; - width: 26px; - height: 26px; - } - - .checked-text { - width: max-content; - font-size: 13px; - line-height: 22px; - } - } -} - -.wrapper:hover { - box-shadow: 0px 5px 6px 0px rgba(82, 102, 133, 0.15); -} - -.active { - border: 1px solid transparent; - background: linear-gradient(77.86deg, #f1f9ff -3.23%, #edf3ff 51.11%, #faf4ff 98.65%) padding-box, - linear-gradient(77.86deg, #3b91ff -3.23%, #0d5eff 51.11%, #c069ff 98.65%) border-box; - - .content { - .checked-text { - background: linear-gradient(90deg, #004fff 38.86%, #9865ff 100%); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 13px; - font-weight: 500; - line-height: 22px; - } - } -} - -.active:hover { - box-shadow: 0px 5px 6px 0px rgba(82, 102, 133, 0.15); -} - -.tag { - position: absolute; - top: 0; - right: 0; - z-index: 3; - font-size: 10px; - font-weight: 500; - line-height: 18px; - transform: translate(20%, -50%); - background: rgba(134, 123, 227, 1); - padding: 0px 6px 0px 6px; - border-radius: 20px 20px 20px 0px; - color: white; -} diff --git a/frontend/src/components/AiChangeCard/CheckScene/index.tsx b/frontend/src/components/AiChangeCard/CheckScene/index.tsx deleted file mode 100644 index be20bfd..0000000 --- a/frontend/src/components/AiChangeCard/CheckScene/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import styles from './index.module.less'; - -interface IProps { - checked: boolean; - title?: string; - onClick?: () => void; - icon?: string; - tag?: string; -} - -function CheckScene(props: IProps) { - const { tag, icon, title, checked, onClick } = props; - return ( -
    - {tag ?
    {tag}
    : ''} -
    - {icon ? icon : ''} -
    {title}
    -
    -
    - ); -} - -export default CheckScene; diff --git a/frontend/src/components/AiChangeCard/index.module.less b/frontend/src/components/AiChangeCard/index.module.less deleted file mode 100644 index f74837b..0000000 --- a/frontend/src/components/AiChangeCard/index.module.less +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.card { - position: relative; - text-align: center; - text-align: center; - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 24px; - - .avatar { - img { - width: 128px; - height: 128px; - } - border-radius: 50%; - width: 128px; - height: 128px; - background: linear-gradient(180deg, #c3e4ff 0%, #98d6fe 100%); - } - - .title { - font-weight: 500; - font-size: 24px; - line-height: 32px; - color: #1d2129; - } - - .desc { - margin-top: 8px; - font-weight: 400; - font-size: 14px; - line-height: 22px; - color: #737a87; - } - - .exceededTitle { - font-weight: 500; - font-size: 24px; - line-height: 32px; - background: linear-gradient(77.86deg, #3b91ff -3.23%, #0d5eff 51.11%, #c069ff 98.65%); - -webkit-background-clip: text; - background-clip: text; - color: transparent; - cursor: pointer; - img { - margin-left: 4px; - } - } - - .sceneContainer { - display: flex; - flex-wrap: wrap; - gap: 8px; - justify-content: center; - width: max-content; - } -} diff --git a/frontend/src/components/AiChangeCard/index.tsx b/frontend/src/components/AiChangeCard/index.tsx deleted file mode 100644 index 37e608b..0000000 --- a/frontend/src/components/AiChangeCard/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useDispatch, useSelector } from 'react-redux'; -import { RootState } from '@/store'; -import CheckScene from './CheckScene'; -import { SceneConfig, updateScene } from '@/store/slices/room'; -import { useScene } from '@/lib/useCommon'; -import style from './index.module.less'; - -function AIChangeCard() { - const { scene, sceneConfigMap } = useSelector((state: RootState) => state.room); - const dispatch = useDispatch(); - const { icon, isVision } = useScene(); - const Scenes = Object.keys(sceneConfigMap).map(key => sceneConfigMap[key]); - - const handleChecked = (checkedScene: string) => { - dispatch(updateScene(checkedScene)); - }; - - return ( -
    -
    - Avatar -
    -
    -
    Hi,欢迎体验实时对话式 AI
    -
    - {isVision ? <>支持豆包 Vision 模型和 深度思考模型, : ''} - 超多对话场景等你开启 -
    -
    -
    - {Scenes.map((key: SceneConfig) => - handleChecked(key.id)} - /> - )} -
    -
    - ); -} - -export default AIChangeCard; diff --git a/frontend/src/components/DrawerRowItem/index.module.less b/frontend/src/components/DrawerRowItem/index.module.less deleted file mode 100644 index 38a4aa5..0000000 --- a/frontend/src/components/DrawerRowItem/index.module.less +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.row { - width: 100%; - display: flex; - flex-direction: row; - align-items: center; - cursor: pointer; - - .firstPart { - display: flex; - flex-direction: row; - align-items: center; - width: 90%; - color: var(--text-color-text-2, var(--text-color-text-2, #42464E)); - text-align: center; - - /* Body/body-2 medium */ - font-family: "PingFang SC"; - font-size: 13px; - font-style: normal; - font-weight: 500; - line-height: 22px; /* 169.231% */ - letter-spacing: 0.039px; - } - - .finalPart { - display: flex; - flex-direction: row; - align-items: center; - width: 10%; - justify-content: flex-end; - - .rightOutlined { - font-size: 12px; - } - } - - .icon { - margin-right: 4px; - } -} - - - -.footer { - width: calc(100% - 12px); - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - - .cancel { - width: 88px; - height: 32px; - border-radius: 6px; - border: 1px solid var(--line-color-border-3, rgba(221, 226, 233, 1)); - margin-right: 12px; - } - - .confirm { - width: 88px; - height: 32px; - border-radius: 6px; - background: linear-gradient(95.87deg, #1664FF 0%, #8040FF 97.7%); - color: white; - } -} - -.children { - width: 100%; - height: 100%; - position: relative; - overflow: hidden; -} - -:global { - .ant-drawer-body { - padding: 12px 24px 0px 24px; - } -} \ No newline at end of file diff --git a/frontend/src/components/DrawerRowItem/index.tsx b/frontend/src/components/DrawerRowItem/index.tsx deleted file mode 100644 index 36c872d..0000000 --- a/frontend/src/components/DrawerRowItem/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import React, { useState } from 'react'; -import { Drawer, DrawerProps } from '@arco-design/web-react'; -import { IconRight } from '@arco-design/web-react/icon'; -import styles from './index.module.less'; - -type IDrawerRowItemProps = { - btnSrc?: string; - btnText: string; - suffix?: React.ReactNode; - drawer?: { - title: string; - width?: string | number; - onOpen?: () => void; - onClose?: () => void; - onCancel?: () => void; - onConfirm?: (handleClose: () => void) => void; - children?: React.ReactNode; - footer?: React.ReactNode | boolean; - } & DrawerProps; -} & React.HTMLAttributes; - -function DrawerRowItem(props: IDrawerRowItemProps) { - const { btnSrc, btnText, suffix, drawer, style, className = '' } = props; - const [open, setOpen] = useState(false); - const { onClose, onOpen } = drawer!; - - const handleClose = () => { - drawer?.onCancel?.(); - setOpen(false); - onClose?.(); - }; - - const handleOpen = () => { - setOpen(true); - if (drawer) { - onOpen?.(); - } - }; - - return ( - <> -
    -
    - {btnSrc ? svg : ''} - {btnText} - {suffix} -
    -
    - -
    -
    - -
    {drawer?.children}
    -
    - - ); -} - -export default DrawerRowItem; diff --git a/frontend/src/components/FullScreenCard/index.module.less b/frontend/src/components/FullScreenCard/index.module.less deleted file mode 100644 index af0152a..0000000 --- a/frontend/src/components/FullScreenCard/index.module.less +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.card { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - text-align: center; - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - background: #fff; - - .tag { - position: absolute; - left: 16px; - top: 16px; - } - - &.hidden { - display: none; - } -} - -.blur-bg { - background-position: center; - background-size: cover; - background-repeat: no-repeat; - filter: blur(20px); - transform: scale(1.1); -} diff --git a/frontend/src/components/FullScreenCard/index.tsx b/frontend/src/components/FullScreenCard/index.tsx deleted file mode 100644 index 8c684f2..0000000 --- a/frontend/src/components/FullScreenCard/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useSelector } from 'react-redux'; -import UserTag from '../UserTag'; -import { RootState } from '@/store'; -import style from './index.module.less'; -import { useScene } from '@/lib/useCommon'; -import { isMobile } from '@/utils/utils'; - -export const LocalFullID = 'local-full-player'; -export const RemoteFullID = 'remote-full-player'; - -function FullScreenCard() { - const isFullScreen = useSelector((state: RootState) => state.room.isFullScreen); - const scene = useScene(); - return ( - <> -
    - -
    -
    -
    -
    - {!isMobile() ? : null} -
    - - ); -} - -export default FullScreenCard; diff --git a/frontend/src/components/Header/index.module.less b/frontend/src/components/Header/index.module.less deleted file mode 100644 index cf67465..0000000 --- a/frontend/src/components/Header/index.module.less +++ /dev/null @@ -1,129 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.header { - height: 48px; - background: white; - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - position: relative; - - :global { - .arco-popover-content-top { - padding: 0px; - } - } -} - -.header-logo { - display: flex; - align-items: center; - justify-content: space-between; - margin-left: 24px; - - :global { - img { - height: 24px; - } - .arco-popover-content { - padding: 0; - } - } -} - -.menu-wrapper { - display: flex; - flex-direction: column; - align-items: center; - row-gap: 8px; - justify-content: space-between; -} - -.header-logo-text { - background: linear-gradient(90deg, #004FFF 38.86%, #9865FF 100%); - -webkit-background-clip: text; - background-clip: text; - color: transparent; - font-size: 16px; -} - -.header-right { - z-index: 2; - color: #fff; - display: flex; - align-items: center; - :global { - span { - height: 24px; - } - } -} - -.header-setting-btn { - background-color: transparent; - border: none; - margin-right: 24px; - color: #000000; - font-size: 16px; - cursor: pointer; -} - -.header-pop { - :global { - .ant-popover-arrow { - left: 16px; - .ant-popover-arrow-content { - &:before { - background-color: white; - } - } - } - .ant-popover-content { - margin-left: 12px; - } - .ant-popover-inner { - margin-right: 12px; - } - .ant-popover-inner-content { - padding: 0; - background-color: white; - position: relative; - width: 100px; - height: 100px; - display: flex; - align-items: center; - flex-direction: column; - justify-content: space-between; - padding-bottom: 7px; - padding-top: 7px; - cursor: pointer; - color: black; - - div { - font-size: 13px; - font-weight: 400; - line-height: 20px; - &:hover { - color: #1664ff; - } - } - } - } -} - -.divider { - margin-top: 2px; - margin-bottom: 2px; - min-width: 70%; - width: 70%; -} - -.header-right-text { - color: #000000; - margin-right: 24px; - cursor: pointer; -} diff --git a/frontend/src/components/Header/index.tsx b/frontend/src/components/Header/index.tsx deleted file mode 100644 index 948b4f4..0000000 --- a/frontend/src/components/Header/index.tsx +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { Button, Divider, Popover } from '@arco-design/web-react'; -import { IconMenu } from '@arco-design/web-react/icon'; -import NetworkIndicator from '@/components/NetworkIndicator'; -import { useIsMobile } from '@/utils/utils'; -import Logo from '@/assets/img/Logo.svg'; -import styles from './index.module.less'; - -const Disclaimer = 'https://www.volcengine.com/docs/6348/68916'; -const ReversoContext = 'https://www.volcengine.com/docs/6348/68918'; -const UserAgreement = 'https://www.volcengine.com/docs/6348/128955'; - -interface HeaderProps { - children?: React.ReactNode; - hide?: boolean; -} - -function Header(props: HeaderProps) { - const { children, hide } = props; - - const MenuProps = [ - { - name: '免责声明', - url: Disclaimer, - }, - { - name: '隐私政策', - url: ReversoContext, - }, - { - name: '用户协议', - url: UserAgreement, - }, - ]; - - return ( -
    -
    - {useIsMobile() ? null : ( - - {MenuProps.map((menuItem) => ( - - ))} -
    - } - > - - - )} - Logo - - 实时对话式 AI 体验馆 - -
    - {children} - {useIsMobile() ? null : ( -
    -
    - window.open('https://www.volcengine.com/product/veRTC/ConversationalAI', '_blank') - } - > - 官网链接 -
    -
    - window.open( - 'https://www.volcengine.com/contact/product?t=%E5%AF%B9%E8%AF%9D%E5%BC%8Fai&source=%E4%BA%A7%E5%93%81%E5%92%A8%E8%AF%A2', - '_blank' - ) - } - > - 联系我们 -
    -
    - )} -
    - ); -} - -export default Header; diff --git a/frontend/src/components/Loading/AudioLoading/index.module.less b/frontend/src/components/Loading/AudioLoading/index.module.less deleted file mode 100644 index 9866a94..0000000 --- a/frontend/src/components/Loading/AudioLoading/index.module.less +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.loader { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - gap: 6px; - height: 36px; - margin-top: 4px; -} - -.dot { - width: 20px; - height: 20px; - border-radius: 12px; - background-color: rgba(148, 116, 255, 1); -} - -.dotter { - animation: glow 0.9s infinite; -} - -@keyframes glow { - 0% { - height: 20px; - } - 50% { - height: 36px; - } - 100% { - height: 20px; - } -} \ No newline at end of file diff --git a/frontend/src/components/Loading/AudioLoading/index.tsx b/frontend/src/components/Loading/AudioLoading/index.tsx deleted file mode 100644 index 8f85c1b..0000000 --- a/frontend/src/components/Loading/AudioLoading/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { memo } from 'react'; -import style from './index.module.less'; - -interface IAudioLoadingProps extends React.HTMLAttributes { - loading?: boolean; -} - -function AudioLoading(props: IAudioLoadingProps) { - const { loading = false, className = '', color, ...rest } = props; - return ( -
    - {Array(3) - .fill(0) - .map((_, index) => ( -
    - ))} -
    - ); -} - -export default memo(AudioLoading); diff --git a/frontend/src/components/Loading/HorizonLoading/index.module.less b/frontend/src/components/Loading/HorizonLoading/index.module.less deleted file mode 100644 index 970c2fc..0000000 --- a/frontend/src/components/Loading/HorizonLoading/index.module.less +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.loader { - display: flex; -} - -.dot { - width: 10px; - height: 10px; - border-radius: 50%; - background-color: white; - animation: glow 0.9s infinite; -} \ No newline at end of file diff --git a/frontend/src/components/Loading/HorizonLoading/index.tsx b/frontend/src/components/Loading/HorizonLoading/index.tsx deleted file mode 100644 index 768c53d..0000000 --- a/frontend/src/components/Loading/HorizonLoading/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { memo } from 'react'; -import style from './index.module.less'; - -interface ILoadingProps extends React.HTMLAttributes { - dotClassName?: string; - speed?: number; - gap?: number; -} - -function Loading(props: ILoadingProps) { - const { dotClassName, gap = 5, speed = 0.9, className = '', ...rest } = props; - return ( -
    - {Array(3) - .fill(0) - .map((_, index) => ( -
    - ))} -
    - ); -} - -export default memo(Loading); diff --git a/frontend/src/components/Loading/VerticalLoading/index.module.less b/frontend/src/components/Loading/VerticalLoading/index.module.less deleted file mode 100644 index 4c5135f..0000000 --- a/frontend/src/components/Loading/VerticalLoading/index.module.less +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.loader { - width: 40px; - height: 10px; - display: flex; - justify-content: center; - align-items: center; - margin: 6px 0px; -} - -.bar { - width: 3px; - height: 12px; - margin: 1px; - display: inline-block; - animation: shake 0.6s ease infinite; -} - -/* 为每个 bar 指定不同的延迟来实现抖动效果 */ -.bar:nth-child(1) { - animation-delay: -0.2s; -} - -.bar:nth-child(2) { - animation-delay: -0.1s; -} - -.bar:nth-child(3) { -} - -@keyframes shake { - 0% { - transform: scaleY(1); - background-color: var(--primary-color-primary-7, rgba(23, 89, 221, 1)); - } - 50% { - transform: scaleY(0.5); - background-color: var(--primary-color-primary-3, rgba(151, 188, 255, 1)); - } - 100% { - transform: scaleY(1); - background-color: var(--primary-color-primary-7, rgba(23, 89, 221, 1)); - } -} \ No newline at end of file diff --git a/frontend/src/components/Loading/VerticalLoading/index.tsx b/frontend/src/components/Loading/VerticalLoading/index.tsx deleted file mode 100644 index 0f9063c..0000000 --- a/frontend/src/components/Loading/VerticalLoading/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { memo } from 'react'; -import styles from './index.module.less'; - -function Loading() { - return ( - - - - - - ); -} - -export default memo(Loading); diff --git a/frontend/src/components/LocalPlayerSet/index.module.less b/frontend/src/components/LocalPlayerSet/index.module.less deleted file mode 100644 index 996b037..0000000 --- a/frontend/src/components/LocalPlayerSet/index.module.less +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.container { - position: absolute; - right: 0; - top: 148px; - width: 36px; - height: 36px; - border-radius: 4px; - cursor: pointer; - z-index: 1; - - img { - width: 100%; - height: 100%; - } -} diff --git a/frontend/src/components/LocalPlayerSet/index.tsx b/frontend/src/components/LocalPlayerSet/index.tsx deleted file mode 100644 index 6d00da9..0000000 --- a/frontend/src/components/LocalPlayerSet/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { Popover } from '@arco-design/web-react'; -import { RootState } from '@/store'; -import { updateFullScreen } from '@/store/slices/room'; -import SET_LOCAL_PLAYER from '@/assets/img/setLocalPlayer.svg'; -import styles from './index.module.less'; - -function LocalPlayerSet() { - const dispatch = useDispatch(); - const room = useSelector((state: RootState) => state.room); - const { isFullScreen } = room; - const [loading, setLoading] = useState(false); - const [isFull, setFull] = useState(isFullScreen); - - const setLocalPlayer = () => { - setLoading(true); - setFull(!isFull); - dispatch(updateFullScreen({ isFullScreen: !isFull })); - setLoading(false); - }; - return ( -
    - - fullSize - -
    - ); -} - -export default LocalPlayerSet; diff --git a/frontend/src/components/NetworkIndicator/index.module.less b/frontend/src/components/NetworkIndicator/index.module.less deleted file mode 100644 index 1e8ad4d..0000000 --- a/frontend/src/components/NetworkIndicator/index.module.less +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.panel { - display: flex; - - .label { - width: 90px; - display: flex; - flex-direction: column; - gap: 4px; - - .state { - font-weight: bold; - } - } - - .value { - display: flex; - flex-direction: column; - gap: 4px; - width: max-content; - - .state { - font-weight: bold; - } - - .loss { - display: flex; - flex-direction: row; - justify-content: space-between; - gap: 12px; - } - } -} - -.wrapper { - display: flex; - align-items: flex-end; - height: 14px; - width: 14px; - margin: 14px; - column-gap: 1.5px; - background-color: rgba(142, 142, 142, 0.05); - border-radius: 3px; - padding: 2px; - - .indicator { - width: 30%; - border-color: rgba(127, 127, 127, 0.184); - border-width: 1px; - border-radius: 1px; - border-style: solid; - opacity: 0.8; - transition: height 0.3s; - box-sizing: border-box; - } -} \ No newline at end of file diff --git a/frontend/src/components/NetworkIndicator/index.tsx b/frontend/src/components/NetworkIndicator/index.tsx deleted file mode 100644 index 5ee5b11..0000000 --- a/frontend/src/components/NetworkIndicator/index.tsx +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useMemo } from 'react'; -import { Popover } from '@arco-design/web-react'; -import { useSelector } from 'react-redux'; -import { IconArrowDown, IconArrowUp } from '@arco-design/web-react/icon'; -import { NetworkQuality } from '@volcengine/rtc'; -import { RootState } from '@/store'; -import { useScene } from '@/lib/useCommon'; -import style from './index.module.less'; - -enum INDICATOR_COLORS { - GREAT = 'rgba(35, 195, 67, 1)', - FAIR = 'rgba(208, 141, 6, 1)', - BAD = 'rgba(245, 78, 78, 1)', - PLACE_HOLDER = 'transparent', -} - -const INDICATOR_TEXT = { - [NetworkQuality.UNKNOWN]: '正常', - [NetworkQuality.EXCELLENT]: '正常', - [NetworkQuality.GOOD]: '正常', - [NetworkQuality.POOR]: '一般', - [NetworkQuality.BAD]: '一般', - [NetworkQuality.VBAD]: '较差', - [NetworkQuality.DOWN]: '较差', -}; - -function NetworkIndicator() { - const room = useSelector((state: RootState) => state.room); - const { botName } = useScene(); - const networkQuality = room.networkQuality; - const delay = room.localUser.audioStats?.rtt; - const audioLossRateUpper = room.localUser.audioStats?.audioLossRate || 0; - const audioLossRateLower = - room.remoteUsers.find((user) => user.userId === botName)?.audioStats - ?.audioLossRate || 0; - - const indicators = useMemo(() => { - switch (networkQuality) { - case NetworkQuality.UNKNOWN: - case NetworkQuality.EXCELLENT: - case NetworkQuality.GOOD: - return Array(3).fill(INDICATOR_COLORS.GREAT); - case NetworkQuality.POOR: - case NetworkQuality.BAD: - return Array(2).fill(INDICATOR_COLORS.FAIR).concat(INDICATOR_COLORS.PLACE_HOLDER); - case NetworkQuality.VBAD: - case NetworkQuality.DOWN: - default: - return [INDICATOR_COLORS.BAD].concat(...Array(2).fill(INDICATOR_COLORS.PLACE_HOLDER)); - } - }, [networkQuality]); - - return ( - -
    -
    网络状态
    -
    延迟
    -
    丢包率
    -
    -
    -
    - {INDICATOR_TEXT[networkQuality]} -
    -
    {delay ? delay.toFixed(0) : '- '}ms
    -
    -
    - - - {`${audioLossRateUpper}` ? (audioLossRateUpper * 100)?.toFixed(0) : '- '}% - -
    -
    - - - {`${audioLossRateLower}` ? (audioLossRateLower * 100)?.toFixed(0) : '- '}% - -
    -
    -
    -
    - } - > -
    - {indicators.map((color, index) => ( -
    - ))} -
    - - ); -} - -export default NetworkIndicator; diff --git a/frontend/src/components/ResizeWrapper/index.module.less b/frontend/src/components/ResizeWrapper/index.module.less deleted file mode 100644 index 06432f2..0000000 --- a/frontend/src/components/ResizeWrapper/index.module.less +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.container { - position: relative; -} \ No newline at end of file diff --git a/frontend/src/components/ResizeWrapper/index.tsx b/frontend/src/components/ResizeWrapper/index.tsx deleted file mode 100644 index ccbac56..0000000 --- a/frontend/src/components/ResizeWrapper/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useEffect, useRef } from 'react'; -import styles from './index.module.less'; - -export type IWrapperProps = React.PropsWithChildren & { - className?: string; -}; - -export default function (props: IWrapperProps) { - const { children, className = '' } = props; - - const ref = useRef(null); - - const resize = () => { - if (ref.current) { - ref.current.style.height = `${window.innerHeight}px`; - } - }; - - useEffect(() => { - resize(); - window.addEventListener('resize', resize); - return () => { - window.removeEventListener('resize', resize); - }; - }, []); - - return ( -
    - {children} -
    - ); -} diff --git a/frontend/src/components/UserTag/index.module.less b/frontend/src/components/UserTag/index.module.less deleted file mode 100644 index 507f0c3..0000000 --- a/frontend/src/components/UserTag/index.module.less +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.userTagWrapper { - display: flex; - border-radius: 6px; - border: 0.4px solid #1f232926; - background-color: #fff; - width: max-content; - z-index: 1; - margin-bottom: 45px; -} - -.iconContainer { - background-color: #5a6169; - display: flex; - align-items: center; - justify-content: center; - width: 20px; - height: 20px; - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} - -.nameContainer { - color: #0c0d0e; - padding: 0 4px; - height: 20px; - line-height: 20px; - font-size: 12px; - font-weight: 500; -} diff --git a/frontend/src/components/UserTag/index.tsx b/frontend/src/components/UserTag/index.tsx deleted file mode 100644 index b9bff6e..0000000 --- a/frontend/src/components/UserTag/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { IconUser } from '@arco-design/web-react/icon'; -import styles from './index.module.less'; - -interface IUserTagProps { - name: string; - className?: string; -} - -function UserTag(props: IUserTagProps) { - const { name, className } = props; - return ( -
    -
    - -
    -
    {name}
    -
    - ); -} - -export default UserTag; diff --git a/frontend/src/config/index.ts b/frontend/src/config/index.ts deleted file mode 100644 index 522b2c9..0000000 --- a/frontend/src/config/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -export const Disclaimer = 'https://www.volcengine.com/docs/6348/68916'; -export const ReversoContext = 'https://www.volcengine.com/docs/6348/68918'; -export const UserAgreement = 'https://www.volcengine.com/docs/6348/128955'; - -/** - * @note 请求的 API Proxy Server(对应此 Demo 中包含的 Node server) 地址。 - * 您可按需改成自己需要访问的地址。 - */ -export const AIGC_PROXY_HOST = 'http://localhost:3001'; - -export interface IScene { - icon: string; - name: string; - questions: string[]; - agentConfig: Record; - llmConfig: Record; - asrConfig: Record; - ttsConfig: Record; -} diff --git a/frontend/src/index.less b/frontend/src/index.less deleted file mode 100644 index 412ee8e..0000000 --- a/frontend/src/index.less +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -@import './theme.less'; - -body { - margin: 0; - overflow: hidden; - width: 100% !important; - background: linear-gradient( - 109.22deg, - rgba(116, 37, 255, 0.05) 0.27%, - rgba(39, 88, 255, 0.05) 51.39%, - rgba(0, 102, 255, 0.05) 99.54% - ); - - img { - user-drag: none; - -webkit-user-drag: none; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - } - - a { - text-decoration: none; - } -} - -@keyframes glow { - 0% { - opacity: 1; - } - 40% { - opacity: 0.7; - } - 100% { - opacity: 0.3; - } -} diff --git a/frontend/src/index.module.less b/frontend/src/index.module.less deleted file mode 100644 index 277faea..0000000 --- a/frontend/src/index.module.less +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -#demo-for-xxx-provider { - flex: 1; - - // ------背景色------ - // 页面可以配置背景色,但不建议,设计同学建议将背景色设置成透明,透出主应用的渐变背景色 - background: transparent; - // ----------------- - - // ------适配------ - width: 100%; - height: 100%; - min-width: 730px; // 最小宽度,可根据情况自定义,页面显示区域不够最小高度时,会允许scroll。 - // 建议pc端最小宽度小于等于730px(渲染区域的最小尺寸),这样可以避免页面滚动,用户体验更好。 - min-height: 1000px; // 最小高度,可根据情况自定义,页面显示区域不够最小高度时,会允许scroll。 - - // 官网规范,<768px时为移动端 - @media (max-width: 767px) { - width: 100%; // 移动端渲染区域的宽度,等于设备屏幕的宽度 - } - // ----------------- - - // 写全局样式要防止与官网样式冲突 - * { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - box-sizing: border-box; - } - - .container-box { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: 100%; - } - } - \ No newline at end of file diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx deleted file mode 100644 index d0ec012..0000000 --- a/frontend/src/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import ReactDOM from 'react-dom/client'; -import { Provider } from 'react-redux'; -import App from './App'; -import store from './store'; -import './index.less'; - -const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); -root.render( - - - -); diff --git a/frontend/src/interface.ts b/frontend/src/interface.ts deleted file mode 100644 index f886e30..0000000 --- a/frontend/src/interface.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -export enum DeviceType { - Camera = 'camera', - Microphone = 'microphone', -} diff --git a/frontend/src/lib/RtcClient.ts b/frontend/src/lib/RtcClient.ts deleted file mode 100644 index bace6ee..0000000 --- a/frontend/src/lib/RtcClient.ts +++ /dev/null @@ -1,436 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import VERTC, { - MirrorType, - StreamIndex, - IRTCEngine, - RoomProfileType, - onUserJoinedEvent, - onUserLeaveEvent, - MediaType, - LocalStreamStats, - RemoteStreamStats, - StreamRemoveReason, - LocalAudioPropertiesInfo, - RemoteAudioPropertiesInfo, - AudioProfileType, - DeviceInfo, - AutoPlayFailedEvent, - PlayerEvent, - NetworkQuality, - VideoRenderMode, - ScreenEncoderConfig, -} from '@volcengine/rtc'; -import RTCAIAnsExtension from '@volcengine/rtc/extension-ainr'; -import { Message } from '@arco-design/web-react'; -import Apis from '@/app/index'; -import { string2tlv } from '@/utils/utils'; -import { COMMAND, INTERRUPT_PRIORITY } from '@/utils/handler'; - -export interface IEventListener { - handleError: (e: { errorCode: any }) => void; - handleUserJoin: (e: onUserJoinedEvent) => void; - handleUserLeave: (e: onUserLeaveEvent) => void; - handleTrackEnded: (e: { kind: string; isScreen: boolean }) => void; - handleUserPublishStream: (e: { userId: string; mediaType: MediaType }) => void; - handleUserUnpublishStream: (e: { - userId: string; - mediaType: MediaType; - reason: StreamRemoveReason; - }) => void; - handleRemoteStreamStats: (e: RemoteStreamStats) => void; - handleLocalStreamStats: (e: LocalStreamStats) => void; - handleLocalAudioPropertiesReport: (e: LocalAudioPropertiesInfo[]) => void; - handleRemoteAudioPropertiesReport: (e: RemoteAudioPropertiesInfo[]) => void; - handleAudioDeviceStateChanged: (e: DeviceInfo) => void; - handleAutoPlayFail: (e: AutoPlayFailedEvent) => void; - handlePlayerEvent: (e: PlayerEvent) => void; - handleRoomBinaryMessageReceived: (e: { userId: string; message: ArrayBuffer }) => void; - handleNetworkQuality: ( - uplinkNetworkQuality: NetworkQuality, - downlinkNetworkQuality: NetworkQuality - ) => void; -} - -export interface BasicBody { - app_id: string; - room_id: string; - user_id: string; - token?: string; -} - -/** - * @brief RTC Core Client - * @notes Refer to official website documentation to get more information about the API. - */ -export class RTCClient { - engine!: IRTCEngine; - - basicInfo!: BasicBody; - - private _audioCaptureDevice?: string; - - private _videoCaptureDevice?: string; - - audioBotEnabled = false; - - audioBotStartTime = 0; - - createEngine = async () => { - this.engine = VERTC.createEngine(this.basicInfo.app_id); - try { - const AIAnsExtension = new RTCAIAnsExtension(); - await this.engine.registerExtension(AIAnsExtension); - AIAnsExtension.enable(); - } catch (error) { - console.warn( - `当前环境不支持 AI 降噪, 此错误可忽略, 不影响实际使用, e: ${(error as any).message}` - ); - } - }; - - addEventListeners = ({ - handleError, - handleUserJoin, - handleUserLeave, - handleTrackEnded, - handleUserPublishStream, - handleUserUnpublishStream, - handleRemoteStreamStats, - handleLocalStreamStats, - handleLocalAudioPropertiesReport, - handleRemoteAudioPropertiesReport, - handleAudioDeviceStateChanged, - handleAutoPlayFail, - handlePlayerEvent, - handleRoomBinaryMessageReceived, - handleNetworkQuality, - }: IEventListener) => { - this.engine.on(VERTC.events.onError, handleError); - this.engine.on(VERTC.events.onUserJoined, handleUserJoin); - this.engine.on(VERTC.events.onUserLeave, handleUserLeave); - this.engine.on(VERTC.events.onTrackEnded, handleTrackEnded); - this.engine.on(VERTC.events.onUserPublishStream, handleUserPublishStream); - this.engine.on(VERTC.events.onUserUnpublishStream, handleUserUnpublishStream); - this.engine.on(VERTC.events.onRemoteStreamStats, handleRemoteStreamStats); - this.engine.on(VERTC.events.onLocalStreamStats, handleLocalStreamStats); - this.engine.on(VERTC.events.onAudioDeviceStateChanged, handleAudioDeviceStateChanged); - this.engine.on(VERTC.events.onLocalAudioPropertiesReport, handleLocalAudioPropertiesReport); - this.engine.on(VERTC.events.onRemoteAudioPropertiesReport, handleRemoteAudioPropertiesReport); - this.engine.on(VERTC.events.onAutoplayFailed, handleAutoPlayFail); - this.engine.on(VERTC.events.onPlayerEvent, handlePlayerEvent); - this.engine.on(VERTC.events.onRoomBinaryMessageReceived, handleRoomBinaryMessageReceived); - this.engine.on(VERTC.events.onNetworkQuality, handleNetworkQuality); - }; - - joinRoom = () => { - console.log(' ------ userJoinRoom\n', `roomId: ${this.basicInfo.room_id}\n`, `uid: ${this.basicInfo.user_id}`); - return this.engine.joinRoom( - this.basicInfo.token!, - `${this.basicInfo.room_id!}`, - { - userId: this.basicInfo.user_id!, - extraInfo: JSON.stringify({ - call_scene: 'RTC-AIGC', - user_name: this.basicInfo.user_id, - user_id: this.basicInfo.user_id, - }), - }, - { - isAutoPublish: true, - isAutoSubscribeAudio: true, - roomProfileType: RoomProfileType.chat, - } - ); - }; - - leaveRoom = () => { - this.audioBotEnabled = false; - this.engine.leaveRoom().catch(); - VERTC.destroyEngine(this.engine); - this._audioCaptureDevice = undefined; - }; - - checkPermission(): Promise<{ - video: boolean; - audio: boolean; - }> { - return VERTC.enableDevices({ - video: false, - audio: true, - }); - } - - /** - * @brief get the devices - * @returns - */ - async getDevices(props?: { video?: boolean; audio?: boolean }): Promise<{ - audioInputs: MediaDeviceInfo[]; - audioOutputs: MediaDeviceInfo[]; - videoInputs: MediaDeviceInfo[]; - }> { - const { video = false, audio = true } = props || {}; - let audioInputs: MediaDeviceInfo[] = []; - let audioOutputs: MediaDeviceInfo[] = []; - let videoInputs: MediaDeviceInfo[] = []; - const { video: hasVideoPermission, audio: hasAudioPermission } = await VERTC.enableDevices({ - video, - audio, - }); - if (audio) { - const inputs = await VERTC.enumerateAudioCaptureDevices(); - const outputs = await VERTC.enumerateAudioPlaybackDevices(); - audioInputs = inputs.filter((i) => i.deviceId && i.kind === 'audioinput'); - audioOutputs = outputs.filter((i) => i.deviceId && i.kind === 'audiooutput'); - this._audioCaptureDevice = audioInputs.filter((i) => i.deviceId)?.[0]?.deviceId; - if (hasAudioPermission) { - if (!audioInputs?.length) { - Message.error('无麦克风设备, 请先确认设备情况。'); - } - if (!audioOutputs?.length) { - Message.error('无扬声器设备, 请先确认设备情况。'); - } - } else { - Message.error('暂无麦克风设备权限, 请先确认设备权限授予情况。'); - } - } - if (video) { - videoInputs = await VERTC.enumerateVideoCaptureDevices(); - videoInputs = videoInputs.filter((i) => i.deviceId && i.kind === 'videoinput'); - this._videoCaptureDevice = videoInputs?.[0]?.deviceId; - if (hasVideoPermission) { - if (!videoInputs?.length) { - Message.error('无摄像头设备, 请先确认设备情况。'); - } - } else { - Message.error('暂无摄像头设备权限, 请先确认设备权限授予情况。'); - } - } - - return { - audioInputs, - audioOutputs, - videoInputs, - }; - } - - startVideoCapture = async (camera?: string) => { - await this.engine.startVideoCapture(camera || this._videoCaptureDevice); - }; - - stopVideoCapture = async () => { - this.engine.setLocalVideoMirrorType(MirrorType.MIRROR_TYPE_RENDER); - await this.engine.stopVideoCapture(); - }; - - startScreenCapture = async (enableAudio = false) => { - await this.engine.startScreenCapture({ - enableAudio, - }); - }; - - stopScreenCapture = async () => { - await this.engine.stopScreenCapture(); - }; - - startAudioCapture = async (mic?: string) => { - await this.engine.startAudioCapture(mic || this._audioCaptureDevice); - }; - - stopAudioCapture = async () => { - await this.engine.stopAudioCapture(); - }; - - publishStream = (mediaType: MediaType) => { - this.engine.publishStream(mediaType); - }; - - unpublishStream = (mediaType: MediaType) => { - this.engine.unpublishStream(mediaType); - }; - - publishScreenStream = async (mediaType: MediaType) => { - await this.engine.publishScreen(mediaType); - }; - - unpublishScreenStream = async (mediaType: MediaType) => { - await this.engine.unpublishScreen(mediaType); - }; - - setScreenEncoderConfig = async (description: ScreenEncoderConfig) => { - await this.engine.setScreenEncoderConfig(description); - }; - - /** - * @brief 设置业务标识参数 - * @param businessId - */ - setBusinessId = (businessId: string) => { - this.engine.setBusinessId(businessId); - }; - - setAudioVolume = (volume: number) => { - this.engine.setCaptureVolume(StreamIndex.STREAM_INDEX_MAIN, volume); - this.engine.setCaptureVolume(StreamIndex.STREAM_INDEX_SCREEN, volume); - }; - - /** - * @brief 设置音质档位 - */ - setAudioProfile = (profile: AudioProfileType) => { - this.engine.setAudioProfile(profile); - }; - - /** - * @brief 切换设备 - */ - switchDevice = (deviceType: MediaType, deviceId: string) => { - if (deviceType === MediaType.AUDIO) { - this._audioCaptureDevice = deviceId; - this.engine.setAudioCaptureDevice(deviceId); - } - if (deviceType === MediaType.VIDEO) { - this._videoCaptureDevice = deviceId; - this.engine.setVideoCaptureDevice(deviceId); - } - if (deviceType === MediaType.AUDIO_AND_VIDEO) { - this._audioCaptureDevice = deviceId; - this._videoCaptureDevice = deviceId; - this.engine.setVideoCaptureDevice(deviceId); - this.engine.setAudioCaptureDevice(deviceId); - } - }; - - setLocalVideoMirrorType = (type: MirrorType) => { - return this.engine.setLocalVideoMirrorType(type); - }; - - setLocalVideoPlayer = ( - userId: string, - renderDom?: string | HTMLElement, - isScreenShare = false, - renderMode = VideoRenderMode.RENDER_MODE_FILL - ) => { - return this.engine.setLocalVideoPlayer( - isScreenShare ? StreamIndex.STREAM_INDEX_SCREEN : StreamIndex.STREAM_INDEX_MAIN, - { - renderDom, - userId, - renderMode, - } - ); - }; - - setRemoteVideoPlayer = (userId: string, renderDom?: string | HTMLElement, renderMode = VideoRenderMode.RENDER_MODE_HIDDEN) => { - return this.engine.setRemoteVideoPlayer( - StreamIndex.STREAM_INDEX_MAIN, - { - renderDom, - userId, - renderMode, - } - ); - } - - /** - * @brief 移除播放器 - */ - removeLocalVideoPlayer = (userId: string, scope: StreamIndex | 'Both' = 'Both') => { - let removeScreen = scope === StreamIndex.STREAM_INDEX_SCREEN; - let removeCamera = scope === StreamIndex.STREAM_INDEX_MAIN; - if (scope === 'Both') { - removeCamera = true; - removeScreen = true; - } - if (removeScreen) { - this.engine.setLocalVideoPlayer(StreamIndex.STREAM_INDEX_SCREEN, { userId }); - } - if (removeCamera) { - this.engine.setLocalVideoPlayer(StreamIndex.STREAM_INDEX_MAIN, { userId }); - } - }; - - /** - * @brief 启用 AIGC - */ - startAgent = async (scene: string) => { - if (this.audioBotEnabled) { - await this.stopAgent(scene); - } - await Apis.VoiceChat.StartVoiceChat({ - SceneID: scene, - }); - this.audioBotEnabled = true; - this.audioBotStartTime = Date.now(); - }; - - /** - * @brief 关闭 AIGC - */ - stopAgent = async (scene: string) => { - if (this.audioBotEnabled || sessionStorage.getItem('audioBotEnabled')) { - await Apis.VoiceChat.StopVoiceChat({ - SceneID: scene, - }); - this.audioBotStartTime = 0; - sessionStorage.removeItem('audioBotEnabled'); - } - this.audioBotEnabled = false; - }; - - /** - * @brief 命令 AIGC - */ - commandAgent = ({ - command, - agentName, - interruptMode = INTERRUPT_PRIORITY.NONE, - message = '', - }: { - command: COMMAND; - agentName: string; - interruptMode?: INTERRUPT_PRIORITY; - message?: string; - }) => { - if (this.audioBotEnabled) { - this.engine.sendUserBinaryMessage( - agentName, - string2tlv( - JSON.stringify({ - Command: command, - InterruptMode: interruptMode, - Message: message, - }), - 'ctrl' - ) - ); - return; - } - console.warn('Interrupt failed, bot not enabled.'); - }; - - /** - * @brief 更新 AIGC 配置 - */ - updateAgent = async (scene: string) => { - if (this.audioBotEnabled) { - await this.stopAgent(scene); - await this.startAgent(scene); - } else { - await this.startAgent(scene); - } - }; - - /** - * @brief 获取当前 AI 是否启用 - */ - getAgentEnabled = () => { - return this.audioBotEnabled; - }; -} - -export default new RTCClient(); diff --git a/frontend/src/lib/listenerHooks.ts b/frontend/src/lib/listenerHooks.ts deleted file mode 100644 index 910eaf1..0000000 --- a/frontend/src/lib/listenerHooks.ts +++ /dev/null @@ -1,268 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import VERTC, { - LocalAudioPropertiesInfo, - RemoteAudioPropertiesInfo, - LocalStreamStats, - MediaType, - onUserJoinedEvent, - onUserLeaveEvent, - RemoteStreamStats, - StreamRemoveReason, - StreamIndex, - DeviceInfo, - AutoPlayFailedEvent, - PlayerEvent, - NetworkQuality, -} from '@volcengine/rtc'; -import { useDispatch } from 'react-redux'; -import { useRef } from 'react'; - -import { - IUser, - remoteUserJoin, - remoteUserLeave, - updateLocalUser, - updateRemoteUser, - addAutoPlayFail, - removeAutoPlayFail, - updateNetworkQuality, -} from '@/store/slices/room'; -import RtcClient, { IEventListener } from './RtcClient'; - -import { setMicrophoneList, updateSelectedDevice } from '@/store/slices/device'; -import { useMessageHandler } from '@/utils/handler'; -import store from '@/store'; - -const useRtcListeners = (): IEventListener => { - const dispatch = useDispatch(); - const { parser } = useMessageHandler(); - const playStatus = useRef<{ [key: string]: { audio: boolean; video: boolean } }>({}); - - const handleTrackEnded = async (event: { kind: string; isScreen: boolean }) => { - const { kind, isScreen } = event; - /** 浏览器自带的屏幕共享关闭触发方式,通过 onTrackEnd 事件去关闭 */ - if (isScreen && kind === 'video') { - await RtcClient.stopScreenCapture(); - await RtcClient.unpublishScreenStream(MediaType.VIDEO); - dispatch( - updateLocalUser({ - publishScreen: false, - }) - ); - } - }; - - const handleUserJoin = (e: onUserJoinedEvent) => { - const extraInfo = JSON.parse(e.userInfo.extraInfo || '{}'); - const userId = extraInfo.user_id || e.userInfo.userId; - const username = extraInfo.user_name || e.userInfo.userId; - dispatch( - remoteUserJoin({ - userId, - username, - }) - ); - }; - - const handleError = (e: { errorCode: typeof VERTC.ErrorCode.DUPLICATE_LOGIN }) => { - const { errorCode } = e; - if (errorCode === VERTC.ErrorCode.DUPLICATE_LOGIN) { - console.log('踢人'); - } - }; - - const handleUserLeave = (e: onUserLeaveEvent) => { - dispatch(remoteUserLeave(e.userInfo)); - dispatch(removeAutoPlayFail(e.userInfo)); - }; - - const handleUserPublishStream = (e: { userId: string; mediaType: MediaType }) => { - const { userId, mediaType } = e; - const payload: IUser = { userId }; - if (mediaType === MediaType.AUDIO) { - payload.publishAudio = true; - } else if (mediaType === MediaType.VIDEO) { - payload.publishVideo = true; - } else if (mediaType === MediaType.AUDIO_AND_VIDEO) { - payload.publishAudio = true; - payload.publishVideo = true; - } - const isFullScreen = store.getState().room.isFullScreen; - RtcClient.setRemoteVideoPlayer(userId, isFullScreen ? 'remote-video-player' : 'remote-full-player'); - dispatch(updateRemoteUser(payload)); - }; - - const handleUserUnpublishStream = (e: { - userId: string; - mediaType: MediaType; - reason: StreamRemoveReason; - }) => { - const { userId, mediaType } = e; - - const payload: IUser = { userId }; - if (mediaType === MediaType.AUDIO) { - payload.publishAudio = false; - } - - if (mediaType === MediaType.AUDIO_AND_VIDEO) { - payload.publishAudio = false; - } - RtcClient.setRemoteVideoPlayer(userId); - dispatch(updateRemoteUser(payload)); - }; - - const handleRemoteStreamStats = (e: RemoteStreamStats) => { - dispatch( - updateRemoteUser({ - userId: e.userId, - audioStats: e.audioStats, - }) - ); - }; - - const handleLocalStreamStats = (e: LocalStreamStats) => { - dispatch( - updateLocalUser({ - audioStats: e.audioStats, - }) - ); - }; - - const handleLocalAudioPropertiesReport = (e: LocalAudioPropertiesInfo[]) => { - const localAudioInfo = e.find( - (audioInfo) => audioInfo.streamIndex === StreamIndex.STREAM_INDEX_MAIN - ); - if (localAudioInfo) { - dispatch( - updateLocalUser({ - audioPropertiesInfo: localAudioInfo.audioPropertiesInfo, - }) - ); - } - }; - - const handleRemoteAudioPropertiesReport = (e: RemoteAudioPropertiesInfo[]) => { - const remoteAudioInfo = e - .filter((audioInfo) => audioInfo.streamKey.streamIndex === StreamIndex.STREAM_INDEX_MAIN) - .map((audioInfo) => ({ - userId: audioInfo.streamKey.userId, - audioPropertiesInfo: audioInfo.audioPropertiesInfo, - })); - - if (remoteAudioInfo.length) { - dispatch(updateRemoteUser(remoteAudioInfo)); - } - }; - - const handleAudioDeviceStateChanged = async (device: DeviceInfo) => { - const devices = await RtcClient.getDevices(); - - if (device.mediaDeviceInfo.kind === 'audioinput') { - let deviceId = device.mediaDeviceInfo.deviceId; - if (device.deviceState === 'inactive') { - deviceId = devices.audioInputs?.[0].deviceId || ''; - } - RtcClient.switchDevice(MediaType.AUDIO, deviceId); - dispatch(setMicrophoneList(devices.audioInputs)); - - dispatch( - updateSelectedDevice({ - selectedMicrophone: deviceId, - }) - ); - } - }; - - const handleAutoPlayFail = (event: AutoPlayFailedEvent) => { - const { userId, kind } = event; - let playUser = playStatus.current?.[userId] || {}; - playUser = { ...playUser, [kind]: false }; - playStatus.current[userId] = playUser; - - dispatch( - addAutoPlayFail({ - userId, - }) - ); - }; - - const addFailUser = (userId: string) => { - dispatch(addAutoPlayFail({ userId })); - }; - - const playerFail = (params: { type: 'audio' | 'video'; userId: string }) => { - const { type, userId } = params; - let playUser = playStatus.current?.[userId] || {}; - - playUser = { ...playUser, [type]: false }; - - const { audio, video } = playUser; - - if (audio === false || video === false) { - addFailUser(userId); - } - - return playUser; - }; - - const handlePlayerEvent = (event: PlayerEvent) => { - const { userId, rawEvent, type } = event; - let playUser = playStatus.current?.[userId] || {}; - - if (!playStatus.current) return; - - if (rawEvent.type === 'playing') { - playUser = { ...playUser, [type]: true }; - const { audio, video } = playUser; - if (audio !== false && video !== false) { - dispatch(removeAutoPlayFail({ userId })); - } - } else if (rawEvent.type === 'pause') { - playUser = playerFail({ type, userId }); - } - - playStatus.current[userId] = playUser; - }; - - const handleNetworkQuality = ( - uplinkNetworkQuality: NetworkQuality, - downlinkNetworkQuality: NetworkQuality - ) => { - dispatch( - updateNetworkQuality({ - networkQuality: Math.floor( - (uplinkNetworkQuality + downlinkNetworkQuality) / 2 - ) as NetworkQuality, - }) - ); - }; - - const handleRoomBinaryMessageReceived = (event: { userId: string; message: ArrayBuffer }) => { - const { message } = event; - parser(message); - }; - - return { - handleError, - handleUserJoin, - handleUserLeave, - handleTrackEnded, - handleUserPublishStream, - handleUserUnpublishStream, - handleRemoteStreamStats, - handleLocalStreamStats, - handleLocalAudioPropertiesReport, - handleRemoteAudioPropertiesReport, - handleAudioDeviceStateChanged, - handleAutoPlayFail, - handlePlayerEvent, - handleRoomBinaryMessageReceived, - handleNetworkQuality, - }; -}; - -export default useRtcListeners; diff --git a/frontend/src/lib/useCommon.ts b/frontend/src/lib/useCommon.ts deleted file mode 100644 index f8ec997..0000000 --- a/frontend/src/lib/useCommon.ts +++ /dev/null @@ -1,272 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useEffect, useState, useRef } from 'react'; -import { useSelector, useDispatch } from 'react-redux'; -import VERTC, { MediaType } from '@volcengine/rtc'; -import { Modal } from '@arco-design/web-react'; -import RtcClient from '@/lib/RtcClient'; -import { - clearCurrentMsg, - clearHistoryMsg, - localJoinRoom, - localLeaveRoom, - updateAIGCState, - updateLocalUser, -} from '@/store/slices/room'; - -import useRtcListeners from '@/lib/listenerHooks'; -import { RootState } from '@/store'; - -import { - updateMediaInputs, - updateSelectedDevice, - setDevicePermissions, -} from '@/store/slices/device'; -import logger from '@/utils/logger'; - -export const ABORT_VISIBILITY_CHANGE = 'abortVisibilityChange'; -export interface FormProps { - username: string; - roomId: string; - publishAudio: boolean; -} - -export const useScene = () => { - const { scene, sceneConfigMap } = useSelector((state: RootState) => state.room); - return sceneConfigMap[scene] || {}; -} - -export const useRTC = () => { - const { scene, rtcConfigMap } = useSelector((state: RootState) => state.room); - return rtcConfigMap[scene] || {}; -} - -export const useDeviceState = () => { - const dispatch = useDispatch(); - const room = useSelector((state: RootState) => state.room); - const localUser = room.localUser; - const isAudioPublished = localUser.publishAudio; - const isVideoPublished = localUser.publishVideo; - const isScreenPublished = localUser.publishScreen; - const queryDevices = async (type: MediaType) => { - const mediaDevices = await RtcClient.getDevices({ - audio: type === MediaType.AUDIO, - video: type === MediaType.VIDEO, - }); - if (type === MediaType.AUDIO) { - dispatch( - updateMediaInputs({ - audioInputs: mediaDevices.audioInputs, - }) - ); - dispatch( - updateSelectedDevice({ - selectedMicrophone: mediaDevices.audioInputs[0]?.deviceId, - }) - ); - } else { - dispatch( - updateMediaInputs({ - videoInputs: mediaDevices.videoInputs, - }) - ); - dispatch( - updateSelectedDevice({ - selectedCamera: mediaDevices.videoInputs[0]?.deviceId, - }) - ); - } - return mediaDevices; - }; - - const switchMic = async (controlPublish = true) => { - if (controlPublish) { - await (!isAudioPublished - ? RtcClient.publishStream(MediaType.AUDIO) - : RtcClient.unpublishStream(MediaType.AUDIO)); - } - queryDevices(MediaType.AUDIO); - await (!isAudioPublished ? RtcClient.startAudioCapture() : RtcClient.stopAudioCapture()); - dispatch( - updateLocalUser({ - publishAudio: !isAudioPublished, - }) - ); - }; - - const switchCamera = async (controlPublish = true) => { - if (controlPublish) { - await (!isVideoPublished - ? RtcClient.publishStream(MediaType.VIDEO) - : RtcClient.unpublishStream(MediaType.VIDEO)); - } - queryDevices(MediaType.VIDEO); - await (!isVideoPublished ? RtcClient.startVideoCapture() : RtcClient.stopVideoCapture()); - dispatch( - updateLocalUser({ - publishVideo: !isVideoPublished, - }) - ); - }; - - const switchScreenCapture = async (controlPublish = true) => { - try { - !isScreenPublished - ? sessionStorage.setItem(ABORT_VISIBILITY_CHANGE, 'true') - : sessionStorage.removeItem(ABORT_VISIBILITY_CHANGE); - if (controlPublish) { - await (!isScreenPublished - ? RtcClient.publishScreenStream(MediaType.VIDEO) - : RtcClient.unpublishScreenStream(MediaType.VIDEO)); - } - await (!isScreenPublished ? RtcClient.startScreenCapture() : RtcClient.stopScreenCapture()); - dispatch( - updateLocalUser({ - publishScreen: !isScreenPublished, - }) - ); - } catch { - console.warn('Not Authorized.'); - } - sessionStorage.removeItem(ABORT_VISIBILITY_CHANGE); - return false; - }; - - return { - isAudioPublished, - isVideoPublished, - isScreenPublished, - switchMic, - switchCamera, - switchScreenCapture, - }; -}; - -export const useGetDevicePermission = () => { - const [permission, setPermission] = useState<{ - audio: boolean; - }>(); - - const dispatch = useDispatch(); - - useEffect(() => { - (async () => { - const permission = await RtcClient.checkPermission(); - dispatch(setDevicePermissions(permission)); - setPermission(permission); - })(); - }, [dispatch]); - return permission; -}; - -export const useJoin = (): [ - boolean, - () => Promise -] => { - const devicePermissions = useSelector((state: RootState) => state.device.devicePermissions); - const room = useSelector((state: RootState) => state.room); - - const dispatch = useDispatch(); - - const { id } = useScene(); - const { switchMic } = useDeviceState(); - const [joining, setJoining] = useState(false); - const listeners = useRtcListeners(); - - const handleAIGCModeStart = async () => { - if (room.isAIGCEnable) { - await RtcClient.stopAgent(id); - dispatch(clearCurrentMsg()); - await RtcClient.startAgent(id); - } else { - await RtcClient.startAgent(id); - } - dispatch(updateAIGCState({ isAIGCEnable: true })); - }; - - async function disPatchJoin(): Promise { - if (joining) { - return; - } - - const isSupported = await VERTC.isSupported(); - if (!isSupported) { - Modal.error({ - title: '不支持 RTC', - content: '您的浏览器可能不支持 RTC 功能,请尝试更换浏览器或升级浏览器后再重试。', - }); - return; - } - - setJoining(true); - - /** 1. Create RTC Engine */ - await RtcClient.createEngine(); - - /** 2.1 Set events callbacks */ - RtcClient.addEventListeners(listeners); - - /** 2.2 RTC starting to join room */ - await RtcClient.joinRoom(); - /** 3. Set users' devices info */ - const mediaDevices = await RtcClient.getDevices({ - audio: true, - video: false, - }); - - dispatch( - localJoinRoom({ - roomId: RtcClient.basicInfo.room_id, - user: { - username: RtcClient.basicInfo.user_id, - userId: RtcClient.basicInfo.user_id, - }, - }) - ); - dispatch( - updateSelectedDevice({ - selectedMicrophone: mediaDevices.audioInputs[0]?.deviceId, - selectedCamera: mediaDevices.videoInputs[0]?.deviceId, - }) - ); - dispatch(updateMediaInputs(mediaDevices)); - - setJoining(false); - - if (devicePermissions.audio) { - try { - await switchMic(); - } catch (e) { - logger.debug('No permission for mic'); - } - } - - handleAIGCModeStart(); - } - - return [joining, disPatchJoin]; -}; - -export const useLeave = () => { - const dispatch = useDispatch(); - const { id } = useScene(); - const idRef = useRef(id); - idRef.current = id; - - return async function () { - await Promise.all([ - RtcClient.stopAudioCapture, - RtcClient.stopScreenCapture, - RtcClient.stopVideoCapture, - ]); - await RtcClient.stopAgent(idRef.current); - await RtcClient.leaveRoom(); - dispatch(clearHistoryMsg()); - dispatch(clearCurrentMsg()); - dispatch(localLeaveRoom()); - dispatch(updateAIGCState({ isAIGCEnable: false })); - }; -}; \ No newline at end of file diff --git a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.module.less b/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.module.less deleted file mode 100644 index 66f2e3d..0000000 --- a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.module.less +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.wrapper { - position: relative; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - - .btn { - width: max-content; - height: max-content; - border-radius: 50%; - display: flex; - justify-content: center; - align-items: center; - - .icon { - position: absolute; - } - } - - .text { - margin-top: 8px; - color: rgba(115, 122, 135, 1); - } -} - -.cursor { - cursor: pointer; -} - -.cursor:hover { - opacity: 0.8; -} - -.cursor:active { - opacity: 1; -} - -.loader { - display: flex; - gap: 5px; -} - -.dot { - width: 10px; - height: 10px; - border-radius: 50%; - background-color: white; - animation: glow 0.9s infinite; -} - -@keyframes glow { - 0% { - opacity: 1; - } - 40% { - opacity: 0.7; - } - 100% { - opacity: 0.3; - } -} \ No newline at end of file diff --git a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.tsx b/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.tsx deleted file mode 100644 index aa52e97..0000000 --- a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import Loading from './loading'; -import style from './index.module.less'; -import CallButtonSVG from '@/assets/img/CallWrapper.svg'; -import PhoneSVG from '@/assets/img/Phone.svg'; - -interface IInvokeButtonProps extends React.HTMLAttributes { - loading?: boolean; -} - -function InvokeButton(props: IInvokeButtonProps) { - const { loading, className, ...rest } = props; - - return ( -
    -
    - call - {loading ? ( - - ) : ( - phone - )} -
    -
    {loading ? '连接中' : '通话'}
    -
    - ); -} - -export default InvokeButton; diff --git a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/loading.tsx b/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/loading.tsx deleted file mode 100644 index 620b245..0000000 --- a/frontend/src/pages/MainPage/MainArea/Antechamber/InvokeButton/loading.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import style from './index.module.less'; - -function Loading(props: React.HTMLAttributes) { - const { className = '', ...rest } = props; - return ( -
    - {Array(3) - .fill(0) - .map((_, index) => ( -
    - ))} -
    - ); -} - -export default Loading; diff --git a/frontend/src/pages/MainPage/MainArea/Antechamber/index.module.less b/frontend/src/pages/MainPage/MainArea/Antechamber/index.module.less deleted file mode 100644 index fdc9df9..0000000 --- a/frontend/src/pages/MainPage/MainArea/Antechamber/index.module.less +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - - .wrapper { - position: relative; - width: 100%; - height: 100%; - border-radius: 16px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - .avatar { - /** - * height = 128px in AvatarCard.avatar - * - */ - margin-top: -128px; - /** - * width = 128px in AvatarCard.avatar - * 128px / 2 = 64px - * - */ - transform: translateX(calc(50% - 64px)); - } - - .mobile { - transform: none !important; - } - - .description { - font-family: PingFang SC; - font-weight: 400; - font-size: 10px; - line-height: 20px; - color: #c7ccd6; - - position: absolute; - bottom: 24px; - left: 24px; - } - - .invoke-btn { - margin-top: 32px; - } - - .mobileDesc { - font-weight: 400; - font-size: 14px; - line-height: 22px; - text-align: center; - color: #737a87; - position: absolute; - bottom: 12px; - } - } - - .mobile { - background: - /* 图层1 (最上层): 背景图片 */ - /* url(...) [position] / [size] [repeat] */ url('../../../../assets/img/mobileBg.png') - center center / cover no-repeat, - /* 图层2 (下层): 渐变背景 */ linear-gradient(167.98deg, #f5f7ff 0%, #faf3ff 100%); - border-radius: 0; - } - \ No newline at end of file diff --git a/frontend/src/pages/MainPage/MainArea/Antechamber/index.tsx b/frontend/src/pages/MainPage/MainArea/Antechamber/index.tsx deleted file mode 100644 index 0c623ec..0000000 --- a/frontend/src/pages/MainPage/MainArea/Antechamber/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useDispatch } from 'react-redux'; -import { isMobile } from '@/utils/utils'; -import InvokeButton from '@/pages/MainPage/MainArea/Antechamber/InvokeButton'; -import { useJoin, useScene } from '@/lib/useCommon'; -import AIChangeCard from '@/components/AiChangeCard'; -import { updateFullScreen, updateShowSubtitle } from '@/store/slices/room'; -import style from './index.module.less'; - -function Antechamber() { - const dispatch = useDispatch(); - const [joining, dispatchJoin] = useJoin(); - const { isScreenMode, isAvatarScene } = useScene(); - - const handleJoinRoom = () => { - dispatch(updateFullScreen({ isFullScreen: !isMobile() && !isScreenMode && !isAvatarScene })); // 初始化 - dispatch(updateShowSubtitle({ isShowSubtitle: !isAvatarScene })); - - if (!joining) { - dispatchJoin(); - } - }; - - return ( -
    - - - {isMobile() ? null : ( -
    Powered by 豆包大模型和火山引擎视频云 RTC
    - )} -
    - ); -} - -export default Antechamber; diff --git a/frontend/src/pages/MainPage/MainArea/Room/AudioController.tsx b/frontend/src/pages/MainPage/MainArea/Room/AudioController.tsx deleted file mode 100644 index 765a114..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/AudioController.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useDispatch, useSelector } from 'react-redux'; -import AudioLoading from '@/components/Loading/AudioLoading'; -import { RootState } from '@/store'; -import RtcClient from '@/lib/RtcClient'; -import { setInterruptMsg } from '@/store/slices/room'; -import { useDeviceState, useScene } from '@/lib/useCommon'; -import { COMMAND } from '@/utils/handler'; -import style from './index.module.less'; - -const THRESHOLD_VOLUME = 18; - -function AudioController(props: React.HTMLAttributes) { - const { className, ...rest } = props; - const dispatch = useDispatch(); - const { isInterruptMode, botName } = useScene(); - const room = useSelector((state: RootState) => state.room); - const volume = room.localUser.audioPropertiesInfo?.linearVolume || 0; - const { isAudioPublished } = useDeviceState(); - const { isAITalking } = room; - const isAIReady = room.msgHistory.length > 0; - const isLoading = volume >= THRESHOLD_VOLUME && isAudioPublished; - - const handleInterrupt = () => { - RtcClient.commandAgent({ - agentName: botName, - command: COMMAND.INTERRUPT, - }); - dispatch(setInterruptMsg()); - }; - return ( -
    - {isAudioPublished ? ( - isAIReady && isAITalking ? ( -
    - {isInterruptMode ?
    语音打断 或
    : null} -
    -
    - 点此打断 -
    -
    - ) : isLoading ? null : ( -
    请开始说话
    - ) - ) : ( -
    你已关闭麦克风
    - )} - -
    - ); -} -export default AudioController; diff --git a/frontend/src/pages/MainPage/MainArea/Room/CameraArea.tsx b/frontend/src/pages/MainPage/MainArea/Room/CameraArea.tsx deleted file mode 100644 index 68d0187..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/CameraArea.tsx +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useSelector } from 'react-redux'; -import { VideoRenderMode } from '@volcengine/rtc'; -import { useEffect } from 'react'; -import { RootState } from '@/store'; -import { useDeviceState, useScene } from '@/lib/useCommon'; -import RtcClient from '@/lib/RtcClient'; - -import styles from './index.module.less'; -import UserTag from '@/components/UserTag'; -import LocalPlayerSet from '@/components/LocalPlayerSet'; -import AiAvatarCard from '@/components/AiAvatarCard'; -import UserAvatar from '@/assets/img/userAvatar.png'; -import CameraCloseNoteSVG from '@/assets/img/CameraCloseNote.svg'; -import ScreenCloseNoteSVG from '@/assets/img/ScreenCloseNote.svg'; -import { LocalFullID, RemoteFullID } from '@/components/FullScreenCard'; - -const LocalVideoID = 'local-video-player'; -const LocalScreenID = 'local-screen-player'; -const RemoteVideoID = 'remote-video-player'; - -function CameraArea(props: React.HTMLAttributes) { - const { className, ...rest } = props; - const room = useSelector((state: RootState) => state.room); - const { isFullScreen, scene } = room; - const { isVision, isScreenMode, botName } = useScene(); - const { isVideoPublished, isScreenPublished, switchCamera, switchScreenCapture } = - useDeviceState(); - const isRemoteVideoPublished = room.remoteUsers.find(user => user.username === botName)?.publishVideo ?? false - - const setVideoPlayer = () => { - RtcClient.removeLocalVideoPlayer(room.localUser.username!); - if (isVideoPublished || isScreenPublished) { - RtcClient.setLocalVideoPlayer( - room.localUser.username!, - isFullScreen ? LocalFullID : isScreenMode ? LocalScreenID : LocalVideoID, - isScreenPublished, - isScreenMode ? VideoRenderMode.RENDER_MODE_FILL : VideoRenderMode.RENDER_MODE_HIDDEN - ); - if(isRemoteVideoPublished) { - RtcClient.setRemoteVideoPlayer( - botName, - isFullScreen ? RemoteVideoID : RemoteFullID, - ); - } - } - }; - - const handleOperateCamera = () => { - switchCamera(); - }; - - const handleOperateScreenShare = () => { - switchScreenCapture(); - }; - - useEffect(() => { - setVideoPlayer(); - }, [isVideoPublished, isScreenPublished, isScreenMode, isFullScreen, isVision]); - - return ( -
    - - {isFullScreen ? ( - - ) : null} - {isVideoPublished || isScreenPublished ? : null} -
    -
    -
    -
    - close - - {isFullScreen ? null : ( -
    - {isScreenMode ? ( - <> - 打开 - - 屏幕共享 - -
    体验豆包视觉理解模型
    - - ) : isVision ? ( - <> - 打开 - - 摄像头 - -
    体验豆包视觉理解模型
    - - ) : null} -
    - )} -
    -
    - ); -} - -export default CameraArea; diff --git a/frontend/src/pages/MainPage/MainArea/Room/Conversation.tsx b/frontend/src/pages/MainPage/MainArea/Room/Conversation.tsx deleted file mode 100644 index b2984d9..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/Conversation.tsx +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import React, { useRef, useEffect } from 'react'; -import { useSelector } from 'react-redux'; -import { Tag, Spin } from '@arco-design/web-react'; -import { RootState } from '@/store'; -import Loading from '@/components/Loading/HorizonLoading'; -import { isMobile } from '@/utils/utils'; -import { useScene } from '@/lib/useCommon'; -import USER_AVATAR from '@/assets/img/userAvatar.png'; -import styles from './index.module.less'; -import AIAvatarReadying from '@/components/AIAvatarLoading'; - -const lines: (string | React.ReactNode)[] = []; - -function Conversation(props: React.HTMLAttributes & { showSubtitle: boolean }) { - const { className, showSubtitle, ...rest } = props; - const room = useSelector((state: RootState) => state.room); - const { msgHistory, isFullScreen } = room; - const { userId } = useSelector((state: RootState) => state.room.localUser); - const { isAITalking, isUserTalking, scene } = useSelector((state: RootState) => state.room); - const isAIReady = msgHistory.length > 0; - const containerRef = useRef(null); - const { botName, icon, isAvatarScene } = useScene(); - - const isUserTextLoading = (owner: string) => { - return owner === userId && isUserTalking; - }; - - const isAITextLoading = (owner: string) => { - return (owner === botName || owner.includes('voiceChat_')) && isAITalking; - }; - - useEffect(() => { - const container = containerRef.current; - if (container) { - container.scrollTop = container.scrollHeight - container.clientHeight; - } - }, [msgHistory.length]); - - return ( -
    - {lines.map((line) => line)} - {!isAIReady ? ( -
    - {isAvatarScene ? ( - - ) : ( - <> - - AI 准备中, 请稍侯 - - )} -
    - ) : ( - '' - )} - {(showSubtitle ? msgHistory : [])?.map(({ value, user, isInterrupted }, index) => { - const isUserMsg = user === userId; - const isRobotMsg = user === botName || user.includes('voiceChat_'); - if (!isUserMsg && !isRobotMsg) { - return ''; - } - return ( -
    - {!isMobile() && ( -
    -
    - Avatar -
    - {isUserMsg ? '我' : scene} -
    - )} -
    -
    - {value} -
    - {isAIReady && - (isUserTextLoading(user) || isAITextLoading(user)) && - index === msgHistory.length - 1 ? ( - - ) : ( - '' - )} -
    -
    - {!isUserMsg && isInterrupted ? 已打断 : ''} -
    -
    - ); - })} -
    - ); -} - -export default Conversation; diff --git a/frontend/src/pages/MainPage/MainArea/Room/ToolBar.tsx b/frontend/src/pages/MainPage/MainArea/Room/ToolBar.tsx deleted file mode 100644 index 5952195..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/ToolBar.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { memo, useState } from 'react'; -import { Drawer } from '@arco-design/web-react'; -import { useDeviceState, useLeave, useScene } from '@/lib/useCommon'; -import { isMobile } from '@/utils/utils'; -import Menu from '../../Menu'; - -import style from './index.module.less'; -import CameraOpenSVG from '@/assets/img/CameraOpen.svg'; -import CameraCloseSVG from '@/assets/img/CameraClose.svg'; -import MicOpenSVG from '@/assets/img/MicOpen.svg'; -import MicCloseSVG from '@/assets/img/MicClose.svg'; -import LeaveRoomSVG from '@/assets/img/LeaveRoom.svg'; -import ScreenOnSVG from '@/assets/img/ScreenOn.svg'; -import ScreenOffSVG from '@/assets/img/ScreenOff.svg'; - -function ToolBar(props: React.HTMLAttributes) { - const { className, ...rest } = props; - const [open, setOpen] = useState(false); - const { isVision, isScreenMode } = useScene(); - const leaveRoom = useLeave(); - const { - isAudioPublished, - isVideoPublished, - isScreenPublished, - switchMic, - switchCamera, - switchScreenCapture, - } = useDeviceState(); - - return ( -
    - switchMic(true)} - className={style.btn} - alt="mic" - /> - {!isVision ? null : isScreenMode && !isMobile() ? ( - switchScreenCapture()} - className={style.btn} - alt="screenShare" - /> - ) : ( - switchCamera(true)} - className={style.btn} - alt="camera" - /> - )} - {isScreenMode && ( - switchScreenCapture(true)} - className={style.btn} - alt="screenShare" - /> - )} - leave - {isMobile() ? ( - setOpen(false)} - style={{ - width: 'max-content', - }} - footer={null} - > - - - ) : null} -
    - ); -} -export default memo(ToolBar); diff --git a/frontend/src/pages/MainPage/MainArea/Room/index.module.less b/frontend/src/pages/MainPage/MainArea/Room/index.module.less deleted file mode 100644 index 98bc8cd..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/index.module.less +++ /dev/null @@ -1,430 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - - .wrapper { - position: relative; - width: 100%; - height: 100%; - border-radius: 16px; - padding: 32px; - box-sizing: border-box; - - .conversation, - .fullScreen, - .mobileConversation { - width: 100%; - position: relative; - height: 100%; - /** - * 100% 为容器高度 - * 128px 为上层 DouBao Card Height - * 24px 为 margin top - * 36px * 2 为容器 padding - * 128 + 24 + 36 * 2 = 224px - */ - max-height: calc(100% - 224px - 8px); - display: flex; - flex-direction: column; - padding-bottom: 12px; - overflow-x: hidden; - overflow-y: auto; - margin-top: 48px; - - .sentence { - position: relative; - display: flex; - flex-direction: row; - justify-content: flex-start; - flex-wrap: wrap; - align-items: center; - width: max-content; - white-space: normal; - max-width: 70%; - padding: 12px 16px; - margin-left: 32px; - gap: 8px; - - .content { - width: max-content; - } - } - - .user { - width: max-content; - border: 0px solid; - padding: 8px 12px 8px 12px; - border-radius: 12px; - background: #f1f3f5; - margin-bottom: 12px; - } - .robot { - font-family: PingFang SC; - color: #0c0d0e; - font-size: 14px; - font-weight: 500; - letter-spacing: 0.003em; - border: 1px solid transparent; - border-radius: 12px; - background: linear-gradient(77.86deg, #fff -3.23%, #fff 51.11%, #fff 98.65%) padding-box, - linear-gradient(77.86deg, #e5f2ff -3.23%, #d9e5ff 51.11%, #f6e2ff 98.65%) border-box; - margin-bottom: 12px; - } - - .loading-wrapper { - width: max-content; - display: inline-block; - - .loading { - margin-left: 8px; - width: max-content; - } - - .dot { - background-color: rgba(193, 163, 237, 1); - width: 8px; - height: 8px; - } - } - - .aiReadying { - font-family: PingFang SC; - font-size: 16px; - font-weight: 500; - color: rgba(27, 30, 61, 0.6); - text-align: center; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - line-height: 28px; - } - - .aiReading-spin { - margin-right: 12px; - line-height: 16px; - } - - .msgName { - display: flex; - gap: 8px; - align-items: center; - font-size: 12px; - line-height: 20px; - color: #737a87; - margin-bottom: 4px; - - .avatar { - border-radius: 50%; - width: 24px; - height: 24px; - - img { - width: 100%; - height: 100%; - } - } - } - } - - .fullScreen { - .msgName { - color: #fff; - text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); - } - - .sentence { - color: #fff; - } - - .user { - background: rgba(0, 0, 0, 0.25); - } - .robot { - background: rgba(0, 12, 71, 0.5); - } - } - - .conversation::-webkit-scrollbar { - width: 0px; - height: 0px; - } - - .conversation::-webkit-scrollbar-thumb { - background: rgba(0, 0, 0, 0); - border-radius: 0px; - } - - .conversation::-webkit-scrollbar-track { - background: rgba(0, 0, 0, 0); - border-radius: 0px; - } - - .toolBar { - position: absolute; - right: 0px; - margin-right: 36px; - bottom: 36px; - } - - .controller { - position: absolute; - left: 0px; - bottom: 36px; - margin-left: 50%; - transform: translateX(-50%); - } - - .declare { - position: absolute; - bottom: 8px; - left: 12px; - color: var(--text-color-text-4, rgba(199, 204, 214, 1)); - font-size: 10px; - font-weight: 400; - line-height: 20px; - } - } - - .text { - width: 100%; - text-align: center; - color: rgba(148, 116, 255, 1); - font-size: 14px; - font-weight: 500; - line-height: 22px; - } - - .closed { - width: 100%; - text-align: center; - color: #737a87; - font-size: 14px; - font-weight: 400; - line-height: 19.6px; - } - - .btns { - width: 100%; - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - gap: 16px; - - .setting { - background-color: rgba(111, 111, 111, 0.497); - border-radius: 50%; - width: 48px; - height: 48px; - padding: 12px; - box-sizing: border-box; - cursor: pointer; - } - - .btn { - cursor: pointer; - } - - .btn:hover { - opacity: 0.8; - } - - .btn:active { - opacity: 1; - } - } - - .column { - margin-right: 0 !important; - justify-content: space-around; - align-items: center; - bottom: 64px !important; - gap: 0; - - img { - width: 84px; - height: 84px; - } - } - - .interruptContainer { - color: #635bff; - display: flex; - align-items: center; - gap: 8px; - font-size: 14px; - font-weight: 500; - } - - .interruptIcon { - display: inline-block; - width: 8px; - height: 8px; - background-color: #635bff; - border-radius: 2px; - } - - .interrupt { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - background: rgba(99, 91, 255, 0.1); - border-radius: 4px; - width: max-content; - height: 26px; - padding: 0 8px; - gap: 4px; - cursor: pointer; - user-select: none; - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - - &:hover { - opacity: 0.8; - } - - &:active { - opacity: 1; - } - } - - .camera-wrapper { - position: absolute; - top: 16px; - right: 16px; - width: 264px; - border-radius: 8px; - background: var(--line-color-border-2, rgba(234, 237, 241, 1)); - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - border: 0.81px solid var(--line-color-border-3, rgba(221, 226, 233, 1)); - z-index: 4; - - .camera-player { - width: 100%; - height: 184px; - border-radius: 8px; - overflow: hidden; - } - - .camera-player-hidden { - display: none !important; - } - - .camera-placeholder { - width: 100%; - height: 184px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - font-size: 12px; - color: #737a87; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - text-align: center; - - .camera-placeholder-close-note { - margin-bottom: 8px; - width: 60px; - height: 60px; - } - - .camera-open-btn { - color: var(--primary-color-primary-6, rgba(22, 100, 255, 1)); - cursor: pointer; - margin-left: 2px; - } - } - - .userTag { - position: absolute; - top: 4px; - left: 4px; - } - - .subTitleUserTag { - position: absolute; - top: -16px; - right: -16px; - } - } - - .visionDescriptionArea { - width: 100%; - background: linear-gradient(77.86deg, #f1f9ff -3.23%, #edf3ff 51.11%, #faf4ff 98.65%); - padding: 10px 0; - text-align: center; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - box-sizing: border-box; - font-size: 12px; - line-height: 20px; - color: #737a87; - - .visionTitleText { - color: #42464e; - font-weight: 500; - } - } - - .subtitleAiAvatar { - opacity: 0.3; - } - - .fullScreenAiAvatar { - height: 184px; - } - - .mobile { - background: - /* 图层1 (最上层): 背景图片 */ - /* url(...) [position] / [size] [repeat] */ url('../../../../assets/img/mobileBg.png') - center center / cover no-repeat, - /* 图层2 (下层): 渐变背景 */ linear-gradient(167.98deg, #f5f7ff 0%, #faf3ff 100%); - - .controller { - bottom: 156px; - } - border-radius: 0; - } - - .mobileConversation { - display: flex; - max-height: calc(100% - 324px) !important; - margin-top: 64px !important; - - .sentence { - margin-left: 0 !important; - max-width: 85% !important; - } - - .mobileLine { - display: flex; - } - } - - .mobilePlayer { - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - } - - @media (max-width: 767px) { - .mobileLine { - display: flex; - justify-content: flex-start; - } - .user { - align-self: flex-end; - } - } - \ No newline at end of file diff --git a/frontend/src/pages/MainPage/MainArea/Room/index.tsx b/frontend/src/pages/MainPage/MainArea/Room/index.tsx deleted file mode 100644 index 77e815a..0000000 --- a/frontend/src/pages/MainPage/MainArea/Room/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useSelector } from 'react-redux'; -import Conversation from './Conversation'; -import ToolBar from './ToolBar'; -import CameraArea from './CameraArea'; -import AudioController from './AudioController'; -import { isMobile } from '@/utils/utils'; -import style from './index.module.less'; -import AiAvatarCard from '@/components/AiAvatarCard'; -import { RootState } from '@/store'; -import UserTag from '@/components/UserTag'; -import FullScreenCard from '@/components/FullScreenCard'; -import MobileToolBar from '@/pages/Mobile/MobileToolBar'; -import { useScene } from '@/lib/useCommon'; - -function Room() { - const room = useSelector((state: RootState) => state.room); - const { isShowSubtitle, scene, isFullScreen } = room; - const { isAvatarScene } = useScene(); - return ( -
    - {isMobile() ?
    : null} - {isMobile() ? : null} - {isShowSubtitle && !isMobile() ? ( - - ) : null} - {isAvatarScene || (isFullScreen && !isMobile()) ? ( - - ) : isMobile() && isShowSubtitle ? null : ( - - )} - {isMobile() ? null : } - - - -
    AI生成内容由大模型生成,不能完全保障真实
    -
    - ); -} - -export default Room; diff --git a/frontend/src/pages/MainPage/MainArea/index.module.less b/frontend/src/pages/MainPage/MainArea/index.module.less deleted file mode 100644 index ed60a57..0000000 --- a/frontend/src/pages/MainPage/MainArea/index.module.less +++ /dev/null @@ -1,262 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.wrapper { - width: 100%; - height: 100%; - background-color: white; - border: 1px solid var(--line-color-border-2, rgba(234, 237, 241, 1)); - border-radius: 16px; - padding: 20px 12.5%; - - .space { - width: 100%; - min-height: 40px; - } - - .doubaoIcon { - width: 111px; - height: 111px; - min-height: 111px; - overflow: hidden; - } - - .interruptTag { - width: max-content; - height: 22px; - padding: 0px 6px 0px 6px; - border-radius: 4px; - margin-left: 4px; - font-family: PingFang SC; - font-size: 12px; - font-weight: 400; - line-height: 22px; - letter-spacing: 0.003em; - color: var(--text-color-text-3, rgba(115, 122, 135, 1)); - background: var(--security-unknown-tag-unknown-1, rgba(241, 243, 245, 1)); - } - - .welcome { - font-family: PingFang SC; - font-size: 24px; - font-weight: 500; - line-height: 32px; - letter-spacing: 0.003em; - text-align: left; - margin-top: 8px; - } - - .weight { - background: linear-gradient(90deg, #004FFF 38.86%, #9865FF 100%); - -webkit-background-clip: text; - background-clip: text; - color: transparent; - } - - .tip { - font-family: PingFang SC; - font-size: 13px; - font-weight: 400; - line-height: 22px; - letter-spacing: 0.003em; - text-align: left; - color: rgba(27, 30, 61, 0.6); - margin-top: 18px; - margin-bottom: 18px; - } - - .tagProblem { - width: max-content; - border-radius: 4px; - font-family: PingFang SC; - font-size: 12px; - font-weight: 500; - line-height: 20px; - letter-spacing: 0.003em; - text-align: center; - margin-bottom: 12px; - color: rgba(66, 70, 78, 1); - } - - .conversation { - overflow-x: hidden; - overflow-y: auto; - width: 100%; - position: relative; - height: calc(75% - 12px); - display: flex; - flex-direction: column; - padding-bottom: 12px; - - .aiReadying { - font-family: PingFang SC; - font-size: 16px; - font-weight: 500; - line-height: 18px; - letter-spacing: 0.003em; - color: rgba(27, 30, 61, 0.6); - margin-top: 12px; - text-align: center; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - } - - .aiReading-spin { - margin-right: 12px; - } - } - - .conversation::-webkit-scrollbar { - width: 0px; - height: 0px; - } - - .conversation::-webkit-scrollbar-thumb { - background: rgba(0,0,0,0); - border-radius: 0px; - } - - .conversation::-webkit-scrollbar-track { - background: rgba(0,0,0,0); - border-radius: 0px; - } - - .sentence { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - width: 100%; - } - .user { - width: max-content; - border: 0px solid; - align-self: flex-end; - padding: 8px 12px 8px 12px; - border-radius: 12px 0px 12px 12px; - background: var(--background-color-bg-5, rgba(241, 243, 245, 1)); - margin-top: 12px; - } - .robot { - font-family: PingFang SC; - font-size: 14px; - font-weight: 400; - letter-spacing: 0.003em; - - border: 0px solid; - align-self: flex-start; - padding: 3px 12px 3px 0px; - } - - .userTalkingWave { - height: 100px; - } - - .userStopTalkingWave { - height: 100px; - transform: scaleY(.5); - } - - .status { - overflow: hidden; - width: 100%; - height: 25%; - display: flex; - flex-direction: column; - justify-content: flex-end; - align-items: center; - gap: 8px; - - .status-row { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - - .status-icon { - width: 24px; - height: 24px; - margin-right: 6px; - } - - .status-text { - font-family: PingFang SC; - font-size: 14px; - font-weight: 500; - line-height: 22px; - letter-spacing: 0.003em; - } - } - - .desc { - font-family: PingFang SC; - font-size: 10px; - font-weight: 400; - line-height: 18px; - letter-spacing: 0.003em; - text-align: center; - color: var(--text-color-text-4, rgba(199, 204, 214, 1)); - } - - .micNotify { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - } - - .micReopen { - position: relative; - width: 107px; - height: 40px; - padding: 5px 16px 5px 16px; - margin-left: 12px; - margin-right: 12px; - background-clip: padding-box; /* 确保背景不覆盖边框 */ - border-radius: 12px; - - &:hover, - &:active, - &:focus { - opacity: 1; - color: rgba(0, 0, 0, 0.85); - border-color: #d9d9d9; - } - } - } - - .interrupt { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - margin-top: 12px; - width: max-content; - line-height: 28px; - padding: 1px 6px 1px 6px; - border-radius: 4px; - margin-left: 4px; - font-family: PingFang SC; - font-size: 12px; - font-weight: 400; - letter-spacing: 0.003em; - text-align: left; - box-shadow: 0px 0px 0px 1px rgba(221, 226, 233, 1); - color: var(--text-color-text-3, rgba(115, 122, 135, 1)); - - &:hover, - &:active, - &:focus { - opacity: 1; - border-color: #d9d9d9; - } - - img { - margin-right: 8px; - } - } -} \ No newline at end of file diff --git a/frontend/src/pages/MainPage/MainArea/index.tsx b/frontend/src/pages/MainPage/MainArea/index.tsx deleted file mode 100644 index 98015da..0000000 --- a/frontend/src/pages/MainPage/MainArea/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useSelector } from 'react-redux'; -import Antechamber from './Antechamber'; -import Room from './Room'; - -function MainArea() { - const room = useSelector((state: any) => state.room); - const isJoined = room.isJoined; - return isJoined ? : ; -} - -export default MainArea; diff --git a/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.module.less b/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.module.less deleted file mode 100644 index 5bddcf7..0000000 --- a/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.module.less +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.wrapper { - width: 100%; - display: flex; - flex-direction: row; - gap: 24px; - padding: 8px 16px; - - - .label { - display: flex; - flex-direction: column; - align-items: flex-start; - line-height: 16px; - gap: 12px; - - .label-text { - font-family: PingFang SC; - font-size: 14px; - font-weight: 500; - line-height: 22px; - letter-spacing: 0.003em; - text-align: left; - } - } - - .value { - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - gap: 18px; - } -} \ No newline at end of file diff --git a/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.tsx b/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.tsx deleted file mode 100644 index 36f98c6..0000000 --- a/frontend/src/pages/MainPage/Menu/components/DeviceDrawerButton/index.tsx +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useMemo } from 'react'; -import { useSelector, useDispatch } from 'react-redux'; -import { MediaType } from '@volcengine/rtc'; -import { Switch, Select } from '@arco-design/web-react'; -import DrawerRowItem from '@/components/DrawerRowItem'; -import { RootState } from '@/store'; -import RtcClient from '@/lib/RtcClient'; -import { useDeviceState, useScene } from '@/lib/useCommon'; -import { updateSelectedDevice } from '@/store/slices/device'; -import { isMobile } from '@/utils/utils'; -import styles from './index.module.less'; - -interface IDeviceDrawerButtonProps { - type?: MediaType.AUDIO | MediaType.VIDEO; -} - -const DEVICE_NAME = { - [MediaType.AUDIO]: '麦克风', - [MediaType.VIDEO]: '摄像头', -}; - -function DeviceDrawerButton(props: IDeviceDrawerButtonProps) { - const { type = MediaType.AUDIO } = props; - const device = useDeviceState(); - const isEnable = type === MediaType.AUDIO ? device.isAudioPublished : device.isVideoPublished; - const switcher = type === MediaType.AUDIO ? device.switchMic : device.switchCamera; - const devicePermissions = useSelector((state: RootState) => state.device.devicePermissions); - const devices = useSelector((state: RootState) => state.device); - const selectedDevice = - type === MediaType.AUDIO ? devices.selectedMicrophone : devices.selectedCamera; - const permission = devicePermissions?.[type === MediaType.AUDIO ? 'audio' : 'video']; - const { isScreenMode } = useScene(); - const isScreenEnable = device.isScreenPublished; - const changeScreenPublished = device.switchScreenCapture; - - const SETTING_NAME = { - [MediaType.AUDIO]: '麦克风', - [MediaType.VIDEO]: isScreenMode ? '屏幕共享' : '视频', - }; - - const dispatch = useDispatch(); - const deviceList = useMemo( - () => (type === MediaType.AUDIO ? devices.audioInputs : devices.videoInputs), - [devices] - ); - - const handleDeviceChange = (value: string) => { - RtcClient.switchDevice(type, value); - if (type === MediaType.AUDIO) { - dispatch( - updateSelectedDevice({ - selectedMicrophone: value, - }) - ); - } - if (type === MediaType.VIDEO) { - dispatch( - updateSelectedDevice({ - selectedCamera: value, - }) - ); - } - }; - - return ( - - {!isScreenMode && ( -
    -
    {DEVICE_NAME[type]}
    -
    - switcher(enable)} - disabled={!permission} - /> - -
    -
    - )} - {type === MediaType.VIDEO && isScreenMode && ( -
    -
    屏幕共享
    -
    - -
    -
    - )} - - ), - }} - /> - ); -} - -export default DeviceDrawerButton; diff --git a/frontend/src/pages/MainPage/Menu/components/Operation/index.module.less b/frontend/src/pages/MainPage/Menu/components/Operation/index.module.less deleted file mode 100644 index 1c46bed..0000000 --- a/frontend/src/pages/MainPage/Menu/components/Operation/index.module.less +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.device { - display: flex; - flex-direction: column; - gap: 16px; -} - -.box { - position: relative; - width: 100%; - border-radius: 16px; - background-color: white; - border: 1px solid var(--line-color-border-2, rgba(234, 237, 241, 1)); - padding: 16px 24px 16px 24px; - box-sizing: border-box; - margin-bottom: 16px; -} \ No newline at end of file diff --git a/frontend/src/pages/MainPage/Menu/components/Operation/index.tsx b/frontend/src/pages/MainPage/Menu/components/Operation/index.tsx deleted file mode 100644 index a22ec29..0000000 --- a/frontend/src/pages/MainPage/Menu/components/Operation/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { MediaType } from '@volcengine/rtc'; -import DeviceDrawerButton from '../DeviceDrawerButton'; -import Subtitle from '../Subtitle'; -import { useScene } from '@/lib/useCommon'; -import styles from './index.module.less'; - -function Operation() { - const { isVision } = useScene(); - return ( -
    - - {isVision && } - -
    - ); -} - -export default Operation; diff --git a/frontend/src/pages/MainPage/Menu/components/Subtitle/index.module.less b/frontend/src/pages/MainPage/Menu/components/Subtitle/index.module.less deleted file mode 100644 index 6864c36..0000000 --- a/frontend/src/pages/MainPage/Menu/components/Subtitle/index.module.less +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.subtitle { - position: relative; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - - .label { - font-size: 13px; - font-weight: 400; - line-height: 22px; - color: var(--text-color-text-1, rgba(12, 13, 14, 1)); - - .icon { - margin-left: 4px; - } - } -} diff --git a/frontend/src/pages/MainPage/Menu/components/Subtitle/index.tsx b/frontend/src/pages/MainPage/Menu/components/Subtitle/index.tsx deleted file mode 100644 index 8d2e129..0000000 --- a/frontend/src/pages/MainPage/Menu/components/Subtitle/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useState } from 'react'; -import { Switch } from '@arco-design/web-react'; -import { useDispatch, useSelector } from 'react-redux'; -import { RootState } from '@/store'; -import { updateShowSubtitle } from '@/store/slices/room'; -import styles from './index.module.less'; - -function Subtitle() { - const dispatch = useDispatch(); - const room = useSelector((state: RootState) => state.room); - const { isShowSubtitle } = room; - const [checked, setChecked] = useState(isShowSubtitle); - const [loading, setLoading] = useState(false); - const handleChange = () => { - setLoading(true); - setChecked(!checked); - dispatch(updateShowSubtitle({ isShowSubtitle: !checked })); - setLoading(false); - }; - return ( -
    -
    字幕
    -
    - -
    -
    - ); -} - -export default Subtitle; diff --git a/frontend/src/pages/MainPage/Menu/index.module.less b/frontend/src/pages/MainPage/Menu/index.module.less deleted file mode 100644 index 8bb8d7c..0000000 --- a/frontend/src/pages/MainPage/Menu/index.module.less +++ /dev/null @@ -1,231 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - - .wrapper { - width: 210px; - height: 100%; - border-radius: 16px; - display: flex; - flex-direction: column; - align-items: center; - - .info { - display: flex; - flex-direction: column; - gap: 12px; - - .title { - font-weight: 500; - font-size: 14px; - line-height: 22px; - color: #0c0d0e; - } - - .desc { - display: flex; - flex-direction: row; - align-items: center; - gap: 6px; - font-size: 12px; - line-height: 20px; - color: #737a87; - - :global { - div.arco-typography, p.arco-typography { - margin-bottom: 0px; - } - } - } - .bold { - font-size: 13px; - font-weight: 500; - line-height: 22px; - color: var(--text-color-text-1, rgba(12, 13, 14, 1)); - } - - .gray { - display: flex; - flex-direction: row; - align-items: center; - font-size: 13px; - font-weight: 400; - line-height: 22px; - color: var(--text-color-text-3, rgba(115, 122, 135, 1)); - - .value { - width: 65%; - font-size: 12px; - font-weight: 500; - margin-left: 5px; - } - - :global { - .arco-typography { - margin-bottom: 0px; - display: inline-block; - color: #737a87; - } - } - } - - .buttonArea { - width: 100%; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - margin-top: 8px; - - .getMore { - width: 100%; - color: #fff; - height: 36px; - text-shadow: none; - box-shadow: none; - border: none; - text-align: center; - background: linear-gradient(56.59deg, #3c73ff 15.53%, #6e41ee 62.28%, #d641ee 90.32%), - radial-gradient( - 203.56% 121.74% at 27.12% -21.74%, - rgba(82, 182, 255, 0.2) 0%, - rgba(143, 65, 238, 0) 100% - ), - radial-gradient( - 134.75% 51.95% at 26.69% 5.8%, - rgba(157, 214, 255, 0.1) 0%, - rgba(143, 65, 238, 0) 100% - ), - radial-gradient( - 82.39% 83.92% at 147.46% 76.45%, - rgba(82, 99, 255, 0.8) 0%, - rgba(143, 65, 238, 0) 100% - ); - border-radius: 6px; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - - color: var(--Primary-Neutral-0, #fff); - text-align: center; - - /* Body/body-2 medium */ - font-family: 'PingFang SC'; - font-size: 13px; - font-style: normal; - font-weight: 500; - cursor: pointer; - } - - .getMore:hover { - opacity: 0.9; - } - - .getMore:active { - opacity: 1; - } - - .getMore[disabled], - .getMore[disabled]:hover { - color: #fff; - background: linear-gradient(95.87deg, #1664ff 0%, #8040ff 97.7%); - opacity: 0.8; - } - } - } - - .questions { - display: flex; - flex-direction: column; - gap: 8px; - - .title { - font-size: 13px; - font-weight: 500; - line-height: 22px; - } - - .line { - font-size: 12px; - font-weight: 400; - line-height: 20px; - color: rgba(66, 70, 78, 1); - cursor: pointer; - } - } - - .device { - display: flex; - flex-direction: column; - gap: 16px; - } - - .box { - position: relative; - width: 100%; - border-radius: 16px; - background-color: white; - border: 1px solid var(--line-color-border-2, rgba(234, 237, 241, 1)); - padding: 16px 24px 16px 24px; - box-sizing: border-box; - margin-bottom: 16px; - } - - .resetTime { - position: relative; - width: 100%; - border-radius: 16px; - padding: 0px 24px 8px 24px; - box-sizing: border-box; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - - .normalLine { - color: #42464e; - /* Body/body-1 regular */ - font-family: 'PingFang SC'; - font-size: 12px; - font-style: normal; - font-weight: 400; - line-height: 20px; /* 166.667% */ - letter-spacing: 0.036px; - opacity: 0.8; - } - } - - .tagWrapper { - margin-top: 12px; - display: flex; - flex-wrap: wrap; - gap: 4px; - } -} - -.mobile-camera-wrapper { - position: relative; - width: 100%; - height: 100%; - border-radius: 16px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - margin-bottom: 16px; - - .mobile-camera { - position: relative !important; - width: 100% !important; - height: 100% !important; - top: auto !important; - right: auto !important; - } -} diff --git a/frontend/src/pages/MainPage/Menu/index.tsx b/frontend/src/pages/MainPage/Menu/index.tsx deleted file mode 100644 index 821c9cd..0000000 --- a/frontend/src/pages/MainPage/Menu/index.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import VERTC from '@volcengine/rtc'; -import { Tooltip, Typography } from '@arco-design/web-react'; -import { useSelector } from 'react-redux'; -import { RootState } from '@/store'; -import Operation from './components/Operation'; -import CameraArea from '../MainArea/Room/CameraArea'; -import { isMobile } from '@/utils/utils'; -import { useScene } from '@/lib/useCommon'; -import packageJson from '../../../../package.json'; -import styles from './index.module.less'; - -function Menu() { - const room = useSelector((state: RootState) => state.room); - const isJoined = room?.isJoined; - const { isVision, name } = useScene(); - const requestId = sessionStorage.getItem('RequestID'); - - return ( -
    - {isJoined && isMobile() && isVision ? ( -
    - -
    - ) : null} -
    -
    AI 人设:{name}
    -
    - {isJoined ? : ''} -
    -
    {isJoined ? '其他信息' : '版本信息'}
    -
    Demo Version {packageJson.version}
    -
    SDK Version {VERTC.getSdkVersion()}
    - {isJoined ? ( -
    - 房间ID{' '} - - - {room.roomId || '-'} - - -
    - ) : ( - '' - )} - {room.isAIGCEnable ? ( -
    - RequestID{' '} - - - {requestId || '-'} - - -
    - ) : ( - '' - )} -
    -
    - ); -} - -export default Menu; diff --git a/frontend/src/pages/MainPage/index.module.less b/frontend/src/pages/MainPage/index.module.less deleted file mode 100644 index 71ce66b..0000000 --- a/frontend/src/pages/MainPage/index.module.less +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.main { - position: relative; - width: 100%; - height: calc(100% - 48px); - display: flex; - flex-direction: row; - align-items: center; - box-sizing: border-box; - - .mainArea { - position: relative; - width: calc(100% - 220px); - height: 100%; - margin-right: 2%; - background-color: white; - border-radius: 16px; - overflow: hidden; - border: 1px solid var(--line-color-border-2, #eaedf1); - } - - .isMobile { - width: 100% !important; - margin-right: 0% !important; - border-radius: 0px !important; - } - - .operationArea { - position: relative; - width: 200px; - height: 100%; - } -} diff --git a/frontend/src/pages/MainPage/index.tsx b/frontend/src/pages/MainPage/index.tsx deleted file mode 100644 index e602442..0000000 --- a/frontend/src/pages/MainPage/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useEffect } from 'react'; -import { useDispatch } from 'react-redux'; -import Header from '@/components/Header'; -import ResizeWrapper from '@/components/ResizeWrapper'; -import Menu from './Menu'; -import { useIsMobile } from '@/utils/utils'; -import Apis from '@/app/index'; -import MainArea from './MainArea'; -import { ABORT_VISIBILITY_CHANGE, useLeave } from '@/lib/useCommon'; -import { RTCConfig, SceneConfig, updateRTCConfig, updateScene, updateSceneConfig } from '@/store/slices/room'; -import styles from './index.module.less'; - -export default function () { - - const leaveRoom = useLeave(); - const dispatch = useDispatch(); - - const getScenes = async () => { - const { scenes }: { - scenes: { - rtc: RTCConfig; - scene: SceneConfig; - }[]; - } = await Apis.Basic.getScenes(); - dispatch(updateScene(scenes[0].scene.id)); - dispatch(updateSceneConfig( - scenes.reduce>((prev, cur) => { - prev[cur.scene.id] = cur.scene; - return prev; - }, {}) - )); - dispatch(updateRTCConfig( - scenes.reduce>((prev, cur) => { - prev[cur.scene.id] = cur.rtc; - return prev; - }, {}) - )); - } - - useEffect(() => { - getScenes(); - const isOriginalDemo = window.location.host.startsWith('localhost'); - const handler = () => { - if ( - document.visibilityState === 'hidden' && - !sessionStorage.getItem(ABORT_VISIBILITY_CHANGE) - ) { - leaveRoom(); - } - }; - !isOriginalDemo && document.addEventListener('visibilitychange', handler); - return () => { - !isOriginalDemo && document.removeEventListener('visibilitychange', handler); - }; - }, []); - - return ( - -
    -
    -
    - -
    - {useIsMobile() ? null : ( -
    - -
    - )} -
    - - ); -} diff --git a/frontend/src/pages/Mobile/MobileToolBar/index.module.less b/frontend/src/pages/Mobile/MobileToolBar/index.module.less deleted file mode 100644 index cd49fcb..0000000 --- a/frontend/src/pages/Mobile/MobileToolBar/index.module.less +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.wrapper { - position: absolute; - display: flex; - align-items: center; - justify-content: space-between; - padding: 16px; - z-index: 2; - top: 0; - left: 0; - right: 0; - color: #42464e; - font-size: 16px; - font-weight: 500; - - > div { - display: flex; - align-items: center; - gap: 8px; - } - - .setting { - background-color: #fff; - width: 36px; - height: 36px; - line-height: 28px; - border-radius: 50%; - text-align: center; - border: 0.5px solid #ffffff80; - cursor: pointer; - font-weight: 500; - } - - .aiSetting { - background-color: #fff; - height: 36px; - border-radius: 18px; - line-height: 36px; - padding: 0 8px; - cursor: pointer; - } - - .screen, - .subtitle { - cursor: pointer; - background-color: #fff; - height: 36px; - border-radius: 18px; - line-height: 36px; - padding: 0 8px; - } - - .showSubTitle { - background: #9474ff; - color: #fff; - } -} diff --git a/frontend/src/pages/Mobile/MobileToolBar/index.tsx b/frontend/src/pages/Mobile/MobileToolBar/index.tsx deleted file mode 100644 index 40741e8..0000000 --- a/frontend/src/pages/Mobile/MobileToolBar/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useDispatch, useSelector } from 'react-redux'; -import { memo, useEffect, useState } from 'react'; -import { VideoRenderMode } from '@volcengine/rtc'; -import { useDeviceState, useScene } from '@/lib/useCommon'; -import { RootState } from '@/store'; -import RtcClient from '@/lib/RtcClient'; - -import { updateShowSubtitle } from '@/store/slices/room'; -import SettingsDrawer from '../SettingsDrawer'; -import styles from './index.module.less'; - -function MobileToolBar(props: React.HTMLAttributes) { - const dispatch = useDispatch(); - - const room = useSelector((state: RootState) => state.room); - const { isShowSubtitle } = room; - const [open, setOpen] = useState(false); - const [subTitleStatus, setSubTitleStatus] = useState(isShowSubtitle); - - const { isScreenMode } = useScene(); - const { isVideoPublished, isScreenPublished } = useDeviceState(); - - const switchSubtitle = () => { - setSubTitleStatus(!subTitleStatus); - dispatch(updateShowSubtitle({ isShowSubtitle: !subTitleStatus })); - }; - - const setVideoPlayer = () => { - if (isVideoPublished || isScreenPublished) { - RtcClient.setLocalVideoPlayer( - room.localUser.username!, - 'mobile-local-player', - isScreenPublished, - isScreenMode ? VideoRenderMode.RENDER_MODE_FILL : VideoRenderMode.RENDER_MODE_HIDDEN - ); - } - }; - - useEffect(() => { - setVideoPlayer(); - }, [isVideoPublished, isScreenPublished, isScreenMode]); - - return ( -
    -
    -
    - 字幕 -
    -
    - - setOpen(false)} /> -
    - ); -} -export default memo(MobileToolBar); diff --git a/frontend/src/pages/Mobile/SettingsDrawer/index.module.less b/frontend/src/pages/Mobile/SettingsDrawer/index.module.less deleted file mode 100644 index f97550f..0000000 --- a/frontend/src/pages/Mobile/SettingsDrawer/index.module.less +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.settingsPage { - background: linear-gradient(109.22deg, #7425ff0d 0.27%, #2758ff0d 51.39%, #0066ff0d 99.54%); - display: flex; - flex-direction: column; - height: 100%; - box-sizing: border-box; - padding: 12px 0; -} - -.settingsGroup { - background-color: #ffffff; - border-radius: 8px; - margin: 0 16px 12px 16px; - overflow: hidden; - - &:last-of-type { - margin-bottom: 0; - } -} - -.logoutButtonContainer { - margin: 20px 16px 0 16px; - width: calc(100% - 32px); -} - -.logoutButton { - width: 100%; - padding: 15px; - background-color: #ffffff; - color: #ff706d; - border: none; - border-radius: 8px; - font-size: 15px; - font-weight: 500; - cursor: pointer; - text-align: center; - - &:hover { - background-color: #f7f8fa; - } -} - -.versionInfo { - display: flex; - flex-direction: column; - align-items: flex-end; - font-size: 14px; - line-height: 1.5; -} - -.copyLinkText { - color: #165dff; -} diff --git a/frontend/src/pages/Mobile/SettingsDrawer/index.tsx b/frontend/src/pages/Mobile/SettingsDrawer/index.tsx deleted file mode 100644 index 725cb89..0000000 --- a/frontend/src/pages/Mobile/SettingsDrawer/index.tsx +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import VERTC from '@volcengine/rtc'; -import { Drawer, Message } from '@arco-design/web-react'; // Import Message if you plan to use it -import { useSelector } from 'react-redux'; -import { RootState } from '@/store'; -import { useLeave } from '@/lib/useCommon'; -import { Disclaimer, ReversoContext, UserAgreement } from '@/config'; -import { SettingsItem } from '../components/SettingsItem'; -import packageJSON from '../../../../package.json'; -import styles from './index.module.less'; - -interface SettingsDrawerProps { - visible: boolean; - onCancel: () => void; -} - -function SettingsDrawer({ visible, onCancel }: SettingsDrawerProps) { - const room = useSelector((state: RootState) => state.room); - const { roomId } = room; - const leaveRoom = useLeave(); - - const handleLogout = () => { - leaveRoom(); - }; - - const handleCopyLink = () => { - const pcLink = window.location.origin + window.location.pathname; - navigator.clipboard - .writeText(pcLink) - .then(() => { - Message.success('链接已复制'); - }) - .catch((err) => { - console.error('复制链接失败:', err); - Message.error('复制失败,请手动复制'); - }); - }; - - return ( - -
    -
    - - window.open(ReversoContext, '_blank')} /> - window.open(UserAgreement, '_blank')} /> - window.open(Disclaimer, '_blank')} /> - - Demo version {packageJSON.version} - SDK version {VERTC.getSdkVersion()} -
    - } - showArrow={false} - /> -
    - -
    - -
    - -
    - -
    -
    - - ); -} - -export default SettingsDrawer; diff --git a/frontend/src/pages/Mobile/components/SettingsItem/index.module.less b/frontend/src/pages/Mobile/components/SettingsItem/index.module.less deleted file mode 100644 index ef71982..0000000 --- a/frontend/src/pages/Mobile/components/SettingsItem/index.module.less +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -.settingsItem { - display: flex; - justify-content: space-between; - align-items: center; - padding: 16px; - background-color: #ffffff; - cursor: pointer; - min-height: 50px; - box-sizing: border-box; - - &:not(:last-child) { - border-bottom: 0.5px solid #f0f0f0; // 更细的分割线 - } - - .label { - font-size: 16px; - color: #0c0d0e; - font-weight: 500; - min-width: 64px; - } - - .valueContainer { - color: #737a87; - font-size: 14px; - display: flex; - align-items: center; - justify-content: flex-end; - gap: 6px; - text-align: right; - } -} diff --git a/frontend/src/pages/Mobile/components/SettingsItem/index.tsx b/frontend/src/pages/Mobile/components/SettingsItem/index.tsx deleted file mode 100644 index f6529d3..0000000 --- a/frontend/src/pages/Mobile/components/SettingsItem/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { IconRight } from '@arco-design/web-react/icon'; -import styles from './index.module.less'; - -interface SettingsItemProps { - label: string; - value?: string | React.ReactNode; - onClick?: () => void; - showArrow?: boolean; - valueClassName?: string; -} - -export function SettingsItem({ - label, - value, - onClick, - showArrow = true, - valueClassName, -}: SettingsItemProps) { - return ( -
    - {label} -
    - {value && {value}} - {showArrow && } -
    -
    - ); -} diff --git a/frontend/src/react-app-env.d.ts b/frontend/src/react-app-env.d.ts deleted file mode 100644 index 8a75ed8..0000000 --- a/frontend/src/react-app-env.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -/// - -declare module '*.less' { - const content: { [className: string]: string }; - export default content; -} diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts deleted file mode 100644 index 0fdd8f2..0000000 --- a/frontend/src/store/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { configureStore } from '@reduxjs/toolkit'; -import roomSlice, { RoomState } from './slices/room'; -import deviceSlice, { DeviceState } from './slices/device'; - -export interface RootState { - room: RoomState; - device: DeviceState; -} - -const store = configureStore({ - reducer: { - room: roomSlice, - device: deviceSlice, - }, - middleware: (getDefaultMiddleware) => - getDefaultMiddleware({ - serializableCheck: false, - }), -}); - -export default store; diff --git a/frontend/src/store/slices/device.ts b/frontend/src/store/slices/device.ts deleted file mode 100644 index baf0f20..0000000 --- a/frontend/src/store/slices/device.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { DeviceType } from '@/interface'; - -export const medias = [DeviceType.Microphone]; - -export const MediaName = { - [DeviceType.Microphone]: 'microphone', - [DeviceType.Camera]: 'camera', -}; - -export interface DeviceState { - audioInputs: MediaDeviceInfo[]; - videoInputs: MediaDeviceInfo[]; - selectedCamera?: string; - selectedMicrophone?: string; - devicePermissions: { - audio: boolean; - video: boolean; - }; -} -const initialState: DeviceState = { - audioInputs: [], - videoInputs: [], - devicePermissions: { - audio: true, - video: true, - }, -}; - -export const DeviceSlice = createSlice({ - name: 'deivce', - initialState, - reducers: { - updateMediaInputs: (state, { payload }) => { - if (payload.audioInputs) { - state.audioInputs = payload.audioInputs; - } - if (payload.videoInputs) { - state.videoInputs = payload.videoInputs; - } - }, - updateSelectedDevice: (state, { payload }) => { - if (payload.selectedCamera) { - state.selectedCamera = payload.selectedCamera; - } - if (payload.selectedMicrophone) { - state.selectedMicrophone = payload.selectedMicrophone; - } - }, - - setMicrophoneList: (state, action: PayloadAction) => { - state.audioInputs = action.payload; - }, - - setDevicePermissions: ( - state, - action: PayloadAction<{ - audio: boolean; - video: boolean; - }> - ) => { - state.devicePermissions = action.payload; - }, - }, -}); -export const { updateMediaInputs, updateSelectedDevice, setMicrophoneList, setDevicePermissions } = - DeviceSlice.actions; - -export default DeviceSlice.reducer; diff --git a/frontend/src/store/slices/room.ts b/frontend/src/store/slices/room.ts deleted file mode 100644 index 39c4a66..0000000 --- a/frontend/src/store/slices/room.ts +++ /dev/null @@ -1,394 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { createSlice } from '@reduxjs/toolkit'; -import { - AudioPropertiesInfo, - LocalAudioStats, - NetworkQuality, - RemoteAudioStats, -} from '@volcengine/rtc'; -import RtcClient from '@/lib/RtcClient'; - -export interface IUser { - username?: string; - userId?: string; - publishAudio?: boolean; - publishVideo?: boolean; - publishScreen?: boolean; - audioStats?: RemoteAudioStats; - audioPropertiesInfo?: AudioPropertiesInfo; -} - -export type LocalUser = Omit & { - loginToken?: string; - audioStats?: LocalAudioStats; -}; - -export interface Msg { - value: string; - time: string; - user: string; - paragraph?: boolean; - definite?: boolean; - isInterrupted?: boolean; -} - -export interface SceneConfig { - id: string; - icon?: string; - name?: string; - questions?: string[]; - botName: string; - isVision: boolean; - isScreenMode: boolean; - isInterruptMode: boolean; - isAvatarScene: boolean; - avatarBgUrl: string; -} - -export interface RTCConfig { - AppId: string; - RoomId: string; - UserId: string; - Token: string; -} - -export interface RoomState { - time: number; - roomId?: string; - localUser: LocalUser; - remoteUsers: IUser[]; - autoPlayFailUser: string[]; - /** - * @brief 是否已加房 - */ - isJoined: boolean; - /** - * @brief 选择的场景 - */ - scene: string; - /** - * @brief 场景下的配置 - */ - sceneConfigMap: Record; - /** - * @brief RTC 相关的配置 - */ - rtcConfigMap: Record; - - /** - * @brief AI 通话是否启用 - */ - isAIGCEnable: boolean; - /** - * @brief AI 是否正在说话 - */ - isAITalking: boolean; - /** - * @brief AI 思考中 - */ - isAIThinking: boolean; - /** - * @brief 用户是否正在说话 - */ - isUserTalking: boolean; - /** - * @brief 网络质量 - */ - networkQuality: NetworkQuality; - - /** - * @brief 对话记录 - */ - msgHistory: Msg[]; - - /** - * @brief 当前的对话 - */ - currentConversation: { - [user: string]: { - /** - * @brief 实时对话内容 - */ - msg: string; - /** - * @brief 当前实时对话内容是否能被定义为 "问题" - */ - definite: boolean; - }; - }; - - /** - * @brief 是否显示字幕 - */ - isShowSubtitle: boolean; - - /** - * @brief 是否全屏 - */ - isFullScreen: boolean; - - /** - * @brief 自定义人设名称 - */ - customSceneName: string; -} - -const initialState: RoomState = { - time: -1, - scene: '', - sceneConfigMap: {}, - rtcConfigMap: {}, - remoteUsers: [], - localUser: { - publishAudio: false, - publishVideo: false, - publishScreen: false, - }, - autoPlayFailUser: [], - isJoined: false, - isAIGCEnable: false, - isAIThinking: false, - isAITalking: false, - isUserTalking: false, - networkQuality: NetworkQuality.UNKNOWN, - - msgHistory: [], - currentConversation: {}, - isShowSubtitle: true, - isFullScreen: false, - customSceneName: '', -}; - -export const roomSlice = createSlice({ - name: 'room', - initialState, - reducers: { - localJoinRoom: ( - state, - { - payload, - }: { - payload: { - roomId: string; - user: LocalUser; - }; - } - ) => { - state.roomId = payload.roomId; - state.localUser = { - ...state.localUser, - ...payload.user, - }; - state.isJoined = true; - }, - localLeaveRoom: (state) => { - state.roomId = undefined; - state.time = -1; - state.localUser = { - publishAudio: false, - publishVideo: false, - publishScreen: false, - }; - state.remoteUsers = []; - state.isJoined = false; - }, - remoteUserJoin: (state, { payload }) => { - state.remoteUsers.push(payload); - }, - remoteUserLeave: (state, { payload }) => { - const findIndex = state.remoteUsers.findIndex((user) => user.userId === payload.userId); - state.remoteUsers.splice(findIndex, 1); - }, - - updateScene: (state, { payload }) => { - state.scene = payload; - }, - - updateSceneConfig: (state, { payload }) => { - state.sceneConfigMap = payload; - }, - - updateRTCConfig: (state, { payload }) => { - state.rtcConfigMap = payload; - RtcClient.basicInfo = { - app_id: payload[state.scene].AppId, - room_id: payload[state.scene].RoomId, - user_id: payload[state.scene].UserId, - token: payload[state.scene].Token, - }; - }, - - updateLocalUser: (state, { payload }: { payload: Partial }) => { - state.localUser = { - ...state.localUser, - ...(payload || {}), - }; - }, - - updateNetworkQuality: (state, { payload }) => { - state.networkQuality = payload.networkQuality; - }, - - updateRemoteUser: (state, { payload }: { payload: IUser | IUser[] }) => { - if (!Array.isArray(payload)) { - payload = [payload]; - } - - payload.forEach((user) => { - const findIndex = state.remoteUsers.findIndex((u) => u.userId === user.userId); - state.remoteUsers[findIndex] = { - ...state.remoteUsers[findIndex], - ...user, - }; - }); - }, - - updateRoomTime: (state, { payload }) => { - state.time = payload.time; - }, - - addAutoPlayFail: (state, { payload }) => { - const autoPlayFailUser = state.autoPlayFailUser; - const index = autoPlayFailUser.findIndex((item) => item === payload.userId); - if (index === -1) { - state.autoPlayFailUser.push(payload.userId); - } - }, - removeAutoPlayFail: (state, { payload }) => { - const autoPlayFailUser = state.autoPlayFailUser; - const _autoPlayFailUser = autoPlayFailUser.filter((item) => item !== payload.userId); - state.autoPlayFailUser = _autoPlayFailUser; - }, - clearAutoPlayFail: (state) => { - state.autoPlayFailUser = []; - }, - updateAIGCState: (state, { payload }) => { - state.isAIGCEnable = payload.isAIGCEnable; - }, - updateAITalkState: (state, { payload }) => { - state.isAIThinking = false; - state.isUserTalking = false; - state.isAITalking = payload.isAITalking; - }, - updateAIThinkState: (state, { payload }) => { - state.isAIThinking = payload.isAIThinking; - state.isUserTalking = false; - }, - clearHistoryMsg: (state) => { - state.msgHistory = []; - }, - setHistoryMsg: (state, { payload }) => { - const { paragraph, definite } = payload; - const lastMsg = state.msgHistory.at(-1)! || {}; - /** 是否需要再创建新句子 */ - const fromBot = - payload.user === state.sceneConfigMap[state.scene].botName || - payload.user.includes('voiceChat_'); - /** - * Bot 的语句: - * 1. 在 SubtitleMode=0 时(未启用数字人时默认值),以 definite 判断是否需要追加新内容 - * 2. 在 SubtitleMode=1 时(启用数字人时强制设定为 1),以 paragraph 判断是否需要追加新内容 - * User 的语句以 paragraph 判断是否需要追加新内容 - */ - const currentSubtitleMode = state.sceneConfigMap[state.scene].isAvatarScene ? 1 : 0; - const lastMsgCompleted = - !fromBot || currentSubtitleMode ? lastMsg.paragraph : lastMsg.definite; - - if (state.msgHistory.length) { - /** 如果上一句话是完整的则新增语句 */ - if (lastMsgCompleted) { - state.msgHistory.push({ - value: payload.text, - time: new Date().toString(), - user: payload.user, - definite, - paragraph, - }); - } else { - /** 话未说完, 更新文字内容 */ - if (fromBot && currentSubtitleMode) { - lastMsg.value += payload.text; - } else { - lastMsg.value = payload.text; - } - lastMsg.time = new Date().toString(); - lastMsg.paragraph = paragraph; - lastMsg.definite = definite; - lastMsg.user = payload.user; - } - } else { - /** 首句话首字不会被打断 */ - state.msgHistory.push({ - value: payload.text, - time: new Date().toString(), - user: payload.user, - paragraph, - }); - } - }, - setInterruptMsg: (state) => { - state.isAITalking = false; - if (!state.msgHistory.length) { - return; - } - /** 找到最后一个末尾的字幕, 将其状态置换为打断 */ - for (let id = state.msgHistory.length - 1; id >= 0; id--) { - const msg = state.msgHistory[id]; - if (msg.value) { - if (!msg.definite) { - state.msgHistory[id].isInterrupted = true; - } - break; - } - } - }, - clearCurrentMsg: (state) => { - state.currentConversation = {}; - state.msgHistory = []; - state.isAITalking = false; - state.isUserTalking = false; - }, - updateShowSubtitle: (state, { payload }) => { - state.isShowSubtitle = payload.isShowSubtitle; - }, - updateFullScreen: (state, { payload }) => { - state.isFullScreen = payload.isFullScreen; - }, - updatecustomSceneName: (state, { payload }) => { - state.customSceneName = payload.customSceneName; - }, - }, -}); - -export const { - localJoinRoom, - localLeaveRoom, - remoteUserJoin, - remoteUserLeave, - updateRemoteUser, - updateLocalUser, - updateRoomTime, - addAutoPlayFail, - removeAutoPlayFail, - clearAutoPlayFail, - updateAIGCState, - updateAITalkState, - updateAIThinkState, - setHistoryMsg, - clearHistoryMsg, - clearCurrentMsg, - setInterruptMsg, - updateNetworkQuality, - updateScene, - updateSceneConfig, - updateRTCConfig, - updateShowSubtitle, - updateFullScreen, - updatecustomSceneName, -} = roomSlice.actions; - -export default roomSlice.reducer; diff --git a/frontend/src/theme.less b/frontend/src/theme.less deleted file mode 100644 index 8b6d20f..0000000 --- a/frontend/src/theme.less +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - - @primary-color: #1664ff; diff --git a/frontend/src/utils/handler.ts b/frontend/src/utils/handler.ts deleted file mode 100644 index 03bd8ae..0000000 --- a/frontend/src/utils/handler.ts +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useDispatch } from 'react-redux'; -import logger from './logger'; -import { - setHistoryMsg, - setInterruptMsg, - updateAITalkState, - updateAIThinkState, -} from '@/store/slices/room'; -import RtcClient from '@/lib/RtcClient'; -import { string2tlv, tlv2String } from '@/utils/utils'; - -export type AnyRecord = Record; - -export enum MESSAGE_TYPE { - BRIEF = 'conv', - SUBTITLE = 'subv', - FUNCTION_CALL = 'tool', -} - -export enum AGENT_BRIEF { - UNKNOWN, - LISTENING, - THINKING, - SPEAKING, - INTERRUPTED, - FINISHED, -} - -/** - * @brief 指令类型 - */ -export enum COMMAND { - /** - * @brief 打断指令 - */ - INTERRUPT = 'interrupt', - /** - * @brief 发送外部文本驱动 TTS - */ - EXTERNAL_TEXT_TO_SPEECH = 'ExternalTextToSpeech', - /** - * @brief 发送外部文本驱动 LLM - */ - EXTERNAL_TEXT_TO_LLM = 'ExternalTextToLLM', -} -/** - * @brief 打断的类型 - */ -export enum INTERRUPT_PRIORITY { - /** - * @brief 占位 - */ - NONE, - /** - * @brief 高优先级。传入信息直接打断交互,进行处理。 - */ - HIGH, - /** - * @brief 中优先级。等待当前交互结束后,进行处理。 - */ - MEDIUM, - /** - * @brief 低优先级。如当前正在发生交互,直接丢弃 Message 传入的信息。 - */ - LOW, -} - -export const MessageTypeCode = { - [MESSAGE_TYPE.SUBTITLE]: 1, - [MESSAGE_TYPE.FUNCTION_CALL]: 2, - [MESSAGE_TYPE.BRIEF]: 3, -}; - -export const useMessageHandler = () => { - const dispatch = useDispatch(); - - const maps = { - /** - * @brief 接收状态变化信息 - * @note https://www.volcengine.com/docs/6348/1415216?s=g - */ - [MESSAGE_TYPE.BRIEF]: (parsed: AnyRecord) => { - const { Stage } = parsed || {}; - const { Code, Description } = Stage || {}; - logger.debug('[MESSAGE_TYPE.BRIEF]: ', Code, Description); - switch (Code) { - case AGENT_BRIEF.THINKING: - dispatch(updateAIThinkState({ isAIThinking: true })); - break; - case AGENT_BRIEF.SPEAKING: - dispatch(updateAITalkState({ isAITalking: true })); - break; - case AGENT_BRIEF.FINISHED: - dispatch(updateAITalkState({ isAITalking: false })); - break; - case AGENT_BRIEF.INTERRUPTED: - dispatch(setInterruptMsg()); - break; - default: - break; - } - }, - /** - * @brief 字幕 - * @note https://www.volcengine.com/docs/6348/1337284?s=g - */ - [MESSAGE_TYPE.SUBTITLE]: (parsed: AnyRecord) => { - const data = parsed.data?.[0] || {}; - /** debounce 记录用户输入文字 */ - if (data) { - const { text: msg, definite, userId: user, paragraph } = data; - const isAudioEnable = RtcClient.getAgentEnabled(); - if ((window as any)._debug_mode) { - logger.debug('handleRoomBinaryMessageReceived', data); - } - if (isAudioEnable) { - dispatch(setHistoryMsg({ text: msg, user, paragraph, definite })); - } - } - }, - /** - * @brief Function calling - * @note https://www.volcengine.com/docs/6348/1359441?s=g - */ - [MESSAGE_TYPE.FUNCTION_CALL]: (parsed: AnyRecord) => { - const name: string = parsed?.tool_calls?.[0]?.function?.name; - console.log('[Function Call] - Called by sendUserBinaryMessage'); - const map: Record = { - getcurrentweather: '今天下雪, 最低气温零下10度', - }; - - RtcClient.engine.sendUserBinaryMessage( - 'RobotMan_', - string2tlv( - JSON.stringify({ - ToolCallID: parsed?.tool_calls?.[0]?.id, - Content: map[name.toLocaleLowerCase().replaceAll('_', '')], - }), - 'func' - ) - ); - }, - }; - - return { - parser: (buffer: ArrayBuffer) => { - try { - const { type, value } = tlv2String(buffer); - maps[type as MESSAGE_TYPE]?.(JSON.parse(value)); - } catch (e) { - logger.debug('parse error', e); - } - }, - }; -}; diff --git a/frontend/src/utils/logger.ts b/frontend/src/utils/logger.ts deleted file mode 100644 index 84e008b..0000000 --- a/frontend/src/utils/logger.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -class Logger { - public debug(...args: any[]) { - console.debug(...args); - } - - public log(...args: any[]) { - console.log(...args); - } - - public error(...args: any[]) { - console.error(...args); - } - - public warn(...args: any[]) { - console.warn(...args); - } -} - -export default new Logger(); diff --git a/frontend/src/utils/utils.less b/frontend/src/utils/utils.less deleted file mode 100644 index 77b2211..0000000 --- a/frontend/src/utils/utils.less +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -@meetingBackgroundColor: #1e2128; - -.flex-box { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; -} - -.split-line(@h, @m) { - display: inline-block; - height: @h; - width: 0; - border-right: 1px solid #4e5969; - margin: 0 @m; -} - -.place-holder { - font-family: "PingFang SC"; - font-style: normal; - font-weight: normal; - font-size: 14px; - line-height: 22px; - color: #86909c; - position: relative; - left: 5px; -} diff --git a/frontend/src/utils/utils.ts b/frontend/src/utils/utils.ts deleted file mode 100644 index c2cc1aa..0000000 --- a/frontend/src/utils/utils.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved. - * SPDX-license-identifier: BSD-3-Clause - */ - -import { useEffect, useState } from 'react'; - -/** - * @brief 将字符串包装成 TLV - */ -export const string2tlv = (str: string, type: string) => { - const typeBuffer = new Uint8Array(4); - - for (let i = 0; i < type.length; i++) { - typeBuffer[i] = type.charCodeAt(i); - } - - const lengthBuffer = new Uint32Array(1); - const valueBuffer = new TextEncoder().encode(str); - - lengthBuffer[0] = valueBuffer.length; - - const tlvBuffer = new Uint8Array(typeBuffer.length + 4 + valueBuffer.length); - - tlvBuffer.set(typeBuffer, 0); - - tlvBuffer[4] = (lengthBuffer[0] >> 24) & 0xff; - tlvBuffer[5] = (lengthBuffer[0] >> 16) & 0xff; - tlvBuffer[6] = (lengthBuffer[0] >> 8) & 0xff; - tlvBuffer[7] = lengthBuffer[0] & 0xff; - - tlvBuffer.set(valueBuffer, 8); - return tlvBuffer.buffer; -}; - -/** - * @brief TLV 数据格式转换成字符串 - * @note TLV 数据格式 - * | magic number | length(big-endian) | value | - * @param {ArrayBufferLike} tlvBuffer - * @returns - */ -export const tlv2String = (tlvBuffer: ArrayBufferLike) => { - const typeBuffer = new Uint8Array(tlvBuffer, 0, 4); - const lengthBuffer = new Uint8Array(tlvBuffer, 4, 4); - const valueBuffer = new Uint8Array(tlvBuffer, 8); - - let type = ''; - for (let i = 0; i < typeBuffer.length; i++) { - type += String.fromCharCode(typeBuffer[i]); - } - - const length = - (lengthBuffer[0] << 24) | (lengthBuffer[1] << 16) | (lengthBuffer[2] << 8) | lengthBuffer[3]; - - const value = new TextDecoder().decode(valueBuffer.subarray(0, length)); - - return { type, value }; -}; - -export const isMobile = () => - /Mobi|Android|iPhone|iPad|Windows Phone/i.test(window.navigator.userAgent) || - window?.innerWidth < 767; - -export function useIsMobile() { - const getIsMobile = () => - /Mobi|Android|iPhone|iPad|Windows Phone/i.test(window.navigator.userAgent) || - window.innerWidth < 767; - - const [isMobile, setIsMobile] = useState(getIsMobile()); - - useEffect(() => { - const handleResize = () => { - const value = getIsMobile(); - setIsMobile(value); - }; - window.addEventListener('resize', handleResize); - return () => window.removeEventListener('resize', handleResize); - }, []); - - return isMobile; -} diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index e4f43f0..0000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "ES6", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src"] -} diff --git a/simple-frontend/aigc-voice-client.js b/simple-frontend/aigc-voice-client.js new file mode 100644 index 0000000..44ffcf8 --- /dev/null +++ b/simple-frontend/aigc-voice-client.js @@ -0,0 +1,639 @@ +/** + * 火山引擎 RTC AIGC 语音对话 - 原生 JS 接入实现 + * + * 依赖:@volcengine/rtc (通过 + + + + + + diff --git a/simple-frontend/frontend-integration.md b/simple-frontend/frontend-integration.md new file mode 100644 index 0000000..dcdb6a0 --- /dev/null +++ b/simple-frontend/frontend-integration.md @@ -0,0 +1,259 @@ +# 火山引擎 RTC AIGC 前端接入逻辑梳理 + +## 一、整体架构概览 + +``` +┌──────────────────────────────────────────────────────────────┐ +│ 前端 (React) │ +│ │ +│ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ +│ │ MainPage │──>│ useJoin │──>│ RtcClient │ │ +│ │(入口页面) │ │(加房hook)│ │(SDK 封装) │ │ +│ └──────────┘ └──────────┘ └─────┬─────┘ │ +│ │ │ │ +│ ┌────▼─────┐ ┌─────────▼──────────┐ │ +│ │ Redux │ │ @volcengine/rtc │ │ +│ │ Store │ │ (火山引擎 RTC SDK) │ │ +│ └──────────┘ └─────────┬──────────┘ │ +│ │ │ +└──────────────────────────────────────┼───────────────────────┘ + │ + ┌──────────────────▼──────────────────┐ + │ Backend (FastAPI) │ + │ /getScenes /proxy /api/chat_cb │ + └─────────────────────────────────────┘ +``` + +## 二、核心模块说明 + +### 2.1 配置层 (`config/index.ts`) + +```typescript +// 后端 API 代理地址 +export const AIGC_PROXY_HOST = 'http://localhost:3001'; +``` + +### 2.2 API 层 (`app/api.ts` + `app/base.ts`) + +定义了 3 个 API: + +| API | 路径 | 说明 | +|-----|------|------| +| `getScenes` | `POST /getScenes` | 获取场景配置(含 RTC 凭证 AppId/RoomId/UserId/Token) | +| `StartVoiceChat` | `POST /proxy?Action=StartVoiceChat` | 启动 AI 语音对话(传 `{ SceneID }` ) | +| `StopVoiceChat` | `POST /proxy?Action=StopVoiceChat` | 停止 AI 语音对话(传 `{ SceneID }` ) | + +**请求封装逻辑** (`app/base.ts`): +- `generateAPIs()` 根据 API 配置自动生成请求函数 +- POST 请求格式:`fetch(AIGC_PROXY_HOST + apiPath + ?Action=xxx, { method: 'post', body: JSON })` +- 响应统一结构:`{ ResponseMetadata: { Action, RequestId, Error? }, Result }` +- `resultHandler()` 检查 Error 字段,成功返回 `Result`,失败抛异常 + +### 2.3 RTC 客户端封装 (`lib/RtcClient.ts`) + +单例模式,核心属性/方法: + +``` +RTCClient (单例) +├── basicInfo: { app_id, room_id, user_id, token } // 由 getScenes 返回后注入 +├── engine: IRTCEngine // RTC 引擎实例 +├── audioBotEnabled: boolean // AI Bot 是否启用 +│ +├── createEngine() // 创建引擎 + 注册 AI 降噪扩展 +├── addEventListeners() // 绑定 15 个 RTC 事件回调 +├── joinRoom() // 加入房间(自动发布/订阅音频, RoomProfile=chat) +├── leaveRoom() // 离房并销毁引擎 +├── startAudioCapture() // 开始麦克风采集 +├── stopAudioCapture() // 停止麦克风采集 +├── startAgent(sceneId) // 调用 StartVoiceChat API → 启动 AI Bot +├── stopAgent(sceneId) // 调用 StopVoiceChat API → 停止 AI Bot +├── commandAgent() // 通过 Binary Message 向 Bot 发送控制指令(打断等) +└── getDevices() // 枚举音频/视频设备 +``` + +### 2.4 状态管理 (`store/slices/`) + +#### room slice — 核心状态 +```typescript +{ + scene: string; // 当前场景 ID + sceneConfigMap: Record; // 场景配置(botName, isVision 等) + rtcConfigMap: Record; // RTC 凭证(AppId, RoomId, UserId, Token) + isJoined: boolean; // 是否已加房 + isAIGCEnable: boolean; // AI Bot 是否启用 + isAITalking: boolean; // AI 正在说话 + isAIThinking: boolean; // AI 正在思考 + isUserTalking: boolean; // 用户正在说话 + msgHistory: Msg[]; // 对话历史 + localUser: LocalUser; // 本地用户(含 publishAudio 状态) + remoteUsers: IUser[]; // 远端用户列表 + networkQuality: NetworkQuality; // 网络质量 +} +``` + +#### device slice — 设备状态 +```typescript +{ + audioInputs: MediaDeviceInfo[]; // 麦克风列表 + videoInputs: MediaDeviceInfo[]; // 摄像头列表 + selectedMicrophone?: string; // 选中的麦克风 ID + selectedCamera?: string; // 选中的摄像头 ID + devicePermissions: { audio, video }; // 设备权限 +} +``` + +### 2.5 消息处理 (`utils/handler.ts`) + +AI Bot 通过 RTC 的 **Binary Message** 机制推送消息,采用 **TLV 编码格式**: + +``` +| type (4字节) | length (4字节, big-endian) | value (JSON字符串) | +``` + +消息类型: + +| Type 标识 | 含义 | 数据结构 | +|-----------|------|----------| +| `conv` | 状态简报 | `{ Stage: { Code, Description } }` — Code: 1=LISTENING, 2=THINKING, 3=SPEAKING, 4=INTERRUPTED, 5=FINISHED | +| `subv` | 字幕 | `{ data: [{ text, definite, userId, paragraph }] }` | +| `tool` | Function Call | `{ tool_calls: [{ id, function: { name } }] }` | +| `ctrl` | 控制指令(发送) | `{ Command, InterruptMode, Message }` | +| `func` | Function Call 响应(发送) | `{ ToolCallID, Content }` | + +### 2.6 事件监听 (`lib/listenerHooks.ts`) + +监听 15 个 RTC 事件: + +| 事件 | 处理逻辑 | +|------|----------| +| `onError` | 处理 DUPLICATE_LOGIN 等错误 | +| `onUserJoined` | AI Bot 加入房间,更新远端用户列表 | +| `onUserLeave` | 远端用户离开 | +| `onUserPublishStream` | 远端用户发布流(AI Bot 开始说话) | +| `onUserUnpublishStream` | 远端用户取消发布 | +| `onLocalAudioPropertiesReport` | 本地音量检测(用于 UI 动画) | +| `onRemoteAudioPropertiesReport` | 远端音量检测 | +| `onRoomBinaryMessageReceived` | **核心!** 接收 AI Bot 的 TLV 消息 → 交给 MessageHandler 解析 | +| `onNetworkQuality` | 网络质量监测 | +| `onAudioDeviceStateChanged` | 设备热插拔 | +| `onAutoplayFailed` / `onPlayerEvent` | 自动播放失败处理 | +| `onTrackEnded` | 屏幕共享关闭 | +| `onLocalStreamStats` / `onRemoteStreamStats` | 流统计信息 | + +## 三、完整调用流程 + +### 3.1 页面初始化 + +``` +1. MainPage 挂载 +2. 调用 getScenes API → 获取场景列表 +3. 存入 Redux:sceneConfigMap、rtcConfigMap +4. 同时将 rtcConfig 注入 RtcClient.basicInfo(含 AppId/RoomId/UserId/Token) +5. 展示 Antechamber(通话前)界面 +``` + +### 3.2 用户点击"通话"按钮 → `useJoin.disPatchJoin()` + +``` + 1. 检测浏览器兼容性 → VERTC.isSupported() + 2. 创建 RTC 引擎 → RtcClient.createEngine() + └─ 内部:VERTC.createEngine(appId) + 注册 AI 降噪扩展 + 3. 绑定事件监听 → RtcClient.addEventListeners(listeners) + 4. 加入房间 → RtcClient.joinRoom() + └─ engine.joinRoom(token, roomId, userInfo, { + isAutoPublish: true, + isAutoSubscribeAudio: true, + roomProfileType: 'chat' + }) + 5. 枚举音频设备 → RtcClient.getDevices({ audio: true }) + 6. 更新 Redux 状态 → localJoinRoom, updateSelectedDevice, updateMediaInputs + 7. 开启麦克风 → switchMic() + └─ publishStream(AUDIO) + startAudioCapture() + 8. 启动 AI Bot → handleAIGCModeStart() + └─ RtcClient.startAgent(sceneId) + └─ 内部调用 POST /proxy?Action=StartVoiceChat { SceneID } + 9. 更新状态 → isAIGCEnable = true, isJoined = true +10. UI 切换:Antechamber → Room 界面 +``` + +### 3.3 AI 对话过程 + +``` +用户说话 → 麦克风采集 → RTC SDK 自动推流到远端 + ↓ + 火山引擎 RTC 服务端 + ↓ + ASR(语音识别)→ LLM(大模型)→ TTS(语音合成) + ↓ + Bot 将音频流推回房间 + 发送 Binary Message(字幕/状态) + ↓ +前端接收: + - 音频流 → RTC SDK 自动播放(isAutoSubscribeAudio: true) + - Binary Message → onRoomBinaryMessageReceived → TLV 解码 → MessageHandler + ├─ conv(状态): THINKING → 更新 isAIThinking + │ SPEAKING → 更新 isAITalking + │ FINISHED → isAITalking = false + │ INTERRUPTED → 标记消息为已打断 + └─ subv(字幕): text/definite/paragraph → 更新 msgHistory +``` + +### 3.4 打断 AI + +``` +方式一:语音打断(isInterruptMode = true 时自动生效,服务端检测) +方式二:点击"打断"按钮 → RtcClient.commandAgent({ + agentName: botName, + command: 'interrupt', +}) → engine.sendUserBinaryMessage(botName, TLV 编码({ + Command: 'interrupt', + InterruptMode: 0, + Message: '' +})) +``` + +### 3.5 用户挂断 → `useLeave()` + +``` +1. 停止音频/视频/屏幕采集 +2. 停止 AI Bot → RtcClient.stopAgent(sceneId) + └─ POST /proxy?Action=StopVoiceChat { SceneID } +3. 离开房间 → RtcClient.leaveRoom() + └─ engine.leaveRoom() + VERTC.destroyEngine(engine) +4. 清除 Redux 状态 → clearHistoryMsg, clearCurrentMsg, localLeaveRoom, isAIGCEnable=false +5. UI 切换:Room → Antechamber +``` + +## 四、TLV 协议编解码 + +### 编码 `string2tlv(str, type)` + +``` +输入: str = '{"Command":"interrupt"}', type = 'ctrl' + +输出 ArrayBuffer: + [0-3] type 字符编码: 'c','t','r','l' → [99, 116, 114, 108] + [4-7] length (big-endian): JSON 字节长度 + [8-...) value: UTF-8 编码的 JSON 字符串 +``` + +### 解码 `tlv2String(buffer)` + +``` +输入: ArrayBuffer +输出: { type: 'subv', value: '{"data":[...]}' } +``` + +## 五、关键依赖 + +| 包名 | 用途 | +|------|------| +| `@volcengine/rtc` | 火山引擎 RTC Web SDK | +| `@volcengine/rtc/extension-ainr` | AI 降噪扩展(可选,不影响核心功能) | + +## 六、接入要点总结 + +1. **后端需提供 3 个接口**:`getScenes`(返回 RTC 凭证和场景配置)、`StartVoiceChat`、`StopVoiceChat` +2. **RTC 加房参数**:`isAutoPublish: true, isAutoSubscribeAudio: true, roomProfileType: chat` +3. **AI 消息通道**:通过 RTC Binary Message (`onRoomBinaryMessageReceived`) 收发,TLV 编码 +4. **AI Bot 是一个"远端用户"**:它加入同一房间,发布音频流,通过 Binary Message 推送字幕和状态 +5. **打断机制**:通过 `sendUserBinaryMessage` 向 Bot 发送 `ctrl` 类型的 TLV 指令 diff --git a/simple-frontend/key.pem b/simple-frontend/key.pem new file mode 100644 index 0000000..e1ba6cc --- /dev/null +++ b/simple-frontend/key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQC4GC3NXUvC3E2e +7ZeO3y0aQZGhtXhjXzR1mjtpxqXsuwln+71RY2BI2S2+JesPX64R5lM9YRsYGoMg +cV0deC/RACxOTVEPoNNORhHPmc3gDKGZ3/nQd3tTWABU4G7A9iMXz5PnN5+vLpU8 +DJO9h77sDjDeAtLeH/ikvj8N96TwQr+qR3fnBG8gJxhVVhYq9URLXYRBPbx88WzV +5Em3LsgmlRCFbP8EYGl20eRU1I0M9QoptoosTMXwudh/RMEXg5CCxqWOgdogh2rb +GNbESuGRXo5+LEQyB6BxbacBc62FMtgCjiON564mzf719oQQZSHJ6KrlIQ7+mQvL +fsKcV8MtAgMBAAECgf9twlcUFmoCXl6OuZmBL7Rd0UksOy9qD/OkOVvgMTHS4Bpk +/y7VkBtjU6CyMsOzAS9w7ZMVY4ELeEquXDPoLSXctmcdhIqP/0feskoR4izoVXJt +hFTppsuZJVrvIeCMYFI5LyQ/q7HYWvF5bsoBhYCAU8h8HRxJS6DoH8HaSn0uV/Tk +h7KWxNpgatvgLstF6Q/Y8TLeDonDlZz8WuWs//MZLWGXT0rFtk93/SSBb5AACIqS +P37gVVitZJNryT2uRwhSMZbUkJif4PxlNtKBNHIk+05MoE33m5iPiTyOoQidMk8r +w8TUQMgyr4ODRcgVdjNdv9qjpgHXIU4NrrqJdgkCgYEA4wd6IsEKjWfEQiLRMi/Q +ya5oYrHjX6faiZVng93i12kewQ89nEbOHDJqKP6h9iaehm8EW1x/z6QNd8l77QBC +tQ/8JHIeilK0gyTpHaGoIyfPEDGHJHmdPXvgn/CBDtgvBVTki5n5TBcEYxyDWy6j +PncsHYYpK+Od3MFLp8eUkRUCgYEAz5YfMWGsL15l2HGK8d4W3oTHX7C3PMwBHe+d +NOObWW1b2rDKO4Ix/lTMhj3rPf2VnNXo5sDkyP8LmtAP/Lh7xRvveuEuCOtXMlUj +foJQ1u+D70m5pM4YZGc1aV+PJA1XUebV60/SUzJZMyIzWbaOIcSgHSI9BlJFs0hg +gkdb/7kCgYEA2M2WJERHCHy0nhfTwOKKt17XjpCkOv/3oXXM0c/+RYm8dc9RHcE8 +KQ839AgesQt2TZkNBxZRdAANYHxH3S9nhLNMLZ3RbnTGr4p7F/H9t/zXL3aswPdm +YoW/H92z0XI/jQ7h5jLXMIO2i9N52YSzHf7+YP9yp9gJM/xffE0KonUCgYBXOCxD +A1blUDRajNpkZXwWYpOikQ1sbgrKGTNkVX2gRWKisEVIW5vF0LtebAW7NiD2lKoW +ylVWXlLx6RnOhXT7jJFCf/pnpPouG7eeIAL3TAuTLtbhd/anuPWoII50B2b48pRP +Gmq0qiLwaR5KQ3nUlljv5MLfNRI0EeT62CC/gQKBgFsUWMol+dTiejSlwiPj2Lca +BlXtkfhyJgOFjUAOW+IBN2j4XnsIOK7SPv58D4vH7mcQo29IDXX8tCQ/qvxUx3rv +lpnSjyQNY1YblfuDkdcew9LZI+wGnOR3cmpdeOxMEhz00B2WyfgiZdNUKfz+r8lT +x8HDHWMMJjIQYvpH3KhJ +-----END PRIVATE KEY-----