@blueking/bk-weweb 0.0.35-beta.1 → 0.0.35-beta.3

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/index.d.mts CHANGED
@@ -1,7 +1,5 @@
1
1
  type ExecuteResult = Comment | HTMLScriptElement | undefined;
2
- /**
3
- * Script脚本实例类
4
- */
2
+ /** Script脚本实例类 */
5
3
  declare class Script {
6
4
  async: boolean;
7
5
  code: string;
@@ -13,29 +11,16 @@ declare class Script {
13
11
  scoped: boolean;
14
12
  url: string | undefined;
15
13
  constructor({ async, code, defer, fromHtml, initial, isModule, url }: IScriptOption);
16
- /**
17
- * 执行脚本代码
18
- * @param app 应用实例
19
- * @param needReplaceScriptElement 是否需要替换script标签
20
- * @returns 返回执行后的script标签或注释
21
- */
14
+ /** 执行脚本代码 */
22
15
  executeCode(app: BaseModel, needReplaceScriptElement?: boolean): Promise<ExecuteResult>;
23
- /**
24
- * 内存脚本执行
25
- */
16
+ /** 内存脚本执行 */
26
17
  executeMemoryScript(app: BaseModel, scopedCode: string): void;
27
- /**
28
- * 脚本标签执行
29
- */
18
+ /** 脚本标签执行 */
30
19
  executeSourceScript(scriptElement: HTMLScriptElement, scopedCode: string): void;
31
- /**
32
- * 获取脚本内容
33
- */
20
+ /** 获取脚本内容 */
34
21
  getCode(app?: BaseModel): Promise<string>;
35
22
  setCode(code: string): void;
36
- /**
37
- * 转换脚本内容
38
- */
23
+ /** 转换脚本内容 */
39
24
  transformCode(app: BaseModel): string;
40
25
  }
41
26
 
@@ -131,19 +116,86 @@ declare class Style {
131
116
  private observeContentChanges;
132
117
  }
133
118
 
119
+ /**
120
+ * 应用缓存管理器
121
+ * @description 负责管理所有微应用实例的缓存、资源共享和状态跟踪
122
+ */
134
123
  declare class AppCache {
135
- private baseSource;
136
- private cache;
124
+ /** 基础资源源,用于主应用共享资源包 */
125
+ private readonly baseSource;
126
+ /** 应用实例缓存映射表 */
127
+ private readonly cache;
128
+ /**
129
+ * 构造函数
130
+ * @description 初始化应用缓存管理器
131
+ */
137
132
  constructor();
138
- deleteApp(url: string): void;
133
+ /**
134
+ * 设置应用实例到缓存
135
+ * @description 将应用实例添加到缓存中,使用应用的缓存键作为标识
136
+ * @param app - 要缓存的应用实例
137
+ */
138
+ setApp(app: BaseModel): void;
139
+ /**
140
+ * 获取缓存的应用实例
141
+ * @description 根据名称或ID获取已缓存的应用实例
142
+ * @param name - 应用名称或ID,为空时返回 undefined
143
+ * @returns BaseModel | undefined - 应用实例或 undefined
144
+ */
139
145
  getApp(name?: null | string): BaseModel | undefined;
140
- getBaseAppStyle(urlOrCode: string): Style | undefined;
146
+ /**
147
+ * 删除缓存的应用实例
148
+ * @description 从缓存中移除指定URL的应用实例
149
+ * @param url - 要删除的应用URL标识
150
+ */
151
+ deleteApp(url: string): void;
152
+ /**
153
+ * 获取缓存的HTML内容
154
+ * @description 根据URL获取已缓存的HTML内容
155
+ * @param url - 应用的URL
156
+ * @returns string - HTML内容,未找到时返回空字符串
157
+ */
141
158
  getCacheHtml(url: string): string;
142
- getCacheScript(url: string): Script | undefined;
143
- getCacheStyle(url: string): Style | undefined;
144
- setApp(app: BaseModel): void;
159
+ /**
160
+ * 设置基础应用脚本
161
+ * @description 将脚本添加到基础资源源中,供多个应用共享
162
+ * @param url - 脚本的URL
163
+ * @param script - 脚本实例
164
+ */
145
165
  setBaseAppScript(url: string, script: Script): void;
166
+ /**
167
+ * 获取缓存的脚本资源
168
+ * @description 从基础资源源或应用缓存中获取脚本资源
169
+ * @param url - 脚本的URL
170
+ * @returns Script | undefined - 脚本实例或 undefined
171
+ */
172
+ getCacheScript(url: string): Script | undefined;
173
+ /**
174
+ * 设置基础应用样式
175
+ * @description 将样式添加到基础资源源中,供多个应用共享
176
+ * @param url - 样式的URL
177
+ * @param style - 样式实例
178
+ */
146
179
  setBaseAppStyle(url: string, style: Style): void;
180
+ /**
181
+ * 获取基础应用样式
182
+ * @description 从基础资源源中获取样式资源
183
+ * @param urlOrCode - 样式的URL或代码
184
+ * @returns Style | undefined - 样式实例或 undefined
185
+ */
186
+ getBaseAppStyle(urlOrCode: string): Style | undefined;
187
+ /**
188
+ * 获取缓存的样式资源
189
+ * @description 从基础资源源或应用缓存中获取样式资源
190
+ * @param url - 样式的URL
191
+ * @returns Style | undefined - 样式实例或 undefined
192
+ */
193
+ getCacheStyle(url: string): Style | undefined;
194
+ /**
195
+ * 检查是否存在活跃的应用
196
+ * @description 判断当前是否有处于非卸载状态的应用实例
197
+ * @returns boolean - 存在活跃应用时返回 true
198
+ */
147
199
  get hasActiveApp(): boolean;
148
200
  }
149
201
 
@@ -174,46 +226,132 @@ declare const AppState: {
174
226
  type KeyOfAppState = keyof typeof AppState;
175
227
  type ValueOfAppState = (typeof AppState)[KeyOfAppState];
176
228
 
229
+ /**
230
+ * BK WEWEB 支持的自定义属性枚举
231
+ * @description 定义了 bk-weweb 自定义元素支持的所有属性配置
232
+ */
177
233
  declare enum WewebCustomAttrs {
178
- data = "data",// 传递给子应用的数据
179
- id = "id",// 应用id
180
- keepAlive = "keepAlive",// 是否缓存
181
- mode = "mode",// 模式
182
- scopeCss = "scopeCss",// 是否开启css隔离
183
- scopeJs = "scopeJs",// 是否开启js隔离
184
- scopeLocation = "scopeLocation",// 是否开启location隔离
185
- setShodowDom = "setShodowDom",// 是否开启shadowDom
186
- showSourceCode = "showSourceCode",// 是否显示源码
234
+ /** 传递给子应用的数据 */
235
+ data = "data",
236
+ /** 应用唯一标识符 */
237
+ id = "id",
238
+ /** 是否启用缓存模式 */
239
+ keepAlive = "keepAlive",
240
+ /** 应用运行模式 */
241
+ mode = "mode",
242
+ /** 是否开启 CSS 样式隔离 */
243
+ scopeCss = "scopeCss",
244
+ /** 是否开启 JavaScript 隔离 */
245
+ scopeJs = "scopeJs",
246
+ /** 是否开启 location 路由隔离 */
247
+ scopeLocation = "scopeLocation",
248
+ /** 是否启用 Shadow DOM */
249
+ setShodowDom = "setShodowDom",
250
+ /** 是否显示源码 */
251
+ showSourceCode = "showSourceCode",
252
+ /** 应用资源 URL */
187
253
  url = "url"
188
254
  }
189
255
 
190
256
  type FakeWindow = Window & Record<string, unknown>;
191
257
 
192
258
  /**
193
- * 微前端沙箱实现
194
- * 提供应用间的环境隔离,防止全局变量污染
259
+ * 微前端沙箱
260
+ * @description 提供应用间的环境隔离,防止全局变量污染,支持多应用并存运行
195
261
  */
196
262
  declare class SandBox {
197
- app: BaseModel;
263
+ readonly app: BaseModel;
264
+ /** 沙箱激活状态标识 */
198
265
  private active;
199
- private inRawWindowKeySet;
266
+ /** 记录在原始 window 上新增的属性键集合 */
267
+ private readonly inRawWindowKeySet;
268
+ /** 重置文档和 body 事件的函数 */
200
269
  private resetDocumentAndBodyEvent?;
201
- private resetWindowFunction;
202
- private sameRawWindowKeySet;
203
- fakeWindow: FakeWindow & IInjectWindowAttrs;
270
+ /** 重置 window 函数的方法 */
271
+ private readonly resetWindowFunction;
272
+ /** 记录与原始 window 相同的属性键集合 */
273
+ private readonly sameRawWindowKeySet;
274
+ /** 伪造的 window 对象 */
275
+ readonly fakeWindow: FakeWindow & IInjectWindowAttrs;
276
+ /** 代理的 document 对象 */
204
277
  proxyDocument: any;
205
- proxyWindow: WindowProxy & IInjectWindowAttrs;
278
+ /** 代理的 window 对象 */
279
+ readonly proxyWindow: WindowProxy & IInjectWindowAttrs;
280
+ /** 原始 document 对象 */
206
281
  rawDocument: Record<string, any>;
207
- rawWindow: Window;
208
- windowSymbolKey: keyof Window;
282
+ /** 原始 window 对象 */
283
+ readonly rawWindow: Window;
284
+ /** 在 window 上的唯一标识键 */
285
+ readonly windowSymbolKey: keyof Window;
286
+ /** 初始化沙箱环境 */
209
287
  constructor(app: BaseModel);
288
+ /** 处理代理对象的 get 操作 */
289
+ private handleProxyGet;
290
+ /**
291
+ * 处理代理对象的 set 操作
292
+ * @description 统一处理代理对象属性设置的复杂逻辑
293
+ * @param target - 目标对象
294
+ * @param key - 属性键
295
+ * @param value - 属性值
296
+ * @param rawWindow - 原始 window 对象
297
+ * @returns boolean - 设置是否成功
298
+ * @private
299
+ */
300
+ private handleProxySet;
301
+ /**
302
+ * 判断是否应该使用 iframe 的 location
303
+ * @description 检查是否在 iframe 模式下访问 location 相关属性
304
+ * @param key - 属性键
305
+ * @returns boolean - 是否使用 iframe location
306
+ * @private
307
+ */
308
+ private shouldUseIframeLocation;
309
+ /**
310
+ * 创建 getComputedStyle 方法的代理
311
+ * @description 为 getComputedStyle 方法创建安全的代理实现
312
+ * @param rawWindow - 原始 window 对象
313
+ * @returns Function - 代理后的 getComputedStyle 方法
314
+ * @private
315
+ */
316
+ private createGetComputedStyleProxy;
317
+ /**
318
+ * 判断是否应该在目标对象上设置属性
319
+ * @description 检查属性设置的逻辑条件
320
+ * @param target - 目标对象
321
+ * @param key - 属性键
322
+ * @param rawWindow - 原始 window 对象
323
+ * @returns boolean - 是否在目标对象上设置
324
+ * @private
325
+ */
326
+ private shouldSetOnTarget;
327
+ /**
328
+ * 在目标对象上设置属性
329
+ * @description 安全地在目标对象上设置属性,保持描述符特性
330
+ * @param target - 目标对象
331
+ * @param key - 属性键
332
+ * @param value - 属性值
333
+ * @param rawWindow - 原始 window 对象
334
+ * @private
335
+ */
336
+ private setPropertyOnTarget;
337
+ /**
338
+ * 处理白名单属性
339
+ * @description 处理需要在原始 window 上设置的白名单属性
340
+ * @param key - 属性键
341
+ * @param value - 属性值
342
+ * @param rawWindow - 原始 window 对象
343
+ * @private
344
+ */
345
+ private handleWhiteListProperty;
210
346
  /**
211
347
  * 激活沙箱
212
- * @param data 传递给沙箱的数据
348
+ * @description 启动沙箱环境,初始化代理对象和事件处理
349
+ * @param data - 传递给沙箱的数据(可选)
213
350
  */
214
351
  activated(data?: Record<string, unknown>): void;
215
352
  /**
216
- * 停用沙箱,清理所有副作用
353
+ * 停用沙箱
354
+ * @description 关闭沙箱环境,清理所有副作用和修改
217
355
  */
218
356
  deactivated(): void;
219
357
  }
@@ -221,14 +359,10 @@ declare class SandBox {
221
359
  type SourceFuncType = () => Promise<string[]>;
222
360
  type SourceType = SourceFuncType | string[];
223
361
 
224
- type ContainerType$2 = HTMLElement | ShadowRoot;
225
- type AppCallback = (app: BaseModel) => void;
226
- /**
227
- * BK-WEWEB 微微应用模式类
228
- */
362
+ /** BK-WEWEB 微应用模式类 */
229
363
  declare class MicroAppModel implements BaseModel {
230
364
  private state;
231
- container?: ContainerType$2;
365
+ container?: ContainerType;
232
366
  data: Record<string, unknown>;
233
367
  iframe: HTMLIFrameElement | null;
234
368
  initSource: SourceType;
@@ -245,97 +379,48 @@ declare class MicroAppModel implements BaseModel {
245
379
  source?: EntrySource;
246
380
  url: string;
247
381
  constructor(props: IAppModelProps);
248
- /**
249
- * 激活微应用
250
- */
251
- activated(container: ContainerType$2, callback?: AppCallback): void;
252
- /**
253
- * 创建隔离iframe
254
- */
382
+ /** 激活微应用 */
383
+ activated<T = unknown>(container: ContainerType, callback?: CallbackFunction<T>): void;
384
+ /** 创建隔离iframe */
255
385
  createIframe(): Promise<HTMLIFrameElement>;
256
- /**
257
- * 停用微应用
258
- */
386
+ /** 停用微应用 */
259
387
  deactivated(): void;
260
- /**
261
- * 初始化ShadowRoot容器
262
- */
388
+ /** 初始化ShadowRoot容器 */
263
389
  initShadowRootContainer(): void;
264
- /**
265
- * 挂载微应用
266
- */
267
- mount(container?: ContainerType$2, callback?: AppCallback): void;
268
- /**
269
- * 错误处理
270
- */
390
+ /** 挂载微应用 */
391
+ mount<T = unknown>(container?: ContainerType, callback?: CallbackFunction<T>): void;
392
+ /** 错误处理 */
271
393
  onError(): void;
272
- /**
273
- * 挂载处理
274
- */
394
+ /** 挂载处理 */
275
395
  onMount(): void;
276
- /**
277
- * 注册运行中的微应用
278
- */
396
+ /** 注册运行中的微应用 */
279
397
  registerRunningApp(): void;
280
- /**
281
- * 启动微应用
282
- */
398
+ /** 启动微应用 */
283
399
  start(): Promise<void>;
284
- /**
285
- * 卸载微应用
286
- */
400
+ /** 卸载微应用 */
287
401
  unmount(needDestroy?: boolean): void;
288
- /**
289
- * 获取微应用缓存键
290
- */
291
402
  get appCacheKey(): string;
292
- /**
293
- * 获取微应用状态
294
- */
295
403
  get status(): ValueOfAppState;
296
- /**
297
- * 设置微应用状态
298
- */
299
404
  set status(value: ValueOfAppState);
300
- /**
301
- * 初始化沙盒
302
- */
405
+ /** 初始化沙盒 */
303
406
  private initializeSandBox;
304
- /**
305
- * 设置容器属性
306
- */
407
+ /** 设置容器属性 */
307
408
  private setContainerAttribute;
308
- /**
309
- * 转移节点到新容器
310
- */
409
+ /** 转移节点到新容器 */
311
410
  private transferNodes;
312
- /**
313
- * 设置节点属性
314
- */
411
+ /** 设置节点属性 */
315
412
  private setupNodeProperties;
316
- /**
317
- * 创建iframe元素
318
- */
413
+ /** 创建iframe元素 */
319
414
  private createIframeElement;
320
- /**
321
- * 构建iframe的src地址
322
- */
415
+ /** 构建iframe源地址 */
323
416
  private buildIframeSrc;
324
- /**
325
- * 检查是否为Chrome用户代理
326
- */
417
+ /** 检查是否为Chrome浏览器 */
327
418
  private isChromeUserAgent;
328
- /**
329
- * 处理非Chrome浏览器的iframe
330
- */
419
+ /** 处理非Chrome浏览器iframe */
331
420
  private handleNonChromeIframe;
332
- /**
333
- * 渲染微应用内容
334
- */
421
+ /** 渲染应用内容 */
335
422
  private renderAppContent;
336
- /**
337
- * 检查是否需要重新加载
338
- */
423
+ /** 检查是否需要重新加载 */
339
424
  private needsReload;
340
425
  }
341
426
 
@@ -351,40 +436,26 @@ declare class EntrySource {
351
436
  scripts: Map<string, Script>;
352
437
  styles: Map<string, Style>;
353
438
  constructor(url: string);
354
- /**
355
- * 收集链接元素
356
- */
439
+ /** 收集链接元素 */
357
440
  collectLink: (link: HTMLLinkElement, parent: Node, needReplaceElement?: boolean) => {
358
441
  replace: Comment | Element;
359
442
  style?: Style;
360
443
  };
361
- /**
362
- * 收集脚本元素
363
- */
444
+ /** 收集脚本元素 */
364
445
  collectScript: (script: HTMLScriptElement, parent: Node, needReplaceElement?: boolean) => CollectResult | undefined;
365
- /**
366
- * 收集样式和脚本
367
- */
446
+ /** 收集样式和脚本 */
368
447
  collectScriptAndStyle: (parent: HTMLElement) => void;
369
448
  getScript: (url: string) => Script | undefined;
370
449
  getStyle: (urlOrCode: string) => Style | undefined;
371
- /**
372
- * 导入入口资源
373
- */
450
+ /** html entry */
374
451
  importEntry(app: BaseModel): Promise<void>;
375
- /**
376
- * 导入HTML入口
377
- */
452
+ /** 微应用入口 */
378
453
  importHtmlEntry(app: MicroAppModel): Promise<void>;
379
- /**
380
- * 导入实例入口
381
- */
454
+ /** 微模块入口 */
382
455
  importInstanceEntry(app: BaseModel): Promise<void>;
383
456
  setScript: (url: string, script: IScriptOption | Script) => void;
384
457
  setStyle: (url: string, style: Style) => void;
385
- /**
386
- * 处理样式表链接
387
- */
458
+ /** 处理样式表链接 */
388
459
  private handleStylesheetLink;
389
460
  /**
390
461
  * 处理图标链接
@@ -455,82 +526,74 @@ type FetchOptions = Record<string, unknown>;
455
526
  */
456
527
  declare const fetchSource: (url: string, options?: FetchOptions, app?: BaseModel) => Promise<string>;
457
528
 
458
- /**
459
- * WEWEB模式枚举
460
- */
529
+ /** WEWEB运行模式 */
461
530
  declare enum WewebMode {
462
- /** 应用模式 */
531
+ /** 微应用模式 */
463
532
  APP = "app",
464
533
  /** 配置模式 */
465
534
  CONFIG = "config",
466
- /** 实例模式 */
535
+ /** 微模块模式 */
467
536
  INSTANCE = "js"
468
537
  }
469
- type ContainerType$1 = HTMLElement | ShadowRoot;
538
+ /** 容器类型 */
539
+ type ContainerType = HTMLElement | ShadowRoot;
540
+ /** 通用回调函数类型 */
470
541
  type CallbackFunction<T = unknown> = (instance: BaseModel, exportInstance?: T) => void;
471
- /**
472
- * 基础模型属性接口
473
- */
542
+ /** 基础模型属性接口 */
474
543
  interface IBaseModelProps {
475
- /** entry模式:js | config | html,默认html */
544
+ /** 运行模式 */
476
545
  [WewebCustomAttrs.mode]?: WewebMode;
477
- /** URL地址(必选) */
546
+ /** 应用URL */
478
547
  [WewebCustomAttrs.url]: string;
479
548
  /** 应用ID */
480
549
  id?: string | null;
481
550
  /** 是否预加载 */
482
551
  isPreLoad?: boolean;
483
552
  }
484
- /**
485
- * 微应用模式属性配置接口
486
- */
553
+ /** 微应用模式属性配置 */
487
554
  interface IAppModelProps extends IBaseModelProps {
488
- /** 传递给子应用的数据,默认保存 */
555
+ /** 传递给子应用的数据 */
489
556
  [WewebCustomAttrs.data]?: Record<string, unknown>;
490
557
  /** 是否缓存DOM */
491
558
  [WewebCustomAttrs.keepAlive]?: boolean;
492
- /** 是否启用样式隔离,默认隔离 */
559
+ /** 是否启用样式隔离 */
493
560
  [WewebCustomAttrs.scopeCss]?: boolean;
494
- /** 是否使用沙盒隔离,默认隔离 */
561
+ /** 是否使用沙盒隔离 */
495
562
  [WewebCustomAttrs.scopeJs]?: boolean;
496
563
  /** 是否共享主应用路由 */
497
564
  [WewebCustomAttrs.scopeLocation]?: boolean;
498
- /** 是否使用shadowDom */
565
+ /** 是否使用 ShadowDOM */
499
566
  [WewebCustomAttrs.setShodowDom]?: boolean;
500
- /** 是否在dom上显示源码,默认不显示内存执行 */
567
+ /** 是否显示源码 */
501
568
  [WewebCustomAttrs.showSourceCode]?: boolean;
502
569
  /** 容器元素 */
503
- container?: ContainerType$1 | null;
504
- /** 初始化资源,如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css'] */
570
+ container?: ContainerType | null;
571
+ /** 初始化资源 */
505
572
  initSource?: SourceType;
506
573
  }
507
- /**
508
- * 微模块模式属性配置接口
509
- */
574
+ /** 微模块模式属性配置 */
510
575
  interface IJsModelProps extends IBaseModelProps {
511
- /** 传递给实例render方法的数据 */
576
+ /** 传递给模块的数据 */
512
577
  [WewebCustomAttrs.data]?: Record<string, unknown>;
513
- /** 是否在dom上显示源码,默认显示 */
578
+ /** 是否显示源码 */
514
579
  [WewebCustomAttrs.showSourceCode]?: boolean;
515
580
  /** 容器元素 */
516
- container?: ContainerType$1 | null;
517
- /** 初始化资源,如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css'] */
581
+ container?: ContainerType | null;
582
+ /** 初始化资源 */
518
583
  initSource?: SourceType;
519
584
  /** 是否缓存DOM */
520
585
  keepAlive?: boolean;
521
- /** 是否启用样式隔离,默认隔离 */
586
+ /** 是否启用样式隔离 */
522
587
  scopeCss?: boolean;
523
- /** 是否使用沙盒隔离,默认不隔离 */
588
+ /** 是否使用沙盒隔离 */
524
589
  scopeJs?: boolean;
525
590
  }
526
- /**
527
- * 基础模型接口
528
- */
591
+ /** 基础模型接口 */
529
592
  interface BaseModel {
530
593
  /** 应用缓存键 */
531
594
  readonly appCacheKey: string;
532
595
  /** 容器元素 */
533
- container?: ContainerType$1;
596
+ container?: ContainerType;
534
597
  /** 初始化资源 */
535
598
  initSource?: SourceType;
536
599
  /** 是否为模块应用 */
@@ -543,7 +606,7 @@ interface BaseModel {
543
606
  name: string;
544
607
  /** 沙盒实例 */
545
608
  sandBox?: SandBox;
546
- /** 是否启用样式隔离,默认隔离 */
609
+ /** 是否启用样式隔离 */
547
610
  scopeCss?: boolean;
548
611
  /** 是否使用JS隔离 */
549
612
  scopeJs: boolean;
@@ -555,51 +618,25 @@ interface BaseModel {
555
618
  url: string;
556
619
  /** 获取资源的函数 */
557
620
  fetchSource?: typeof fetchSource;
558
- /**
559
- * 激活应用
560
- * @param container 容器元素
561
- * @param callback 回调函数
562
- */
563
- activated<T = unknown>(container: ContainerType$1, callback?: CallbackFunction<T>): void;
564
- /**
565
- * 停用应用
566
- */
621
+ /** 激活应用 */
622
+ activated<T = unknown>(container: ContainerType, callback?: CallbackFunction<T>): void;
623
+ /** 停用应用 */
567
624
  deactivated(): void;
568
- /**
569
- * 挂载应用
570
- * @param container 容器元素
571
- * @param callback 回调函数
572
- */
573
- mount<T = unknown>(container?: ContainerType$1, callback?: CallbackFunction<T>): void;
574
- /**
575
- * 错误处理
576
- */
625
+ /** 挂载应用 */
626
+ mount<T = unknown>(container?: ContainerType, callback?: CallbackFunction<T>): void;
627
+ /** 错误处理 */
577
628
  onError(): void;
578
- /**
579
- * 挂载处理
580
- */
629
+ /** 挂载处理 */
581
630
  onMount(): void;
582
- /**
583
- * 注册运行中的应用
584
- */
631
+ /** 注册运行中的应用 */
585
632
  registerRunningApp(): void;
586
- /**
587
- * 启动应用
588
- */
633
+ /** 启动应用 */
589
634
  start(): Promise<void>;
590
- /**
591
- * 卸载应用
592
- * @param needDestroy 是否需要销毁
593
- */
635
+ /** 卸载应用 */
594
636
  unmount(needDestroy?: boolean): void;
595
- /**
596
- * 获取应用状态
597
- */
637
+ /** 获取应用状态 */
598
638
  get status(): ValueOfAppState;
599
- /**
600
- * 设置应用状态
601
- * @param value 状态值
602
- */
639
+ /** 设置应用状态 */
603
640
  set status(value: ValueOfAppState);
604
641
  }
605
642
 
@@ -617,39 +654,65 @@ declare global {
617
654
  }
618
655
 
619
656
  /**
620
- * 接口定义:样式选项
657
+ * 资源加载相关类型定义
658
+ * @description 定义了样式、脚本等资源的配置选项和相关类型
659
+ */
660
+ /**
661
+ * 样式资源配置选项接口
662
+ * @description 定义样式文件的加载配置和属性信息
621
663
  */
622
664
  interface IStyleOption {
665
+ /** 样式代码内容 */
623
666
  code: string;
667
+ /** 是否来自 HTML 页面内联样式 */
624
668
  fromHtml: boolean;
669
+ /** 是否为初始样式 */
625
670
  initial?: boolean;
671
+ /** 是否预取样式资源 */
626
672
  prefetch?: boolean;
673
+ /** 是否预加载样式资源 */
627
674
  preload?: boolean;
675
+ /** 样式文件的 URL 地址 */
628
676
  url?: string;
629
677
  }
678
+ /**
679
+ * 脚本资源配置选项接口
680
+ * @description 定义脚本文件的加载配置和属性信息
681
+ */
630
682
  interface IScriptOption {
683
+ /** 是否为异步加载脚本 */
631
684
  async: boolean;
685
+ /** 脚本代码内容 */
632
686
  code: string;
687
+ /** 是否为延迟执行脚本 */
633
688
  defer: boolean;
689
+ /** 是否从 HTML 页面中提取的脚本 */
634
690
  fromHtml: boolean;
691
+ /** 是否为初始脚本 */
635
692
  initial?: boolean;
693
+ /** 是否为 ES6 模块类型脚本 */
636
694
  isModule: boolean;
695
+ /** 脚本文件的 URL 地址 */
637
696
  url?: string;
638
697
  }
639
698
 
640
699
  /**
641
- * 注入window 属性的接口
700
+ * 沙箱环境配置类型定义
701
+ */
702
+ /**
703
+ * 注入到子应用 window 对象的属性接口
704
+ * @description 定义了 BK WEWEB 平台注入到子应用环境中的必要属性
642
705
  */
643
706
  interface IInjectWindowAttrs {
644
- /** BK WEWEB平台的应用key */
707
+ /** BK WEWEB平台的应用唯一标识 */
645
708
  __BK_WEWEB_APP_KEY__: string;
646
709
  /** BK WEWEB的附加数据 */
647
710
  __BK_WEWEB_DATA__: Record<string, unknown>;
648
711
  /** 标识页面是否由BK WEWEB驱动 */
649
712
  __POWERED_BY_BK_WEWEB__: boolean;
650
- /** 原始 document 对象 */
713
+ /** 原始 document 对象的引用 */
651
714
  rawDocument: Document;
652
- /** 原始 window 对象 */
715
+ /** 原始 window 对象的引用 */
653
716
  rawWindow: Window;
654
717
  }
655
718
 
@@ -660,16 +723,23 @@ interface IStartOption {
660
723
  webComponentTag?: string;
661
724
  }
662
725
 
726
+ /**
727
+ * 激活指定应用
728
+ * @description 激活已失活的应用或挂载新应用,支持 keep-alive 模式的应用状态恢复
729
+ * @template T - 导出实例的类型
730
+ * @param appKey - 应用的唯一标识符
731
+ * @param container - 挂载容器,HTMLElement 或 ShadowRoot
732
+ * @param callback - 激活完成后的回调函数(可选)
733
+ */
663
734
  declare function activated<T>(appKey: string, container: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
664
735
 
665
- declare function deactivated(appKey: string): void;
666
-
667
- type ContainerType = HTMLElement | ShadowRoot;
668
- type InstanceCallback<T = unknown> = (instance: BaseModel, exportInstance?: T) => void;
669
- type MountCallback<T = unknown> = (instance: MicroInstanceModel, exportInstance: T) => void;
670
736
  /**
671
- * BK-WEWEB 微模块模式类
737
+ * deactivated 指定应用
738
+ * @description 将指定应用设置为失活状态,根据 keep-alive 配置决定
672
739
  */
740
+ declare function deactivated(appKey: string): void;
741
+
742
+ /** BK-WEWEB 微模块模式类 */
673
743
  declare class MicroInstanceModel implements BaseModel {
674
744
  private state;
675
745
  appCacheKey: string;
@@ -689,103 +759,133 @@ declare class MicroInstanceModel implements BaseModel {
689
759
  constructor(props: IJsModelProps & {
690
760
  fetchSource?: typeof fetchSource;
691
761
  });
692
- /**
693
- * 激活微模块
694
- */
695
- activated<T = unknown>(container: ContainerType, callback?: InstanceCallback<T>): void;
696
- /**
697
- * 停用微模块
698
- */
762
+ /** 激活微模块 */
763
+ activated<T = unknown>(container: ContainerType, callback?: CallbackFunction<T>): void;
764
+ /** 停用微模块 */
699
765
  deactivated(): void;
700
- /**
701
- * 挂载微模块
702
- */
703
- mount<T = unknown>(container?: ContainerType, callback?: MountCallback<T>): void;
704
- /**
705
- * 错误处理
706
- */
766
+ /** 挂载微模块 */
767
+ mount<T = unknown>(container?: ContainerType, callback?: CallbackFunction<T>): void;
768
+ /** 错误处理 */
707
769
  onError(): void;
708
- /**
709
- * 挂载处理
710
- */
770
+ /** 挂载处理 */
711
771
  onMount(): void;
712
- /**
713
- * 注册运行中的应用
714
- */
772
+ /** 注册运行中的应用 */
715
773
  registerRunningApp(): void;
716
- /**
717
- * 启动微模块
718
- */
774
+ /** 启动微模块 */
719
775
  start(): Promise<void>;
720
- /**
721
- * 卸载微模块
722
- */
776
+ /** 卸载微模块 */
723
777
  unmount(needDestroy?: boolean): void;
724
- /**
725
- * 设置微模块 状态
726
- */
727
778
  set status(value: ValueOfAppState);
728
- /**
729
- * 获取微模块 状态
730
- */
731
779
  get status(): ValueOfAppState;
732
- /**
733
- * 初始化沙盒
734
- */
780
+ /** 初始化沙盒 */
735
781
  private initializeSandBox;
736
- /**
737
- * 设置容器属性
738
- */
782
+ /** 设置容器属性 */
739
783
  private setContainerAttribute;
740
- /**
741
- * 转移节点到新容器
742
- */
784
+ /** 转移节点到新容器 */
743
785
  private transferNodes;
744
- /**
745
- * 设置容器
746
- */
786
+ /** 设置容器 */
747
787
  private setupContainer;
748
- /**
749
- * 创建微模块 包装器
750
- */
788
+ /** 执行样式 */
789
+ private executeStyles;
790
+ /** 创建实例包装器 */
751
791
  private createInstanceWrapper;
752
- /**
753
- * 渲染微模块
754
- */
792
+ /** 渲染实例 */
755
793
  private renderInstance;
756
- /**
757
- * 获取脚本信息
758
- */
794
+ /** 获取脚本信息 */
759
795
  private getScriptInfo;
760
- /**
761
- * 检查是否需要重新加载
762
- */
796
+ /** 检查是否需要重新加载 */
763
797
  private needsReload;
764
798
  }
765
799
 
800
+ /**
801
+ * 根据配置模式加载相应的应用或模块实例
802
+ * @description 统一的加载入口,根据模式参数决定加载应用还是模块实例
803
+ * @param props - 基础模型配置参数
804
+ * @returns Promise<BaseModel> - 返回加载的模型实例
805
+ */
766
806
  declare function load(props: IBaseModelProps): Promise<BaseModel>;
807
+ /**
808
+ * 加载微应用
809
+ * @description 加载或获取已存在的微应用实例,并启动应用
810
+ * @param props - 应用模型配置参数
811
+ * @returns Promise<MicroAppModel> - 返回微应用模型实例
812
+ */
767
813
  declare function loadApp(props: IAppModelProps): Promise<MicroAppModel>;
814
+ /**
815
+ * 加载模块实例
816
+ * @description 加载或获取已存在的模块实例,支持状态监听和异步等待
817
+ * @param props - 模块实例配置参数
818
+ * @returns Promise<MicroInstanceModel> - 返回模块实例模型
819
+ */
768
820
  declare function loadInstance(props: IJsModelProps): Promise<MicroInstanceModel>;
769
821
 
822
+ /**
823
+ * 挂载应用到指定容器
824
+ * @description 将已加载的应用挂载到指定的 DOM 容器或 ShadowRoot 中
825
+ * @template T - 导出实例的类型
826
+ * @param appKey - 应用的唯一标识符
827
+ * @param container - 挂载容器,可以是 HTMLElement 或 ShadowRoot(可选)
828
+ * @param callback - 挂载完成后的回调函数(可选)
829
+ */
770
830
  declare function mount<T>(appKey: string, container?: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
771
831
 
832
+ /**
833
+ * 卸载并删除指定应用
834
+ * @description 从缓存中完全删除指定的应用实例,释放相关资源
835
+ * @param url - 应用的 URL 标识符,用于定位要删除的应用
836
+ */
772
837
  declare function unload(url: string): void;
773
838
 
839
+ /**
840
+ * 卸载指定应用
841
+ * @description 卸载指定的应用实例,并在没有活跃应用时重置全局方法
842
+ * @param appKey - 应用的唯一标识符
843
+ */
774
844
  declare function unmount(appKey: string): void;
775
845
 
776
846
  /**
777
- * @param options 加载模块的参数
778
- * @description 预加载实例
847
+ * 预加载模块实例
848
+ * @description 在浏览器空闲时预加载指定的模块实例,提前准备资源以提升后续加载性能
849
+ * @param options - 模块加载配置参数
850
+ * @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
851
+ * @example
852
+ * ```typescript
853
+ * preLoadInstance({
854
+ * name: 'my-module',
855
+ * url: 'https://example.com/module.js'
856
+ * });
857
+ * ```
779
858
  */
780
859
  declare function preLoadInstance(options: IJsModelProps): void;
781
860
  /**
782
- * @param options 加载应用的参数
783
- * @description 预加载应用
861
+ * 预加载微应用
862
+ * @description 在浏览器空闲时预加载指定的微应用,提前准备应用资源以提升后续加载性能
863
+ * @param options - 应用加载配置参数
864
+ * @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
865
+ * @example
866
+ * ```typescript
867
+ * preLoadApp({
868
+ * name: 'my-app',
869
+ * entry: 'https://example.com/app/'
870
+ * });
871
+ * ```
784
872
  */
785
873
  declare function preLoadApp(options: IAppModelProps): void;
786
874
  /**
787
- * @param sourceList 要预加载的资源列表
788
- * @description 预加载资源
875
+ * 预加载全局资源
876
+ * @description 在浏览器空闲时预加载指定的全局资源列表,包括样式文件、脚本文件等
877
+ * @param sourceList - 要预加载的资源列表,可以是单个资源或资源数组
878
+ * @example
879
+ * ```typescript
880
+ * // 预加载单个资源
881
+ * preLoadSource('https://example.com/style.css');
882
+ *
883
+ * // 预加载多个资源
884
+ * preLoadSource([
885
+ * 'https://example.com/style.css',
886
+ * 'https://example.com/script.js'
887
+ * ]);
888
+ * ```
789
889
  */
790
890
  declare function preLoadSource(sourceList: SourceType): void;
791
891
 
@@ -793,7 +893,9 @@ declare class WeWeb {
793
893
  fetchSource?: FetchSourceType;
794
894
  webComponentTag: string;
795
895
  constructor();
896
+ /** 设置自定义DOM标签名 */
796
897
  setWebComponentTag(): void;
898
+ /** 启动WeWeb */
797
899
  start(option?: IStartOption): void;
798
900
  }
799
901
  declare const weWeb: WeWeb;