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

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
@@ -131,19 +131,90 @@ declare class Style {
131
131
  private observeContentChanges;
132
132
  }
133
133
 
134
+ /**
135
+ * 应用缓存管理器
136
+ * @description 负责管理所有微应用实例的缓存、资源共享和状态跟踪
137
+ */
134
138
  declare class AppCache {
135
- private baseSource;
136
- private cache;
139
+ /** 基础资源源,用于主应用共享资源包 */
140
+ private readonly baseSource;
141
+ /** 应用实例缓存映射表 */
142
+ private readonly cache;
143
+ /**
144
+ * 构造函数
145
+ * @description 初始化应用缓存管理器
146
+ */
137
147
  constructor();
138
- deleteApp(url: string): void;
148
+ /**
149
+ * 设置应用实例到缓存
150
+ * @description 将应用实例添加到缓存中,使用应用的缓存键作为标识
151
+ * @param app - 要缓存的应用实例
152
+ * @returns void
153
+ */
154
+ setApp(app: BaseModel): void;
155
+ /**
156
+ * 获取缓存的应用实例
157
+ * @description 根据名称或ID获取已缓存的应用实例
158
+ * @param name - 应用名称或ID,为空时返回 undefined
159
+ * @returns BaseModel | undefined - 应用实例或 undefined
160
+ */
139
161
  getApp(name?: null | string): BaseModel | undefined;
140
- getBaseAppStyle(urlOrCode: string): Style | undefined;
162
+ /**
163
+ * 删除缓存的应用实例
164
+ * @description 从缓存中移除指定URL的应用实例
165
+ * @param url - 要删除的应用URL标识
166
+ * @returns void
167
+ */
168
+ deleteApp(url: string): void;
169
+ /**
170
+ * 获取缓存的HTML内容
171
+ * @description 根据URL获取已缓存的HTML内容
172
+ * @param url - 应用的URL
173
+ * @returns string - HTML内容,未找到时返回空字符串
174
+ */
141
175
  getCacheHtml(url: string): string;
142
- getCacheScript(url: string): Script | undefined;
143
- getCacheStyle(url: string): Style | undefined;
144
- setApp(app: BaseModel): void;
176
+ /**
177
+ * 设置基础应用脚本
178
+ * @description 将脚本添加到基础资源源中,供多个应用共享
179
+ * @param url - 脚本的URL
180
+ * @param script - 脚本实例
181
+ * @returns void
182
+ */
145
183
  setBaseAppScript(url: string, script: Script): void;
184
+ /**
185
+ * 获取缓存的脚本资源
186
+ * @description 从基础资源源或应用缓存中获取脚本资源
187
+ * @param url - 脚本的URL
188
+ * @returns Script | undefined - 脚本实例或 undefined
189
+ */
190
+ getCacheScript(url: string): Script | undefined;
191
+ /**
192
+ * 设置基础应用样式
193
+ * @description 将样式添加到基础资源源中,供多个应用共享
194
+ * @param url - 样式的URL
195
+ * @param style - 样式实例
196
+ * @returns void
197
+ */
146
198
  setBaseAppStyle(url: string, style: Style): void;
199
+ /**
200
+ * 获取基础应用样式
201
+ * @description 从基础资源源中获取样式资源
202
+ * @param urlOrCode - 样式的URL或代码
203
+ * @returns Style | undefined - 样式实例或 undefined
204
+ */
205
+ getBaseAppStyle(urlOrCode: string): Style | undefined;
206
+ /**
207
+ * 获取缓存的样式资源
208
+ * @description 从基础资源源或应用缓存中获取样式资源
209
+ * @param url - 样式的URL
210
+ * @returns Style | undefined - 样式实例或 undefined
211
+ */
212
+ getCacheStyle(url: string): Style | undefined;
213
+ /**
214
+ * 检查是否存在活跃的应用
215
+ * @description 判断当前是否有处于非卸载状态的应用实例
216
+ * @returns boolean - 存在活跃应用时返回 true
217
+ */
147
218
  get hasActiveApp(): boolean;
148
219
  }
149
220
 
@@ -174,46 +245,146 @@ declare const AppState: {
174
245
  type KeyOfAppState = keyof typeof AppState;
175
246
  type ValueOfAppState = (typeof AppState)[KeyOfAppState];
176
247
 
248
+ /**
249
+ * BK WEWEB 支持的自定义属性枚举
250
+ * @description 定义了 bk-weweb 自定义元素支持的所有属性配置
251
+ */
177
252
  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",// 是否显示源码
253
+ /** 传递给子应用的数据 */
254
+ data = "data",
255
+ /** 应用唯一标识符 */
256
+ id = "id",
257
+ /** 是否启用缓存模式 */
258
+ keepAlive = "keepAlive",
259
+ /** 应用运行模式 */
260
+ mode = "mode",
261
+ /** 是否开启 CSS 样式隔离 */
262
+ scopeCss = "scopeCss",
263
+ /** 是否开启 JavaScript 隔离 */
264
+ scopeJs = "scopeJs",
265
+ /** 是否开启 location 路由隔离 */
266
+ scopeLocation = "scopeLocation",
267
+ /** 是否启用 Shadow DOM */
268
+ setShodowDom = "setShodowDom",
269
+ /** 是否显示源码 */
270
+ showSourceCode = "showSourceCode",
271
+ /** 应用资源 URL */
187
272
  url = "url"
188
273
  }
189
274
 
190
275
  type FakeWindow = Window & Record<string, unknown>;
191
276
 
192
277
  /**
193
- * 微前端沙箱实现
194
- * 提供应用间的环境隔离,防止全局变量污染
278
+ * 微前端沙箱实现类
279
+ * @description 提供应用间的环境隔离,防止全局变量污染,支持多应用并存运行
195
280
  */
196
281
  declare class SandBox {
197
- app: BaseModel;
282
+ readonly app: BaseModel;
283
+ /** 沙箱激活状态标识 */
198
284
  private active;
199
- private inRawWindowKeySet;
285
+ /** 记录在原始 window 上新增的属性键集合 */
286
+ private readonly inRawWindowKeySet;
287
+ /** 重置文档和 body 事件的函数 */
200
288
  private resetDocumentAndBodyEvent?;
201
- private resetWindowFunction;
202
- private sameRawWindowKeySet;
203
- fakeWindow: FakeWindow & IInjectWindowAttrs;
289
+ /** 重置 window 函数的方法 */
290
+ private readonly resetWindowFunction;
291
+ /** 记录与原始 window 相同的属性键集合 */
292
+ private readonly sameRawWindowKeySet;
293
+ /** 伪造的 window 对象 */
294
+ readonly fakeWindow: FakeWindow & IInjectWindowAttrs;
295
+ /** 代理的 document 对象 */
204
296
  proxyDocument: any;
205
- proxyWindow: WindowProxy & IInjectWindowAttrs;
297
+ /** 代理的 window 对象 */
298
+ readonly proxyWindow: WindowProxy & IInjectWindowAttrs;
299
+ /** 原始 document 对象 */
206
300
  rawDocument: Record<string, any>;
207
- rawWindow: Window;
208
- windowSymbolKey: keyof Window;
301
+ /** 原始 window 对象 */
302
+ readonly rawWindow: Window;
303
+ /** 在 window 上的唯一标识键 */
304
+ readonly windowSymbolKey: keyof Window;
305
+ /**
306
+ * 构造函数
307
+ * @description 初始化沙箱环境,创建代理对象和隔离机制
308
+ * @param app - 关联的微应用实例
309
+ */
209
310
  constructor(app: BaseModel);
311
+ /**
312
+ * 处理代理对象的 get 操作
313
+ * @description 统一处理代理对象属性获取的复杂逻辑
314
+ * @param target - 目标对象
315
+ * @param key - 属性键
316
+ * @param rawWindow - 原始 window 对象
317
+ * @returns unknown - 属性值
318
+ * @private
319
+ */
320
+ private handleProxyGet;
321
+ /**
322
+ * 处理代理对象的 set 操作
323
+ * @description 统一处理代理对象属性设置的复杂逻辑
324
+ * @param target - 目标对象
325
+ * @param key - 属性键
326
+ * @param value - 属性值
327
+ * @param rawWindow - 原始 window 对象
328
+ * @returns boolean - 设置是否成功
329
+ * @private
330
+ */
331
+ private handleProxySet;
332
+ /**
333
+ * 判断是否应该使用 iframe 的 location
334
+ * @description 检查是否在 iframe 模式下访问 location 相关属性
335
+ * @param key - 属性键
336
+ * @returns boolean - 是否使用 iframe location
337
+ * @private
338
+ */
339
+ private shouldUseIframeLocation;
340
+ /**
341
+ * 创建 getComputedStyle 方法的代理
342
+ * @description 为 getComputedStyle 方法创建安全的代理实现
343
+ * @param rawWindow - 原始 window 对象
344
+ * @returns Function - 代理后的 getComputedStyle 方法
345
+ * @private
346
+ */
347
+ private createGetComputedStyleProxy;
348
+ /**
349
+ * 判断是否应该在目标对象上设置属性
350
+ * @description 检查属性设置的逻辑条件
351
+ * @param target - 目标对象
352
+ * @param key - 属性键
353
+ * @param rawWindow - 原始 window 对象
354
+ * @returns boolean - 是否在目标对象上设置
355
+ * @private
356
+ */
357
+ private shouldSetOnTarget;
358
+ /**
359
+ * 在目标对象上设置属性
360
+ * @description 安全地在目标对象上设置属性,保持描述符特性
361
+ * @param target - 目标对象
362
+ * @param key - 属性键
363
+ * @param value - 属性值
364
+ * @param rawWindow - 原始 window 对象
365
+ * @private
366
+ */
367
+ private setPropertyOnTarget;
368
+ /**
369
+ * 处理白名单属性
370
+ * @description 处理需要在原始 window 上设置的白名单属性
371
+ * @param key - 属性键
372
+ * @param value - 属性值
373
+ * @param rawWindow - 原始 window 对象
374
+ * @private
375
+ */
376
+ private handleWhiteListProperty;
210
377
  /**
211
378
  * 激活沙箱
212
- * @param data 传递给沙箱的数据
379
+ * @description 启动沙箱环境,初始化代理对象和事件处理
380
+ * @param data - 传递给沙箱的数据(可选)
381
+ * @returns void
213
382
  */
214
383
  activated(data?: Record<string, unknown>): void;
215
384
  /**
216
- * 停用沙箱,清理所有副作用
385
+ * 停用沙箱
386
+ * @description 关闭沙箱环境,清理所有副作用和修改
387
+ * @returns void
217
388
  */
218
389
  deactivated(): void;
219
390
  }
@@ -611,45 +782,71 @@ declare global {
611
782
  }
612
783
  interface Node {
613
784
  __BK_WEWEB_APP_KEY__?: string;
614
- __KEEP_ALIVE__?: string;
785
+ __KEEP_ALIVE__?: boolean;
615
786
  data?: unknown;
616
787
  }
617
788
  }
618
789
 
619
790
  /**
620
- * 接口定义:样式选项
791
+ * 资源加载相关类型定义
792
+ * @description 定义了样式、脚本等资源的配置选项和相关类型
793
+ */
794
+ /**
795
+ * 样式资源配置选项接口
796
+ * @description 定义样式文件的加载配置和属性信息
621
797
  */
622
798
  interface IStyleOption {
799
+ /** 样式代码内容 */
623
800
  code: string;
801
+ /** 是否来自 HTML 页面内联样式 */
624
802
  fromHtml: boolean;
803
+ /** 是否为初始样式(可选) */
625
804
  initial?: boolean;
805
+ /** 是否预取样式资源(可选) */
626
806
  prefetch?: boolean;
807
+ /** 是否预加载样式资源(可选) */
627
808
  preload?: boolean;
809
+ /** 样式文件的 URL 地址(可选) */
628
810
  url?: string;
629
811
  }
812
+ /**
813
+ * 脚本资源配置选项接口
814
+ * @description 定义脚本文件的加载配置和属性信息
815
+ */
630
816
  interface IScriptOption {
817
+ /** 是否为异步加载脚本 */
631
818
  async: boolean;
819
+ /** 脚本代码内容 */
632
820
  code: string;
821
+ /** 是否为延迟执行脚本 */
633
822
  defer: boolean;
823
+ /** 是否从 HTML 页面中提取的脚本 */
634
824
  fromHtml: boolean;
825
+ /** 是否为初始脚本(可选) */
635
826
  initial?: boolean;
827
+ /** 是否为 ES6 模块类型脚本 */
636
828
  isModule: boolean;
829
+ /** 脚本文件的 URL 地址(可选) */
637
830
  url?: string;
638
831
  }
639
832
 
640
833
  /**
641
- * 注入window 属性的接口
834
+ * 沙箱环境配置类型定义
835
+ */
836
+ /**
837
+ * 注入到子应用 window 对象的属性接口
838
+ * @description 定义了 BK WEWEB 平台注入到子应用环境中的必要属性
642
839
  */
643
840
  interface IInjectWindowAttrs {
644
- /** BK WEWEB平台的应用key */
841
+ /** BK WEWEB平台的应用唯一标识 */
645
842
  __BK_WEWEB_APP_KEY__: string;
646
- /** BK WEWEB的附加数据 */
843
+ /** BK WEWEB的附加数据,可包含配置信息、用户数据等 */
647
844
  __BK_WEWEB_DATA__: Record<string, unknown>;
648
- /** 标识页面是否由BK WEWEB驱动 */
845
+ /** 标识页面是否由BK WEWEB驱动的布尔值 */
649
846
  __POWERED_BY_BK_WEWEB__: boolean;
650
- /** 原始 document 对象 */
847
+ /** 原始 document 对象的引用 */
651
848
  rawDocument: Document;
652
- /** 原始 window 对象 */
849
+ /** 原始 window 对象的引用 */
653
850
  rawWindow: Window;
654
851
  }
655
852
 
@@ -660,8 +857,23 @@ interface IStartOption {
660
857
  webComponentTag?: string;
661
858
  }
662
859
 
860
+ /**
861
+ * 激活指定应用
862
+ * @description 激活已失活的应用或挂载新应用,支持 keep-alive 模式的应用状态恢复
863
+ * @template T - 导出实例的类型
864
+ * @param appKey - 应用的唯一标识符
865
+ * @param container - 挂载容器,HTMLElement 或 ShadowRoot
866
+ * @param callback - 激活完成后的回调函数(可选)
867
+ * @returns void
868
+ */
663
869
  declare function activated<T>(appKey: string, container: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
664
870
 
871
+ /**
872
+ * 失活指定应用
873
+ * @description 将指定应用设置为失活状态,根据 keep-alive 配置决定是失活还是卸载
874
+ * @param appKey - 应用的唯一标识符
875
+ * @returns void
876
+ */
665
877
  declare function deactivated(appKey: string): void;
666
878
 
667
879
  type ContainerType = HTMLElement | ShadowRoot;
@@ -763,29 +975,101 @@ declare class MicroInstanceModel implements BaseModel {
763
975
  private needsReload;
764
976
  }
765
977
 
978
+ /**
979
+ * 根据配置模式加载相应的应用或模块实例
980
+ * @description 统一的加载入口,根据模式参数决定加载应用还是模块实例
981
+ * @param props - 基础模型配置参数
982
+ * @returns Promise<BaseModel> - 返回加载的模型实例
983
+ */
766
984
  declare function load(props: IBaseModelProps): Promise<BaseModel>;
985
+ /**
986
+ * 加载微应用
987
+ * @description 加载或获取已存在的微应用实例,并启动应用
988
+ * @param props - 应用模型配置参数
989
+ * @returns Promise<MicroAppModel> - 返回微应用模型实例
990
+ */
767
991
  declare function loadApp(props: IAppModelProps): Promise<MicroAppModel>;
992
+ /**
993
+ * 加载模块实例
994
+ * @description 加载或获取已存在的模块实例,支持状态监听和异步等待
995
+ * @param props - 模块实例配置参数
996
+ * @returns Promise<MicroInstanceModel> - 返回模块实例模型
997
+ */
768
998
  declare function loadInstance(props: IJsModelProps): Promise<MicroInstanceModel>;
769
999
 
1000
+ /**
1001
+ * 挂载应用到指定容器
1002
+ * @description 将已加载的应用挂载到指定的 DOM 容器或 ShadowRoot 中
1003
+ * @template T - 导出实例的类型
1004
+ * @param appKey - 应用的唯一标识符
1005
+ * @param container - 挂载容器,可以是 HTMLElement 或 ShadowRoot(可选)
1006
+ * @param callback - 挂载完成后的回调函数(可选)
1007
+ * @returns void
1008
+ */
770
1009
  declare function mount<T>(appKey: string, container?: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
771
1010
 
1011
+ /**
1012
+ * 卸载并删除指定应用
1013
+ * @description 从缓存中完全删除指定的应用实例,释放相关资源
1014
+ * @param url - 应用的 URL 标识符,用于定位要删除的应用
1015
+ * @returns void
1016
+ */
772
1017
  declare function unload(url: string): void;
773
1018
 
1019
+ /**
1020
+ * 卸载指定应用
1021
+ * @description 卸载指定的应用实例,并在没有活跃应用时重置全局方法
1022
+ * @param appKey - 应用的唯一标识符
1023
+ * @returns void
1024
+ */
774
1025
  declare function unmount(appKey: string): void;
775
1026
 
776
1027
  /**
777
- * @param options 加载模块的参数
778
- * @description 预加载实例
1028
+ * 预加载模块实例
1029
+ * @description 在浏览器空闲时预加载指定的模块实例,提前准备资源以提升后续加载性能
1030
+ * @param options - 模块加载配置参数
1031
+ * @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
1032
+ * @returns void
1033
+ * @example
1034
+ * ```typescript
1035
+ * preLoadInstance({
1036
+ * name: 'my-module',
1037
+ * url: 'https://example.com/module.js'
1038
+ * });
1039
+ * ```
779
1040
  */
780
1041
  declare function preLoadInstance(options: IJsModelProps): void;
781
1042
  /**
782
- * @param options 加载应用的参数
783
- * @description 预加载应用
1043
+ * 预加载微应用
1044
+ * @description 在浏览器空闲时预加载指定的微应用,提前准备应用资源以提升后续加载性能
1045
+ * @param options - 应用加载配置参数
1046
+ * @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
1047
+ * @returns void
1048
+ * @example
1049
+ * ```typescript
1050
+ * preLoadApp({
1051
+ * name: 'my-app',
1052
+ * entry: 'https://example.com/app/'
1053
+ * });
1054
+ * ```
784
1055
  */
785
1056
  declare function preLoadApp(options: IAppModelProps): void;
786
1057
  /**
787
- * @param sourceList 要预加载的资源列表
788
- * @description 预加载资源
1058
+ * 预加载全局资源
1059
+ * @description 在浏览器空闲时预加载指定的全局资源列表,包括样式文件、脚本文件等
1060
+ * @param sourceList - 要预加载的资源列表,可以是单个资源或资源数组
1061
+ * @returns void
1062
+ * @example
1063
+ * ```typescript
1064
+ * // 预加载单个资源
1065
+ * preLoadSource('https://example.com/style.css');
1066
+ *
1067
+ * // 预加载多个资源
1068
+ * preLoadSource([
1069
+ * 'https://example.com/style.css',
1070
+ * 'https://example.com/script.js'
1071
+ * ]);
1072
+ * ```
789
1073
  */
790
1074
  declare function preLoadSource(sourceList: SourceType): void;
791
1075