@sparqjs/plugin-sdk 0.1.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.
Files changed (69) hide show
  1. package/dist/bridge/index.d.ts +4 -0
  2. package/dist/bridge/index.d.ts.map +1 -0
  3. package/dist/bridge/index.js +3 -0
  4. package/dist/bridge/index.js.map +1 -0
  5. package/dist/bridge/payload.d.ts +2 -0
  6. package/dist/bridge/payload.d.ts.map +1 -0
  7. package/dist/bridge/payload.js +38 -0
  8. package/dist/bridge/payload.js.map +1 -0
  9. package/dist/bridge/plugin-path.d.ts +2 -0
  10. package/dist/bridge/plugin-path.d.ts.map +1 -0
  11. package/dist/bridge/plugin-path.js +27 -0
  12. package/dist/bridge/plugin-path.js.map +1 -0
  13. package/dist/bridge/types.d.ts +81 -0
  14. package/dist/bridge/types.d.ts.map +1 -0
  15. package/dist/bridge/types.js +72 -0
  16. package/dist/bridge/types.js.map +1 -0
  17. package/dist/client/client.d.ts +3 -0
  18. package/dist/client/client.d.ts.map +1 -0
  19. package/dist/client/client.js +317 -0
  20. package/dist/client/client.js.map +1 -0
  21. package/dist/client/index.d.ts +3 -0
  22. package/dist/client/index.d.ts.map +1 -0
  23. package/dist/client/index.js +2 -0
  24. package/dist/client/index.js.map +1 -0
  25. package/dist/client/types.d.ts +183 -0
  26. package/dist/client/types.d.ts.map +1 -0
  27. package/dist/client/types.js +2 -0
  28. package/dist/client/types.js.map +1 -0
  29. package/dist/host/entry.d.ts +4 -0
  30. package/dist/host/entry.d.ts.map +1 -0
  31. package/dist/host/entry.js +102 -0
  32. package/dist/host/entry.js.map +1 -0
  33. package/dist/host/host.d.ts +33 -0
  34. package/dist/host/host.d.ts.map +1 -0
  35. package/dist/host/host.js +434 -0
  36. package/dist/host/host.js.map +1 -0
  37. package/dist/host/index.d.ts +5 -0
  38. package/dist/host/index.d.ts.map +1 -0
  39. package/dist/host/index.js +3 -0
  40. package/dist/host/index.js.map +1 -0
  41. package/dist/host/types.d.ts +76 -0
  42. package/dist/host/types.d.ts.map +1 -0
  43. package/dist/host/types.js +2 -0
  44. package/dist/host/types.js.map +1 -0
  45. package/dist/index.d.ts +4 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +4 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/runtime/index.d.ts +628 -0
  50. package/dist/runtime/index.d.ts.map +1 -0
  51. package/dist/runtime/index.js +30 -0
  52. package/dist/runtime/index.js.map +1 -0
  53. package/dist/testing/index.d.ts +3 -0
  54. package/dist/testing/index.d.ts.map +1 -0
  55. package/dist/testing/index.js +50 -0
  56. package/dist/testing/index.js.map +1 -0
  57. package/dist/vue/index.d.ts +22 -0
  58. package/dist/vue/index.d.ts.map +1 -0
  59. package/dist/vue/index.js +93 -0
  60. package/dist/vue/index.js.map +1 -0
  61. package/dist/vue/overlay.d.ts +6 -0
  62. package/dist/vue/overlay.d.ts.map +1 -0
  63. package/dist/vue/overlay.js +21 -0
  64. package/dist/vue/overlay.js.map +1 -0
  65. package/dist/vue/runtime-state.d.ts +9 -0
  66. package/dist/vue/runtime-state.d.ts.map +1 -0
  67. package/dist/vue/runtime-state.js +20 -0
  68. package/dist/vue/runtime-state.js.map +1 -0
  69. package/package.json +52 -0
@@ -0,0 +1,628 @@
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * `@sparqjs/plugin-sdk/runtime` 定义可信 Frontend Module 与宿主之间的公开契约。
5
+ *
6
+ * 插件只能依赖本包和 Host API,不应导入 Admin、Schema Renderer 或 UI 适配器的内部实现。
7
+ * Host API 用于稳定调用边界和生命周期管理,不是 JavaScript 安全沙箱;模块仍与 Admin 运行在
8
+ * 同一个浏览器上下文中,所有后端请求必须继续执行权限校验。
9
+ */
10
+ import type { Component } from 'vue';
11
+ /** 宿主能够注入的 Frontend Module API 版本,用于在导入模块前拒绝不兼容产物。 */
12
+ export type FrontendModuleHostAPIVersion = 'v1';
13
+ /** 模块入口的解析来源;开发地址来自当前开发会话,生产地址来自已校验的安装产物。 */
14
+ export type FrontendModuleSource = 'development' | 'production';
15
+ /** 允许扩展点使用同步实现或 Promise,实现方不必为了无异步工作额外包装 Promise。 */
16
+ export type MaybePromise<T> = T | Promise<T>;
17
+ /**
18
+ * 宿主在激活模块时注入的可信身份。
19
+ *
20
+ * 该身份来自已安装 Manifest 和当前 Session,插件不能通过模块导出内容修改归属关系。
21
+ */
22
+ export interface FrontendModuleIdentity {
23
+ /** 插件稳定代码,用于请求路由、日志和扩展贡献的 owner 归属。 */
24
+ pluginCode: string;
25
+ /** 当前加载的插件版本,用于区分升级前后的模块实例。 */
26
+ pluginVersion: string;
27
+ /** Manifest 中的 Frontend Module ID;约定的 Admin 扩展入口固定为 `admin`。 */
28
+ moduleId: string;
29
+ }
30
+ /** 通过插件作用域 Client 调用后端路由时使用的请求结构。 */
31
+ export interface PluginClientRequest {
32
+ /** 插件路由支持的 HTTP 方法。 */
33
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
34
+ /** 插件内部相对路径;宿主负责添加当前插件的路由前缀,不能填写其他插件的绝对地址。 */
35
+ path: string;
36
+ /** 交给宿主传输层序列化的请求体,具体结构由插件后端接口定义。 */
37
+ body?: unknown;
38
+ /** 当前请求需要的附加头;不能借此取得或覆盖宿主的 Cookie、CSRF 等认证状态。 */
39
+ headers?: Readonly<Record<string, string>>;
40
+ }
41
+ /**
42
+ * 限定到当前插件路由空间的 HTTP Client。
43
+ *
44
+ * Client 不暴露 Admin transport,也不替代后端鉴权。泛型 `T` 只描述调用方预期结果,
45
+ * 不会在运行时校验响应结构,外部或不可信响应仍应在插件边界收窄。
46
+ */
47
+ export interface PluginScopedClient {
48
+ request<T = unknown>(input: PluginClientRequest): Promise<T>;
49
+ }
50
+ /** 设计流程当前编辑对象的宿主上下文,由 Designer Bridge 提供而不是插件自行解析路由。 */
51
+ export interface DesignerObjectContext {
52
+ /** 设计流程目标,例如 Schema 设计器;用于确认当前贡献适用的宿主场景。 */
53
+ target: string;
54
+ /** 当前资源键;流程尚未绑定具体资源时不存在。 */
55
+ resource?: string;
56
+ /** `create` 表示创建初稿,`edit` 表示基于已有资源继续编辑。 */
57
+ mode: 'create' | 'edit';
58
+ /** 当前草稿版本;未开始草稿编辑前不存在。 */
59
+ draftVersion?: number;
60
+ /** 当前草稿摘要,用于检查保存、审核和发布期间是否发生并发修改。 */
61
+ draftChecksum?: string;
62
+ /** 宿主管理的设计文档快照;具体结构由对应设计目标定义,本公共包不解释其领域字段。 */
63
+ document?: unknown;
64
+ }
65
+ /** 草稿保存后的稳定快照,后续检查和发布必须基于同一资源版本。 */
66
+ export interface DesignerDraftSnapshot {
67
+ /** 草稿对应的 Schema Resource Key。 */
68
+ resource: string;
69
+ /** 宿主分配的草稿版本号。 */
70
+ version: number;
71
+ /** 当前版本内容摘要,用于审批和并发修改检查。 */
72
+ checksum: string;
73
+ }
74
+ /** 设计检查发现的单个问题,可同时承载阻止发布的错误和非阻塞警告。 */
75
+ export interface DesignerIssue {
76
+ /** 问题在设计文档中的稳定路径,用于定位对应字段或节点。 */
77
+ path: string;
78
+ /** 可直接展示给插件开发者或管理员的检查结果。 */
79
+ message: string;
80
+ /** `error` 会使检查不通过,`warning` 用于提示但不直接阻止发布。 */
81
+ severity: 'error' | 'warning';
82
+ }
83
+ /** 发布前检查结果,决定能否继续发布以及是否需要额外审批。 */
84
+ export interface DesignerDraftCheck {
85
+ /** 所有阻塞检查是否通过。 */
86
+ passed: boolean;
87
+ /** 按宿主检查顺序返回的问题集合。 */
88
+ issues: readonly DesignerIssue[];
89
+ /** 被检查内容的摘要,申请审批时必须原样回传。 */
90
+ checksum: string;
91
+ /** 为 `true` 时必须先调用 `approveDraft()` 取得与摘要绑定的令牌。 */
92
+ requiresApproval: boolean;
93
+ }
94
+ /** 申请草稿审批时使用的并发保护输入。 */
95
+ export interface DesignerDraftApprovalInput {
96
+ /** 最近一次检查返回的摘要;内容已变化时宿主应拒绝审批。 */
97
+ expectedChecksum: string;
98
+ }
99
+ /** 宿主批准本次发布后返回的短期凭据。 */
100
+ export interface DesignerDraftApproval {
101
+ /** 仅用于发布同一份已检查内容的审批令牌。 */
102
+ token: string;
103
+ /** 令牌绑定的内容摘要,插件可用于确认批准对象没有变化。 */
104
+ checksum: string;
105
+ }
106
+ /** 发布草稿时需要的审批和幂等信息。 */
107
+ export interface DesignerDraftPublishInput {
108
+ /** 检查要求审批时必填;令牌只能发布其绑定的草稿摘要。 */
109
+ approvalToken?: string;
110
+ /** 调用方生成的稳定幂等键,网络重试时必须复用,避免重复发布版本。 */
111
+ idempotencyKey: string;
112
+ }
113
+ /** 发布完成后由宿主确认的正式资源版本。 */
114
+ export interface DesignerDraftPublishResult {
115
+ /** 已发布的 Schema Resource Key。 */
116
+ resource: string;
117
+ /** 新产生的正式版本号。 */
118
+ version: number;
119
+ /** 正式版本的内容摘要。 */
120
+ checksum: string;
121
+ }
122
+ /** 发布完成页允许用户选择的宿主动作,插件不能注入任意路由跳转。 */
123
+ export type DesignerCompletionActionKind = 'return-to-source' | 'begin-draft-edit';
124
+ /** 发布完成页中的一个受控操作。 */
125
+ export interface DesignerCompletionAction {
126
+ /** 由宿主实现的动作类型。 */
127
+ kind: DesignerCompletionActionKind;
128
+ /** 展示在完成页按钮上的业务文案。 */
129
+ label: string;
130
+ /** 标记建议的主操作;同一完成页通常只应有一个主操作。 */
131
+ primary?: boolean;
132
+ }
133
+ /** 请求宿主展示设计完成状态时使用的内容。 */
134
+ export interface DesignerCompletionInput {
135
+ /** 完成状态标题。 */
136
+ title: string;
137
+ /** 说明已产生的结果或下一步影响。 */
138
+ message: string;
139
+ /** 交给宿主渲染的受控动作,插件不直接操作 Admin 路由。 */
140
+ actions: readonly DesignerCompletionAction[];
141
+ }
142
+ /**
143
+ * Designer Step 与宿主设计流程之间的桥接接口。
144
+ *
145
+ * 草稿、检查、审批、发布和返回来源都由宿主管理。插件步骤不能绕过 Bridge 直接修改
146
+ * 宿主设计状态,否则会丢失版本检查、幂等控制和离开流程处理。
147
+ */
148
+ export interface DesignerBridge {
149
+ /** 读取当前流程上下文;返回值是宿主快照,插件不应修改其中对象。 */
150
+ getContext(): DesignerObjectContext;
151
+ /** 为当前资源创建或取得可编辑草稿,并返回初始版本快照。 */
152
+ beginDraftEdit(): Promise<DesignerDraftSnapshot>;
153
+ /** 保存宿主持有的设计文档,返回保存后的版本与摘要。 */
154
+ saveDraft(): Promise<DesignerDraftSnapshot>;
155
+ /** 对最近保存的草稿执行发布前检查。 */
156
+ checkDraft(): Promise<DesignerDraftCheck>;
157
+ /** 在检查要求审批时,为指定摘要申请发布令牌。 */
158
+ approveDraft(input: DesignerDraftApprovalInput): Promise<DesignerDraftApproval>;
159
+ /** 发布已保存且通过检查的草稿;网络重试必须复用同一个幂等键。 */
160
+ publishDraft(input: DesignerDraftPublishInput): Promise<DesignerDraftPublishResult>;
161
+ /** 让宿主使用统一完成页展示结果和后续操作。 */
162
+ showCompletion(input: DesignerCompletionInput): MaybePromise<void>;
163
+ /** 结束当前设计流程并返回宿主记录的来源页面。 */
164
+ returnToSource(): MaybePromise<void>;
165
+ }
166
+ /**
167
+ * 根据检查结果生成发布输入。
168
+ *
169
+ * 不需要审批时只返回幂等键;需要审批时使用检查摘要申请令牌,避免调用方遗漏
170
+ * `expectedChecksum` 与 `approvalToken` 的配对关系。
171
+ */
172
+ export declare function prepareDesignerDraftPublish(check: DesignerDraftCheck, approve: (input: DesignerDraftApprovalInput) => Promise<DesignerDraftApproval>, idempotencyKey: string): Promise<DesignerDraftPublishInput>;
173
+ /** 创建 Designer Step 实例时由宿主注入的运行上下文。 */
174
+ export interface DesignerStepCreateContext {
175
+ /** 当前 Design Flow ID,用于区分同一模块参与的不同流程。 */
176
+ flowId: string;
177
+ /** 当前步骤 ID,与 Manifest 中的流程步骤一致。 */
178
+ stepId: string;
179
+ /** 流程目标,例如 Schema 设计器;贡献可据此拒绝不适用的挂载场景。 */
180
+ target: string;
181
+ /** 当前 Frontend Module 的可信身份。 */
182
+ identity: Readonly<FrontendModuleIdentity>;
183
+ /** 由宿主管理草稿、检查、发布和流程导航的桥接接口。 */
184
+ bridge: DesignerBridge;
185
+ /** 限定到当前插件路由空间的后端 Client。 */
186
+ client: PluginScopedClient;
187
+ /** 同一次流程中各步骤共享的临时状态;流程结束后不会作为业务数据持久化。 */
188
+ sharedState: Record<string, unknown>;
189
+ }
190
+ /**
191
+ * Designer Step 的可挂载实例。
192
+ *
193
+ * `activate`/`deactivate` 对应步骤进入和离开,可重复发生;`dispose` 只在实例永久销毁时调用。
194
+ * 事件监听、定时器等资源应在对应阶段释放,不能依赖 Vue 页面刷新回收。
195
+ */
196
+ export interface DesignerStepInstance {
197
+ /** 挂载到宿主步骤区域的 Vue 组件,必须使用与宿主兼容的 Vue Runtime。 */
198
+ component: Component;
199
+ /** 传给步骤组件的只读 props;跨步骤共享状态应使用 `sharedState`,不要修改 props。 */
200
+ props?: Readonly<Record<string, unknown>>;
201
+ /** 步骤变为当前活动步骤后调用,可用于恢复只在可见期间需要的订阅。 */
202
+ activate?(): MaybePromise<void>;
203
+ /** 用户离开当前步骤时调用,此后实例仍可能再次激活。 */
204
+ deactivate?(): MaybePromise<void>;
205
+ /** 流程销毁时调用一次,用于释放实例级资源。 */
206
+ dispose?(): MaybePromise<void>;
207
+ }
208
+ /** Manifest 中一个 Designer contribution key 对应的实例工厂。 */
209
+ export interface DesignerStepContribution {
210
+ /** 为一次设计流程创建独立步骤实例,不能复用其他流程的组件状态。 */
211
+ create(context: DesignerStepCreateContext): MaybePromise<DesignerStepInstance>;
212
+ }
213
+ /**
214
+ * Frontend Module 工厂完成激活后返回的贡献集合和清理入口。
215
+ *
216
+ * `designerSteps` 中的 key 必须已在可信 Manifest 的 `provides` 中声明;宿主会拒绝未声明贡献。
217
+ */
218
+ export interface FrontendModuleActivation {
219
+ /** 当前模块实现的 Designer Step,按 Manifest contribution key 建立索引。 */
220
+ designerSteps?: Readonly<Record<string, DesignerStepContribution>>;
221
+ /** 模块停用时先于 Scope 清理调用;仅处理模块自行管理且未注册到 `onDispose` 的状态。 */
222
+ deactivate?(): MaybePromise<void>;
223
+ }
224
+ /**
225
+ * Host API v1,在模块工厂执行时由宿主注入。
226
+ *
227
+ * 该对象只暴露稳定公共能力,不包含 Admin Store、认证 transport 或内部 Vue 组件。
228
+ */
229
+ export interface FrontendModuleHostV1 {
230
+ /** 当前 Host API 版本,模块可在激活前由构建产物声明兼容范围。 */
231
+ version: 'v1';
232
+ /** 宿主根据 Manifest 和 Session 解析的模块身份。 */
233
+ identity: Readonly<FrontendModuleIdentity>;
234
+ /** 当前插件专属后端 Client,不允许访问其他插件的路由空间。 */
235
+ client: PluginScopedClient;
236
+ /** 宿主使用的 Vue Runtime;动态组件必须复用它,避免第二份 Vue 破坏生命周期和依赖注入。 */
237
+ vue: typeof import('vue');
238
+ /** Admin Resource 扩展入口;不提供该能力的宿主或模块运行场景中不存在。 */
239
+ admin?: AdminExtensionHost;
240
+ /**
241
+ * 注册非 Resource 贡献的释放回调。模块停用、升级或 Session 失效时,宿主按反向顺序
242
+ * 调用并等待异步回调完成;返回的句柄可用于提前释放。
243
+ */
244
+ onDispose(disposer: () => MaybePromise<void>): AdminExtensionDisposable;
245
+ /** 宿主公开的基础 UI facade,插件不应直接依赖 Admin 使用的具体 UI 适配器。 */
246
+ ui: Readonly<{
247
+ /** 当前宿主的 `SqRender` 组件,用于渲染宿主支持的稳定 UI 类型。 */
248
+ render: Component;
249
+ }>;
250
+ }
251
+ /** 已挂载 Admin 页面的稳定定位信息。 */
252
+ export interface AdminPageRef {
253
+ /** 页面主要操作的 Schema Resource Key。 */
254
+ resource: string;
255
+ /** Schema Page View 名称;仅兼容旧的 view 级扩展时用于过滤。 */
256
+ view: string;
257
+ }
258
+ /** 页面操作和选择监听器获得的宿主状态。 */
259
+ export interface AdminPageExtensionContext {
260
+ /** 当前页面定位,插件不能通过它取得或修改宿主 Vue 组件。 */
261
+ page: AdminPageRef;
262
+ /** 所属模块停用时中止;长任务应主动检查或传递该信号,避免停用后继续产生结果。 */
263
+ signal: AbortSignal;
264
+ /** 主导航区域的全部选中记录;普通资源页没有主从结构时为空。 */
265
+ masterSelection: readonly Readonly<Record<string, unknown>>[];
266
+ /** 当前内容区域的全部选中记录。 */
267
+ detailSelection: readonly Readonly<Record<string, unknown>>[];
268
+ /** 主导航中的首个选中记录,便于只支持单选的操作读取上下文。 */
269
+ selectedMaster?: Readonly<Record<string, unknown>>;
270
+ /** 内容区域中的首个选中记录。 */
271
+ selectedDetail?: Readonly<Record<string, unknown>>;
272
+ /** 通过宿主页加载流程刷新当前页面数据,不直接调用内部 Controller。 */
273
+ reload(): MaybePromise<void>;
274
+ /** 使用 Admin 统一反馈样式展示操作结果。 */
275
+ notify: Readonly<{
276
+ /** 展示已完成且无需用户处理的成功结果。 */
277
+ success(message: string): MaybePromise<void>;
278
+ /** 展示操作失败或需要用户处理的问题。 */
279
+ error(message: string): MaybePromise<void>;
280
+ /** 展示不改变操作状态的上下文信息。 */
281
+ info(message: string): MaybePromise<void>;
282
+ }>;
283
+ }
284
+ /** 注入宿主页面工具栏的命令。 */
285
+ export interface AdminToolbarAction {
286
+ /**
287
+ * 可选的 Resource 范围动作 ID。需要稳定诊断名或与其他扩展显式协调时可以声明;省略后由宿主
288
+ * 按模块作用域自动生成内部 ID,因此插件不必为一次性页面动作设计全局命名。
289
+ */
290
+ id?: string;
291
+ /** 按钮文案和无障碍名称。 */
292
+ title: string;
293
+ /** 宿主图标目录中的图标名;插件不能传入任意 SVG 或组件。 */
294
+ icon?: string;
295
+ /** 工具栏排序值,数值相同时保持注册顺序。 */
296
+ order?: number;
297
+ /** 根据当前页面选择决定是否渲染;必须同步返回,不能在此发起请求。 */
298
+ visible?(context: AdminPageExtensionContext): boolean;
299
+ /** 根据当前页面选择决定是否允许执行;必须同步返回。 */
300
+ disabled?(context: AdminPageExtensionContext): boolean;
301
+ /** 用户触发动作时执行,异常由宿主转换为统一错误反馈。 */
302
+ run(context: AdminPageExtensionContext): MaybePromise<void>;
303
+ }
304
+ /**
305
+ * 单个扩展注册的提前释放句柄。
306
+ *
307
+ * Resource 注册即使不手动释放,也会随 Frontend Module Scope 自动清理;只有需要在模块仍活动时
308
+ * 提前撤销某项贡献,才需要保存并调用该句柄。
309
+ */
310
+ export interface AdminExtensionDisposable {
311
+ /** 幂等撤销当前注册;重复调用不会再次执行清理。 */
312
+ dispose(): void;
313
+ }
314
+ /** `resource()` 返回的稳定目标引用,便于日志和扩展组件传递当前 Resource Key。 */
315
+ export interface AdminResourceRef {
316
+ /** Schema Resource Key;必须与宿主 Session 中已经加载的资源一致。 */
317
+ resource: string;
318
+ }
319
+ /** 所有 Admin Resource Hook 共享的宿主上下文。 */
320
+ export interface AdminResourceHookContext {
321
+ /** 当前操作对应的 Schema Resource Key。 */
322
+ resource: string;
323
+ /** 当前 Schema View 名称;调用来自没有具体 View 的边界时不存在。 */
324
+ view?: string;
325
+ /** Frontend Module Scope 的中止信号,插件停用后不得继续应用异步结果。 */
326
+ signal: AbortSignal;
327
+ }
328
+ /** 表单校验、提交和字段变化 Hook 共享的状态。 */
329
+ export interface AdminFormHookContext extends AdminResourceHookContext {
330
+ /** 当前表单值快照。对象本身只读;需要修改时由 before Hook 返回字段补丁。 */
331
+ values: Readonly<Record<string, unknown>>;
332
+ /** 编辑场景的原始记录;创建场景或记录尚未加载时不存在。 */
333
+ record?: Readonly<Record<string, unknown>>;
334
+ /** 当前提交属于创建还是编辑;只执行校验等无法区分的阶段可能不提供。 */
335
+ mode?: 'create' | 'edit';
336
+ }
337
+ /** Schema 前端校验完成后提供给观察 Hook 的结果。 */
338
+ export interface AdminFormValidationHookContext extends AdminFormHookContext {
339
+ /** 按字段名组织的校验信息;观察 Hook 不能直接修改该对象。 */
340
+ errors: Readonly<Record<string, readonly string[]>>;
341
+ /** 没有字段错误时为 `true`;后端仍必须执行自己的领域校验。 */
342
+ valid: boolean;
343
+ }
344
+ /**
345
+ * 表单校验前或提交前 Hook。
346
+ *
347
+ * 返回对象时按字段合并到当前值并传给后续 Hook;返回 `false` 阻止当前操作;没有修改时返回空值。
348
+ * Hook 抛出的异常会终止操作并进入宿主错误反馈。
349
+ */
350
+ export type AdminFormBeforeHook = (context: AdminFormHookContext) => MaybePromise<Record<string, unknown> | false | void>;
351
+ /** Schema 前端校验完成后的隔离观察 Hook,异常只记录日志,不改变校验结果。 */
352
+ export type AdminFormAfterValidateHook = (context: AdminFormValidationHookContext) => MaybePromise<void>;
353
+ /** 后端创建或更新成功后提供给观察 Hook 的结果。 */
354
+ export interface AdminFormAfterSubmitHookContext extends AdminFormHookContext {
355
+ /** DataAdapter 返回的原始结果,具体结构由当前资源后端定义。 */
356
+ result: unknown;
357
+ }
358
+ /** 单个表单字段发生变化时提供的值快照。 */
359
+ export interface AdminFormFieldChangeContext extends AdminFormHookContext {
360
+ /** 本次发生变化的 Schema 字段名。 */
361
+ field: string;
362
+ /** 变化后的字段值。 */
363
+ value: unknown;
364
+ /** 当前一轮监听到的旧值;首次赋值时可能是 `undefined`。 */
365
+ previousValue: unknown;
366
+ }
367
+ /**
368
+ * 表单字段变化 Hook。返回值作为字段补丁写回表单,并继续触发对应字段的正常响应式更新。
369
+ * 宿主使用 revision 丢弃过期异步结果,插件仍应使用 `signal` 中止不再需要的外部请求。
370
+ */
371
+ export type AdminFormFieldChangeHook = (context: AdminFormFieldChangeContext) => MaybePromise<Record<string, unknown> | void>;
372
+ /** 搜索条件应用前后的值快照。 */
373
+ export interface AdminSearchHookContext extends AdminResourceHookContext {
374
+ /** 当前搜索表单值;before Hook 通过返回补丁修改即将同步到列表的查询值。 */
375
+ values: Readonly<Record<string, unknown>>;
376
+ }
377
+ /**
378
+ * 搜索条件应用前 Hook。返回字段补丁会按注册顺序合并,返回 `false` 会阻止查询值同步和列表加载。
379
+ */
380
+ export type AdminSearchBeforeApplyHook = (context: AdminSearchHookContext) => MaybePromise<Record<string, unknown> | false | void>;
381
+ /** 列表 DataAdapter 调用前允许受控修改的输入。 */
382
+ export interface AdminListLoadInput {
383
+ /** Schema 搜索值转换后的查询对象;替换其中字段时应保留仍需传递的原查询条件。 */
384
+ query?: Readonly<Record<string, unknown>>;
385
+ /** Schema 和页面 Scope 产生的过滤条件。 */
386
+ filters?: readonly unknown[];
387
+ /** Renderer 内部分页状态;HTTP DataAdapter 负责把 `pageSize` 转换为接口协议的 `limit`。 */
388
+ pagination?: Readonly<{
389
+ /** 从 1 开始的当前页码。 */
390
+ page?: number;
391
+ /** 前端分页组件使用的每页条数,不直接作为 HTTP 字段发送。 */
392
+ pageSize?: number;
393
+ }>;
394
+ /** 当前排序结构,具体协议由 Schema DataAdapter 定义。 */
395
+ sort?: unknown;
396
+ /** 列表是否处于回收站等特殊读取模式。 */
397
+ recycleMode?: string;
398
+ /** 页面编排传给资源 DataAdapter 的额外上下文。 */
399
+ payload?: unknown;
400
+ }
401
+ /** 列表加载 Hook 上下文;`input` 是当前注册顺序累计修改后的快照。 */
402
+ export interface AdminListLoadHookContext extends AdminResourceHookContext {
403
+ input: Readonly<AdminListLoadInput>;
404
+ }
405
+ /**
406
+ * 列表请求前 Hook。返回对象按顶层字段合并到后续请求,返回 `false` 阻止 DataAdapter 调用。
407
+ * 若只修改 `query` 内一个字段,Hook 应自行合并原 `context.input.query`。
408
+ */
409
+ export type AdminListBeforeLoadHook = (context: AdminListLoadHookContext) => MaybePromise<AdminListLoadInput | false | void>;
410
+ /** 列表请求成功后提供给隔离观察 Hook 的上下文。 */
411
+ export interface AdminListAfterLoadHookContext extends AdminListLoadHookContext {
412
+ /** DataAdapter 返回的原始分页结果。after Hook 不能替换宿主正在使用的结果。 */
413
+ result: unknown;
414
+ }
415
+ /** 详情 DataAdapter 调用前允许受控修改的输入。 */
416
+ export interface AdminDetailLoadInput {
417
+ /** 当前详情记录标识,类型由资源主键定义。 */
418
+ id?: unknown;
419
+ /** 已有记录快照;页面已持有记录时可用于避免重复解析上下文。 */
420
+ record?: Readonly<Record<string, unknown>>;
421
+ /** 详情请求的附加参数。 */
422
+ params?: Readonly<Record<string, unknown>>;
423
+ /** 页面编排传给详情 DataAdapter 的额外上下文。 */
424
+ payload?: unknown;
425
+ }
426
+ /** 详情加载 Hook 上下文;`input` 是当前注册顺序累计修改后的快照。 */
427
+ export interface AdminDetailLoadHookContext extends AdminResourceHookContext {
428
+ input: Readonly<AdminDetailLoadInput>;
429
+ }
430
+ /** 详情请求前 Hook。返回对象按顶层字段合并,返回 `false` 阻止 DataAdapter 调用。 */
431
+ export type AdminDetailBeforeLoadHook = (context: AdminDetailLoadHookContext) => MaybePromise<AdminDetailLoadInput | false | void>;
432
+ /** 详情请求成功后提供给隔离观察 Hook 的上下文。 */
433
+ export interface AdminDetailAfterLoadHookContext extends AdminDetailLoadHookContext {
434
+ /** DataAdapter 返回的原始详情结果;观察 Hook 不能替换宿主结果。 */
435
+ result: unknown;
436
+ }
437
+ /** Resource 页面层的扩展入口,当前支持工具栏动作和主从选择监听。 */
438
+ export interface AdminPageExtension {
439
+ /** 当前扩展绑定的 Resource Key。 */
440
+ readonly ref: Readonly<AdminResourceRef>;
441
+ /** 由宿主决定实际位置和样式的页面工具栏扩展点。 */
442
+ readonly toolbar: Readonly<{
443
+ /** 注册一个页面命令;动作 ID 可省略,注册会随模块 Scope 自动清理。 */
444
+ addAction(action: AdminToolbarAction): AdminExtensionDisposable;
445
+ }>;
446
+ /**
447
+ * 监听主导航或内容区域的选择变化。监听器异常只记录插件错误,不阻断宿主选择流程。
448
+ */
449
+ onSelectionChange(listener: (context: AdminPageExtensionContext) => MaybePromise<void>): AdminExtensionDisposable;
450
+ }
451
+ /** 单个 Schema 表单字段的代码式扩展入口。 */
452
+ export interface AdminFormFieldExtension {
453
+ /** 监听字段变化并可返回其他字段的补丁;快速连续变化时宿主只应用最新一轮结果。 */
454
+ onValueChange(listener: AdminFormFieldChangeHook): AdminExtensionDisposable;
455
+ }
456
+ /**
457
+ * Resource 表单生命周期扩展入口。
458
+ *
459
+ * 固定顺序为 `beforeValidate -> Schema 校验 -> afterValidate -> beforeSubmit -> 后端请求 -> afterSubmit`。
460
+ */
461
+ export interface AdminFormExtension {
462
+ /** 按 Schema 字段名取得字段扩展入口;字段是否存在仍由当前资源 Schema 决定。 */
463
+ field(name: string): AdminFormFieldExtension;
464
+ /** 在 Schema 前端校验前修改值或阻止本次校验与提交。 */
465
+ beforeValidate(hook: AdminFormBeforeHook): AdminExtensionDisposable;
466
+ /** 观察 Schema 前端校验结果,不允许改变已产生的错误集合。 */
467
+ afterValidate(hook: AdminFormAfterValidateHook): AdminExtensionDisposable;
468
+ /** 校验成功后、请求发出前修改提交值或阻止后端请求。 */
469
+ beforeSubmit(hook: AdminFormBeforeHook): AdminExtensionDisposable;
470
+ /** 观察创建或更新成功结果;异常不会撤销已经完成的请求。 */
471
+ afterSubmit(hook: (context: AdminFormAfterSubmitHookContext) => MaybePromise<void>): AdminExtensionDisposable;
472
+ }
473
+ /** 搜索值同步生命周期扩展入口。 */
474
+ export interface AdminSearchExtension {
475
+ /** 在搜索值写入列表状态前修改条件或阻止本次搜索。 */
476
+ beforeApply(hook: AdminSearchBeforeApplyHook): AdminExtensionDisposable;
477
+ /** 搜索值同步完成后的隔离观察 Hook,此时列表请求尚未发出。 */
478
+ afterApply(hook: (context: AdminSearchHookContext) => MaybePromise<void>): AdminExtensionDisposable;
479
+ }
480
+ /** 列表 DataAdapter 生命周期扩展入口。 */
481
+ export interface AdminListExtension {
482
+ /** 在列表请求发出前修改输入或阻止请求。 */
483
+ beforeLoad(hook: AdminListBeforeLoadHook): AdminExtensionDisposable;
484
+ /** 列表请求成功后的隔离观察 Hook,不能替换已返回结果。 */
485
+ afterLoad(hook: (context: AdminListAfterLoadHookContext) => MaybePromise<void>): AdminExtensionDisposable;
486
+ }
487
+ /** 详情 DataAdapter 生命周期扩展入口。 */
488
+ export interface AdminDetailExtension {
489
+ /** 在详情请求发出前修改输入或阻止请求。 */
490
+ beforeLoad(hook: AdminDetailBeforeLoadHook): AdminExtensionDisposable;
491
+ /** 详情请求成功后的隔离观察 Hook,不能替换已返回结果。 */
492
+ afterLoad(hook: (context: AdminDetailAfterLoadHookContext) => MaybePromise<void>): AdminExtensionDisposable;
493
+ }
494
+ /**
495
+ * 一个 Schema Resource 的统一前端扩展 Host。
496
+ *
497
+ * `page/form/search/list/detail` 使用同一个 Resource Key 和 Frontend Module Scope,插件不需要分别
498
+ * 查找页面实例。该 Host 扩展已有宿主页面,不负责定义新路由或完整页面骨架。
499
+ */
500
+ export interface AdminResourceExtension {
501
+ /** 当前 Resource Key 的只读引用。 */
502
+ readonly ref: Readonly<AdminResourceRef>;
503
+ /** 页面工具栏和选择变化扩展。 */
504
+ readonly page: AdminPageExtension;
505
+ /** 表单字段、校验和提交扩展。 */
506
+ readonly form: AdminFormExtension;
507
+ /** 搜索条件应用扩展。 */
508
+ readonly search: AdminSearchExtension;
509
+ /** 列表请求扩展。 */
510
+ readonly list: AdminListExtension;
511
+ /** 详情请求扩展。 */
512
+ readonly detail: AdminDetailExtension;
513
+ }
514
+ /**
515
+ * 旧版按 Resource 和 View 定位的页面扩展接口。
516
+ *
517
+ * 仅用于兼容已经发布的 Frontend Module,新代码应使用 `resource()` 返回的统一 Host。
518
+ */
519
+ export interface AdminSchemaPageExtension {
520
+ /** 旧扩展绑定的 Resource Key 和 View 名称。 */
521
+ readonly ref: Readonly<AdminPageRef>;
522
+ /** 旧主从页面右侧详情区域的工具栏扩展点。 */
523
+ readonly detail: Readonly<{
524
+ toolbar: Readonly<{
525
+ /** 注册详情工具栏动作;动作 ID 可省略。 */
526
+ addAction(action: AdminToolbarAction): AdminExtensionDisposable;
527
+ }>;
528
+ }>;
529
+ /** 监听旧 Schema Page 主从选择变化。 */
530
+ onSelectionChange(listener: (context: AdminPageExtensionContext) => MaybePromise<void>): AdminExtensionDisposable;
531
+ }
532
+ /** Admin Shell 提供给可信 Frontend Module 的资源扩展入口。 */
533
+ export interface AdminExtensionHost {
534
+ /**
535
+ * 按真实 Schema Resource Key 取得统一扩展 Host。调用本身不会创建页面,注册在相关页面加载时生效。
536
+ */
537
+ resource(resource: string): AdminResourceExtension;
538
+ /**
539
+ * 旧 Frontend Module 的兼容入口,新扩展统一使用 `resource()`。
540
+ * @deprecated 使用 `resource(resourceKey)`,由其 `page/form/search/list/detail` 访问扩展点。
541
+ */
542
+ schemaPage(resource: string, view: string): AdminSchemaPageExtension;
543
+ }
544
+ /** 模块默认导出工厂;宿主注入 API 后执行一次,返回的贡献随模块 Scope 存活。 */
545
+ export type FrontendModuleFactory = (host: FrontendModuleHostV1) => MaybePromise<FrontendModuleActivation>;
546
+ /**
547
+ * 声明 Frontend Module 默认导出并保留完整类型推导。
548
+ *
549
+ * 该函数不执行注册,也不产生全局副作用;真正激活发生在宿主 Loader 调用工厂时。
550
+ */
551
+ export declare function defineFrontendModule(factory: FrontendModuleFactory): FrontendModuleFactory;
552
+ /**
553
+ * 宿主根据可信 Manifest、安装产物和开发覆盖解析后的可加载模块。
554
+ *
555
+ * 插件前端只消费 Host API,不应自行构造该结构;Admin Loader 使用它校验 API 版本和贡献声明。
556
+ */
557
+ export interface ResolvedFrontendModule {
558
+ /** Manifest 中稳定的 Frontend Module ID。 */
559
+ id: string;
560
+ /** 模块声明需要的 Host API 版本。 */
561
+ hostApi: FrontendModuleHostAPIVersion;
562
+ /** 当前会话可加载的 ESM 地址;生产地址指向已校验的不可变插件产物。 */
563
+ url: string;
564
+ /** 地址来自开发覆盖还是生产安装产物。 */
565
+ source: FrontendModuleSource;
566
+ /** 构建产物版本或摘要,用于缓存隔离;开发源码入口可能没有版本。 */
567
+ version?: string;
568
+ /** Manifest 声明的贡献索引,Loader 只接受这里允许的 contribution key。 */
569
+ provides: {
570
+ /** Schema Renderer 组件 contribution key。 */
571
+ schemaComponents: readonly string[];
572
+ /** 旧 Designer contribution key,保留用于协议兼容。 */
573
+ designerContributions: readonly string[];
574
+ /** 当前模块提供的 Designer Step contribution key。 */
575
+ designerSteps: readonly string[];
576
+ /** Admin 扩展类别;约定的 `admin.ts` 当前声明 `resource`。 */
577
+ adminExtensions: readonly string[];
578
+ };
579
+ }
580
+ /** 宿主下发的设计流程定义,描述步骤顺序和挂载来源。 */
581
+ export interface DesignFlow {
582
+ /** 流程稳定 ID,用于路由、恢复和权限审计。 */
583
+ id: string;
584
+ /** 流程适用的设计目标,例如 Schema 设计器。 */
585
+ target: string;
586
+ /** 可选业务命名空间,用于区分多个插件对同一目标的流程。 */
587
+ namespace?: string;
588
+ /** 进入流程前由宿主检查的权限代码。 */
589
+ permission: string;
590
+ /** 按展示和执行顺序排列的步骤。 */
591
+ steps: readonly DesignFlowStep[];
592
+ }
593
+ /** 设计流程中的单个宿主或插件步骤。 */
594
+ export interface DesignFlowStep {
595
+ /** 流程内稳定步骤 ID,用于当前步骤恢复。 */
596
+ id: string;
597
+ /** Admin 步骤导航显示的标题。 */
598
+ title: string;
599
+ /** 决定由宿主模块、Frontend Module 还是独立 Surface 渲染内容。 */
600
+ mount: DesignStepMount;
601
+ }
602
+ /**
603
+ * 设计步骤的三种受控挂载方式。
604
+ *
605
+ * `host-module` 使用宿主内建实现;`frontend-module` 加载可信 ESM contribution;`surface` 进入
606
+ * Manifest 声明的独立插件页面。插件不能在这里填写任意 Vue 组件或 DOM 选择器。
607
+ */
608
+ export type DesignStepMount = {
609
+ /** 挂载宿主内建步骤。 */
610
+ kind: 'host-module';
611
+ /** 宿主公开的稳定模块引用。 */
612
+ ref: string;
613
+ } | {
614
+ /** 挂载已校验 Frontend Module 的贡献。 */
615
+ kind: 'frontend-module';
616
+ /** 当前插件 Manifest 中的 Frontend Module ID。 */
617
+ module: string;
618
+ /** 该模块在 `provides.designerSteps` 中声明的 contribution key。 */
619
+ contribution: string;
620
+ } | {
621
+ /** 挂载 Manifest 声明的独立插件 Surface。 */
622
+ kind: 'surface';
623
+ /** 插件 Entry 名称,由宿主解析实际 URL 和 sandbox。 */
624
+ entry: string;
625
+ /** Surface 内部目标,是否支持由对应 Entry 协议决定。 */
626
+ target?: string;
627
+ };
628
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}