@module-federation/bridge-react 0.0.0-next-20250925034616 → 0.0.0-perf-devtools-20260106124142

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 (59) hide show
  1. package/CHANGELOG.md +81 -3
  2. package/__tests__/bridge.spec.tsx +37 -14
  3. package/dist/base.cjs.js +29 -0
  4. package/dist/base.d.ts +311 -0
  5. package/dist/base.es.js +30 -0
  6. package/dist/{bridge-base-BwHtOqw_.mjs → bridge-base-CPSTBjEp.mjs} +30 -18
  7. package/dist/{bridge-base-Ds850AOx.js → bridge-base-RStDxH71.js} +30 -18
  8. package/dist/createHelpers-B_L612IN.js +190 -0
  9. package/dist/createHelpers-Ui5pt7je.mjs +191 -0
  10. package/dist/data-fetch-server-middleware.cjs.js +2 -2
  11. package/dist/data-fetch-server-middleware.es.js +2 -2
  12. package/dist/data-fetch-utils.cjs.js +2 -2
  13. package/dist/data-fetch-utils.es.js +8 -8
  14. package/dist/{index-eN2xRRXs.js → index-DRSBaSu3.js} +1 -1
  15. package/dist/{index-rAO0Wr0M.mjs → index-DyQNwY2M.mjs} +1 -1
  16. package/dist/index.cjs.js +11 -179
  17. package/dist/index.d.ts +31 -6
  18. package/dist/index.es.js +19 -186
  19. package/dist/{index.esm-Ju4RY-yW.js → index.esm-BWaKho-8.js} +108 -46
  20. package/dist/{index.esm-CtI0uQUR.mjs → index.esm-CPwSeCvw.mjs} +113 -51
  21. package/dist/{lazy-load-component-plugin-CvjXKaT7.js → lazy-load-component-plugin-BbKBABLx.js} +2 -2
  22. package/dist/{lazy-load-component-plugin-DoK4De8-.mjs → lazy-load-component-plugin-CHUcCRrF.mjs} +2 -2
  23. package/dist/lazy-load-component-plugin.cjs.js +2 -2
  24. package/dist/lazy-load-component-plugin.es.js +2 -2
  25. package/dist/lazy-utils.cjs.js +2 -2
  26. package/dist/lazy-utils.es.js +4 -4
  27. package/dist/{prefetch-pdZpIE7_.mjs → prefetch-CBBSKet3.mjs} +43 -141
  28. package/dist/{prefetch-BUT0GL7H.js → prefetch-DcwCyN6i.js} +43 -141
  29. package/dist/router-v5.cjs.js +1 -1
  30. package/dist/router-v5.es.js +1 -1
  31. package/dist/router-v6.cjs.js +1 -1
  32. package/dist/router-v6.es.js +1 -1
  33. package/dist/router-v7.cjs.js +83 -0
  34. package/dist/router-v7.d.ts +20 -0
  35. package/dist/router-v7.es.js +61 -0
  36. package/dist/router.cjs.js +1 -1
  37. package/dist/router.es.js +1 -1
  38. package/dist/{utils-VSOJTX_o.mjs → utils-dUgb9Jkm.mjs} +7 -7
  39. package/dist/{utils-vIpCrZmn.js → utils-tM9yE73c.js} +1 -1
  40. package/dist/v18.cjs.js +1 -1
  41. package/dist/v18.es.js +1 -1
  42. package/dist/v19.cjs.js +1 -1
  43. package/dist/v19.es.js +1 -1
  44. package/package.json +54 -10
  45. package/src/base.ts +50 -0
  46. package/src/index.ts +6 -1
  47. package/src/provider/versions/bridge-base.tsx +45 -17
  48. package/src/provider/versions/legacy.ts +2 -1
  49. package/src/remote/RemoteAppWrapper.tsx +108 -0
  50. package/src/remote/base-component/component.tsx +2 -0
  51. package/src/remote/base-component/create.tsx +23 -0
  52. package/src/remote/base-component/index.tsx +10 -0
  53. package/src/remote/createHelpers.tsx +130 -0
  54. package/src/remote/{component.tsx → router-component/component.tsx} +3 -110
  55. package/src/remote/router-component/create.tsx +23 -0
  56. package/src/remote/router-component/index.tsx +10 -0
  57. package/src/router/v7.tsx +75 -0
  58. package/vite.config.ts +25 -0
  59. package/src/remote/create.tsx +0 -103
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const ReactRouterDom$1 = require("react-router-dom/dist/index.js");
5
- const index = require("./index-eN2xRRXs.js");
5
+ const index = require("./index-DRSBaSu3.js");
6
6
  const ReactRouterDom = require("react-router-dom/dist/index.js");
7
7
  function _interopNamespaceDefault(e) {
8
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -1,6 +1,6 @@
1
1
  import React__default, { useContext } from "react";
2
2
  import * as ReactRouterDom$1 from "react-router-dom/dist/index.js";
3
- import { R as RouterContext, L as LoggerInstance } from "./index-rAO0Wr0M.mjs";
3
+ import { R as RouterContext, L as LoggerInstance } from "./index-DyQNwY2M.mjs";
4
4
  export * from "react-router-dom/dist/index.js";
5
5
  function WraperRouter(props) {
6
6
  const { basename, ...propsRes } = props;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const ReactRouterDom = require("react-router");
5
+ const index = require("./index-DRSBaSu3.js");
6
+ function _interopNamespaceDefault(e) {
7
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
+ if (e) {
9
+ for (const k in e) {
10
+ if (k !== "default") {
11
+ const d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: () => e[k]
15
+ });
16
+ }
17
+ }
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+ const ReactRouterDom__namespace = /* @__PURE__ */ _interopNamespaceDefault(ReactRouterDom);
23
+ function WraperRouter(props) {
24
+ const { basename, ...propsRes } = props;
25
+ const routerContextProps = React.useContext(index.RouterContext) || {};
26
+ index.LoggerInstance.debug(`WraperRouter info >>>`, {
27
+ ...routerContextProps,
28
+ routerContextProps,
29
+ WraperRouterProps: props
30
+ });
31
+ if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
32
+ return /* @__PURE__ */ React.createElement(
33
+ ReactRouterDom__namespace.MemoryRouter,
34
+ {
35
+ ...props,
36
+ initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
37
+ }
38
+ );
39
+ }
40
+ return /* @__PURE__ */ React.createElement(
41
+ ReactRouterDom__namespace.BrowserRouter,
42
+ {
43
+ ...propsRes,
44
+ basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
45
+ }
46
+ );
47
+ }
48
+ function WraperRouterProvider(props) {
49
+ const { router, ...propsRes } = props;
50
+ const routerContextProps = React.useContext(index.RouterContext) || {};
51
+ const routers = router.routes;
52
+ index.LoggerInstance.debug(`WraperRouterProvider info >>>`, {
53
+ ...routerContextProps,
54
+ routerContextProps,
55
+ WraperRouterProviderProps: props,
56
+ router
57
+ });
58
+ const RouterProvider = ReactRouterDom__namespace["RouterProvider"];
59
+ const createMemoryRouter = ReactRouterDom__namespace["createMemoryRouter"];
60
+ const createBrowserRouter = ReactRouterDom__namespace["createBrowserRouter"];
61
+ if (routerContextProps.memoryRoute) {
62
+ const MemeoryRouterInstance = createMemoryRouter(routers, {
63
+ initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
64
+ });
65
+ return /* @__PURE__ */ React.createElement(RouterProvider, { router: MemeoryRouterInstance });
66
+ } else {
67
+ const BrowserRouterInstance = createBrowserRouter(routers, {
68
+ // In host app, the routerContextProps is {}, so we should use router.basename as fallback
69
+ basename: routerContextProps.basename || router.basename,
70
+ future: router.future,
71
+ window: router.window
72
+ });
73
+ return /* @__PURE__ */ React.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
74
+ }
75
+ }
76
+ exports.BrowserRouter = WraperRouter;
77
+ exports.RouterProvider = WraperRouterProvider;
78
+ Object.keys(ReactRouterDom).forEach((k) => {
79
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
80
+ enumerable: true,
81
+ get: () => ReactRouterDom[k]
82
+ });
83
+ });
@@ -0,0 +1,20 @@
1
+ import { default as default_2 } from 'react';
2
+ import * as ReactRouterDom from 'react-router';
3
+
4
+ export declare function BrowserRouter(props: Parameters<typeof ReactRouterDom.BrowserRouter>[0] | Parameters<typeof ReactRouterDom.MemoryRouter>[0]): default_2.JSX.Element;
5
+
6
+ export declare function RouterProvider(props: Parameters<typeof ReactRouterDom.RouterProvider>[0]): default_2.JSX.Element;
7
+
8
+
9
+ export * from "react-router";
10
+
11
+ export { }
12
+
13
+
14
+ declare module '@module-federation/runtime-core' {
15
+ interface ModuleFederation {
16
+ createLazyComponent<T, E extends keyof T>(options: Omit<CreateLazyComponentOptions<T, E>, 'instance'>): ReturnType<typeof createLazyComponent<T, E>>;
17
+ prefetch(options: Omit<PrefetchOptions, 'instance'>): ReturnType<typeof prefetch>;
18
+ collectSSRAssets(options: Omit<Parameters<typeof collectSSRAssets>[0], 'instance'>): ReturnType<typeof collectSSRAssets>;
19
+ }
20
+ }
@@ -0,0 +1,61 @@
1
+ import React__default, { useContext } from "react";
2
+ import * as ReactRouterDom from 'react-router/dist/production/index.js';
3
+ export * from 'react-router/dist/production/index.js';
4
+ import { R as RouterContext, L as LoggerInstance } from "./index-DyQNwY2M.mjs";
5
+ function WraperRouter(props) {
6
+ const { basename, ...propsRes } = props;
7
+ const routerContextProps = useContext(RouterContext) || {};
8
+ LoggerInstance.debug(`WraperRouter info >>>`, {
9
+ ...routerContextProps,
10
+ routerContextProps,
11
+ WraperRouterProps: props
12
+ });
13
+ if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
14
+ return /* @__PURE__ */ React__default.createElement(
15
+ ReactRouterDom.MemoryRouter,
16
+ {
17
+ ...props,
18
+ initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
19
+ }
20
+ );
21
+ }
22
+ return /* @__PURE__ */ React__default.createElement(
23
+ ReactRouterDom.BrowserRouter,
24
+ {
25
+ ...propsRes,
26
+ basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
27
+ }
28
+ );
29
+ }
30
+ function WraperRouterProvider(props) {
31
+ const { router, ...propsRes } = props;
32
+ const routerContextProps = useContext(RouterContext) || {};
33
+ const routers = router.routes;
34
+ LoggerInstance.debug(`WraperRouterProvider info >>>`, {
35
+ ...routerContextProps,
36
+ routerContextProps,
37
+ WraperRouterProviderProps: props,
38
+ router
39
+ });
40
+ const RouterProvider = ReactRouterDom["RouterProvider"];
41
+ const createMemoryRouter = ReactRouterDom["createMemoryRouter"];
42
+ const createBrowserRouter = ReactRouterDom["createBrowserRouter"];
43
+ if (routerContextProps.memoryRoute) {
44
+ const MemeoryRouterInstance = createMemoryRouter(routers, {
45
+ initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
46
+ });
47
+ return /* @__PURE__ */ React__default.createElement(RouterProvider, { router: MemeoryRouterInstance });
48
+ } else {
49
+ const BrowserRouterInstance = createBrowserRouter(routers, {
50
+ // In host app, the routerContextProps is {}, so we should use router.basename as fallback
51
+ basename: routerContextProps.basename || router.basename,
52
+ future: router.future,
53
+ window: router.window
54
+ });
55
+ return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
56
+ }
57
+ }
58
+ export {
59
+ WraperRouter as BrowserRouter,
60
+ WraperRouterProvider as RouterProvider
61
+ };
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const ReactRouterDom = require("react-router-dom/");
5
- const index = require("./index-eN2xRRXs.js");
5
+ const index = require("./index-DRSBaSu3.js");
6
6
  function _interopNamespaceDefault(e) {
7
7
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
8
  if (e) {
package/dist/router.es.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import React__default, { useContext } from "react";
2
2
  import * as ReactRouterDom from "react-router-dom/";
3
3
  export * from "react-router-dom/";
4
- import { R as RouterContext, L as LoggerInstance } from "./index-rAO0Wr0M.mjs";
4
+ import { R as RouterContext, L as LoggerInstance } from "./index-DyQNwY2M.mjs";
5
5
  function WrapperRouter(props) {
6
6
  const { basename, ...propsRes } = props;
7
7
  const routerContextProps = useContext(RouterContext) || {};
@@ -18,7 +18,7 @@ var __privateWrapper = (obj, member, setter, getter) => ({
18
18
  }
19
19
  });
20
20
  var _a, _constructing, _b, _c, _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _memoMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _LRUCache_instances, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, indexes_fn, rindexes_fn, isValidIndex_fn, evict_fn, backgroundFetch_fn, isBackgroundFetch_fn, connect_fn, moveToTail_fn, delete_fn, clear_fn;
21
- import { c as createLogger, i as isBrowserEnv, a as composeKeyWithSeparator } from "./index.esm-CtI0uQUR.mjs";
21
+ import { c as createLogger, d as isBrowserEnv, e as composeKeyWithSeparator } from "./index.esm-CPwSeCvw.mjs";
22
22
  const PLUGIN_IDENTIFIER = "[ Module Federation React ]";
23
23
  const DOWNGRADE_KEY = "_mfSSRDowngrade";
24
24
  const DATA_FETCH_FUNCTION = "_mfDataFetch";
@@ -1987,14 +1987,14 @@ export {
1987
1987
  flushDataFetch as J,
1988
1988
  LOAD_REMOTE_ERROR_PREFIX as L,
1989
1989
  MF_DATA_FETCH_STATUS as M,
1990
- loadDataFetchModule as a,
1991
- CacheTime as b,
1990
+ CacheTime as a,
1991
+ cache as b,
1992
1992
  configureCache as c,
1993
- generateKey as d,
1994
- cache as e,
1993
+ clearStore as d,
1994
+ getDataFetchMap as e,
1995
1995
  fetchData as f,
1996
- getDataFetchMap as g,
1997
- clearStore as h,
1996
+ generateKey as g,
1997
+ loadDataFetchModule as h,
1998
1998
  initDataFetchMap as i,
1999
1999
  isDataLoaderExpose as j,
2000
2000
  getDataFetchInfo as k,
@@ -19,7 +19,7 @@ var __privateWrapper = (obj, member, setter, getter) => ({
19
19
  }
20
20
  });
21
21
  var _a, _constructing, _b, _c, _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _memoMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _LRUCache_instances, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, indexes_fn, rindexes_fn, isValidIndex_fn, evict_fn, backgroundFetch_fn, isBackgroundFetch_fn, connect_fn, moveToTail_fn, delete_fn, clear_fn;
22
- const index_esm = require("./index.esm-Ju4RY-yW.js");
22
+ const index_esm = require("./index.esm-BWaKho-8.js");
23
23
  const PLUGIN_IDENTIFIER = "[ Module Federation React ]";
24
24
  const DOWNGRADE_KEY = "_mfSSRDowngrade";
25
25
  const DATA_FETCH_FUNCTION = "_mfDataFetch";
package/dist/v18.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const client = require("react-dom/client");
4
- const bridgeBase = require("./bridge-base-Ds850AOx.js");
4
+ const bridgeBase = require("./bridge-base-RStDxH71.js");
5
5
  function createReact18Root(container, options) {
6
6
  return client.createRoot(container, options);
7
7
  }
package/dist/v18.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createRoot } from "react-dom/client";
2
- import { c as createBaseBridgeComponent } from "./bridge-base-BwHtOqw_.mjs";
2
+ import { c as createBaseBridgeComponent } from "./bridge-base-CPSTBjEp.mjs";
3
3
  function createReact18Root(container, options) {
4
4
  return createRoot(container, options);
5
5
  }
package/dist/v19.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const client = require("react-dom/client");
4
- const bridgeBase = require("./bridge-base-Ds850AOx.js");
4
+ const bridgeBase = require("./bridge-base-RStDxH71.js");
5
5
  function createReact19Root(container, options) {
6
6
  return client.createRoot(container, options);
7
7
  }
package/dist/v19.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createRoot } from "react-dom/client";
2
- import { c as createBaseBridgeComponent } from "./bridge-base-BwHtOqw_.mjs";
2
+ import { c as createBaseBridgeComponent } from "./bridge-base-CPSTBjEp.mjs";
3
3
  function createReact19Root(container, options) {
4
4
  return createRoot(container, options);
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/bridge-react",
3
- "version": "0.0.0-next-20250925034616",
3
+ "version": "0.0.0-perf-devtools-20260106124142",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -21,6 +21,11 @@
21
21
  "import": "./dist/index.es.js",
22
22
  "require": "./dist/index.cjs.js"
23
23
  },
24
+ "./base": {
25
+ "types": "./dist/base.d.ts",
26
+ "import": "./dist/base.es.js",
27
+ "require": "./dist/base.cjs.js"
28
+ },
24
29
  "./v18": {
25
30
  "types": "./dist/v18.d.ts",
26
31
  "import": "./dist/v18.es.js",
@@ -39,7 +44,7 @@
39
44
  "./plugin": {
40
45
  "types": "./dist/plugin.d.ts",
41
46
  "import": "./dist/plugin.es.js",
42
- "require": "./dist/plugin.es.js"
47
+ "require": "./dist/plugin.cjs.js"
43
48
  },
44
49
  "./router-v5": {
45
50
  "types": "./dist/router-v5.d.ts",
@@ -51,6 +56,11 @@
51
56
  "import": "./dist/router-v6.es.js",
52
57
  "require": "./dist/router-v6.cjs.js"
53
58
  },
59
+ "./router-v7": {
60
+ "types": "./dist/router-v7.d.ts",
61
+ "import": "./dist/router-v7.es.js",
62
+ "require": "./dist/router-v7.cjs.js"
63
+ },
54
64
  "./lazy-utils": {
55
65
  "types": "./dist/lazy-utils.d.ts",
56
66
  "import": "./dist/lazy-utils.es.js",
@@ -76,7 +86,31 @@
76
86
  "typesVersions": {
77
87
  "*": {
78
88
  ".": [
79
- "./dist/types/index.d.ts"
89
+ "./dist/index.d.ts"
90
+ ],
91
+ "base": [
92
+ "./dist/base.d.ts"
93
+ ],
94
+ "v18": [
95
+ "./dist/v18.d.ts"
96
+ ],
97
+ "v19": [
98
+ "./dist/v19.d.ts"
99
+ ],
100
+ "router": [
101
+ "./dist/router.d.ts"
102
+ ],
103
+ "plugin": [
104
+ "./dist/plugin.d.ts"
105
+ ],
106
+ "router-v5": [
107
+ "./dist/router-v5.d.ts"
108
+ ],
109
+ "router-v6": [
110
+ "./dist/router-v6.d.ts"
111
+ ],
112
+ "router-v7": [
113
+ "./dist/router-v7.d.ts"
80
114
  ],
81
115
  "lazy-load-component-plugin": [
82
116
  "./dist/lazy-load-component-plugin.d.ts"
@@ -95,13 +129,22 @@
95
129
  "dependencies": {
96
130
  "react-error-boundary": "^4.1.2",
97
131
  "lru-cache": "^10.4.3",
98
- "@module-federation/sdk": "0.0.0-next-20250925034616",
99
- "@module-federation/bridge-shared": "0.0.0-next-20250925034616"
132
+ "@module-federation/bridge-shared": "0.0.0-perf-devtools-20260106124142",
133
+ "@module-federation/sdk": "0.0.0-perf-devtools-20260106124142"
100
134
  },
101
135
  "peerDependencies": {
102
136
  "react": ">=16.9.0",
103
137
  "react-dom": ">=16.9.0",
104
- "react-router-dom": "^4 || ^5 || ^6 || ^7"
138
+ "react-router-dom": "^4 || ^5 || ^6 || ^7",
139
+ "react-router": "^6 || ^7"
140
+ },
141
+ "peerDependenciesMeta": {
142
+ "react-router-dom": {
143
+ "optional": true
144
+ },
145
+ "react-router": {
146
+ "optional": true
147
+ }
105
148
  },
106
149
  "devDependencies": {
107
150
  "@testing-library/react": "15.0.7",
@@ -114,12 +157,13 @@
114
157
  "react": "18.3.1",
115
158
  "react-dom": "18.3.1",
116
159
  "react-router-dom": "6.22.3",
160
+ "react-router": "7.9.4",
117
161
  "typescript": "^5.2.2",
118
- "vite": "^5.4.18",
162
+ "vite": "^5.4.21",
119
163
  "vite-plugin-dts": "^4.3.0",
120
- "hono": "3.12.12",
121
- "@module-federation/runtime": "0.0.0-next-20250925034616",
122
- "@module-federation/runtime-core": "0.0.0-next-20250925034616"
164
+ "hono": "4.10.3",
165
+ "@module-federation/runtime-core": "0.0.0-perf-devtools-20260106124142",
166
+ "@module-federation/runtime": "0.0.0-perf-devtools-20260106124142"
123
167
  },
124
168
  "scripts": {
125
169
  "dev": "vite",
package/src/base.ts ADDED
@@ -0,0 +1,50 @@
1
+ export { createBridgeComponent } from './provider/versions/legacy';
2
+
3
+ // Export router-free versions of remote component creators
4
+ export {
5
+ createRemoteComponent,
6
+ createRemoteAppComponent,
7
+ } from './remote/base-component';
8
+ export type { LazyRemoteComponentInfo } from './remote/base-component';
9
+
10
+ // Export all lazy loading and data fetching utilities (no router dependencies)
11
+ export {
12
+ ERROR_TYPE,
13
+ createLazyComponent,
14
+ collectSSRAssets,
15
+ callDataFetch,
16
+ setSSREnv,
17
+ autoFetchDataPlugin,
18
+ CacheSize,
19
+ CacheTime,
20
+ configureCache,
21
+ generateKey,
22
+ cache,
23
+ revalidateTag,
24
+ clearStore,
25
+ prefetch,
26
+ } from './lazy';
27
+
28
+ export { lazyLoadComponentPlugin } from './plugins/lazy-load-component-plugin';
29
+
30
+ // Export all types
31
+ export type { CreateRootOptions, Root } from './provider/versions/legacy';
32
+ export type {
33
+ ProviderParams,
34
+ ProviderFnParams,
35
+ RootType,
36
+ DestroyParams,
37
+ RenderParams,
38
+ RemoteComponentParams,
39
+ RenderFnParams,
40
+ RemoteComponentProps,
41
+ RemoteModule,
42
+ } from './types';
43
+ export type {
44
+ DataFetchParams,
45
+ NoSSRRemoteInfo,
46
+ CollectSSRAssetsOptions,
47
+ CreateLazyComponentOptions,
48
+ CacheStatus,
49
+ CacheStatsInfo,
50
+ } from './lazy';
package/src/index.ts CHANGED
@@ -6,7 +6,8 @@ export { createBridgeComponent } from './provider/versions/legacy';
6
6
  export {
7
7
  createRemoteComponent,
8
8
  createRemoteAppComponent,
9
- } from './remote/create';
9
+ } from './remote/router-component';
10
+ export type { LazyRemoteComponentInfo } from './remote/router-component';
10
11
  export {
11
12
  ERROR_TYPE,
12
13
  createLazyComponent,
@@ -34,6 +35,10 @@ export type {
34
35
  RootType,
35
36
  DestroyParams,
36
37
  RenderParams,
38
+ RemoteComponentParams,
39
+ RenderFnParams,
40
+ RemoteComponentProps,
41
+ RemoteModule,
37
42
  } from './types';
38
43
  export type {
39
44
  DataFetchParams,
@@ -43,6 +43,38 @@ export function createBaseBridgeComponent<T>({
43
43
  );
44
44
  };
45
45
 
46
+ const DefaultFallback = ({ error }: FallbackProps) => (
47
+ <div role="alert">
48
+ <p>Something went wrong:</p>
49
+ <pre style={{ color: 'red' }}>{error.message}</pre>
50
+ </div>
51
+ );
52
+
53
+ const BridgeWrapper = ({
54
+ basename,
55
+ moduleName,
56
+ memoryRoute,
57
+ propsInfo,
58
+ fallback,
59
+ }: {
60
+ basename?: string;
61
+ moduleName?: string;
62
+ memoryRoute?: any;
63
+ propsInfo: T;
64
+ fallback?: React.ComponentType<FallbackProps>;
65
+ }) => (
66
+ <ErrorBoundary FallbackComponent={fallback || DefaultFallback}>
67
+ <RawComponent
68
+ appInfo={{
69
+ moduleName,
70
+ basename,
71
+ memoryRoute,
72
+ }}
73
+ propsInfo={propsInfo}
74
+ />
75
+ </ErrorBoundary>
76
+ );
77
+
46
78
  return {
47
79
  async render(info: RenderParams) {
48
80
  LoggerInstance.debug(`createBridgeComponent render Info`, info);
@@ -65,23 +97,19 @@ export function createBaseBridgeComponent<T>({
65
97
  instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info) || {};
66
98
 
67
99
  const rootComponentWithErrorBoundary = (
68
- <ErrorBoundary
69
- FallbackComponent={fallback as React.ComponentType<FallbackProps>}
70
- >
71
- <RawComponent
72
- appInfo={{
73
- moduleName,
100
+ <BridgeWrapper
101
+ basename={basename}
102
+ moduleName={moduleName}
103
+ memoryRoute={memoryRoute}
104
+ fallback={fallback as React.ComponentType<FallbackProps>}
105
+ propsInfo={
106
+ {
107
+ ...propsInfo,
74
108
  basename,
75
- memoryRoute,
76
- }}
77
- propsInfo={
78
- {
79
- ...propsInfo,
80
- ...(beforeBridgeRenderRes as any)?.extraProps,
81
- } as T
82
- }
83
- />
84
- </ErrorBoundary>
109
+ ...(beforeBridgeRenderRes as any)?.extraProps,
110
+ } as T
111
+ }
112
+ />
85
113
  );
86
114
 
87
115
  if (bridgeInfo.render) {
@@ -111,7 +139,7 @@ export function createBaseBridgeComponent<T>({
111
139
  if ('unmount' in root) {
112
140
  root.unmount();
113
141
  } else {
114
- console.warn('Root does not have unmount method');
142
+ LoggerInstance.warn('Root does not have unmount method');
115
143
  }
116
144
  rootMap.delete(dom);
117
145
  }
@@ -5,6 +5,7 @@
5
5
  import type { ProviderFnParams } from '../../types';
6
6
  import { createBaseBridgeComponent } from './bridge-base';
7
7
  import ReactDOM from 'react-dom';
8
+ import { LoggerInstance } from '../../utils';
8
9
 
9
10
  export interface CreateRootOptions {
10
11
  identifierPrefix?: string;
@@ -58,7 +59,7 @@ export function createReact16Or17Root(
58
59
  * Provide warning for React 18
59
60
  */
60
61
  if (isReact18) {
61
- console.warn(
62
+ LoggerInstance.warn(
62
63
  `[Bridge-React] React 18 detected in legacy mode. ` +
63
64
  `For better compatibility, please use the version-specific import: ` +
64
65
  `import { createBridgeComponent } from '@module-federation/bridge-react/v18'`,