From 498849dc1e57b657bde3967b48beea348fbdd187 Mon Sep 17 00:00:00 2001 From: steve <1050403040@qq.com> Date: Fri, 22 Aug 2025 17:30:53 +0800 Subject: [PATCH] Initial public release --- .eslintrc.js | 25 + .gitignore | 64 + CHANGELOG.md | 70 + CLAUDE.md | 218 + LICENSE | 42 + LOCAL_TOKEN_CHANGES.md | 143 + README.md | 477 +++ TOKEN_MANAGEMENT_UPDATE.md | 147 + index.html | 41 + package-lock.json | 3586 +++++++++++++++++ package.json | 44 + public/1733492491706148.png | Bin 0 -> 15441 bytes public/1733492491706152.png | Bin 0 -> 36515 bytes public/1736425783912140.png | Bin 0 -> 26283 bytes public/173746572831736.png | Bin 0 -> 38673 bytes public/174023274867420.png | Bin 0 -> 16030 bytes public/174061875626614.png | Bin 0 -> 17842 bytes public/IMG_8007.JPG | Bin 0 -> 113993 bytes ...rzmHiJcbab2c25af264d0758b527bc1b61cc3b.png | Bin 0 -> 2660 bytes public/icons/1733492491706148.png | Bin 0 -> 15441 bytes public/icons/1733492491706152.png | Bin 0 -> 36515 bytes public/icons/1736425783912140.png | Bin 0 -> 26283 bytes public/icons/173746572831736.png | Bin 0 -> 38673 bytes public/icons/174023274867420.png | Bin 0 -> 16030 bytes public/icons/174061875626614.png | Bin 0 -> 17842 bytes ...rzmHiJcbab2c25af264d0758b527bc1b61cc3b.png | Bin 0 -> 2660 bytes public/icons/ta.png | Bin 0 -> 11787 bytes public/icons/xiaoyugan.png | Bin 0 -> 6245 bytes public/ta.png | Bin 0 -> 11787 bytes public/xiaoyugan.png | Bin 0 -> 6245 bytes src/App.vue | 78 + src/api/index.js | 134 + src/assets/styles/global.scss | 314 ++ src/assets/styles/variables.scss | 102 + src/components/DailyTaskCard.vue | 582 +++ src/components/DailyTaskStatus.vue | 751 ++++ src/components/GameStatus.vue | 673 ++++ src/components/MessageTester.vue | 319 ++ src/components/TeamStatus.vue | 454 +++ src/components/TokenManager.vue | 507 +++ src/components/TowerStatus.vue | 404 ++ src/components/WebSocketTester.vue | 496 +++ src/main.js | 17 + src/router/index.js | 137 + src/stores/auth.js | 158 + src/stores/gameRoles.js | 204 + src/stores/localTokenManager.js | 454 +++ src/stores/tokenStore.js | 792 ++++ src/utils/bonProtocol.js | 779 ++++ src/utils/gameCommands.js | 692 ++++ src/utils/readable-xyzw-ws.js | 547 +++ src/utils/wsAgent.js | 438 ++ src/utils/xyzwWebSocket.js | 537 +++ src/views/DailyTasks.vue | 759 ++++ src/views/Dashboard.vue | 840 ++++ src/views/GameFeatures.vue | 570 +++ src/views/GameRoles.vue | 575 +++ src/views/Home.vue | 605 +++ src/views/Login.vue | 554 +++ src/views/NotFound.vue | 116 + src/views/Profile.vue | 558 +++ src/views/Register.vue | 333 ++ src/views/TokenImport.vue | 1044 +++++ vite.config.js | 36 + 64 files changed, 20416 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CLAUDE.md create mode 100644 LICENSE create mode 100644 LOCAL_TOKEN_CHANGES.md create mode 100644 README.md create mode 100644 TOKEN_MANAGEMENT_UPDATE.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/1733492491706148.png create mode 100644 public/1733492491706152.png create mode 100644 public/1736425783912140.png create mode 100644 public/173746572831736.png create mode 100644 public/174023274867420.png create mode 100644 public/174061875626614.png create mode 100644 public/IMG_8007.JPG create mode 100644 public/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png create mode 100644 public/icons/1733492491706148.png create mode 100644 public/icons/1733492491706152.png create mode 100644 public/icons/1736425783912140.png create mode 100644 public/icons/173746572831736.png create mode 100644 public/icons/174023274867420.png create mode 100644 public/icons/174061875626614.png create mode 100644 public/icons/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png create mode 100644 public/icons/ta.png create mode 100644 public/icons/xiaoyugan.png create mode 100644 public/ta.png create mode 100644 public/xiaoyugan.png create mode 100644 src/App.vue create mode 100644 src/api/index.js create mode 100644 src/assets/styles/global.scss create mode 100644 src/assets/styles/variables.scss create mode 100644 src/components/DailyTaskCard.vue create mode 100644 src/components/DailyTaskStatus.vue create mode 100644 src/components/GameStatus.vue create mode 100644 src/components/MessageTester.vue create mode 100644 src/components/TeamStatus.vue create mode 100644 src/components/TokenManager.vue create mode 100644 src/components/TowerStatus.vue create mode 100644 src/components/WebSocketTester.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/stores/auth.js create mode 100644 src/stores/gameRoles.js create mode 100644 src/stores/localTokenManager.js create mode 100644 src/stores/tokenStore.js create mode 100644 src/utils/bonProtocol.js create mode 100644 src/utils/gameCommands.js create mode 100644 src/utils/readable-xyzw-ws.js create mode 100644 src/utils/wsAgent.js create mode 100644 src/utils/xyzwWebSocket.js create mode 100644 src/views/DailyTasks.vue create mode 100644 src/views/Dashboard.vue create mode 100644 src/views/GameFeatures.vue create mode 100644 src/views/GameRoles.vue create mode 100644 src/views/Home.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/NotFound.vue create mode 100644 src/views/Profile.vue create mode 100644 src/views/Register.vue create mode 100644 src/views/TokenImport.vue create mode 100644 vite.config.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..671e312 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,25 @@ +module.exports = { + root: true, + env: { + node: true, + browser: true, + es2022: true + }, + extends: [ + 'eslint:recommended', + 'plugin:vue/vue3-recommended' + ], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module' + }, + rules: { + 'no-console': 'warn', + 'no-debugger': 'warn', + 'vue/multi-word-component-names': 'off', + 'no-unused-vars': 'warn' + }, + globals: { + globalThis: 'readonly' + } +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb26859 --- /dev/null +++ b/.gitignore @@ -0,0 +1,64 @@ +# Dependencies +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Production builds +dist/ +build/ + +# Environment variables +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Coverage directory used by tools like istanbul +coverage/ + +# nyc test coverage +.nyc_output + +# Dependency directories +jspm_packages/ + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# Local cache +.cache/ + +# Temporary folders +tmp/ +temp/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bc54775 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,70 @@ +# 更新日志 + +## [2.0.0] - 2024-01-20 + +### 🎉 重大更新 - Token管理系统重构 + +#### ✨ 新增功能 +- **Base64 Token导入**: 支持多种格式的Base64编码Token解析 +- **可视化Token管理**: 名称-Token列表形式管理多个游戏角色 +- **WebSocket连接管理**: 自动建立和监控WebSocket连接状态 +- **批量操作功能**: 导入/导出、清理过期Token等批量功能 +- **响应式Token界面**: 完美适配桌面和移动设备的Token管理界面 + +#### 🗑️ 移除功能 +- **登录注册系统**: 完全移除传统的用户认证流程 +- **用户管理**: 不再需要用户账户系统 +- **API依赖**: 移除所有后端接口依赖 + +#### 🔄 重大变更 +- **入口页面**: 从登录页面改为Token导入页面 (`/tokens`) +- **路由结构**: 重构路由,旧路由自动重定向到Token管理 +- **数据结构**: 全新的Token数据结构,支持自定义名称和完整信息 +- **访问控制**: 基于Token存在性而非用户认证状态 + +#### 🛠️ 技术改进 +- **本地存储**: 所有数据完全本地化存储 +- **智能解析**: 自动识别和解析各种Base64格式 +- **连接监控**: 实时WebSocket连接状态显示 +- **容错处理**: 完善的错误处理和用户提示 + +#### 📱 用户体验 +- **简化流程**: 无需注册登录,直接导入Token使用 +- **直观管理**: 卡片式Token列表,状态一目了然 +- **快速操作**: 一键选择、连接、管理Token +- **数据安全**: 本地存储,Token信息脱敏显示 + +--- + +## [1.x.x] - 历史版本 + +### 特性 +- 基于用户认证的传统系统 +- API接口依赖的数据管理 +- 游戏角色CRUD操作 +- 日常任务管理功能 + +--- + +## 升级指南 + +### 从1.x版本升级到2.0 +1. **数据迁移**: + - 导出现有游戏角色数据 + - 获取每个角色对应的Token + - 将Token转换为Base64格式后导入新系统 + +2. **使用变更**: + - 不再需要注册登录 + - 直接访问 `/tokens` 页面导入Token + - 通过Token名称管理多个游戏角色 + +3. **功能对照**: + - 游戏角色管理 → Token管理 + - 用户认证 → Token导入 + - 角色选择 → Token选择 + +### 兼容性说明 +- 旧版本路由会自动重定向到新系统 +- 本地存储数据需要手动迁移 +- WebSocket连接方式保持兼容 \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3619628 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,218 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a Vue 3 Token Manager application for XYZW game automation. The application manages game tokens via Base64 decoding, establishes WebSocket connections, and provides a visual interface for token management and game automation. + +## Development Commands + +### Core Commands +```bash +# Development server (port 3000) +npm run dev + +# Production build +npm run build + +# Preview production build +npm run preview + +# Lint Vue, JS, TS files with auto-fix +npm run lint + +# Format code (Prettier) +npm run format +``` + +### Installation +```bash +npm install +``` + +## Architecture Overview + +### Core System Design +The application is built around a **token-centric architecture** that replaces traditional user authentication: + +1. **Token Management System**: Base64-encoded tokens are imported, decoded, and stored locally +2. **WebSocket Connection Layer**: Automatic WebSocket connections using BON protocol for game communication +3. **Local-First Storage**: All data stored in browser localStorage, no backend dependencies +4. **Protocol Layer**: Custom BON (Binary Object Notation) protocol for game message encoding/decoding + +### Key Architectural Components + +#### 1. Token Store (`src/stores/tokenStore.js`) +Central state management for token operations: +- **Token Lifecycle**: Import → Parse → Store → Select → Connect +- **Base64 Parsing**: Supports multiple formats (JSON, plain text, prefixed) +- **WebSocket Management**: Automatic connection establishment and status tracking +- **Data Persistence**: localStorage with cross-session state recovery + +#### 2. BON Protocol Implementation (`src/utils/bonProtocol.js`) +Custom binary protocol for game communication: +- **Message Encoding/Decoding**: Binary serialization with type safety +- **Game Message Templates**: Predefined message structures for common operations +- **Encryption Layer**: Multi-channel encryption with XOR-based security +- **WebSocket Message Handling**: Structured message parsing and creation + +#### 3. WebSocket Client (`src/utils/xyzwWebSocket.js`) +Enhanced WebSocket client based on reference implementation: +- **Command Registry**: Pre-registered game commands with default parameters +- **Queue Management**: Automatic message queuing and batch processing +- **Connection Management**: Auto-reconnection, heartbeat, and status monitoring +- **Promise Support**: Both fire-and-forget and request-response patterns + +#### 4. Router Architecture (`src/router/index.js`) +Token-aware navigation system: +- **Access Control**: Route guards based on token availability +- **Smart Redirects**: Automatic routing based on token state +- **Legacy Compatibility**: Redirects from old authentication routes + +### Data Flow Architecture + +``` +Token Import → Base64 Decode → Local Storage → Token Selection → WebSocket Connection → Game Communication + ↑ ↓ ↓ ↓ ↓ ↓ + User Input JSON/String Token Store Router Guards BON Protocol Game Messages +``` + +### State Management Pattern + +**Pinia Store Structure**: +- `tokenStore`: Primary token management and WebSocket connections +- `auth`: Simplified authentication state (legacy compatibility) +- `gameRoles`: Role-specific game data management +- `localTokenManager`: Low-level token persistence utilities + +## Key Framework Features + +### Token Data Structure +```javascript +{ + id: "token_xxx", // Unique identifier + name: "主号战士", // User-defined name + token: "base64_token", // Actual token string + wsUrl: "wss://...", // WebSocket endpoint + server: "风云服", // Game server + level: 85, // Character level + profession: "战士", // Character class + createdAt: "2024-...", // Creation timestamp + lastUsed: "2024-...", // Last usage timestamp + isActive: true // Activation status +} +``` + +### WebSocket Connection Flow +1. **Token Selection**: User selects token from management interface +2. **Base64 Parsing**: Extract actual game token from Base64 string +3. **URL Construction**: Build WebSocket URL with token parameter +4. **Client Creation**: Create `XyzwWebSocketClient` instance with game utilities +5. **Connection Establishment**: Automatic connection with heartbeat and queue setup +6. **Message Handling**: Bi-directional communication using command registry + +### BON Protocol Message Format +```javascript +{ + cmd: "command_name", // Command identifier + body: encodedData, // BON-encoded message body + ack: 0, // Acknowledgment number + seq: 12345, // Sequence number + time: 1234567890 // Timestamp +} +``` + +## Project Structure + +``` +src/ +├── components/ +│ ├── TokenManager.vue # Primary token management interface +│ ├── DailyTaskCard.vue # Game task visualization +│ ├── MessageTester.vue # Protocol debugging tool +│ └── WebSocketTester.vue # Connection testing utility +├── stores/ +│ ├── tokenStore.js # Core token management state +│ ├── auth.js # Legacy authentication compatibility +│ ├── gameRoles.js # Role-specific game data +│ └── localTokenManager.js # Token persistence utilities +├── utils/ +│ ├── bonProtocol.js # BON protocol implementation +│ ├── gameCommands.js # Game-specific command helpers +│ └── wsAgent.js # WebSocket connection management +├── views/ +│ ├── TokenImport.vue # Token import/management page +│ ├── Dashboard.vue # Main game control interface +│ ├── DailyTasks.vue # Task management interface +│ └── Profile.vue # User preferences and settings +└── router/index.js # Token-aware routing configuration +``` + +## Development Guidelines + +### Working with Tokens +- Always use the `tokenStore` for token operations +- Test Base64 parsing with various input formats +- Verify WebSocket connections after token operations +- Handle token validation errors gracefully + +### WebSocket Development +- Use the new `XyzwWebSocketClient` class for WebSocket connections +- Send messages with `client.send(cmd, params)` or `client.sendWithPromise(cmd, params)` +- Monitor connection status via `tokenStore.getWebSocketStatus(tokenId)` +- WebSocket client includes automatic reconnection, queued sending, and heartbeat management +- Built-in command registry supports game-specific message formats + +### State Management +- Access token data through computed properties (`selectedToken`, `hasTokens`) +- Use reactive WebSocket status via `getWebSocketStatus(tokenId)` +- Persist critical state changes to localStorage automatically +- Handle cross-session state recovery on application startup + +### Protocol Implementation +- Follow BON encoding/decoding patterns for message handling +- Use predefined `GameMessages` templates for common operations +- Implement proper type checking for message validation +- Handle protocol errors with fallback to JSON parsing + +## Configuration Notes + +### Vite Configuration +- Path aliases configured for clean imports (`@/`, `@components/`, etc.) +- Development server runs on port 3000 +- Proxy configured for `/api` routes to `http://xyzw.my` +- SCSS preprocessing with global variables + +### Browser Compatibility +- Requires modern browser with WebSocket support +- localStorage required for token persistence +- Base64 decoding and TextEncoder/TextDecoder APIs used + +### Security Considerations +- All tokens stored locally in browser storage +- WebSocket connections use WSS encryption +- BON protocol includes basic XOR encryption +- Token display masked (shows only first/last 4 characters) + +## Testing and Debugging + +### Built-in Testing Tools +- **MessageTester.vue**: Test BON protocol message encoding/decoding +- **WebSocketTester.vue**: Debug WebSocket connections and message flow +- Browser DevTools WebSocket monitoring for connection debugging + +### Common Development Tasks +- Test token import with various Base64 formats +- Verify WebSocket connection establishment with new client architecture +- Debug game command sending using command registry +- Test Promise-based message responses +- Validate route guards and navigation flow +- Test localStorage persistence across sessions + +### Key API Changes +- `tokenStore.sendMessage(tokenId, cmd, params)` - Send game commands +- `tokenStore.sendMessageWithPromise(tokenId, cmd, params)` - Send with response +- `tokenStore.getWebSocketClient(tokenId)` - Get client instance +- WebSocket client provides `send()`, `sendWithPromise()`, and game-specific methods +- Built-in commands: `getRoleInfo()`, `signIn()`, `claimDailyReward()`, etc. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5fe8aaa --- /dev/null +++ b/LICENSE @@ -0,0 +1,42 @@ +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License + +Copyright (c) 2024 XYZW Team + +This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + +You are free to: +- Share — copy and redistribute the material in any medium or format +- Adapt — remix, transform, and build upon the material + +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: +- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +- NonCommercial — You may not use the material for commercial purposes. +- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. +- No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. + +Notices: +You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation. + +No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material. + +For the full legal text of this license, please visit: +https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode + +--- + +ADDITIONAL TERMS FOR THIS SOFTWARE: + +This software is specifically designed for educational and personal use only. +Commercial use, including but not limited to: +- Selling this software or derivative works +- Using this software in commercial gaming operations +- Integrating this software into commercial products or services +- Using this software to generate revenue in any form + +is strictly prohibited without explicit written permission from the copyright holders. + +The software is provided "AS IS", without warranty of any kind, express or implied, +including but not limited to the warranties of merchantability, fitness for a +particular purpose and noninfringement. \ No newline at end of file diff --git a/LOCAL_TOKEN_CHANGES.md b/LOCAL_TOKEN_CHANGES.md new file mode 100644 index 0000000..d3e9a9d --- /dev/null +++ b/LOCAL_TOKEN_CHANGES.md @@ -0,0 +1,143 @@ +# 本地Token存储重构说明 + +本次重构完全移除了所有API接口请求,改为使用本地存储管理用户认证和游戏角色token。 + +## 主要变更 + +### 1. 新增文件 + +#### `/src/stores/localTokenManager.js` +- 完整的本地token管理系统 +- 支持用户认证token和游戏角色token管理 +- 内置WebSocket连接管理 +- 支持token导入/导出、过期清理等功能 + +#### `/src/components/TokenManager.vue` +- Token管理界面组件 +- 可视化显示所有token状态 +- 支持WebSocket连接控制 +- 提供批量操作功能 + +### 2. 修改的文件 + +#### `/src/stores/auth.js` +- **移除**: 所有`api.auth.*`调用 +- **新增**: 本地认证逻辑,模拟用户登录 +- **集成**: localTokenStore进行token管理 + +#### `/src/stores/gameRoles.js` +- **移除**: 所有`api.gameRoles.*`调用 +- **新增**: 本地角色管理,自动生成游戏token +- **集成**: 角色选择时自动建立WebSocket连接 + +#### `/src/views/DailyTasks.vue` +- **移除**: `api.dailyTasks.*`调用 +- **新增**: 本地模拟任务数据生成 +- **集成**: 通过WebSocket执行任务(模拟) + +#### `/src/views/Profile.vue` +- **新增**: TokenManager组件,提供token管理界面 + +## 核心功能 + +### 用户认证 +```javascript +// 本地认证,无需API调用 +const result = await authStore.login({ username, password }) +``` + +### 游戏角色管理 +```javascript +// 添加角色时自动生成游戏token +const result = await gameRolesStore.addGameRole(roleData) +// 自动生成: roleId, gameToken, wsUrl +``` + +### WebSocket连接 +```javascript +// 选择角色时自动建立WebSocket连接 +gameRolesStore.selectRole(role) +// 使用本地存储的token建立连接 + +// 手动控制连接 +localTokenStore.createWebSocketConnection(roleId, token, wsUrl) +localTokenStore.closeWebSocketConnection(roleId) +``` + +### Token管理 +```javascript +// 添加游戏token +localTokenStore.addGameToken(roleId, tokenData) + +// 获取token +const tokenData = localTokenStore.getGameToken(roleId) + +// 导出所有token +const backup = localTokenStore.exportTokens() + +// 导入token +localTokenStore.importTokens(backupData) +``` + +## 数据结构 + +### 游戏Token数据结构 +```javascript +{ + token: "game_token_xxx", // 游戏token + roleId: "role_xxx", // 角色ID + roleName: "角色名称", // 角色名称 + server: "服务器名", // 服务器 + wsUrl: "wss://game.xxx/ws", // WebSocket URL + createdAt: "2024-01-01T00:00:00Z", + lastUsed: "2024-01-01T00:00:00Z", + isActive: true +} +``` + +### WebSocket连接状态 +```javascript +{ + connection: WebSocket, // WebSocket连接对象 + status: "connected", // 连接状态 + roleId: "role_xxx", // 关联角色ID + connectedAt: "2024-01-01T00:00:00Z" +} +``` + +## 使用说明 + +### 1. 登录 +- 用户名/密码任意输入即可本地认证 +- 自动生成用户token并保存 + +### 2. 添加游戏角色 +- 填写角色信息后自动生成: + - 角色ID + - 游戏token + - WebSocket连接URL + +### 3. 管理Token +- 访问"个人设置"页面查看Token管理器 +- 可以查看、编辑、删除、导出/导入token +- 可以手动控制WebSocket连接 + +### 4. 执行任务 +- 选择角色后自动建立WebSocket连接 +- 执行任务通过WebSocket发送指令(模拟) +- 所有操作记录保存在本地 + +## 优势 + +1. **完全离线**: 无需任何服务器接口 +2. **数据安全**: 所有数据存储在本地 +3. **功能完整**: 保留原有所有功能 +4. **易于扩展**: 模块化设计,便于添加新功能 +5. **WebSocket支持**: 内置完整的WebSocket连接管理 + +## 注意事项 + +1. 所有数据存储在浏览器localStorage中 +2. 清除浏览器数据会丢失所有token +3. 建议定期使用导出功能备份token数据 +4. WebSocket连接使用模拟URL,需要根据实际情况修改 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..458f6e2 --- /dev/null +++ b/README.md @@ -0,0 +1,477 @@ +# XYZW Web Helper + +
+ +![XYZW Logo](public/xiaoyugan.png) + +**🎮 咸鱼自动化web平台** + +[![Vue 3](https://img.shields.io/badge/Vue-3.4+-4FC08D?style=flat&logo=vue.js&logoColor=white)](https://vuejs.org/) +[![Vite](https://img.shields.io/badge/Vite-5.0+-646CFF?style=flat&logo=vite&logoColor=white)](https://vitejs.dev/) +[![Naive UI](https://img.shields.io/badge/Naive%20UI-2.38+-18A058?style=flat&logo=vue.js&logoColor=white)](https://www.naiveui.com/) +[![WebSocket](https://img.shields.io/badge/WebSocket-BON%20Protocol-FF6B6B?style=flat&logo=websocket&logoColor=white)](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) +[![License](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg?style=flat)](https://creativecommons.org/licenses/by-nc-sa/4.0/) + +基于Vue 3 + Vite的现代化XYZW游戏辅助工具,支持Token管理、WebSocket通信、游戏自动化等功能。 + +
+ +--- + +## ✨ 核心特性 + +### 🔐 Token管理系统 +- **Base64解码支持**:自动识别和解析多种Base64格式的游戏Token +- **多角色管理**:同时管理多个游戏账号,支持角色信息展示 +- **本地存储**:安全的本地数据存储,无需后端服务器 +- **Token验证**:自动验证Token有效性和格式完整性 + +### 🌐 WebSocket通信 +- **BON协议支持**:内置Binary Object Notation协议编解码 +- **多重加密**:支持LX、X、XTM等多种加密方式 +- **自动重连**:智能断线重连机制,确保连接稳定 +- **消息队列**:内置消息队列系统,支持批量发送和响应处理 + +### 🎮 游戏功能 +- **日常任务管理**:自动化日常任务执行和奖励领取 +- **角色状态监控**:实时显示角色等级、职业、服务器等信息 +- **团队管理**:队伍状态查看和管理功能 +- **爬塔进度**:爬塔状态追踪和数据分析 + +### 🛠️ 开发工具 +- **消息测试器**:BON协议消息编码/解码测试工具 +- **WebSocket调试**:实时WebSocket连接和消息调试 +- **协议验证**:游戏协议消息格式验证工具 + +--- + +## 🏗️ 技术架构 + +### 前端技术栈 +``` +Vue 3.4+ # 渐进式JavaScript框架 +├── Composition API # Vue 3组合式API +├── + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7787006 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3586 @@ +{ + "name": "xyzw-token-manager", + "version": "2.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "xyzw-token-manager", + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@vicons/ionicons5": "^0.12.0", + "@vicons/material": "^0.12.0", + "axios": "^1.6.0", + "lz4js": "^0.2.0", + "naive-ui": "^2.38.0", + "pinia": "^2.1.0", + "vue": "^3.4.0", + "vue-router": "^4.2.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "@vitejs/plugin-vue": "^5.0.0", + "eslint": "^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "prettier": "^3.0.0", + "sass": "^1.69.0", + "typescript": "^5.0.0", + "vite": "^5.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@css-render/plugin-bem": { + "version": "0.15.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/@css-render/plugin-bem/-/plugin-bem-0.15.14.tgz", + "integrity": "sha512-QK513CJ7yEQxm/P3EwsI+d+ha8kSOcjGvD6SevM41neEMxdULE+18iuQK6tEChAWMOQNQPLG/Rw3Khb69r5neg==", + "license": "MIT", + "peerDependencies": { + "css-render": "~0.15.14" + } + }, + "node_modules/@css-render/vue3-ssr": { + "version": "0.15.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/@css-render/vue3-ssr/-/vue3-ssr-0.15.14.tgz", + "integrity": "sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.11" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "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.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "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://repo.huaweicloud.com/repository/npm/@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/js": { + "version": "8.57.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@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://repo.huaweicloud.com/repository/npm/@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://repo.huaweicloud.com/repository/npm/@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://repo.huaweicloud.com/repository/npm/@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/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "license": "Apache-2.0" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@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://repo.huaweicloud.com/repository/npm/@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://repo.huaweicloud.com/repository/npm/@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/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.3.tgz", + "integrity": "sha512-UmTdvXnLlqQNOCJnyksjPs1G4GqXNGW1LrzCe8+8QoaLhhDeTXYBgJ3k6x61WIhlHX2U+VzEJ55TtIjR/HTySA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.3.tgz", + "integrity": "sha512-8NoxqLpXm7VyeI0ocidh335D6OKT0UJ6fHdnIxf3+6oOerZZc+O7r+UhvROji6OspyPm+rrIdb1gTXtVIqn+Sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.3.tgz", + "integrity": "sha512-csnNavqZVs1+7/hUKtgjMECsNG2cdB8F7XBHP6FfQjqhjF8rzMzb3SLyy/1BG7YSfQ+bG75Ph7DyedbUqwq1rA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.3.tgz", + "integrity": "sha512-r2MXNjbuYabSIX5yQqnT8SGSQ26XQc8fmp6UhlYJd95PZJkQD1u82fWP7HqvGUf33IsOC6qsiV+vcuD4SDP6iw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.3.tgz", + "integrity": "sha512-uluObTmgPJDuJh9xqxyr7MV61Imq+0IvVsAlWyvxAaBSNzCcmZlhfYcRhCdMaCsy46ccZa7vtDDripgs9Jkqsw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.3.tgz", + "integrity": "sha512-AVJXEq9RVHQnejdbFvh1eWEoobohUYN3nqJIPI4mNTMpsyYN01VvcAClxflyk2HIxvLpRcRggpX1m9hkXkpC/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.3.tgz", + "integrity": "sha512-byyflM+huiwHlKi7VHLAYTKr67X199+V+mt1iRgJenAI594vcmGGddWlu6eHujmcdl6TqSNnvqaXJqZdnEWRGA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.3.tgz", + "integrity": "sha512-aLm3NMIjr4Y9LklrH5cu7yybBqoVCdr4Nvnm8WB7PKCn34fMCGypVNpGK0JQWdPAzR/FnoEoFtlRqZbBBLhVoQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.3.tgz", + "integrity": "sha512-VtilE6eznJRDIoFOzaagQodUksTEfLIsvXymS+UdJiSXrPW7Ai+WG4uapAc3F7Hgs791TwdGh4xyOzbuzIZrnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.3.tgz", + "integrity": "sha512-dG3JuS6+cRAL0GQ925Vppafi0qwZnkHdPeuZIxIPXqkCLP02l7ka+OCyBoDEv8S+nKHxfjvjW4OZ7hTdHkx8/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.3.tgz", + "integrity": "sha512-iU8DxnxEKJptf8Vcx4XvAUdpkZfaz0KWfRrnIRrOndL0SvzEte+MTM7nDH4A2Now4FvTZ01yFAgj6TX/mZl8hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.3.tgz", + "integrity": "sha512-VrQZp9tkk0yozJoQvQcqlWiqaPnLM6uY1qPYXvukKePb0fqaiQtOdMJSxNFUZFsGw5oA5vvVokjHrx8a9Qsz2A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.3.tgz", + "integrity": "sha512-uf2eucWSUb+M7b0poZ/08LsbcRgaDYL8NCGjUeFMwCWFwOuFcZ8D9ayPl25P3pl+D2FH45EbHdfyUesQ2Lt9wA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.3.tgz", + "integrity": "sha512-7tnUcDvN8DHm/9ra+/nF7lLzYHDeODKKKrh6JmZejbh1FnCNZS8zMkZY5J4sEipy2OW1d1Ncc4gNHUd0DLqkSg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.3.tgz", + "integrity": "sha512-MUpAOallJim8CsJK+4Lc9tQzlfPbHxWDrGXZm2z6biaadNpvh3a5ewcdat478W+tXDoUiHwErX/dOql7ETcLqg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.3.tgz", + "integrity": "sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.3.tgz", + "integrity": "sha512-oLc+JrwwvbimJUInzx56Q3ujL3Kkhxehg7O1gWAYzm8hImCd5ld1F2Gry5YDjR21MNb5WCKhC9hXgU7rRlyegQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.3.tgz", + "integrity": "sha512-lOrQ+BVRstruD1fkWg9yjmumhowR0oLAAzavB7yFSaGltY8klttmZtCLvOXCmGE9mLIn8IBV/IFrQOWz5xbFPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.3.tgz", + "integrity": "sha512-vvrVKPRS4GduGR7VMH8EylCBqsDcw6U+/0nPDuIjXQRbHJc6xOBj+frx8ksfZAh6+Fptw5wHrN7etlMmQnPQVg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.3.tgz", + "integrity": "sha512-fi3cPxCnu3ZeM3EwKZPgXbWoGzm2XHgB/WShKI81uj8wG0+laobmqy5wbgEwzstlbLu4MyO8C19FyhhWseYKNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "20.19.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/node/-/node-20.19.11.tgz", + "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vicons/ionicons5": { + "version": "0.12.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vicons/ionicons5/-/ionicons5-0.12.0.tgz", + "integrity": "sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==", + "license": "MIT" + }, + "node_modules/@vicons/material": { + "version": "0.12.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vicons/material/-/material-0.12.0.tgz", + "integrity": "sha512-chv1CYAl8P32P3Ycwgd5+vw/OFNc2mtkKdb1Rw4T5IJmKy6GVDsoUKV3N2l208HATn7CCQphZtuPDdsm7K2kmA==", + "license": "Apache 2.0" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.5.18.tgz", + "integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@vue/shared": "3.5.18", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz", + "integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz", + "integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@vue/compiler-core": "3.5.18", + "@vue/compiler-dom": "3.5.18", + "@vue/compiler-ssr": "3.5.18", + "@vue/shared": "3.5.18", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz", + "integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.5.18.tgz", + "integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.5.18.tgz", + "integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz", + "integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.18", + "@vue/runtime-core": "3.5.18", + "@vue/shared": "3.5.18", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.5.18.tgz", + "integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.18", + "@vue/shared": "3.5.18" + }, + "peerDependencies": { + "vue": "3.5.18" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.5.18.tgz", + "integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/ajv": { + "version": "6.12.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/ansi-regex": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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/argparse": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://repo.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/chokidar": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/color-name": { + "version": "1.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/css-render": { + "version": "0.15.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/css-render/-/css-render-0.15.14.tgz", + "integrity": "sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "~0.8.0", + "csstype": "~3.0.5" + } + }, + "node_modules/css-render/node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/csstype": { + "version": "3.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-tz": { + "version": "3.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/date-fns-tz/-/date-fns-tz-3.2.0.tgz", + "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", + "license": "MIT", + "peerDependencies": { + "date-fns": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "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/entities": { + "version": "4.5.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "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/esbuild": { + "version": "0.21.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/eslint": { + "version": "8.57.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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-plugin-vue": { + "version": "9.33.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", + "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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/espree": { + "version": "9.6.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/esquery": { + "version": "1.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/evtd": { + "version": "0.2.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/evtd/-/evtd-0.2.4.tgz", + "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/fill-range": { + "version": "7.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/flat-cache": { + "version": "3.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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.3.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "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.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "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-proto": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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://repo.huaweicloud.com/repository/npm/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/globals": { + "version": "13.24.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/gopd": { + "version": "1.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "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://repo.huaweicloud.com/repository/npm/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/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-number": { + "version": "7.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/isexe": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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/keyv": { + "version": "4.5.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/levn": { + "version": "0.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/locate-path": { + "version": "6.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/lodash": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lz4js": { + "version": "0.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/lz4js/-/lz4js-0.2.0.tgz", + "integrity": "sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg==", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://repo.huaweicloud.com/repository/npm/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/naive-ui": { + "version": "2.42.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/naive-ui/-/naive-ui-2.42.0.tgz", + "integrity": "sha512-c7cXR2YgOjgtBadXHwiWL4Y0tpGLAI5W5QzzHksOi22iuHXoSGMAzdkVTGVPE/PM0MSGQ/JtUIzCx2Y0hU0vTQ==", + "license": "MIT", + "dependencies": { + "@css-render/plugin-bem": "^0.15.14", + "@css-render/vue3-ssr": "^0.15.14", + "@types/katex": "^0.16.2", + "@types/lodash": "^4.14.198", + "@types/lodash-es": "^4.17.9", + "async-validator": "^4.2.5", + "css-render": "^0.15.14", + "csstype": "^3.1.3", + "date-fns": "^3.6.0", + "date-fns-tz": "^3.1.3", + "evtd": "^0.2.4", + "highlight.js": "^11.8.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "seemly": "^0.3.8", + "treemate": "^0.3.11", + "vdirs": "^0.1.8", + "vooks": "^0.2.12", + "vueuc": "^0.4.63" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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://repo.huaweicloud.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/once": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/p-limit": { + "version": "3.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/p-locate": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/parent-module": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/path-exists": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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-selector-parser": { + "version": "6.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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": "3.6.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/readdirp": { + "version": "4.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/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": "4.46.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/rollup/-/rollup-4.46.3.tgz", + "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.3", + "@rollup/rollup-android-arm64": "4.46.3", + "@rollup/rollup-darwin-arm64": "4.46.3", + "@rollup/rollup-darwin-x64": "4.46.3", + "@rollup/rollup-freebsd-arm64": "4.46.3", + "@rollup/rollup-freebsd-x64": "4.46.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.3", + "@rollup/rollup-linux-arm-musleabihf": "4.46.3", + "@rollup/rollup-linux-arm64-gnu": "4.46.3", + "@rollup/rollup-linux-arm64-musl": "4.46.3", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.3", + "@rollup/rollup-linux-ppc64-gnu": "4.46.3", + "@rollup/rollup-linux-riscv64-gnu": "4.46.3", + "@rollup/rollup-linux-riscv64-musl": "4.46.3", + "@rollup/rollup-linux-s390x-gnu": "4.46.3", + "@rollup/rollup-linux-x64-gnu": "4.46.3", + "@rollup/rollup-linux-x64-musl": "4.46.3", + "@rollup/rollup-win32-arm64-msvc": "4.46.3", + "@rollup/rollup-win32-ia32-msvc": "4.46.3", + "@rollup/rollup-win32-x64-msvc": "4.46.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/sass": { + "version": "1.90.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/seemly": { + "version": "0.3.10", + "resolved": "https://repo.huaweicloud.com/repository/npm/seemly/-/seemly-0.3.10.tgz", + "integrity": "sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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://repo.huaweicloud.com/repository/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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-json-comments": { + "version": "3.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/supports-color": { + "version": "7.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/text-table": { + "version": "0.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/treemate": { + "version": "0.3.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/treemate/-/treemate-0.3.11.tgz", + "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==", + "license": "MIT" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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-fest": { + "version": "0.20.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/typescript": { + "version": "5.9.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vdirs": { + "version": "0.1.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/vdirs/-/vdirs-0.1.8.tgz", + "integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==", + "license": "MIT", + "dependencies": { + "evtd": "^0.2.2" + }, + "peerDependencies": { + "vue": "^3.0.11" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://repo.huaweicloud.com/repository/npm/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vooks": { + "version": "0.2.12", + "resolved": "https://repo.huaweicloud.com/repository/npm/vooks/-/vooks-0.2.12.tgz", + "integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==", + "license": "MIT", + "dependencies": { + "evtd": "^0.2.2" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue": { + "version": "3.5.18", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue/-/vue-3.5.18.tgz", + "integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.18", + "@vue/compiler-sfc": "3.5.18", + "@vue/runtime-dom": "3.5.18", + "@vue/server-renderer": "3.5.18", + "@vue/shared": "3.5.18" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.5.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-router/-/vue-router-4.5.1.tgz", + "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vueuc": { + "version": "0.4.64", + "resolved": "https://repo.huaweicloud.com/repository/npm/vueuc/-/vueuc-0.4.64.tgz", + "integrity": "sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==", + "license": "MIT", + "dependencies": { + "@css-render/vue3-ssr": "^0.15.10", + "@juggle/resize-observer": "^3.3.1", + "css-render": "^0.15.10", + "evtd": "^0.2.4", + "seemly": "^0.3.6", + "vdirs": "^0.1.4", + "vooks": "^0.2.4" + }, + "peerDependencies": { + "vue": "^3.0.11" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/word-wrap": { + "version": "1.2.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/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/package.json b/package.json new file mode 100644 index 0000000..e1db723 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "xyzw-token-manager", + "version": "2.0.0", + "description": "XYZW游戏Token管理器 - 支持Base64导入和WebSocket连接管理", + "main": "src/main.js", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint src --ext .vue,.js,.ts --fix", + "format": "prettier --write \"src/**/*.{js,vue,ts,css,scss}\"" + }, + "dependencies": { + "@vicons/ionicons5": "^0.12.0", + "@vicons/material": "^0.12.0", + "axios": "^1.6.0", + "lz4js": "^0.2.0", + "naive-ui": "^2.38.0", + "pinia": "^2.1.0", + "vue": "^3.4.0", + "vue-router": "^4.2.0" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "@vitejs/plugin-vue": "^5.0.0", + "eslint": "^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "prettier": "^3.0.0", + "sass": "^1.69.0", + "typescript": "^5.0.0", + "vite": "^5.0.0" + }, + "keywords": [ + "vue", + "token-management", + "websocket", + "base64", + "game-automation", + "xyzw", + "frontend" + ], + "author": "XYZW Team", + "license": "CC-BY-NC-SA-4.0" +} diff --git a/public/1733492491706148.png b/public/1733492491706148.png new file mode 100644 index 0000000000000000000000000000000000000000..9469552e06e95d2485d063a9afa4b3499600211d GIT binary patch literal 15441 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 literal 0 HcmV?d00001 diff --git a/public/173746572831736.png b/public/173746572831736.png new file mode 100644 index 0000000000000000000000000000000000000000..de62431153bf5f0b52eb194e51debbe024dd4337 GIT binary patch literal 38673 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 literal 0 HcmV?d00001 diff --git a/public/174023274867420.png b/public/174023274867420.png new file mode 100644 index 0000000000000000000000000000000000000000..fd453ff1c250aa15495ddb8a0bf929ea892ce794 GIT binary patch literal 16030 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 literal 0 HcmV?d00001 diff --git a/public/IMG_8007.JPG b/public/IMG_8007.JPG new file mode 100644 index 0000000000000000000000000000000000000000..6920d0e20eb5ddfd1505e6c91e1afdc221c7594e GIT binary patch literal 113993 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%0DW*IIH~y*vIO_&Y+>99;qnW4+D8lPGmf3o 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Ȥ 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 literal 0 HcmV?d00001 diff --git a/public/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png b/public/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png new file mode 100644 index 0000000000000000000000000000000000000000..62ec56f7e43d950358d947febe11f9a3f5e90977 GIT binary patch literal 2660 zcmV-q3Y+zbP)Px$Zct2AMF0Q*FA^OS5D`TbB^eSG8W0pJ6B`*35*iW| z77h{<5D_#J9zql(6c7?Z6eL0vBoYu2L=+`P6eT?rB19A=K@=nv5EFM350()jMieL0 zh6sEV5S|kxWe*E+5)EP}Bl*+-UJwgO6(~XwDW63du@c?!uByTPt z(0&QliU)2vA=qdPQ2-9DY7?1L82hpTT>}ZmehWqf9IHeawJbyC!v;M76Ldx&+k6OA z3?1W%2A?+{tb!B3ZVk+<4qgZv+?5BAR2aFB5s(%g{=fih0Tc4a1k|()muwl^y9%us zEXbS=zoQN7bqPBREX^@C!;1{+LO;%P4FCK9m0G=eK3skT8CWoka1$*|I+_Ye2bd^000+sQchCOjJXlM&73@*I;bCh=c#&^dW)&4-}74*L zFG$^^)u+73zMNtGY4Zd?Cz;pe)r-{!Meek0WVmdWG*1$fWL~Q69rb#fn{XW+9j))z z>xY~_>(6qNICKC_l9<%nztw%)75y2%e?p*}WY6>Itv{gNL!F+U9vplW6aGnoGoTb7 zWH!Q(6IhDgX(?P7CXhqUKS7iopwA_S1q_k4mXHErVr^Ky2QE$!W0pPJAV#cvo^MUu zK|r>mj}5faB_)w7Yy}>9QNo8k01e79F3?Q*4hdtYJh;n_fYvd~n3l^%6>d0+`G^oyIE;9q zQ1uWcqLK#o@iq*|_yBD2hGA&|?C*Rahe@^-Nr2*iSc zz`;_8@P+Uoj$(p^@WMW=__1eL%qOMtK=>Glg%1v3G$1S%!|@OXW4u-sIX+p03H5x|IGdm7#V6iPt`j+~ zkndo^1hFU#L=d{eV=)3F@Iuw-NRr0L3DNU>`43k}L4YPLkN;W(lo3zlHc)LuahyN~ z@i0tiAAvXY{cTOt^2eG%x}FD$amm=F%>aP=GjN{dvhny3@-Qs0L_l6JhQi?sLtbvD zoKZRwpG=ZJsbr^EKJRYt(oPbcrQPAC$xW6`3^!oGMS}$5L4!e9Bp9*Q__VBa6hqVj z@OXZbH1m|vku%$eC!cm{uLXeIX5^xr5FrmWE41HW&=(HIFvQziiFb-Q!DD_tHSRkA zCHJ|EqBbvjw3jN?FD@>=G&cfw?P`l4?gAX%3dTZfjb0>P$o8GhY(_dI%Ja+eaOo{ZW;v$BW>%Uf{Bbu`{Rp>< zUBi5as9=l;V{q4n>iSBHq|Lu>FfM)2Qsp>PQZn3fGsW!j7y@3SOpc+-g)JeB6{@?D zz5rfQy=FZ-$g74{V*M4RF6>1%+fft{7~@g#5(I`JfBj#c-h)Gq<0MrzSU;B$drE6( zuYDKdE#Dmwn#9%`N08?-y{N4$f{K#$OJq^;bE2X6`>n_)*kuA+sL*_OM7**2a^BPo zoHp2Ot0uCXU#+lQG1*yeZY;qP@%cs$37CK9l-u;;R_{zJY&M@PDV&zBbP~O;vO>PQ z^ESGa8qMVn5h34uxJ@y=E1{yQeDw&(hZ{PluHNLMDZEE$_VVW2zrS52CDnkPB2i39$DgGVSQs1V6<|+Kr=Y`| z50@WqK1eETX7OT5O{Ez|_-=x+jr41vZtUrKUgmDTUR_wTICs@NoqWkQj-#wg)?BM zya&6q%|2tXJOUq>cANc2pxtD(SwS@L{(UX-LsvQP_C<$LYsv_j4tga)M-%XK&B?DN;5JnMt1jV6|GT55!00to?!d{e~B) z(wP84F}=GKz^nY{3T1WyhA%dUGQ*@&nsnaj37$nO;?0bJPh37ZKoj8Ob)oS7w9#I| z3hmlwgMQ-#j8qeq?d>>|Y7Mf=P7^q+e{Xt3w2wmkL<`$F<>l&tS+@OW~B2oZC9uvgM9u|5;)$P&yps(!6pDM}2q)w*`*}fVpW%Oy`+Y zyLNt_Oc`gJgFX7*;tX>34}DrtJC&}a);`~o1vmi$&zre9$eW&a14^KP;NMO#B*WKu z%4LGYpIdu8z%+mMh0)a7F`I5|P_F4Y1cb;}(=ONaqLXTpI;CsJ@qys7+F$S{0Xkbe zJWKM)+VMaK-kDj)+`YwDP>xqFkK4QG6!`PRA@!n`=n!@y-BLy6lYHKwoY35x?}!e^ zYa}?-QRVd>D9f(5z#b1zcBx@mT006%h?tz-ZT(M z%7bW-Gc#qgz8>)q(FFC<@8K*!R9bMJXLvXw?3zF!fviclr-valD@f SM8GQm0000Z0iQt$&;JbYXN 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 literal 0 HcmV?d00001 diff --git a/public/icons/173746572831736.png b/public/icons/173746572831736.png new file mode 100644 index 0000000000000000000000000000000000000000..de62431153bf5f0b52eb194e51debbe024dd4337 GIT binary patch literal 38673 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 literal 0 HcmV?d00001 diff --git a/public/icons/174023274867420.png b/public/icons/174023274867420.png new file mode 100644 index 0000000000000000000000000000000000000000..fd453ff1c250aa15495ddb8a0bf929ea892ce794 GIT binary patch literal 16030 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 literal 0 HcmV?d00001 diff --git a/public/icons/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png b/public/icons/Ob7pyorzmHiJcbab2c25af264d0758b527bc1b61cc3b.png new file mode 100644 index 0000000000000000000000000000000000000000..62ec56f7e43d950358d947febe11f9a3f5e90977 GIT binary patch literal 2660 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 SjVApOpslX2_Dsd@&i?>Dj5MqO literal 0 HcmV?d00001 diff --git a/public/ta.png b/public/ta.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ad5dd1f38798031c89e5ab29316db9efd63b26 GIT binary patch literal 11787 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 SjVApOpslX2_Dsd@&i?>Dj5MqO literal 0 HcmV?d00001 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..843a1a4 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..d190561 --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,134 @@ +import axios from 'axios' +import { useAuthStore } from '@/stores/auth' + +// 创建axios实例 +const request = axios.create({ + baseURL: '/api/v1', + timeout: 10000, + headers: { + 'Content-Type': 'application/json' + } +}) + +// 请求拦截器 +request.interceptors.request.use( + (config) => { + const authStore = useAuthStore() + if (authStore.token) { + config.headers.Authorization = `Bearer ${authStore.token}` + } + return config + }, + (error) => { + return Promise.reject(error) + } +) + +// 响应拦截器 +request.interceptors.response.use( + (response) => { + const data = response.data + + // 统一处理响应格式 + if (data.success !== undefined) { + return data + } + + // 兼容不同的响应格式 + return { + success: true, + data: data, + message: 'success' + } + }, + (error) => { + const authStore = useAuthStore() + + // 处理HTTP错误 + if (error.response) { + const { status, data } = error.response + + switch (status) { + case 401: + // 未授权,清除登录状态 + authStore.logout() + window.location.href = '/login' + return Promise.reject({ + success: false, + message: '登录已过期,请重新登录' + }) + case 403: + return Promise.reject({ + success: false, + message: '没有权限访问' + }) + case 404: + return Promise.reject({ + success: false, + message: '请求的资源不存在' + }) + case 500: + return Promise.reject({ + success: false, + message: '服务器内部错误' + }) + default: + return Promise.reject({ + success: false, + message: data?.message || '请求失败' + }) + } + } else if (error.request) { + // 网络错误 + return Promise.reject({ + success: false, + message: '网络连接失败,请检查网络' + }) + } else { + // 其他错误 + return Promise.reject({ + success: false, + message: error.message || '未知错误' + }) + } + } +) + +// API接口定义 +const api = { + // 认证相关 + auth: { + login: (credentials) => request.post('/auth/login', credentials), + register: (userInfo) => request.post('/auth/register', userInfo), + logout: () => request.post('/auth/logout'), + getUserInfo: () => request.get('/auth/user'), + refreshToken: () => request.post('/auth/refresh') + }, + + // 游戏角色相关 + gameRoles: { + getList: () => request.get('/gamerole_list'), + add: (roleData) => request.post('/gameroles', roleData), + update: (roleId, roleData) => request.put(`/gameroles/${roleId}`, roleData), + delete: (roleId) => request.delete(`/gameroles/${roleId}`), + getDetail: (roleId) => request.get(`/gameroles/${roleId}`) + }, + + // 日常任务相关 + dailyTasks: { + getList: (roleId) => request.get(`/daily-tasks?roleId=${roleId}`), + getStatus: (roleId) => request.get(`/daily-tasks/status?roleId=${roleId}`), + complete: (taskId, roleId) => request.post(`/daily-tasks/${taskId}/complete`, { roleId }), + getHistory: (roleId, page = 1, limit = 20) => request.get(`/daily-tasks/history?roleId=${roleId}&page=${page}&limit=${limit}`) + }, + + // 用户相关 + user: { + getProfile: () => request.get('/user/profile'), + updateProfile: (profileData) => request.put('/user/profile', profileData), + changePassword: (passwordData) => request.put('/user/password', passwordData), + getStats: () => request.get('/user/stats') + } +} + +export default api \ No newline at end of file diff --git a/src/assets/styles/global.scss b/src/assets/styles/global.scss new file mode 100644 index 0000000..82cfc27 --- /dev/null +++ b/src/assets/styles/global.scss @@ -0,0 +1,314 @@ +// 全局样式重置 +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { + height: 100%; + scroll-behavior: smooth; +} + +body { + height: 100%; + font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: var(--font-size-md); + line-height: var(--line-height-normal); + color: var(--text-primary); + background: var(--bg-primary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#app { + min-height: 100vh; +} + +// 链接样式 +a { + color: var(--primary-color); + text-decoration: none; + transition: color var(--transition-fast); + + &:hover { + color: var(--primary-color-hover); + } +} + +// 按钮重置 +button { + border: none; + background: none; + cursor: pointer; + font-family: inherit; +} + +// 输入框重置 +input, textarea, select { + font-family: inherit; + font-size: inherit; + border: none; + outline: none; +} + +// 列表重置 +ul, ol { + list-style: none; +} + +// 图片 +img { + max-width: 100%; + height: auto; +} + +// 滚动条样式 +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.1); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, 0.3); + border-radius: 3px; + + &:hover { + background: rgba(0, 0, 0, 0.5); + } +} + +// 工具类 +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.flex { + display: flex; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.flex-column { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-1 { + flex: 1; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +// 间距工具类 +.m-0 { margin: 0; } +.m-1 { margin: var(--spacing-xs); } +.m-2 { margin: var(--spacing-sm); } +.m-3 { margin: var(--spacing-md); } +.m-4 { margin: var(--spacing-lg); } +.m-5 { margin: var(--spacing-xl); } + +.mt-0 { margin-top: 0; } +.mt-1 { margin-top: var(--spacing-xs); } +.mt-2 { margin-top: var(--spacing-sm); } +.mt-3 { margin-top: var(--spacing-md); } +.mt-4 { margin-top: var(--spacing-lg); } +.mt-5 { margin-top: var(--spacing-xl); } + +.mb-0 { margin-bottom: 0; } +.mb-1 { margin-bottom: var(--spacing-xs); } +.mb-2 { margin-bottom: var(--spacing-sm); } +.mb-3 { margin-bottom: var(--spacing-md); } +.mb-4 { margin-bottom: var(--spacing-lg); } +.mb-5 { margin-bottom: var(--spacing-xl); } + +.ml-0 { margin-left: 0; } +.ml-1 { margin-left: var(--spacing-xs); } +.ml-2 { margin-left: var(--spacing-sm); } +.ml-3 { margin-left: var(--spacing-md); } +.ml-4 { margin-left: var(--spacing-lg); } +.ml-5 { margin-left: var(--spacing-xl); } + +.mr-0 { margin-right: 0; } +.mr-1 { margin-right: var(--spacing-xs); } +.mr-2 { margin-right: var(--spacing-sm); } +.mr-3 { margin-right: var(--spacing-md); } +.mr-4 { margin-right: var(--spacing-lg); } +.mr-5 { margin-right: var(--spacing-xl); } + +.p-0 { padding: 0; } +.p-1 { padding: var(--spacing-xs); } +.p-2 { padding: var(--spacing-sm); } +.p-3 { padding: var(--spacing-md); } +.p-4 { padding: var(--spacing-lg); } +.p-5 { padding: var(--spacing-xl); } + +.pt-0 { padding-top: 0; } +.pt-1 { padding-top: var(--spacing-xs); } +.pt-2 { padding-top: var(--spacing-sm); } +.pt-3 { padding-top: var(--spacing-md); } +.pt-4 { padding-top: var(--spacing-lg); } +.pt-5 { padding-top: var(--spacing-xl); } + +.pb-0 { padding-bottom: 0; } +.pb-1 { padding-bottom: var(--spacing-xs); } +.pb-2 { padding-bottom: var(--spacing-sm); } +.pb-3 { padding-bottom: var(--spacing-md); } +.pb-4 { padding-bottom: var(--spacing-lg); } +.pb-5 { padding-bottom: var(--spacing-xl); } + +.pl-0 { padding-left: 0; } +.pl-1 { padding-left: var(--spacing-xs); } +.pl-2 { padding-left: var(--spacing-sm); } +.pl-3 { padding-left: var(--spacing-md); } +.pl-4 { padding-left: var(--spacing-lg); } +.pl-5 { padding-left: var(--spacing-xl); } + +.pr-0 { padding-right: 0; } +.pr-1 { padding-right: var(--spacing-xs); } +.pr-2 { padding-right: var(--spacing-sm); } +.pr-3 { padding-right: var(--spacing-md); } +.pr-4 { padding-right: var(--spacing-lg); } +.pr-5 { padding-right: var(--spacing-xl); } + +// 文字大小 +.text-xs { font-size: var(--font-size-xs); } +.text-sm { font-size: var(--font-size-sm); } +.text-md { font-size: var(--font-size-md); } +.text-lg { font-size: var(--font-size-lg); } +.text-xl { font-size: var(--font-size-xl); } +.text-2xl { font-size: var(--font-size-2xl); } +.text-3xl { font-size: var(--font-size-3xl); } + +// 文字颜色 +.text-primary { color: var(--text-primary); } +.text-secondary { color: var(--text-secondary); } +.text-tertiary { color: var(--text-tertiary); } +.text-success { color: var(--success-color); } +.text-warning { color: var(--warning-color); } +.text-error { color: var(--error-color); } +.text-info { color: var(--info-color); } + +// 字重 +.font-light { font-weight: var(--font-weight-light); } +.font-normal { font-weight: var(--font-weight-normal); } +.font-medium { font-weight: var(--font-weight-medium); } +.font-semibold { font-weight: var(--font-weight-semibold); } +.font-bold { font-weight: var(--font-weight-bold); } + +// 圆角 +.rounded-sm { border-radius: var(--border-radius-small); } +.rounded { border-radius: var(--border-radius-medium); } +.rounded-lg { border-radius: var(--border-radius-large); } +.rounded-xl { border-radius: var(--border-radius-xl); } +.rounded-full { border-radius: 50%; } + +// 阴影 +.shadow-sm { box-shadow: var(--shadow-light); } +.shadow { box-shadow: var(--shadow-medium); } +.shadow-lg { box-shadow: var(--shadow-heavy); } + +// 动画 +.transition { + transition: all var(--transition-normal); +} + +.transition-fast { + transition: all var(--transition-fast); +} + +.transition-slow { + transition: all var(--transition-slow); +} + +// 布局 +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 var(--spacing-md); +} + +.container-sm { + max-width: 768px; + margin: 0 auto; + padding: 0 var(--spacing-md); +} + +.container-lg { + max-width: 1400px; + margin: 0 auto; + padding: 0 var(--spacing-md); +} + +// 玻璃效果 +.glass { + backdrop-filter: blur(10px); + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); +} + +// 悬停效果 +.hover-scale { + transition: transform var(--transition-fast); + + &:hover { + transform: scale(1.05); + } +} + +// 响应式 +@media (max-width: 768px) { + .container, + .container-sm, + .container-lg { + padding: 0 var(--spacing-sm); + } + + .text-3xl { + font-size: var(--font-size-2xl); + } + + .text-2xl { + font-size: var(--font-size-xl); + } +} \ No newline at end of file diff --git a/src/assets/styles/variables.scss b/src/assets/styles/variables.scss new file mode 100644 index 0000000..f839e5f --- /dev/null +++ b/src/assets/styles/variables.scss @@ -0,0 +1,102 @@ +// 颜色变量 +:root { + // 主题色 + --primary-color: #667eea; + --primary-color-hover: #5a67d8; + --primary-color-light: #e6f7ff; + + // 辅助色 + --secondary-color: #764ba2; + --success-color: #18a058; + --warning-color: #f5a623; + --error-color: #d03050; + --info-color: #2080f0; + + // 中性色 + --text-primary: #333333; + --text-secondary: #666666; + --text-tertiary: #999999; + --text-disabled: #cccccc; + + // 背景色 + --bg-primary: #ffffff; + --bg-secondary: #f5f7fa; + --bg-tertiary: #f0f2f5; + --bg-overlay: rgba(0, 0, 0, 0.5); + + // 边框色 + --border-light: #e5e7eb; + --border-medium: #d1d5db; + --border-dark: #9ca3af; + + // 阴影 + --shadow-light: 0 1px 3px rgba(0, 0, 0, 0.1); + --shadow-medium: 0 4px 6px rgba(0, 0, 0, 0.1); + --shadow-heavy: 0 10px 15px rgba(0, 0, 0, 0.1); + + // 圆角 + --border-radius-small: 4px; + --border-radius-medium: 8px; + --border-radius-large: 12px; + --border-radius-xl: 16px; + + // 间距 + --spacing-xs: 4px; + --spacing-sm: 8px; + --spacing-md: 16px; + --spacing-lg: 24px; + --spacing-xl: 32px; + --spacing-2xl: 48px; + + // 字体 + --font-size-xs: 12px; + --font-size-sm: 14px; + --font-size-md: 16px; + --font-size-lg: 18px; + --font-size-xl: 20px; + --font-size-2xl: 24px; + --font-size-3xl: 32px; + + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + + // 行高 + --line-height-tight: 1.2; + --line-height-normal: 1.5; + --line-height-relaxed: 1.75; + + // 动画 + --transition-fast: 0.15s ease; + --transition-normal: 0.3s ease; + --transition-slow: 0.5s ease; + + // Z-index + --z-dropdown: 1000; + --z-sticky: 1020; + --z-fixed: 1030; + --z-modal-backdrop: 1040; + --z-modal: 1050; + --z-popover: 1060; + --z-tooltip: 1070; + --z-toast: 1080; +} + +// 暗色主题 +[data-theme="dark"] { + --text-primary: #ffffff; + --text-secondary: #d1d5db; + --text-tertiary: #9ca3af; + --text-disabled: #6b7280; + + --bg-primary: #1f2937; + --bg-secondary: #374151; + --bg-tertiary: #4b5563; + --bg-overlay: rgba(0, 0, 0, 0.7); + + --border-light: #4b5563; + --border-medium: #6b7280; + --border-dark: #9ca3af; +} \ No newline at end of file diff --git a/src/components/DailyTaskCard.vue b/src/components/DailyTaskCard.vue new file mode 100644 index 0000000..cb9f351 --- /dev/null +++ b/src/components/DailyTaskCard.vue @@ -0,0 +1,582 @@ + + + + + \ No newline at end of file diff --git a/src/components/DailyTaskStatus.vue b/src/components/DailyTaskStatus.vue new file mode 100644 index 0000000..4f521a7 --- /dev/null +++ b/src/components/DailyTaskStatus.vue @@ -0,0 +1,751 @@ + + + + + \ No newline at end of file diff --git a/src/components/GameStatus.vue b/src/components/GameStatus.vue new file mode 100644 index 0000000..0d50a25 --- /dev/null +++ b/src/components/GameStatus.vue @@ -0,0 +1,673 @@ + + + + + \ No newline at end of file diff --git a/src/components/MessageTester.vue b/src/components/MessageTester.vue new file mode 100644 index 0000000..6470500 --- /dev/null +++ b/src/components/MessageTester.vue @@ -0,0 +1,319 @@ + + + + + \ No newline at end of file diff --git a/src/components/TeamStatus.vue b/src/components/TeamStatus.vue new file mode 100644 index 0000000..30807e8 --- /dev/null +++ b/src/components/TeamStatus.vue @@ -0,0 +1,454 @@ + + + + + \ No newline at end of file diff --git a/src/components/TokenManager.vue b/src/components/TokenManager.vue new file mode 100644 index 0000000..0c9dc8c --- /dev/null +++ b/src/components/TokenManager.vue @@ -0,0 +1,507 @@ + + + + + \ No newline at end of file diff --git a/src/components/TowerStatus.vue b/src/components/TowerStatus.vue new file mode 100644 index 0000000..8201e8c --- /dev/null +++ b/src/components/TowerStatus.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/src/components/WebSocketTester.vue b/src/components/WebSocketTester.vue new file mode 100644 index 0000000..169d242 --- /dev/null +++ b/src/components/WebSocketTester.vue @@ -0,0 +1,496 @@ + + + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..259889b --- /dev/null +++ b/src/main.js @@ -0,0 +1,17 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import naive from 'naive-ui' +import router from './router' +import App from './App.vue' +import './assets/styles/global.scss' + +// 创建应用实例 +const app = createApp(App) + +// 使用插件 +app.use(createPinia()) +app.use(router) +app.use(naive) + +// 挂载应用 +app.mount('#app') \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..99a5529 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,137 @@ +import { createRouter, createWebHistory } from 'vue-router' +import { useTokenStore } from '@/stores/tokenStore' + +const routes = [ + { + path: '/', + name: 'Home', + component: () => import('@/views/Home.vue'), + meta: { + title: '首页', + requiresToken: false + } + }, + { + path: '/tokens', + name: 'TokenImport', + component: () => import('@/views/TokenImport.vue'), + meta: { + title: 'Token管理', + requiresToken: false + } + }, + { + path: '/dashboard', + name: 'Dashboard', + component: () => import('@/views/Dashboard.vue'), + meta: { + title: '控制台', + requiresToken: true + } + }, + { + path: '/profile', + name: 'Profile', + component: () => import('@/views/Profile.vue'), + meta: { + title: '个人设置', + requiresToken: true + } + }, + { + path: '/daily-tasks', + name: 'DailyTasks', + component: () => import('@/views/DailyTasks.vue'), + meta: { + title: '日常任务', + requiresToken: true + } + }, + { + path: '/game-features', + name: 'GameFeatures', + component: () => import('@/views/GameFeatures.vue'), + meta: { + title: '游戏功能', + requiresToken: true + } + }, + { + path: '/message-test', + name: 'MessageTest', + component: () => import('@/components/MessageTester.vue'), + meta: { + title: '消息测试', + requiresToken: true + } + }, + { + path: '/websocket-test', + name: 'WebSocketTest', + component: () => import('@/components/WebSocketTester.vue'), + meta: { + title: 'WebSocket测试', + requiresToken: true + } + }, + // 兼容旧路由,重定向到新的token管理页面 + { + path: '/login', + redirect: '/tokens' + }, + { + path: '/register', + redirect: '/tokens' + }, + { + path: '/game-roles', + redirect: '/tokens' + }, + { + path: '/:pathMatch(.*)*', + name: 'NotFound', + component: () => import('@/views/NotFound.vue'), + meta: { + title: '页面不存在' + } + } +] + +const router = createRouter({ + history: createWebHistory(), + routes, + scrollBehavior(to, from, savedPosition) { + if (savedPosition) { + return savedPosition + } else { + return { top: 0 } + } + } +}) + +// 导航守卫 +router.beforeEach((to, from, next) => { + const tokenStore = useTokenStore() + + // 设置页面标题 + document.title = to.meta.title ? `${to.meta.title} - XYZW 游戏管理系统` : 'XYZW 游戏管理系统' + + // 检查是否需要Token + if (to.meta.requiresToken && !tokenStore.hasTokens) { + next('/tokens') + } else if (to.name === 'TokenImport' && tokenStore.hasTokens && tokenStore.selectedToken) { + // 如果已有token且已选择,重定向到控制台 + next('/dashboard') + } else if (to.path === '/' && tokenStore.hasTokens) { + // 首页重定向逻辑 + if (tokenStore.selectedToken) { + next('/dashboard') + } else { + next('/tokens') + } + } else { + next() + } +}) + +export default router \ No newline at end of file diff --git a/src/stores/auth.js b/src/stores/auth.js new file mode 100644 index 0000000..2cda174 --- /dev/null +++ b/src/stores/auth.js @@ -0,0 +1,158 @@ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { useLocalTokenStore } from './localTokenManager' + +export const useAuthStore = defineStore('auth', () => { + // 状态 + const user = ref(null) + const token = ref(localStorage.getItem('token') || null) + const isLoading = ref(false) + + const localTokenStore = useLocalTokenStore() + + // 计算属性 + const isAuthenticated = computed(() => !!token.value && !!user.value) + const userInfo = computed(() => user.value) + + // 登录 - 移除API调用,使用本地认证 + const login = async (credentials) => { + try { + isLoading.value = true + + // 模拟本地认证逻辑 + const mockUser = { + id: 'local_user_' + Date.now(), + username: credentials.username, + email: credentials.email || `${credentials.username}@local.game`, + avatar: '/icons/xiaoyugan.png', + createdAt: new Date().toISOString() + } + + const mockToken = 'local_token_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9) + + token.value = mockToken + user.value = mockUser + + // 保存到本地存储 + localStorage.setItem('token', token.value) + localStorage.setItem('user', JSON.stringify(user.value)) + + // 同时保存到token管理器 + localTokenStore.setUserToken(mockToken) + + return { success: true } + } catch (error) { + console.error('登录错误:', error) + return { success: false, message: '本地认证失败' } + } finally { + isLoading.value = false + } + } + + // 注册 - 移除API调用,使用本地注册 + const register = async (userInfo) => { + try { + isLoading.value = true + + // 检查用户名是否已存在(简单的本地检查) + const existingUsers = JSON.parse(localStorage.getItem('registeredUsers') || '[]') + const userExists = existingUsers.some(u => u.username === userInfo.username) + + if (userExists) { + return { success: false, message: '用户名已存在' } + } + + // 保存新用户信息到本地 + const newUser = { + ...userInfo, + id: 'user_' + Date.now(), + createdAt: new Date().toISOString() + } + + existingUsers.push(newUser) + localStorage.setItem('registeredUsers', JSON.stringify(existingUsers)) + + return { success: true, message: '注册成功,请登录' } + } catch (error) { + console.error('注册错误:', error) + return { success: false, message: '本地注册失败' } + } finally { + isLoading.value = false + } + } + + // 登出 + const logout = () => { + user.value = null + token.value = null + + // 清除本地存储 + localStorage.removeItem('token') + localStorage.removeItem('user') + localStorage.removeItem('gameRoles') + + // 清除token管理器中的数据 + localTokenStore.clearUserToken() + localTokenStore.clearAllGameTokens() + } + + // 获取用户信息 - 移除API调用,使用本地数据 + const fetchUserInfo = async () => { + try { + if (!token.value) return false + + // 从本地存储获取用户信息 + const savedUser = localStorage.getItem('user') + if (savedUser) { + try { + user.value = JSON.parse(savedUser) + return true + } catch (error) { + console.error('解析用户信息失败:', error) + logout() + return false + } + } else { + logout() + return false + } + } catch (error) { + console.error('获取用户信息失败:', error) + logout() + return false + } + } + + // 初始化认证状态 - 移除API验证,使用本地验证 + const initAuth = async () => { + const savedUser = localStorage.getItem('user') + if (token.value && savedUser) { + try { + user.value = JSON.parse(savedUser) + // 初始化token管理器 + localTokenStore.initTokenManager() + } catch (error) { + console.error('初始化认证失败:', error) + logout() + } + } + } + + return { + // 状态 + user, + token, + isLoading, + + // 计算属性 + isAuthenticated, + userInfo, + + // 方法 + login, + register, + logout, + fetchUserInfo, + initAuth + } +}) \ No newline at end of file diff --git a/src/stores/gameRoles.js b/src/stores/gameRoles.js new file mode 100644 index 0000000..e3d8ae3 --- /dev/null +++ b/src/stores/gameRoles.js @@ -0,0 +1,204 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { useLocalTokenStore } from './localTokenManager' + +export const useGameRolesStore = defineStore('gameRoles', () => { + // 状态 + const gameRoles = ref([]) + const isLoading = ref(false) + const selectedRole = ref(null) + + const localTokenStore = useLocalTokenStore() + + // 获取游戏角色列表 - 移除API调用,使用本地数据 + const fetchGameRoles = async () => { + try { + isLoading.value = true + + // 从本地存储获取角色数据 + const savedRoles = localStorage.getItem('gameRoles') + if (savedRoles) { + try { + gameRoles.value = JSON.parse(savedRoles) + } catch (error) { + console.error('解析游戏角色数据失败:', error) + gameRoles.value = [] + } + } else { + gameRoles.value = [] + } + + return { success: true } + } catch (error) { + console.error('获取游戏角色失败:', error) + return { success: false, message: '本地数据读取失败' } + } finally { + isLoading.value = false + } + } + + // 添加游戏角色 - 移除API调用,本地生成角色和token + const addGameRole = async (roleData) => { + try { + isLoading.value = true + + // 生成角色ID和游戏token + const roleId = 'role_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9) + const gameToken = 'game_token_' + Date.now() + '_' + Math.random().toString(36).substr(2, 16) + + const newRole = { + ...roleData, + id: roleId, + createdAt: new Date().toISOString(), + isActive: false, + exp: 0, + gold: 1000, // 默认金币 + vip: false, + avatar: roleData.avatar || '/icons/xiaoyugan.png' + } + + // 添加到角色列表 + gameRoles.value.push(newRole) + localStorage.setItem('gameRoles', JSON.stringify(gameRoles.value)) + + // 生成并保存游戏token + const tokenData = { + token: gameToken, + roleId: roleId, + roleName: newRole.name, + server: newRole.server, + wsUrl: null, // 使用默认的游戏WebSocket地址 + createdAt: new Date().toISOString(), + isActive: true + } + + localTokenStore.addGameToken(roleId, tokenData) + + return { success: true, message: '添加角色成功,已生成游戏token' } + } catch (error) { + console.error('添加游戏角色失败:', error) + return { success: false, message: '添加角色失败' } + } finally { + isLoading.value = false + } + } + + // 更新游戏角色 - 移除API调用,使用本地更新 + const updateGameRole = async (roleId, roleData) => { + try { + isLoading.value = true + + const index = gameRoles.value.findIndex(role => role.id === roleId) + if (index !== -1) { + gameRoles.value[index] = { + ...gameRoles.value[index], + ...roleData, + updatedAt: new Date().toISOString() + } + localStorage.setItem('gameRoles', JSON.stringify(gameRoles.value)) + + // 更新对应的token信息 + const existingToken = localTokenStore.getGameToken(roleId) + if (existingToken) { + localTokenStore.updateGameToken(roleId, { + roleName: roleData.name || existingToken.roleName, + server: roleData.server || existingToken.server + }) + } + + return { success: true, message: '更新角色成功' } + } else { + return { success: false, message: '角色不存在' } + } + } catch (error) { + console.error('更新游戏角色失败:', error) + return { success: false, message: '更新角色失败' } + } finally { + isLoading.value = false + } + } + + // 删除游戏角色 - 移除API调用,同时删除对应token + const deleteGameRole = async (roleId) => { + try { + isLoading.value = true + + gameRoles.value = gameRoles.value.filter(role => role.id !== roleId) + localStorage.setItem('gameRoles', JSON.stringify(gameRoles.value)) + + // 删除对应的token和WebSocket连接 + localTokenStore.removeGameToken(roleId) + + // 如果删除的是当前选中角色,清除选中状态 + if (selectedRole.value && selectedRole.value.id === roleId) { + selectedRole.value = null + localStorage.removeItem('selectedRole') + } + + return { success: true, message: '删除角色成功,已清理相关token' } + } catch (error) { + console.error('删除游戏角色失败:', error) + return { success: false, message: '删除角色失败' } + } finally { + isLoading.value = false + } + } + + // 选择角色 - 添加WebSocket连接功能 + const selectRole = (role) => { + selectedRole.value = role + localStorage.setItem('selectedRole', JSON.stringify(role)) + + // 自动建立WebSocket连接 + const tokenData = localTokenStore.getGameToken(role.id) + if (tokenData && tokenData.token) { + try { + localTokenStore.createWebSocketConnection( + role.id, + tokenData.token, + tokenData.wsUrl + ) + console.log(`已为角色 ${role.name} 建立WebSocket连接`) + } catch (error) { + console.error(`建立WebSocket连接失败 [${role.name}]:`, error) + } + } + } + + // 初始化数据 + const initGameRoles = () => { + const cachedRoles = localStorage.getItem('gameRoles') + const cachedSelectedRole = localStorage.getItem('selectedRole') + + if (cachedRoles) { + try { + gameRoles.value = JSON.parse(cachedRoles) + } catch (error) { + console.error('解析缓存的游戏角色数据失败:', error) + } + } + + if (cachedSelectedRole) { + try { + selectedRole.value = JSON.parse(cachedSelectedRole) + } catch (error) { + console.error('解析缓存的选中角色数据失败:', error) + } + } + } + + return { + // 状态 + gameRoles, + isLoading, + selectedRole, + + // 方法 + fetchGameRoles, + addGameRole, + updateGameRole, + deleteGameRole, + selectRole, + initGameRoles + } +}) \ No newline at end of file diff --git a/src/stores/localTokenManager.js b/src/stores/localTokenManager.js new file mode 100644 index 0000000..c71357d --- /dev/null +++ b/src/stores/localTokenManager.js @@ -0,0 +1,454 @@ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' + +/** + * 本地Token管理器 + * 用于管理用户认证token和游戏角色token的本地存储 + */ +export const useLocalTokenStore = defineStore('localToken', () => { + // 状态 + const userToken = ref(localStorage.getItem('userToken') || null) + const gameTokens = ref(JSON.parse(localStorage.getItem('gameTokens') || '{}')) + const wsConnections = ref({}) // WebSocket连接状态 + + // 计算属性 + const isUserAuthenticated = computed(() => !!userToken.value) + const hasGameTokens = computed(() => Object.keys(gameTokens.value).length > 0) + + // 用户认证token管理 + const setUserToken = (token) => { + userToken.value = token + localStorage.setItem('userToken', token) + } + + const clearUserToken = () => { + userToken.value = null + localStorage.removeItem('userToken') + } + + // 游戏token管理 + const addGameToken = (roleId, tokenData) => { + const newTokenData = { + ...tokenData, + roleId, + createdAt: new Date().toISOString(), + lastUsed: new Date().toISOString() + } + + gameTokens.value[roleId] = newTokenData + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + + return newTokenData + } + + const getGameToken = (roleId) => { + const token = gameTokens.value[roleId] + if (token) { + // 更新最后使用时间 + token.lastUsed = new Date().toISOString() + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + } + return token + } + + const updateGameToken = (roleId, updates) => { + if (gameTokens.value[roleId]) { + gameTokens.value[roleId] = { + ...gameTokens.value[roleId], + ...updates, + updatedAt: new Date().toISOString() + } + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + } + } + + const removeGameToken = (roleId) => { + delete gameTokens.value[roleId] + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + + // 同时断开对应的WebSocket连接 + if (wsConnections.value[roleId]) { + closeWebSocketConnection(roleId) + } + } + + const clearAllGameTokens = () => { + // 关闭所有WebSocket连接 + Object.keys(wsConnections.value).forEach(roleId => { + closeWebSocketConnection(roleId) + }) + + gameTokens.value = {} + localStorage.removeItem('gameTokens') + } + + // WebSocket连接管理 - 使用新的WsAgent + const createWebSocketConnection = async (roleId, base64Token, customWsUrl = null) => { + if (wsConnections.value[roleId]) { + closeWebSocketConnection(roleId) + } + + try { + // 动态导入WebSocket客户端 + const { WsAgent } = await import('../utils/wsAgent.js') + const { gameCommands } = await import('../utils/gameCommands.js') + + // 解析Base64获取实际Token + let actualToken = base64Token + + // 尝试解析Base64获取实际token + try { + const cleanBase64 = base64Token.replace(/^data:.*base64,/, '').trim() + const decoded = atob(cleanBase64) + + // 尝试解析为JSON获取token字段 + try { + const tokenData = JSON.parse(decoded) + actualToken = tokenData.token || tokenData.gameToken || decoded + } catch { + // 如果不是JSON,直接使用解码后的字符串 + actualToken = decoded + } + } catch (error) { + console.warn('Base64解析失败,使用原始token:', error.message) + actualToken = base64Token + } + + // 创建WebSocket客户端实例 + const wsAgent = new WsAgent({ + heartbeatInterval: 2000, + queueInterval: 50, + channel: 'x', // 使用x通道 + autoReconnect: true, + maxReconnectAttempts: 5 + }) + + // 设置事件监听器 + wsAgent.onOpen = () => { + console.log(`✅ WebSocket连接已建立: ${roleId}`) + + // 更新连接状态 + wsConnections.value[roleId].status = 'connected' + wsConnections.value[roleId].connectedAt = new Date().toISOString() + + // 发送初始化命令 + setTimeout(() => { + // 获取角色信息 + wsAgent.send(gameCommands.role_getroleinfo(0, 0, { roleId })) + + // 获取数据包版本 + wsAgent.send(gameCommands.system_getdatabundlever()) + }, 1000) + } + + wsAgent.onMessage = (message) => { + console.log(`📨 收到消息 [${roleId}]:`, message) + + // 处理不同类型的消息 + if (message.cmd) { + handleGameMessage(roleId, message) + } + } + + wsAgent.onError = (error) => { + console.error(`❌ WebSocket错误 [${roleId}]:`, error) + if (wsConnections.value[roleId]) { + wsConnections.value[roleId].status = 'error' + wsConnections.value[roleId].lastError = error.message + } + } + + wsAgent.onClose = (event) => { + console.log(`🔌 WebSocket连接已关闭 [${roleId}]:`, event.code, event.reason) + if (wsConnections.value[roleId]) { + wsConnections.value[roleId].status = 'disconnected' + } + } + + wsAgent.onReconnect = (attempt) => { + console.log(`🔄 WebSocket重连中 [${roleId}] 第${attempt}次`) + if (wsConnections.value[roleId]) { + wsConnections.value[roleId].status = 'reconnecting' + wsConnections.value[roleId].reconnectAttempt = attempt + } + } + + // 构建WebSocket URL + const baseWsUrl = 'wss://xxz-xyzw.hortorgames.com/agent' + const wsUrl = customWsUrl || WsAgent.buildUrl(baseWsUrl, { + p: actualToken, + e: 'x', + lang: 'chinese' + }) + + // 保存连接信息 + wsConnections.value[roleId] = { + agent: wsAgent, + gameCommands, + status: 'connecting', + roleId, + wsUrl, + actualToken, + createdAt: new Date().toISOString(), + lastError: null, + reconnectAttempt: 0 + } + + // 建立连接 + await wsAgent.connect(wsUrl) + + return wsAgent + } catch (error) { + console.error(`创建WebSocket连接失败 [${roleId}]:`, error) + if (wsConnections.value[roleId]) { + wsConnections.value[roleId].status = 'error' + wsConnections.value[roleId].lastError = error.message + } + return null + } + } + + // 处理游戏消息 + const handleGameMessage = (roleId, message) => { + const { cmd, body } = message + + switch (cmd) { + case 'role_getroleinfo': + console.log(`角色信息 [${roleId}]:`, body) + break + + case 'system_getdatabundlever': + console.log(`数据包版本 [${roleId}]:`, body) + break + + case 'task_claimdailyreward': + console.log(`每日任务奖励 [${roleId}]:`, body) + break + + case 'system_signinreward': + console.log(`签到奖励 [${roleId}]:`, body) + break + + default: + console.log(`未处理的消息 [${roleId}] ${cmd}:`, body) + } + } + + const closeWebSocketConnection = (roleId) => { + const connection = wsConnections.value[roleId] + if (connection) { + // 如果是新的WsAgent实例 + if (connection.agent && typeof connection.agent.close === 'function') { + connection.agent.close() + } + // 如果是旧的WebSocket实例 + else if (connection.connection && typeof connection.connection.close === 'function') { + connection.connection.close() + } + + delete wsConnections.value[roleId] + } + } + + const getWebSocketStatus = (roleId) => { + return wsConnections.value[roleId]?.status || 'disconnected' + } + + // 发送游戏命令 + const sendGameCommand = (roleId, commandName, params = {}) => { + const connection = wsConnections.value[roleId] + if (!connection || !connection.agent) { + console.warn(`角色 ${roleId} 的WebSocket连接不存在`) + return false + } + + if (connection.status !== 'connected') { + console.warn(`角色 ${roleId} 的WebSocket未连接`) + return false + } + + try { + const { gameCommands } = connection + + if (typeof gameCommands[commandName] === 'function') { + const command = gameCommands[commandName](0, 0, params) + connection.agent.send(command) + console.log(`发送游戏命令 [${roleId}] ${commandName}:`, params) + return true + } else { + console.error(`未知的游戏命令: ${commandName}`) + return false + } + } catch (error) { + console.error(`发送游戏命令失败 [${roleId}] ${commandName}:`, error) + return false + } + } + + // 发送游戏命令并等待响应 + const sendGameCommandWithPromise = async (roleId, commandName, params = {}, timeout = 8000) => { + const connection = wsConnections.value[roleId] + if (!connection || !connection.agent) { + throw new Error(`角色 ${roleId} 的WebSocket连接不存在`) + } + + if (connection.status !== 'connected') { + throw new Error(`角色 ${roleId} 的WebSocket未连接`) + } + + try { + const { gameCommands } = connection + + if (typeof gameCommands[commandName] === 'function') { + const response = await connection.agent.sendWithPromise({ + cmd: commandName, + body: params, + timeout + }) + console.log(`游戏命令响应 [${roleId}] ${commandName}:`, response) + return response + } else { + throw new Error(`未知的游戏命令: ${commandName}`) + } + } catch (error) { + console.error(`发送游戏命令失败 [${roleId}] ${commandName}:`, error) + throw error + } + } + + // 获取连接详细状态 + const getWebSocketDetails = (roleId) => { + const connection = wsConnections.value[roleId] + if (!connection) { + return { + status: 'disconnected', + roleId, + error: '连接不存在' + } + } + + return { + status: connection.status, + roleId: connection.roleId, + wsUrl: connection.wsUrl, + connectedAt: connection.connectedAt, + createdAt: connection.createdAt, + lastError: connection.lastError, + reconnectAttempt: connection.reconnectAttempt, + agentStatus: connection.agent ? connection.agent.getStatus() : null + } + } + + // 批量导入/导出功能 + const exportTokens = () => { + return { + userToken: userToken.value, + gameTokens: gameTokens.value, + exportedAt: new Date().toISOString() + } + } + + const importTokens = (tokenData) => { + try { + if (tokenData.userToken) { + setUserToken(tokenData.userToken) + } + + if (tokenData.gameTokens) { + gameTokens.value = tokenData.gameTokens + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + } + + return { success: true, message: 'Token导入成功' } + } catch (error) { + console.error('Token导入失败:', error) + return { success: false, message: '导入失败:数据格式错误' } + } + } + + // 清理过期token + const cleanExpiredTokens = () => { + const now = new Date() + const oneDayAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000) + + const cleanedTokens = {} + let cleanedCount = 0 + + Object.entries(gameTokens.value).forEach(([roleId, tokenData]) => { + const lastUsed = new Date(tokenData.lastUsed || tokenData.createdAt) + if (lastUsed > oneDayAgo) { + cleanedTokens[roleId] = tokenData + } else { + cleanedCount++ + // 关闭对应的WebSocket连接 + if (wsConnections.value[roleId]) { + closeWebSocketConnection(roleId) + } + } + }) + + gameTokens.value = cleanedTokens + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + + return cleanedCount + } + + // 初始化 + const initTokenManager = () => { + // 从localStorage恢复数据 + const savedUserToken = localStorage.getItem('userToken') + const savedGameTokens = localStorage.getItem('gameTokens') + + if (savedUserToken) { + userToken.value = savedUserToken + } + + if (savedGameTokens) { + try { + gameTokens.value = JSON.parse(savedGameTokens) + } catch (error) { + console.error('解析游戏token数据失败:', error) + gameTokens.value = {} + } + } + + // 清理过期token + cleanExpiredTokens() + } + + return { + // 状态 + userToken, + gameTokens, + wsConnections, + + // 计算属性 + isUserAuthenticated, + hasGameTokens, + + // 用户token方法 + setUserToken, + clearUserToken, + + // 游戏token方法 + addGameToken, + getGameToken, + updateGameToken, + removeGameToken, + clearAllGameTokens, + + // WebSocket方法 + createWebSocketConnection, + closeWebSocketConnection, + getWebSocketStatus, + getWebSocketDetails, + sendGameCommand, + sendGameCommandWithPromise, + + // 工具方法 + exportTokens, + importTokens, + cleanExpiredTokens, + initTokenManager + } +}) \ No newline at end of file diff --git a/src/stores/tokenStore.js b/src/stores/tokenStore.js new file mode 100644 index 0000000..1a64a09 --- /dev/null +++ b/src/stores/tokenStore.js @@ -0,0 +1,792 @@ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { bonProtocol, GameMessages, g_utils } from '../utils/bonProtocol.js' +import { XyzwWebSocketClient } from '../utils/xyzwWebSocket.js' + +/** + * 重构后的Token管理存储 + * 以名称-token列表形式管理多个游戏角色 + */ +export const useTokenStore = defineStore('tokens', () => { + // 状态 + const gameTokens = ref(JSON.parse(localStorage.getItem('gameTokens') || '[]')) + const selectedTokenId = ref(localStorage.getItem('selectedTokenId') || null) + const wsConnections = ref({}) // WebSocket连接状态 + + // 游戏数据存储 + const gameData = ref({ + roleInfo: null, + legionInfo: null, + presetTeam: null, + lastUpdated: null + }) + + // 计算属性 + const hasTokens = computed(() => gameTokens.value.length > 0) + const selectedToken = computed(() => + gameTokens.value.find(token => token.id === selectedTokenId.value) + ) + + // Token管理 + const addToken = (tokenData) => { + const newToken = { + id: 'token_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9), + name: tokenData.name, + token: tokenData.token, // 保存原始Base64 token + wsUrl: tokenData.wsUrl || null, // 可选的自定义WebSocket URL + server: tokenData.server || '', + level: tokenData.level || 1, + profession: tokenData.profession || '', + createdAt: new Date().toISOString(), + lastUsed: new Date().toISOString(), + isActive: true + } + + gameTokens.value.push(newToken) + saveTokensToStorage() + + return newToken + } + + const updateToken = (tokenId, updates) => { + const index = gameTokens.value.findIndex(token => token.id === tokenId) + if (index !== -1) { + gameTokens.value[index] = { + ...gameTokens.value[index], + ...updates, + updatedAt: new Date().toISOString() + } + saveTokensToStorage() + return true + } + return false + } + + const removeToken = (tokenId) => { + gameTokens.value = gameTokens.value.filter(token => token.id !== tokenId) + saveTokensToStorage() + + // 关闭对应的WebSocket连接 + if (wsConnections.value[tokenId]) { + closeWebSocketConnection(tokenId) + } + + // 如果删除的是当前选中token,清除选中状态 + if (selectedTokenId.value === tokenId) { + selectedTokenId.value = null + localStorage.removeItem('selectedTokenId') + } + + return true + } + + const selectToken = (tokenId) => { + const token = gameTokens.value.find(t => t.id === tokenId) + if (token) { + selectedTokenId.value = tokenId + localStorage.setItem('selectedTokenId', tokenId) + + // 更新最后使用时间 + updateToken(tokenId, { lastUsed: new Date().toISOString() }) + + // 自动建立WebSocket连接 + createWebSocketConnection(tokenId, token.token, token.wsUrl) + + return token + } + return null + } + + // 辅助函数:分析数据结构 + const analyzeDataStructure = (obj, depth = 0, maxDepth = 3) => { + if (depth > maxDepth || !obj || typeof obj !== 'object') { + return typeof obj + } + + const structure = {} + for (const [key, value] of Object.entries(obj)) { + if (Array.isArray(value)) { + structure[key] = `Array[${value.length}]${value.length > 0 ? `: ${analyzeDataStructure(value[0], depth + 1, maxDepth)}` : ''}` + } else if (typeof value === 'object' && value !== null) { + structure[key] = analyzeDataStructure(value, depth + 1, maxDepth) + } else { + structure[key] = typeof value + } + } + return structure + } + + // 辅助函数:尝试解析队伍数据 + const tryParseTeamData = (data, cmd) => { + console.log(`👥 尝试解析队伍数据 [${cmd}]:`, data) + + // 查找队伍相关字段 + const teamFields = [] + const scanForTeamData = (obj, path = '') => { + if (!obj || typeof obj !== 'object') return + + for (const [key, value] of Object.entries(obj)) { + const currentPath = path ? `${path}.${key}` : key + + if (key.toLowerCase().includes('team') || + key.toLowerCase().includes('preset') || + key.toLowerCase().includes('formation') || + key.toLowerCase().includes('lineup')) { + teamFields.push({ + path: currentPath, + key: key, + value: value, + type: typeof value, + isArray: Array.isArray(value) + }) + } + + if (typeof value === 'object' && value !== null && !Array.isArray(value)) { + scanForTeamData(value, currentPath) + } + } + } + + scanForTeamData(data) + + if (teamFields.length > 0) { + console.log(`👥 找到 ${teamFields.length} 个队伍相关字段:`, teamFields) + + // 尝试更新游戏数据 + teamFields.forEach(field => { + if (field.key === 'presetTeamInfo' || field.path.includes('presetTeamInfo')) { + console.log(`👥 发现预设队伍信息,准备更新:`, field.value) + if (!gameData.value.presetTeam) { + gameData.value.presetTeam = {} + } + gameData.value.presetTeam.presetTeamInfo = field.value + gameData.value.lastUpdated = new Date().toISOString() + } + }) + } else { + console.log(`👥 未找到明显的队伍字段,完整数据结构:`, analyzeDataStructure(data)) + } + } + + // 游戏消息处理 + const handleGameMessage = (tokenId, message) => { + try { + if (!message || message.error) { + console.warn(`⚠️ 消息处理跳过 [${tokenId}]:`, message?.error || '无效消息') + return + } + + const cmd = message.cmd?.toLowerCase() + // 优先使用rawData(ProtoMsg自动解码),然后decodedBody(手动解码),最后body(原始数据) + const body = message.rawData !== undefined ? message.rawData : + message.decodedBody !== undefined ? message.decodedBody : + message.body + + console.log(`📋 处理消息 [${tokenId}] ${cmd}:`, { + hasRawData: message.rawData !== undefined, + hasDecodedBody: message.decodedBody !== undefined, + hasBody: message.body !== undefined, + bodyType: body ? typeof body : 'undefined', + bodyContent: body, + originalCmd: message.cmd, + fullMessage: message + }) + + // 记录所有消息的原始命令名 + console.log(`📨 收到消息 [${tokenId}] 原始cmd: "${message.cmd}", 处理cmd: "${cmd}"`) + + // 特别记录所有包含tower的消息 + if (cmd && cmd.includes('tower')) { + console.log(`🗼 发现塔相关消息 [${tokenId}] ${cmd}:`, message) + } + + // 处理角色信息 - 支持多种可能的响应命令 + if (cmd === 'role_getroleinfo' || cmd === 'role_getroleinforesp' || cmd.includes('role') && cmd.includes('info')) { + console.log(`📊 匹配到角色信息命令: ${cmd}`) + + if (body) { + gameData.value.roleInfo = body + gameData.value.lastUpdated = new Date().toISOString() + console.log('📊 角色信息已更新:', body) + console.log('📊 角色信息类型:', typeof body) + console.log('📊 角色信息内容概览:', Object.keys(body || {})) + + // 特别检查塔信息 + if (body.role?.tower) { + console.log('🗼 在角色信息中找到塔信息:', body.role.tower) + } else if (body.tower) { + console.log('🗼 在响应根级别找到塔信息:', body.tower) + } else { + console.log('🗼 未找到塔信息在角色数据中') + console.log('📊 角色数据结构:', body.role ? Object.keys(body.role) : '没有role对象') + } + } else { + console.log('📊 角色信息响应body为空') + } + } + + // 处理军团信息 + else if (cmd === 'legion_getinfo') { + if (body) { + gameData.value.legionInfo = body + console.log('🏛️ 军团信息已更新:', body) + } + } + + // 处理队伍信息 - 支持多种队伍相关响应 + else if (cmd === 'presetteam_getteam' || cmd === 'presetteam_getteamresp' || + cmd === 'presetteam_setteam' || cmd === 'presetteam_setteamresp' || + cmd === 'presetteam_saveteam' || cmd === 'presetteam_saveteamresp' || + cmd === 'role_gettargetteam' || cmd === 'role_gettargetteamresp' || + (cmd && cmd.includes('presetteam')) || (cmd && cmd.includes('team'))) { + console.log(`👥 匹配到队伍信息命令: ${cmd}`) + + if (body) { + // 更新队伍数据 + if (!gameData.value.presetTeam) { + gameData.value.presetTeam = {} + } + + // 根据不同的响应类型处理数据 + if (cmd.includes('getteam')) { + // 获取队伍信息响应 + gameData.value.presetTeam = { ...gameData.value.presetTeam, ...body } + } else if (cmd.includes('setteam') || cmd.includes('saveteam')) { + // 设置/保存队伍响应 - 可能只返回确认信息 + if (body.presetTeamInfo) { + gameData.value.presetTeam.presetTeamInfo = body.presetTeamInfo + } + // 合并其他队伍相关数据 + Object.keys(body).forEach(key => { + if (key.includes('team') || key.includes('Team')) { + gameData.value.presetTeam[key] = body[key] + } + }) + } else { + // 其他队伍相关响应 + gameData.value.presetTeam = { ...gameData.value.presetTeam, ...body } + } + + gameData.value.lastUpdated = new Date().toISOString() + console.log('👥 队伍信息已更新:', { + cmd: cmd, + updatedData: gameData.value.presetTeam, + bodyKeys: Object.keys(body), + bodyContent: body + }) + + // 详细日志队伍数据结构 + if (gameData.value.presetTeam.presetTeamInfo) { + console.log('👥 队伍详细结构:', { + teamCount: Object.keys(gameData.value.presetTeam.presetTeamInfo).length, + teamIds: Object.keys(gameData.value.presetTeam.presetTeamInfo), + useTeamId: gameData.value.presetTeam.presetTeamInfo.useTeamId, + sampleTeam: gameData.value.presetTeam.presetTeamInfo[1] || gameData.value.presetTeam.presetTeamInfo[Object.keys(gameData.value.presetTeam.presetTeamInfo)[0]] + }) + } + } else { + console.log('👥 队伍信息响应body为空') + } + } + + // 处理爬塔响应 + else if (cmd === 'fight_starttower' || cmd === 'fight_starttowerresp') { + if (body) { + console.log('🗼 爬塔响应:', body) + // 爬塔后立即更新角色信息和塔信息 + setTimeout(() => { + console.log('🗼 爬塔后自动更新数据') + try { + const connection = wsConnections.value[tokenId] + if (connection && connection.status === 'connected' && connection.client) { + // 获取最新角色信息 + console.log('🗼 正在请求角色信息...') + connection.client.send('role_getroleinfo', {}) + } else { + console.warn('🗼 WebSocket未连接,无法更新数据') + } + } catch (error) { + console.warn('爬塔后更新数据失败:', error) + } + }, 1000) + } + } + + // 处理心跳响应 + else if (cmd === '_sys/ack') { + console.log(`💗 心跳响应 [${tokenId}]`) + } + + // 处理其他消息 + else { + console.log(`📋 收到游戏消息 [${tokenId}] ${cmd}:`, body) + + // 特别关注队伍相关的未处理消息 + if (cmd && (cmd.includes('team') || cmd.includes('preset') || cmd.includes('formation'))) { + console.log(`👥 未处理的队伍相关消息 [${tokenId}] ${cmd}:`, { + originalMessage: message, + parsedBody: body, + messageKeys: Object.keys(message || {}), + bodyStructure: body ? analyzeDataStructure(body) : null + }) + + // 尝试自动解析队伍数据 + if (body && typeof body === 'object') { + tryParseTeamData(body, cmd) + } + } + + // 特别关注塔相关的未处理消息 + if (cmd && cmd.includes('tower')) { + console.log(`🗼 未处理的塔相关消息 [${tokenId}] ${cmd}:`, { + originalMessage: message, + parsedBody: body, + messageKeys: Object.keys(message || {}) + }) + } + } + + } catch (error) { + console.error('处理游戏消息失败:', error) + } + } + + // Base64解析功能 + const parseBase64Token = (base64String) => { + try { + // 移除可能的前缀和空格 + const cleanBase64 = base64String.replace(/^data:.*base64,/, '').trim() + + // 解码base64 + const decoded = atob(cleanBase64) + + // 尝试解析为JSON + let tokenData + try { + tokenData = JSON.parse(decoded) + } catch { + // 如果不是JSON,当作纯token字符串处理 + tokenData = { token: decoded } + } + + return { + success: true, + data: tokenData + } + } catch (error) { + return { + success: false, + error: '解析失败:' + error.message + } + } + } + + const importBase64Token = (name, base64String, additionalInfo = {}) => { + const parseResult = parseBase64Token(base64String) + + if (!parseResult.success) { + return parseResult + } + + const tokenData = { + name, + token: parseResult.data.token || parseResult.data.gameToken || base64String, + ...additionalInfo, + ...parseResult.data // 解析出的数据覆盖手动输入 + } + + const newToken = addToken(tokenData) + + return { + success: true, + data: newToken, + message: `Token "${name}" 导入成功` + } + } + + // WebSocket连接管理 + const createWebSocketConnection = (tokenId, base64Token, customWsUrl = null) => { + if (wsConnections.value[tokenId]) { + closeWebSocketConnection(tokenId) + } + + try { + // 解析Base64获取实际Token + let actualToken = base64Token + + // 尝试解析Base64获取实际token + try { + const cleanBase64 = base64Token.replace(/^data:.*base64,/, '').trim() + const decoded = atob(cleanBase64) + + // 尝试解析为JSON获取token字段 + try { + const tokenData = JSON.parse(decoded) + actualToken = tokenData.token || tokenData.gameToken || decoded + } catch { + // 如果不是JSON,直接使用解码后的字符串 + actualToken = decoded + } + } catch (error) { + console.warn('Base64解析失败,使用原始token:', error.message) + actualToken = base64Token + } + + // 使用固定的WebSocket基础地址,将token带入占位符 + const baseWsUrl = 'wss://xxz-xyzw.hortorgames.com/agent?p=%s&e=x&lang=chinese' + const wsUrl = customWsUrl || baseWsUrl.replace('%s', encodeURIComponent(actualToken)) + + console.log(`🔗 创建WebSocket连接:`, wsUrl) + console.log(`🎯 Token ID: ${tokenId}`) + console.log(`🔑 使用Token: ${actualToken.substring(0, 20)}...`) + + // 检查g_utils结构 + console.log('🔍 g_utils结构检查:', { + hasGetEnc: !!g_utils.getEnc, + hasEncode: !!g_utils.encode, + hasParse: !!g_utils.parse, + hasBon: !!g_utils.bon, + bonHasDecode: !!(g_utils.bon && g_utils.bon.decode) + }) + + // 创建新的WebSocket客户端 + const wsClient = new XyzwWebSocketClient({ + url: wsUrl, + utils: g_utils, + heartbeatMs: 5000 // 5秒心跳间隔 + }) + + // 设置连接状态 + wsConnections.value[tokenId] = { + client: wsClient, + status: 'connecting', + tokenId, + wsUrl, + actualToken, + connectedAt: null, + lastMessage: null, + lastError: null + } + + // 设置事件监听 + wsClient.onConnect = () => { + console.log(`✅ WebSocket连接已建立: ${tokenId}`) + if (wsConnections.value[tokenId]) { + wsConnections.value[tokenId].status = 'connected' + wsConnections.value[tokenId].connectedAt = new Date().toISOString() + } + } + + wsClient.onDisconnect = (event) => { + console.log(`🔌 WebSocket连接已断开: ${tokenId}`, event) + if (wsConnections.value[tokenId]) { + wsConnections.value[tokenId].status = 'disconnected' + } + } + + wsClient.onError = (error) => { + console.error(`❌ WebSocket错误 [${tokenId}]:`, error) + if (wsConnections.value[tokenId]) { + wsConnections.value[tokenId].status = 'error' + wsConnections.value[tokenId].lastError = { + timestamp: new Date().toISOString(), + error: error.toString(), + url: wsUrl + } + } + } + + // 设置消息监听 + wsClient.setMessageListener((message) => { + console.log(`📨 收到消息 [${tokenId}]:`, message) + + // 更新连接状态中的最后接收消息 + if (wsConnections.value[tokenId]) { + wsConnections.value[tokenId].lastMessage = { + timestamp: new Date().toISOString(), + data: message + } + } + + // 处理游戏消息 + handleGameMessage(tokenId, message) + }) + + // 开启调试模式 + wsClient.setShowMsg(true) + + // 初始化连接 + wsClient.init() + + return wsClient + } catch (error) { + console.error(`创建WebSocket连接失败 [${tokenId}]:`, error) + return null + } + } + + const closeWebSocketConnection = (tokenId) => { + const connection = wsConnections.value[tokenId] + if (connection && connection.client) { + connection.client.disconnect() + delete wsConnections.value[tokenId] + } + } + + const getWebSocketStatus = (tokenId) => { + return wsConnections.value[tokenId]?.status || 'disconnected' + } + + // 获取WebSocket客户端 + const getWebSocketClient = (tokenId) => { + return wsConnections.value[tokenId]?.client || null + } + + + // 发送消息到WebSocket + const sendMessage = (tokenId, cmd, params = {}, options = {}) => { + const connection = wsConnections.value[tokenId] + if (!connection || connection.status !== 'connected') { + console.error(`❌ WebSocket未连接,无法发送消息 [${tokenId}]`) + return false + } + + try { + const client = connection.client + if (!client) { + console.error(`❌ WebSocket客户端不存在 [${tokenId}]`) + return false + } + + client.send(cmd, params, options) + console.log(`📤 发送消息 [${tokenId}]: ${cmd}`, params) + + return true + } catch (error) { + console.error(`❌ 发送消息失败 [${tokenId}]:`, error) + return false + } + } + + // Promise版发送消息 + const sendMessageWithPromise = async (tokenId, cmd, params = {}, timeout = 5000) => { + const connection = wsConnections.value[tokenId] + if (!connection || connection.status !== 'connected') { + throw new Error(`WebSocket未连接 [${tokenId}]`) + } + + const client = connection.client + if (!client) { + throw new Error(`WebSocket客户端不存在 [${tokenId}]`) + } + + return await client.sendWithPromise(cmd, params, timeout) + } + + // 发送心跳消息 + const sendHeartbeat = (tokenId) => { + return sendMessage(tokenId, 'heart_beat') + } + + // 发送获取角色信息请求 + const sendGetRoleInfo = (tokenId, params = {}) => { + return sendMessageWithPromise(tokenId, 'role_getroleinfo', params) + } + + // 发送获取数据版本请求 + const sendGetDataBundleVersion = (tokenId, params = {}) => { + return sendMessageWithPromise(tokenId, 'system_getdatabundlever', params) + } + + // 发送签到请求 + const sendSignIn = (tokenId) => { + return sendMessageWithPromise(tokenId, 'system_signinreward') + } + + // 发送领取日常任务奖励 + const sendClaimDailyReward = (tokenId, rewardId = 0) => { + return sendMessageWithPromise(tokenId, 'task_claimdailyreward', { rewardId }) + } + + // 发送获取队伍信息 + const sendGetTeamInfo = (tokenId, params = {}) => { + return sendMessageWithPromise(tokenId, 'presetteam_getteam', params) + } + + // 发送自定义游戏消息 + const sendGameMessage = (tokenId, cmd, params = {}, options = {}) => { + if (options.usePromise) { + return sendMessageWithPromise(tokenId, cmd, params, options.timeout) + } else { + return sendMessage(tokenId, cmd, params, options) + } + } + + // 获取当前塔层数 + const getCurrentTowerLevel = () => { + try { + // 从游戏数据中获取塔信息 + const roleInfo = gameData.value.roleInfo + if (!roleInfo || !roleInfo.role) { + console.warn('⚠️ 角色信息不存在') + return null + } + + const tower = roleInfo.role.tower + if (!tower) { + console.warn('⚠️ 塔信息不存在') + return null + } + + // 可能的塔层数字段(根据实际数据结构调整) + const level = tower.level || tower.currentLevel || tower.floor || tower.stage + + console.log('🗼 当前塔层数:', level, '塔信息:', tower) + return level + } catch (error) { + console.error('❌ 获取塔层数失败:', error) + return null + } + } + + // 获取详细塔信息 + const getTowerInfo = () => { + try { + const roleInfo = gameData.value.roleInfo + if (!roleInfo || !roleInfo.role) { + return null + } + + return roleInfo.role.tower || null + } catch (error) { + console.error('❌ 获取塔信息失败:', error) + return null + } + } + + // 工具方法 + const exportTokens = () => { + return { + tokens: gameTokens.value, + exportedAt: new Date().toISOString(), + version: '2.0' + } + } + + const importTokens = (data) => { + try { + if (data.tokens && Array.isArray(data.tokens)) { + gameTokens.value = data.tokens + saveTokensToStorage() + return { success: true, message: `成功导入 ${data.tokens.length} 个Token` } + } else { + return { success: false, message: '导入数据格式错误' } + } + } catch (error) { + return { success: false, message: '导入失败:' + error.message } + } + } + + const clearAllTokens = () => { + // 关闭所有WebSocket连接 + Object.keys(wsConnections.value).forEach(tokenId => { + closeWebSocketConnection(tokenId) + }) + + gameTokens.value = [] + selectedTokenId.value = null + localStorage.removeItem('gameTokens') + localStorage.removeItem('selectedTokenId') + } + + const cleanExpiredTokens = () => { + const now = new Date() + const oneDayAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000) + + const cleanedTokens = gameTokens.value.filter(token => { + const lastUsed = new Date(token.lastUsed || token.createdAt) + return lastUsed > oneDayAgo + }) + + const cleanedCount = gameTokens.value.length - cleanedTokens.length + gameTokens.value = cleanedTokens + saveTokensToStorage() + + return cleanedCount + } + + const saveTokensToStorage = () => { + localStorage.setItem('gameTokens', JSON.stringify(gameTokens.value)) + } + + // 初始化 + const initTokenStore = () => { + // 恢复数据 + const savedTokens = localStorage.getItem('gameTokens') + const savedSelectedId = localStorage.getItem('selectedTokenId') + + if (savedTokens) { + try { + gameTokens.value = JSON.parse(savedTokens) + } catch (error) { + console.error('解析Token数据失败:', error) + gameTokens.value = [] + } + } + + if (savedSelectedId) { + selectedTokenId.value = savedSelectedId + } + + // 清理过期token + cleanExpiredTokens() + } + + return { + // 状态 + gameTokens, + selectedTokenId, + wsConnections, + gameData, + + // 计算属性 + hasTokens, + selectedToken, + + // Token管理方法 + addToken, + updateToken, + removeToken, + selectToken, + + // Base64解析方法 + parseBase64Token, + importBase64Token, + + // WebSocket方法 + createWebSocketConnection, + closeWebSocketConnection, + getWebSocketStatus, + getWebSocketClient, + sendMessage, + sendMessageWithPromise, + sendHeartbeat, + sendGetRoleInfo, + sendGetDataBundleVersion, + sendSignIn, + sendClaimDailyReward, + sendGetTeamInfo, + sendGameMessage, + + // 工具方法 + exportTokens, + importTokens, + clearAllTokens, + cleanExpiredTokens, + initTokenStore, + + // 塔信息方法 + getCurrentTowerLevel, + getTowerInfo + } +}) diff --git a/src/utils/bonProtocol.js b/src/utils/bonProtocol.js new file mode 100644 index 0000000..882d7a2 --- /dev/null +++ b/src/utils/bonProtocol.js @@ -0,0 +1,779 @@ +/** + * BON (Binary Object Notation) 协议实现 + * 基于提供的真实 BON 源码重新实现 + */ +import lz4 from 'lz4js'; + +// ----------------------------- +// BON 编解码器核心实现 +// ----------------------------- + +export class Int64 { + constructor(high, low) { + this.high = high; + this.low = low; + } +} + +export class DataReader { + constructor(bytes) { + this._data = bytes || new Uint8Array(0); + this._view = null; + this.position = 0; + } + + get data() { return this._data; } + get dataView() { + return this._view || (this._view = new DataView(this._data.buffer, this._data.byteOffset, this._data.byteLength)); + } + + reset(bytes) { + this._data = bytes; + this.position = 0; + this._view = null; + } + + validate(n) { + if (this.position + n > this._data.length) { + console.error('read eof'); + return false; + } + return true; + } + + readUInt8() { + if (!this.validate(1)) return; + return this._data[this.position++]; + } + + readInt16() { + if (!this.validate(2)) return; + const v = this._data[this.position++] | (this._data[this.position++] << 8); + return (v << 16) >> 16; + } + + readInt32() { + if (!this.validate(4)) return; + const v = this._data[this.position++] | (this._data[this.position++] << 8) | (this._data[this.position++] << 16) | (this._data[this.position++] << 24); + return v | 0; + } + + readInt64() { + const lo = this.readInt32(); + if (lo === undefined) return; + let _lo = lo; + if (_lo < 0) _lo += 0x100000000; + const hi = this.readInt32(); + if (hi === undefined) return; + return _lo + 0x100000000 * hi; + } + + readFloat32() { + if (!this.validate(4)) return; + const v = this.dataView.getFloat32(this.position, true); + this.position += 4; + return v; + } + + readFloat64() { + if (!this.validate(8)) return; + const v = this.dataView.getFloat64(this.position, true); + this.position += 8; + return v; + } + + read7BitInt() { + let value = 0; + let shift = 0; + let b = 0; + let count = 0; + do { + if (count++ === 35) throw new Error('Format_Bad7BitInt32'); + b = this.readUInt8(); + value |= (b & 0x7F) << shift; + shift += 7; + } while ((b & 0x80) !== 0); + return value >>> 0; + } + + readUTF() { + const len = this.read7BitInt(); + return this.readUTFBytes(len); + } + + readUint8Array(length, copy = false) { + const start = this.position; + const end = start + length; + const out = copy ? this._data.slice(start, end) : this._data.subarray(start, end); + this.position = end; + return out; + } + + readUTFBytes(length) { + if (length === 0) return ''; + if (!this.validate(length)) return; + const str = new TextDecoder('utf8').decode(this._data.subarray(this.position, this.position + length)); + this.position += length; + return str; + } +} + +let _shared = new Uint8Array(524288); // 512 KB initial buffer + +export class DataWriter { + constructor() { + this.position = 0; + this._view = null; + this.data = _shared; + } + + get dataView() { + return this._view || (this._view = new DataView(this.data.buffer, 0, this.data.byteLength)); + } + + reset() { + this.data = _shared; + this._view = null; + this.position = 0; + } + + ensureBuffer(size) { + if (this.position + size <= _shared.byteLength) return; + const prev = _shared; + const need = this.position + size; + const nextLen = Math.max(Math.floor((_shared.byteLength * 12) / 10), need); + _shared = new Uint8Array(nextLen); + _shared.set(prev, 0); + this.data = _shared; + this._view = null; + } + + writeInt8(v) { + this.ensureBuffer(1); + this.data[this.position++] = v | 0; + } + + writeInt16(v) { + this.ensureBuffer(2); + this.data[this.position++] = v | 0; + this.data[this.position++] = (v >> 8) & 0xFF; + } + + writeInt32(v) { + this.ensureBuffer(4); + this.data[this.position++] = v | 0; + this.data[this.position++] = (v >> 8) & 0xFF; + this.data[this.position++] = (v >> 16) & 0xFF; + this.data[this.position++] = (v >> 24) & 0xFF; + } + + writeInt64(v) { + this.writeInt32(v); + if (v < 0) { + this.writeInt32(~Math.floor((-v) / 0x100000000)); + } else { + this.writeInt32(Math.floor(v / 0x100000000) | 0); + } + } + + writeFloat32(v) { + this.ensureBuffer(4); + this.dataView.setFloat32(this.position, v, true); + this.position += 4; + } + + writeFloat64(v) { + this.ensureBuffer(8); + this.dataView.setFloat64(this.position, v, true); + this.position += 8; + } + + _write7BitInt(v) { + let n = v >>> 0; + while (n >= 0x80) { + this.data[this.position++] = (n & 0xFF) | 0x80; + n >>>= 7; + } + this.data[this.position++] = n & 0x7F; + } + + write7BitInt(v) { + this.ensureBuffer(5); + this._write7BitInt(v); + } + + _7BitIntLen(v) { + return v < 0 ? 5 + : v < 0x80 ? 1 + : v < 0x4000 ? 2 + : v < 0x200000 ? 3 + : v < 0x10000000 ? 4 + : 5; + } + + writeUTF(str) { + const t = str.length; + if (t === 0) { + this.write7BitInt(0); + return; + } + const max = 6 * t; + this.ensureBuffer(5 + max); + const start = this.position; + this.position += this._7BitIntLen(max); + const from = this.position; + const reserved = from - start; + + const encoder = new TextEncoder(); + const { written } = encoder.encodeInto(str, this.data.subarray(this.position)); + this.position += written; + const after = this.position; + const size = after - from; + + this.position = start; + this._write7BitInt(size); + const used = this.position - start; + if (used !== reserved) { + this.data.copyWithin(from + (used - reserved), from, after); + } + this.position = from + size + (used - reserved); + } + + writeUint8Array(src, offset = 0, length) { + const start = offset | 0; + const end = Math.min(src.byteLength, start + (length ?? src.byteLength)); + const n = end - start; + if (n <= 0) return; + this.ensureBuffer(n); + this.data.set(src.subarray(start, end), this.position); + this.position += n; + } + + writeUTFBytes(str) { + this.ensureBuffer(6 * str.length); + const encoder = new TextEncoder(); + const { written } = encoder.encodeInto(str, this.data.subarray(this.position)); + this.position += written; + } + + getBytes(clone = false) { + return clone ? this.data.slice(0, this.position) : this.data.subarray(0, this.position); + } +} + +export class BonEncoder { + constructor() { + this.dw = new DataWriter(); + this.strMap = new Map(); + } + + reset() { + this.dw.reset(); + this.strMap.clear(); + } + + encodeInt(v) { + this.dw.writeInt8(1); + this.dw.writeInt32(v | 0); + } + + encodeLong(v) { + this.dw.writeInt8(2); + if (typeof v === 'number') { + this.dw.writeInt64(v); + } else { + this.dw.writeInt32(v.low | 0); + this.dw.writeInt32(v.high | 0); + } + } + + encodeFloat(v) { + this.dw.writeInt8(3); + this.dw.writeFloat32(v); + } + + encodeDouble(v) { + this.dw.writeInt8(4); + this.dw.writeFloat64(v); + } + + encodeNumber(v) { + if ((v | 0) === v) this.encodeInt(v); + else if (Math.floor(v) === v) this.encodeLong(v); + else this.encodeDouble(v); + } + + encodeString(s) { + const hit = this.strMap.get(s); + if (hit !== undefined) { + this.dw.writeInt8(99); // StringRef + this.dw.write7BitInt(hit); + return; + } + this.dw.writeInt8(5); // String + this.dw.writeUTF(s); + this.strMap.set(s, this.strMap.size); + } + + encodeBoolean(b) { + this.dw.writeInt8(6); + this.dw.writeInt8(b ? 1 : 0); + } + + encodeNull() { + this.dw.writeInt8(0); + } + + encodeDateTime(d) { + this.dw.writeInt8(10); + this.dw.writeInt64(d.getTime()); + } + + encodeBinary(u8) { + this.dw.writeInt8(7); + this.dw.write7BitInt(u8.byteLength); + this.dw.writeUint8Array(u8); + } + + encodeArray(arr) { + this.dw.writeInt8(9); + this.dw.write7BitInt(arr.length); + for (let i = 0; i < arr.length; i++) this.encode(arr[i]); + } + + encodeMap(mp) { + this.dw.writeInt8(8); + this.dw.write7BitInt(mp.size); + mp.forEach((v, k) => { + this.encode(k); + this.encode(v); + }); + } + + encodeObject(obj) { + this.dw.writeInt8(8); + const keys = []; + for (const k in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, k)) continue; + if (k.startsWith('_')) continue; + const type = typeof obj[k]; + if (type === 'function' || type === 'undefined') continue; + keys.push(k); + } + this.dw.write7BitInt(keys.length); + for (const k of keys) { + this.encode(k); + this.encode(obj[k]); + } + } + + encode(v) { + if (v == null) { + this.encodeNull(); + return; + } + switch (v.constructor) { + case Number: + this.encodeNumber(v); + return; + case Boolean: + this.encodeBoolean(v); + return; + case String: + this.encodeString(v); + return; + case Int64: + this.encodeLong(v); + return; + case Array: + this.encodeArray(v); + return; + case Map: + this.encodeMap(v); + return; + case Date: + this.encodeDateTime(v); + return; + case Uint8Array: + this.encodeBinary(v); + return; + default: + if (typeof v !== 'object') { + this.encodeNull(); + return; + } + this.encodeObject(v); + return; + } + } + + getBytes(clone = false) { + return this.dw.getBytes(clone); + } +} + +export class BonDecoder { + constructor() { + this.dr = new DataReader(new Uint8Array(0)); + this.strArr = []; + } + + reset(bytes) { + this.dr.reset(bytes); + this.strArr.length = 0; + } + + decode() { + const tag = this.dr.readUInt8(); + switch (tag) { + default: + return null; + case 1: + return this.dr.readInt32(); + case 2: + return this.dr.readInt64(); + case 3: + return this.dr.readFloat32(); + case 4: + return this.dr.readFloat64(); + case 5: { + const s = this.dr.readUTF(); + this.strArr.push(s); + return s; + } + case 6: + return this.dr.readUInt8() === 1; + case 7: { + const len = this.dr.read7BitInt(); + return this.dr.readUint8Array(len, false); + } + case 8: { + const count = this.dr.read7BitInt(); + const obj = {}; + for (let i = 0; i < count; i++) { + const k = this.decode(); + const v = this.decode(); + obj[k] = v; + } + return obj; + } + case 9: { + const len = this.dr.read7BitInt(); + const arr = new Array(len); + for (let i = 0; i < len; i++) arr[i] = this.decode(); + return arr; + } + case 10: + return new Date(this.dr.readInt64()); + case 99: + return this.strArr[this.dr.read7BitInt()]; + } + } +} + +// 单例实例 +const _enc = new BonEncoder(); +const _dec = new BonDecoder(); + +// BON 编解码函数 +export const bon = { + encode: (value, clone = true) => { + _enc.reset(); + _enc.encode(value); + return _enc.getBytes(clone); + }, + decode: (bytes) => { + _dec.reset(bytes); + return _dec.decode(); + } +}; + +/** —— 协议消息包装,与原 ProtoMsg 类等价 —— */ +export class ProtoMsg { + constructor(raw) { + if (raw?.cmd) { + raw.cmd = raw.cmd.toLowerCase(); + } + this._raw = raw; + this._rawData = undefined; + this._data = undefined; + this._t = undefined; + this._sendMsg = undefined; + this.rtt = 0; + } + + get sendMsg() { return this._sendMsg; } + get seq() { return this._raw.seq; } + get resp() { return this._raw.resp; } + get ack() { return this._raw.ack; } + get cmd() { return this._raw?.cmd && this._raw?.cmd.toLowerCase(); } + get code() { return ~~this._raw.code; } + get error() { return this._raw.error; } + get time() { return this._raw.time; } + get body() { return this._raw.body; } + + /** 惰性 decode body → rawData(bon.decode) */ + get rawData() { + if (this._rawData !== undefined || this.body === undefined) return this._rawData; + this._rawData = bon.decode(this.body); + return this._rawData; + } + + /** 指定数据类型 */ + setDataType(t) { + if (t) this._t = { name: t.name ?? 'Anonymous', ctor: t }; + return this; + } + + /** 配置"请求"对象,让 respType 自动对齐 */ + setSendMsg(msg) { + this._sendMsg = msg; + return this.setDataType(msg.respType); + } + + /** 将 rawData 反序列化为业务对象 */ + getData(clazz) { + if (this._data !== undefined || this.rawData === undefined) return this._data; + + let t = this._t; + if (clazz && t && clazz !== t.ctor) { + console.warn(`getData type not match, ${clazz.name} != ${t.name}`); + t = { name: clazz.name, ctor: clazz }; + } + + this._data = this.rawData; + return this._data; + } + + toLogString() { + const e = { ...this._raw }; + delete e.body; + e.data = this.rawData; + e.rtt = this.rtt; + return JSON.stringify(e); + } +} + +/** —— 加解密器注册表 —— */ +const registry = new Map(); + +/** lz4 + 头部掩码的 "lx" 方案 */ +const lx = { + encrypt: (buf) => { + let e = lz4.compress(buf); + const t = 2 + ~~(Math.random() * 248); + for (let n = Math.min(e.length, 100); --n >= 0; ) e[n] ^= t; + + // 写入标识与混淆位 + e[0] = 112; e[1] = 108; + e[2] = (e[2] & 0b10101010) | ((t >> 7 & 1) << 6) | ((t >> 6 & 1) << 4) | ((t >> 5 & 1) << 2) | (t >> 4 & 1); + e[3] = (e[3] & 0b10101010) | ((t >> 3 & 1) << 6) | ((t >> 2 & 1) << 4) | ((t >> 1 & 1) << 2) | (t & 1); + return e; + }, + decrypt: (e) => { + const t = + ((e[2] >> 6 & 1) << 7) | ((e[2] >> 4 & 1) << 6) | ((e[2] >> 2 & 1) << 5) | ((e[2] & 1) << 4) | + ((e[3] >> 6 & 1) << 3) | ((e[3] >> 4 & 1) << 2) | ((e[3] >> 2 & 1) << 1) | (e[3] & 1); + for (let n = Math.min(100, e.length); --n >= 2; ) e[n] ^= t; + e[0] = 4; e[1] = 34; e[2] = 77; e[3] = 24; // 还原头以便 lz4 解 + return lz4.decompress(e); + } +}; + +/** 随机首 4 字节 + XOR 的 "x" 方案 */ +const x = { + encrypt: (e) => { + const rnd = ~~(Math.random() * 0xFFFFFFFF) >>> 0; + const n = new Uint8Array(e.length + 4); + n[0] = rnd & 0xFF; n[1] = (rnd >>> 8) & 0xFF; n[2] = (rnd >>> 16) & 0xFF; n[3] = (rnd >>> 24) & 0xFF; + n.set(e, 4); + const r = 2 + ~~(Math.random() * 248); + for (let i = n.length; --i >= 0; ) n[i] ^= r; + n[0] = 112; n[1] = 120; + n[2] = (n[2] & 0b10101010) | ((r >> 7 & 1) << 6) | ((r >> 6 & 1) << 4) | ((r >> 5 & 1) << 2) | (r >> 4 & 1); + n[3] = (n[3] & 0b10101010) | ((r >> 3 & 1) << 6) | ((r >> 2 & 1) << 4) | ((r >> 1 & 1) << 2) | (r & 1); + return n; + }, + decrypt: (e) => { + const t = + ((e[2] >> 6 & 1) << 7) | ((e[2] >> 4 & 1) << 6) | ((e[2] >> 2 & 1) << 5) | ((e[2] & 1) << 4) | + ((e[3] >> 6 & 1) << 3) | ((e[3] >> 4 & 1) << 2) | ((e[3] >> 2 & 1) << 1) | (e[3] & 1); + for (let n = e.length; --n >= 4; ) e[n] ^= t; + return e.subarray(4); + } +}; + +/** 依赖 globalThis.XXTEA 的 "xtm" 方案 */ +const xtm = { + encrypt: (e) => globalThis.XXTEA ? globalThis.XXTEA.encryptMod({ data: e.buffer, length: e.length }) : e, + decrypt: (e) => globalThis.XXTEA ? globalThis.XXTEA.decryptMod({ data: e.buffer, length: e.length }) : e, +}; + +/** 注册器 */ +function register(name, impl) { + registry.set(name, impl); +} + +register('lx', lx); +register('x', x); +register('xtm', xtm); + +/** 默认使用 x 加密(自动检测解密) */ +const passthrough = { + encrypt: (e) => getEnc('x').encrypt(e), + decrypt: (e) => { + if (e.length > 4 && e[0] === 112 && e[1] === 108) e = getEnc('lx').decrypt(e); + else if (e.length > 4 && e[0] === 112 && e[1] === 120) e = getEnc('x').decrypt(e); + else if (e.length > 3 && e[0] === 112 && e[1] === 116) e = getEnc('xtm').decrypt(e); + return e; + } +}; + +/** 对外:按名称取加解密器;找不到则用默认 */ +export function getEnc(name) { + return registry.get(name) ?? passthrough; +} + +/** 对外:encode(bon.encode → 加密) */ +export function encode(obj, enc) { + let bytes = bon.encode(obj, false); + const out = enc.encrypt(bytes); + return out.buffer.byteLength === out.length ? out.buffer : out.buffer.slice(0, out.length); +} + +/** 对外:parse(解密 → bon.decode → ProtoMsg) */ +export function parse(buf, enc) { + const u8 = new Uint8Array(buf); + const plain = enc.decrypt(u8); + const raw = bon.decode(plain); + return new ProtoMsg(raw); +} + +// 游戏消息模板 +export const GameMessages = { + // 心跳消息 + heartBeat: (ack = 0, seq = 0) => ({ + ack, + body: undefined, + c: undefined, + cmd: "_sys/ack", + hint: undefined, + seq, + time: Date.now() + }), + + // 获取角色信息 + getRoleInfo: (ack = 0, seq = 0, params = {}) => ({ + cmd: "role_getroleinfo", + body: encode({ + clientVersion: "1.65.3-wx", + inviteUid: 0, + platform: "hortor", + platformExt: "mix", + scene: "", + ...params + }, getEnc('x')), + ack: ack || 0, + seq: seq || 0, + time: Date.now() + }), + + // 获取数据包版本 + getDataBundleVer: (ack = 0, seq = 0, params = {}) => ({ + cmd: "system_getdatabundlever", + body: encode({ + isAudit: false, + ...params + }, getEnc('x')), + ack: ack || 0, + seq: seq || 0, + time: Date.now() + }), + + // 购买金币 + buyGold: (ack = 0, seq = 0, params = {}) => ({ + ack, + body: encode({ + buyNum: 1, + ...params + }, getEnc('x')), + cmd: "system_buygold", + seq, + time: Date.now() + }), + + // 签到奖励 + signInReward: (ack = 0, seq = 0, params = {}) => ({ + ack, + body: encode({ + ...params + }, getEnc('x')), + cmd: "system_signinreward", + seq, + time: Date.now() + }), + + // 领取每日任务奖励 + claimDailyReward: (ack = 0, seq = 0, params = {}) => ({ + ack, + body: encode({ + rewardId: 0, + ...params + }, getEnc('x')), + cmd: "task_claimdailyreward", + seq, + time: Date.now() + }) +}; + +// 创建全局实例 +export const g_utils = { + getEnc, + encode: (obj, encName = 'x') => encode(obj, getEnc(encName)), + parse: (data, encName = 'auto') => parse(data, getEnc(encName)), + bon // 添加BON编解码器 +}; + +// 兼容性导出(保持旧的接口) +export const bonProtocol = { + encode: bon.encode, + decode: bon.decode, + createMessage: (cmd, body = {}, ack = 0, seq = 0, options = {}) => ({ + cmd, + body: bon.encode(body), + ack: ack || 0, + seq: seq || 0, + time: Date.now(), + ...options + }), + parseMessage: (messageData) => { + try { + let message; + if (typeof messageData === 'string') { + message = JSON.parse(messageData); + } else { + message = messageData; + } + if (message.body && (message.body instanceof ArrayBuffer || message.body instanceof Uint8Array)) { + message.body = bon.decode(message.body); + } + return message; + } catch (error) { + console.error('消息解析失败:', error); + return { + error: true, + message: '消息解析失败', + originalData: messageData + }; + } + }, + generateSeq: () => Math.floor(Math.random() * 1000000), + generateMessageId: () => 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9) +}; + +// 导出单独的加密器类以兼容测试文件 +export const LXCrypto = lx; +export const XCrypto = x; +export const XTMCrypto = xtm; + +export default { ProtoMsg, getEnc, encode, parse, GameMessages, g_utils, bon, bonProtocol }; \ No newline at end of file diff --git a/src/utils/gameCommands.js b/src/utils/gameCommands.js new file mode 100644 index 0000000..04851a3 --- /dev/null +++ b/src/utils/gameCommands.js @@ -0,0 +1,692 @@ +/** + * 游戏命令构造器 + * 基于mirror代码中的游戏指令实现完整的游戏功能 + */ + +import { g_utils } from './bonProtocol.js' + +// 生成随机数工具函数 +function randomInt(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min +} + +/** + * 游戏命令构造器类 + * 每个命令方法返回标准的WebSocket消息格式 + */ +export class GameCommands { + constructor(g_utils_instance = g_utils) { + this.g_utils = g_utils_instance + } + + /** + * 心跳消息 + */ + heart_beat(ack = 0, seq = 0, params = {}) { + return { + ack, + body: undefined, + c: undefined, + cmd: "_sys/ack", + hint: undefined, + seq, + time: Date.now() + } + } + + /** + * 获取角色信息 + */ + role_getroleinfo(ack = 0, seq = 0, params = {}) { + return { + cmd: "role_getroleinfo", + body: this.g_utils.bon.encode({ + clientVersion: "1.65.3-wx", + inviteUid: 0, + platform: "hortor", + platformExt: "mix", + scene: "", + ...params + }), + ack: ack || 0, + seq: seq || 0, + rtt: randomInt(0, 500), + code: 0, + time: Date.now() + } + } + + /** + * 获取数据包版本 + */ + system_getdatabundlever(ack = 0, seq = 0, params = {}) { + return { + cmd: "system_getdatabundlever", + body: this.g_utils.bon.encode({ + isAudit: false, + ...params + }), + ack: ack || 0, + seq: seq || 0, + rtt: randomInt(0, 500), + code: 0, + time: Date.now() + } + } + + /** + * 购买金币 + */ + system_buygold(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + buyNum: 1, + ...params + }), + cmd: "system_buygold", + seq, + time: Date.now() + } + } + + /** + * 分享回调 + */ + system_mysharecallback(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + type: 3, + isSkipShareCard: true, + ...params + }), + cmd: "system_mysharecallback", + seq, + time: Date.now() + } + } + + /** + * 好友批处理 + */ + friend_batch(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + friendId: 0, + ...params + }), + cmd: "friend_batch", + seq, + time: Date.now() + } + } + + /** + * 英雄招募 + */ + hero_recruit(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + byClub: false, + recruitNumber: 1, + recruitType: 3, + ...params + }), + cmd: "hero_recruit", + seq, + time: Date.now() + } + } + + /** + * 领取挂机奖励 + */ + system_claimhangupreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "system_claimhangupreward", + seq, + time: Date.now() + } + } + + /** + * 开宝箱 + */ + item_openbox(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + itemId: 2001, + number: 10, + ...params + }), + cmd: "item_openbox", + seq, + time: Date.now() + } + } + + /** + * 开始竞技场 + */ + arena_startarea(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "arena_startarea", + seq, + time: Date.now() + } + } + + /** + * 获取竞技场目标 + */ + arena_getareatarget(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + refresh: false, + ...params + }), + cmd: "arena_getareatarget", + seq, + time: Date.now() + } + } + + /** + * 开始竞技场战斗 + */ + fight_startareaarena(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + targetId: 530479307, + ...params + }), + cmd: "fight_startareaarena", + seq, + time: Date.now() + } + } + + /** + * 获取竞技场排名 + */ + arena_getarearank(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + rankType: 0, + ...params + }), + cmd: "arena_getarearank", + seq, + time: Date.now() + } + } + + /** + * 获取商店商品列表 + */ + store_goodslist(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + storeId: 1, + ...params + }), + cmd: "store_goodslist", + seq, + time: Date.now() + } + } + + /** + * 商店购买 + */ + store_buy(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + goodsId: 1, + ...params + }), + cmd: "store_buy", + seq, + time: Date.now() + } + } + + /** + * 商店刷新 + */ + store_refresh(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + storeId: 1, + ...params + }), + cmd: "store_refresh", + seq, + time: Date.now() + } + } + + /** + * 领取机器人助手奖励 + */ + bottlehelper_claim(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "bottlehelper_claim", + seq, + time: Date.now() + } + } + + /** + * 启动机器人助手 + */ + bottlehelper_start(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + bottleType: -1, + ...params + }), + cmd: "bottlehelper_start", + seq, + time: Date.now() + } + } + + /** + * 停止机器人助手 + */ + bottlehelper_stop(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + bottleType: -1, + ...params + }), + cmd: "bottlehelper_stop", + seq, + time: Date.now() + } + } + + /** + * 神器抽奖 + */ + artifact_lottery(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + lotteryNumber: 1, + newFree: true, + type: 1, + ...params + }), + cmd: "artifact_lottery", + seq, + time: Date.now() + } + } + + /** + * 领取每日积分 + */ + task_claimdailypoint(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + taskId: 1, + ...params + }), + cmd: "task_claimdailypoint", + seq, + time: Date.now() + } + } + + /** + * 领取周奖励 + */ + task_claimweekreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + rewardId: 0, + ...params + }), + cmd: "task_claimweekreward", + seq, + time: Date.now() + } + } + + /** + * 开始BOSS战 + */ + fight_startboss(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "fight_startboss", + seq, + time: Date.now() + } + } + + /** + * 精灵扫荡 + */ + genie_sweep(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "genie_sweep", + seq, + time: Date.now() + } + } + + /** + * 购买精灵扫荡 + */ + genie_buysweep(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "genie_buysweep", + seq, + time: Date.now() + } + } + + /** + * 签到奖励 + */ + system_signinreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "system_signinreward", + seq, + time: Date.now() + } + } + + /** + * 领取折扣奖励 + */ + discount_claimreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + discountId: 1, + ...params + }), + cmd: "discount_claimreward", + seq, + time: Date.now() + } + } + + /** + * 领取卡片奖励 + */ + card_claimreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + cardId: 1, + ...params + }), + cmd: "card_claimreward", + seq, + time: Date.now() + } + } + + /** + * 军团签到 + */ + legion_signin(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "legion_signin", + seq, + time: Date.now() + } + } + + /** + * 开始军团BOSS战 + */ + fight_startlegionboss(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "fight_startlegionboss", + seq, + time: Date.now() + } + } + + /** + * 领取每日任务奖励 + */ + task_claimdailyreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + rewardId: 0, + ...params + }), + cmd: "task_claimdailyreward", + seq, + time: Date.now() + } + } + + /** + * 获取军团信息 + */ + legion_getinfo(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({}), + cmd: "legion_getinfo", + seq, + time: Date.now() + } + } + + /** + * 军团匹配角色报名 + */ + legionmatch_rolesignup(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({}), + cmd: "legionmatch_rolesignup", + seq, + time: Date.now() + } + } + + /** + * 开始爬塔 + */ + fight_starttower(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({}), + cmd: "fight_starttower", + seq, + time: Date.now() + } + } + + /** + * 领取爬塔奖励 + */ + tower_claimreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "tower_claimreward", + seq, + time: Date.now() + } + } + + /** + * 获取爬塔信息 + */ + tower_getinfo(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "tower_getinfo", + seq, + time: Date.now() + } + } + + /** + * 开始答题游戏 + */ + study_startgame(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({}), + cmd: "study_startgame", + seq, + time: Date.now() + } + } + + /** + * 答题 + */ + study_answer(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + ...params + }), + cmd: "study_answer", + seq, + time: Date.now() + } + } + + /** + * 领取答题奖励 + */ + study_claimreward(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + rewardId: 1, + ...params + }), + cmd: "study_claimreward", + seq, + time: Date.now() + } + } + + /** + * 获取邮件列表 + */ + mail_getlist(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + category: [0, 4, 5], + lastId: 0, + size: 60, + ...params + }), + cmd: "mail_getlist", + seq, + time: Date.now() + } + } + + /** + * 领取所有邮件附件 + */ + mail_claimallattachment(ack = 0, seq = 0, params = {}) { + return { + ack, + body: this.g_utils.bon.encode({ + category: 0, + ...params + }), + cmd: "mail_claimallattachment", + seq, + time: Date.now() + } + } +} + +// 三国答题题库(基于mirror代码中的题目) +export const studyQuestions = [ + {name: "", value: 2}, + {name: "《三国演义》中,「大意失街亭」的是马谩?", value: 1}, + {name: "《三国演义》中,「挥泪斩马谩」的是孙权?", value: 2}, + {name: "《三国演义》中,「火烧博望坡」的是庞统?", value: 2}, + {name: "《三国演义》中,「火烧藤甲兵」的是徐庶?", value: 2}, + {name: "《三国演义》中,「千里走单骑」的是赵云?", value: 2}, + {name: "《三国演义》中,「温酒斩华雄」的是张飞?", value: 2}, + {name: "《三国演义》中,关羽在长坂坡「七进七出」?", value: 2}, + {name: "《三国演义》中,刘备三顾茅庐请诸葛亮出山?", value: 1}, + {name: "《三国演义》中,孙权与曹操「煮酒论英雄」?", value: 2}, + {name: "《三国演义》中,提出「隆中对」的是诸葛亮?", value: 1}, + {name: "《三国演义》中,夏侯杰在当阳桥被张飞吓死?", value: 1}, + {name: "《三国演义》中,张飞在当阳桥厉吼吓退曹军?", value: 1}, + {name: "《三国演义》中,赵云参与了「三英战吕布」?", value: 2}, + {name: "《三国演义》中,赵云参与了「桃园三结义」?", value: 2} + // 更多题目可以从原始数据中添加... +] + +// 创建命令实例 +export const gameCommands = new GameCommands() +export default GameCommands \ No newline at end of file diff --git a/src/utils/readable-xyzw-ws.js b/src/utils/readable-xyzw-ws.js new file mode 100644 index 0000000..88542be --- /dev/null +++ b/src/utils/readable-xyzw-ws.js @@ -0,0 +1,547 @@ +// 解析后的XYZW WebSocket通信库 +// 原文件: CTx_gHj7.js (混淆版本) + +// 导入依赖模块 +import { a$ as createRef, G as createApp, $ as defineComponent, n as ref, b0 as computed } from "./DpD38Hq9.js"; +import { c as useI18n, g as getConfig, u as useState } from "./BUzHT0Ek.js"; + +// 字符串相似度计算函数 (Levenshtein Distance 算法) +const calculateStringSimilarity = (() => { + let cache, isInitialized; + + return createRef(isInitialized ? cache : (isInitialized = 1, cache = function () { + // 计算两个字符串之间的编辑距离 + function calculateDistance(a, b, c, d, e) { + return a < b || c < b ? a > c ? c + 1 : a + 1 : d === e ? b : b + 1; + } + + return function (str1, str2) { + if (str1 === str2) return 0; + + // 确保str1是较短的字符串 + if (str1.length > str2.length) { + [str1, str2] = [str2, str1]; + } + + let len1 = str1.length; + let len2 = str2.length; + + // 去除相同的前缀和后缀 + while (len1 > 0 && str1.charCodeAt(len1 - 1) === str2.charCodeAt(len2 - 1)) { + len1--; + len2--; + } + + let start = 0; + while (start < len1 && str1.charCodeAt(start) === str2.charCodeAt(start)) { + start++; + } + + len2 -= start; + len1 -= start; + + if (len1 === 0 || len2 < 3) return len2; + + // 动态规划计算编辑距离 + let row = []; + for (let i = 0; i < len1; i++) { + row.push(i + 1, str1.charCodeAt(start + i)); + } + + let currentRow = 0; + let rowLength = row.length - 1; + + while (currentRow < len2 - 3) { + let char1 = str2.charCodeAt(start + currentRow); + let char2 = str2.charCodeAt(start + currentRow + 1); + let char3 = str2.charCodeAt(start + currentRow + 2); + let char4 = str2.charCodeAt(start + currentRow + 3); + + let newValue = currentRow += 4; + + for (let j = 0; j < rowLength; j += 2) { + let oldValue = row[j]; + let charCode = row[j + 1]; + + char1 = calculateDistance(oldValue, char1, char2, char1, charCode); + char2 = calculateDistance(char1, char2, char3, char2, charCode); + char3 = calculateDistance(char2, char3, char4, char3, charCode); + newValue = calculateDistance(char3, char4, newValue, char4, charCode); + + row[j] = newValue; + char4 = char3; + char3 = char2; + char2 = char1; + char1 = oldValue; + } + } + + // 处理剩余字符 + while (currentRow < len2) { + let char = str2.charCodeAt(start + currentRow); + let newValue = ++currentRow; + + for (let j = 0; j < rowLength; j += 2) { + let oldValue = row[j]; + row[j] = newValue = calculateDistance(oldValue, char, newValue, char, row[j + 1]); + char = oldValue; + } + } + + return newValue; + }; + }())); +})(); + +// 生成随机数 +function generateRandomNumber(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; +} + +// 时间格式化函数 +function formatTime(seconds) { + const totalSeconds = Math.floor(seconds); + const hours = Math.floor(totalSeconds / 3600).toString().padStart(2, "0"); + const remainingSeconds = totalSeconds % 3600; + const minutes = Math.floor(remainingSeconds / 60); + const secs = Math.floor(remainingSeconds % 60); + + const formattedHours = hours.toString().padStart(2, "0"); + const formattedMinutes = minutes.toString().padStart(2, "0"); + const formattedSeconds = (secs < 10 ? "0" : "") + secs.toString(); + + let formatTime = "00:00:00"; + if (seconds > 0) { + formatTime = `${formattedHours}:${formattedMinutes}:${formattedSeconds}`; + } + + return { + hours: formattedHours, + minutes: formattedMinutes, + seconds: formattedSeconds, + formatTime: formatTime + }; +} + +// 字符串相似度检查 +function checkStringSimilarity(str1, str2, threshold) { + if (!str1 || !str2) return false; + return 1 - calculateStringSimilarity(str1, str2) / Math.max(str1.length, str2.length) >= threshold; +} + +// 数值格式化函数 (支持万、亿单位) +function formatNumber(num, decimals = 2) { + if (num === undefined || isNaN(num) || num <= 0) return "0"; + + const billion = 100000000; // 1亿 + const tenThousand = 10000; // 1万 + + const formatDecimal = (value) => { + const str = value.toString(); + const [integer, decimal = ""] = str.split("."); + return decimal.length >= decimals + ? `${integer}.${decimal.slice(0, decimals)}` + : `${integer}.${"0".repeat(decimals - decimal.length)}${decimal}`; + }; + + if (num >= billion) { + return `${formatDecimal(num / billion)}亿`; + } else if (num >= tenThousand) { + return `${formatDecimal(num / tenThousand)}万`; + } else if (num < 1) { + return `0.${"0".repeat(decimals)}${num.toFixed(decimals + 1).slice(-decimals)}`; + } else { + return num.toString(); + } +} + +// 延迟函数 +function delay(milliseconds) { + return new Promise((resolve) => setTimeout(resolve, milliseconds)); +} + +// 游戏消息模板定义 +const gameMessageTemplates = { + // 心跳包 + heart_beat: (client, ack, seq, params) => ({ + ack: ack, + body: undefined, + c: undefined, + cmd: "_sys/ack", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 获取角色信息 + role_getroleinfo: (client, ack, seq, params) => ({ + cmd: "role_getroleinfo", + body: client.bon.encode({ + clientVersion: "1.65.3-wx", + inviteUid: 0, + platform: "hortor", + platformExt: "mix", + scene: "", + ...params + }), + ack: ack || 0, + seq: seq || 0, + rtt: generateRandomNumber(0, 500), + code: 0, + time: Date.now() + }), + + // 获取数据包版本 + system_getdatabundlever: (client, ack, seq, params) => ({ + cmd: "system_getdatabundlever", + body: client.bon.encode({ + isAudit: false, + ...params + }), + ack: ack || 0, + seq: seq || 0, + rtt: generateRandomNumber(0, 500), + code: 0, + time: Date.now() + }), + + // 购买金币 + system_buygold: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + buyNum: 1, + ...params + }), + c: undefined, + cmd: "system_buygold", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 分享回调 + system_mysharecallback: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + type: 3, + isSkipShareCard: true, + ...params + }), + c: undefined, + cmd: "system_mysharecallback", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 好友批处理 + friend_batch: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + friendId: 0, + ...params + }), + c: undefined, + cmd: "friend_batch", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 英雄招募 + hero_recruit: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + byClub: false, + recruitNumber: 1, + recruitType: 3, + ...params + }), + c: undefined, + cmd: "hero_recruit", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 领取挂机奖励 + system_claimhangupreward: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + ...params + }), + c: undefined, + cmd: "system_claimhangupreward", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 开启宝箱 + item_openbox: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + itemId: 2001, + number: 10, + ...params + }), + c: undefined, + cmd: "item_openbox", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 竞技场相关命令 + arena_startarea: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({...params}), + c: undefined, + cmd: "arena_startarea", + hint: undefined, + seq: seq, + time: Date.now() + }), + + arena_getareatarget: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + refresh: false, + ...params + }), + c: undefined, + cmd: "arena_getareatarget", + hint: undefined, + seq: seq, + time: Date.now() + }), + + fight_startareaarena: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + targetId: 530479307, + ...params + }), + c: undefined, + cmd: "fight_startareaarena", + hint: undefined, + seq: seq, + time: Date.now() + }), + + arena_getarearank: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + rankType: 0, + ...params + }), + c: undefined, + cmd: "arena_getarearank", + hint: undefined, + seq: seq, + time: Date.now() + }), + + // 商店相关 + store_goodslist: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + storeId: 1, + ...params + }), + c: undefined, + cmd: "store_goodslist", + hint: undefined, + seq: seq, + time: Date.now() + }), + + store_buy: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({ + goodsId: 1, + ...params + }), + c: undefined, + cmd: "store_buy", + hint: undefined, + seq: seq, + time: Date.now() + }), + + store_refresh: (client, ack, seq, params) => ({ + ack: ack, + body: client.bon.encode({...params}), + c: undefined, + cmd: "store_refresh", + hint: undefined, + seq: seq, + time: Date.now() + }) +}; + +// 游戏逻辑处理函数 (从原始混淆代码中提取的核心逻辑) +function processGameLogic(client) { + const app = createApp(); + const state = useState(); + const { message } = useI18n(["message", "dialog"]); + + // 处理问答逻辑 + const handleQuestionsLogic = (responseData) => { + const questionList = responseData.body.questionList; + let hasMatch = false; + const config = useState(); + + // 遍历问题列表寻找匹配 + for (let i = 0; i < questionList.length; i++) { + const question = questionList[i]; + //todo + // 这里应该有问题匹配逻辑,但在原代码中被混淆了 + // 原始逻辑涉及某个答案数组 v,可能需要根据实际需求补充 + } + + return hasMatch; + }; + + return { + handleQuestionsLogic, + // 其他游戏逻辑函数可以在这里添加 + }; +} + +// Base64 编解码工具 (从原始代码第1部分提取) +const base64Utils = { + // 字节长度计算 + byteLength: function (str) { + const parsed = this.parseBase64(str); + const validLength = parsed[0]; + const paddingLength = parsed[1]; + return validLength; + }, + + // 转换为字节数组 + toByteArray: function (str) { + const parsed = this.parseBase64(str); + const validLength = parsed[0]; + const paddingLength = parsed[1]; + const result = new Uint8Array(this.calculateLength(validLength, paddingLength, str.length)); + + // 解码逻辑 + // ... 这里应该包含完整的Base64解码实现 + + return result; + }, + + // 从字节数组转换 + fromByteArray: function (uint8Array) { + const length = uint8Array.length; + const remainder = length % 3; + const chunks = []; + const maxChunkLength = 16383; + + // 处理主要部分 + for (let i = 0; i < length - remainder; i += maxChunkLength) { + const end = i + maxChunkLength > length - remainder ? length - remainder : i + maxChunkLength; + chunks.push(this.encodeChunk(uint8Array, i, end)); + } + + // 处理剩余字节 + if (remainder === 1) { + const byte = uint8Array[length - 1]; + chunks.push(this.chars[byte >> 2] + this.chars[byte << 4 & 63] + '=='); + } else if (remainder === 2) { + const byte1 = uint8Array[length - 2]; + const byte2 = uint8Array[length - 1]; + chunks.push( + this.chars[byte1 >> 2] + + this.chars[byte1 << 4 & 63 | byte2 >> 4] + + this.chars[byte2 << 2 & 63] + + '=' + ); + } + + return chunks.join(''); + }, + + // Base64字符表 + chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + + // 辅助函数 + parseBase64: function (str) { + const length = str.length; + let paddingIndex = str.indexOf('='); + if (paddingIndex === -1) paddingIndex = length; + + const validLength = paddingIndex; + const paddingLength = paddingIndex === length ? 0 : 4 - (paddingIndex % 4); + + return [validLength, paddingLength]; + }, + + calculateLength: function (validLength, paddingLength, totalLength) { + return Math.floor((validLength + paddingLength) * 3 / 4); + }, + + encodeChunk: function (uint8Array, start, end) { + const chars = this.chars; + const result = []; + + for (let i = start; i < end; i += 3) { + const byte1 = uint8Array[i]; + const byte2 = i + 1 < end ? uint8Array[i + 1] : 0; + const byte3 = i + 2 < end ? uint8Array[i + 2] : 0; + + const triplet = (byte1 << 16) + (byte2 << 8) + byte3; + + result.push( + chars[triplet >> 18 & 63] + + chars[triplet >> 12 & 63] + + chars[triplet >> 6 & 63] + + chars[triplet & 63] + ); + } + + return result.join(''); + } +}; + +// 数据存储管理 (从文件末尾部分提取) +const createDataStore = () => { + return { + // 响应数据存储 + resp: {}, + + // 更新军团信息 + updateLegioninfo: function(newData) { + const currentLegionData = this.resp.legion_getinforesp; + + if (currentLegionData && currentLegionData.data) { + this.resp.legion_getinforesp = { + loading: false, + data: Object.assign({}, currentLegionData.data, newData), + cmd: "legion_getinfor" + }; + } else { + this.resp.legion_getinforesp = { + loading: false, + data: newData, + cmd: "legion_getinfor" + }; + } + } + }; +}; + +// 导出的主要功能模块 +export { + useState as createGameState, // b -> a + formatNumber as formatGameNumber, // h -> b + gameMessageTemplates as gameCommands, // m -> c + processGameLogic as gameLogicHandler, // y -> d + createDataStore as dataStoreFactory, // C -> e + formatTime, // f + base64Utils as encodingUtils, // E -> g + createDataStore as storeManager, // S -> h + delay as sleep, // g -> s + createApp as appFactory // A -> u +}; diff --git a/src/utils/wsAgent.js b/src/utils/wsAgent.js new file mode 100644 index 0000000..41bb5ff --- /dev/null +++ b/src/utils/wsAgent.js @@ -0,0 +1,438 @@ +/** + * WebSocket客户端 - 基于mirror代码的完整实现 + * 支持BON协议编解码、加密通道、心跳保活、消息队列等 + */ + +import { g_utils } from './bonProtocol.js' + +export class WsAgent { + /** + * @param {Object} options 配置选项 + */ + constructor(options = {}) { + const { + heartbeatInterval = 2000, // 心跳间隔(ms) + queueInterval = 50, // 发送队列轮询间隔(ms) + heartbeatCmd = 'heart_beat', // 心跳命令 + channel = 'x', // 加密通道 + autoReconnect = true, // 自动重连 + maxReconnectAttempts = 5, // 最大重连次数 + reconnectDelay = 3000 // 重连延迟(ms) + } = options + + // 配置参数 + this.heartbeatInterval = heartbeatInterval + this.queueInterval = queueInterval + this.heartbeatCmd = heartbeatCmd + this.channel = channel + this.autoReconnect = autoReconnect + this.maxReconnectAttempts = maxReconnectAttempts + this.reconnectDelay = reconnectDelay + + // 连接状态 + this.ws = null + this.connected = false + this.connecting = false + this.reconnectAttempts = 0 + + // 协议状态 + this.ack = 0 + this.seq = 1 + + // 定时器 + this._heartbeatTimer = null + this._queueTimer = null + this._reconnectTimer = null + + // 发送队列 + this.sendQueue = [] + + // Promise等待队列 respKey -> {resolve, reject, timeoutId} + this.waitingPromises = new Map() + + // 事件监听器 + this.onOpen = () => {} + this.onClose = () => {} + this.onError = () => {} + this.onMessage = () => {} + this.onReconnect = () => {} + } + + /** + * 连接WebSocket + * @param {string} url WebSocket URL + * @param {Object} connectionParams 连接参数 + */ + connect(url, connectionParams = {}) { + if (this.connecting || (this.ws && this.ws.readyState === WebSocket.OPEN)) { + console.warn('WebSocket已连接或正在连接中') + return Promise.resolve() + } + + return new Promise((resolve, reject) => { + try { + this.connecting = true + console.log(`🔗 连接WebSocket: ${url}`) + + this.ws = new WebSocket(url) + this.ws.binaryType = 'arraybuffer' + + // 连接打开 + this.ws.onopen = () => { + this.connecting = false + this.connected = true + this.reconnectAttempts = 0 + + console.log('✅ WebSocket连接已建立') + + // 重置协议状态 + this.seq = 1 + + // 启动心跳和队列处理 + this._startHeartbeat() + this._startQueueProcessor() + + this.onOpen() + resolve() + } + + // 消息接收 + this.ws.onmessage = (event) => { + this._handleMessage(event.data) + } + + // 连接关闭 + this.ws.onclose = (event) => { + this.connecting = false + this.connected = false + this._cleanup() + + console.log(`🔌 WebSocket连接已关闭: ${event.code} ${event.reason}`) + + this.onClose(event) + + // 自动重连 + if (this.autoReconnect && this.reconnectAttempts < this.maxReconnectAttempts) { + this._scheduleReconnect(url, connectionParams) + } + } + + // 连接错误 + this.ws.onerror = (error) => { + console.error('❌ WebSocket错误:', error) + this.onError(error) + + if (this.connecting) { + this.connecting = false + reject(error) + } + } + + } catch (error) { + this.connecting = false + reject(error) + } + }) + } + + /** + * 关闭连接 + * @param {number} code 关闭码 + * @param {string} reason 关闭原因 + */ + close(code = 1000, reason = 'normal') { + this.autoReconnect = false + if (this.ws) { + this.ws.close(code, reason) + } + this._cleanup() + } + + /** + * 发送消息 + * @param {Object|Array} payload 消息载荷 + */ + send(payload) { + if (Array.isArray(payload)) { + this.sendQueue.push(...payload) + } else { + this.sendQueue.push(payload) + } + } + + /** + * 发送消息并等待响应 + * @param {Object} options 请求选项 + * @returns {Promise} 响应Promise + */ + sendWithPromise(options) { + const { cmd, body = {}, respKey, timeout = 8000 } = options + const responseKey = respKey || `${cmd}resp` + + return new Promise((resolve, reject) => { + // 设置超时 + const timeoutId = setTimeout(() => { + this.waitingPromises.delete(responseKey) + reject(new Error(`请求超时: ${cmd}`)) + }, timeout) + + // 注册Promise + this.waitingPromises.set(responseKey, { + resolve, + reject, + timeoutId + }) + + // 发送消息 + this.send({ cmd, body, respKey: responseKey }) + }) + } + + /** + * 处理接收到的消息 + * @private + */ + _handleMessage(data) { + try { + // 使用g_utils解密和解码消息 + const message = g_utils.parse(data, this.channel) + + if (!message) { + console.warn('消息解析失败') + return + } + + console.log('📨 收到消息:', message) + + // 更新ack + if (message.seq) { + this.ack = message.seq + } + + // 检查是否有等待的Promise + const cmd = message.cmd || message.c + const respKey = message.respKey || cmd + + if (respKey && this.waitingPromises.has(respKey)) { + const { resolve, timeoutId } = this.waitingPromises.get(respKey) + clearTimeout(timeoutId) + this.waitingPromises.delete(respKey) + resolve(message) + return + } + + // 派发给普通消息处理器 + this.onMessage(message) + + } catch (error) { + console.error('消息处理失败:', error) + this.onError(error) + } + } + + /** + * 启动心跳 + * @private + */ + _startHeartbeat() { + this._stopHeartbeat() + + if (!this.heartbeatInterval) return + + this._heartbeatTimer = setInterval(() => { + if (this.connected && this.ws?.readyState === WebSocket.OPEN) { + this._sendHeartbeat() + } + }, this.heartbeatInterval) + } + + /** + * 停止心跳 + * @private + */ + _stopHeartbeat() { + if (this._heartbeatTimer) { + clearInterval(this._heartbeatTimer) + this._heartbeatTimer = null + } + } + + /** + * 发送心跳消息 + * @private + */ + _sendHeartbeat() { + const heartbeatMsg = { + ack: this.ack, + body: undefined, + c: undefined, + cmd: '_sys/ack', + hint: undefined, + seq: 0, // 心跳消息seq为0 + time: Date.now() + } + + this._rawSend(heartbeatMsg) + } + + /** + * 启动队列处理器 + * @private + */ + _startQueueProcessor() { + this._stopQueueProcessor() + this._queueTimer = setInterval(() => { + this._processQueue() + }, this.queueInterval) + } + + /** + * 停止队列处理器 + * @private + */ + _stopQueueProcessor() { + if (this._queueTimer) { + clearInterval(this._queueTimer) + this._queueTimer = null + } + } + + /** + * 处理发送队列 + * @private + */ + _processQueue() { + if (!this.connected || !this.ws || this.ws.readyState !== WebSocket.OPEN) { + return + } + + if (this.sendQueue.length === 0) { + return + } + + const item = this.sendQueue.shift() + const packet = this._buildPacket(item) + this._rawSend(packet) + } + + /** + * 构建数据包 + * @private + */ + _buildPacket(payload) { + const { cmd, body = {}, respKey } = payload + + // 生成随机RTT (0-500ms) + const rtt = Math.floor(Math.random() * 500) + + const packet = { + ack: this.ack, + seq: cmd === this.heartbeatCmd ? 0 : this.seq++, + time: Date.now(), + cmd, + body, + respKey, + rtt, + code: 0 + } + + return packet + } + + /** + * 原始发送数据 + * @private + */ + _rawSend(packet) { + try { + // 使用g_utils编码和加密 + const data = g_utils.encode(packet, this.channel) + this.ws.send(data) + } catch (error) { + console.error('发送消息失败:', error) + this.onError(error) + } + } + + /** + * 计划重连 + * @private + */ + _scheduleReconnect(url, connectionParams) { + if (this._reconnectTimer) { + clearTimeout(this._reconnectTimer) + } + + this.reconnectAttempts++ + console.log(`🔄 计划重连 (${this.reconnectAttempts}/${this.maxReconnectAttempts}) 延迟: ${this.reconnectDelay}ms`) + + this._reconnectTimer = setTimeout(() => { + console.log(`🔄 开始第${this.reconnectAttempts}次重连...`) + this.onReconnect(this.reconnectAttempts) + this.connect(url, connectionParams).catch(error => { + console.error('重连失败:', error) + }) + }, this.reconnectDelay) + } + + /** + * 清理资源 + * @private + */ + _cleanup() { + this._stopHeartbeat() + this._stopQueueProcessor() + + if (this._reconnectTimer) { + clearTimeout(this._reconnectTimer) + this._reconnectTimer = null + } + + // 清理等待的Promise + for (const [key, { reject, timeoutId }] of this.waitingPromises) { + clearTimeout(timeoutId) + reject(new Error('连接已关闭')) + } + this.waitingPromises.clear() + } + + /** + * 获取连接状态 + */ + getStatus() { + return { + connected: this.connected, + connecting: this.connecting, + readyState: this.ws?.readyState, + ack: this.ack, + seq: this.seq, + queueLength: this.sendQueue.length, + waitingPromises: this.waitingPromises.size, + reconnectAttempts: this.reconnectAttempts + } + } + + /** + * 构建WebSocket URL + * @static + */ + static buildUrl(baseUrl, params = {}) { + const url = new URL(baseUrl) + + // 添加连接参数到p参数 + if (params.p && typeof params.p === 'object') { + url.searchParams.set('p', JSON.stringify(params.p)) + } + + // 添加其他参数 + Object.keys(params).forEach(key => { + if (key !== 'p' && params[key] !== undefined) { + url.searchParams.set(key, params[key]) + } + }) + + return url.toString() + } +} + +export default WsAgent \ No newline at end of file diff --git a/src/utils/xyzwWebSocket.js b/src/utils/xyzwWebSocket.js new file mode 100644 index 0000000..8e03b87 --- /dev/null +++ b/src/utils/xyzwWebSocket.js @@ -0,0 +1,537 @@ +/** + * XYZW WebSocket 客户端 + * 基于 readable-xyzw-ws.js 重构,适配本项目架构 + */ + +import { bonProtocol, g_utils } from './bonProtocol.js' + +/** 生成 [min,max] 的随机整数 */ +const randInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min + +/** Promise 版 sleep */ +const sleep = (ms) => new Promise((res) => setTimeout(res, ms)) + +/** + * 命令注册器:保存每个 cmd 的默认体,发送时与 params 合并 + */ +export class CommandRegistry { + constructor(encoder, enc) { + this.encoder = encoder + this.enc = enc + this.commands = new Map() + } + + /** 注册命令 */ + register(cmd, defaultBody = {}) { + this.commands.set(cmd, (ack = 0, seq = 0, params = {}) => ({ + cmd, + ack, + seq, + code: 0, + rtt: randInt(0, 500), + time: Date.now(), + body: this.encoder?.bon?.encode + ? this.encoder.bon.encode({ ...defaultBody, ...params }) + : undefined, + c: undefined, + hint: undefined, + })) + return this + } + + /** 特例:系统心跳的 ack 用的是 "_sys/ack" */ + registerHeartbeat() { + this.commands.set("heart_beat", (ack, seq) => ({ + cmd: "_sys/ack", + ack, + seq, + time: Date.now(), + body: undefined, + c: undefined, + hint: undefined, + })) + return this + } + + /** 生成最终可发送的二进制 */ + encodePacket(raw) { + if (this.encoder?.encode && this.enc) { + // 使用加密编码 + return this.encoder.encode(raw, this.enc) + } else { + // 降级到JSON字符串 + return JSON.stringify(raw) + } + } + + /** 构造报文 */ + build(cmd, ack, seq, params) { + const fn = this.commands.get(cmd) + if (!fn) throw new Error(`Unknown cmd: ${cmd}`) + return fn(ack, seq, params) + } +} + +/** 预注册游戏命令 */ +export function registerDefaultCommands(reg) { + return reg.registerHeartbeat() + // 角色/系统 + .register("role_getroleinfo", { + clientVersion: "1.65.3-wx", + inviteUid: 0, + platform: "hortor", + platformExt: "mix", + scene: "", + }) + .register("system_getdatabundlever", { isAudit: false }) + .register("system_buygold", { buyNum: 1 }) + .register("system_claimhangupreward") + .register("system_signinreward") + + // 任务相关 + .register("task_claimdailypoint", { taskId: 1 }) + .register("task_claimdailyreward", { rewardId: 0 }) + .register("task_claimweekreward", { rewardId: 0 }) + + // 好友/招募 + .register("friend_batch", { friendId: 0 }) + .register("hero_recruit", { byClub: false, recruitNumber: 1, recruitType: 3 }) + .register("item_openbox", { itemId: 2001, number: 10 }) + + // 竞技场 + .register("arena_startarea") + .register("arena_getareatarget", { refresh: false }) + .register("fight_startareaarena", { targetId: 530479307 }) + .register("arena_getarearank", { rankType: 0 }) + + // 商店 + .register("store_goodslist", { storeId: 1 }) + .register("store_buy", { goodsId: 1 }) + .register("store_refresh", { storeId: 1 }) + + // 军团 + .register("legion_getinfo") + .register("legion_signin") + .register("legion_getwarrank") + + // 邮件 + .register("mail_getlist", { category: [0, 4, 5], lastId: 0, size: 60 }) + .register("mail_claimallattachment", { category: 0 }) + + // 学习问答 + .register("study_startgame") + .register("study_answer") + .register("study_claimreward", { rewardId: 1 }) + + // 战斗相关 + .register("fight_starttower") + .register("fight_startboss") + .register("fight_startlegionboss") + .register("fight_startdungeon") + .register("fight_startpvp") + + // 瓶子机器人 + .register("bottlehelper_claim") + .register("bottlehelper_start", { bottleType: -1 }) + .register("bottlehelper_stop", { bottleType: -1 }) + + // 军团匹配和签到 + .register("legionmatch_rolesignup") + .register("legion_signin") + + // 神器抽奖 + .register("artifact_lottery", { lotteryNumber: 1, newFree: true, type: 1 }) + + // 爬塔相关 + .register("tower_getinfo") + .register("tower_claimreward") + + // 队伍相关 + .register("presetteam_getteam") + .register("presetteam_setteam") + .register("presetteam_saveteam") + .register("role_gettargetteam") + + // 排名相关 + .register("rank_getroleinfo") + + // 梦魇相关 + .register("nightmare_getroleinfo") +} + +/** + * XYZW WebSocket 客户端 + */ +export class XyzwWebSocketClient { + constructor({ url, utils, heartbeatMs = 5000 }) { + this.url = url + this.utils = utils || g_utils + this.enc = this.utils?.getEnc ? this.utils.getEnc("auto") : undefined + + this.socket = null + this.ack = 1 + this.seq = 0 + this.sendQueue = [] + this.sendQueueTimer = null + this.heartbeatTimer = null + this.heartbeatInterval = heartbeatMs + + this.dialogStatus = false + this.messageListener = null + this.showMsg = false + this.connected = false + + this.promises = Object.create(null) + this.registry = registerDefaultCommands(new CommandRegistry(this.utils, this.enc)) + + console.log('🔧 WebSocket客户端初始化:', { + url: this.url, + hasUtils: !!this.utils, + hasEnc: !!this.enc, + hasEncoder: !!this.utils?.encode + }) + + // 状态回调 + this.onConnect = null + this.onDisconnect = null + this.onError = null + } + + /** 初始化连接 */ + init() { + console.log(`🔗 连接 WebSocket: ${this.url}`) + + this.socket = new WebSocket(this.url) + + this.socket.onopen = () => { + console.log(`✅ WebSocket 连接成功`) + this.connected = true + console.log(`🔄 启动心跳机制,间隔: ${this.heartbeatInterval}ms`) + this._setupHeartbeat() + console.log(`🔄 启动消息队列处理`) + this._processQueueLoop() + if (this.onConnect) this.onConnect() + } + + this.socket.onmessage = (evt) => { + try { + let packet + if (typeof evt.data === "string") { + packet = JSON.parse(evt.data) + } else if (evt.data instanceof ArrayBuffer) { + // 二进制数据需要自动检测并解码 + packet = this.utils?.parse ? this.utils.parse(evt.data, "auto") : evt.data + } else if (evt.data instanceof Blob) { + // 处理Blob数据 + console.log('📦 收到Blob数据, 大小:', evt.data.size) + evt.data.arrayBuffer().then(buffer => { + try { + packet = this.utils?.parse ? this.utils.parse(buffer, "auto") : buffer + console.log('📦 Blob解析结果:', packet) + + // 处理消息体解码(ProtoMsg会自动解码) + if (packet instanceof Object && packet.rawData !== undefined) { + console.log('✅ ProtoMsg消息,使用rawData:', packet.rawData) + } else if (packet.body && packet.body instanceof Uint8Array) { + try { + if (this.utils && this.utils.bon && this.utils.bon.decode) { + const decodedBody = this.utils.bon.decode(packet.body) + console.log('✅ 手动解码消息体成功:', decodedBody) + // 不修改packet.body,而是创建一个新的属性存储解码后的数据 + packet.decodedBody = decodedBody + } else { + console.warn('⚠️ BON解码器不可用:', this.utils) + } + } catch (error) { + console.warn('❌ 消息体解码失败:', error) + } + } + + if (this.showMsg) { + console.log(`📨 收到消息(Blob解析后):`, packet) + } + + // 回调处理 + if (this.messageListener) { + this.messageListener(packet) + } + + // Promise 响应处理 + this._handlePromiseResponse(packet) + + } catch (error) { + console.error('❌ Blob解析失败:', error) + } + }) + return // 异步处理,直接返回 + } else { + console.warn('⚠️ 未知数据类型:', typeof evt.data, evt.data) + packet = evt.data + } + + if (this.showMsg) { + console.log(`📨 收到消息:`, packet) + } + + // 处理消息体解码(ProtoMsg会自动解码) + if (packet instanceof Object && packet.rawData !== undefined) { + console.log('✅ ProtoMsg消息,使用rawData:', packet.rawData) + } else if (packet.body && packet.body instanceof Uint8Array) { + try { + if (this.utils && this.utils.bon && this.utils.bon.decode) { + const decodedBody = this.utils.bon.decode(packet.body) + console.log('✅ 手动解码消息体成功:', decodedBody) + // 不修改packet.body,而是创建一个新的属性存储解码后的数据 + packet.decodedBody = decodedBody + } else { + console.warn('⚠️ BON解码器不可用:', this.utils) + } + } catch (error) { + console.warn('❌ 消息体解码失败:', error) + } + } + + // 回调处理 + if (this.messageListener) { + this.messageListener(packet) + } + + // Promise 响应处理 + this._handlePromiseResponse(packet) + + } catch (error) { + console.error(`❌ 消息处理失败:`, error) + } + } + + this.socket.onclose = (evt) => { + console.log(`🔌 WebSocket 连接关闭:`, evt.code, evt.reason) + console.log(`🔍 关闭详情:`, { + code: evt.code, + reason: evt.reason || '未提供原因', + wasClean: evt.wasClean, + timestamp: new Date().toISOString() + }) + this.connected = false + this._clearTimers() + if (this.onDisconnect) this.onDisconnect(evt) + } + + this.socket.onerror = (error) => { + console.error(`❌ WebSocket 错误:`, error) + this.connected = false + this._clearTimers() + if (this.onError) this.onError(error) + } + } + + /** 注册消息回调 */ + setMessageListener(fn) { + this.messageListener = fn + } + + /** 控制台消息开关 */ + setShowMsg(val) { + this.showMsg = !!val + } + + /** 重连 */ + reconnect() { + this.disconnect() + setTimeout(() => this.init(), 1000) + } + + /** 断开连接 */ + disconnect() { + if (this.socket) { + this.socket.close() + this.socket = null + } + this.connected = false + this._clearTimers() + } + + /** 发送消息 */ + send(cmd, params = {}, options = {}) { + if (!this.connected) { + console.warn(`⚠️ WebSocket 未连接,消息已入队: ${cmd}`) + if (!this.dialogStatus) { + this.dialogStatus = true + this.reconnect() + setTimeout(() => { this.dialogStatus = false }, 2000) + } + } + + const task = { + cmd, + params, + respKey: options.respKey || cmd, + sleep: options.sleep || 0, + onSent: options.onSent + } + + this.sendQueue.push(task) + return task + } + + /** Promise 版发送 */ + sendWithPromise(cmd, params = {}, timeoutMs = 5000) { + const respKey = `${cmd}_${this.seq + 1}` + + return new Promise((resolve, reject) => { + if (!this.connected && !this.socket) { + return reject(new Error("WebSocket 连接已关闭")) + } + + // 设置 Promise 状态 + this.promises[respKey] = { resolve, reject } + + // 超时处理 + const timer = setTimeout(() => { + delete this.promises[respKey] + reject(new Error(`请求超时: ${cmd} (${timeoutMs}ms)`)) + }, timeoutMs) + + // 发送消息 + this.send(cmd, params, { + respKey, + onSent: () => { + clearTimeout(timer) + } + }) + }) + } + + /** 发送心跳 */ + sendHeartbeat() { + console.log('💓 发送心跳消息') + this.send("heart_beat", {}, { respKey: "_sys/ack" }) + } + + /** 获取角色信息 */ + getRoleInfo(params = {}) { + return this.sendWithPromise("role_getroleinfo", params) + } + + /** 获取数据版本 */ + getDataBundleVersion(params = {}) { + return this.sendWithPromise("system_getdatabundlever", params) + } + + /** 签到 */ + signIn() { + return this.sendWithPromise("system_signinreward") + } + + /** 领取日常任务奖励 */ + claimDailyReward(rewardId = 0) { + return this.sendWithPromise("task_claimdailyreward", { rewardId }) + } + + /** =============== 内部方法 =============== */ + + /** 设置心跳 */ + _setupHeartbeat() { + // 延迟3秒后开始发送第一个心跳,避免连接刚建立就发送 + setTimeout(() => { + if (this.connected && this.socket?.readyState === WebSocket.OPEN) { + console.log('💓 开始发送首次心跳') + this.sendHeartbeat() + } + }, 3000) + + // 设置定期心跳 + this.heartbeatTimer = setInterval(() => { + if (this.connected && this.socket?.readyState === WebSocket.OPEN) { + this.sendHeartbeat() + } else { + console.log('⚠️ 心跳检查失败: 连接状态异常') + } + }, this.heartbeatInterval) + } + + /** 队列处理循环 */ + _processQueueLoop() { + if (this.sendQueueTimer) clearInterval(this.sendQueueTimer) + + this.sendQueueTimer = setInterval(async () => { + if (!this.sendQueue.length) return + if (!this.connected || this.socket?.readyState !== WebSocket.OPEN) return + + const task = this.sendQueue.shift() + if (!task) return + + try { + // 构建报文 + const raw = this.registry.build(task.cmd, this.ack, this.seq, task.params) + if (task.cmd !== "heart_beat") this.seq++ + + // 编码并发送 + const bin = this.registry.encodePacket(raw) + this.socket?.send(bin) + + if (this.showMsg || task.cmd === "heart_beat") { + console.log(`📤 发送消息: ${task.cmd}`, task.params) + if (this.showMsg) { + console.log(`🔐 原始数据:`, raw) + console.log(`🚀 编码后数据:`, bin) + console.log(`🔧 编码类型:`, typeof bin, bin instanceof Uint8Array ? '✅ Uint8Array (加密)' : '❌ String (明文)') + if (bin instanceof Uint8Array && bin.length > 0) { + console.log(`🎯 加密验证: 前8字节 [${Array.from(bin.slice(0, 8)).join(', ')}]`) + } + } + } + + // 触发发送回调 + if (task.onSent) { + try { + task.onSent(task.respKey, task.cmd) + } catch (error) { + console.warn('发送回调执行失败:', error) + } + } + + // 可选延时 + if (task.sleep) await sleep(task.sleep) + + } catch (error) { + console.error(`❌ 发送消息失败: ${task.cmd}`, error) + } + }, 50) + } + + /** 处理 Promise 响应 */ + _handlePromiseResponse(packet) { + const cmd = packet.cmd + if (!cmd) return + + // 查找对应的 Promise + for (const [key, promise] of Object.entries(this.promises)) { + if (key.startsWith(cmd) || cmd === key) { + delete this.promises[key] + + if (packet.code === 0 || packet.code === undefined) { + promise.resolve(packet.body || packet) + } else { + promise.reject(new Error(`服务器错误: ${packet.code} - ${packet.hint || '未知错误'}`)) + } + break + } + } + } + + /** 清理定时器 */ + _clearTimers() { + if (this.heartbeatTimer) { + clearInterval(this.heartbeatTimer) + this.heartbeatTimer = null + } + if (this.sendQueueTimer) { + clearInterval(this.sendQueueTimer) + this.sendQueueTimer = null + } + } +} + +/** 默认导出 */ +export default XyzwWebSocketClient diff --git a/src/views/DailyTasks.vue b/src/views/DailyTasks.vue new file mode 100644 index 0000000..b2aad5f --- /dev/null +++ b/src/views/DailyTasks.vue @@ -0,0 +1,759 @@ + + + + + \ No newline at end of file diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue new file mode 100644 index 0000000..7056c71 --- /dev/null +++ b/src/views/Dashboard.vue @@ -0,0 +1,840 @@ + + + + + \ No newline at end of file diff --git a/src/views/GameFeatures.vue b/src/views/GameFeatures.vue new file mode 100644 index 0000000..e639135 --- /dev/null +++ b/src/views/GameFeatures.vue @@ -0,0 +1,570 @@ + + + + + diff --git a/src/views/GameRoles.vue b/src/views/GameRoles.vue new file mode 100644 index 0000000..19d7204 --- /dev/null +++ b/src/views/GameRoles.vue @@ -0,0 +1,575 @@ + + + + + \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue new file mode 100644 index 0000000..038328a --- /dev/null +++ b/src/views/Home.vue @@ -0,0 +1,605 @@ + + + + + \ No newline at end of file diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..5fe0ec7 --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,554 @@ + + + + + \ No newline at end of file diff --git a/src/views/NotFound.vue b/src/views/NotFound.vue new file mode 100644 index 0000000..721748e --- /dev/null +++ b/src/views/NotFound.vue @@ -0,0 +1,116 @@ + + + + + \ No newline at end of file diff --git a/src/views/Profile.vue b/src/views/Profile.vue new file mode 100644 index 0000000..93535d3 --- /dev/null +++ b/src/views/Profile.vue @@ -0,0 +1,558 @@ + + + + + \ No newline at end of file diff --git a/src/views/Register.vue b/src/views/Register.vue new file mode 100644 index 0000000..ba603be --- /dev/null +++ b/src/views/Register.vue @@ -0,0 +1,333 @@ + + + + + \ No newline at end of file diff --git a/src/views/TokenImport.vue b/src/views/TokenImport.vue new file mode 100644 index 0000000..794b4d9 --- /dev/null +++ b/src/views/TokenImport.vue @@ -0,0 +1,1044 @@ + + + + + \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..4dd97be --- /dev/null +++ b/vite.config.js @@ -0,0 +1,36 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import path from 'path' + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': path.resolve(__dirname, 'src'), + '@components': path.resolve(__dirname, 'src/components'), + '@views': path.resolve(__dirname, 'src/views'), + '@assets': path.resolve(__dirname, 'src/assets'), + '@utils': path.resolve(__dirname, 'src/utils'), + '@api': path.resolve(__dirname, 'src/api'), + '@stores': path.resolve(__dirname, 'src/stores') + } + }, + server: { + port: 3000, + open: true, + proxy: { + '/api': { + target: 'http://xyzw.my', + changeOrigin: true, + rewrite: (path) => path + } + } + }, + css: { + preprocessorOptions: { + scss: { + additionalData: '@use "@/assets/styles/variables.scss" as vars;' + } + } + } +}) \ No newline at end of file