@nsnanocat/preference-panes 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -5
- package/dist/preference-panes.proxy.js +2124 -0
- package/dist/preference-panes.request.js +357 -7
- package/dist/settings/index.html +3 -3
- package/package.json +2 -1
- package/src/proxy/handler.mjs +31 -0
- package/src/proxy/request.mjs +4 -29
package/README.md
CHANGED
|
@@ -67,11 +67,11 @@ const panel = mountPreferencePanes({ element: document.querySelector("#preferenc
|
|
|
67
67
|
|
|
68
68
|
模块页底部提供查看/刷新 Caches、清空 Caches 和重置模块。查看缓存按需 GET;清空和重置经确认后 DELETE,成功只更新本页状态。重置后控件显示当前 BoxJS 默认值,再次进入页面才重新读取。模块选择、设置值校验和默认值处理都在前端完成。
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
主菜单、导航、控件和样式均由本包实现。业务插件只提供 BoxJS JSON;品牌、菜单、图标与安装映射属于托管站点。插件不导入本包、不维护页面代码,也不把设置请求接入自己的业务 Request。未提供对应配置 Mock 的插件入口保持禁用。
|
|
71
71
|
|
|
72
72
|
## 零前端代码接入
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
托管站点安装本包,部署 `dist/settings/` 到 `/settings/assets/`,将其中 index.html 同时用于 `/settings/` 与 `/settings/{module}`。根菜单读取由站点维护的 `site.boxjs.json`,这份主菜单不放在业务插件仓库:
|
|
75
75
|
|
|
76
76
|
~~~json
|
|
77
77
|
{
|
|
@@ -86,7 +86,19 @@ const panel = mountPreferencePanes({ element: document.querySelector("#preferenc
|
|
|
86
86
|
|
|
87
87
|
根页面每次进入重新 HEAD 探测,菜单 JSON 在当前文档只读取一次;模块页直接打开时无需先读菜单。图片与额外样式由托管站点提供。
|
|
88
88
|
|
|
89
|
-
代理优先使用原生 Mock
|
|
89
|
+
代理优先使用原生 Mock 提供配置和页面。存储 API 和没有原生 Mock 的资源请求,由独立代理脚本处理。托管站点维护 installation JSON(origin/storageKey/module/resources),并用包内已经构建好的代理运行时生成安装文件:
|
|
90
|
+
|
|
91
|
+
~~~js
|
|
92
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
93
|
+
|
|
94
|
+
const runtime = await readFile(new URL(import.meta.resolve("@nsnanocat/preference-panes/dist/preference-panes.proxy.js")), "utf8");
|
|
95
|
+
const installation = JSON.parse(await readFile("installation.json", "utf8"));
|
|
96
|
+
await writeFile("Module.request.js", `${runtime}\nPreferencePanes.runPreferences(${JSON.stringify(installation)});\n`);
|
|
97
|
+
~~~
|
|
98
|
+
|
|
99
|
+
业务插件的代理规则直接引用托管站点的 Module.request.js;无需 npm 依赖、业务 Request 接入代码或额外构建脚本。生成文件把可信安装映射与通用执行端放在一起,不依赖平台是否支持 $argument,Quantumult X 也使用同一文件。所有代理平台判断、done 适配、异常响应、资源下载和读写都由本包完成。API 不下载安装 JSON 或 BoxJS。
|
|
100
|
+
|
|
101
|
+
以下是包内部处理器接受的安装映射形状;也可供需要手动集成的宿主使用:
|
|
90
102
|
|
|
91
103
|
~~~js
|
|
92
104
|
import { PreferencesHandler } from "@nsnanocat/preference-panes";
|
|
@@ -103,7 +115,7 @@ const handler = new PreferencesHandler({
|
|
|
103
115
|
const response = await handler.handle($request);
|
|
104
116
|
~~~
|
|
105
117
|
|
|
106
|
-
资源 pattern 匹配 pathname,下载源必须避开拦截路径。只有命中静态资源的 GET/HEAD 才下载文件;API 由 SettingsHandler 直接处理,读写不会下载 BoxJS
|
|
118
|
+
资源 pattern 匹配 pathname,下载源必须避开拦截路径。只有命中静态资源的 GET/HEAD 才下载文件;API 由 SettingsHandler 直接处理,读写不会下载 BoxJS。业务插件只保留安装规则和配置 Mock;其业务请求脚本不负责设置接口。
|
|
107
119
|
|
|
108
120
|
## BoxJS 兼容
|
|
109
121
|
|
|
@@ -129,6 +141,6 @@ npm run apifox:check
|
|
|
129
141
|
npm pack --dry-run
|
|
130
142
|
~~~
|
|
131
143
|
|
|
132
|
-
构建生成 dist/preference-panes.mjs
|
|
144
|
+
构建生成 dist/preference-panes.mjs、读取宿主参数的 dist/preference-panes.request.js、供托管站点配置的 dist/preference-panes.proxy.js,以及可直接部署的 dist/settings/{index.html,app.mjs,panel.css,home.css}。托管仓库直接从依赖包复制,不读取业务插件的前端构建目录。0.5.0 将独立代理执行入口也交给本包,保留既有存储契约与页面交互。
|
|
133
145
|
|
|
134
146
|
[完整接口说明](apifox/guide.md) · [Apifox JSON](apifox/preference-panes.apifox.json) · [同步方式](apifox/README.md) · [发布工作流](.github/RELEASING.md)
|