@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.
@@ -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"}
@@ -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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"}
@@ -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 ? await instance.update(name) : await instance.install(name);
316
- const loaded = load ? [...(await deps.plugins.loadAll()).loaded] : [];
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();
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAYjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,mBAAmB;AACnB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAA;AAE/B,yBAAyB;AACzB,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAE5B,2BAA2B;AAC3B,MAAM,YAAY,GAAG,IAAI,CAAA;AAEzB,uCAAuC;AACvC,MAAM,YAAY,GAAG,OAAO,CAAA;AAE5B,uBAAuB;AACvB,MAAM,UAAU,GAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAwLpG;;;;;GAKG;AACH,SAAS,IAAI,CAAC,MAAc,EAAE,OAAe;IAC3C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAa,CAAA;IAC1C,GAAG,CAAC,UAAU,GAAG,MAAM,CAAA;IACvB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,IAAa;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,IAA+B,CAAA;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,GAA4B,EAAE,GAAW;IAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;QAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC,CAAA;IACxF,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAW;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAClE,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAA4B,EAAE,GAAW;IAChE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACtB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACnE,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,OAAO,CAAC,KAA4B,EAAE,GAAW;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IACzC,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,KAA4B,EAAE,GAAW,EAAE,QAAgB,EAAE,GAAW;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAA;IACpD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAA;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,KAA4B;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACpE,OAAO,GAAe,CAAA;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,MAAM,UAAU,GAAmB,EAAE,CAAA;IAErC,2BAA2B;IAC3B,MAAM,eAAe,GAAG,GAAS,EAAE;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAA;QACjE,CAAC;IACH,CAAC,CAAA;IAED;;;;;OAKG;IACH,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAE,IAAY,EAAE,OAAqB,EAAE,OAAsB,EAAQ,EAAE;QACpG,MAAM,CAAC,IAAI,CAAC;YACV,MAAM;YACN,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;gBACnB,IAAI,CAAC;oBACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC3B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;wBAC/B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAA;oBAC1E,CAAC;oBACD,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,CAAC,IAAwB,EAAkB,EAAE;QAC5D,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/D,MAAM,IAAI,GAA+B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnE,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,oBAAoB,SAAS,SAAS,CAAC,CAAA;QAC3F,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,CAAC,EAAsB,EAAgB,EAAE;QACzD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAC7D,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,sEAAsE;IAEtE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ;gBAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;aACrC;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM;gBAC/D,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC3C,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM;gBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM;gBACrC,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;gBAC1D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC5B;YACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;SAC/E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAEzC,sEAAsE;IAEtE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAEnD,wCAAwC;IACxC,wCAAwC;IACxC,sBAAsB;IACtB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;IACxG,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACvC,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACrC,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC5C,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACxC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,sEAAsE;IAEtE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAEhD,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAA;QAC5D,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC9C,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,WAAW,CAAC,CAAA;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC9C,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,CAAA;QAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,gEAAgE;IAEhE;;;;OAIG;IACH,MAAM,MAAM,GAAG,GAAiB,EAAE;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC,CAAA;IAED;;;;;;;;;;;OAWG;IACH,MAAM,iBAAiB,GAAG,KAAK,EAC7B,IAAY,EACZ,IAAa,EACb,OAAgB,EACkB,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAA;QACzB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC;YACH,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACnF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACrE,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC,CAAA;IAED,uCAAuC;IACvC,oCAAoC;IACpC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAEjF,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAExD,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACxC,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxC,OAAO,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC7C,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7D,OAAO,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACxC,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,qCAAqC;QACrC,iCAAiC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/F,IAAI,OAAgB,CAAA;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAA;QACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;IAElD;;;;;;;OAOG;IACH,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;IAE9D,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAEpD,0DAA0D;IAE1D,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAElD,wCAAwC;IACxC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAElD,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAE3D,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAClC,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAA;QACxD,wCAAwC;QACxC,8CAA8C;QAC9C,IAAI,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAA;QAC7F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,WAAW;gBAAE,MAAM,GAAG,CAAA;YACzC,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACvC,eAAe,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,KAAK,GAA4D,EAAE,CAAA;QACzE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAChD,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QAClD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,WAAW;gBAAE,MAAM,GAAG,CAAA;YACzC,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACxC,eAAe,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3C,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,yCAAyC;IACzC,+BAA+B;IAC/B,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC9C,eAAe,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACjD,eAAe,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAChD,eAAe,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,iEAAiE;IAEjE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAE9C,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;QACpE,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,+CAA+C;IAC/C,qCAAqC;IACrC,qBAAqB;IACrB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;QAC1B,eAAe,EAAE,CAAA;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE;QACrC,eAAe,EAAE,CAAA;QACjB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;QAC1F,sCAAsC;QACtC,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE;QAChC,eAAe,EAAE,CAAA;QACjB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;QAC9B,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;IACjF,CAAC,CAAC,CAAA;IAEF,sEAAsE;IAEtE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC7C,MAAM,KAAK,GAA0E;YACnF,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC;SACnE,CAAA;QACD,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QAC5D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;YAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QACpE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;IACxG,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,sCAAsC;IACtC,4BAA4B;IAC5B,UAAU,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAC7C,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAE7E,sBAAsB;YACtB,MAAM,OAAO,GAAG,CAAC,GAAc,EAAW,EAAE;gBAC1C,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS;oBAAE,OAAO,KAAK,CAAA;gBACtF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAA;gBAC5E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACvF,OAAO,IAAI,CAAA;YACb,CAAC,CAAA;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,OAAM;gBACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,OAAM;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YACF,sCAAsC;YACtC,yCAAyC;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3B,CAAC;KACF,CAAC,CAAA;IAEF,+DAA+D;IAE/D,+CAA+C;IAC/C,0BAA0B;IAC1B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;QACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ;QAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAChC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;QACxC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;KACjC,CAAC,CAAC,CAAA;IAEH,gEAAgE;IAEhE;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,GAAG,EAAE,8CAA8C,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACzD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,OAAmB;IACtE,MAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5F,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,GAAG,EAAE;QACV,yCAAyC;QACzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,GAAG,EAAE,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACjB,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,IAAa;IAC3D,OAAO,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;AACxD,CAAC"}
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;AAwDD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,UAA+B,GAAG,OAAO,CAAC,YAAY,CAAC,CAoB9H"}
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"}
@@ -106,7 +106,15 @@ async function isDirEntry(dir, entry, windows) {
106
106
  }
107
107
  }
108
108
  /**
109
- * 排序:目录在前,同类按名称(`localeCompare` + `numeric`,故 `f2` 在 `f10` 之前)
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.localeCompare(b.name, "zh-Hans-CN", { numeric: true });
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":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAe,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,2BAA2B;AAC3B,MAAM,WAAW,GAAG,IAAI,CAAA;AAExB;;;;;GAKG;AACH,MAAM,aAAa,GAAG,0BAA0B,CAAA;AAEhD;;;;;;;;;GASG;AACH,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAChC,CAAC;AAgDD,mBAAmB;AACnB,MAAM,UAAU,GAAqD;IACnE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;IACpC,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;CAC5C,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,OAAgB;IACvD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,CAAA;IAC5B,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,UAAU;IACvB,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACnD,MAAM,IAAI,GAAG,GAAG,MAAM,KAAK,CAAA;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtG,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,KAAa,EAAE,OAAgB;IACpE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IACvD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;QAClC,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAEnE;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,CAAc,EAAE,CAAc;IACpD,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAyB,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;IACrG,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEhC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,WAAW,GAAG,gCAAgC;SACxD,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,OAAgB;IAClD,IAAI,GAAa,CAAA;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;QACvG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;IACnH,CAAC;IAED,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAE5B,oCAAoC;IACpC,qBAAqB;IACrB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAA;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;YAC5D,SAAS;YACT,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG;SACzB;KACF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yunzai-ng/core",
3
- "version": "0.2.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.1.1"
42
+ "@yunzai-ng/types": "0.2.0"
43
43
  },
44
44
  "optionalDependencies": {
45
45
  "better-sqlite3": "^11.8.1",
@@ -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
+ })
@@ -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 closing = [...agents.values()].map(agent => agent.close().catch(() => undefined))
784
+ const pool = [...agents.values()]
762
785
  agents.clear()
763
- await Promise.all(closing)
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", () => {