@module-federation/bridge-react 0.5.0 → 0.5.1
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 +6 -0
- package/dist/index.cjs.js +7 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +7 -8
- package/dist/router-v5.cjs.js +46 -5
- package/dist/router-v5.d.ts +1 -3
- package/dist/router-v5.es.js +29 -5
- package/dist/router-v6.cjs.js +73 -5
- package/dist/router-v6.d.ts +2 -2
- package/dist/router-v6.es.js +57 -5
- package/package.json +8 -8
- package/src/create.tsx +12 -11
- package/src/remote/index.tsx +3 -2
- package/src/router-v5.tsx +44 -0
- package/src/router-v6.tsx +73 -0
- package/vite.config.ts +9 -9
package/CHANGELOG.md
CHANGED
package/dist/index.cjs.js
CHANGED
|
@@ -177,7 +177,7 @@ const RemoteAppWrapper = React.forwardRef(function(props, ref) {
|
|
|
177
177
|
}
|
|
178
178
|
);
|
|
179
179
|
};
|
|
180
|
-
RemoteApp2["__APP_VERSION__"] = "0.5.
|
|
180
|
+
RemoteApp2["__APP_VERSION__"] = "0.5.1";
|
|
181
181
|
return /* @__PURE__ */ React.createElement(RemoteApp2, null);
|
|
182
182
|
});
|
|
183
183
|
function withRouterData(WrappedComponent) {
|
|
@@ -295,13 +295,12 @@ function createLazyRemoteComponent(info) {
|
|
|
295
295
|
});
|
|
296
296
|
}
|
|
297
297
|
function createRemoteComponent(info) {
|
|
298
|
-
return React.forwardRef(
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
});
|
|
298
|
+
return React.forwardRef(
|
|
299
|
+
(props, ref) => {
|
|
300
|
+
const LazyComponent = createLazyRemoteComponent(info);
|
|
301
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { FallbackComponent: info.fallback }, /* @__PURE__ */ React.createElement(React.Suspense, { fallback: info.loading }, /* @__PURE__ */ React.createElement(LazyComponent, { ...props, ref })));
|
|
302
|
+
}
|
|
303
|
+
);
|
|
305
304
|
}
|
|
306
305
|
var client = {};
|
|
307
306
|
var m = ReactDOM;
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function createRemoteComponent<T, E extends keyof T>(info: {
|
|
|
19
19
|
loading: default_2.ReactNode;
|
|
20
20
|
fallback: ErrorBoundaryPropsWithComponent['FallbackComponent'];
|
|
21
21
|
export?: E;
|
|
22
|
-
}): default_2.ForwardRefExoticComponent<default_2.PropsWithoutRef<ProviderParams & ("__BRIDGE_FN__" extends keyof (T[E] extends (...args: any) => any ? ReturnType<T[E]> : never) ? (T[E] extends (...args: any) => any ? ReturnType<T[E]> : never)["__BRIDGE_FN__"] extends (...args: any) => any ? Parameters<(T[E] extends (...args: any) => any ? ReturnType<T[E]> : never)["__BRIDGE_FN__"]>[0] : {} : {})> & default_2.RefAttributes<
|
|
22
|
+
}): default_2.ForwardRefExoticComponent<default_2.PropsWithoutRef<ProviderParams & ("__BRIDGE_FN__" extends keyof (T[E] extends (...args: any) => any ? ReturnType<T[E]> : never) ? (T[E] extends (...args: any) => any ? ReturnType<T[E]> : never)["__BRIDGE_FN__"] extends (...args: any) => any ? Parameters<(T[E] extends (...args: any) => any ? ReturnType<T[E]> : never)["__BRIDGE_FN__"]>[0] : {} : {})> & default_2.RefAttributes<HTMLDivElement>>;
|
|
23
23
|
|
|
24
24
|
declare type ErrorBoundaryPropsWithComponent = ErrorBoundarySharedProps & {
|
|
25
25
|
fallback?: never;
|
package/dist/index.es.js
CHANGED
|
@@ -158,7 +158,7 @@ const RemoteAppWrapper = forwardRef(function(props, ref) {
|
|
|
158
158
|
}
|
|
159
159
|
);
|
|
160
160
|
};
|
|
161
|
-
RemoteApp2["__APP_VERSION__"] = "0.5.
|
|
161
|
+
RemoteApp2["__APP_VERSION__"] = "0.5.1";
|
|
162
162
|
return /* @__PURE__ */ React__default.createElement(RemoteApp2, null);
|
|
163
163
|
});
|
|
164
164
|
function withRouterData(WrappedComponent) {
|
|
@@ -276,13 +276,12 @@ function createLazyRemoteComponent(info) {
|
|
|
276
276
|
});
|
|
277
277
|
}
|
|
278
278
|
function createRemoteComponent(info) {
|
|
279
|
-
return forwardRef(
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
});
|
|
279
|
+
return forwardRef(
|
|
280
|
+
(props, ref) => {
|
|
281
|
+
const LazyComponent = createLazyRemoteComponent(info);
|
|
282
|
+
return /* @__PURE__ */ React__default.createElement(ErrorBoundary, { FallbackComponent: info.fallback }, /* @__PURE__ */ React__default.createElement(React__default.Suspense, { fallback: info.loading }, /* @__PURE__ */ React__default.createElement(LazyComponent, { ...props, ref })));
|
|
283
|
+
}
|
|
284
|
+
);
|
|
286
285
|
}
|
|
287
286
|
var client = {};
|
|
288
287
|
var m = ReactDOM;
|
package/dist/router-v5.cjs.js
CHANGED
|
@@ -1,11 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("react");
|
|
3
|
+
const React = require("react");
|
|
4
|
+
const ReactRouterDom$1 = require("react-router-dom/index.js");
|
|
5
|
+
const context = require("./context--mtFt3tp.cjs");
|
|
4
6
|
const ReactRouterDom = require("react-router-dom/index.js");
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
function _interopNamespaceDefault(e) {
|
|
8
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
|
+
if (e) {
|
|
10
|
+
for (const k in e) {
|
|
11
|
+
if (k !== "default") {
|
|
12
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: () => e[k]
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
n.default = e;
|
|
21
|
+
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
const ReactRouterDom__namespace = /* @__PURE__ */ _interopNamespaceDefault(ReactRouterDom$1);
|
|
24
|
+
function WraperRouter(props) {
|
|
25
|
+
const { basename, ...propsRes } = props;
|
|
26
|
+
const routerContextProps = React.useContext(context.RouterContext) || {};
|
|
27
|
+
context.LoggerInstance.log(`WraperRouter info >>>`, {
|
|
28
|
+
...routerContextProps,
|
|
29
|
+
routerContextProps,
|
|
30
|
+
WraperRouterProps: props
|
|
31
|
+
});
|
|
32
|
+
if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
|
|
33
|
+
return /* @__PURE__ */ React.createElement(
|
|
34
|
+
ReactRouterDom__namespace.MemoryRouter,
|
|
35
|
+
{
|
|
36
|
+
...props,
|
|
37
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return /* @__PURE__ */ React.createElement(
|
|
42
|
+
ReactRouterDom__namespace.BrowserRouter,
|
|
43
|
+
{
|
|
44
|
+
...propsRes,
|
|
45
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
exports.BrowserRouter = WraperRouter;
|
|
9
50
|
Object.keys(ReactRouterDom).forEach((k) => {
|
|
10
51
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
|
|
11
52
|
Object.defineProperty(exports, k, {
|
package/dist/router-v5.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { default as default_2 } from 'react';
|
|
2
|
-
import * as ReactRouterDom from 'react-router-dom/';
|
|
2
|
+
import * as ReactRouterDom from 'react-router-dom/index.js';
|
|
3
3
|
|
|
4
4
|
export declare function BrowserRouter(props: Parameters<typeof ReactRouterDom.BrowserRouter>[0] | Parameters<typeof ReactRouterDom.MemoryRouter>[0]): default_2.JSX.Element;
|
|
5
5
|
|
|
6
|
-
export declare function RouterProvider(props: Parameters<typeof ReactRouterDom.RouterProvider>[0]): default_2.JSX.Element;
|
|
7
|
-
|
|
8
6
|
|
|
9
7
|
export * from "react-router-dom/";
|
|
10
8
|
|
package/dist/router-v5.es.js
CHANGED
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
import "react";
|
|
1
|
+
import React__default, { useContext } from "react";
|
|
2
|
+
import * as ReactRouterDom$1 from "react-router-dom/index.js";
|
|
3
|
+
import { R as RouterContext, L as LoggerInstance } from "./context-Bw2PEwa6.js";
|
|
2
4
|
export * from "react-router-dom/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
function WraperRouter(props) {
|
|
6
|
+
const { basename, ...propsRes } = props;
|
|
7
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
8
|
+
LoggerInstance.log(`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$1.MemoryRouter,
|
|
16
|
+
{
|
|
17
|
+
...props,
|
|
18
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
23
|
+
ReactRouterDom$1.BrowserRouter,
|
|
24
|
+
{
|
|
25
|
+
...propsRes,
|
|
26
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
5
30
|
export {
|
|
6
|
-
BrowserRouter
|
|
7
|
-
RouterProvider
|
|
31
|
+
WraperRouter as BrowserRouter
|
|
8
32
|
};
|
package/dist/router-v6.cjs.js
CHANGED
|
@@ -1,11 +1,79 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("react");
|
|
3
|
+
const React = require("react");
|
|
4
4
|
const ReactRouterDom = require("react-router-dom/dist/index.js");
|
|
5
|
-
require("./context--mtFt3tp.cjs");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const context = require("./context--mtFt3tp.cjs");
|
|
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(context.RouterContext) || {};
|
|
26
|
+
context.LoggerInstance.log(`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(context.RouterContext) || {};
|
|
51
|
+
const routers = router.routes;
|
|
52
|
+
context.LoggerInstance.log(`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
|
+
basename: routerContextProps.basename,
|
|
69
|
+
future: router.future,
|
|
70
|
+
window: router.window
|
|
71
|
+
});
|
|
72
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.BrowserRouter = WraperRouter;
|
|
76
|
+
exports.RouterProvider = WraperRouterProvider;
|
|
9
77
|
Object.keys(ReactRouterDom).forEach((k) => {
|
|
10
78
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
|
|
11
79
|
Object.defineProperty(exports, k, {
|
package/dist/router-v6.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { default as default_2 } from 'react';
|
|
2
|
-
import * as ReactRouterDom from 'react-router-dom/';
|
|
2
|
+
import * as ReactRouterDom from 'react-router-dom/dist/index.js';
|
|
3
3
|
|
|
4
4
|
export declare function BrowserRouter(props: Parameters<typeof ReactRouterDom.BrowserRouter>[0] | Parameters<typeof ReactRouterDom.MemoryRouter>[0]): default_2.JSX.Element;
|
|
5
5
|
|
|
6
6
|
export declare function RouterProvider(props: Parameters<typeof ReactRouterDom.RouterProvider>[0]): default_2.JSX.Element;
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
export * from "react-router-dom/";
|
|
9
|
+
export * from "react-router-dom/dist/index.js";
|
|
10
10
|
|
|
11
11
|
export { }
|
package/dist/router-v6.es.js
CHANGED
|
@@ -1,8 +1,60 @@
|
|
|
1
|
-
import "react";
|
|
1
|
+
import React__default, { useContext } from "react";
|
|
2
|
+
import * as ReactRouterDom from "react-router-dom/dist/index.js";
|
|
2
3
|
export * from "react-router-dom/dist/index.js";
|
|
3
|
-
import "./context-Bw2PEwa6.js";
|
|
4
|
-
|
|
4
|
+
import { R as RouterContext, L as LoggerInstance } from "./context-Bw2PEwa6.js";
|
|
5
|
+
function WraperRouter(props) {
|
|
6
|
+
const { basename, ...propsRes } = props;
|
|
7
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
8
|
+
LoggerInstance.log(`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.log(`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
|
+
basename: routerContextProps.basename,
|
|
51
|
+
future: router.future,
|
|
52
|
+
window: router.window
|
|
53
|
+
});
|
|
54
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
5
57
|
export {
|
|
6
|
-
BrowserRouter,
|
|
7
|
-
RouterProvider
|
|
58
|
+
WraperRouter as BrowserRouter,
|
|
59
|
+
WraperRouterProvider as RouterProvider
|
|
8
60
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@module-federation/bridge-react",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -21,21 +21,21 @@
|
|
|
21
21
|
"require": "./dist/router.cjs.js"
|
|
22
22
|
},
|
|
23
23
|
"./router-v5": {
|
|
24
|
-
"types": "./dist/router.d.ts",
|
|
25
|
-
"import": "./dist/router.es.js",
|
|
26
|
-
"require": "./dist/router.cjs.js"
|
|
24
|
+
"types": "./dist/router-v5.d.ts",
|
|
25
|
+
"import": "./dist/router-v5.es.js",
|
|
26
|
+
"require": "./dist/router-v5.cjs.js"
|
|
27
27
|
},
|
|
28
28
|
"./router-v6": {
|
|
29
|
-
"types": "./dist/router.d.ts",
|
|
30
|
-
"import": "./dist/router.es.js",
|
|
31
|
-
"require": "./dist/router.cjs.js"
|
|
29
|
+
"types": "./dist/router-v6.d.ts",
|
|
30
|
+
"import": "./dist/router-v6.es.js",
|
|
31
|
+
"require": "./dist/router-v6.cjs.js"
|
|
32
32
|
},
|
|
33
33
|
"./*": "./*"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@loadable/component": "^5.16.4",
|
|
37
37
|
"react-error-boundary": "^4.0.13",
|
|
38
|
-
"@module-federation/bridge-shared": "0.5.
|
|
38
|
+
"@module-federation/bridge-shared": "0.5.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=16.9.0",
|
package/src/create.tsx
CHANGED
|
@@ -99,15 +99,16 @@ export function createRemoteComponent<T, E extends keyof T>(info: {
|
|
|
99
99
|
: {}
|
|
100
100
|
: {};
|
|
101
101
|
|
|
102
|
-
return forwardRef
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
return forwardRef<HTMLDivElement, ProviderParams & RawComponentType>(
|
|
103
|
+
(props, ref) => {
|
|
104
|
+
const LazyComponent = createLazyRemoteComponent(info);
|
|
105
|
+
return (
|
|
106
|
+
<ErrorBoundary FallbackComponent={info.fallback}>
|
|
107
|
+
<React.Suspense fallback={info.loading}>
|
|
108
|
+
<LazyComponent {...props} ref={ref} />
|
|
109
|
+
</React.Suspense>
|
|
110
|
+
</ErrorBoundary>
|
|
111
|
+
);
|
|
112
|
+
},
|
|
113
|
+
);
|
|
113
114
|
}
|
package/src/remote/index.tsx
CHANGED
|
@@ -52,10 +52,11 @@ const RemoteAppWrapper = forwardRef(function (
|
|
|
52
52
|
...resProps
|
|
53
53
|
} = props;
|
|
54
54
|
|
|
55
|
-
const rootRef: React.MutableRefObject<
|
|
55
|
+
const rootRef: React.MutableRefObject<HTMLDivElement | null> =
|
|
56
56
|
ref && 'current' in ref
|
|
57
|
-
? (ref as React.MutableRefObject<
|
|
57
|
+
? (ref as React.MutableRefObject<HTMLDivElement | null>)
|
|
58
58
|
: useRef(null);
|
|
59
|
+
|
|
59
60
|
const renderDom: React.MutableRefObject<HTMLElement | null> = useRef(null);
|
|
60
61
|
const providerInfoRef = useRef<any>(null);
|
|
61
62
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
// The upper alias react-router-dom$ into this file avoids the loop
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import * as ReactRouterDom from 'react-router-dom/index.js';
|
|
5
|
+
|
|
6
|
+
import { RouterContext } from './context';
|
|
7
|
+
import { LoggerInstance } from './utils';
|
|
8
|
+
|
|
9
|
+
function WraperRouter(
|
|
10
|
+
props:
|
|
11
|
+
| Parameters<typeof ReactRouterDom.BrowserRouter>[0]
|
|
12
|
+
| Parameters<typeof ReactRouterDom.MemoryRouter>[0],
|
|
13
|
+
) {
|
|
14
|
+
const { basename, ...propsRes } = props;
|
|
15
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
16
|
+
|
|
17
|
+
LoggerInstance.log(`WraperRouter info >>>`, {
|
|
18
|
+
...routerContextProps,
|
|
19
|
+
routerContextProps,
|
|
20
|
+
WraperRouterProps: props,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
if (routerContextProps?.memoryRoute) {
|
|
24
|
+
return (
|
|
25
|
+
<ReactRouterDom.MemoryRouter
|
|
26
|
+
{...props}
|
|
27
|
+
initialEntries={[routerContextProps?.memoryRoute.entryPath]}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return (
|
|
32
|
+
<ReactRouterDom.BrowserRouter
|
|
33
|
+
{...propsRes}
|
|
34
|
+
basename={routerContextProps?.basename || basename}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
// cause export directly from react-router-dom/index.js will cause build falied.
|
|
41
|
+
// it will be replace by react-router-dom/index.js in building phase
|
|
42
|
+
export * from 'react-router-dom/';
|
|
43
|
+
|
|
44
|
+
export { WraperRouter as BrowserRouter };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
// The upper alias react-router-dom$ into this file avoids the loop
|
|
3
|
+
import * as ReactRouterDom from 'react-router-dom/dist/index.js';
|
|
4
|
+
|
|
5
|
+
import { RouterContext } from './context';
|
|
6
|
+
import { LoggerInstance } from './utils';
|
|
7
|
+
|
|
8
|
+
function WraperRouter(
|
|
9
|
+
props:
|
|
10
|
+
| Parameters<typeof ReactRouterDom.BrowserRouter>[0]
|
|
11
|
+
| Parameters<typeof ReactRouterDom.MemoryRouter>[0],
|
|
12
|
+
) {
|
|
13
|
+
const { basename, ...propsRes } = props;
|
|
14
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
15
|
+
|
|
16
|
+
LoggerInstance.log(`WraperRouter info >>>`, {
|
|
17
|
+
...routerContextProps,
|
|
18
|
+
routerContextProps,
|
|
19
|
+
WraperRouterProps: props,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
if (routerContextProps?.memoryRoute) {
|
|
23
|
+
return (
|
|
24
|
+
<ReactRouterDom.MemoryRouter
|
|
25
|
+
{...props}
|
|
26
|
+
initialEntries={[routerContextProps?.memoryRoute.entryPath]}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return (
|
|
31
|
+
<ReactRouterDom.BrowserRouter
|
|
32
|
+
{...propsRes}
|
|
33
|
+
basename={routerContextProps?.basename || basename}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function WraperRouterProvider(
|
|
39
|
+
props: Parameters<typeof ReactRouterDom.RouterProvider>[0],
|
|
40
|
+
) {
|
|
41
|
+
const { router, ...propsRes } = props;
|
|
42
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
43
|
+
const routers = router.routes;
|
|
44
|
+
LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
45
|
+
...routerContextProps,
|
|
46
|
+
routerContextProps,
|
|
47
|
+
WraperRouterProviderProps: props,
|
|
48
|
+
router,
|
|
49
|
+
});
|
|
50
|
+
const RouterProvider = (ReactRouterDom as any)['Router' + 'Provider'];
|
|
51
|
+
const createMemoryRouter = (ReactRouterDom as any)['create' + 'MemoryRouter'];
|
|
52
|
+
const createBrowserRouter = (ReactRouterDom as any)[
|
|
53
|
+
'create' + 'BrowserRouter'
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
if (routerContextProps.memoryRoute) {
|
|
57
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
58
|
+
initialEntries: [routerContextProps?.memoryRoute.entryPath],
|
|
59
|
+
});
|
|
60
|
+
return <RouterProvider router={MemeoryRouterInstance} />;
|
|
61
|
+
} else {
|
|
62
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
63
|
+
basename: routerContextProps.basename,
|
|
64
|
+
future: router.future,
|
|
65
|
+
window: router.window,
|
|
66
|
+
});
|
|
67
|
+
return <RouterProvider {...propsRes} router={BrowserRouterInstance} />;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export * from 'react-router-dom/dist/index.js';
|
|
72
|
+
export { WraperRouter as BrowserRouter };
|
|
73
|
+
export { WraperRouterProvider as RouterProvider };
|
package/vite.config.ts
CHANGED
|
@@ -22,8 +22,8 @@ export default defineConfig({
|
|
|
22
22
|
entry: {
|
|
23
23
|
index: path.resolve(__dirname, 'src/index.ts'),
|
|
24
24
|
router: path.resolve(__dirname, 'src/router.tsx'),
|
|
25
|
-
'router-v5': path.resolve(__dirname, 'src/router.tsx'),
|
|
26
|
-
'router-v6': path.resolve(__dirname, 'src/router.tsx'),
|
|
25
|
+
'router-v5': path.resolve(__dirname, 'src/router-v5.tsx'),
|
|
26
|
+
'router-v6': path.resolve(__dirname, 'src/router-v6.tsx'),
|
|
27
27
|
},
|
|
28
28
|
formats: ['cjs', 'es'],
|
|
29
29
|
fileName: (format, entryName) => `${entryName}.${format}.js`,
|
|
@@ -43,13 +43,13 @@ export default defineConfig({
|
|
|
43
43
|
generateBundle(options, bundle) {
|
|
44
44
|
for (const fileName in bundle) {
|
|
45
45
|
const chunk = bundle[fileName];
|
|
46
|
-
if (fileName.includes('router-v6') && chunk.type === 'chunk') {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
46
|
+
// if (fileName.includes('router-v6') && chunk.type === 'chunk') {
|
|
47
|
+
// chunk.code = chunk.code.replace(
|
|
48
|
+
// // Match 'react-router-dom/' followed by single quotes, double quotes, or backticks, replacing only 'react-router-dom/' to react-router-v6 dist file structure
|
|
49
|
+
// /react-router-dom\/(?=[\'\"\`])/g,
|
|
50
|
+
// 'react-router-dom/dist/index.js',
|
|
51
|
+
// );
|
|
52
|
+
// }
|
|
53
53
|
|
|
54
54
|
if (fileName.includes('router-v5') && chunk.type === 'chunk') {
|
|
55
55
|
chunk.code = chunk.code.replace(
|