@aalis/core 0.10.1 → 0.12.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/app.d.ts +20 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +22 -3
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +75 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +169 -23
- package/dist/context.js.map +1 -1
- package/dist/contributions.d.ts +3 -3
- package/dist/disposable-chain.d.ts +5 -3
- package/dist/disposable-chain.d.ts.map +1 -1
- package/dist/disposable-chain.js +22 -12
- package/dist/disposable-chain.js.map +1 -1
- package/dist/events.d.ts +10 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +30 -7
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin-activation.d.ts +23 -0
- package/dist/plugin-activation.d.ts.map +1 -1
- package/dist/plugin-activation.js +74 -8
- package/dist/plugin-activation.js.map +1 -1
- package/dist/plugin-topology.d.ts.map +1 -1
- package/dist/plugin-topology.js +16 -17
- package/dist/plugin-topology.js.map +1 -1
- package/dist/plugin.d.ts +5 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +69 -42
- package/dist/plugin.js.map +1 -1
- package/dist/services-helpers.d.ts +0 -2
- package/dist/services-helpers.d.ts.map +1 -1
- package/dist/services-helpers.js +1 -12
- package/dist/services-helpers.js.map +1 -1
- package/dist/services.d.ts +7 -28
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +2 -28
- package/dist/services.js.map +1 -1
- package/dist/types/app.d.ts +0 -1
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/plugin.d.ts +3 -10
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js.map +1 -1
- package/dist/types/services.js +2 -2
- package/dist/types/services.js.map +1 -1
- package/package.json +1 -1
package/dist/context.js
CHANGED
|
@@ -19,8 +19,9 @@ export class Context {
|
|
|
19
19
|
/**
|
|
20
20
|
* 开发模式开关——由 App 注入,子 Context 通过 fork 继承。
|
|
21
21
|
*
|
|
22
|
-
* - `true`(默认):`provide`
|
|
23
|
-
*
|
|
22
|
+
* - `true`(默认):`provide` 时跑注册校验(entryId 前缀 / 重复 provide,见
|
|
23
|
+
* validateProvide),激活后做 provides 反向一致性 warn
|
|
24
|
+
* - `false`(生产):跳过上述校验
|
|
24
25
|
*
|
|
25
26
|
* core 不读 `process.env`——是否 dev 由宿主决定。
|
|
26
27
|
*/
|
|
@@ -41,11 +42,23 @@ export class Context {
|
|
|
41
42
|
* 条目数有界于**当前存活**的贡献数:退订时由 off 的自移除逻辑摘掉本条。
|
|
42
43
|
*/
|
|
43
44
|
_contributionDisposers = new Map();
|
|
45
|
+
/** 贡献登记表 mapKey 分隔符:NUL 是唯一保证不出现在 point 名与贡献 id 里的字符(id 只禁 '/',空格等均合法)。 */
|
|
46
|
+
static CONTRIB_KEY_SEP = '\u0000';
|
|
44
47
|
/** 活跃沙盒子上下文 id(useModule)——用于同名重复挂载时唯一化 childId。 */
|
|
45
48
|
_moduleIds = new Set();
|
|
46
49
|
_disposables;
|
|
47
50
|
_children = new Set();
|
|
48
51
|
_parent;
|
|
52
|
+
/**
|
|
53
|
+
* post-dispose 注册政策(两档,各入口守卫引用此处):
|
|
54
|
+
* - 订阅类(on/middleware/contribute/provide/whenService):warn + no-op——调用方常是
|
|
55
|
+
* 插件的异步续段,清理路径上不抛错;也杜绝幽灵注册(provide 曾会向活总线闪发
|
|
56
|
+
* service:registered/unregistered,whenService 曾会真跑回调)。
|
|
57
|
+
* - 构造类(fork/useModule):抛错——在死 ctx 上造生命周期单元是编程错误,不是清理路径。
|
|
58
|
+
* - onDispose 特例:拆卸进行中(链未排空)仍进链、被本次清理正常等待(debug);
|
|
59
|
+
* 链已排空才就地执行且异步返回值不被等待(warn)。两种都不 no-op、不抛错——
|
|
60
|
+
* 它握着待释放的资源,丢弃即泄漏。
|
|
61
|
+
*/
|
|
49
62
|
_disposed = false;
|
|
50
63
|
/**
|
|
51
64
|
* 在飞的拆卸 promise。`_disposed` 在清理**开始前**置位,仅凭它早退会让后来者
|
|
@@ -54,6 +67,31 @@ export class Context {
|
|
|
54
67
|
* join 而非早退。
|
|
55
68
|
*/
|
|
56
69
|
_inflightTeardown;
|
|
70
|
+
/**
|
|
71
|
+
* 本 ctx 的初始化在飞标记(插件 apply 的 promise,已抹平成永不 reject)。
|
|
72
|
+
*
|
|
73
|
+
* 存在的理由是一个真实竞态:插件在 apply 里**先 await 拿资源、再挂
|
|
74
|
+
* `onDispose`**(`await client.connect()` → `ctx.onDispose(() => client.close())`
|
|
75
|
+
* 是全仓最常见的写法)。若拆卸恰好落在这个窗口里,disposer 到达时清理链
|
|
76
|
+
* 已排空,`DisposableChain.push` 走 post-dispose 分支就地执行它——资源最终
|
|
77
|
+
* 会关,**但异步返回值不被等待**,于是 `disposeAsync` 的「返回时异步清理
|
|
78
|
+
* 已完成」承诺落空。
|
|
79
|
+
*
|
|
80
|
+
* 可达面要说清:`PluginManager` 的 unload / disablePlugin / bouncePlugin 会**主动**
|
|
81
|
+
* 走进这个窗口——三者对在飞 ctx 直接 disposeAsync(先把 entry.state 改离
|
|
82
|
+
* 'activating' 让激活收尾让位,见 plugin-activation.ts 的接管检查),依赖的正是
|
|
83
|
+
* 本机制「先等 apply 落定再排空链」的承诺;`evictDownstreamConsumers` 同以
|
|
84
|
+
* entry.context 为判据走进窗口;recompute 仍只对 `'active'` 动手,
|
|
85
|
+
* `App.stop` 另有 `idle()` 挡在前面。宿主直调
|
|
86
|
+
* `disposeAsync` 与 `useModule` 的沙盒子 ctx 级联同样由本机制兜住。
|
|
87
|
+
*
|
|
88
|
+
* 记住 apply 的 promise 后,`disposeAsync` 可以先等它落定再排空链——迟到的
|
|
89
|
+
* disposer 就走**正常注册路径**进链,被正常 await。插件侧零改动。
|
|
90
|
+
*
|
|
91
|
+
* 抹平成永不 reject:apply 失败时这里只关心「跑完了没」,失败本身由
|
|
92
|
+
* activatePlugin 的 catch 处理,不该在拆卸路径上二次抛出。
|
|
93
|
+
*/
|
|
94
|
+
_activation;
|
|
57
95
|
constructor(options) {
|
|
58
96
|
this.id = options.id;
|
|
59
97
|
this._events = options.events;
|
|
@@ -86,6 +124,9 @@ export class Context {
|
|
|
86
124
|
* 创建子上下文(通常为每个插件创建一个)
|
|
87
125
|
*/
|
|
88
126
|
fork(id) {
|
|
127
|
+
if (this._disposed) {
|
|
128
|
+
throw new Error(`Context "${this.id}" 已 dispose,无法 fork("${id}")`);
|
|
129
|
+
}
|
|
89
130
|
const child = new Context({
|
|
90
131
|
id,
|
|
91
132
|
events: this._events,
|
|
@@ -102,20 +143,26 @@ export class Context {
|
|
|
102
143
|
}
|
|
103
144
|
// ---- 事件 ----
|
|
104
145
|
on(event, handler) {
|
|
105
|
-
|
|
106
|
-
|
|
146
|
+
if (this._disposed) {
|
|
147
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 on("${event}")`);
|
|
148
|
+
return () => { };
|
|
149
|
+
}
|
|
150
|
+
const off = this._events.on(event, handler, this.id);
|
|
151
|
+
return this.trackDisposable(off, `on:${event}`);
|
|
107
152
|
}
|
|
108
153
|
/**
|
|
109
154
|
* 把一个底层退订原语登记到 disposable 链,并返回**自移除**的退订函数:
|
|
110
155
|
* 调用方手动退订时,闭包不再滞留 _disposables(否则它持有 handler 引用直到
|
|
111
156
|
* ctx.dispose 才释放——故所有注册 API 的退订都统一走此路径,杜绝该类泄漏)。
|
|
157
|
+
*
|
|
158
|
+
* label 进入链条目:泄漏排查与超时/抛错告警按它点名(`前缀:名字` 约定)。
|
|
112
159
|
*/
|
|
113
|
-
trackDisposable(off) {
|
|
160
|
+
trackDisposable(off, label) {
|
|
114
161
|
const dispose = () => {
|
|
115
162
|
this._disposables.remove(dispose);
|
|
116
163
|
off();
|
|
117
164
|
};
|
|
118
|
-
this._disposables.push(dispose);
|
|
165
|
+
this._disposables.push(dispose, label);
|
|
119
166
|
return dispose;
|
|
120
167
|
}
|
|
121
168
|
emit(event, ...args) {
|
|
@@ -132,6 +179,10 @@ export class Context {
|
|
|
132
179
|
* 但 dev 模式下会验证以避免 "entryId 与拥有者 plugin 脱联" 的 footgun。
|
|
133
180
|
*/
|
|
134
181
|
provide(name, instance, options) {
|
|
182
|
+
if (this._disposed) {
|
|
183
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 provide("${name}")`);
|
|
184
|
+
return () => { };
|
|
185
|
+
}
|
|
135
186
|
const entryId = options?.entryId ?? this.id;
|
|
136
187
|
if (this.devMode) {
|
|
137
188
|
validateProvide({
|
|
@@ -139,7 +190,6 @@ export class Context {
|
|
|
139
190
|
name,
|
|
140
191
|
entryId,
|
|
141
192
|
explicitEntryId: options?.entryId !== undefined,
|
|
142
|
-
priority: options?.priority,
|
|
143
193
|
services: this._services,
|
|
144
194
|
logger: this.logger,
|
|
145
195
|
});
|
|
@@ -157,7 +207,8 @@ export class Context {
|
|
|
157
207
|
});
|
|
158
208
|
}
|
|
159
209
|
};
|
|
160
|
-
|
|
210
|
+
// 显式 entryId(一 plugin 多 entry,如 LLM 多模型)时用它点名,否则服务名已够定位
|
|
211
|
+
this._disposables.push(dispose, `provide:${options?.entryId ?? name}`);
|
|
161
212
|
emitServiceRegistered(this._events, this.logger, name);
|
|
162
213
|
this.logger.debug(`服务已注册: ${name}`);
|
|
163
214
|
return dispose;
|
|
@@ -178,7 +229,7 @@ export class Context {
|
|
|
178
229
|
* 设置某服务的偏好 provider(按 contextId)
|
|
179
230
|
*
|
|
180
231
|
* 语义:「偏好 > 优先级 > 注册顺序」。偏好者总是 `getService(name)` 的第一返回值,
|
|
181
|
-
* 即使其 priority
|
|
232
|
+
* 即使其 priority 数值低于其它 entry。
|
|
182
233
|
*
|
|
183
234
|
* 注:偏好可以提前于 entry 注册前设置——一旦目标 contextId 注册即刻生效。
|
|
184
235
|
* @returns 始终返回 true(偏好已记录)
|
|
@@ -214,6 +265,10 @@ export class Context {
|
|
|
214
265
|
}
|
|
215
266
|
// biome-ignore lint/suspicious/noConfusingVoidType: cb 可隐式返回 void 或显式返回 cleanup
|
|
216
267
|
whenService(name, cb) {
|
|
268
|
+
if (this._disposed) {
|
|
269
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 whenService("${name}")`);
|
|
270
|
+
return () => { };
|
|
271
|
+
}
|
|
217
272
|
let cleanup;
|
|
218
273
|
let disposed = false;
|
|
219
274
|
/** 当前已挂载的胜者实例;undefined = 未挂载 */
|
|
@@ -246,7 +301,18 @@ export class Context {
|
|
|
246
301
|
attached = winner;
|
|
247
302
|
if (winner === undefined)
|
|
248
303
|
return;
|
|
249
|
-
|
|
304
|
+
// 统一错误政策:cb 抛错=warn+订阅保持。此前首挂(同步路径)抛错会逃逸
|
|
305
|
+
// 出 whenService 注册调用——复合 disposer 未入链未返回,留下半注册态;
|
|
306
|
+
// 重挂(事件路径)抛错则被 EventBus 吞成另一种沉默。两条路径同一条
|
|
307
|
+
// warn;attached 已记录本次胜者,不自动重试,等下次服务变更再对齐。
|
|
308
|
+
let ret;
|
|
309
|
+
try {
|
|
310
|
+
ret = cb(winner);
|
|
311
|
+
}
|
|
312
|
+
catch (err) {
|
|
313
|
+
this.logger.warn(`whenService('${name}') 回调抛错(订阅保持,等下次服务变更):`, err);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
250
316
|
// cb 执行期间可能同步触发了本 whenService 的 dispose(如 cb 内部链式
|
|
251
317
|
// 卸载)。此时不能把新 cleanup 挂上去——dispose 已跑过 runCleanup 且
|
|
252
318
|
// disposed=true,挂上的 cleanup 将永不执行(泄漏)。直接立即执行掉。
|
|
@@ -290,7 +356,7 @@ export class Context {
|
|
|
290
356
|
runCleanup();
|
|
291
357
|
attached = undefined;
|
|
292
358
|
};
|
|
293
|
-
this._disposables.push(dispose);
|
|
359
|
+
this._disposables.push(dispose, `whenService:${name}`);
|
|
294
360
|
return dispose;
|
|
295
361
|
}
|
|
296
362
|
// ---- 中间件/钩子 ----
|
|
@@ -315,7 +381,11 @@ export class Context {
|
|
|
315
381
|
* });
|
|
316
382
|
*/
|
|
317
383
|
middleware(hook, fn) {
|
|
318
|
-
|
|
384
|
+
if (this._disposed) {
|
|
385
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 middleware("${hook}")`);
|
|
386
|
+
return () => { };
|
|
387
|
+
}
|
|
388
|
+
return this.trackDisposable(this._hooks.register(hook, fn, this.id), `middleware:${hook}`);
|
|
319
389
|
}
|
|
320
390
|
/**
|
|
321
391
|
* 执行钩子链(语义见 {@link HookRegistry.run})。
|
|
@@ -355,11 +425,11 @@ export class Context {
|
|
|
355
425
|
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 contribute("${point}")`);
|
|
356
426
|
return () => { };
|
|
357
427
|
}
|
|
358
|
-
const mapKey = `${point}
|
|
428
|
+
const mapKey = `${point}${Context.CONTRIB_KEY_SEP}${spec.id}`;
|
|
359
429
|
// 同键重注册 = 替换:先撤旧登记(自移除出 dispose 链 + 撤注册表旧条目),
|
|
360
430
|
// 再写新的——先删后写,避免旧闭包滞留(见 _contributionDisposers)。
|
|
361
431
|
this._contributionDisposers.get(mapKey)?.();
|
|
362
|
-
const rawOff = this.trackDisposable(this._contributions.register(point, spec, this.id));
|
|
432
|
+
const rawOff = this.trackDisposable(this._contributions.register(point, spec, this.id), `contribute:${point}:${spec.id}`);
|
|
363
433
|
// 包一层做自移除:不删登记表条目的话,`Map → dispose 闭包 → off 闭包 →
|
|
364
434
|
// entry → spec(及其 build 捕获的数据)` 这条持有链会让退订过的贡献一直
|
|
365
435
|
// 活到 ctx.dispose(动态 id 场景下无界增长)。恒等卫防误删同键新注册。
|
|
@@ -432,7 +502,10 @@ export class Context {
|
|
|
432
502
|
this._moduleIds.add(childId);
|
|
433
503
|
const child = this.fork(childId);
|
|
434
504
|
try {
|
|
435
|
-
await
|
|
505
|
+
// 登记后再 await,让父 ctx 级联拆卸时能先等子 ctx 初始化落定(见 {@link trackActivation})
|
|
506
|
+
const applying = Promise.resolve(module.apply(child, config));
|
|
507
|
+
child.trackActivation(applying);
|
|
508
|
+
await applying;
|
|
436
509
|
}
|
|
437
510
|
catch (err) {
|
|
438
511
|
this._moduleIds.delete(childId);
|
|
@@ -461,9 +534,22 @@ export class Context {
|
|
|
461
534
|
* const conn = await connectExternal();
|
|
462
535
|
* ctx.onDispose(() => conn.close());
|
|
463
536
|
*
|
|
537
|
+
* @param label 可选来源标注,仅用于诊断日志——清理超时/抛错时点名是哪一项。
|
|
464
538
|
* @returns 取消该清理回调的函数(在 dispose 前调用可阻止执行)
|
|
465
539
|
*/
|
|
466
|
-
onDispose(fn) {
|
|
540
|
+
onDispose(fn, label) {
|
|
541
|
+
if (this._disposed) {
|
|
542
|
+
// 判据必须用链的 disposed,不是本 ctx 的 _disposed——后者在清理**开始前**就置位,
|
|
543
|
+
// 中间隔着等 activation / 级联子 ctx 两段窗口;落在窗口里的迟到 disposer 仍进链、
|
|
544
|
+
// 被本次清理正常等待(设计内正确路径,见 _activation),只有链已排空才真是就地执行。
|
|
545
|
+
if (this._disposables.disposed) {
|
|
546
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,onDispose${label ? `("${label}")` : ''} 将就地执行(异步返回值不被等待)`);
|
|
547
|
+
}
|
|
548
|
+
else {
|
|
549
|
+
this.logger.debug(`Context "${this.id}" 拆卸进行中,onDispose${label ? `("${label}")` : ''} 纳入本次清理链`);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
const who = label ? ` [${label}]` : '';
|
|
467
553
|
const wrapped = () => {
|
|
468
554
|
try {
|
|
469
555
|
const ret = fn();
|
|
@@ -472,21 +558,65 @@ export class Context {
|
|
|
472
558
|
// 这是 onDispose 异步契约真正兑现的通道。错误就地消化,单个清理
|
|
473
559
|
// 失败不拖垮链上其他清理;同步 dispose() 忽略返回值(不等待)。
|
|
474
560
|
return ret.catch(err => {
|
|
475
|
-
this.logger.
|
|
561
|
+
this.logger.warn(`onDispose 异步清理抛错(已忽略)${who}:`, err);
|
|
476
562
|
});
|
|
477
563
|
}
|
|
478
564
|
}
|
|
479
565
|
catch (err) {
|
|
480
|
-
this.logger.
|
|
566
|
+
this.logger.warn(`onDispose 清理抛错(已忽略)${who}:`, err);
|
|
481
567
|
}
|
|
482
568
|
};
|
|
483
|
-
this._disposables.push(wrapped);
|
|
569
|
+
this._disposables.push(wrapped, label);
|
|
484
570
|
return () => this._disposables.remove(wrapped);
|
|
485
571
|
}
|
|
486
572
|
/** @internal 当前 disposable 链长度(诊断 / 测试用:检测 provide/whenService 的闭包是否如期自移除)。 */
|
|
487
573
|
get disposableCount() {
|
|
488
574
|
return this._disposables.size;
|
|
489
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* @internal 链序标签名单(诊断 / 测试用):把「卸载后还剩几个」升级为「剩的是谁」。
|
|
578
|
+
* 内核门面注册按 `前缀:名字` 约定自动点名(on:/middleware:/contribute:/provide:/whenService:),
|
|
579
|
+
* onDispose 用作者传的 label;未命名项以 undefined 占位——占位本身是信息
|
|
580
|
+
* (说明有未传 label 的 onDispose,排查时按链序号对照 `[#i]` 告警)。
|
|
581
|
+
*/
|
|
582
|
+
listDisposables() {
|
|
583
|
+
return this._disposables.labels();
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* @internal 贡献登记表条目名单(诊断 / 测试用)。与 {@link listDisposables} 是
|
|
587
|
+
* 两本独立的账(同 {@link contributionDisposerCount} 的注释)——登记表泄漏
|
|
588
|
+
* 只有这里看得见。key 天然携带贡献点与贡献 id,直接拆给调用方。
|
|
589
|
+
*/
|
|
590
|
+
listContributions() {
|
|
591
|
+
return [...this._contributionDisposers.keys()].map(k => {
|
|
592
|
+
const sep = k.indexOf(Context.CONTRIB_KEY_SEP);
|
|
593
|
+
return { point: k.slice(0, sep), id: k.slice(sep + 1) };
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* @internal 登记本 ctx 的初始化在飞 promise(见 {@link _activation})。
|
|
598
|
+
*
|
|
599
|
+
* 仅由激活路径(`activatePlugin`)与 `Context.useModule` 调用,传入 `module.apply(...)`
|
|
600
|
+
* 的返回值;插件侧不得调用(非契约面)。
|
|
601
|
+
* 调用方仍要自行 await 该 promise 并处理其失败——本方法只负责让拆卸路径
|
|
602
|
+
* 知道「初始化还没跑完」,不改变激活语义。
|
|
603
|
+
*
|
|
604
|
+
* ⚠. 被登记的 apply **不得** await 任何最终落到本 ctx 或其祖先拆卸上的调用
|
|
605
|
+
* (`disposeAsync` / `plugins.unload|bouncePlugin|disablePlugin` / `app.stop`
|
|
606
|
+
* / `plugins.idle`)——拆卸正等着它返回,await 它即自等自。与 `onDispose`
|
|
607
|
+
* 回调的约束同源。`disposeAsync(timeoutMs)` 的超时是这条的兜底而非豁免。
|
|
608
|
+
*/
|
|
609
|
+
trackActivation(applying) {
|
|
610
|
+
const settled = applying.then(() => { }, () => { });
|
|
611
|
+
this._activation = settled;
|
|
612
|
+
// 落定即摘:不摘则每个插件 ctx 长期持有一个已 resolve 的 promise,且
|
|
613
|
+
// 拆卸路径要多绕一个微任务。恒等卫防止摘掉后来者(同 ctx 理论上不会
|
|
614
|
+
// 二次激活,但 recompute 路径演进后不保证)。
|
|
615
|
+
settled.then(() => {
|
|
616
|
+
if (this._activation === settled)
|
|
617
|
+
this._activation = undefined;
|
|
618
|
+
});
|
|
619
|
+
}
|
|
490
620
|
/**
|
|
491
621
|
* @internal 当前贡献登记表条目数(诊断 / 测试用)。
|
|
492
622
|
*
|
|
@@ -547,6 +677,21 @@ export class Context {
|
|
|
547
677
|
if (this._disposed)
|
|
548
678
|
return;
|
|
549
679
|
this._disposed = true;
|
|
680
|
+
// 等初始化落定,再动任何拆卸动作(见 _activation)。
|
|
681
|
+
//
|
|
682
|
+
// 位置必须在这里——排在本方法末段的链排空**之前**:apply 续段迟到的 `onDispose`
|
|
683
|
+
// 要赶上本次清理链,这是 disposeAsync「返回即异步清理完成」承诺的落点。
|
|
684
|
+
// 也必须排在子上下文销毁之前:续段可能对先前 fork 出的子 ctx 挂 onDispose,
|
|
685
|
+
// 下移会让该 disposer 落到已排空的子链上就地执行、返回值不被等待。
|
|
686
|
+
// (provide/fork 已各自有 post-dispose 守卫,不再构成本 await 的位置理由。)
|
|
687
|
+
//
|
|
688
|
+
// 仅异步路径等待。同步 `dispose()` 承诺「首个 await 前同步执行完」,可观察
|
|
689
|
+
// 时序与纯同步实现一致——在这里插 await 会打破它,且同步路径本就不等待任何
|
|
690
|
+
// 异步清理,等 apply 无意义。
|
|
691
|
+
if (wait && this._activation) {
|
|
692
|
+
await awaitWithTimeout(this._activation, timeoutMs, () => this.logger.warn(`Context "${this.id}": 等待初始化落定超过 ${timeoutMs}ms,放弃等待并继续拆卸` +
|
|
693
|
+
`(该插件 apply 中在飞的资源获取,其 onDispose 可能赶不上本次清理链)`));
|
|
694
|
+
}
|
|
550
695
|
// 先销毁子上下文(复制避免迭代中修改 Set)
|
|
551
696
|
const children = [...this._children];
|
|
552
697
|
for (const child of children) {
|
|
@@ -558,12 +703,13 @@ export class Context {
|
|
|
558
703
|
this._children.clear();
|
|
559
704
|
// 记录此上下文注册的服务名,以便清理后发射事件
|
|
560
705
|
const removedServices = this._services.unregisterByContext(this.id);
|
|
561
|
-
//
|
|
562
|
-
//
|
|
563
|
-
//
|
|
564
|
-
//
|
|
706
|
+
// 钩子、贡献与事件监听在清理链**之前**注销:异步等待清理的整个窗口内,
|
|
707
|
+
// 本插件的中间件不得再响应消息、贡献不得再被组装器收集、事件 handler
|
|
708
|
+
// 不得再响应事件——半拆状态不外露。同步路径同一 tick 内完成,先后不可
|
|
709
|
+
// 观察;清理链里各注册的 disposer 靠存在性检查/身份卫自然 no-op,不会双删。
|
|
565
710
|
this._hooks.unregisterByContext(this.id);
|
|
566
711
|
this._contributions.unregisterByContext(this.id);
|
|
712
|
+
this._events.unregisterByContext(this.id);
|
|
567
713
|
// 逆序执行清理(unregisterByContext 已整体移除服务,provide 的 dispose 会安全跳过)
|
|
568
714
|
if (wait)
|
|
569
715
|
await this._disposables.disposeAsync(timeoutMs);
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/contributions.d.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* **spec.id 侧**的抢注/顶替由此杜绝,无需归属权校验(与 provide 的
|
|
7
7
|
* entryId 前缀约定同源,但由构造保证而非 warn)。
|
|
8
8
|
*
|
|
9
|
-
* 边界如实声明:该保证以 ctx.id 为信任锚。`ctx.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* 边界如实声明:该保证以 ctx.id 为信任锚。`ctx.useModule(module)` 在 fork 前
|
|
10
|
+
* 已对 childId(`${父id}#${模块名}`)做 `~n` 后缀唯一化;直接 `ctx.fork(id)`
|
|
11
|
+
* 则不保证唯一——重复 ctx.id 会使两方共用同一命名空间、后注册者替换先注册者。
|
|
12
12
|
* 这是 Context 模型的信任边界(provide / middleware 的 contextId 归属同理
|
|
13
13
|
* 暴露),如需硬化应在 fork 层统一处理,而非各原语自设门禁。
|
|
14
14
|
*/
|
|
@@ -3,7 +3,7 @@ import type { Logger } from './logger.js';
|
|
|
3
3
|
* 一次性清理器链
|
|
4
4
|
*
|
|
5
5
|
* 用途:Context 及其他需要累积「注册 → 卸载」副作用的场景,提供:
|
|
6
|
-
* - `push(fn)`
|
|
6
|
+
* - `push(fn, label?)` 追加清理函数(label 仅进诊断日志)
|
|
7
7
|
* - `remove(fn)` 精确移除单个清理函数(不执行)
|
|
8
8
|
* - `dispose()` 同步逆序调用所有清理函数并清空;期间任一抛错不影响其他
|
|
9
9
|
* - `disposeAsync(timeoutMs?)` 逆序**串行等待**每个清理函数(含异步返回值)
|
|
@@ -17,7 +17,9 @@ export declare class DisposableChain {
|
|
|
17
17
|
private _disposed;
|
|
18
18
|
constructor(logger?: Logger | undefined);
|
|
19
19
|
/** 追加一个清理函数。dispose 后追加会立刻执行(异步返回值不等待)。 */
|
|
20
|
-
push(fn: () => unknown): void;
|
|
20
|
+
push(fn: () => unknown, label?: string): void;
|
|
21
|
+
/** 链序标签名单(未命名项为 undefined 占位)。诊断读口,纯读不执行。 */
|
|
22
|
+
labels(): ReadonlyArray<string | undefined>;
|
|
21
23
|
/** 精确移除单个 disposable(不执行)。用于缓冲项"取消"场景。 */
|
|
22
24
|
remove(fn: () => unknown): boolean;
|
|
23
25
|
get disposed(): boolean;
|
|
@@ -35,7 +37,7 @@ export declare class DisposableChain {
|
|
|
35
37
|
private take;
|
|
36
38
|
/**
|
|
37
39
|
* 同步逆序执行所有清理函数并清空。重复调用无效果。
|
|
38
|
-
* 单个函数抛错被 swallow
|
|
40
|
+
* 单个函数抛错被 swallow(经 logger 记 warn——清理失败是泄漏的头号成因,必须默认可见);
|
|
39
41
|
* 异步返回值**不等待**——需要等待落盘类清理时用 {@link disposeAsync}。
|
|
40
42
|
*/
|
|
41
43
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable-chain.d.ts","sourceRoot":"","sources":["../src/disposable-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"disposable-chain.d.ts","sourceRoot":"","sources":["../src/disposable-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAc1C;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAHpC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEG,MAAM,CAAC,EAAE,MAAM,YAAA;IAE5C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAY7C,6CAA6C;IAC7C,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,OAAO;IAOlC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI;IAOZ;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAYf;;;;;;;;;OASG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD;;;;;;OAMG;YACW,gBAAgB;CAK/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,iBAsB/G"}
|
package/dist/disposable-chain.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
/** 诊断用的条目标识:有 label 用 label,否则退到链内序号;两者都没有则不加缀。 */
|
|
2
|
+
function describe(label, index) {
|
|
3
|
+
if (label)
|
|
4
|
+
return ` [${label}]`;
|
|
5
|
+
return index === undefined ? '' : ` [#${index}]`;
|
|
6
|
+
}
|
|
1
7
|
/**
|
|
2
8
|
* 一次性清理器链
|
|
3
9
|
*
|
|
4
10
|
* 用途:Context 及其他需要累积「注册 → 卸载」副作用的场景,提供:
|
|
5
|
-
* - `push(fn)`
|
|
11
|
+
* - `push(fn, label?)` 追加清理函数(label 仅进诊断日志)
|
|
6
12
|
* - `remove(fn)` 精确移除单个清理函数(不执行)
|
|
7
13
|
* - `dispose()` 同步逆序调用所有清理函数并清空;期间任一抛错不影响其他
|
|
8
14
|
* - `disposeAsync(timeoutMs?)` 逆序**串行等待**每个清理函数(含异步返回值)
|
|
@@ -18,7 +24,7 @@ export class DisposableChain {
|
|
|
18
24
|
this.logger = logger;
|
|
19
25
|
}
|
|
20
26
|
/** 追加一个清理函数。dispose 后追加会立刻执行(异步返回值不等待)。 */
|
|
21
|
-
push(fn) {
|
|
27
|
+
push(fn, label) {
|
|
22
28
|
if (this._disposed) {
|
|
23
29
|
try {
|
|
24
30
|
fn();
|
|
@@ -28,11 +34,15 @@ export class DisposableChain {
|
|
|
28
34
|
}
|
|
29
35
|
return;
|
|
30
36
|
}
|
|
31
|
-
this._items.push(fn);
|
|
37
|
+
this._items.push({ fn, label });
|
|
38
|
+
}
|
|
39
|
+
/** 链序标签名单(未命名项为 undefined 占位)。诊断读口,纯读不执行。 */
|
|
40
|
+
labels() {
|
|
41
|
+
return this._items.map(e => e.label);
|
|
32
42
|
}
|
|
33
43
|
/** 精确移除单个 disposable(不执行)。用于缓冲项"取消"场景。 */
|
|
34
44
|
remove(fn) {
|
|
35
|
-
const idx = this._items.
|
|
45
|
+
const idx = this._items.findIndex(e => e.fn === fn);
|
|
36
46
|
if (idx < 0)
|
|
37
47
|
return false;
|
|
38
48
|
this._items.splice(idx, 1);
|
|
@@ -62,7 +72,7 @@ export class DisposableChain {
|
|
|
62
72
|
}
|
|
63
73
|
/**
|
|
64
74
|
* 同步逆序执行所有清理函数并清空。重复调用无效果。
|
|
65
|
-
* 单个函数抛错被 swallow
|
|
75
|
+
* 单个函数抛错被 swallow(经 logger 记 warn——清理失败是泄漏的头号成因,必须默认可见);
|
|
66
76
|
* 异步返回值**不等待**——需要等待落盘类清理时用 {@link disposeAsync}。
|
|
67
77
|
*/
|
|
68
78
|
dispose() {
|
|
@@ -71,10 +81,10 @@ export class DisposableChain {
|
|
|
71
81
|
const items = this.take();
|
|
72
82
|
for (let i = items.length - 1; i >= 0; i--) {
|
|
73
83
|
try {
|
|
74
|
-
items[i]();
|
|
84
|
+
items[i].fn();
|
|
75
85
|
}
|
|
76
86
|
catch (err) {
|
|
77
|
-
this.logger?.
|
|
87
|
+
this.logger?.warn(`DisposableChain: dispose 抛出,已忽略${describe(items[i].label, i)}:`, err);
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
90
|
}
|
|
@@ -94,13 +104,13 @@ export class DisposableChain {
|
|
|
94
104
|
const items = this.take();
|
|
95
105
|
for (let i = items.length - 1; i >= 0; i--) {
|
|
96
106
|
try {
|
|
97
|
-
const ret = items[i]();
|
|
107
|
+
const ret = items[i].fn();
|
|
98
108
|
if (ret && typeof ret.then === 'function') {
|
|
99
|
-
await this.awaitWithTimeout(Promise.resolve(ret), timeoutMs);
|
|
109
|
+
await this.awaitWithTimeout(Promise.resolve(ret), timeoutMs, describe(items[i].label, i));
|
|
100
110
|
}
|
|
101
111
|
}
|
|
102
112
|
catch (err) {
|
|
103
|
-
this.logger?.
|
|
113
|
+
this.logger?.warn(`DisposableChain: dispose 抛出,已忽略${describe(items[i].label, i)}:`, err);
|
|
104
114
|
}
|
|
105
115
|
}
|
|
106
116
|
}
|
|
@@ -111,8 +121,8 @@ export class DisposableChain {
|
|
|
111
121
|
* 是所有 JS 运行时(浏览器/Node/Deno/Worker)的共有全局,非 `node:` 专属,
|
|
112
122
|
* 不引入环境假设。
|
|
113
123
|
*/
|
|
114
|
-
async awaitWithTimeout(p, timeoutMs) {
|
|
115
|
-
await awaitWithTimeout(p, timeoutMs, () => this.logger?.warn(`DisposableChain:
|
|
124
|
+
async awaitWithTimeout(p, timeoutMs, who = '') {
|
|
125
|
+
await awaitWithTimeout(p, timeoutMs, () => this.logger?.warn(`DisposableChain: 异步清理${who} 超过 ${timeoutMs}ms,放弃等待,继续后续清理`));
|
|
116
126
|
}
|
|
117
127
|
}
|
|
118
128
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable-chain.js","sourceRoot":"","sources":["../src/disposable-chain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"disposable-chain.js","sourceRoot":"","sources":["../src/disposable-chain.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class EventBus {
|
|
|
21
21
|
private reportHandlerError;
|
|
22
22
|
/**
|
|
23
23
|
* 一次性事件(sticky):emit 后保留最近一次参数;后续 on 监听该事件时
|
|
24
|
-
*
|
|
24
|
+
* 在下一个微任务里用缓存参数补发回调(异步,与 emit 的投递语义一致)。
|
|
25
|
+
* 用于"应用生命周期里只发一次的里程碑事件",
|
|
25
26
|
* 让被热重载的插件在 reactivate 后仍能拿到启动通知。
|
|
26
27
|
* 当前标记为 sticky 的事件:'ready'、'app:started'。
|
|
27
28
|
*
|
|
@@ -40,7 +41,14 @@ export declare class EventBus {
|
|
|
40
41
|
* 立即用缓存的参数调用 handler 一次(保证语义同步:调用方注册完返回后
|
|
41
42
|
* 再触发,避免 handler 内部的 await 影响调用方流程)。
|
|
42
43
|
*/
|
|
43
|
-
on<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]
|
|
44
|
+
on<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]>, owner?: string): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* @internal 整体移除某 ctx 归属的全部监听——Context 拆卸的注销段调用,
|
|
47
|
+
* 与 hooks/contributions 同点切断(半拆状态不外露:异步排空窗口内本插件
|
|
48
|
+
* 的 handler 不得再响应事件)。链上残留的退订闭包迟到执行时靠 off 的
|
|
49
|
+
* 身份卫保持无害。
|
|
50
|
+
*/
|
|
51
|
+
unregisterByContext(owner: string): void;
|
|
44
52
|
/**
|
|
45
53
|
* 触发事件,按注册顺序依次调用,支持异步 handler。
|
|
46
54
|
*
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,KAAK,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpF;;;;;;GAMG;AACH,qBAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,KAAK,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpF;;;;;;GAMG;AACH,qBAAa,QAAQ;IAKnB,OAAO,CAAC,QAAQ,CAAiE;IAEjF;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzD,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;;;OAUG;IAEH,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAqB;IAEzC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;;;OAMG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,WAAW,EACrC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACrC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,IAAI;IAmCb;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASxC;;;;;;;;OAQG;IACG,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAenG"}
|