From 2b2b22212d90405d7559aca170524b916c253ff4 Mon Sep 17 00:00:00 2001 From: zhy Date: Thu, 5 Mar 2026 14:20:30 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9Ainit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/random-password/.gitignore | 40 + plugins/random-password/README.md | 281 +++ plugins/random-password/index.html | 11 + plugins/random-password/package-lock.json | 1712 +++++++++++++++++ plugins/random-password/package.json | 21 + plugins/random-password/public/logo-v2.png | Bin 0 -> 43250 bytes plugins/random-password/public/plugin.json | 25 + plugins/random-password/src/App.vue | 38 + .../random-password/src/Password/index.vue | 648 +++++++ plugins/random-password/src/env.d.ts | 10 + plugins/random-password/src/main.css | 75 + plugins/random-password/src/main.ts | 5 + plugins/random-password/tsconfig.json | 19 + plugins/random-password/vite.config.js | 8 + 14 files changed, 2893 insertions(+) create mode 100644 plugins/random-password/.gitignore create mode 100644 plugins/random-password/README.md create mode 100644 plugins/random-password/index.html create mode 100644 plugins/random-password/package-lock.json create mode 100644 plugins/random-password/package.json create mode 100644 plugins/random-password/public/logo-v2.png create mode 100644 plugins/random-password/public/plugin.json create mode 100644 plugins/random-password/src/App.vue create mode 100644 plugins/random-password/src/Password/index.vue create mode 100644 plugins/random-password/src/env.d.ts create mode 100644 plugins/random-password/src/main.css create mode 100644 plugins/random-password/src/main.ts create mode 100644 plugins/random-password/tsconfig.json create mode 100644 plugins/random-password/vite.config.js diff --git a/plugins/random-password/.gitignore b/plugins/random-password/.gitignore new file mode 100644 index 00000000..cf49d6f2 --- /dev/null +++ b/plugins/random-password/.gitignore @@ -0,0 +1,40 @@ +# Dependencies +node_modules/ + +# Build outputs +dist/ +dist-ssr/ +.vite/ +coverage/ + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Environment files +.env +.env.* +!.env.example + +# IDE / Editor +.idea/ +.vscode/ +*.iml +*.suo +*.user +*.userossc +*.swp +*.swo + +# OS files +.DS_Store +Thumbs.db +Desktop.ini + +# Temp files +*.tmp +*.temp diff --git a/plugins/random-password/README.md b/plugins/random-password/README.md new file mode 100644 index 00000000..ab8f6775 --- /dev/null +++ b/plugins/random-password/README.md @@ -0,0 +1,281 @@ +# random-password + +> 轻量随机密码插件,快速生成安全密码 + +这是一个使用 **Vue 3 + Vite + TypeScript** 构建的 ZTools 插件。 + +## ✨ 功能特性 + +### 📌 已包含的示例功能 + +- **Hello** - 基础功能指令示例 + - 触发指令:`你好` / `hello` + - 展示简单的 Vue 组件界面 + +- **读文件** - 文件读取功能示例 + - 功能指令:`读文件` + - 匹配指令:支持拖拽文件触发 + - 演示如何使用 Node.js 能力读取文件内容 + +- **保存为文件** - 文件写入功能示例 + - 匹配指令:任意文本/图片 → `保存为文件` + - 演示如何将剪贴板内容保存为文件 + +## 📁 项目结构 + +``` +. +├── public/ +│ ├── logo.png # 插件图标 +│ ├── plugin.json # 插件配置文件 +│ └── preload/ # Preload 脚本目录 +│ ├── package.json # Preload 依赖配置 +│ └── services.js # Node.js 能力扩展 +├── src/ +│ ├── main.ts # 入口文件 +│ ├── main.css # 全局样式 +│ ├── App.vue # 根组件 +│ ├── env.d.ts # 类型声明 +│ ├── Hello/ # Hello 功能组件 +│ │ └── index.vue +│ ├── Read/ # 读文件功能组件 +│ │ └── index.vue +│ └── Write/ # 写文件功能组件 +│ └── index.vue +├── index.html # HTML 模板 +├── vite.config.js # Vite 配置 +├── tsconfig.json # TypeScript 配置 +├── package.json # 项目依赖 +└── README.md # 项目文档 +``` + +## 🚀 快速开始 + +### 安装依赖 + +```bash +npm install +``` + +### 开发模式 + +```bash +npm run dev +``` + +开发服务器将在 `http://localhost:5173` 启动。ZTools 会自动加载开发版本。 + +### 构建生产版本 + +```bash +npm run build +``` + +构建产物将输出到 `dist/` 目录。 + +## 📖 开发指南 + +### 1. 修改插件配置 + +编辑 `public/plugin.json` 文件: + +```json +{ + "name": "你的插件名称", + "description": "插件描述", + "author": "作者名称", + "version": "1.0.0", + "features": [ + // 添加你的功能配置 + ] +} +``` + +### 2. 创建新功能 + +#### 步骤 1: 创建 Vue 组件 + +在 `src/` 目录下创建新的功能组件: + +```vue + + + + + + +``` + +#### 步骤 2: 注册路由 + +在 `src/App.vue` 中添加路由: + +```vue + +``` + +#### 步骤 3: 配置功能 + +在 `plugin.json` 中添加功能配置: + +```json +{ + "code": "myfeature", + "explain": "我的新功能", + "icon": "logo.png", + "cmds": ["触发指令"] +} +``` + +### 3. 使用 Node.js 能力 + +#### 扩展 Preload 服务 + +编辑 `public/preload/services.js`: + +```javascript +const fs = require('fs') +const path = require('path') + +module.exports = { + // 示例:读取文件 + readFile: (filePath) => { + return fs.readFileSync(filePath, 'utf-8') + }, + + // 添加你的服务 + myService: (params) => { + // 实现你的逻辑 + return result + } +} +``` + +#### 在 Vue 组件中调用 + +```vue + +``` + +### 4. 使用 ZTools API + +```vue + +``` + +## 🎨 样式开发 + +### 使用 CSS 变量 + +ZTools 提供了一套 CSS 变量用于主题适配: + +```css +.my-component { + background: var(--bg-color); + color: var(--text-color); + border: 1px solid var(--border-color); +} +``` + +### 暗色模式支持 + +```css +@media (prefers-color-scheme: dark) { + .my-component { + /* 暗色模式样式 */ + } +} +``` + +## 📦 构建与发布 + +### 1. 构建插件 + +```bash +npm run build +``` + +### 2. 测试构建产物 + +将 `dist/` 目录中的所有文件复制到 ZTools 插件目录进行测试。 + +### 3. 发布到插件市场 + +1. 确保 `plugin.json` 中的信息完整准确 +2. 准备好插件截图和详细说明 +3. 访问 ZTools 插件市场提交插件 + +## 📚 相关资源 + +- [ZTools 官方文档](https://github.com/ztool-center/ztools) +- [ZTools API 文档](https://github.com/ztool-center/ztools-api-types) +- [Vue 3 文档](https://vuejs.org/) +- [Vite 文档](https://vitejs.dev/) + +## ❓ 常见问题 + +### Q: 如何调试插件? + +A: 使用 `npm run dev` 启动开发服务器,在插件界面中点击插件头像图标,在弹出的菜单中选择"打开开发者工具"进行调试。 + +### Q: 如何访问 Node.js 能力? + +A: 通过 `public/preload/services.js` 文件扩展服务,然后在组件中使用 `window.services` 调用。 + +### Q: 插件图标不显示? + +A: 确保 `public/logo.png` 文件存在,且在 `plugin.json` 中正确配置了 `logo` 字段。 + +### Q: 如何处理大文件上传? + +A: 建议使用 Node.js 流式处理,在 preload 脚本中实现文件分块处理逻辑。 + +## 📄 开源协议 + +MIT License + +--- + +**祝你开发愉快!** 🎉 diff --git a/plugins/random-password/index.html b/plugins/random-password/index.html new file mode 100644 index 00000000..eaa17316 --- /dev/null +++ b/plugins/random-password/index.html @@ -0,0 +1,11 @@ + + + + + + + +
+ + + diff --git a/plugins/random-password/package-lock.json b/plugins/random-password/package-lock.json new file mode 100644 index 00000000..849b3f93 --- /dev/null +++ b/plugins/random-password/package-lock.json @@ -0,0 +1,1712 @@ +{ + "name": "random-password", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "random-password", + "version": "1.0.0", + "dependencies": { + "naive-ui": "^2.43.2", + "vue": "^3.5.13" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "@ztools-center/ztools-api-types": "^1.0.1", + "typescript": "^5.3.0", + "vite": "^6.0.11", + "vue-tsc": "^2.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@css-render/plugin-bem": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@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://registry.npmjs.org/@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://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "license": "Apache-2.0" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@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/@volar/language-core": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.15.tgz", + "integrity": "sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.15" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.15.tgz", + "integrity": "sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.15", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.15.tgz", + "integrity": "sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", + "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@vue/compiler-core": "3.5.29", + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", + "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/language-core": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.12.tgz", + "integrity": "sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.15", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", + "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz", + "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/shared": "3.5.29" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", + "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.29", + "@vue/runtime-core": "3.5.29", + "@vue/shared": "3.5.29", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz", + "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "vue": "3.5.29" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "license": "MIT" + }, + "node_modules/@ztools-center/ztools-api-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@ztools-center/ztools-api-types/-/ztools-api-types-1.0.3.tgz", + "integrity": "sha512-dv1eOAIasAupqKaQL/gESk1i2+RebdM/1gvZhrvH2D/bo3enCUsAGJ8nrHnlCLBSOGB81eC/SU0IH8BNsUlmvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/alien-signals": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.13.tgz", + "integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/css-render": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-tz": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/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/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/evtd": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz", + "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/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/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/naive-ui": { + "version": "2.43.2", + "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.43.2.tgz", + "integrity": "sha512-YlLMnGrwGTOc+zMj90sG3ubaH5/7czsgLgGcjTLA981IUaz8r6t4WIujNt8r9PNr+dqv6XNEr0vxkARgPPjfBQ==", + "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.17.20", + "@types/lodash-es": "^4.17.12", + "async-validator": "^4.2.5", + "css-render": "^0.15.14", + "csstype": "^3.1.3", + "date-fns": "^4.1.0", + "date-fns-tz": "^3.2.0", + "evtd": "^0.2.4", + "highlight.js": "^11.8.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "seemly": "^0.3.10", + "treemate": "^0.3.11", + "vdirs": "^0.1.8", + "vooks": "^0.2.12", + "vueuc": "^0.4.65" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "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/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "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.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/seemly": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.10.tgz", + "integrity": "sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/treemate": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/treemate/-/treemate-0.3.11.tgz", + "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vdirs": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/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": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.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 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vooks": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/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/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz", + "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.29", + "@vue/compiler-sfc": "3.5.29", + "@vue/runtime-dom": "3.5.29", + "@vue/server-renderer": "3.5.29", + "@vue/shared": "3.5.29" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-tsc": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.12.tgz", + "integrity": "sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "2.4.15", + "@vue/language-core": "2.2.12" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vueuc": { + "version": "0.4.65", + "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.65.tgz", + "integrity": "sha512-lXuMl+8gsBmruudfxnMF9HW4be8rFziylXFu1VHVNbLVhRTXXV4njvpRuJapD/8q+oFEMSfQMH16E/85VoWRyQ==", + "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" + } + } + } +} diff --git a/plugins/random-password/package.json b/plugins/random-password/package.json new file mode 100644 index 00000000..d5722958 --- /dev/null +++ b/plugins/random-password/package.json @@ -0,0 +1,21 @@ +{ + "name": "random-password", + "version": "1.0.1", + "description": "轻量随机密码插件,快速生成安全密码", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc && vite build" + }, + "dependencies": { + "naive-ui": "^2.43.2", + "vue": "^3.5.13" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "@ztools-center/ztools-api-types": "^1.0.1", + "typescript": "^5.3.0", + "vite": "^6.0.11", + "vue-tsc": "^2.0.0" + } +} diff --git a/plugins/random-password/public/logo-v2.png b/plugins/random-password/public/logo-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..310ac9f171b26721a40908ddba432eaac7037340 GIT binary patch literal 43250 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 Y$${o@$*$0H5b!g +import { onMounted, ref } from 'vue' +import Password from './Password/index.vue' + +const route = ref('') +const enterAction = ref(null) + +function getZtoolsApi(): ZToolsApi | null { + const api = (window as any).ztools + if (!api || typeof api !== 'object') { + return null + } + return api as ZToolsApi +} + +onMounted(() => { + const ztoolsApi = getZtoolsApi() + + if (!ztoolsApi) { + route.value = 'password' + return + } + + ztoolsApi.onPluginEnter((action) => { + route.value = action.code + enterAction.value = action + }) + + ztoolsApi.onPluginOut(() => { + route.value = '' + enterAction.value = null + }) +}) + + + diff --git a/plugins/random-password/src/Password/index.vue b/plugins/random-password/src/Password/index.vue new file mode 100644 index 00000000..9e0fea61 --- /dev/null +++ b/plugins/random-password/src/Password/index.vue @@ -0,0 +1,648 @@ + + + + + diff --git a/plugins/random-password/src/env.d.ts b/plugins/random-password/src/env.d.ts new file mode 100644 index 00000000..c3f35ed9 --- /dev/null +++ b/plugins/random-password/src/env.d.ts @@ -0,0 +1,10 @@ +/// +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent, Record, unknown> + export default component +} + +export {} diff --git a/plugins/random-password/src/main.css b/plugins/random-password/src/main.css new file mode 100644 index 00000000..056a0e78 --- /dev/null +++ b/plugins/random-password/src/main.css @@ -0,0 +1,75 @@ +:root { + --rp-bg: #ebf2f8; + --rp-surface: #ffffff; + --rp-border: #d7e3ef; + --rp-text: #0f172a; + --rp-text-muted: #334155; + --rp-text-soft: #64748b; + --rp-accent: #0f766e; + --rp-scroll-track: #dce7f2; + --rp-scroll-thumb: #9fb6cd; +} + +* { + box-sizing: border-box; +} + +html, +body, +#app { + width: 100%; + min-height: 100%; + margin: 0; + padding: 0; +} + +body { + background: var(--rp-bg); + color: var(--rp-text); + font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +::-webkit-scrollbar { + width: 9px; + height: 9px; +} + +::-webkit-scrollbar-track { + background: var(--rp-scroll-track); +} + +::-webkit-scrollbar-thumb { + border-radius: 999px; + border: 2px solid var(--rp-scroll-track); + background: var(--rp-scroll-thumb); +} + +::-webkit-scrollbar-thumb:hover { + background: #7f9dbd; +} + +@media (prefers-color-scheme: dark) { + :root { + --rp-bg: #0b1220; + --rp-surface: #131d30; + --rp-border: #23324d; + --rp-text: #e2e8f0; + --rp-text-muted: #c0ccdb; + --rp-text-soft: #8ca0b7; + --rp-accent: #38bdf8; + --rp-scroll-track: #172235; + --rp-scroll-thumb: #3b526e; + } + + body { + background: var(--rp-bg); + color: var(--rp-text); + } + + ::-webkit-scrollbar-thumb:hover { + background: #4f6f92; + } +} \ No newline at end of file diff --git a/plugins/random-password/src/main.ts b/plugins/random-password/src/main.ts new file mode 100644 index 00000000..8a3c77bc --- /dev/null +++ b/plugins/random-password/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './main.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/plugins/random-password/tsconfig.json b/plugins/random-password/tsconfig.json new file mode 100644 index 00000000..39b73bc6 --- /dev/null +++ b/plugins/random-password/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "strict": false, + "noImplicitAny": false, + "types": ["@ztools-center/ztools-api-types"] + }, + "include": ["src"] +} diff --git a/plugins/random-password/vite.config.js b/plugins/random-password/vite.config.js new file mode 100644 index 00000000..7bfab103 --- /dev/null +++ b/plugins/random-password/vite.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + base: './' +})