@fulgurjs/federation 5.2.5 → 5.3.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 (101) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/DESIGN.md +7 -0
  3. package/README.en.md +86 -4
  4. package/README.md +125 -3
  5. package/dist/bridge-app-react.cjs +185 -0
  6. package/dist/bridge-app-react.d.cts +37 -0
  7. package/dist/bridge-app-react.d.ts +37 -0
  8. package/dist/bridge-app-react.js +115 -0
  9. package/dist/bridge-app-vue.cjs +111 -0
  10. package/dist/bridge-app-vue.d.cts +34 -0
  11. package/dist/bridge-app-vue.d.ts +34 -0
  12. package/dist/bridge-app-vue.js +51 -0
  13. package/dist/bridge-core-6uLJiMVa.d.ts +42 -0
  14. package/dist/bridge-core.cjs +224 -0
  15. package/dist/bridge-core.d.cts +51 -0
  16. package/dist/bridge-core.d.ts +51 -0
  17. package/dist/bridge-core.js +21 -0
  18. package/dist/bridge-errors.cjs +114 -0
  19. package/dist/bridge-errors.d.cts +36 -0
  20. package/dist/bridge-errors.d.ts +36 -0
  21. package/dist/bridge-errors.js +15 -0
  22. package/dist/bridge-host-react-C55RmGll.d.ts +35 -0
  23. package/dist/bridge-host-react.cjs +392 -0
  24. package/dist/bridge-host-react.d.cts +45 -0
  25. package/dist/bridge-host-react.d.ts +45 -0
  26. package/dist/bridge-host-react.js +183 -0
  27. package/dist/bridge-host-vue-BAxDKqGH.d.ts +32 -0
  28. package/dist/bridge-host-vue.cjs +426 -0
  29. package/dist/bridge-host-vue.d.cts +39 -0
  30. package/dist/bridge-host-vue.d.ts +39 -0
  31. package/dist/bridge-host-vue.js +211 -0
  32. package/dist/bridge-react.d.ts +12 -0
  33. package/dist/bridge-react.js +3 -0
  34. package/dist/bridge-vue.d.ts +8 -0
  35. package/dist/bridge-vue.js +3 -0
  36. package/dist/bridge.d.ts +16 -0
  37. package/dist/bridge.js +5 -0
  38. package/dist/chunk-E55P4TIY.js +76 -0
  39. package/dist/chunk-EH34L46P.js +207 -0
  40. package/dist/chunk-FVYGSLAQ.js +179 -0
  41. package/dist/chunk-LWJBHUJQ.js +114 -0
  42. package/dist/chunk-OF2JCXTZ.js +15 -0
  43. package/dist/chunk-TSYLDY6H.js +64 -0
  44. package/dist/chunk-UJFCPQGN.js +1210 -0
  45. package/dist/context.js +8 -64
  46. package/dist/index.cjs +84 -8
  47. package/dist/index.js +84 -8
  48. package/dist/react.d.ts +44 -2
  49. package/dist/react.js +2 -0
  50. package/dist/runtime-entry.d.ts +41 -2
  51. package/dist/runtime-entry.js +1 -1
  52. package/dist/runtime.js +1 -1
  53. package/dist/vue.js +2 -0
  54. package/docs/webpack-mf-/345/257/271/347/205/247/344/270/216/347/274/272/345/217/243.md +1 -1
  55. package/docs//350/277/201/347/247/273/346/214/207/345/215/227.md +1 -1
  56. package/examples/README.en.md +20 -0
  57. package/examples/README.md +20 -0
  58. package/examples/bridge/README.md +36 -0
  59. package/examples/bridge/react-host/README.md +23 -0
  60. package/examples/bridge/react-host/fulgurjs.config.ts +20 -0
  61. package/examples/bridge/react-host/index.html +11 -0
  62. package/examples/bridge/react-host/package-lock.json +2457 -0
  63. package/examples/bridge/react-host/package.json +24 -0
  64. package/examples/bridge/react-host/src/env.d.ts +7 -0
  65. package/examples/bridge/react-host/src/host-session.ts +26 -0
  66. package/examples/bridge/react-host/src/main.tsx +62 -0
  67. package/examples/bridge/react-host/tsconfig.json +13 -0
  68. package/examples/bridge/react-host/vite.config.ts +9 -0
  69. package/examples/bridge/react-remote/README.md +20 -0
  70. package/examples/bridge/react-remote/fulgurjs.config.ts +17 -0
  71. package/examples/bridge/react-remote/index.html +11 -0
  72. package/examples/bridge/react-remote/package-lock.json +2382 -0
  73. package/examples/bridge/react-remote/package.json +24 -0
  74. package/examples/bridge/react-remote/src/bridge.tsx +66 -0
  75. package/examples/bridge/react-remote/src/env.d.ts +7 -0
  76. package/examples/bridge/react-remote/src/main.tsx +7 -0
  77. package/examples/bridge/react-remote/tsconfig.json +13 -0
  78. package/examples/bridge/react-remote/vite.config.ts +9 -0
  79. package/examples/bridge/vue-host/README.md +24 -0
  80. package/examples/bridge/vue-host/fulgurjs.config.ts +22 -0
  81. package/examples/bridge/vue-host/index.html +11 -0
  82. package/examples/bridge/vue-host/package-lock.json +1885 -0
  83. package/examples/bridge/vue-host/package.json +24 -0
  84. package/examples/bridge/vue-host/src/App.vue +70 -0
  85. package/examples/bridge/vue-host/src/env.d.ts +7 -0
  86. package/examples/bridge/vue-host/src/host-session.ts +29 -0
  87. package/examples/bridge/vue-host/src/main.ts +4 -0
  88. package/examples/bridge/vue-host/tsconfig.json +13 -0
  89. package/examples/bridge/vue-host/vite.config.ts +9 -0
  90. package/examples/bridge/vue-remote/README.md +19 -0
  91. package/examples/bridge/vue-remote/fulgurjs.config.ts +16 -0
  92. package/examples/bridge/vue-remote/index.html +11 -0
  93. package/examples/bridge/vue-remote/package-lock.json +1856 -0
  94. package/examples/bridge/vue-remote/package.json +21 -0
  95. package/examples/bridge/vue-remote/src/App.vue +12 -0
  96. package/examples/bridge/vue-remote/src/bridge.ts +57 -0
  97. package/examples/bridge/vue-remote/src/env.d.ts +7 -0
  98. package/examples/bridge/vue-remote/src/main.ts +15 -0
  99. package/examples/bridge/vue-remote/tsconfig.json +13 -0
  100. package/examples/bridge/vue-remote/vite.config.ts +9 -0
  101. package/package.json +43 -2
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "fulgurjs-demo-bridge-vue-remote",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite --port 5313 --strictPort",
8
+ "build": "vite build",
9
+ "preview": "vite preview --port 5313 --strictPort"
10
+ },
11
+ "dependencies": {
12
+ "@fulgurjs/federation": "5.3.0",
13
+ "vue": "^3.5.13",
14
+ "vue-router": "^4.5.0"
15
+ },
16
+ "devDependencies": {
17
+ "@vitejs/plugin-vue": "^5.2.1",
18
+ "typescript": "^5.8.0",
19
+ "vite": "^6.3.5"
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+
4
+ // 子应用自身的页面组件(独立运行态与桥接态共用)
5
+ const count = ref(0)
6
+ </script>
7
+
8
+ <template>
9
+ <div>
10
+ <button data-testid="demo-vue-counter" @click="count++">本地状态:{{ count }}</button>
11
+ </div>
12
+ </template>
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Vue 子应用桥接契约(./bridge expose 的默认导出,任务书 §3.3)。
3
+ *
4
+ * defineBridgeApp 工厂接收 props 快照,返回装配完整的 VueApp——
5
+ * 路由、状态库等插件在这里自行装配;挂载/卸载与按容器跟踪由契约负责。
6
+ */
7
+ import { createApp, defineComponent, h, ref } from 'vue'
8
+ import { createMemoryHistory, createRouter, RouterView, useRoute, useRouter } from 'vue-router'
9
+ import { defineBridgeApp } from '@fulgurjs/federation/runtime'
10
+
11
+ /** props 类型:appProps 由宿主传入(label + 稳定回调 onReady) */
12
+ export interface BridgeVueProps {
13
+ label?: string
14
+ onReady?: () => void
15
+ }
16
+
17
+ const Root = defineComponent({
18
+ name: 'BridgeVueRoot',
19
+ props: {
20
+ label: { type: String, default: '' },
21
+ onReady: { type: Function, default: undefined },
22
+ },
23
+ setup(props) {
24
+ const route = useRoute()
25
+ const router = useRouter()
26
+ const mountTime = ref(new Date().toLocaleTimeString())
27
+ props.onReady?.()
28
+ return () =>
29
+ h('div', { style: 'border:1px solid #42b883;border-radius:8px;padding:12px;font-family:sans-serif' }, [
30
+ h('p', { style: 'margin:0 0 6px;font-weight:600;color:#42b883' }, `Vue 子应用(挂载于 ${mountTime.value})`),
31
+ h('p', { 'data-testid': 'demo-vue-props', style: 'margin:0 0 6px' }, `appProps.label = ${props.label || '(未传)'}`),
32
+ h('p', { 'data-testid': 'demo-vue-route', style: 'margin:0 0 8px' }, `memory 路由:${String(route.path)}`),
33
+ h('nav', { style: 'margin-bottom:8px' }, [
34
+ h('button', { onClick: () => router.push('/'), style: 'margin-right:8px' }, '首页'),
35
+ h('button', { onClick: () => router.push('/about') }, '关于'),
36
+ ]),
37
+ h(RouterView),
38
+ ])
39
+ },
40
+ })
41
+
42
+ const HomePage = defineComponent({ setup: () => () => h('p', { 'data-testid': 'demo-vue-page' }, '页面:首页') })
43
+ const AboutPage = defineComponent({ setup: () => () => h('p', { 'data-testid': 'demo-vue-page' }, '页面:关于') })
44
+
45
+ export default defineBridgeApp((props) => {
46
+ const router = createRouter({
47
+ // 子应用内部用 memory 路由(v1 不与宿主 URL 同步,见 README §12)
48
+ history: createMemoryHistory(),
49
+ routes: [
50
+ { path: '/', component: HomePage },
51
+ { path: '/about', component: AboutPage },
52
+ ],
53
+ })
54
+ const app = createApp(Root, props)
55
+ app.use(router)
56
+ return app
57
+ })
@@ -0,0 +1,7 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ declare module '*.vue' {
4
+ import type { DefineComponent } from 'vue'
5
+ const component: DefineComponent<Record<string, never>, Record<string, never>, unknown>
6
+ export default component
7
+ }
@@ -0,0 +1,15 @@
1
+ import { createApp, defineComponent, h } from 'vue'
2
+ import App from './App.vue'
3
+
4
+ // 独立运行入口:单独开发/调试子应用自身时使用(渲染同一套页面组件)。
5
+ // 被桥接宿主消费时走 fulgurjs-remoteEntry.js 容器入口与 ./bridge 契约,与本文件无关。
6
+ const Standalone = defineComponent({
7
+ setup() {
8
+ return () =>
9
+ h('div', { style: 'font-family:sans-serif;padding:16px' }, [
10
+ h('h1', 'bridge-vue-remote(独立运行态)'),
11
+ h(App),
12
+ ])
13
+ },
14
+ })
15
+ createApp(Standalone).mount('#app')
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "strict": true,
7
+ "jsx": "preserve",
8
+ "skipLibCheck": true,
9
+ "noEmit": true,
10
+ "types": ["vite/client"]
11
+ },
12
+ "include": ["src", "fulgurjs.config.ts", "vite.config.ts"]
13
+ }
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from 'vite'
2
+ import vue from '@vitejs/plugin-vue'
3
+ import { federation } from '@fulgurjs/federation'
4
+ import fulgurjsConfig from './fulgurjs.config'
5
+
6
+ export default defineConfig(({ command }) => ({
7
+ base: command === 'build' ? '/bridge-vue-remote/' : undefined,
8
+ plugins: [vue(), federation(fulgurjsConfig)],
9
+ }))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fulgurjs/federation",
3
- "version": "5.2.5",
3
+ "version": "5.3.0",
4
4
  "type": "module",
5
5
  "description": "Vite Module Federation with full Webpack MF parity. Dev & production, no compromise.",
6
6
  "license": "MIT",
@@ -21,6 +21,18 @@
21
21
  "types": "./dist/react.d.ts",
22
22
  "import": "./dist/react.js"
23
23
  },
24
+ "./bridge": {
25
+ "types": "./dist/bridge.d.ts",
26
+ "import": "./dist/bridge.js"
27
+ },
28
+ "./bridge/vue": {
29
+ "types": "./dist/bridge-vue.d.ts",
30
+ "import": "./dist/bridge-vue.js"
31
+ },
32
+ "./bridge/react": {
33
+ "types": "./dist/bridge-react.d.ts",
34
+ "import": "./dist/bridge-react.js"
35
+ },
24
36
  "./package.json": "./package.json",
25
37
  "./internal/context.js": {
26
38
  "types": "./dist/context.d.ts",
@@ -41,6 +53,26 @@
41
53
  "types": "./dist/react-adapter.d.ts",
42
54
  "import": "./dist/react-adapter.js",
43
55
  "require": "./dist/react-adapter.cjs"
56
+ },
57
+ "./internal/bridge-core.js": {
58
+ "types": "./dist/bridge-core.d.ts",
59
+ "import": "./dist/bridge-core.js"
60
+ },
61
+ "./internal/bridge-app-vue.js": {
62
+ "types": "./dist/bridge-app-vue.d.ts",
63
+ "import": "./dist/bridge-app-vue.js"
64
+ },
65
+ "./internal/bridge-app-react.js": {
66
+ "types": "./dist/bridge-app-react.d.ts",
67
+ "import": "./dist/bridge-app-react.js"
68
+ },
69
+ "./internal/bridge-host-vue.js": {
70
+ "types": "./dist/bridge-host-vue.d.ts",
71
+ "import": "./dist/bridge-host-vue.js"
72
+ },
73
+ "./internal/bridge-host-react.js": {
74
+ "types": "./dist/bridge-host-react.d.ts",
75
+ "import": "./dist/bridge-host-react.js"
44
76
  }
45
77
  },
46
78
  "typesVersions": {
@@ -50,6 +82,15 @@
50
82
  ],
51
83
  "react": [
52
84
  "dist/react.d.ts"
85
+ ],
86
+ "bridge/vue": [
87
+ "dist/bridge-vue.d.ts"
88
+ ],
89
+ "bridge/react": [
90
+ "dist/bridge-react.d.ts"
91
+ ],
92
+ "bridge": [
93
+ "dist/bridge.d.ts"
53
94
  ]
54
95
  }
55
96
  },
@@ -67,7 +108,7 @@
67
108
  "docs/P5-vite7-8兼容矩阵.md"
68
109
  ],
69
110
  "scripts": {
70
- "build": "cp ../../README.md README.md && cp ../../README.en.md README.en.md && mkdir -p docs && cp ../../docs/迁移指南.md ../../docs/webpack-mf-对照与缺口.md ../../docs/沙箱边界审计.md ../../docs/P5-vite7-8兼容矩阵.md docs/ && cp ../../CHANGELOG.md CHANGELOG.md && cp ../../DESIGN.md DESIGN.md && rm -rf examples && cp -R ../../examples examples && find examples \\( -name node_modules -o -name dist -o -path '*/src/fulgurjs/types' \\) -exec rm -rf {} + && esbuild src/runtime/index.ts --bundle --format=esm --target=es2022 --minify --outfile=dist/runtime.js && node scripts/gen-runtime.mjs && tsup src/index.ts src/pages.ts src/vue-adapter.ts src/react-adapter.ts src/context.ts --format esm,cjs --dts --external vite --target node18 --clean && tsup src/runtime-entry.ts --format esm --dts --external vite,vue --target node18 && tsup src/react.ts --format esm --dts --external vite,react --target node18 && esbuild src/cli.ts --bundle --format=esm --target=node18 --platform=node --outfile=dist/cli.js && esbuild src/runtime/index.ts --bundle --format=esm --target=es2022 --minify --outfile=dist/runtime.js && node scripts/gen-runtime-entry.mjs && node scripts/check-gzip.mjs && node scripts/check-manual-codes.mjs",
111
+ "build": "cp ../../README.md README.md && cp ../../README.en.md README.en.md && mkdir -p docs && cp ../../docs/迁移指南.md ../../docs/webpack-mf-对照与缺口.md ../../docs/沙箱边界审计.md ../../docs/P5-vite7-8兼容矩阵.md docs/ && cp ../../CHANGELOG.md CHANGELOG.md && cp ../../DESIGN.md DESIGN.md && rm -rf examples && cp -R ../../examples examples && find examples \\( -name node_modules -o -name dist -o -path '*/src/fulgurjs/types' \\) -exec rm -rf {} + && esbuild src/runtime/index.ts --bundle --format=esm --target=es2022 --minify --outfile=dist/runtime.js && node scripts/gen-runtime.mjs && tsup src/index.ts src/pages.ts src/vue-adapter.ts src/react-adapter.ts src/context.ts src/bridge-core.ts src/bridge-errors.ts src/bridge-app-vue.ts src/bridge-app-react.ts src/bridge-host-vue.ts src/bridge-host-react.ts --format esm,cjs --dts --external vite --target node18 --clean && tsup src/runtime-entry.ts --format esm --dts --external vite,vue --target node18 && tsup src/react.ts --format esm --dts --external vite,react --target node18 && tsup src/bridge.ts src/bridge-vue.ts src/bridge-react.ts --format esm --dts --external vite,vue,react,react-dom --target node18 && esbuild src/cli.ts --bundle --format=esm --target=node18 --platform=node --outfile=dist/cli.js && esbuild src/runtime/index.ts --bundle --format=esm --target=es2022 --minify --outfile=dist/runtime.js && node scripts/gen-runtime-entry.mjs && node scripts/check-gzip.mjs && node scripts/check-manual-codes.mjs",
71
112
  "dev": "tsup --watch",
72
113
  "test": "vitest run",
73
114
  "typecheck": "tsc --noEmit",