From 30d00313600f6170e4d4eba57f3b9d920801c8a0 Mon Sep 17 00:00:00 2001 From: 404isfun Date: Tue, 29 Sep 2026 17:26:39 +0800 Subject: [PATCH] =?UTF-8?q?Add=20plugin=20Windows=20=E5=94=A4=E9=86=92?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=20v1.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat: 新增 Windows 唤醒控制插件 v1.0.0 - chore: 补充亮色/暗色界面截图,作者更新为 404isfun --- plugins/windows-awake/.gitignore | 6 + plugins/windows-awake/CHANGELOG.md | 11 + plugins/windows-awake/README.md | 96 + .../docs/screenshots/awake-dark.png | Bin 0 -> 143191 bytes .../docs/screenshots/awake-light.png | Bin 0 -> 142992 bytes plugins/windows-awake/index.html | 12 + plugins/windows-awake/logo.svg | 42 + plugins/windows-awake/package-lock.json | 2431 +++++++++++++++++ plugins/windows-awake/package.json | 28 + .../windows-awake/playwright.e2e.config.js | 17 + plugins/windows-awake/scripts/build-logo.mjs | 19 + plugins/windows-awake/scripts/build-zpx.mjs | 68 + plugins/windows-awake/src-ztools/logo.png | Bin 0 -> 7588 bytes plugins/windows-awake/src-ztools/plugin.json | 25 + .../src-ztools/preload/guard-script.js | 75 + .../src-ztools/preload/package.json | 3 + .../src-ztools/preload/services.js | 538 ++++ plugins/windows-awake/src/App.vue | 738 +++++ plugins/windows-awake/src/awake-format.ts | 71 + plugins/windows-awake/src/awake-types.ts | 60 + plugins/windows-awake/src/env.d.ts | 20 + plugins/windows-awake/src/main.css | 86 + plugins/windows-awake/src/main.ts | 5 + .../windows-awake/tests/e2e/plugin.spec.js | 515 ++++ plugins/windows-awake/tests/guard/guard.cjs | 230 ++ plugins/windows-awake/tsconfig.json | 19 + plugins/windows-awake/vite.config.js | 13 + 27 files changed, 5128 insertions(+) create mode 100644 plugins/windows-awake/.gitignore create mode 100644 plugins/windows-awake/CHANGELOG.md create mode 100644 plugins/windows-awake/README.md create mode 100644 plugins/windows-awake/docs/screenshots/awake-dark.png create mode 100644 plugins/windows-awake/docs/screenshots/awake-light.png create mode 100644 plugins/windows-awake/index.html create mode 100644 plugins/windows-awake/logo.svg create mode 100644 plugins/windows-awake/package-lock.json create mode 100644 plugins/windows-awake/package.json create mode 100644 plugins/windows-awake/playwright.e2e.config.js create mode 100644 plugins/windows-awake/scripts/build-logo.mjs create mode 100644 plugins/windows-awake/scripts/build-zpx.mjs create mode 100644 plugins/windows-awake/src-ztools/logo.png create mode 100644 plugins/windows-awake/src-ztools/plugin.json create mode 100644 plugins/windows-awake/src-ztools/preload/guard-script.js create mode 100644 plugins/windows-awake/src-ztools/preload/package.json create mode 100644 plugins/windows-awake/src-ztools/preload/services.js create mode 100644 plugins/windows-awake/src/App.vue create mode 100644 plugins/windows-awake/src/awake-format.ts create mode 100644 plugins/windows-awake/src/awake-types.ts create mode 100644 plugins/windows-awake/src/env.d.ts create mode 100644 plugins/windows-awake/src/main.css create mode 100644 plugins/windows-awake/src/main.ts create mode 100644 plugins/windows-awake/tests/e2e/plugin.spec.js create mode 100644 plugins/windows-awake/tests/guard/guard.cjs create mode 100644 plugins/windows-awake/tsconfig.json create mode 100644 plugins/windows-awake/vite.config.js diff --git a/plugins/windows-awake/.gitignore b/plugins/windows-awake/.gitignore new file mode 100644 index 000000000..23ce87649 --- /dev/null +++ b/plugins/windows-awake/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +src-ztools/dist/ +test-results/ +playwright-report/ +release/ +*.local diff --git a/plugins/windows-awake/CHANGELOG.md b/plugins/windows-awake/CHANGELOG.md new file mode 100644 index 000000000..14c4a3b4c --- /dev/null +++ b/plugins/windows-awake/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + +## 1.0.0 - 2026-09-29 + +### Added + +- 首个版本:通过 Windows `SetThreadExecutionState` 阻止系统自动睡眠,可选是否同时保持屏幕点亮。 +- 唤醒时长支持 15 分钟 / 30 分钟 / 1 小时 / 2 小时 / 一直保持,以及 1 - 1440 分钟的自定义时长。 +- 息屏策略支持「不允许息屏」与「允许息屏」,运行中可随时切换并保留剩余时间,时长按新值重新计时。 +- 时长与息屏策略通过 ZTools 存储保存,插件或宿主重启后仍然保留。 +- 后台 PowerShell 守护进程按心跳与进程存在性上报真实状态,退出 ZTools 时自动清理,且不修改系统电源计划。 diff --git a/plugins/windows-awake/README.md b/plugins/windows-awake/README.md new file mode 100644 index 000000000..779c4dc71 --- /dev/null +++ b/plugins/windows-awake/README.md @@ -0,0 +1,96 @@ +# Windows 唤醒控制 + +通过 Windows 的 `SetThreadExecutionState` 阻止系统自动睡眠(可选同时保持屏幕点亮), +可以设置唤醒时长,也可以一直保持。 + +- 唤醒时长:15 分钟 / 30 分钟 / 1 小时 / 2 小时 / 一直保持 / 自定义(1 - 1440 分钟) +- 息屏策略:不允许息屏(`ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED`)或允许息屏(仅 `ES_SYSTEM_REQUIRED`) +- 只提交执行状态请求,不修改系统电源计划,到时自动释放 +- 运行中可以随时调整时长与息屏策略:时长按新值重新计时,策略立即生效并保留剩余时间 +- 关闭 ZTools 窗口后唤醒继续在后台保持;退出 ZTools 时守护进程自动清理 + +## 工作原理 + +`src-ztools/preload/services.js` 在插件数据目录写入 `awake-guard.ps1`,并用隐藏窗口的 +PowerShell 启动它。守护进程调用 `SetThreadExecutionState(ES_CONTINUOUS | ...)` 后保持存活, +按秒刷新心跳文件,直到以下任一情况发生: + +- 页面请求停止(写入 `guard-stop.flag`) +- 到达设定时长 +- 宿主 ZTools 进程退出(守护进程检查父进程号,缺失时退回按进程名判断) + +进程结束时 Windows 自动释放执行状态,界面通过心跳与进程存在性判断真实状态。 +页面只调用 `window.awakeBridge` 的 `start` / `stop` / `getStatus` / `getConfig` / `saveConfig`。 + +运行期间会在 ZTools 数据目录的 `windows-awake/` 子目录写入守护脚本、状态文件与心跳文件。 + +## 开发 + +```bash +npm install +npm run dev +``` + +开发页面默认运行在 `http://localhost:5173`,ZTools 从 +`src-ztools/plugin.json` 的 `development.main` 加载该页面。 + +## 构建 + +```bash +npm run build +``` + +构建脚本会完成类型检查和 Vite 页面构建。可安装的插件目录是 `src-ztools/`: + +- `plugin.json` +- `logo.png`(由 `logo.svg` 经 `npm run build:logo` 生成) +- `preload/` 及其 CommonJS 声明 +- `dist/` 中的 `index.html` 和前端资源 + +`src-ztools/plugin.json` 保持 `main: dist/index.html`,因此 `dist/` 只负责承载 +页面构建结果,不重复存放清单、Logo 或 preload。 + +## 测试 + +```bash +npm run test:guard # 直接驱动 PowerShell 守护进程,验证标志位、定时与自动清理 +npm run test:e2e # 在隔离的真实 ZTools 中安装插件并验证完整业务闭环 +``` + +`test:e2e` 覆盖:插件安装与页面绘制、开始/停止保持唤醒、真实守护进程与标志位、 +运行中切换息屏策略、一直保持与自定义时长、设置跨宿主重启保留、退出宿主后无残余进程、 +亮色与暗色主题截图。 + +## 打包与本地安装 + +```bash +npm run package:zpx +``` + +生成 `release/windows-awake-<版本>.zpx`(gzip 压缩的 asar,即 ZTools 的本地插件包格式), +打包副本会自动移除 `development` 入口,安装后的插件只加载本地构建页面。 + +安装方式: + +1. 执行 `ZTools.exe <插件包绝对路径>`,已运行的实例会打开「安装插件」页面并预览插件信息; + 也可以直接双击 `.zpx` 文件,或在 ZTools 设置中导入该文件。 +2. 确认插件信息后点击安装,并在「安全提示」中确认继续安装。 +3. 安装完成后搜索 `保持唤醒` / `唤醒控制` / `不锁屏` / `awake` 即可打开插件。 + +开发调试时也可以在 ZTools 的插件开发入口把 `src-ztools/` 作为开发项目导入, +直接加载 `npm run dev` 的开发页面。 + +## 结构 + +```text +logo.svg 图标源文件 +scripts/build-logo.mjs SVG → src-ztools/logo.png +scripts/build-zpx.mjs src-ztools → release/*.zpx +src/ Vue 页面源码 +src-ztools/plugin.json 插件清单 +src-ztools/preload/ 守护脚本与最小 preload 桥接 +src-ztools/dist/ Vite 页面构建结果 +release/ 本地安装包(npm run package:zpx 生成) +tests/guard/ 守护进程行为测试 +tests/e2e/ 真实 Electron 端到端测试 +``` diff --git a/plugins/windows-awake/docs/screenshots/awake-dark.png b/plugins/windows-awake/docs/screenshots/awake-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..2680cda64df0040a4ca7f45fe12ff096687a1694 GIT binary patch literal 143191 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
+ + + diff --git a/plugins/windows-awake/logo.svg b/plugins/windows-awake/logo.svg new file mode 100644 index 000000000..524f5e971 --- /dev/null +++ b/plugins/windows-awake/logo.svg @@ -0,0 +1,42 @@ + + Windows 唤醒控制 + 蓝色渐变圆角方块中央是一只冒着热气的咖啡杯,代表保持系统唤醒。 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/windows-awake/package-lock.json b/plugins/windows-awake/package-lock.json new file mode 100644 index 000000000..a469ffa26 --- /dev/null +++ b/plugins/windows-awake/package-lock.json @@ -0,0 +1,2431 @@ +{ + "name": "windows-awake", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "windows-awake", + "version": "1.0.0", + "dependencies": { + "vue": "^3.5.13" + }, + "devDependencies": { + "@electron/asar": "^4.3.1", + "@playwright/test": "^1.52.0", + "@vitejs/plugin-vue": "^5.2.1", + "@ztools-center/ztools-api-types": "^1.0.1", + "sharp": "^0.35.5", + "typescript": "^5.3.0", + "vite": "^6.0.11", + "vue-tsc": "^2.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@electron/asar": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-4.3.1.tgz", + "integrity": "sha512-6pI64z/tMSBkUTZLQFYhs2YiB7fS9sKA6gy7/2nH1Ju7GGwT32UPsj4Mxsws5NMmtR6C0zYdXVxEU/rGqJRCJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^13.0.2", + "minimatch": "^10.0.1" + }, + "bin": { + "asar": "bin/asar.mjs" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@electron/asar/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "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/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "license": "MIT" + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@playwright/test": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", + "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.5.tgz", + "integrity": "sha512-J25QJU+B78T4FhhBsNpLJyVWOi31mwtpcMwywHmOKH65Q9IWGA81gPj+dnwlhU8wktVriYE+tFAaQgrnJRzAZg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.5.tgz", + "integrity": "sha512-LDopB3zuZM5Ux9TT2luNEBJW/tYbGU2g1d+VpKk6I+gSKDb+/7sYE6M225gRQt4RbMX6MSwMsVR/phdjVUgRLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.5.tgz", + "integrity": "sha512-wlJEERGfeuHeBavCL2qVnNacOK43NDoZM4sjkeRPymd04OAE9T1zBqDJgmZ+CIsPTYKwdzpUC8vmOw84dwY4Tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.5.tgz", + "integrity": "sha512-4nJJGg5jbo2wwPP4JP+LfEBA3bvP8rU9CLuhp7jWvq9sxEyhjQFTFdrqi+/dHEin/pd8jpT0vcehIpnZtmEdcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.5.tgz", + "integrity": "sha512-DrZbyCDF1hneuO6jRbvZ2D7+PIBM6yIwYnJpg2vIk58T+wuFpiaGZrfUr59lDWw45bg+IrpTGLPiNi/Fk4w3Cg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.5.tgz", + "integrity": "sha512-gqfUVMJMB3mehqywxp6hTBFfgtMQykZY19+cfiaYP0toIJLb/1DZRJHVkQQGP13W4TAwfZDWeg1qBcheTRioXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.5.tgz", + "integrity": "sha512-CFmhpvAwzSaWMlN3VN7UtmoTihlZNzoP0juQib5TQRnYUyDV8dXeWOp29sobWAT6gXl/hQgAClLlEiYozQG3OQ==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.5.tgz", + "integrity": "sha512-Uc9H8eXCOayV6JLTH5bXKMId6qbhNHa818/BgYjm4jrlq3vZquC9cqyvHBw17xy5Mnj5f+I3gFK5JcEf3hSqrw==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.5.tgz", + "integrity": "sha512-VcPr/szv/1BFw112Kt//fxulXt/JPqzzidU84iW68L2DdjnOO8QFUv2zTSYBEPHD6movBD4z+bbr5y60GYM7Jw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.5.tgz", + "integrity": "sha512-BnxtJ5/91BrIHYIkGrmjz/lbMhqEHt1dPFqIxIFR+jPn0xVc/oUSCtIT089zfp5ufwGDlYz2UC+Fe1SRBpYFbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.5.tgz", + "integrity": "sha512-LrYcHZwF+fAMNKHYTOQ5osWM4AZF7YF6D+XtsjDyEvljtt11twc+zHVXBLNEjxVSUnKYsOhvVz4Z213eW02COQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.5.tgz", + "integrity": "sha512-nj7QKQePAAUpCpJHtg0pR0W/b92A9NO17JS3BAQmHDn/yhmkir2p8llrKY9TOhleKIaSzy1JhxS3T9FVld6coA==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.5.tgz", + "integrity": "sha512-5ylkX6dWMeBKge9nTU+Rxfb+ZfaCIJ9lRqIFaK0eAMcWp7OJbYnLveLgXmm0VrvuLKb8qIK+mHyH0qu88RM+iA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.5.tgz", + "integrity": "sha512-oHK4ZHYFDKjZviK34I+NwgfbGxgI7ztrNxj2hPTSSNFgeq1a/lEd7dHV2fdGAuTH4Iym3RHJg+vAbWaWG4B7Zg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.5.tgz", + "integrity": "sha512-UcetmHZ6XOXuUByiKZyQmb55ZPr0LABr3Ec/HB9wKZn6CEAFWZkE+hsJErJ9hbPBC7nI0dKuELx7CoV6IM7TMg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.5.tgz", + "integrity": "sha512-C5CmDPQBtvjVo8cgQsBs+w6WB0JLkiixhgi6hVLV11hERWdn/p0XcPU2OUcZzac9BPOFq7SbaHFa8r3SWEysCQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.5.tgz", + "integrity": "sha512-lHVQHJFKsuuxLMi3MQO9XVL8Tje3JR82CzB+QDKC5NWBcsIWuwsn9uIM5e3lBhI+fF1/s63qnyYqsg65+8rV/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.5.tgz", + "integrity": "sha512-3W9bTFcQNJn71cSJVM9RKIiZOy8DO/XLDii8Uv/Pm6WKqDRj7JV3ZfuXIEfyuy5LXpIzAbB/1M4Ukp9GKNa7nA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.5.tgz", + "integrity": "sha512-VDC7rRJlee/scpki96GZ27Omf6yU87s1YXwVTpjE5841faVlDYYT565rgfmoR1U0sqL7z5ivQSDjcsF6VRXyBA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.5.tgz", + "integrity": "sha512-z86Ok2p4pTdv5xqCKZsTooO7yBEiaJR/HzU3Wx8RmWsPoLppnMKROhJusQob8B3IE1ghC343kUW9rC2r+Wf3ig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.5.tgz", + "integrity": "sha512-IzQmj+xXwQFGhMAMKMQVXkMwMZN3TqkJgAE0nSsqvVwWWciP4AIPMmWRqOQ2GfX7TUDZr+xqGFcBS36CRPGw0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.5.tgz", + "integrity": "sha512-F6qpTaPc9bwBH85kjy0/BLmLSW1uv7AoOXCoRIkg2arlgCYlWYcAbiMkvZuAcaWk9TpCRG//okznLAqLGshkMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.5.tgz", + "integrity": "sha512-igoDsTFhhwECBeGbUuLeIk7t8Y1apa+cs6mDWpx2EZ0ch7oEQgzHbFUXN9euoHekCAQzXdXApAGkV6jznS7tWw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.5.tgz", + "integrity": "sha512-U3teMeMbXFmaM5D+OTJpsOXd+wV/qftIeYF9kBKL4v73641qyJmoXFtA28DQLsnmlyayEsTe72xpLHrArq6vHw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.5.tgz", + "integrity": "sha512-ypfC34F3RKXvCXBglGqGMsUSMKlgwd1HX9AOAlx9RoZZ6GaI42YHVeKpzg3JG+wpBUJYTG+NNZhqbDWL8tBZkw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "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.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.43.tgz", + "integrity": "sha512-zdiLhnbe1QQqgDT8xZMpNmyqZ3qlI+/Q/FHQco57Kwl/b05HhCzN6eVGN9QU9rbga4CrS0H5SYY8VGHZCt/1Hg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@vue/shared": "3.5.43", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.43.tgz", + "integrity": "sha512-PEZoAk3NQmsn/ejMzSOCyTYqwGqczrWm70PuhBKjjv1+TCoQAaO/zOqNwjV+honlNstT5ILxtc+8r8UUfj+iEQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.43.tgz", + "integrity": "sha512-FCbrG3XNCRl+js3huuKx4IVHBLTvMkJhVepjbxSPu1gn4yWLaYtGNQdjJGZaMytXB6qb76qQDDmDSLy/vkmleQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@vue/compiler-core": "3.5.43", + "@vue/compiler-dom": "3.5.43", + "@vue/compiler-ssr": "3.5.43", + "@vue/shared": "3.5.43", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.28", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.43.tgz", + "integrity": "sha512-GF62orf7KiJX9RqrHNGrYBudsQGD0OhJ5nDs90O8UiDuS40+YMYomiXu6w6EuvtXuRDc3MSNis3EaaSKAVSWpg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "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.43", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.43.tgz", + "integrity": "sha512-G/c9GyOZNI2jVaaS6OX1EF1SSFSv7H0ERqNTl4+DTFMlZmB5eVAB53aLQNam/7NL2NPtaDD7RdVrzf8uJzMuOA==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.43.tgz", + "integrity": "sha512-hU6U6VnVhBGQDpvlnnDlIB8ZGJBiOcgk2lh/0InltHiz3D8oSkluvuvY+do1G2H3+udeKFsmaBlgVYP7gXQzEw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.43.tgz", + "integrity": "sha512-Bb2Jc0YjjJdMt1SJmb9b2L/IWd3I8lIT9x9eS/xvvP9CiVgna0ffua74xKRmt4/uSJ+0r4iN8ex1jrqkhQGWQw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.43", + "@vue/runtime-core": "3.5.43", + "@vue/shared": "3.5.43", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.43.tgz", + "integrity": "sha512-l2Ygjv9NehV94PSBxNWsAHC0j/eIIKbn92mBuWXAPGLnn6HfJ6MH5ubsd+Nk0YoZ5FRuxWI1P2VSoh+dbPQhCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.43", + "@vue/runtime-dom": "3.5.43", + "@vue/shared": "3.5.43" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.43.tgz", + "integrity": "sha512-uksS7YGMR5NZyr4JNq0Rp+QyLns0ueaz20KwzIPW9R0LH1Vnt4E+XUM29PNseEbf1www2gOuhuDi5AKOIXag9Q==", + "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/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.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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/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/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "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/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/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "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/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/nanoid": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "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/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "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.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.63.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.5.tgz", + "integrity": "sha512-KRWwmNLlPw5M7HcdYfm15oBv9n9LPtjzpzCIxS/phwqvPyxHSoKX6Y2YU3pxSPfy0CLquVgsx/j/hBi6OvH1Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.5", + "@rollup/rollup-android-arm64": "4.63.5", + "@rollup/rollup-darwin-arm64": "4.63.5", + "@rollup/rollup-darwin-x64": "4.63.5", + "@rollup/rollup-freebsd-arm64": "4.63.5", + "@rollup/rollup-freebsd-x64": "4.63.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.5", + "@rollup/rollup-linux-arm-musleabihf": "4.63.5", + "@rollup/rollup-linux-arm64-gnu": "4.63.5", + "@rollup/rollup-linux-arm64-musl": "4.63.5", + "@rollup/rollup-linux-loong64-gnu": "4.63.5", + "@rollup/rollup-linux-loong64-musl": "4.63.5", + "@rollup/rollup-linux-ppc64-gnu": "4.63.5", + "@rollup/rollup-linux-ppc64-musl": "4.63.5", + "@rollup/rollup-linux-riscv64-gnu": "4.63.5", + "@rollup/rollup-linux-riscv64-musl": "4.63.5", + "@rollup/rollup-linux-s390x-gnu": "4.63.5", + "@rollup/rollup-linux-x64-gnu": "4.63.5", + "@rollup/rollup-linux-x64-musl": "4.63.5", + "@rollup/rollup-openbsd-x64": "4.63.5", + "@rollup/rollup-openharmony-arm64": "4.63.5", + "@rollup/rollup-win32-arm64-msvc": "4.63.5", + "@rollup/rollup-win32-ia32-msvc": "4.63.5", + "@rollup/rollup-win32-x64-gnu": "4.63.5", + "@rollup/rollup-win32-x64-msvc": "4.63.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "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/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "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/vscode-uri": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.2.0.tgz", + "integrity": "sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.43", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.43.tgz", + "integrity": "sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.43", + "@vue/compiler-sfc": "3.5.43", + "@vue/runtime-dom": "3.5.43", + "@vue/server-renderer": "3.5.43", + "@vue/shared": "3.5.43" + }, + "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" + } + } + } +} diff --git a/plugins/windows-awake/package.json b/plugins/windows-awake/package.json new file mode 100644 index 000000000..fc85592f0 --- /dev/null +++ b/plugins/windows-awake/package.json @@ -0,0 +1,28 @@ +{ + "name": "windows-awake", + "version": "1.0.0", + "description": "保持 Windows 唤醒,可设置唤醒时长并选择是否允许息屏", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "build:logo": "node scripts/build-logo.mjs", + "package:zpx": "npm run build && node scripts/build-zpx.mjs", + "preview": "vite preview", + "test:guard": "node tests/guard/guard.cjs", + "test:e2e": "npm run build && playwright test --config=playwright.e2e.config.js" + }, + "dependencies": { + "vue": "^3.5.13" + }, + "devDependencies": { + "@electron/asar": "^4.3.1", + "@playwright/test": "^1.52.0", + "@vitejs/plugin-vue": "^5.2.1", + "@ztools-center/ztools-api-types": "^1.0.1", + "sharp": "^0.35.5", + "typescript": "^5.3.0", + "vite": "^6.0.11", + "vue-tsc": "^2.0.0" + } +} diff --git a/plugins/windows-awake/playwright.e2e.config.js b/plugins/windows-awake/playwright.e2e.config.js new file mode 100644 index 000000000..0bda756c4 --- /dev/null +++ b/plugins/windows-awake/playwright.e2e.config.js @@ -0,0 +1,17 @@ +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: './tests/e2e', + outputDir: './test-results/playwright', + timeout: 45_000, + expect: { + timeout: 15_000, + }, + workers: 1, + fullyParallel: false, + reporter: [['list']], + use: { + trace: 'retain-on-failure', + screenshot: 'only-on-failure', + }, +}) diff --git a/plugins/windows-awake/scripts/build-logo.mjs b/plugins/windows-awake/scripts/build-logo.mjs new file mode 100644 index 000000000..c17230eaa --- /dev/null +++ b/plugins/windows-awake/scripts/build-logo.mjs @@ -0,0 +1,19 @@ +// 将 logo.svg 渲染为插件清单引用的 src-ztools/logo.png。 +// 仅在需要重新生成图标时运行:node scripts/build-logo.mjs +import { readFile, writeFile } from 'node:fs/promises' +import { fileURLToPath } from 'node:url' +import path from 'node:path' +import sharp from 'sharp' + +const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') +const sourcePath = path.join(projectRoot, 'logo.svg') +const targetPath = path.join(projectRoot, 'src-ztools', 'logo.png') + +const svg = await readFile(sourcePath) +const png = await sharp(svg, { density: 384 }) + .resize(256, 256, { fit: 'contain', background: { r: 0, g: 0, b: 0, alpha: 0 } }) + .png({ compressionLevel: 9 }) + .toBuffer() + +await writeFile(targetPath, png) +console.log(`已生成 ${targetPath}(${png.length} 字节)`) diff --git a/plugins/windows-awake/scripts/build-zpx.mjs b/plugins/windows-awake/scripts/build-zpx.mjs new file mode 100644 index 000000000..eae6aa28b --- /dev/null +++ b/plugins/windows-awake/scripts/build-zpx.mjs @@ -0,0 +1,68 @@ +// 将 src-ztools 打包为 ZTools 可安装的 .zpx(gzip 压缩的 asar)。 +// 运行方式:npm run package:zpx +import { createRequire } from 'node:module' +import { pipeline } from 'node:stream/promises' +import { createGzip } from 'node:zlib' +import { cp, mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises' +import { createReadStream, createWriteStream } from 'node:fs' +import os from 'node:os' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const require = createRequire(import.meta.url) +const asar = require('@electron/asar') + +const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') +const pluginRoot = path.join(projectRoot, 'src-ztools') +const releaseDir = path.join(projectRoot, 'release') +const manifest = JSON.parse(await readFile(path.join(pluginRoot, 'plugin.json'), 'utf8')) + +// 安装前的自检:清单引用的入口必须都在插件目录内。 +for (const key of ['main', 'logo', 'preload']) { + const value = manifest[key] + if (typeof value !== 'string' || !value.trim()) continue + const target = path.join(pluginRoot, value) + try { + await stat(target) + } catch { + throw new Error(`插件清单引用的 ${key} 不存在:${target}`) + } +} + +await mkdir(releaseDir, { recursive: true }) +const targetZpx = path.join(releaseDir, `${manifest.name}-${manifest.version}.zpx`) +const stagingRoot = await mkdtemp(path.join(os.tmpdir(), `zpx-staging-${manifest.name}-`)) +const tempAsar = path.join(os.tmpdir(), `zpx-${manifest.name}-${Date.now()}.asar`) + +try { + // 打包副本移除 development 入口,安装后的插件只加载本地构建页面。 + const stagingPlugin = path.join(stagingRoot, 'plugin') + await cp(pluginRoot, stagingPlugin, { recursive: true }) + const productionManifest = { ...manifest } + delete productionManifest.development + await writeFile( + path.join(stagingPlugin, 'plugin.json'), + `${JSON.stringify(productionManifest, null, 2)}\n`, + 'utf8' + ) + + await asar.createPackage(stagingPlugin, tempAsar) + + // 校验 asar 内的清单与源码清单一致,避免打包出错。 + const packed = JSON.parse(asar.extractFile(tempAsar, 'plugin.json').toString('utf8')) + if (packed.name !== manifest.name || packed.version !== manifest.version) { + throw new Error('打包结果中的 plugin.json 与源码清单不一致') + } + const entries = asar.listPackage(tempAsar).map((entry) => String(entry).replace(/\\/g, '/').replace(/^\/+/, '')) + for (const required of [manifest.main, manifest.logo, manifest.preload]) { + const normalized = String(required).replace(/\\/g, '/') + if (!entries.includes(normalized)) throw new Error(`打包结果缺少 ${normalized}`) + } + + await pipeline(createReadStream(tempAsar), createGzip({ level: 9 }), createWriteStream(targetZpx)) + const size = (await stat(targetZpx)).size + console.log(`已生成插件包:${targetZpx}(${(size / 1024).toFixed(1)} KB,${entries.length} 个文件)`) +} finally { + await rm(tempAsar, { force: true }) + await rm(stagingRoot, { recursive: true, force: true }) +} diff --git a/plugins/windows-awake/src-ztools/logo.png b/plugins/windows-awake/src-ztools/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..307dec83f16e2e93314a7cef7c0d650c1bb3ec6e GIT binary patch literal 7588 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 0 ? ppid : 0 +} + +/** + * 把守护脚本写入数据目录,内容变化时覆盖。 + * @returns {string} 守护脚本路径。 + */ +function ensureGuardScript() { + const { script } = filePaths() + try { + if (fs.readFileSync(script, 'utf8') === GUARD_SCRIPT) return script + } catch { + // 文件不存在或不可读时直接重写。 + } + // 带 BOM 写入,保证 Windows PowerShell 5.1 按 UTF-8 解析脚本。 + fs.writeFileSync(script, `\uFEFF${GUARD_SCRIPT}`, { encoding: 'utf8' }) + return script +} + +/** + * 把时长规范化为合法分钟数。 + * @param {unknown} value 原始时长。 + * @param {number} fallback 非法时使用的默认值。 + * @returns {number} 0 到 1440 之间的整数分钟,0 表示一直保持。 + */ +function normalizeDuration(value, fallback) { + const parsed = Number(value) + if (!Number.isFinite(parsed)) return fallback + const rounded = Math.round(parsed) + if (rounded <= 0) return 0 + return Math.min(rounded, MAX_DURATION_MINUTES) +} + +/** + * 校验并补全配置对象。 + * @param {unknown} raw 读取到的原始配置。 + * @returns {{durationMinutes: number, keepDisplay: boolean}} 合法配置。 + */ +function normalizeConfig(raw) { + const source = raw && typeof raw === 'object' ? raw : {} + return { + durationMinutes: normalizeDuration(source.durationMinutes, DEFAULT_CONFIG.durationMinutes), + keepDisplay: source.keepDisplay !== false + } +} + +/** + * 读取持久化配置。 + * @returns {{durationMinutes: number, keepDisplay: boolean}} 当前配置。 + */ +function readConfig() { + try { + return normalizeConfig(ztoolsApi().dbStorage.getItem(CONFIG_KEY)) + } catch { + return { ...DEFAULT_CONFIG } + } +} + +/** + * 写入持久化配置。 + * @param {{durationMinutes?: unknown, keepDisplay?: unknown}} patch 需要更新的字段。 + * @returns {{durationMinutes: number, keepDisplay: boolean}} 写入后的完整配置。 + */ +function writeConfig(patch) { + const merged = { ...readConfig() } + if (patch && typeof patch === 'object') { + if (patch.durationMinutes !== undefined) { + merged.durationMinutes = normalizeDuration(patch.durationMinutes, merged.durationMinutes) + } + if (patch.keepDisplay !== undefined) { + merged.keepDisplay = patch.keepDisplay !== false + } + } + try { + ztoolsApi().dbStorage.setItem(CONFIG_KEY, merged) + } catch { + // 存储不可用时仍然让本次运行生效,只是无法记忆选择。 + } + return merged +} + +/** + * 判断进程是否仍存在。 + * @param {number} pid 进程号。 + * @returns {boolean} 存在返回 true。 + */ +function isPidAlive(pid) { + if (!Number.isInteger(pid) || pid <= 0) return false + try { + process.kill(pid, 0) + return true + } catch (error) { + return Boolean(error) && error.code === 'EPERM' + } +} + +/** + * 读取心跳文件,解析守护进程状态。 + * @returns {{state: string, pid: number, flags: number, fresh: boolean} | null} 心跳信息。 + */ +function readHeartbeat() { + const { heartbeat } = filePaths() + try { + const stat = fs.statSync(heartbeat) + const [state = '', pidText = '', flagsText = ''] = fs.readFileSync(heartbeat, 'utf8').trim().split('|') + return { + state, + pid: Number(pidText) || 0, + flags: Number(flagsText) || 0, + fresh: Date.now() - stat.mtimeMs <= HEARTBEAT_FRESH_MS + } + } catch { + return null + } +} + +/** + * 判断心跳是否表示守护进程正在正常工作。 + * @param {{state: string, pid: number, flags: number, fresh: boolean} | null} heartbeat 心跳信息。 + * @param {number} pid 期望的进程号。 + * @returns {boolean} 心跳有效返回 true。 + */ +function isHeartbeatHealthy(heartbeat, pid) { + return Boolean(heartbeat) && heartbeat.pid === pid && heartbeat.flags > 0 && heartbeat.fresh +} + +/** + * 读取守护进程状态文件。 + * @returns {{pid: number, startedAt: number, endsAt: number | null, keepDisplay: boolean, durationMinutes: number} | null} 状态信息。 + */ +function readGuardState() { + try { + const parsed = JSON.parse(fs.readFileSync(filePaths().state, 'utf8')) + if (!parsed || typeof parsed !== 'object') return null + const pid = Number(parsed.pid) + if (!Number.isInteger(pid) || pid <= 0) return null + return { + pid, + startedAt: Number(parsed.startedAt) || 0, + endsAt: parsed.endsAt === null || parsed.endsAt === undefined ? null : Number(parsed.endsAt) || 0, + keepDisplay: parsed.keepDisplay !== false, + durationMinutes: Number(parsed.durationMinutes) || 0 + } + } catch { + return null + } +} + +/** + * 删除运行时文件。 + * @returns {void} + */ +function cleanupRuntimeFiles() { + const paths = filePaths() + for (const file of [paths.state, paths.heartbeat, paths.stopFlag]) { + try { + fs.rmSync(file, { force: true }) + } catch { + // 文件已被删除或暂时被占用时忽略。 + } + } +} + +/** + * 汇总当前状态,供页面渲染。 + * @returns {object} 状态对象。 + */ +function collectStatus() { + const base = { + supported: isWindows(), + active: false, + stale: false, + pid: 0, + startedAt: 0, + endsAt: null, + durationMinutes: 0, + keepDisplay: DEFAULT_CONFIG.keepDisplay, + remainingSeconds: null, + elapsedSeconds: 0, + flags: 0 + } + if (!base.supported) return base + + const state = readGuardState() + if (!state) return base + + const heartbeat = readHeartbeat() + const ownedByThisPage = Boolean(guardChild) && guardChild.pid === state.pid + const alive = ownedByThisPage || isPidAlive(state.pid) + // 心跳既确认进程存活,也证明 SetThreadExecutionState 调用成功(flags 非 0)。 + if (!alive || !isHeartbeatHealthy(heartbeat, state.pid)) { + return { + ...base, + stale: true, + pid: state.pid, + startedAt: state.startedAt, + endsAt: state.endsAt, + keepDisplay: state.keepDisplay, + durationMinutes: state.durationMinutes + } + } + + const now = Date.now() + return { + ...base, + active: true, + pid: state.pid, + startedAt: state.startedAt, + endsAt: state.endsAt, + durationMinutes: state.durationMinutes, + keepDisplay: state.keepDisplay, + remainingSeconds: state.endsAt === null ? null : Math.max(0, Math.round((state.endsAt - now) / 1000)), + elapsedSeconds: state.startedAt ? Math.max(0, Math.round((now - state.startedAt) / 1000)) : 0, + flags: heartbeat.flags + } +} + +/** + * 轮询等待条件成立。 + * @param {() => boolean} predicate 判定函数。 + * @param {number} timeoutMs 超时毫秒数。 + * @returns {Promise} 条件成立返回 true,超时返回 false。 + */ +async function waitUntil(predicate, timeoutMs) { + const deadline = Date.now() + timeoutMs + while (Date.now() < deadline) { + if (predicate()) return true + await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS)) + } + return predicate() +} + +/** + * 校验 PID 归属后强制结束守护进程,避免误杀复用同一 PID 的其他进程。 + * @param {number} pid 进程号。 + * @returns {boolean} 该进程已不存在时返回 true。 + */ +function killGuardProcess(pid) { + if (!isPidAlive(pid)) return true + const command = `$p = Get-CimInstance Win32_Process -Filter 'ProcessId = ${pid}' -ErrorAction SilentlyContinue; if ($p -and $p.CommandLine -like '*${GUARD_SCRIPT_NAME}*' -and $p.CommandLine -like '*${GUARD_MARKER}*') { Stop-Process -Id ${pid} -Force }` + try { + spawnSync(powershellPath(), ['-NoProfile', '-NonInteractive', '-Command', command], { + windowsHide: true, + timeout: 15000 + }) + } catch { + // 校验或结束失败时不清除状态文件,让用户看到真实状态。 + } + return !isPidAlive(pid) +} + +/** + * 停止守护进程并清理运行时文件。 + * @returns {Promise} 停止后的状态。 + */ +async function stopGuard() { + const state = readGuardState() + if (!state) { + guardChild = null + cleanupRuntimeFiles() + return collectStatus() + } + + const paths = filePaths() + try { + fs.writeFileSync(paths.stopFlag, String(Date.now()), { encoding: 'utf8' }) + } catch { + // 无法写入停止标记时仍继续尝试等待与强制结束。 + } + + const child = guardChild && guardChild.pid === state.pid ? guardChild : null + let exited = Boolean(child) && (child.exitCode !== null || child.signalCode !== null) + if (child && !exited) { + exited = await Promise.race([ + new Promise((resolve) => child.once('exit', () => resolve(true))), + new Promise((resolve) => setTimeout(() => resolve(false), STOP_TIMEOUT_MS)) + ]) + } + if (!exited) { + // 页面重载后没有子进程引用,改用进程存在性与心跳判断。 + exited = await waitUntil( + () => !isPidAlive(state.pid) || !isHeartbeatHealthy(readHeartbeat(), state.pid), + STOP_TIMEOUT_MS + ) + } + if (!exited) exited = killGuardProcess(state.pid) + + guardChild = null + if (exited || !isPidAlive(state.pid)) { + cleanupRuntimeFiles() + } + return collectStatus() +} + +/** + * 启动守护进程,并按需保留剩余时长。 + * @param {{durationMinutes?: unknown, keepDisplay?: unknown, preserveRemaining?: unknown}} payload 启动参数。 + * @returns {Promise} 启动后的状态。 + * @throws 守护进程未能在限定时间内就绪时抛出可读错误。 + */ +async function startGuard(payload) { + assertWindows() + const patch = payload && typeof payload === 'object' ? payload : {} + const config = readConfig() + const durationMinutes = + patch.durationMinutes === undefined + ? config.durationMinutes + : normalizeDuration(patch.durationMinutes, config.durationMinutes) + const keepDisplay = patch.keepDisplay === undefined ? config.keepDisplay : patch.keepDisplay !== false + + const previous = collectStatus() + let seconds = durationMinutes === 0 ? 0 : durationMinutes * 60 + if (patch.preserveRemaining && previous.active && previous.remainingSeconds !== null) { + seconds = Math.max(0, previous.remainingSeconds) + } + + await stopGuard() + + const paths = filePaths() + const script = ensureGuardScript() + const startedAt = Date.now() + const endsAt = seconds > 0 ? startedAt + seconds * 1000 : null + const args = [ + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Bypass', + '-WindowStyle', + 'Hidden', + '-File', + script, + '-Seconds', + String(seconds), + '-HeartbeatFile', + paths.heartbeat, + '-StopFile', + paths.stopFlag, + '-AppProcessName', + appProcessName(), + '-ParentProcessId', + String(hostProcessId()), + GUARD_MARKER + ] + if (keepDisplay) args.push('-KeepDisplay') + + let stderr = '' + const child = spawn(powershellPath(), args, { + windowsHide: true, + stdio: ['ignore', 'pipe', 'pipe'] + }) + guardChild = child + child.stdout.setEncoding('utf8') + child.stdout.on('data', () => {}) + child.stderr.setEncoding('utf8') + child.stderr.on('data', (chunk) => { + stderr = `${stderr}${chunk}`.slice(-2000) + }) + child.on('exit', () => { + if (guardChild === child) guardChild = null + }) + // 先落盘状态,保证页面重载后仍能读到本次唤醒。 + fs.writeFileSync( + paths.state, + JSON.stringify({ pid: child.pid, startedAt, endsAt, keepDisplay, durationMinutes }), + { encoding: 'utf8' } + ) + + // 守护进程成功调用 SetThreadExecutionState 后会写入 ready/hold 心跳。 + await waitUntil(() => { + const heartbeat = readHeartbeat() + if (heartbeat && heartbeat.pid === child.pid && ['ready', 'hold'].includes(heartbeat.state)) return true + return child.exitCode !== null + }, READY_TIMEOUT_MS) + + const heartbeat = readHeartbeat() + const started = + Boolean(heartbeat) && heartbeat.pid === child.pid && ['ready', 'hold'].includes(heartbeat.state) + if (!started) { + killGuardProcess(child.pid) + guardChild = null + cleanupRuntimeFiles() + const detail = stderr.trim().split(/\r?\n/).filter(Boolean).pop() + throw new Error( + `唤醒守护进程启动失败${detail ? `:${detail}` : ',请确认 PowerShell 可用且未被安全策略限制'}` + ) + } + + writeConfig({ durationMinutes, keepDisplay }) + return collectStatus() +} + +// 只暴露页面需要的业务方法。 +window.awakeBridge = Object.freeze({ + /** 读取当前配置。 */ + async getConfig() { + return readConfig() + }, + /** 保存页面上的时长与息屏选择。 */ + async saveConfig(patch) { + return writeConfig(patch) + }, + /** 读取当前唤醒状态,并清理已失效的守护进程。 */ + async getStatus() { + const status = collectStatus() + // 启动阶段会短暂缺少心跳,只有在启动窗口结束后才判定为幺留进程。 + if (status.stale && Date.now() - status.startedAt > READY_TIMEOUT_MS) { + await stopGuard() + return collectStatus() + } + return status + }, + /** 开始保持唤醒。 */ + async start(payload) { + return startGuard(payload) + }, + /** 停止保持唤醒。 */ + async stop() { + return stopGuard() + }, + /** 页面渲染需要的边界值。 */ + constants: Object.freeze({ + MIN_DURATION_MINUTES, + MAX_DURATION_MINUTES, + HEARTBEAT_INTERVAL_MS, + ES_CONTINUOUS, + ES_SYSTEM_REQUIRED, + ES_DISPLAY_REQUIRED + }) +}) diff --git a/plugins/windows-awake/src/App.vue b/plugins/windows-awake/src/App.vue new file mode 100644 index 000000000..f6c039020 --- /dev/null +++ b/plugins/windows-awake/src/App.vue @@ -0,0 +1,738 @@ + + + + + diff --git a/plugins/windows-awake/src/awake-format.ts b/plugins/windows-awake/src/awake-format.ts new file mode 100644 index 000000000..c4b8f1d00 --- /dev/null +++ b/plugins/windows-awake/src/awake-format.ts @@ -0,0 +1,71 @@ +/** 界面使用的常量与格式化工具。 */ + +/** 唤醒时长预设,value 为分钟数,0 表示一直保持。 */ +export const PRESETS = [ + { label: '15 分钟', value: 15 }, + { label: '30 分钟', value: 30 }, + { label: '1 小时', value: 60 }, + { label: '2 小时', value: 120 }, + { label: '一直保持', value: 0 } +] as const + +/** 桥接不可用(开发预览)时的兜底边界值,取值与 preload 保持一致。 */ +const FALLBACK_LIMITS = { min: 1, max: 1440 } + +/** 自定义时长的最小值(分钟)。 */ +export const MIN_DURATION_MINUTES = window.awakeBridge?.constants?.MIN_DURATION_MINUTES ?? FALLBACK_LIMITS.min + +/** 自定义时长的最大值(分钟)。 */ +export const MAX_DURATION_MINUTES = window.awakeBridge?.constants?.MAX_DURATION_MINUTES ?? FALLBACK_LIMITS.max + +/** + * 补零。 + * @param value 数字。 + * @returns 至少两位的字符串。 + */ +function pad(value: number): string { + return String(value).padStart(2, '0') +} + +/** + * 把秒数格式化为倒计时文本。 + * @param totalSeconds 总秒数。 + * @returns mm:ss 或 h:mm:ss。 + */ +export function formatClock(totalSeconds: number): string { + const seconds = Math.max(0, Math.floor(totalSeconds)) + const hours = Math.floor(seconds / 3600) + const minutes = Math.floor((seconds % 3600) / 60) + if (hours > 0) return `${hours}:${pad(minutes)}:${pad(seconds % 60)}` + return `${pad(minutes)}:${pad(seconds % 60)}` +} + +/** + * 把秒数格式化为人类可读时长。 + * @param totalSeconds 总秒数。 + * @param withSeconds 不足 1 分钟时是否显示秒数。 + * @returns 例如 “1 小时 20 分钟”。 + */ +export function formatDuration(totalSeconds: number, withSeconds = false): string { + const seconds = Math.max(0, Math.round(totalSeconds)) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const restMinutes = minutes % 60 + if (hours > 0) return restMinutes > 0 ? `${hours} 小时 ${restMinutes} 分钟` : `${hours} 小时` + if (minutes > 0) return `${minutes} 分钟` + return withSeconds ? `${seconds} 秒` : '不足 1 分钟' +} + +/** + * 把时间戳格式化为本地时间。 + * @param timestamp 时间戳(毫秒)。 + * @returns HH:mm:ss。 + */ +export function formatTime(timestamp: number): string { + return new Date(timestamp).toLocaleTimeString('zh-CN', { + hour12: false, + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }) +} diff --git a/plugins/windows-awake/src/awake-types.ts b/plugins/windows-awake/src/awake-types.ts new file mode 100644 index 000000000..a2da2a8a3 --- /dev/null +++ b/plugins/windows-awake/src/awake-types.ts @@ -0,0 +1,60 @@ +/** 页面与 preload 桥接共享的类型定义。 */ + +/** 当前唤醒状态。 */ +export interface AwakeStatus { + /** 当前平台是否支持。 */ + supported: boolean + /** 是否正在保持唤醒。 */ + active: boolean + /** 状态文件存在但守护进程已失效(内部标记)。 */ + stale?: boolean + /** 守护进程 PID。 */ + pid: number + /** 本轮开始时间戳。 */ + startedAt: number + /** 结束时间戳;null 表示一直保持。 */ + endsAt: number | null + /** 本轮使用的时长(分钟,0 表示一直保持)。 */ + durationMinutes: number + /** 是否同时保持屏幕点亮。 */ + keepDisplay: boolean + /** 剩余秒数;null 表示一直保持。 */ + remainingSeconds: number | null + /** 已保持秒数。 */ + elapsedSeconds: number + /** 守护进程实际提交给 SetThreadExecutionState 的标志位。 */ + flags: number +} + +/** 用户选择并持久化的配置。 */ +export interface AwakeConfig { + /** 唤醒时长(分钟,0 表示一直保持)。 */ + durationMinutes: number + /** true 表示不允许息屏。 */ + keepDisplay: boolean +} + +/** 启动参数。 */ +export interface AwakeStartPayload { + durationMinutes?: number + keepDisplay?: boolean + /** 运行中调整策略时保留剩余时长。 */ + preserveRemaining?: boolean +} + +/** preload 暴露的业务能力。 */ +export interface AwakeBridge { + getConfig(): Promise + saveConfig(patch: Partial): Promise + getStatus(): Promise + start(payload?: AwakeStartPayload): Promise + stop(): Promise + constants: { + MIN_DURATION_MINUTES: number + MAX_DURATION_MINUTES: number + HEARTBEAT_INTERVAL_MS: number + ES_CONTINUOUS: number + ES_SYSTEM_REQUIRED: number + ES_DISPLAY_REQUIRED: number + } +} diff --git a/plugins/windows-awake/src/env.d.ts b/plugins/windows-awake/src/env.d.ts new file mode 100644 index 000000000..a79d55fb6 --- /dev/null +++ b/plugins/windows-awake/src/env.d.ts @@ -0,0 +1,20 @@ +/// +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent, Record, unknown> + export default component +} + +// Preload 暴露的唤醒控制能力(对应 src-ztools/preload/services.js) +import type { AwakeBridge } from './awake-types' + +declare global { + interface Window { + /** 仅在 preload 成功注入时存在,开发预览中可能为 undefined。 */ + awakeBridge?: AwakeBridge + } +} + +export {} diff --git a/plugins/windows-awake/src/main.css b/plugins/windows-awake/src/main.css new file mode 100644 index 000000000..e6fb745f9 --- /dev/null +++ b/plugins/windows-awake/src/main.css @@ -0,0 +1,86 @@ +:root { + color-scheme: light dark; + + --awake-primary: var(--plugin-primary-color, #2f7cf6); + --awake-primary-soft: rgba(47, 124, 246, 0.12); + --awake-primary-soft: color-mix(in srgb, var(--awake-primary) 12%, transparent); + --awake-text: #1c2230; + --awake-text-weak: #5f6a7d; + --awake-surface: #ffffff; + --awake-surface-muted: #f1f3f7; + --awake-border: rgba(28, 34, 48, 0.13); + --awake-shadow: 0 1px 2px rgba(28, 34, 48, 0.06); + --awake-success: #10795a; + --awake-success-soft: rgba(16, 121, 90, 0.12); + --awake-success-border: rgba(16, 121, 90, 0.35); + --awake-danger: #c2352a; + --awake-danger-solid: #c2352a; + --awake-danger-soft: rgba(194, 53, 42, 0.12); + --awake-danger-border: rgba(194, 53, 42, 0.35); + --awake-radius: 12px; +} + +html, +body { + margin: 0; + padding: 0; + background: transparent; +} + +body { + font-family: 'Microsoft YaHei UI', 'Segoe UI', 'PingFang SC', system-ui, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--awake-text); + background-color: #f4f5f8; + -webkit-font-smoothing: antialiased; +} + +button, +input { + font-family: inherit; +} + +button:focus-visible, +input:focus-visible { + outline: 2px solid var(--awake-primary); + outline-offset: 1px; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(120, 130, 148, 0.45); +} + +@media (prefers-color-scheme: dark) { + :root { + --awake-primary-soft: rgba(84, 152, 255, 0.18); + --awake-primary-soft: color-mix(in srgb, var(--awake-primary) 18%, transparent); + --awake-text: #eef1f7; + --awake-text-weak: #a3adbe; + --awake-surface: #262b35; + --awake-surface-muted: #20242d; + --awake-border: rgba(255, 255, 255, 0.14); + --awake-shadow: none; + --awake-success: #4fd6a0; + --awake-success-soft: rgba(79, 214, 160, 0.16); + --awake-success-border: rgba(79, 214, 160, 0.4); + --awake-danger: #ff8f83; + --awake-danger-solid: #c0453a; + --awake-danger-soft: rgba(255, 143, 131, 0.16); + --awake-danger-border: rgba(255, 143, 131, 0.4); + } + + body { + background-color: #1b1f27; + } + + ::-webkit-scrollbar-thumb { + background-color: rgba(180, 190, 205, 0.35); + } +} diff --git a/plugins/windows-awake/src/main.ts b/plugins/windows-awake/src/main.ts new file mode 100644 index 000000000..8a3c77bc5 --- /dev/null +++ b/plugins/windows-awake/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/windows-awake/tests/e2e/plugin.spec.js b/plugins/windows-awake/tests/e2e/plugin.spec.js new file mode 100644 index 000000000..2f3fd619b --- /dev/null +++ b/plugins/windows-awake/tests/e2e/plugin.spec.js @@ -0,0 +1,515 @@ +import { expect, test, _electron as electron } from '@playwright/test' +import { spawnSync } from 'node:child_process' +import { constants as fsConstants } from 'node:fs' +import fs from 'node:fs/promises' +import os from 'node:os' +import path from 'node:path' +import { fileURLToPath, pathToFileURL } from 'node:url' + +const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..') +const sourcePluginRoot = path.join(projectRoot, 'src-ztools') +const settingsUrlFragment = 'internal-plugins/setting/index.html' +/** 不允许息屏 = ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED。 */ +const KEEP_SYSTEM_AND_DISPLAY_FLAGS = 0x80000003 +/** 允许息屏 = ES_CONTINUOUS | ES_SYSTEM_REQUIRED。 */ +const KEEP_SYSTEM_FLAGS = 0x80000001 + +let dataRoot = '' +let legacyRoot = '' +let pluginRoot = '' +let pluginConfigPath = '' +let manifest = null +let expectedUrl = '' +let featureCode = '' +let electronApp = null + +/** + * 读取由当前运行中 ZTools 进程注入的宿主可执行文件路径。 + * @returns {Promise} ZTools 可执行文件绝对路径。 + * @throws 宿主路径缺失、不是绝对路径或不可执行时抛出。 + */ +async function resolveZToolsExecutable() { + const executablePath = String(process.env.ZTOOLS_E2E_EXECUTABLE_PATH || '').trim() + if (!executablePath) throw new Error('当前 ZTools 进程未提供宿主路径,请从 ZVC 中运行测试') + if (!path.isAbsolute(executablePath)) throw new Error('ZTOOLS_E2E_EXECUTABLE_PATH 必须是绝对路径') + try { + await fs.access(executablePath, fsConstants.X_OK) + return executablePath + } catch { + throw new Error(`当前 ZTools 宿主不存在或不可执行:${executablePath}`) + } +} + +/** + * 在设置插件的 WebContentsView 中执行受控脚本。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} source 要执行的页面脚本。 + * @returns {Promise} 页面脚本执行结果。 + * @throws 未找到设置页时抛出错误。 + */ +async function executeInSettings(app, source) { + return app.evaluate(async ({ webContents }, script) => { + const contents = webContents + .getAllWebContents() + .find((item) => item.getURL().includes('internal-plugins/setting/index.html')) + if (!contents) throw new Error('未找到设置插件 WebContentsView') + return contents.executeJavaScript(script) + }, source) +} + +/** + * 在插件页面中执行脚本,用于读取状态和触发交互。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} source 要执行的页面脚本。 + * @returns {Promise} 页面脚本执行结果。 + * @throws 未找到插件页面时抛出错误。 + */ +async function executeInPlugin(app, source) { + return app.evaluate( + async ({ webContents }, payload) => { + const contents = webContents.getAllWebContents().find((item) => item.getURL() === payload.url) + if (!contents) { + const urls = webContents.getAllWebContents().map((item) => item.getURL()) + throw new Error(`未找到插件页面:${payload.url}\n当前页面:${urls.join('\n')}`) + } + return contents.executeJavaScript(payload.source) + }, + { url: expectedUrl, source } + ) +} + +/** + * 读取设置插件正文,供 Playwright 轮询加载状态。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @returns {Promise} 设置页正文;尚未完成加载时为空字符串。 + */ +async function readSettingsText(app) { + return app.evaluate(async ({ webContents }) => { + const contents = webContents + .getAllWebContents() + .find((item) => item.getURL().includes('internal-plugins/setting/index.html')) + if (!contents || contents.isLoading()) return '' + return contents.executeJavaScript('document.body?.innerText || ""') + }) +} + +/** + * 插件页面中某个元素的可读文本。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} selector CSS 选择器。 + * @returns {Promise} 元素文本;元素不存在时返回空字符串。 + */ +async function readPluginText(app, selector) { + return executeInPlugin( + app, + `(() => { const el = document.querySelector(${JSON.stringify(selector)}); return el ? (el.textContent || '').trim() : '' })()` + ) +} + +/** + * 在插件页面中点击元素。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} selector CSS 选择器。 + * @returns {Promise} 是否成功点击。 + */ +async function clickPluginElement(app, selector) { + return executeInPlugin( + app, + `(() => { const el = document.querySelector(${JSON.stringify(selector)}); if (!el) return false; el.click(); return true })()` + ) +} + +/** + * 读取页面上的 aria-checked 状态。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} selector CSS 选择器。 + * @returns {Promise} aria-checked 的值。 + */ +async function readPluginChecked(app, selector) { + return executeInPlugin( + app, + `(() => { const el = document.querySelector(${JSON.stringify(selector)}); return el ? String(el.getAttribute('aria-checked')) : 'missing' })()` + ) +} + +/** + * 读取插件内由 preload 提供的真实状态。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @returns {Promise} awakeBridge.getStatus() 的结果。 + */ +async function readBridgeStatus(app) { + return executeInPlugin(app, 'window.awakeBridge.getStatus()') +} + +/** + * 写入输入框的值并触发 Vue 的 v-model 与 change 处理。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @param {string} selector CSS 选择器。 + * @param {string} value 要写入的值。 + * @returns {Promise} 是否成功写入。 + */ +async function setPluginInputValue(app, selector, value) { + return executeInPlugin( + app, + `(() => { + const el = document.querySelector(${JSON.stringify(selector)}); + if (!el) return false; + el.value = ${JSON.stringify(value)}; + el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event('change', { bubbles: true })); + return true; + })()` + ) +} + +/** + * 枚举当前系统中由本插件守护脚本启动的 PowerShell 进程。 + * 查询脚本写入文件后以 -File 运行,避免嵌套引号在 -Command 中被重新解析。 + * @returns {Promise<{pid: number, commandLine: string}[]>} 守护进程列表。 + */ +async function listGuardProcesses() { + const queryScript = path.join(dataRoot, 'list-guards.ps1') + const source = [ + 'Get-CimInstance Win32_Process -Filter "Name = \'powershell.exe\'" |', + " Where-Object { $_.CommandLine -like '*awake-guard.ps1*' -and $_.CommandLine -like '*--zvc-awake-guard*' } |", + ' ForEach-Object { \'{0}|{1}\' -f $_.ProcessId, $_.CommandLine }' + ].join('\n') + await fs.writeFile(queryScript, `${'\uFEFF'}${source}\n`, 'utf8') + const result = spawnSync( + 'powershell.exe', + ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', queryScript], + { encoding: 'utf8', windowsHide: true } + ) + return String(result.stdout || '') + .split(/\r?\n/) + .map((line) => line.trim()) + .filter(Boolean) + .map((line) => { + const separator = line.indexOf('|') + return { pid: Number(line.slice(0, separator)), commandLine: line.slice(separator + 1) } + }) + .filter((item) => Number.isInteger(item.pid) && item.pid > 0) +} + +/** + * 启动一个使用隔离数据目录的 ZTools 实例。 + * @returns {Promise} 隔离实例。 + */ +async function launchIsolatedApp() { + const executablePath = await resolveZToolsExecutable() + const developmentAppRoot = String(process.env.ZTOOLS_E2E_APP_ROOT || '').trim() + return electron.launch({ + executablePath, + args: developmentAppRoot ? [developmentAppRoot] : [], + env: { + ...Object.fromEntries(Object.entries(process.env).filter(([, value]) => value)), + ZTOOLS_DATA_ROOT: dataRoot, + ZTOOLS_E2E: '1', + ZTOOLS_LEGACY_USER_DATA_PATH: legacyRoot + } + }) +} + +/** + * 打开通用设置并通过内部 API 导入、安装开发插件。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @returns {Promise} 无返回值。 + */ +async function prepareSettingsPage(app) { + const page = await app.firstWindow() + const searchInput = page.locator('.search-input') + await expect(searchInput).toBeVisible() + await searchInput.fill('通用设置') + await page.locator('.app-item, .list-item').filter({ hasText: '通用设置' }).first().click() + await expect.poll(() => readSettingsText(app), { timeout: 15_000 }).not.toBe('') + + const imported = await executeInSettings( + app, + `window.ztools.internal.importDevPlugin(${JSON.stringify(pluginConfigPath)})` + ) + expect(imported, JSON.stringify(imported)).toMatchObject({ success: true }) + const installed = await executeInSettings( + app, + `window.ztools.internal.installDevPlugin(${JSON.stringify(manifest.name)})` + ) + expect(installed, JSON.stringify(installed)).toMatchObject({ success: true }) +} + +/** + * 以指定功能 code 启动插件页面。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @returns {Promise} 无返回值。 + */ +async function launchPlugin(app) { + const launched = await executeInSettings( + app, + `window.ztools.internal.launch({path: ${JSON.stringify(pluginRoot)}, type: 'plugin', name: ${JSON.stringify(manifest.title)}, param: {payload: '', type: 'text', code: ${JSON.stringify(featureCode)}}})` + ) + expect(launched, JSON.stringify(launched)).toMatchObject({ success: true }) + await expect + .poll( + async () => { + return app.evaluate( + async ({ webContents }, url) => { + const contents = webContents.getAllWebContents().find((item) => item.getURL() === url) + if (!contents || contents.isLoading()) return '' + return contents.executeJavaScript('document.body?.innerText || ""') + }, + expectedUrl + ) + }, + { timeout: 20_000 } + ) + .toContain('Windows 唤醒控制') +} + +/** + * 读取插件页面状态并统计截图中的非背景像素。 + * @param {import('@playwright/test').ElectronApplication} app 隔离的 Electron 应用。 + * @returns {Promise<{ready: boolean, text: string, png: string, width: number, height: number, nonBackgroundPixels: number}>} 页面状态和截图。 + */ +async function inspectPluginView(app) { + return app.evaluate(async ({ webContents }, targetUrl) => { + const contents = webContents.getAllWebContents().find((item) => item.getURL() === targetUrl) + if (!contents || contents.isLoading()) { + return { ready: false, text: '', png: '', width: 0, height: 0, nonBackgroundPixels: 0 } + } + + const text = await contents.executeJavaScript('document.body?.innerText || ""') + const image = await contents.capturePage() + const bitmap = image.toBitmap() + let nonBackgroundPixels = 0 + // 防止 DOM 已加载但 Electron 合成层仍为空白。 + for (let index = 0; index < bitmap.length; index += 4) { + const blue = bitmap[index] + const green = bitmap[index + 1] + const red = bitmap[index + 2] + const spread = Math.max(red, green, blue) - Math.min(red, green, blue) + if (spread > 8 || (red + green + blue) / 3 < 220) nonBackgroundPixels += 1 + } + + return { + ready: true, + text, + png: image.toPNG().toString('base64'), + width: image.getSize().width, + height: image.getSize().height, + nonBackgroundPixels + } + }, expectedUrl) +} + +test.describe.configure({ mode: 'serial' }) + +test.beforeAll(async () => { + dataRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'ztools-plugin-e2e-')) + legacyRoot = path.join(dataRoot, 'legacy') + await fs.mkdir(legacyRoot, { recursive: true }) + // 使用构建产物的隔离副本,并禁用开发入口以验证生产页面。 + pluginRoot = path.join(dataRoot, 'plugin') + await fs.cp(sourcePluginRoot, pluginRoot, { recursive: true }) + pluginConfigPath = path.join(pluginRoot, 'plugin.json') + manifest = JSON.parse(await fs.readFile(pluginConfigPath, 'utf8')) + delete manifest.development + await fs.writeFile(pluginConfigPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8') + featureCode = manifest.features?.[0]?.code || 'open' + expectedUrl = pathToFileURL(path.resolve(pluginRoot, manifest.main)).href + + electronApp = await launchIsolatedApp() + await prepareSettingsPage(electronApp) + await launchPlugin(electronApp) +}) + +test.afterAll(async () => { + await electronApp?.close() + electronApp = null + await fs.rm(dataRoot, { recursive: true, force: true }) +}) + +test('可在隔离的真实 ZTools 中安装、启动并控制 Windows 唤醒', async ({}, testInfo) => { + const baselineGuards = await listGuardProcesses() + + // 初始状态:未唤醒,桥接与常量可用。 + const constants = await executeInPlugin(electronApp, 'window.awakeBridge.constants') + expect(constants.MAX_DURATION_MINUTES).toBe(1440) + expect(constants.ES_DISPLAY_REQUIRED).toBe(2) + const initialStatus = await readBridgeStatus(electronApp) + expect(initialStatus.active).toBe(false) + await expect.poll(() => readPluginText(electronApp, '[data-testid="countdown"]')).toBe('未唤醒') + + // 选择 15 分钟 + 不允许息屏后开始保持唤醒。 + expect(await clickPluginElement(electronApp, '[data-testid="preset-15"]')).toBe(true) + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="preset-15"]')).toBe('true') + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="choice-no-screen-off"]')).toBe('true') + expect(await clickPluginElement(electronApp, '[data-testid="toggle"]')).toBe(true) + await expect.poll(() => readPluginText(electronApp, '[data-testid="toggle"]'), { timeout: 20_000 }).toBe( + '停止保持唤醒' + ) + + // preload 上报的状态必须与真实守护进程一致:15 分钟定时、同时保持屏幕点亮。 + await expect + .poll(async () => (await readBridgeStatus(electronApp)).active, { timeout: 20_000 }) + .toBe(true) + const running = await readBridgeStatus(electronApp) + expect(running.keepDisplay).toBe(true) + expect(running.flags).toBe(KEEP_SYSTEM_AND_DISPLAY_FLAGS) + expect(running.endsAt - running.startedAt).toBe(15 * 60 * 1000) + expect(running.remainingSeconds).toBeGreaterThan(14 * 60) + + // 状态与运行时文件写入隔离的数据目录,不会污染用户真实数据。 + const userDataPath = await executeInPlugin(electronApp, "window.ztools.getPath('userData')") + const runtimeDir = path.join(userDataPath, 'windows-awake') + expect(path.resolve(userDataPath).startsWith(path.resolve(dataRoot))).toBe(true) + const stateFile = path.join(runtimeDir, 'guard-state.json') + const statePayload = JSON.parse(await fs.readFile(stateFile, 'utf8')) + expect(statePayload.pid).toBe(running.pid) + expect(statePayload.keepDisplay).toBe(true) + expect(statePayload.durationMinutes).toBe(15) + + // 系统中确实存在带有本插件标记的守护进程,并且请求了屏幕唤醒。 + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 20_000 }) + .toBe(baselineGuards.length + 1) + const guard = (await listGuardProcesses()).find((item) => item.pid === running.pid) + expect(guard).toBeTruthy() + expect(guard.commandLine).toContain('--zvc-awake-guard') + expect(guard.commandLine).toContain('-KeepDisplay') + + // 倒计时在界面中持续走字。 + const countdownBefore = await readPluginText(electronApp, '[data-testid="countdown"]') + expect(countdownBefore).toMatch(/^\d{2}:\d{2}$/) + await expect + .poll(() => readPluginText(electronApp, '[data-testid="countdown"]'), { timeout: 10_000 }) + .not.toBe(countdownBefore) + + // 运行中切换为允许息屏:立即下发新的标志位,并保留剩余时长。 + expect(await clickPluginElement(electronApp, '[data-testid="choice-allow-screen-off"]')).toBe(true) + await expect + .poll(async () => (await readBridgeStatus(electronApp)).flags, { timeout: 20_000 }) + .toBe(KEEP_SYSTEM_FLAGS) + const afterSwitch = await readBridgeStatus(electronApp) + expect(afterSwitch.keepDisplay).toBe(false) + expect(afterSwitch.pid).not.toBe(running.pid) + expect(Math.abs(afterSwitch.endsAt - running.endsAt)).toBeLessThan(10_000) + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 20_000 }) + .toBe(baselineGuards.length + 1) + + const inspection = await inspectPluginView(electronApp) + expect(inspection.ready).toBe(true) + expect(inspection.text).toContain('保持唤醒中') + expect(inspection.width).toBeGreaterThan(0) + expect(inspection.height).toBeGreaterThan(0) + expect(inspection.nonBackgroundPixels).toBeGreaterThan(50) + const screenshotPath = testInfo.outputPath('awake-running.png') + await fs.writeFile(screenshotPath, Buffer.from(inspection.png, 'base64')) + await testInfo.attach('awake-running', { path: screenshotPath, contentType: 'image/png' }) + + // 暗色主题下同样可读:在渲染器中仿真系统深色偏好,卡片、选中项与状态色都应切换。 + const darkTheme = await electronApp.evaluate( + async ({ webContents }, url) => { + const contents = webContents.getAllWebContents().find((item) => item.getURL() === url) + contents.debugger.attach('1.3') + await contents.debugger.sendCommand('Emulation.setEmulatedMedia', { + features: [{ name: 'prefers-color-scheme', value: 'dark' }] + }) + return contents.executeJavaScript(`JSON.stringify({ + matches: window.matchMedia('(prefers-color-scheme: dark)').matches, + body: getComputedStyle(document.body).backgroundColor, + card: getComputedStyle(document.querySelector('.awake__card')).backgroundColor + })`) + }, + expectedUrl + ) + const darkStyles = JSON.parse(darkTheme) + expect(darkStyles.matches).toBe(true) + expect(darkStyles.body).toBe('rgb(27, 31, 39)') + expect(darkStyles.card).toBe('rgb(38, 43, 53)') + await expect + .poll(async () => (await inspectPluginView(electronApp)).nonBackgroundPixels > 50, { timeout: 10_000 }) + .toBe(true) + const darkInspection = await inspectPluginView(electronApp) + expect(darkInspection.text).toContain('保持唤醒中') + expect(darkInspection.text).toContain('允许息屏') + const darkScreenshotPath = testInfo.outputPath('awake-running-dark.png') + await fs.writeFile(darkScreenshotPath, Buffer.from(darkInspection.png, 'base64')) + await testInfo.attach('awake-running-dark', { path: darkScreenshotPath, contentType: 'image/png' }) + + // 停止保持唤醒:状态、界面与系统进程都要回到未唤醒。 + expect(await clickPluginElement(electronApp, '[data-testid="toggle"]')).toBe(true) + await expect.poll(() => readPluginText(electronApp, '[data-testid="toggle"]'), { timeout: 20_000 }).toBe( + '开始保持唤醒' + ) + expect((await readBridgeStatus(electronApp)).active).toBe(false) + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 20_000 }) + .toBe(baselineGuards.length) + await expect.poll(() => fs.readFile(stateFile, 'utf8').then(() => true, () => false)).toBe(false) + + // 停止后界面保留最近一次选择,且不显示错误。 + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="preset-15"]')).toBe('true') + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="choice-allow-screen-off"]')).toBe('true') + expect(await readPluginText(electronApp, '[data-testid="error"]')).toBe('') + + // “一直保持”不带结束时间,界面显示不限时,同时可以切回不允许息屏。 + expect(await clickPluginElement(electronApp, '[data-testid="choice-no-screen-off"]')).toBe(true) + expect(await clickPluginElement(electronApp, '[data-testid="preset-0"]')).toBe(true) + expect(await clickPluginElement(electronApp, '[data-testid="toggle"]')).toBe(true) + await expect + .poll(async () => (await readBridgeStatus(electronApp)).active, { timeout: 20_000 }) + .toBe(true) + const endless = await readBridgeStatus(electronApp) + expect(endless.endsAt).toBe(null) + expect(endless.remainingSeconds).toBe(null) + expect(endless.keepDisplay).toBe(true) + expect(endless.flags).toBe(KEEP_SYSTEM_AND_DISPLAY_FLAGS) + await expect.poll(() => readPluginText(electronApp, '[data-testid="countdown"]')).toBe('不限时') + const endlessState = JSON.parse(await fs.readFile(stateFile, 'utf8')) + expect(endlessState.endsAt).toBe(null) + expect(endlessState.durationMinutes).toBe(0) + expect(await clickPluginElement(electronApp, '[data-testid="toggle"]')).toBe(true) + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 20_000 }) + .toBe(baselineGuards.length) + + // 自定义时长写入宿主存储,并在重启后保留。 + expect(await clickPluginElement(electronApp, '[data-testid="preset-custom"]')).toBe(true) + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="preset-custom"]')).toBe('true') + expect(await setPluginInputValue(electronApp, '[data-testid="custom-minutes"]', '20')).toBe(true) + await expect + .poll(async () => executeInPlugin(electronApp, 'window.awakeBridge.getConfig()'), { timeout: 10_000 }) + .toEqual({ durationMinutes: 20, keepDisplay: true }) + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="preset-15"]')).toBe('false') + expect(await readPluginText(electronApp, '[data-testid="error"]')).toBe('') +}) + +test('重启 ZTools 后保留设置,且退出宿主时不留残余进程', async () => { + await electronApp.close() + electronApp = await launchIsolatedApp() + await prepareSettingsPage(electronApp) + await launchPlugin(electronApp) + + // 上一次会话的选择通过宿主存储保留下来。 + const config = await executeInPlugin(electronApp, 'window.awakeBridge.getConfig()') + expect(config).toEqual({ durationMinutes: 20, keepDisplay: true }) + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="preset-custom"]')).toBe('true') + expect(await executeInPlugin(electronApp, 'document.querySelector(\'[data-testid="custom-minutes"]\').value')).toBe('20') + await expect.poll(() => readPluginChecked(electronApp, '[data-testid="choice-no-screen-off"]')).toBe('true') + expect((await readBridgeStatus(electronApp)).active).toBe(false) + + // 启动后直接关闭宿主,守护进程应自行退出。 + const baselineGuards = await listGuardProcesses() + expect(await clickPluginElement(electronApp, '[data-testid="toggle"]')).toBe(true) + await expect + .poll(async () => (await readBridgeStatus(electronApp)).active, { timeout: 20_000 }) + .toBe(true) + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 20_000 }) + .toBe(baselineGuards.length + 1) + + await electronApp.close() + electronApp = null + await expect + .poll(async () => (await listGuardProcesses()).length, { timeout: 30_000 }) + .toBe(baselineGuards.length) +}) diff --git a/plugins/windows-awake/tests/guard/guard.cjs b/plugins/windows-awake/tests/guard/guard.cjs new file mode 100644 index 000000000..0a397d131 --- /dev/null +++ b/plugins/windows-awake/tests/guard/guard.cjs @@ -0,0 +1,230 @@ +// 独立验证唤醒守护进程:不依赖 ZTools,直接运行 PowerShell 守护脚本并检查真实行为。 +// 运行方式:npm run test:guard +const assert = require('node:assert/strict') +const { spawn, spawnSync } = require('node:child_process') +const fs = require('node:fs') +const os = require('node:os') +const path = require('node:path') + +const { GUARD_SCRIPT } = require('../../src-ztools/preload/guard-script.js') + +const ES_CONTINUOUS = 0x80000000 +const ES_SYSTEM_REQUIRED = 0x00000001 +const ES_DISPLAY_REQUIRED = 0x00000002 +const KEEP_SYSTEM_FLAGS = (ES_CONTINUOUS | ES_SYSTEM_REQUIRED) >>> 0 +const KEEP_SYSTEM_AND_DISPLAY_FLAGS = (ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED) >>> 0 +const READY_TIMEOUT_MS = 20_000 +const EXIT_TIMEOUT_MS = 8_000 + +const workDir = fs.mkdtempSync(path.join(os.tmpdir(), 'zvc-awake-guard-')) +const liveGuards = new Set() +const scriptPath = path.join(workDir, 'awake-guard.ps1') +const heartbeatPath = path.join(workDir, 'heartbeat.txt') +const stopFlagPath = path.join(workDir, 'stop.flag') +fs.writeFileSync(scriptPath, `\uFEFF${GUARD_SCRIPT}`, 'utf8') + +/** + * 定位 powershell.exe。 + * @returns {string} PowerShell 可执行文件路径。 + */ +function powershellPath() { + const candidate = path.join( + process.env.SystemRoot || 'C:\\Windows', + 'System32', + 'WindowsPowerShell', + 'v1.0', + 'powershell.exe' + ) + return fs.existsSync(candidate) ? candidate : 'powershell.exe' +} + +/** + * 等待条件成立。 + * @param {() => boolean} predicate 判定函数。 + * @param {number} timeoutMs 超时毫秒数。 + * @returns {Promise} 条件成立返回 true。 + */ +async function waitFor(predicate, timeoutMs) { + const deadline = Date.now() + timeoutMs + while (Date.now() < deadline) { + if (predicate()) return true + await new Promise((resolve) => setTimeout(resolve, 100)) + } + return predicate() +} + +/** + * 判断进程是否仍然存在。 + * @param {number} pid 进程号。 + * @returns {boolean} 存在返回 true。 + */ +function isAlive(pid) { + try { + process.kill(pid, 0) + return true + } catch (error) { + return Boolean(error) && error.code === 'EPERM' + } +} + +/** + * 读取心跳文件内容。 + * @returns {{state: string, pid: number, flags: number} | null} 解析后的心跳。 + */ +function readHeartbeat() { + try { + const [state = '', pid = '0', flags = '0'] = fs.readFileSync(heartbeatPath, 'utf8').trim().split('|') + return { state, pid: Number(pid), flags: Number(flags) } + } catch { + return null + } +} + +/** + * 启动一次守护进程。 + * @param {Record} options 启动选项。 + * @returns {{child: import('node:child_process').ChildProcess, stdout: () => string}} 进程句柄与输出读取函数。 + */ +function startGuard(options) { + fs.rmSync(heartbeatPath, { force: true }) + fs.rmSync(stopFlagPath, { force: true }) + const args = [ + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Bypass', + '-WindowStyle', + 'Hidden', + '-File', + scriptPath, + '-Seconds', + String(options.seconds ?? 0), + '-HeartbeatFile', + heartbeatPath, + '-StopFile', + stopFlagPath, + '-AppProcessName', + String(options.appProcessName ?? 'node'), + '-ParentProcessId', + String(options.parentProcessId ?? 0), + '--zvc-awake-guard' + ] + if (options.keepDisplay) args.push('-KeepDisplay') + const child = spawn(powershellPath(), args, { windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] }) + liveGuards.add(child) + child.on('exit', () => liveGuards.delete(child)) + let stdout = '' + let stderr = '' + child.stdout.setEncoding('utf8') + child.stderr.setEncoding('utf8') + child.stdout.on('data', (chunk) => { + stdout += chunk + }) + child.stderr.on('data', (chunk) => { + stderr += chunk + }) + child.on('exit', () => { + if (stderr.trim()) console.log(` [guard stderr] ${stderr.trim().split(/\r?\n/).pop()}`) + }) + return { child, stdout: () => stdout } +} + +/** + * 等待守护进程结束。 + * @param {import('node:child_process').ChildProcess} child 守护进程。 + * @param {number} timeoutMs 超时毫秒数。 + * @returns {Promise} 已结束返回 true。 + */ +async function waitExit(child, timeoutMs) { + return Promise.race([ + new Promise((resolve) => child.once('exit', () => resolve(true))), + new Promise((resolve) => setTimeout(() => resolve(false), timeoutMs)) + ]) +} + +/** + * 通过停止标记结束守护进程,并确认进程确实退出。 + * @param {import('node:child_process').ChildProcess} child 守护进程。 + * @returns {Promise} 无返回值。 + */ +async function stopViaFlag(child) { + fs.writeFileSync(stopFlagPath, String(Date.now()), 'utf8') + const exited = await waitExit(child, EXIT_TIMEOUT_MS) + assert.equal(exited, true, '写入停止标记后守护进程应在 8 秒内退出') + assert.equal(isAlive(child.pid), false, '守护进程退出后不应再存在') +} + +/** 记录可选的系统级佐证信息。 */ +function logPowerRequests() { + const result = spawnSync('powercfg', ['/requests'], { encoding: 'utf8', windowsHide: true }) + const text = `${result.stdout || ''}${result.stderr || ''}`.trim() + console.log(` powercfg /requests → ${text ? text.split(/\r?\n/)[0] : '无输出(查询需要管理员权限)'}`) +} + +async function main() { + console.log(`守护脚本:${scriptPath}`) + + console.log('1. 不允许息屏:ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED') + const withDisplay = startGuard({ seconds: 0, appProcessName: 'node', keepDisplay: true }) + const readyWithDisplay = await waitFor(() => withDisplay.stdout().includes('READY'), READY_TIMEOUT_MS) + assert.equal(readyWithDisplay, true, '守护进程应输出 READY') + const beatWithDisplay = readHeartbeat() + assert.equal(beatWithDisplay.state, 'ready', '心跳状态应为 ready') + assert.equal(beatWithDisplay.pid, withDisplay.child.pid, '心跳 PID 应与守护进程一致') + assert.equal( + beatWithDisplay.flags, + KEEP_SYSTEM_AND_DISPLAY_FLAGS, + '不允许息屏时应同时请求保持系统与屏幕唤醒' + ) + await new Promise((resolve) => setTimeout(resolve, 2500)) + assert.equal(readHeartbeat().state, 'hold', '运行期间应持续刷新心跳') + logPowerRequests() + await stopViaFlag(withDisplay.child) + + console.log('2. 允许息屏:ES_CONTINUOUS | ES_SYSTEM_REQUIRED') + const systemOnly = startGuard({ seconds: 0, appProcessName: 'node', keepDisplay: false }) + assert.equal(await waitFor(() => systemOnly.stdout().includes('READY'), READY_TIMEOUT_MS), true) + assert.equal( + readHeartbeat().flags, + KEEP_SYSTEM_FLAGS, + '允许息屏时不应请求保持屏幕唤醒' + ) + await stopViaFlag(systemOnly.child) + + console.log('3. 定时唤醒:到时自动释放') + const timed = startGuard({ seconds: 2, appProcessName: 'node', keepDisplay: false }) + assert.equal(await waitFor(() => timed.stdout().includes('READY'), READY_TIMEOUT_MS), true) + assert.equal(await waitExit(timed.child, EXIT_TIMEOUT_MS), true, '定时唤醒应自动退出') + assert.equal(isAlive(timed.child.pid), false, '自动退出后不应残留进程') + + console.log('4. 宿主进程消失:守护进程自行清理') + const orphan = startGuard({ seconds: 0, appProcessName: 'zvc-no-such-process-xyz', keepDisplay: false }) + assert.equal(await waitFor(() => orphan.stdout().includes('READY'), READY_TIMEOUT_MS), true) + assert.equal(await waitExit(orphan.child, EXIT_TIMEOUT_MS), true, '没有宿主进程时守护进程应自行退出') + + console.log('5. 父进程消失:即使同名进程仍在也自行清理') + const noParent = startGuard({ seconds: 0, appProcessName: 'node', parentProcessId: 999999, keepDisplay: false }) + assert.equal(await waitFor(() => noParent.stdout().includes('READY'), READY_TIMEOUT_MS), true) + assert.equal(await waitExit(noParent.child, EXIT_TIMEOUT_MS), true, '父进程不存在时守护进程应自行退出') + + console.log('全部守护进程行为检查通过') +} + +main() + .catch((error) => { + console.error(`检查失败:${error && error.message ? error.message : error}`) + process.exitCode = 1 + }) + .finally(async () => { + // 断言失败时也必须结束仍在运行的守护进程,否则会一直占用唤醒状态。 + for (const child of liveGuards) { + try { + fs.writeFileSync(stopFlagPath, String(Date.now()), 'utf8') + const exited = await waitExit(child, 3000) + if (!exited) child.kill() + } catch { + child.kill() + } + } + fs.rmSync(workDir, { recursive: true, force: true }) + }) diff --git a/plugins/windows-awake/tsconfig.json b/plugins/windows-awake/tsconfig.json new file mode 100644 index 000000000..39b73bc6f --- /dev/null +++ b/plugins/windows-awake/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/windows-awake/vite.config.js b/plugins/windows-awake/vite.config.js new file mode 100644 index 000000000..5ca697ff2 --- /dev/null +++ b/plugins/windows-awake/vite.config.js @@ -0,0 +1,13 @@ +import { fileURLToPath } from 'node:url' +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + base: './', + build: { + outDir: fileURLToPath(new URL('./src-ztools/dist', import.meta.url)), + emptyOutDir: true + } +})

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∈s+tZMjMWD;4{+<`!KyvFej*oGkhi=95- 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�n@gf?fw+jh z@3kM`8)c9M#$i3EbP%AD`R-AqV@KY&l0N!2AYgwOLc)3^;(@XfmHN94agjpgwvWc% zzpn{yxg$4x*WmL`q6<$UtAEJjC|o8j){t3(W%XfEwtXxuqiqG|FhPaA@=4L{q5<>QCUsT>ID9LyP*Ue`6WaguP4}=nk_-&s(do+{MO!p!^J7{FU;CPeG8(U z0NmelZXA%4^o7l>3bjRL7jM;JuD1yvPb!i6+-8A`5%$+@)8Ks_cZy2LVMG%$CD*>( z!$XE88jsa<#V1tR>FbY*4u?@5*(~a>_I6~ijAF>2%E7_OK z%@b?b`hh0$ep3RugS>9TE`Nm=CyR~*q!8*jX%*sYOAOLsuSWL|CZl}95!+^3W{EPk zj5}45-9Bfk>8t5-@}?2|(k(PBMFjTqt;cHll>Hv4PUH{R-!}<*6}L))#�I6joRY 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 + + + + + Windows 唤醒控制 + + +