@yunzai-ng/core 0.2.0 → 0.3.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/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +39 -3
- package/dist/http/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin/context.d.ts +3 -0
- package/dist/plugin/context.d.ts.map +1 -1
- package/dist/plugin/context.js +18 -2
- package/dist/plugin/context.js.map +1 -1
- package/dist/plugin/market.d.ts +119 -8
- package/dist/plugin/market.d.ts.map +1 -1
- package/dist/plugin/market.js +183 -22
- package/dist/plugin/market.js.map +1 -1
- package/dist/plugin/pm.d.ts +82 -0
- package/dist/plugin/pm.d.ts.map +1 -0
- package/dist/plugin/pm.js +129 -0
- package/dist/plugin/pm.js.map +1 -0
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +54 -5
- package/dist/server/api.js.map +1 -1
- package/dist/server/browse.d.ts.map +1 -1
- package/dist/server/browse.js +10 -2
- package/dist/server/browse.js.map +1 -1
- package/package.json +2 -2
- package/src/http/client.test.ts +75 -1
- package/src/http/client.ts +40 -3
- package/src/index.ts +1 -0
- package/src/plugin/context.test.ts +29 -1
- package/src/plugin/context.ts +18 -2
- package/src/plugin/market.test.ts +375 -2
- package/src/plugin/market.ts +278 -25
- package/src/plugin/pm.test.ts +73 -0
- package/src/plugin/pm.ts +163 -0
- package/src/server/api.test.ts +72 -2
- package/src/server/api.ts +65 -5
- package/src/server/browse.test.ts +18 -10
- package/src/server/browse.ts +11 -2
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 模块职责:在一个插件目录里执行包管理器 —— 装依赖与跑 npm script
|
|
3
|
+
* 依赖方向:只依赖 node 内置模块;不认识市场、不认识插件宿主
|
|
4
|
+
* 生命周期:无状态
|
|
5
|
+
* 注意事项:**脚本名是要拼进命令行的,故必须先过白名单。** Windows 上 node 拒绝不经 shell
|
|
6
|
+
* 执行 `.cmd`(CVE-2024-27980 之后的行为),而 `pnpm` / `npm` 在 Windows 上正是
|
|
7
|
+
* `.cmd`,因此这里只能带 `shell` 执行;一旦带了 shell,参数就是被解释的字符串,
|
|
8
|
+
* 索引里一个 `build && curl …` 就是任意命令执行。目录路径不进命令行(走 `cwd`),
|
|
9
|
+
* 于是唯一的可变部分就是脚本名 —— 它由 {@link assertScriptName} 挡住。
|
|
10
|
+
*
|
|
11
|
+
* **装依赖要不要带 devDependencies 由调用方决定,本模块不猜。** 从源码装的插件
|
|
12
|
+
* 要跑 `build`,而编译器(typescript)在 devDependencies 里 —— 那时 `--prod`
|
|
13
|
+
* 装出来的目录跑 `build` 必然失败,报的还是「找不到 tsc」这种离原因很远的错。
|
|
14
|
+
*/
|
|
15
|
+
import { execFile } from "node:child_process";
|
|
16
|
+
/**
|
|
17
|
+
* 包管理器候选,按优先级
|
|
18
|
+
*
|
|
19
|
+
* pnpm 在前:本项目各插件的 lock 文件都是 pnpm 的,装出来的布局与插件作者测过的一致。
|
|
20
|
+
* npm 兜底,随 node 一起装。不认 yarn —— berry 缺省不建 `node_modules`(PnP 模式),
|
|
21
|
+
* 那时 `import()` 插件入口会失败,而失败原因与包管理器的关系很难看出来。
|
|
22
|
+
*/
|
|
23
|
+
export const PACKAGE_MANAGERS = ["pnpm", "npm"];
|
|
24
|
+
/**
|
|
25
|
+
* 装依赖的超时毫秒
|
|
26
|
+
*
|
|
27
|
+
* 比任何网络请求都长:国内网络下一次冷装依赖十分钟并不罕见,而超时的后果是留下一个
|
|
28
|
+
* 装了一半的 `node_modules` —— 那比等下去更难收拾。
|
|
29
|
+
*/
|
|
30
|
+
export const INSTALL_TIMEOUT_MS = 15 * 60 * 1000;
|
|
31
|
+
/**
|
|
32
|
+
* 跑一个 script 的超时毫秒
|
|
33
|
+
*
|
|
34
|
+
* 与装依赖同一量级,且理由相同:`build` 只要几秒,但装后脚本可能在下载一个
|
|
35
|
+
* 上百兆的运行时(renderer-puppeteer 的 `install:browser` 拉的是 Chromium)。
|
|
36
|
+
*/
|
|
37
|
+
export const SCRIPT_TIMEOUT_MS = 15 * 60 * 1000;
|
|
38
|
+
/**
|
|
39
|
+
* 合法的 npm script 名
|
|
40
|
+
*
|
|
41
|
+
* 字母或数字开头,其余可含字母、数字、冒号、点、下划线与连字符 —— 冒号是为了
|
|
42
|
+
* `install:browser` 这类分段名。**刻意不含空格、引号与任何 shell 元字符**:
|
|
43
|
+
* 理由见文件头,这一条正则是那道边界本身。
|
|
44
|
+
*/
|
|
45
|
+
const SCRIPT_NAME_RE = /^[a-z\d][a-z\d:._-]*$/i;
|
|
46
|
+
/**
|
|
47
|
+
* 一个 script 名是否合法
|
|
48
|
+
*
|
|
49
|
+
* 与 {@link assertScriptName} 同一判据,两种形态:解析索引时要的是「不合法就丢弃这一条」,
|
|
50
|
+
* 而真要执行前要的是「不合法就抛」。共用一条正则,免得日后只改一处。
|
|
51
|
+
* @param name 待判定的名称
|
|
52
|
+
* @returns 是否合法
|
|
53
|
+
*/
|
|
54
|
+
export function isScriptName(name) {
|
|
55
|
+
return SCRIPT_NAME_RE.test(name);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 校验一个 script 名
|
|
59
|
+
*
|
|
60
|
+
* 执行前的最后一道闸:即便索引解析时已筛过,`runPm` 也可能被别处直接调用。
|
|
61
|
+
* @param name 待校验的名称
|
|
62
|
+
* @returns 名称本身
|
|
63
|
+
* @throws 名称为空或含白名单之外的字符时
|
|
64
|
+
*/
|
|
65
|
+
export function assertScriptName(name) {
|
|
66
|
+
if (!isScriptName(name))
|
|
67
|
+
throw new Error(`script 名不合法:${name}`);
|
|
68
|
+
return name;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 把一次动作译成某个包管理器的实参
|
|
72
|
+
*
|
|
73
|
+
* `--prod` / `--omit=dev` 两家的写法不同,故按包管理器分别给。
|
|
74
|
+
* @param pm 包管理器
|
|
75
|
+
* @param task 动作
|
|
76
|
+
* @returns 实参
|
|
77
|
+
*/
|
|
78
|
+
function argsOf(pm, task) {
|
|
79
|
+
if (task.kind === "run")
|
|
80
|
+
return ["run", task.script];
|
|
81
|
+
if (task.dev)
|
|
82
|
+
return ["install"];
|
|
83
|
+
return pm === "pnpm" ? ["install", "--prod"] : ["install", "--omit=dev"];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 依次尝试各包管理器,`MarketDeps.pm` 的缺省实现
|
|
87
|
+
*
|
|
88
|
+
* 不加 `--ignore-scripts`:插件可能依赖原生模块(sqlite、sharp),install 脚本正是它们
|
|
89
|
+
* 编译或下载预编译产物的地方,禁掉会装出一份 `import` 即报错的 `node_modules`,而报错
|
|
90
|
+
* 指向缺少 `.node` 文件,离「我禁了脚本」很远。既然已明说要装,就该装成能用的。
|
|
91
|
+
*
|
|
92
|
+
* 两家都失败时把各自的原因都带上:只报最后一个(npm 的)会让「机器上压根没有 pnpm」
|
|
93
|
+
* 与「pnpm 装到一半失败」看起来一样。
|
|
94
|
+
* @param task 动作
|
|
95
|
+
* @param cwd 插件目录
|
|
96
|
+
* @param timeout 超时毫秒
|
|
97
|
+
* @returns 实际用的是哪个包管理器
|
|
98
|
+
* @throws 全部候选都不可用或都失败时
|
|
99
|
+
*/
|
|
100
|
+
export const runPm = async (task, cwd, timeout) => {
|
|
101
|
+
if (task.kind === "run")
|
|
102
|
+
assertScriptName(task.script);
|
|
103
|
+
const errors = [];
|
|
104
|
+
for (const pm of PACKAGE_MANAGERS) {
|
|
105
|
+
try {
|
|
106
|
+
await new Promise((resolve, reject) => {
|
|
107
|
+
execFile(pm, argsOf(pm, task), {
|
|
108
|
+
cwd,
|
|
109
|
+
timeout,
|
|
110
|
+
env: { ...process.env },
|
|
111
|
+
windowsHide: true,
|
|
112
|
+
// 理由见文件头:Windows 上 pnpm/npm 是 .cmd,不经 shell 起不来
|
|
113
|
+
shell: process.platform === "win32"
|
|
114
|
+
}, (err, _stdout, stderr) => {
|
|
115
|
+
if (err)
|
|
116
|
+
reject(new Error(stderr.trim() || err.message));
|
|
117
|
+
else
|
|
118
|
+
resolve();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
return pm;
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
errors.push(`${pm}:${err instanceof Error ? err.message : String(err)}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
throw new Error(`包管理器均不可用或执行失败 —— ${errors.join(";")}`);
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=pm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm.js","sourceRoot":"","sources":["../../src/plugin/pm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,wBAAwB,CAAA;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;IAC/D,OAAO,IAAI,CAAA;AACb,CAAC;AA+BD;;;;;;;GAOG;AACH,SAAS,MAAM,CAAC,EAAU,EAAE,IAAY;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,KAAK,GAAa,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,QAAQ,CACN,EAAE,EACF,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAChB;oBACE,GAAG;oBACH,OAAO;oBACP,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;oBACvB,WAAW,EAAE,IAAI;oBACjB,gDAAgD;oBAChD,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;iBACpC,EACD,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;oBACvB,IAAI,GAAG;wBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;;wBACnD,OAAO,EAAE,CAAA;gBAChB,CAAC,CACF,CAAA;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAA;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACzD,CAAC,CAAA"}
|
package/dist/server/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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"}
|
package/dist/server/api.js
CHANGED
|
@@ -303,17 +303,28 @@ export function createApiRoutes(deps) {
|
|
|
303
303
|
* @param name 插件名
|
|
304
304
|
* @param load 安装后是否立即加载
|
|
305
305
|
* @param replace 目标已存在时是否覆盖
|
|
306
|
+
* @param dependencies 是否顺带装依赖并跑索引声明的装后步骤
|
|
306
307
|
* @returns 安装结果,附本次加载成功的插件名
|
|
307
308
|
* @throws 安装失败时以 400 结束请求
|
|
308
309
|
*/
|
|
309
|
-
const installFromMarket = async (name, load, replace) => {
|
|
310
|
+
const installFromMarket = async (name, load, replace, dependencies) => {
|
|
310
311
|
const instance = market();
|
|
311
312
|
let unloaded = false;
|
|
312
313
|
try {
|
|
313
314
|
if (replace && deps.plugins.get(name) !== undefined)
|
|
314
315
|
unloaded = await deps.plugins.unload(name);
|
|
315
|
-
const result = replace
|
|
316
|
-
|
|
316
|
+
const result = replace
|
|
317
|
+
? await instance.update(name, { dependencies })
|
|
318
|
+
: await instance.install(name, { dependencies });
|
|
319
|
+
/*
|
|
320
|
+
* 缺依赖或装后步骤失败时不加载
|
|
321
|
+
*
|
|
322
|
+
* 两者都注定让加载失败,而报出来的错离原因很远:缺依赖报的是「找不到某个包」,
|
|
323
|
+
* 缺产物(`build` 挂了)报的是「找不到 dist/index.js」。两条错误里后一条更
|
|
324
|
+
* 显眼而更没用 —— 使用者会去查那个文件为什么不在,而真正该看的是上一条。
|
|
325
|
+
*/
|
|
326
|
+
const skip = result.setupError !== undefined || result.dependencyError !== undefined || result.needsDependencies;
|
|
327
|
+
const loaded = load && !skip ? [...(await deps.plugins.loadAll()).loaded] : [];
|
|
317
328
|
return { ...result, unloaded, loaded };
|
|
318
329
|
}
|
|
319
330
|
catch (err) {
|
|
@@ -324,17 +335,55 @@ export function createApiRoutes(deps) {
|
|
|
324
335
|
// 只读模式的用途是防止误操作改动部署状态,浏览可安装的插件不属于此列
|
|
325
336
|
add("GET", "market", req => market().list(queryOf(req.query, "refresh") === "1"));
|
|
326
337
|
add("POST", "market/refresh", () => market().list(true));
|
|
338
|
+
/*
|
|
339
|
+
* 装依赖缺省为真
|
|
340
|
+
*
|
|
341
|
+
* 与面板商店那侧一致。缺省关掉会让「装完却跑不起来」成为常态,而那条提示(「请到
|
|
342
|
+
* 目录内自行执行 pnpm install」)对着的是一个多数人不会去开的终端。请求方仍可显式
|
|
343
|
+
* 传 false —— 离线部署、或依赖已随镜像预置好时用得上。
|
|
344
|
+
*/
|
|
327
345
|
add("POST", "market/install", async (req) => {
|
|
328
346
|
requireWritable();
|
|
329
347
|
const body = objectOf(req.body);
|
|
330
348
|
const name = requireString(body, "name");
|
|
331
|
-
return installFromMarket(name, optionalBoolean(body, "load") ?? true, false);
|
|
349
|
+
return installFromMarket(name, optionalBoolean(body, "load") ?? true, false, optionalBoolean(body, "dependencies") ?? true);
|
|
332
350
|
});
|
|
333
351
|
add("POST", "market/:name/update", async (req) => {
|
|
334
352
|
requireWritable();
|
|
335
353
|
const name = req.params.name ?? "";
|
|
336
354
|
const body = req.body === undefined ? {} : objectOf(req.body);
|
|
337
|
-
return installFromMarket(name, optionalBoolean(body, "load") ?? true, true);
|
|
355
|
+
return installFromMarket(name, optionalBoolean(body, "load") ?? true, true, optionalBoolean(body, "dependencies") ?? true);
|
|
356
|
+
});
|
|
357
|
+
/*
|
|
358
|
+
* 单独重跑装依赖与装后步骤,不重新取源
|
|
359
|
+
*
|
|
360
|
+
* 三种情形要用到:手工放进插件目录的插件(没有安装动作可挂)、装的时候这一步失败过、
|
|
361
|
+
* 以及使用者自己 `git pull` 过而产物已旧。与安装那条路共用 `PluginMarket.setup()`,
|
|
362
|
+
* 故「装什么、跑什么」只有一处定义。
|
|
363
|
+
*/
|
|
364
|
+
add("POST", "market/:name/setup", async (req) => {
|
|
365
|
+
requireWritable();
|
|
366
|
+
const name = req.params.name ?? "";
|
|
367
|
+
const body = req.body === undefined ? {} : objectOf(req.body);
|
|
368
|
+
const load = optionalBoolean(body, "load") ?? true;
|
|
369
|
+
/*
|
|
370
|
+
* 先卸载,再跑 —— 次序有意义
|
|
371
|
+
*
|
|
372
|
+
* `build` 会覆盖 `dist/`,而旧模块此刻还在内存里、它注册的命令仍在响应。跑完再卸载
|
|
373
|
+
* 意味着中间有一段时间里「磁盘上是新代码、正在响应的是旧代码」,那种不一致比一次
|
|
374
|
+
* 失败的重载难查得多。
|
|
375
|
+
*/
|
|
376
|
+
const unloaded = deps.plugins.get(name) === undefined ? false : await deps.plugins.unload(name);
|
|
377
|
+
try {
|
|
378
|
+
const result = await market().setup(name);
|
|
379
|
+
// 判据与 installFromMarket 一致:缺依赖或缺产物时加载注定失败,见那里的注释
|
|
380
|
+
const skip = result.setupError !== undefined || result.needsDependencies;
|
|
381
|
+
const loaded = load && !skip ? [...(await deps.plugins.loadAll()).loaded] : [];
|
|
382
|
+
return { ...result, unloaded, loaded };
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
throw fail(400, err instanceof Error ? err.message : String(err));
|
|
386
|
+
}
|
|
338
387
|
});
|
|
339
388
|
add("DELETE", "market/:name", async (req) => {
|
|
340
389
|
requireWritable();
|
package/dist/server/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/server/browse.ts"],"names":[],"mappings":"AA8CA,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,wBAAwB;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,qBAAqB;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IACxC,oBAAoB;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GACpB;IACE,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,WAAW;IACX,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAChC,GACD;IACE,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,mBAAmB;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAYL;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI7E;
|
|
1
|
+
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/server/browse.ts"],"names":[],"mappings":"AA8CA,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,wBAAwB;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,qBAAqB;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IACxC,oBAAoB;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GACpB;IACE,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,WAAW;IACX,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAChC,GACD;IACE,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,mBAAmB;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAYL;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI7E;AAiED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,UAA+B,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB9H"}
|
package/dist/server/browse.js
CHANGED
|
@@ -106,7 +106,15 @@ async function isDirEntry(dir, entry, windows) {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
|
-
*
|
|
109
|
+
* 排序用的比较器
|
|
110
|
+
*
|
|
111
|
+
* 提到模块级而非在比较函数里写 `localeCompare(name, "zh-Hans-CN", { numeric: true })`:
|
|
112
|
+
* 带 options 的 `localeCompare` 每次调用都新建一个 collator,而排序会调用它上万次
|
|
113
|
+
* (1000 项约一万次比较)。实测同一批 1005 个名字,逐次新建 21~28 ms,复用则不足 1 ms。
|
|
114
|
+
*/
|
|
115
|
+
const COLLATOR = new Intl.Collator("zh-Hans-CN", { numeric: true });
|
|
116
|
+
/**
|
|
117
|
+
* 排序:目录在前,同类按名称(`numeric` 故 `f2` 在 `f10` 之前)
|
|
110
118
|
*
|
|
111
119
|
* **中文名排在英文名之前不是缺陷** —— CLDR 的中文规则把汉字整块提到拉丁字母之前。
|
|
112
120
|
* 要改成「英文在前」得在此处显式加一层「是否以 ASCII 起头」的比较键,而不是换 locale。
|
|
@@ -117,7 +125,7 @@ async function isDirEntry(dir, entry, windows) {
|
|
|
117
125
|
function compareEntries(a, b) {
|
|
118
126
|
if (a.dir !== b.dir)
|
|
119
127
|
return a.dir ? -1 : 1;
|
|
120
|
-
return a.name
|
|
128
|
+
return COLLATOR.compare(a.name, b.name);
|
|
121
129
|
}
|
|
122
130
|
/**
|
|
123
131
|
* 列举一个目录
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/server/browse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browse.js","sourceRoot":"","sources":["../../src/server/browse.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yunzai-ng/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Yunzai NG 内核:插件宿主、统一事件模型、中间件管线、存储与渲染抽象",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"pino": "^9.6.0",
|
|
40
40
|
"undici": "^7.3.0",
|
|
41
41
|
"yaml": "^2.7.0",
|
|
42
|
-
"@yunzai-ng/types": "0.
|
|
42
|
+
"@yunzai-ng/types": "0.2.0"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
45
|
"better-sqlite3": "^11.8.1",
|
package/src/http/client.test.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { readFile, rm } from "node:fs/promises"
|
|
|
15
15
|
import { tmpdir } from "node:os"
|
|
16
16
|
import { join } from "node:path"
|
|
17
17
|
import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest"
|
|
18
|
-
import { AbortError } from "../util/defer.js"
|
|
18
|
+
import { AbortError, sleep } from "../util/defer.js"
|
|
19
19
|
import { HttpError, createHttpClient, sanitizeHeaders, sanitizeUrl, type ManagedHttpClient } from "./client.js"
|
|
20
20
|
|
|
21
21
|
/** 服务器实例 */
|
|
@@ -566,3 +566,77 @@ describe("脱敏", () => {
|
|
|
566
566
|
expect(err.url).not.toContain("ABCDEFGHIJKLMNOP")
|
|
567
567
|
})
|
|
568
568
|
})
|
|
569
|
+
|
|
570
|
+
describe("close 不被在途请求拖住", () => {
|
|
571
|
+
// 用 3 秒而非线上那个 15 秒:被测的是「close 不等在途请求」,请求超时具体多长与此无关,
|
|
572
|
+
// 而用例本身要等它最终落地(见下),15 秒会让这一个用例占满 CI 的耐心
|
|
573
|
+
it(
|
|
574
|
+
"在途请求远未超时,close 仍在宽限内返回",
|
|
575
|
+
async () => {
|
|
576
|
+
const http = makeClient()
|
|
577
|
+
// 服务端永不响应。undici 的 close() 是优雅关闭,会一直等在途请求跑完 —— 若不掐断,
|
|
578
|
+
// 停机就要陪着这个请求等满它的超时(国内网络下拉 GitHub 索引正是此情形)
|
|
579
|
+
const pending = http.get(`${base}/slow`, { timeout: 3000 })
|
|
580
|
+
// 等 socket 真的建立起来,否则关的是一个还没有在途请求的空池子,用例就测不到东西
|
|
581
|
+
await sleep(80)
|
|
582
|
+
|
|
583
|
+
const started = Date.now()
|
|
584
|
+
await http.close()
|
|
585
|
+
const spent = Date.now() - started
|
|
586
|
+
|
|
587
|
+
// 宽限 500ms,留足余量判定;关键是它远小于那个 3 秒
|
|
588
|
+
expect(spent).toBeLessThan(1500)
|
|
589
|
+
|
|
590
|
+
// destroy() 释放的是连接池,它并不代拒那个已经发出的 Promise —— 后者仍按自己的超时落地。
|
|
591
|
+
// 此处等它结束只为不把一个悬空的 Promise 留给下一个用例,不是在断言时序
|
|
592
|
+
await expect(pending).rejects.toThrow()
|
|
593
|
+
},
|
|
594
|
+
15_000
|
|
595
|
+
)
|
|
596
|
+
})
|
|
597
|
+
|
|
598
|
+
describe("默认信号", () => {
|
|
599
|
+
it("extend 带的信号一触发,经它发出的请求随之中止", async () => {
|
|
600
|
+
const http = makeClient()
|
|
601
|
+
const abort = new AbortController()
|
|
602
|
+
// 插件上下文正是这样拿到自己的 http:extend({ signal: 卸载信号 })
|
|
603
|
+
const scoped = http.extend({ signal: abort.signal })
|
|
604
|
+
const pending = scoped.get(`${base}/slow`, { timeout: 5000 })
|
|
605
|
+
setTimeout(() => abort.abort(), 30)
|
|
606
|
+
|
|
607
|
+
await expect(pending).rejects.toBeInstanceOf(AbortError)
|
|
608
|
+
})
|
|
609
|
+
|
|
610
|
+
it("默认信号与单次请求的信号是并集,任一触发即中止", async () => {
|
|
611
|
+
const http = makeClient()
|
|
612
|
+
const outer = new AbortController()
|
|
613
|
+
const scoped = http.extend({ signal: outer.signal })
|
|
614
|
+
const inner = new AbortController()
|
|
615
|
+
// 只触发单次请求那一个:合并不能把调用方自己的信号吃掉
|
|
616
|
+
const pending = scoped.get(`${base}/slow`, { signal: inner.signal, timeout: 5000 })
|
|
617
|
+
setTimeout(() => inner.abort(), 30)
|
|
618
|
+
|
|
619
|
+
await expect(pending).rejects.toBeInstanceOf(AbortError)
|
|
620
|
+
})
|
|
621
|
+
|
|
622
|
+
it("默认信号已经中止时,请求不再发出", async () => {
|
|
623
|
+
const http = makeClient()
|
|
624
|
+
const abort = new AbortController()
|
|
625
|
+
abort.abort()
|
|
626
|
+
const scoped = http.extend({ signal: abort.signal })
|
|
627
|
+
|
|
628
|
+
// 插件已卸载之后才被调用的代码路径:不该再打出一个注定没人接收的请求
|
|
629
|
+
await expect(scoped.get(`${base}/json`)).rejects.toBeInstanceOf(AbortError)
|
|
630
|
+
})
|
|
631
|
+
|
|
632
|
+
it("根客户端不受派生客户端的信号影响", async () => {
|
|
633
|
+
const http = makeClient()
|
|
634
|
+
const abort = new AbortController()
|
|
635
|
+
const scoped = http.extend({ signal: abort.signal })
|
|
636
|
+
abort.abort()
|
|
637
|
+
|
|
638
|
+
// 一个插件被卸载不能让内核自己的请求跟着废掉 —— 两者共享连接池,但信号必须各自独立
|
|
639
|
+
await expect(scoped.get(`${base}/json`)).rejects.toBeInstanceOf(AbortError)
|
|
640
|
+
await expect(http.get(`${base}/json`)).resolves.toMatchObject({ ok: true })
|
|
641
|
+
})
|
|
642
|
+
})
|
package/src/http/client.ts
CHANGED
|
@@ -53,6 +53,13 @@ const RETRY_STATUSES: readonly number[] = [408, 429, 500, 502, 503, 504]
|
|
|
53
53
|
/** 重试等待的上限(毫秒):`Retry-After` 说等一小时也不真等 */
|
|
54
54
|
const MAX_RETRY_DELAY = 30_000
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* `close()` 等待在途请求的宽限(毫秒)
|
|
58
|
+
*
|
|
59
|
+
* 取一个小值:够正在收尾的响应写完,又不至于让使用者在停机时干等。
|
|
60
|
+
*/
|
|
61
|
+
const CLOSE_GRACE_MS = 500
|
|
62
|
+
|
|
56
63
|
/** 查询串里需要打码的键(小写比对) */
|
|
57
64
|
const SECRET_QUERY_KEYS: readonly string[] = [
|
|
58
65
|
"authkey",
|
|
@@ -208,6 +215,22 @@ export function sanitizeHeaders(headers: Record<string, string>): Record<string,
|
|
|
208
215
|
return safe
|
|
209
216
|
}
|
|
210
217
|
|
|
218
|
+
/**
|
|
219
|
+
* 合并两个中止信号
|
|
220
|
+
*
|
|
221
|
+
* 用于把「客户端默认信号」(如插件的卸载信号)与「单次请求的信号」并成一个:
|
|
222
|
+
* 任一触发即中止。两者都缺省时返回 undefined,此时不给 undici 传 signal。
|
|
223
|
+
* @param a 一个信号
|
|
224
|
+
* @param b 另一个信号
|
|
225
|
+
* @returns 合并后的信号;都没有时 undefined
|
|
226
|
+
*/
|
|
227
|
+
function mergeSignals(a: AbortSignal | undefined, b: AbortSignal | undefined): AbortSignal | undefined {
|
|
228
|
+
const list = [a, b].filter((s): s is AbortSignal => s !== undefined)
|
|
229
|
+
if (list.length === 0) return undefined
|
|
230
|
+
if (list.length === 1) return list[0]
|
|
231
|
+
return AbortSignal.any(list)
|
|
232
|
+
}
|
|
233
|
+
|
|
211
234
|
/**
|
|
212
235
|
* 归一化重试选项
|
|
213
236
|
* @param input 数字(次数)或完整选项
|
|
@@ -530,7 +553,7 @@ export function createHttpClient(opts: HttpClientOptions = {}): ManagedHttpClien
|
|
|
530
553
|
proxy: proxyChoice,
|
|
531
554
|
redirections: follow ? MAX_REDIRECTIONS : 0,
|
|
532
555
|
throwOnError: options.throwOnError ?? true,
|
|
533
|
-
signal: options.signal
|
|
556
|
+
signal: mergeSignals(defaults.signal, options.signal)
|
|
534
557
|
}
|
|
535
558
|
}
|
|
536
559
|
|
|
@@ -758,9 +781,23 @@ export function createHttpClient(opts: HttpClientOptions = {}): ManagedHttpClien
|
|
|
758
781
|
close: async (): Promise<void> => {
|
|
759
782
|
closed = true
|
|
760
783
|
dispatchers.clear()
|
|
761
|
-
const
|
|
784
|
+
const pool = [...agents.values()]
|
|
762
785
|
agents.clear()
|
|
763
|
-
|
|
786
|
+
|
|
787
|
+
// 先给一小段宽限让正在收尾的请求写完,到点未完的一律掐断。
|
|
788
|
+
// undici 的 close() 是优雅关闭 —— 它会一直等在途请求跑完,于是一个 15 秒超时的
|
|
789
|
+
// 请求能把停机拖满 15 秒。停机走到这一步时插件已卸载、服务器已关闭,还在途的
|
|
790
|
+
// 必然是没人接收结果的孤儿请求,等它们没有意义。
|
|
791
|
+
const graceful = Promise.all(pool.map(agent => agent.close().catch(() => undefined)))
|
|
792
|
+
const timer = new Promise<"timeout">(res => {
|
|
793
|
+
const t = setTimeout(() => res("timeout"), CLOSE_GRACE_MS)
|
|
794
|
+
// unref:这个定时器自己不该成为进程退不出的原因
|
|
795
|
+
t.unref()
|
|
796
|
+
})
|
|
797
|
+
if ((await Promise.race([graceful.then(() => "done" as const), timer])) === "timeout") {
|
|
798
|
+
logger?.debug(`连接池未在 ${CLOSE_GRACE_MS}ms 内关闭,中止在途请求`)
|
|
799
|
+
await Promise.all(pool.map(agent => agent.destroy().catch(() => undefined)))
|
|
800
|
+
}
|
|
764
801
|
}
|
|
765
802
|
}
|
|
766
803
|
return client
|
package/src/index.ts
CHANGED
|
@@ -29,6 +29,7 @@ export * from "./plugin/events.js"
|
|
|
29
29
|
export * from "./plugin/services.js"
|
|
30
30
|
export * from "./plugin/discover.js"
|
|
31
31
|
export * from "./plugin/market.js"
|
|
32
|
+
export * from "./plugin/pm.js"
|
|
32
33
|
export * from "./plugin/tar.js"
|
|
33
34
|
|
|
34
35
|
/* ────────────────────────────── 消息 ────────────────────────────── */
|
|
@@ -19,7 +19,7 @@ import type {
|
|
|
19
19
|
} from "@yunzai-ng/types"
|
|
20
20
|
import { createEventBus } from "./events.js"
|
|
21
21
|
import { createServiceRegistry } from "./services.js"
|
|
22
|
-
import { createPluginContext } from "./context.js"
|
|
22
|
+
import { createPluginContext, splitRenderArgs } from "./context.js"
|
|
23
23
|
import { DisposalRegistry } from "../util/dispose.js"
|
|
24
24
|
import { fakeAppView, fakeHttp, fakeLogger, recordingHooks } from "../testing/fake.js"
|
|
25
25
|
|
|
@@ -318,6 +318,34 @@ describe("ctx.render", () => {
|
|
|
318
318
|
|
|
319
319
|
await expect(ctx.render("t")).rejects.toThrow(/没有产出图片/)
|
|
320
320
|
})
|
|
321
|
+
|
|
322
|
+
it("页面声明的 tailwind 传到渲染请求上", async () => {
|
|
323
|
+
const { ctx, recorded } = setup()
|
|
324
|
+
await ctx.render({ name: "card", html: "<html></html>", tailwind: true })
|
|
325
|
+
expect(recorded.renders[0]).toMatchObject({ template: "card", html: "<html></html>", tailwind: true })
|
|
326
|
+
})
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
describe("splitRenderArgs", () => {
|
|
330
|
+
it("字符串通路不带 html 与 tailwind", () => {
|
|
331
|
+
expect(splitRenderArgs("t", { uid: 1 })).toEqual({ template: "t", data: { uid: 1 }, opts: {} })
|
|
332
|
+
})
|
|
333
|
+
|
|
334
|
+
it("页面未声明 tailwind 时不写入该键", () => {
|
|
335
|
+
// 显式的 undefined 会盖掉渲染器一侧的缺省判定,故必须是"键不存在"而非"值为 undefined"
|
|
336
|
+
const call = splitRenderArgs({ name: "p", html: "<i>" })
|
|
337
|
+
expect("tailwind" in call.opts).toBe(false)
|
|
338
|
+
})
|
|
339
|
+
|
|
340
|
+
it("页面声明 false 时同样传下去", () => {
|
|
341
|
+
// false 是一次明确的"不要编译",不可与未声明混为一谈
|
|
342
|
+
expect(splitRenderArgs({ name: "p", html: "<i>", tailwind: false }).opts).toEqual({ tailwind: false })
|
|
343
|
+
})
|
|
344
|
+
|
|
345
|
+
it("调用点覆盖页面声明", () => {
|
|
346
|
+
const call = splitRenderArgs({ name: "p", html: "<i>", tailwind: true }, { tailwind: false })
|
|
347
|
+
expect(call.opts).toEqual({ tailwind: false })
|
|
348
|
+
})
|
|
321
349
|
})
|
|
322
350
|
|
|
323
351
|
describe("ctx.sql", () => {
|