@aalis/core 0.7.0 → 0.9.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 +16 -13
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +20 -45
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +2 -25
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -96
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +105 -34
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +185 -43
- package/dist/context.js.map +1 -1
- package/dist/contributions.d.ts +75 -0
- package/dist/contributions.d.ts.map +1 -0
- package/dist/contributions.js +83 -0
- package/dist/contributions.js.map +1 -0
- package/dist/disposable-chain.d.ts +47 -6
- package/dist/disposable-chain.d.ts.map +1 -1
- package/dist/disposable-chain.js +92 -12
- package/dist/disposable-chain.js.map +1 -1
- package/dist/events.d.ts +1 -9
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -23
- package/dist/events.js.map +1 -1
- package/dist/hooks.d.ts +7 -22
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +6 -2
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/plugin-activation.d.ts +2 -0
- package/dist/plugin-activation.d.ts.map +1 -1
- package/dist/plugin-activation.js +9 -5
- package/dist/plugin-activation.js.map +1 -1
- package/dist/plugin-topology.d.ts +6 -2
- package/dist/plugin-topology.d.ts.map +1 -1
- package/dist/plugin-topology.js +6 -4
- package/dist/plugin-topology.js.map +1 -1
- package/dist/plugin.d.ts +20 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +53 -72
- package/dist/plugin.js.map +1 -1
- package/dist/{service-helpers.d.ts → services-helpers.d.ts} +2 -2
- package/dist/services-helpers.d.ts.map +1 -0
- package/dist/{service-helpers.js → services-helpers.js} +2 -2
- package/dist/{service-helpers.js.map → services-helpers.js.map} +1 -1
- package/dist/{service.d.ts → services.d.ts} +43 -9
- package/dist/services.d.ts.map +1 -0
- package/dist/{service.js → services.js} +34 -11
- package/dist/services.js.map +1 -0
- package/dist/types/app.d.ts +8 -8
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/contributions.d.ts +3 -0
- package/dist/types/contributions.d.ts.map +1 -0
- package/dist/types/contributions.js +10 -0
- package/dist/types/contributions.js.map +1 -0
- package/dist/types/events.d.ts +44 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/hooks.d.ts +8 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -6
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugin.d.ts +12 -4
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js.map +1 -1
- package/dist/types/services.d.ts +4 -0
- package/dist/types/services.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/constants.d.ts +0 -31
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -36
- package/dist/constants.js.map +0 -1
- package/dist/i18n.d.ts +0 -6
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js +0 -26
- package/dist/i18n.js.map +0 -1
- package/dist/identity.d.ts +0 -26
- package/dist/identity.d.ts.map +0 -1
- package/dist/identity.js +0 -36
- package/dist/identity.js.map +0 -1
- package/dist/init.d.ts +0 -20
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -455
- package/dist/init.js.map +0 -1
- package/dist/llm-router.d.ts.map +0 -1
- package/dist/llm-router.js +0 -123
- package/dist/llm-router.js.map +0 -1
- package/dist/marketplace-bootstrap.d.ts +0 -54
- package/dist/marketplace-bootstrap.d.ts.map +0 -1
- package/dist/marketplace-bootstrap.js +0 -132
- package/dist/marketplace-bootstrap.js.map +0 -1
- package/dist/mixin-registry.d.ts +0 -34
- package/dist/mixin-registry.d.ts.map +0 -1
- package/dist/mixin-registry.js +0 -60
- package/dist/mixin-registry.js.map +0 -1
- package/dist/model-ref.d.ts +0 -22
- package/dist/model-ref.d.ts.map +0 -1
- package/dist/model-ref.js +0 -46
- package/dist/model-ref.js.map +0 -1
- package/dist/pending-buffer.d.ts +0 -46
- package/dist/pending-buffer.d.ts.map +0 -1
- package/dist/pending-buffer.js +0 -131
- package/dist/pending-buffer.js.map +0 -1
- package/dist/platform-registry.d.ts +0 -40
- package/dist/platform-registry.d.ts.map +0 -1
- package/dist/platform-registry.js +0 -64
- package/dist/platform-registry.js.map +0 -1
- package/dist/semver-mini.d.ts +0 -20
- package/dist/semver-mini.d.ts.map +0 -1
- package/dist/semver-mini.js +0 -94
- package/dist/semver-mini.js.map +0 -1
- package/dist/service-helpers.d.ts.map +0 -1
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js.map +0 -1
- package/dist/types/agent.d.ts +0 -51
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -3
- package/dist/types/agent.js.map +0 -1
- package/dist/types/archive.d.ts +0 -59
- package/dist/types/archive.d.ts.map +0 -1
- package/dist/types/archive.js +0 -16
- package/dist/types/archive.js.map +0 -1
- package/dist/types/authority.d.ts +0 -63
- package/dist/types/authority.d.ts.map +0 -1
- package/dist/types/authority.js +0 -3
- package/dist/types/authority.js.map +0 -1
- package/dist/types/capabilities.d.ts +0 -53
- package/dist/types/capabilities.d.ts.map +0 -1
- package/dist/types/capabilities.js +0 -87
- package/dist/types/capabilities.js.map +0 -1
- package/dist/types/cli.d.ts +0 -14
- package/dist/types/cli.d.ts.map +0 -1
- package/dist/types/cli.js +0 -3
- package/dist/types/cli.js.map +0 -1
- package/dist/types/commands.d.ts +0 -98
- package/dist/types/commands.d.ts.map +0 -1
- package/dist/types/commands.js +0 -3
- package/dist/types/commands.js.map +0 -1
- package/dist/types/core.d.ts +0 -116
- package/dist/types/core.d.ts.map +0 -1
- package/dist/types/core.js +0 -6
- package/dist/types/core.js.map +0 -1
- package/dist/types/embedding.d.ts +0 -7
- package/dist/types/embedding.d.ts.map +0 -1
- package/dist/types/embedding.js +0 -3
- package/dist/types/embedding.js.map +0 -1
- package/dist/types/flow-control.d.ts +0 -51
- package/dist/types/flow-control.d.ts.map +0 -1
- package/dist/types/flow-control.js +0 -12
- package/dist/types/flow-control.js.map +0 -1
- package/dist/types/gateway.d.ts +0 -24
- package/dist/types/gateway.d.ts.map +0 -1
- package/dist/types/gateway.js +0 -15
- package/dist/types/gateway.js.map +0 -1
- package/dist/types/image-recognition.d.ts +0 -123
- package/dist/types/image-recognition.d.ts.map +0 -1
- package/dist/types/image-recognition.js +0 -31
- package/dist/types/image-recognition.js.map +0 -1
- package/dist/types/llm.d.ts +0 -146
- package/dist/types/llm.d.ts.map +0 -1
- package/dist/types/llm.js +0 -27
- package/dist/types/llm.js.map +0 -1
- package/dist/types/memory.d.ts +0 -62
- package/dist/types/memory.d.ts.map +0 -1
- package/dist/types/memory.js +0 -22
- package/dist/types/memory.js.map +0 -1
- package/dist/types/persona.d.ts +0 -45
- package/dist/types/persona.d.ts.map +0 -1
- package/dist/types/persona.js +0 -3
- package/dist/types/persona.js.map +0 -1
- package/dist/types/platform.d.ts +0 -126
- package/dist/types/platform.d.ts.map +0 -1
- package/dist/types/platform.js +0 -5
- package/dist/types/platform.js.map +0 -1
- package/dist/types/service.d.ts +0 -41
- package/dist/types/service.d.ts.map +0 -1
- package/dist/types/service.js +0 -35
- package/dist/types/service.js.map +0 -1
- package/dist/types/session.d.ts +0 -153
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js +0 -19
- package/dist/types/session.js.map +0 -1
- package/dist/types/storage.d.ts +0 -100
- package/dist/types/storage.d.ts.map +0 -1
- package/dist/types/storage.js +0 -29
- package/dist/types/storage.js.map +0 -1
- package/dist/types/tools.d.ts +0 -39
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -3
- package/dist/types/tools.js.map +0 -1
- package/dist/types/trigger-policy.d.ts +0 -16
- package/dist/types/trigger-policy.d.ts.map +0 -1
- package/dist/types/trigger-policy.js +0 -6
- package/dist/types/trigger-policy.js.map +0 -1
- package/dist/types/vectorstore.d.ts +0 -23
- package/dist/types/vectorstore.d.ts.map +0 -1
- package/dist/types/vectorstore.js +0 -3
- package/dist/types/vectorstore.js.map +0 -1
- package/dist/types/web-search.d.ts +0 -88
- package/dist/types/web-search.d.ts.map +0 -1
- package/dist/types/web-search.js +0 -23
- package/dist/types/web-search.js.map +0 -1
- package/dist/types/webui.d.ts +0 -137
- package/dist/types/webui.d.ts.map +0 -1
- package/dist/types/webui.js +0 -3
- package/dist/types/webui.js.map +0 -1
package/dist/context.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ConfigManager } from './config.js';
|
|
2
|
+
import type { ContributionHandle, ContributionRegistry, ContributionSpec } from './contributions.js';
|
|
2
3
|
import type { EventBus } from './events.js';
|
|
3
|
-
import type { HookRegistry
|
|
4
|
+
import type { HookRegistry } from './hooks.js';
|
|
4
5
|
import type { Logger } from './logger.js';
|
|
5
|
-
import type { ServiceContainer } from './
|
|
6
|
-
import type { AalisEvents, HookContextMap, MiddlewareFn, ServiceTypeMap } from './types/index.js';
|
|
6
|
+
import type { ServiceContainer } from './services.js';
|
|
7
|
+
import type { AalisEvents, ContributionPointMap, HookContextMap, MiddlewareFn, ServiceTypeMap } from './types/index.js';
|
|
7
8
|
type EventHandler<Args extends unknown[]> = (...args: Args) => void | Promise<void>;
|
|
8
9
|
/**
|
|
9
10
|
* 上下文 (Context)
|
|
@@ -21,15 +22,6 @@ export declare class Context {
|
|
|
21
22
|
readonly id: string;
|
|
22
23
|
readonly logger: Logger;
|
|
23
24
|
readonly config: ConfigManager;
|
|
24
|
-
/**
|
|
25
|
-
* 钩子执行面(窄接口 {@link HookRunner})。
|
|
26
|
-
*
|
|
27
|
-
* 插件可 `ctx.hooks.run(hook, data, defaultAction)` 驱动自己定义的钩子链;
|
|
28
|
-
* 注册 handler 请用 `ctx.middleware(hook, fn)` —— 它绑定当前 ctx.id 并纳入
|
|
29
|
-
* dispose 链,插件卸载时自动清扫。完整 HookRegistry(register / onStall)
|
|
30
|
-
* 不对插件暴露,与 `_events` / `_services` 同一门面纪律。
|
|
31
|
-
*/
|
|
32
|
-
readonly hooks: HookRunner;
|
|
33
25
|
/**
|
|
34
26
|
* 开发模式开关——由 App 注入,子 Context 通过 fork 继承。
|
|
35
27
|
*
|
|
@@ -41,17 +33,39 @@ export declare class Context {
|
|
|
41
33
|
readonly devMode: boolean;
|
|
42
34
|
private _events;
|
|
43
35
|
private _services;
|
|
44
|
-
/** 完整钩子注册表——仅 Context 内部(middleware / dispose / fork)使用。 */
|
|
36
|
+
/** 完整钩子注册表——仅 Context 内部(middleware / runHook / dispose / fork)使用。 */
|
|
45
37
|
private readonly _hooks;
|
|
38
|
+
/** 完整贡献点注册表——仅 Context 内部(contribute / collect / dispose / fork)使用。 */
|
|
39
|
+
private readonly _contributions;
|
|
40
|
+
/**
|
|
41
|
+
* 本 ctx 已登记的贡献退订函数(键 = point + '\u0000' + 局部 id,与
|
|
42
|
+
* contribute 内 mapKey 的构造保持一致;NUL 不会出现在合法键名中)。
|
|
43
|
+
*
|
|
44
|
+
* 用于同键重注册时先摘旧登记:注册表本身是替换语义,但门面每次 contribute
|
|
45
|
+
* 都会往 _disposables 压一个闭包——不摘旧的,反复刷新贡献(文档明示的合法
|
|
46
|
+
* 用法)会让 dispose 链无界增长且旧 build 闭包无法 GC。
|
|
47
|
+
* 条目数有界于**当前存活**的贡献数:退订时由 off 的自移除逻辑摘掉本条。
|
|
48
|
+
*/
|
|
49
|
+
private readonly _contributionDisposers;
|
|
50
|
+
/** 活跃沙盒子上下文 id(useModule)——用于同名重复挂载时唯一化 childId。 */
|
|
51
|
+
private readonly _moduleIds;
|
|
46
52
|
private _disposables;
|
|
47
53
|
private _children;
|
|
48
54
|
private _parent?;
|
|
49
55
|
private _disposed;
|
|
56
|
+
/**
|
|
57
|
+
* 在飞的拆卸 promise。`_disposed` 在清理**开始前**置位,仅凭它早退会让后来者
|
|
58
|
+
* 拿到"已完成"的假象(并发 disposeAsync、父级联撞上半拆的子 ctx、unload 撞
|
|
59
|
+
* bounce、并发 app.stop 都会 0ms 返回而清理其实没落)。记住它之后,后来者
|
|
60
|
+
* join 而非早退。
|
|
61
|
+
*/
|
|
62
|
+
private _inflightTeardown?;
|
|
50
63
|
constructor(options: {
|
|
51
64
|
id: string;
|
|
52
65
|
events: EventBus;
|
|
53
66
|
services: ServiceContainer;
|
|
54
67
|
hooks: HookRegistry;
|
|
68
|
+
contributions: ContributionRegistry;
|
|
55
69
|
logger: Logger;
|
|
56
70
|
config: ConfigManager;
|
|
57
71
|
parent?: Context;
|
|
@@ -64,8 +78,8 @@ export declare class Context {
|
|
|
64
78
|
* 完整性)使用。
|
|
65
79
|
*
|
|
66
80
|
* **插件请勿直接使用**:
|
|
67
|
-
* - 枚举某服务的所有 entry(含 contextId /
|
|
68
|
-
* → 用公开 API `ctx.
|
|
81
|
+
* - 枚举某服务的所有 entry(含 contextId / priority / label):
|
|
82
|
+
* → 用公开 API `ctx.getAllServices(name)`
|
|
69
83
|
* - 获取服务实例:用 `ctx.getService()` / `ctx.getAllServices()`
|
|
70
84
|
* - 注册服务:用 `ctx.provide()`(会自动登记到 _disposables 链)
|
|
71
85
|
*/
|
|
@@ -75,7 +89,6 @@ export declare class Context {
|
|
|
75
89
|
*/
|
|
76
90
|
fork(id: string): Context;
|
|
77
91
|
on<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]>): () => void;
|
|
78
|
-
once<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]>): () => void;
|
|
79
92
|
/**
|
|
80
93
|
* 把一个底层退订原语登记到 disposable 链,并返回**自移除**的退订函数:
|
|
81
94
|
* 调用方手动退订时,闭包不再滞留 _disposables(否则它持有 handler 引用直到
|
|
@@ -111,16 +124,14 @@ export declare class Context {
|
|
|
111
124
|
*/
|
|
112
125
|
getService<TName extends keyof ServiceTypeMap>(name: TName): ServiceTypeMap[TName] | undefined;
|
|
113
126
|
getService<T = unknown>(name: string): T | undefined;
|
|
114
|
-
/**
|
|
115
|
-
* 检查服务是否可用
|
|
116
|
-
*/
|
|
117
|
-
hasService(name: string): boolean;
|
|
118
127
|
/**
|
|
119
128
|
* 列出所有已注册的服务名
|
|
120
129
|
*/
|
|
121
130
|
getServiceNames(): string[];
|
|
122
131
|
/**
|
|
123
|
-
*
|
|
132
|
+
* 获取某个服务的所有实例(带提供者信息与优先级),按「偏好 > 优先级 > 注册顺序」排序。
|
|
133
|
+
*
|
|
134
|
+
* 业务消费(遍历所有 provider)与管控展示(WebUI / CLI 枚举视图)共用此一个读口。
|
|
124
135
|
*
|
|
125
136
|
* @example
|
|
126
137
|
* const allLLMs = ctx.getAllServices('llm');
|
|
@@ -128,11 +139,13 @@ export declare class Context {
|
|
|
128
139
|
getAllServices<TName extends keyof ServiceTypeMap>(name: TName): Array<{
|
|
129
140
|
instance: ServiceTypeMap[TName];
|
|
130
141
|
contextId: string;
|
|
142
|
+
priority: number;
|
|
131
143
|
label?: string;
|
|
132
144
|
}>;
|
|
133
145
|
getAllServices<T = unknown>(name: string): Array<{
|
|
134
146
|
instance: T;
|
|
135
147
|
contextId: string;
|
|
148
|
+
priority: number;
|
|
136
149
|
label?: string;
|
|
137
150
|
}>;
|
|
138
151
|
/**
|
|
@@ -153,18 +166,6 @@ export declare class Context {
|
|
|
153
166
|
* 读取某服务当前的偏好 contextId(无偏好返回 undefined)
|
|
154
167
|
*/
|
|
155
168
|
getPreferredService(name: string): string | undefined;
|
|
156
|
-
/**
|
|
157
|
-
* 获取某服务的全部 entry(含 priority),按「偏好 > 优先级 > 注册顺序」排序。
|
|
158
|
-
*
|
|
159
|
-
* 主要给管控类消费者(如 WebUI / CLI status 视图)枚举展示用。
|
|
160
|
-
* 业务消费者应优先使用 `getService` / `getAllServices`。
|
|
161
|
-
*/
|
|
162
|
-
getServiceEntries(name: string): ReadonlyArray<{
|
|
163
|
-
instance: unknown;
|
|
164
|
-
contextId: string;
|
|
165
|
-
priority: number;
|
|
166
|
-
label?: string;
|
|
167
|
-
}>;
|
|
168
169
|
/**
|
|
169
170
|
* 持续订阅一个服务:每当 provider 上线就调一次 `cb(svc)`,下线则自动执行
|
|
170
171
|
* 上一次 cb 返回的 cleanup。
|
|
@@ -214,6 +215,43 @@ export declare class Context {
|
|
|
214
215
|
* });
|
|
215
216
|
*/
|
|
216
217
|
middleware<K extends string & keyof HookContextMap>(hook: K, fn: MiddlewareFn<HookContextMap[K]>): () => void;
|
|
218
|
+
/**
|
|
219
|
+
* 执行钩子链(语义见 {@link HookRegistry.run})。
|
|
220
|
+
*
|
|
221
|
+
* 任何插件都可驱动自己定义的钩子链——对称钩子系统的立身之本,地位等价于
|
|
222
|
+
* `ctx.emit`。注册 handler 请用 `ctx.middleware(hook, fn)`。完整 HookRegistry
|
|
223
|
+
* (register / unregisterByContext / onStall)不对插件暴露,与 `_events` /
|
|
224
|
+
* `_services` 同一门面纪律。
|
|
225
|
+
*
|
|
226
|
+
* @returns `true` = 链路完整走完(执行了 defaultAction,或本就没有 handler);
|
|
227
|
+
* `false` = 被某个 handler swallow(不调 next 中断)
|
|
228
|
+
*/
|
|
229
|
+
runHook<K extends string & keyof HookContextMap>(hook: K, data: HookContextMap[K], defaultAction?: () => Promise<void>, opts?: {
|
|
230
|
+
warnOnStall?: boolean;
|
|
231
|
+
}): Promise<boolean>;
|
|
232
|
+
/**
|
|
233
|
+
* 向贡献点交付一份 spec,返回 dispose 函数(并挂 dispose 链,卸载自动清扫)。
|
|
234
|
+
*
|
|
235
|
+
* spec.id 是**局部名**,注册时自动冠 `${ctx.id}/` 前缀成全局键——同一 ctx 内
|
|
236
|
+
* 同 id 重复注册为替换(幂等);spec.id 侧无法顶替他人贡献(信任边界的
|
|
237
|
+
* 如实声明见 {@link ContributionSpec})。贡献者不掌握任何控制流:无排序
|
|
238
|
+
* 影响力(顺序是全局键的纯函数)、无短路、不可见其他贡献——排布与执行
|
|
239
|
+
* 策略全归贡献点 owner({@link collect} 的调用方)。
|
|
240
|
+
*
|
|
241
|
+
* 贡献点的键与 spec 类型由各 -api 包 declaration merging 扩展
|
|
242
|
+
* ContributionPointMap 定义。
|
|
243
|
+
*/
|
|
244
|
+
contribute<K extends string & keyof ContributionPointMap>(point: K, spec: ContributionPointMap[K] & ContributionSpec): () => void;
|
|
245
|
+
/**
|
|
246
|
+
* 枚举某贡献点的全部条目(语义见 {@link ContributionRegistry.collect})。
|
|
247
|
+
*
|
|
248
|
+
* 驱动公开——任何插件都可拥有并收集自己定义的贡献点,地位等价于
|
|
249
|
+
* `ctx.emit` / `ctx.runHook`。返回数组快照,每项是 `{ key, spec }`:
|
|
250
|
+
* `key` 是全局键(含贡献方 ctx.id 前缀)供归属标注与统计,`spec` 是注册
|
|
251
|
+
* 方交付的本体(引用,`spec.id` 仍是其局部名)。如何执行 spec(并行 /
|
|
252
|
+
* 隔离 / 超时)是收集方的策略,内核不执行任何插件代码。
|
|
253
|
+
*/
|
|
254
|
+
collect<K extends string & keyof ContributionPointMap>(point: K): ReadonlyArray<ContributionHandle<ContributionPointMap[K] & ContributionSpec>>;
|
|
217
255
|
get disposed(): boolean;
|
|
218
256
|
/**
|
|
219
257
|
* 在当前 Context 内动态加载一个插件 module 作为"沙盒插件"。
|
|
@@ -272,9 +310,42 @@ export declare class Context {
|
|
|
272
310
|
/** @internal 当前 disposable 链长度(诊断 / 测试用:检测 provide/whenService 的闭包是否如期自移除)。 */
|
|
273
311
|
get disposableCount(): number;
|
|
274
312
|
/**
|
|
275
|
-
*
|
|
313
|
+
* @internal 当前贡献登记表条目数(诊断 / 测试用)。
|
|
314
|
+
*
|
|
315
|
+
* 它与 {@link disposableCount} 是**两条独立的账**:贡献的退订闭包由
|
|
316
|
+
* trackDisposable 自摘出 dispose 链,而登记表条目由 contribute 返回的包装
|
|
317
|
+
* 另行摘除。只看 dispose 链长度看不见登记表泄漏,故单开这个口子。
|
|
318
|
+
*/
|
|
319
|
+
get contributionDisposerCount(): number;
|
|
320
|
+
/**
|
|
321
|
+
* 销毁此上下文,清理所有副作用(同步;异步清理不等待)。
|
|
322
|
+
*
|
|
323
|
+
* 需要等待落盘类异步清理完成时用 {@link disposeAsync}——编排层
|
|
324
|
+
* (PluginManager 的 unload / bounce / 停机路径与 App.stop)走的是它。
|
|
276
325
|
*/
|
|
277
326
|
dispose(): void;
|
|
327
|
+
/**
|
|
328
|
+
* 可等待的销毁:语义与 {@link dispose} 相同,但逆序**串行等待**每个异步
|
|
329
|
+
* 清理(`onDispose` 返回的 promise)完成后才返回——bounce / unload / 停机
|
|
330
|
+
* 路径上落盘类清理从此真正落地,而非只是"开始执行"。
|
|
331
|
+
*
|
|
332
|
+
* 幂等且**可 join**:已有拆卸在飞时等待它完成再返回,而不是看到 `_disposed`
|
|
333
|
+
* 就早退(`_disposed` 在清理开始前置位,早退会让调用方拿到"已完成"的假象——
|
|
334
|
+
* 父级联撞上半拆的子 ctx、并发 stop、unload 撞 bounce 都会走到这条路)。
|
|
335
|
+
*
|
|
336
|
+
* ⚠. **`onDispose` 回调里不得 await 任何最终落到本 ctx 或其祖先 ctx 拆卸上的
|
|
337
|
+
* 调用**——在飞的拆卸正等着那个回调返回,await 它即自等自。除直接调用本方法
|
|
338
|
+
* 外,还包括 `plugins.unload/disablePlugin/bouncePlugin`(它们内部 await
|
|
339
|
+
* `entry.context.disposeAsync`)、`app.stop()`、`plugins.idle()`。清理回调
|
|
340
|
+
* 只做自己的收尾,拆卸由编排层驱动。(与 `PluginManagerService.idle()` 同类约束。)
|
|
341
|
+
*
|
|
342
|
+
* @param timeoutMs 单个异步清理项的等待上限;超时放弃该项、继续后续清理
|
|
343
|
+
* 并 warn 点名(防网络类关闭卡死整个停机)。**join 已有在飞拆卸时同样
|
|
344
|
+
* 以本值为上限**——在飞方可能是用更松(甚至不设限)的 timeout 启动的,
|
|
345
|
+
* 无护栏地 join 会让调用方(如 `App.stop`)的停机上限失效。缺省不设限。
|
|
346
|
+
*/
|
|
347
|
+
disposeAsync(timeoutMs?: number): Promise<void>;
|
|
348
|
+
private _teardown;
|
|
278
349
|
}
|
|
279
350
|
export {};
|
|
280
351
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DisposableChain } from './disposable-chain.js';
|
|
2
|
-
import { emitServiceRegistered, validateProvide } from './
|
|
1
|
+
import { awaitWithTimeout, DisposableChain } from './disposable-chain.js';
|
|
2
|
+
import { emitServiceRegistered, validateProvide } from './services-helpers.js';
|
|
3
3
|
/**
|
|
4
4
|
* 上下文 (Context)
|
|
5
5
|
*
|
|
@@ -16,15 +16,6 @@ export class Context {
|
|
|
16
16
|
id;
|
|
17
17
|
logger;
|
|
18
18
|
config;
|
|
19
|
-
/**
|
|
20
|
-
* 钩子执行面(窄接口 {@link HookRunner})。
|
|
21
|
-
*
|
|
22
|
-
* 插件可 `ctx.hooks.run(hook, data, defaultAction)` 驱动自己定义的钩子链;
|
|
23
|
-
* 注册 handler 请用 `ctx.middleware(hook, fn)` —— 它绑定当前 ctx.id 并纳入
|
|
24
|
-
* dispose 链,插件卸载时自动清扫。完整 HookRegistry(register / onStall)
|
|
25
|
-
* 不对插件暴露,与 `_events` / `_services` 同一门面纪律。
|
|
26
|
-
*/
|
|
27
|
-
hooks;
|
|
28
19
|
/**
|
|
29
20
|
* 开发模式开关——由 App 注入,子 Context 通过 fork 继承。
|
|
30
21
|
*
|
|
@@ -36,18 +27,39 @@ export class Context {
|
|
|
36
27
|
devMode;
|
|
37
28
|
_events;
|
|
38
29
|
_services;
|
|
39
|
-
/** 完整钩子注册表——仅 Context 内部(middleware / dispose / fork)使用。 */
|
|
30
|
+
/** 完整钩子注册表——仅 Context 内部(middleware / runHook / dispose / fork)使用。 */
|
|
40
31
|
_hooks;
|
|
32
|
+
/** 完整贡献点注册表——仅 Context 内部(contribute / collect / dispose / fork)使用。 */
|
|
33
|
+
_contributions;
|
|
34
|
+
/**
|
|
35
|
+
* 本 ctx 已登记的贡献退订函数(键 = point + '\u0000' + 局部 id,与
|
|
36
|
+
* contribute 内 mapKey 的构造保持一致;NUL 不会出现在合法键名中)。
|
|
37
|
+
*
|
|
38
|
+
* 用于同键重注册时先摘旧登记:注册表本身是替换语义,但门面每次 contribute
|
|
39
|
+
* 都会往 _disposables 压一个闭包——不摘旧的,反复刷新贡献(文档明示的合法
|
|
40
|
+
* 用法)会让 dispose 链无界增长且旧 build 闭包无法 GC。
|
|
41
|
+
* 条目数有界于**当前存活**的贡献数:退订时由 off 的自移除逻辑摘掉本条。
|
|
42
|
+
*/
|
|
43
|
+
_contributionDisposers = new Map();
|
|
44
|
+
/** 活跃沙盒子上下文 id(useModule)——用于同名重复挂载时唯一化 childId。 */
|
|
45
|
+
_moduleIds = new Set();
|
|
41
46
|
_disposables;
|
|
42
47
|
_children = new Set();
|
|
43
48
|
_parent;
|
|
44
49
|
_disposed = false;
|
|
50
|
+
/**
|
|
51
|
+
* 在飞的拆卸 promise。`_disposed` 在清理**开始前**置位,仅凭它早退会让后来者
|
|
52
|
+
* 拿到"已完成"的假象(并发 disposeAsync、父级联撞上半拆的子 ctx、unload 撞
|
|
53
|
+
* bounce、并发 app.stop 都会 0ms 返回而清理其实没落)。记住它之后,后来者
|
|
54
|
+
* join 而非早退。
|
|
55
|
+
*/
|
|
56
|
+
_inflightTeardown;
|
|
45
57
|
constructor(options) {
|
|
46
58
|
this.id = options.id;
|
|
47
59
|
this._events = options.events;
|
|
48
60
|
this._services = options.services;
|
|
49
61
|
this._hooks = options.hooks;
|
|
50
|
-
this.
|
|
62
|
+
this._contributions = options.contributions;
|
|
51
63
|
this.logger = options.logger;
|
|
52
64
|
this.config = options.config;
|
|
53
65
|
this._parent = options.parent;
|
|
@@ -62,8 +74,8 @@ export class Context {
|
|
|
62
74
|
* 完整性)使用。
|
|
63
75
|
*
|
|
64
76
|
* **插件请勿直接使用**:
|
|
65
|
-
* - 枚举某服务的所有 entry(含 contextId /
|
|
66
|
-
* → 用公开 API `ctx.
|
|
77
|
+
* - 枚举某服务的所有 entry(含 contextId / priority / label):
|
|
78
|
+
* → 用公开 API `ctx.getAllServices(name)`
|
|
67
79
|
* - 获取服务实例:用 `ctx.getService()` / `ctx.getAllServices()`
|
|
68
80
|
* - 注册服务:用 `ctx.provide()`(会自动登记到 _disposables 链)
|
|
69
81
|
*/
|
|
@@ -79,6 +91,7 @@ export class Context {
|
|
|
79
91
|
events: this._events,
|
|
80
92
|
services: this._services,
|
|
81
93
|
hooks: this._hooks,
|
|
94
|
+
contributions: this._contributions,
|
|
82
95
|
logger: this.logger.child(id),
|
|
83
96
|
config: this.config,
|
|
84
97
|
parent: this,
|
|
@@ -92,10 +105,6 @@ export class Context {
|
|
|
92
105
|
const off = this._events.on(event, handler);
|
|
93
106
|
return this.trackDisposable(off);
|
|
94
107
|
}
|
|
95
|
-
once(event, handler) {
|
|
96
|
-
const off = this._events.once(event, handler);
|
|
97
|
-
return this.trackDisposable(off);
|
|
98
|
-
}
|
|
99
108
|
/**
|
|
100
109
|
* 把一个底层退订原语登记到 disposable 链,并返回**自移除**的退订函数:
|
|
101
110
|
* 调用方手动退订时,闭包不再滞留 _disposables(否则它持有 handler 引用直到
|
|
@@ -156,12 +165,6 @@ export class Context {
|
|
|
156
165
|
getService(name) {
|
|
157
166
|
return this._services.get(name);
|
|
158
167
|
}
|
|
159
|
-
/**
|
|
160
|
-
* 检查服务是否可用
|
|
161
|
-
*/
|
|
162
|
-
hasService(name) {
|
|
163
|
-
return this._services.has(name);
|
|
164
|
-
}
|
|
165
168
|
/**
|
|
166
169
|
* 列出所有已注册的服务名
|
|
167
170
|
*/
|
|
@@ -209,15 +212,6 @@ export class Context {
|
|
|
209
212
|
getPreferredService(name) {
|
|
210
213
|
return this._services.getPreferred(name);
|
|
211
214
|
}
|
|
212
|
-
/**
|
|
213
|
-
* 获取某服务的全部 entry(含 priority),按「偏好 > 优先级 > 注册顺序」排序。
|
|
214
|
-
*
|
|
215
|
-
* 主要给管控类消费者(如 WebUI / CLI status 视图)枚举展示用。
|
|
216
|
-
* 业务消费者应优先使用 `getService` / `getAllServices`。
|
|
217
|
-
*/
|
|
218
|
-
getServiceEntries(name) {
|
|
219
|
-
return this._services.getEntries(name);
|
|
220
|
-
}
|
|
221
215
|
// biome-ignore lint/suspicious/noConfusingVoidType: cb 可隐式返回 void 或显式返回 cleanup
|
|
222
216
|
whenService(name, cb) {
|
|
223
217
|
let cleanup;
|
|
@@ -323,6 +317,72 @@ export class Context {
|
|
|
323
317
|
middleware(hook, fn) {
|
|
324
318
|
return this.trackDisposable(this._hooks.register(hook, fn, this.id));
|
|
325
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* 执行钩子链(语义见 {@link HookRegistry.run})。
|
|
322
|
+
*
|
|
323
|
+
* 任何插件都可驱动自己定义的钩子链——对称钩子系统的立身之本,地位等价于
|
|
324
|
+
* `ctx.emit`。注册 handler 请用 `ctx.middleware(hook, fn)`。完整 HookRegistry
|
|
325
|
+
* (register / unregisterByContext / onStall)不对插件暴露,与 `_events` /
|
|
326
|
+
* `_services` 同一门面纪律。
|
|
327
|
+
*
|
|
328
|
+
* @returns `true` = 链路完整走完(执行了 defaultAction,或本就没有 handler);
|
|
329
|
+
* `false` = 被某个 handler swallow(不调 next 中断)
|
|
330
|
+
*/
|
|
331
|
+
runHook(hook, data, defaultAction, opts) {
|
|
332
|
+
return this._hooks.run(hook, data, defaultAction, opts);
|
|
333
|
+
}
|
|
334
|
+
// ---- 贡献点 ----
|
|
335
|
+
/**
|
|
336
|
+
* 向贡献点交付一份 spec,返回 dispose 函数(并挂 dispose 链,卸载自动清扫)。
|
|
337
|
+
*
|
|
338
|
+
* spec.id 是**局部名**,注册时自动冠 `${ctx.id}/` 前缀成全局键——同一 ctx 内
|
|
339
|
+
* 同 id 重复注册为替换(幂等);spec.id 侧无法顶替他人贡献(信任边界的
|
|
340
|
+
* 如实声明见 {@link ContributionSpec})。贡献者不掌握任何控制流:无排序
|
|
341
|
+
* 影响力(顺序是全局键的纯函数)、无短路、不可见其他贡献——排布与执行
|
|
342
|
+
* 策略全归贡献点 owner({@link collect} 的调用方)。
|
|
343
|
+
*
|
|
344
|
+
* 贡献点的键与 spec 类型由各 -api 包 declaration merging 扩展
|
|
345
|
+
* ContributionPointMap 定义。
|
|
346
|
+
*/
|
|
347
|
+
contribute(point, spec) {
|
|
348
|
+
// 窄化取 id:core 内 ContributionPointMap 是空接口,`ContributionPointMap[K]`
|
|
349
|
+
// 索引不出成员,但交叉的 ContributionSpec 保证 id 存在。
|
|
350
|
+
// 已 dispose 的 ctx 不得再注册:注册表是键控替换语义,死 ctx 写进去会顶掉
|
|
351
|
+
// 同 id 活实例(如 bounce 后的新实例)的条目,随即又被立即执行的 disposer
|
|
352
|
+
// 连带删除——活实例的贡献静默消失。与 useModule 同为拒绝,但取 warn+no-op
|
|
353
|
+
// 而非抛错:调用方常是插件的异步续段,不该在清理路径上再抛。
|
|
354
|
+
if (this._disposed) {
|
|
355
|
+
this.logger.warn(`Context "${this.id}" 已 dispose,忽略 contribute("${point}")`);
|
|
356
|
+
return () => { };
|
|
357
|
+
}
|
|
358
|
+
const mapKey = `${point}\u0000${spec.id}`;
|
|
359
|
+
// 同键重注册 = 替换:先撤旧登记(自移除出 dispose 链 + 撤注册表旧条目),
|
|
360
|
+
// 再写新的——先删后写,避免旧闭包滞留(见 _contributionDisposers)。
|
|
361
|
+
this._contributionDisposers.get(mapKey)?.();
|
|
362
|
+
const rawOff = this.trackDisposable(this._contributions.register(point, spec, this.id));
|
|
363
|
+
// 包一层做自移除:不删登记表条目的话,`Map → dispose 闭包 → off 闭包 →
|
|
364
|
+
// entry → spec(及其 build 捕获的数据)` 这条持有链会让退订过的贡献一直
|
|
365
|
+
// 活到 ctx.dispose(动态 id 场景下无界增长)。恒等卫防误删同键新注册。
|
|
366
|
+
const off = () => {
|
|
367
|
+
if (this._contributionDisposers.get(mapKey) === off)
|
|
368
|
+
this._contributionDisposers.delete(mapKey);
|
|
369
|
+
rawOff();
|
|
370
|
+
};
|
|
371
|
+
this._contributionDisposers.set(mapKey, off);
|
|
372
|
+
return off;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* 枚举某贡献点的全部条目(语义见 {@link ContributionRegistry.collect})。
|
|
376
|
+
*
|
|
377
|
+
* 驱动公开——任何插件都可拥有并收集自己定义的贡献点,地位等价于
|
|
378
|
+
* `ctx.emit` / `ctx.runHook`。返回数组快照,每项是 `{ key, spec }`:
|
|
379
|
+
* `key` 是全局键(含贡献方 ctx.id 前缀)供归属标注与统计,`spec` 是注册
|
|
380
|
+
* 方交付的本体(引用,`spec.id` 仍是其局部名)。如何执行 spec(并行 /
|
|
381
|
+
* 隔离 / 超时)是收集方的策略,内核不执行任何插件代码。
|
|
382
|
+
*/
|
|
383
|
+
collect(point) {
|
|
384
|
+
return this._contributions.collect(point);
|
|
385
|
+
}
|
|
326
386
|
// ---- 生命周期 ----
|
|
327
387
|
get disposed() {
|
|
328
388
|
return this._disposed;
|
|
@@ -361,16 +421,28 @@ export class Context {
|
|
|
361
421
|
if (this._disposed) {
|
|
362
422
|
throw new Error(`Context "${this.id}" 已 dispose,无法 useModule`);
|
|
363
423
|
}
|
|
364
|
-
|
|
424
|
+
// 同一父 ctx 重复挂载同名 module(文档背书的"每会话一实例"用法)必须拿到
|
|
425
|
+
// 互不相同的 ctx.id:id 是 contributions 全局键与 unregisterByContext 的
|
|
426
|
+
// 归属锚,重复 id 会让后挂载者静默顶替先挂载者的贡献、且任一方 dispose
|
|
427
|
+
// 连带清掉对方的。活跃集合随 dispose 收缩,长期反复挂载不会无界增长。
|
|
428
|
+
const baseId = `${this.id}#${module.name}`;
|
|
429
|
+
let childId = baseId;
|
|
430
|
+
for (let n = 2; this._moduleIds.has(childId); n++)
|
|
431
|
+
childId = `${baseId}~${n}`;
|
|
432
|
+
this._moduleIds.add(childId);
|
|
365
433
|
const child = this.fork(childId);
|
|
366
434
|
try {
|
|
367
435
|
await module.apply(child, config);
|
|
368
436
|
}
|
|
369
437
|
catch (err) {
|
|
438
|
+
this._moduleIds.delete(childId);
|
|
370
439
|
child.dispose();
|
|
371
440
|
throw err;
|
|
372
441
|
}
|
|
373
|
-
return () =>
|
|
442
|
+
return () => {
|
|
443
|
+
this._moduleIds.delete(childId);
|
|
444
|
+
child.dispose();
|
|
445
|
+
};
|
|
374
446
|
}
|
|
375
447
|
/**
|
|
376
448
|
* 注册一个在本 Context dispose 时执行的清理回调。
|
|
@@ -396,7 +468,10 @@ export class Context {
|
|
|
396
468
|
try {
|
|
397
469
|
const ret = fn();
|
|
398
470
|
if (ret && typeof ret.then === 'function') {
|
|
399
|
-
|
|
471
|
+
// 把 promise 交还给链:异步拆卸路径(disposeAsync)会等待它完成——
|
|
472
|
+
// 这是 onDispose 异步契约真正兑现的通道。错误就地消化,单个清理
|
|
473
|
+
// 失败不拖垮链上其他清理;同步 dispose() 忽略返回值(不等待)。
|
|
474
|
+
return ret.catch(err => {
|
|
400
475
|
this.logger.debug('onDispose 异步清理抛错(已忽略):', err);
|
|
401
476
|
});
|
|
402
477
|
}
|
|
@@ -413,30 +488,97 @@ export class Context {
|
|
|
413
488
|
return this._disposables.size;
|
|
414
489
|
}
|
|
415
490
|
/**
|
|
416
|
-
*
|
|
491
|
+
* @internal 当前贡献登记表条目数(诊断 / 测试用)。
|
|
492
|
+
*
|
|
493
|
+
* 它与 {@link disposableCount} 是**两条独立的账**:贡献的退订闭包由
|
|
494
|
+
* trackDisposable 自摘出 dispose 链,而登记表条目由 contribute 返回的包装
|
|
495
|
+
* 另行摘除。只看 dispose 链长度看不见登记表泄漏,故单开这个口子。
|
|
496
|
+
*/
|
|
497
|
+
get contributionDisposerCount() {
|
|
498
|
+
return this._contributionDisposers.size;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* 销毁此上下文,清理所有副作用(同步;异步清理不等待)。
|
|
502
|
+
*
|
|
503
|
+
* 需要等待落盘类异步清理完成时用 {@link disposeAsync}——编排层
|
|
504
|
+
* (PluginManager 的 unload / bounce / 停机路径与 App.stop)走的是它。
|
|
417
505
|
*/
|
|
418
506
|
dispose() {
|
|
507
|
+
// wait=false 分支不命中任何 await——async 函数体在首个 await 前同步执行,
|
|
508
|
+
// 本方法的可观察时序与纯同步实现一致(有测试以同步副作用守着)。
|
|
509
|
+
// 差异仅在抛错路径:异常成为 rejection 而非同步抛出(体内各步骤均自带
|
|
510
|
+
// 隔离,实际不可达),catch 兜底防 unhandledRejection。
|
|
511
|
+
const p = this._teardown(false);
|
|
512
|
+
this._inflightTeardown ??= p;
|
|
513
|
+
p.catch(err => {
|
|
514
|
+
this.logger.error('dispose 收尾异常:', err);
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* 可等待的销毁:语义与 {@link dispose} 相同,但逆序**串行等待**每个异步
|
|
519
|
+
* 清理(`onDispose` 返回的 promise)完成后才返回——bounce / unload / 停机
|
|
520
|
+
* 路径上落盘类清理从此真正落地,而非只是"开始执行"。
|
|
521
|
+
*
|
|
522
|
+
* 幂等且**可 join**:已有拆卸在飞时等待它完成再返回,而不是看到 `_disposed`
|
|
523
|
+
* 就早退(`_disposed` 在清理开始前置位,早退会让调用方拿到"已完成"的假象——
|
|
524
|
+
* 父级联撞上半拆的子 ctx、并发 stop、unload 撞 bounce 都会走到这条路)。
|
|
525
|
+
*
|
|
526
|
+
* ⚠. **`onDispose` 回调里不得 await 任何最终落到本 ctx 或其祖先 ctx 拆卸上的
|
|
527
|
+
* 调用**——在飞的拆卸正等着那个回调返回,await 它即自等自。除直接调用本方法
|
|
528
|
+
* 外,还包括 `plugins.unload/disablePlugin/bouncePlugin`(它们内部 await
|
|
529
|
+
* `entry.context.disposeAsync`)、`app.stop()`、`plugins.idle()`。清理回调
|
|
530
|
+
* 只做自己的收尾,拆卸由编排层驱动。(与 `PluginManagerService.idle()` 同类约束。)
|
|
531
|
+
*
|
|
532
|
+
* @param timeoutMs 单个异步清理项的等待上限;超时放弃该项、继续后续清理
|
|
533
|
+
* 并 warn 点名(防网络类关闭卡死整个停机)。**join 已有在飞拆卸时同样
|
|
534
|
+
* 以本值为上限**——在飞方可能是用更松(甚至不设限)的 timeout 启动的,
|
|
535
|
+
* 无护栏地 join 会让调用方(如 `App.stop`)的停机上限失效。缺省不设限。
|
|
536
|
+
*/
|
|
537
|
+
async disposeAsync(timeoutMs) {
|
|
538
|
+
const inflight = this._inflightTeardown;
|
|
539
|
+
if (inflight) {
|
|
540
|
+
await awaitWithTimeout(inflight, timeoutMs, () => this.logger.warn(`Context "${this.id}": 等待在飞拆卸超过 ${timeoutMs}ms,放弃等待`));
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
this._inflightTeardown = this._teardown(true, timeoutMs);
|
|
544
|
+
await this._inflightTeardown;
|
|
545
|
+
}
|
|
546
|
+
async _teardown(wait, timeoutMs) {
|
|
419
547
|
if (this._disposed)
|
|
420
548
|
return;
|
|
421
549
|
this._disposed = true;
|
|
422
550
|
// 先销毁子上下文(复制避免迭代中修改 Set)
|
|
423
551
|
const children = [...this._children];
|
|
424
552
|
for (const child of children) {
|
|
425
|
-
|
|
553
|
+
if (wait)
|
|
554
|
+
await child.disposeAsync(timeoutMs);
|
|
555
|
+
else
|
|
556
|
+
child.dispose();
|
|
426
557
|
}
|
|
427
558
|
this._children.clear();
|
|
428
|
-
//
|
|
559
|
+
// 记录此上下文注册的服务名,以便清理后发射事件
|
|
429
560
|
const removedServices = this._services.unregisterByContext(this.id);
|
|
561
|
+
// 钩子与贡献在清理链**之前**注销:异步等待清理的整个窗口内,本插件的
|
|
562
|
+
// 中间件不得再响应消息、贡献不得再被组装器收集——半拆状态不外露。
|
|
563
|
+
// 同步路径同一 tick 内完成,先后不可观察;清理链里两类注册的 disposer
|
|
564
|
+
// 靠各自的存在性检查/恒等卫自然 no-op,不会双删。
|
|
565
|
+
this._hooks.unregisterByContext(this.id);
|
|
566
|
+
this._contributions.unregisterByContext(this.id);
|
|
430
567
|
// 逆序执行清理(unregisterByContext 已整体移除服务,provide 的 dispose 会安全跳过)
|
|
431
|
-
|
|
568
|
+
if (wait)
|
|
569
|
+
await this._disposables.disposeAsync(timeoutMs);
|
|
570
|
+
else
|
|
571
|
+
this._disposables.dispose();
|
|
432
572
|
// 发射服务注销事件,让 App 的自动恢复监听器能响应
|
|
433
573
|
for (const svc of removedServices) {
|
|
434
574
|
this._events.emit('service:unregistered', svc).catch(err => {
|
|
435
575
|
this.logger.warn(`emit service:unregistered 失败 (${svc}): ${err}`);
|
|
436
576
|
});
|
|
437
577
|
}
|
|
438
|
-
//
|
|
439
|
-
|
|
578
|
+
// 释放本 ctx 持有的登记表:闭包会捎带 spec(及其 build 捕获的数据),
|
|
579
|
+
// dispose 后不清则外部若仍持有本 ctx 引用,这些对象就跟着活着。
|
|
580
|
+
this._contributionDisposers.clear();
|
|
581
|
+
this._moduleIds.clear();
|
|
440
582
|
// 服务自清理协议:任何服务实例若实现 `unregisterByPlugin(contextId)`,
|
|
441
583
|
// dispose 时统一通知它清理本上下文相关的注册项(如 plugin-tools 的
|
|
442
584
|
// ToolService、plugin-commands 的 CommandService)。
|
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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"}
|