@module-federation/bridge-vue3 0.8.4 → 0.8.5

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/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/module-federation/core",
8
8
  "directory": "packages/vue3-bridge"
9
9
  },
10
- "version": "0.8.4",
10
+ "version": "0.8.5",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
@@ -32,9 +32,9 @@
32
32
  "vue-router": "=3"
33
33
  },
34
34
  "dependencies": {
35
- "@module-federation/bridge-shared": "0.8.4",
36
- "@module-federation/sdk": "0.8.4",
37
- "@module-federation/runtime": "0.8.4"
35
+ "@module-federation/bridge-shared": "0.8.5",
36
+ "@module-federation/sdk": "0.8.5",
37
+ "@module-federation/runtime": "0.8.5"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@vitejs/plugin-vue": "^5.0.4",
package/src/provider.ts CHANGED
@@ -6,19 +6,33 @@ import { getInstance } from '@module-federation/runtime';
6
6
 
7
7
  declare const __APP_VERSION__: string;
8
8
 
9
- export function createBridgeComponent(bridgeInfo: any) {
9
+ type AddOptionsFnParams = {
10
+ app: Vue.App<Vue.Component>;
11
+ basename: RenderFnParams['basename'];
12
+ memoryRoute: RenderFnParams['memoryRoute'];
13
+ [key: string]: any;
14
+ };
15
+
16
+ export type ProviderFnParams = {
17
+ rootComponent: Vue.Component;
18
+ appOptions: (
19
+ params: AddOptionsFnParams,
20
+ ) => { router?: VueRouter.Router } | void;
21
+ };
22
+
23
+ export function createBridgeComponent(bridgeInfo: ProviderFnParams) {
10
24
  const rootMap = new Map();
11
25
  const instance = getInstance();
12
26
  return () => {
13
27
  return {
14
28
  __APP_VERSION__,
15
- render(info: RenderFnParams) {
29
+ async render(info: RenderFnParams) {
16
30
  LoggerInstance.log(`createBridgeComponent render Info`, info);
17
31
  const app = Vue.createApp(bridgeInfo.rootComponent);
18
32
  rootMap.set(info.dom, app);
19
33
 
20
34
  const beforeBridgeRenderRes =
21
- instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info) || {};
35
+ await instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info);
22
36
 
23
37
  const extraProps =
24
38
  beforeBridgeRenderRes &&
@@ -27,38 +41,38 @@ export function createBridgeComponent(bridgeInfo: any) {
27
41
  ? beforeBridgeRenderRes?.extraProps
28
42
  : {};
29
43
 
30
- const appOptions = bridgeInfo.appOptions({
44
+ const bridgeOptions = bridgeInfo.appOptions({
45
+ app,
31
46
  basename: info.basename,
32
47
  memoryRoute: info.memoryRoute,
33
48
  ...extraProps,
34
49
  });
35
50
 
36
- const history = info.memoryRoute
37
- ? VueRouter.createMemoryHistory(info.basename)
38
- : VueRouter.createWebHistory(info.basename);
51
+ if (bridgeOptions?.router) {
52
+ const history = info.memoryRoute
53
+ ? VueRouter.createMemoryHistory(info.basename)
54
+ : VueRouter.createWebHistory(info.basename);
39
55
 
40
- const router = VueRouter.createRouter({
41
- ...appOptions.router.options,
42
- history,
43
- routes: appOptions.router.getRoutes(),
44
- });
56
+ const router = VueRouter.createRouter({
57
+ ...bridgeOptions.router.options,
58
+ history,
59
+ routes: bridgeOptions.router.getRoutes(),
60
+ });
45
61
 
46
- LoggerInstance.log(`createBridgeComponent render router info>>>`, {
47
- name: info.moduleName,
48
- router,
49
- });
50
- // memory route Initializes the route
51
- if (info.memoryRoute) {
52
- router.push(info.memoryRoute.entryPath).then(() => {
53
- app.use(router);
54
- app.mount(info.dom);
62
+ LoggerInstance.log(`createBridgeComponent render router info>>>`, {
63
+ name: info.moduleName,
64
+ router,
55
65
  });
56
- } else {
66
+ // memory route Initializes the route
67
+ if (info.memoryRoute) {
68
+ await router.push(info.memoryRoute.entryPath);
69
+ }
70
+
57
71
  app.use(router);
58
- app.mount(info.dom);
59
72
  }
60
73
 
61
- instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info) || {};
74
+ app.mount(info.dom);
75
+ instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info);
62
76
  },
63
77
  destroy(info: { dom: HTMLElement }) {
64
78
  LoggerInstance.log(`createBridgeComponent destroy Info`, info);