@module-federation/bridge-vue3 0.0.0-next-20240822090000 → 0.0.0-next-20240822101913

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/CHANGELOG.md CHANGED
@@ -1,11 +1,25 @@
1
1
  # @module-federation/bridge-vue3
2
2
 
3
- ## 0.0.0-next-20240822090000
3
+ ## 0.0.0-next-20240822101913
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - 3082116: feat: support module isolated reported
8
- - @module-federation/bridge-shared@0.0.0-next-20240822090000
8
+ - @module-federation/bridge-shared@0.0.0-next-20240822101913
9
+
10
+ ## 0.5.1
11
+
12
+ ### Patch Changes
13
+
14
+ - @module-federation/bridge-shared@0.5.1
15
+
16
+ ## 0.5.0
17
+
18
+ ### Patch Changes
19
+
20
+ - 49d6135: feat(@module-federation/bridge): enhance Bridge capabilities and fix some issues
21
+ - Updated dependencies [49d6135]
22
+ - @module-federation/bridge-shared@0.5.0
9
23
 
10
24
  ## 0.4.0
11
25
 
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("vue"),p=require("vue-router");function b(t){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const e=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(o,n,e.get?e:{enumerable:!0,get:()=>t[n]})}}return o.default=t,Object.freeze(o)}const h=b(u),d=b(p);var y=Object.defineProperty,v=(t,o,n)=>o in t?y(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,i=(t,o,n)=>(v(t,typeof o!="symbol"?o+"":o,n),n);class f{constructor(o){i(this,"name"),i(this,"isDebugEnabled"),i(this,"color"),this.name=o,this.isDebugEnabled=!1,this.color=this.stringToColor(o),typeof window<"u"&&typeof localStorage<"u"&&(this.isDebugEnabled=localStorage.getItem("debug")==="true"),typeof process<"u"&&process.env&&(this.isDebugEnabled=process.env.DEBUG==="true")}log(...o){var n,e;if(this.isDebugEnabled){const r=`color: ${this.color}; font-weight: bold`,m=`%c[${this.name}]`,s=((e=(n=new Error().stack)==null?void 0:n.split(`
2
+ `)[2])==null?void 0:e.trim())||"Stack information not available";typeof console<"u"&&console.debug&&console.debug(m,r,...o,`
3
+ (${s})`)}}stringToColor(o){let n=0;for(let r=0;r<o.length;r++)n=o.charCodeAt(r)+((n<<5)-n);let e="#";for(let r=0;r<3;r++){const m=n>>r*8&255;e+=("00"+m.toString(16)).substr(-2)}return e}}function R(){const t=new PopStateEvent("popstate",{state:window.history.state});window.dispatchEvent(t)}const c=new f("vue3-bridge");function C(t){let o;const n=new Map;return()=>(o||(o={__APP_VERSION__:"0.5.1",render(e){c.log("createBridgeComponent render Info",e);const r=h.createApp(t.rootComponent);n.set(e.dom,r);const m=t.appOptions({basename:e.basename,memoryRoute:e.memoryRoute}),s=e.memoryRoute?d.createMemoryHistory(e.basename):d.createWebHistory(e.basename),a=d.createRouter({...m.router.options,history:s,routes:m.router.getRoutes()});c.log("createBridgeComponent render router info>>>",{name:e.moduleName,router:a}),e.memoryRoute?a.push(e.memoryRoute.entryPath).then(()=>{r.use(a),r.mount(e.dom)}):(r.use(a),r.mount(e.dom))},destroy(e){c.log("createBridgeComponent destroy Info",e);const r=n.get(e==null?void 0:e.dom);r==null||r.unmount()}}),o)}const _=u.defineComponent({name:"RemoteApp",props:{moduleName:String,basename:String,memoryRoute:Object,providerInfo:Function},setup(t){const o=u.ref(null),n=u.ref(null),e=u.ref(""),r=p.useRoute(),m=()=>{var g;const a=(g=t.providerInfo)==null?void 0:g.call(t);n.value=a;const l={name:t.moduleName,dom:o.value,basename:t.basename,memoryRoute:t.memoryRoute};c.log("createRemoteComponent LazyComponent render >>>",l),a.render(l)},s=u.watch(()=>r.path,a=>{a!==r.path&&m(),e.value!==""&&e.value!==a&&(c.log("createRemoteComponent dispatchPopstateEnv >>>",{...t,pathname:r.path}),R()),e.value=a});return u.onMounted(()=>{m()}),u.onBeforeUnmount(()=>{var a;c.log("createRemoteComponent LazyComponent destroy >>>",{...t}),s(),(a=n.value)==null||a.destroy({dom:o.value})}),()=>u.createVNode("div",{ref:o},null)}});function w(t){return u.defineAsyncComponent({__APP_VERSION__:"0.5.1",loader:async()=>{var l;const o=p.useRoute();let n="/";const e=(l=o.matched[0])==null?void 0:l.path;e&&(e.endsWith("/:pathMatch(.*)*")?n=e.replace("/:pathMatch(.*)*",""):n=o.matched[0].path);const r=(t==null?void 0:t.export)||"default";c.log("createRemoteComponent LazyComponent create >>>",{basename:n,info:t});const m=await t.loader(),s=m&&m[Symbol.for("mf_module_id")],a=m[r];if(c.log("createRemoteComponent LazyComponent loadRemote info >>>",{name:s,module:m,exportName:r,basename:n,route:o}),r in m&&typeof a=="function")return{render(){return u.h(_,{moduleName:s,...t,providerInfo:a,basename:n})}};throw new Error("module not found")},loadingComponent:{template:"<div>Loading...</div>"},errorComponent:{template:"<div>Error loading component</div>"},delay:200,timeout:3e3})}exports.createBridgeComponent=C;exports.createRemoteComponent=w;
@@ -0,0 +1,32 @@
1
+ import { ComponentPublicInstance } from 'vue';
2
+
3
+ export declare function createBridgeComponent(bridgeInfo: any): () => Provider;
4
+
5
+ export declare function createRemoteComponent(info: {
6
+ loader: () => Promise<any>;
7
+ export?: string;
8
+ }): new () => ComponentPublicInstance;
9
+
10
+ declare type Provider = {
11
+ __APP_VERSION__: string;
12
+ render(info: RenderFnParams): void;
13
+ destroy(info: {
14
+ dom: HTMLElement;
15
+ }): void;
16
+ };
17
+
18
+ declare interface ProviderParams {
19
+ moduleName?: string;
20
+ basename?: string;
21
+ memoryRoute?: {
22
+ entryPath: string;
23
+ };
24
+ style?: React.CSSProperties;
25
+ className?: string;
26
+ }
27
+
28
+ export declare interface RenderFnParams extends ProviderParams {
29
+ dom: HTMLElement;
30
+ }
31
+
32
+ export { }
@@ -0,0 +1,152 @@
1
+ import * as h from "vue";
2
+ import { defineComponent as y, ref as c, watch as b, onMounted as v, onBeforeUnmount as R, createVNode as f, defineAsyncComponent as C, h as w } from "vue";
3
+ import * as d from "vue-router";
4
+ import { useRoute as g } from "vue-router";
5
+ var E = Object.defineProperty, _ = (t, o, r) => o in t ? E(t, o, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[o] = r, p = (t, o, r) => (_(t, typeof o != "symbol" ? o + "" : o, r), r);
6
+ class S {
7
+ constructor(o) {
8
+ p(this, "name"), p(this, "isDebugEnabled"), p(this, "color"), this.name = o, this.isDebugEnabled = !1, this.color = this.stringToColor(o), typeof window < "u" && typeof localStorage < "u" && (this.isDebugEnabled = localStorage.getItem("debug") === "true"), typeof process < "u" && process.env && (this.isDebugEnabled = process.env.DEBUG === "true");
9
+ }
10
+ log(...o) {
11
+ var r, e;
12
+ if (this.isDebugEnabled) {
13
+ const n = `color: ${this.color}; font-weight: bold`, m = `%c[${this.name}]`, s = ((e = (r = new Error().stack) == null ? void 0 : r.split(`
14
+ `)[2]) == null ? void 0 : e.trim()) || "Stack information not available";
15
+ typeof console < "u" && console.debug && console.debug(m, n, ...o, `
16
+ (${s})`);
17
+ }
18
+ }
19
+ stringToColor(o) {
20
+ let r = 0;
21
+ for (let n = 0; n < o.length; n++)
22
+ r = o.charCodeAt(n) + ((r << 5) - r);
23
+ let e = "#";
24
+ for (let n = 0; n < 3; n++) {
25
+ const m = r >> n * 8 & 255;
26
+ e += ("00" + m.toString(16)).substr(-2);
27
+ }
28
+ return e;
29
+ }
30
+ }
31
+ function I() {
32
+ const t = new PopStateEvent("popstate", { state: window.history.state });
33
+ window.dispatchEvent(t);
34
+ }
35
+ const u = new S("vue3-bridge");
36
+ function B(t) {
37
+ let o;
38
+ const r = /* @__PURE__ */ new Map();
39
+ return () => (o || (o = {
40
+ __APP_VERSION__: "0.5.1",
41
+ render(e) {
42
+ u.log("createBridgeComponent render Info", e);
43
+ const n = h.createApp(t.rootComponent);
44
+ r.set(e.dom, n);
45
+ const m = t.appOptions({
46
+ basename: e.basename,
47
+ memoryRoute: e.memoryRoute
48
+ }), s = e.memoryRoute ? d.createMemoryHistory(e.basename) : d.createWebHistory(e.basename), a = d.createRouter({
49
+ ...m.router.options,
50
+ history: s,
51
+ routes: m.router.getRoutes()
52
+ });
53
+ u.log("createBridgeComponent render router info>>>", {
54
+ name: e.moduleName,
55
+ router: a
56
+ }), e.memoryRoute ? a.push(e.memoryRoute.entryPath).then(() => {
57
+ n.use(a), n.mount(e.dom);
58
+ }) : (n.use(a), n.mount(e.dom));
59
+ },
60
+ destroy(e) {
61
+ u.log("createBridgeComponent destroy Info", e);
62
+ const n = r.get(e == null ? void 0 : e.dom);
63
+ n == null || n.unmount();
64
+ }
65
+ }), o);
66
+ }
67
+ const N = /* @__PURE__ */ y({
68
+ name: "RemoteApp",
69
+ props: {
70
+ moduleName: String,
71
+ basename: String,
72
+ memoryRoute: Object,
73
+ providerInfo: Function
74
+ },
75
+ setup(t) {
76
+ const o = c(null), r = c(null), e = c(""), n = g(), m = () => {
77
+ var i;
78
+ const a = (i = t.providerInfo) == null ? void 0 : i.call(t);
79
+ r.value = a;
80
+ const l = {
81
+ name: t.moduleName,
82
+ dom: o.value,
83
+ basename: t.basename,
84
+ memoryRoute: t.memoryRoute
85
+ };
86
+ u.log("createRemoteComponent LazyComponent render >>>", l), a.render(l);
87
+ }, s = b(() => n.path, (a) => {
88
+ a !== n.path && m(), e.value !== "" && e.value !== a && (u.log("createRemoteComponent dispatchPopstateEnv >>>", {
89
+ ...t,
90
+ pathname: n.path
91
+ }), I()), e.value = a;
92
+ });
93
+ return v(() => {
94
+ m();
95
+ }), R(() => {
96
+ var a;
97
+ u.log("createRemoteComponent LazyComponent destroy >>>", {
98
+ ...t
99
+ }), s(), (a = r.value) == null || a.destroy({
100
+ dom: o.value
101
+ });
102
+ }), () => f("div", {
103
+ ref: o
104
+ }, null);
105
+ }
106
+ });
107
+ function D(t) {
108
+ return C({
109
+ __APP_VERSION__: "0.5.1",
110
+ //@ts-ignore
111
+ loader: async () => {
112
+ var l;
113
+ const o = g();
114
+ let r = "/";
115
+ const e = (l = o.matched[0]) == null ? void 0 : l.path;
116
+ e && (e.endsWith("/:pathMatch(.*)*") ? r = e.replace("/:pathMatch(.*)*", "") : r = o.matched[0].path);
117
+ const n = (t == null ? void 0 : t.export) || "default";
118
+ u.log("createRemoteComponent LazyComponent create >>>", {
119
+ basename: r,
120
+ info: t
121
+ });
122
+ const m = await t.loader(), s = m && m[Symbol.for("mf_module_id")], a = m[n];
123
+ if (u.log(
124
+ "createRemoteComponent LazyComponent loadRemote info >>>",
125
+ { name: s, module: m, exportName: n, basename: r, route: o }
126
+ ), n in m && typeof a == "function")
127
+ return {
128
+ render() {
129
+ return w(N, {
130
+ moduleName: s,
131
+ ...t,
132
+ providerInfo: a,
133
+ basename: r
134
+ });
135
+ }
136
+ };
137
+ throw new Error("module not found");
138
+ },
139
+ loadingComponent: {
140
+ template: "<div>Loading...</div>"
141
+ },
142
+ errorComponent: {
143
+ template: "<div>Error loading component</div>"
144
+ },
145
+ delay: 200,
146
+ timeout: 3e3
147
+ });
148
+ }
149
+ export {
150
+ B as createBridgeComponent,
151
+ D as createRemoteComponent
152
+ };
package/package.json CHANGED
@@ -1,20 +1,32 @@
1
1
  {
2
2
  "name": "@module-federation/bridge-vue3",
3
3
  "author": "zhouxiao <codingzx@gmail.com>",
4
- "version": "0.0.0-next-20240822090000",
4
+ "version": "0.0.0-next-20240822101913",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "type": "module",
9
- "main": "./dist/index.umd.js",
9
+ "main": "./dist/index.cjs.js",
10
10
  "module": "./dist/index.es.js",
11
11
  "types": "./dist/index.d.ts",
12
+ "files": [
13
+ "dist/",
14
+ "src/",
15
+ "CHANGELOG.md",
16
+ "LICENSE",
17
+ "package.json",
18
+ "project.json",
19
+ "README.md",
20
+ "tsconfig.json",
21
+ "tsconfig.node.json",
22
+ "vite.config.ts"
23
+ ],
12
24
  "peerDependencies": {
13
25
  "vue": "=3",
14
26
  "vue-router": "=3"
15
27
  },
16
28
  "dependencies": {
17
- "@module-federation/bridge-shared": "0.0.0-next-20240822090000"
29
+ "@module-federation/bridge-shared": "0.0.0-next-20240822101913"
18
30
  },
19
31
  "devDependencies": {
20
32
  "@vitejs/plugin-vue": "^5.0.4",
package/src/provider.ts CHANGED
@@ -4,11 +4,11 @@ import { RenderFnParams } from '@module-federation/bridge-shared';
4
4
  import { LoggerInstance } from './utils';
5
5
 
6
6
  declare const __APP_VERSION__: string;
7
- interface Provider {
7
+ type Provider = {
8
8
  __APP_VERSION__: string;
9
9
  render(info: RenderFnParams): void;
10
10
  destroy(info: { dom: HTMLElement }): void;
11
- }
11
+ };
12
12
 
13
13
  export function createBridgeComponent(bridgeInfo: any) {
14
14
  let provider: Provider;
@@ -36,7 +36,7 @@ export function createBridgeComponent(bridgeInfo: any) {
36
36
  });
37
37
 
38
38
  LoggerInstance.log(`createBridgeComponent render router info>>>`, {
39
- name: info.name,
39
+ name: info.moduleName,
40
40
  router,
41
41
  });
42
42
  // memory route Initializes the route
File without changes