@module-federation/bridge-react 0.0.0-next-20240819031127 → 0.0.0-next-20240819040425
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 +2 -2
- package/dist/index.cjs.js +6 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +6 -7
- 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 +23 -11
- package/src/router-v5.tsx +42 -0
- package/src/router-v6.tsx +73 -0
- package/vite.config.ts +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# @module-federation/bridge-react
|
|
2
2
|
|
|
3
|
-
## 0.0.0-next-
|
|
3
|
+
## 0.0.0-next-20240819040425
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
7
|
- 49d6135: feat(@module-federation/bridge): enhance Bridge capabilities and fix some issues
|
|
8
8
|
- Updated dependencies [49d6135]
|
|
9
|
-
- @module-federation/bridge-shared@0.0.0-next-
|
|
9
|
+
- @module-federation/bridge-shared@0.0.0-next-20240819040425
|
|
10
10
|
|
|
11
11
|
## 0.4.0
|
|
12
12
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -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
|
@@ -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.0.0-next-
|
|
3
|
+
"version": "0.0.0-next-20240819040425",
|
|
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.0.0-next-
|
|
38
|
+
"@module-federation/bridge-shared": "0.0.0-next-20240819040425"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=16.9.0",
|
package/src/create.tsx
CHANGED
|
@@ -99,15 +99,27 @@ export function createRemoteComponent<T, E extends keyof T>(info: {
|
|
|
99
99
|
: {}
|
|
100
100
|
: {};
|
|
101
101
|
|
|
102
|
-
return forwardRef((props: ProviderParams & RawComponentType, ref) => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
102
|
+
// return forwardRef((props: ProviderParams & RawComponentType, ref) => {
|
|
103
|
+
// const LazyComponent = createLazyRemoteComponent(info);
|
|
104
|
+
// return (
|
|
105
|
+
// // set ErrorBoundary for LazyComponent rendering error, usually caused by inner bridge logic render process
|
|
106
|
+
// <ErrorBoundary FallbackComponent={info.fallback}>
|
|
107
|
+
// <React.Suspense fallback={info.loading}>
|
|
108
|
+
// <LazyComponent {...props} ref={ref} />
|
|
109
|
+
// </React.Suspense>
|
|
110
|
+
// </ErrorBoundary>
|
|
111
|
+
// );
|
|
112
|
+
// });
|
|
113
|
+
return forwardRef<HTMLDivElement, ProviderParams & RawComponentType>(
|
|
114
|
+
(props, ref) => {
|
|
115
|
+
const LazyComponent = createLazyRemoteComponent(info);
|
|
116
|
+
return (
|
|
117
|
+
<ErrorBoundary FallbackComponent={info.fallback}>
|
|
118
|
+
<React.Suspense fallback={info.loading}>
|
|
119
|
+
<LazyComponent {...props} ref={ref} />
|
|
120
|
+
</React.Suspense>
|
|
121
|
+
</ErrorBoundary>
|
|
122
|
+
);
|
|
123
|
+
},
|
|
124
|
+
);
|
|
113
125
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
export * from 'react-router-dom/';
|
|
41
|
+
|
|
42
|
+
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(
|