@module-federation/bridge-react 0.0.0-next-20240718061842 → 0.0.0-next-20240718072411
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 +3 -2
- package/dist/index.cjs.js +37 -19
- package/dist/index.d.ts +8 -4
- package/dist/index.es.js +37 -19
- package/dist/router-v5.cjs.js +80 -0
- package/dist/router-v5.d.ts +8 -0
- package/dist/router-v5.es.js +63 -0
- package/dist/router-v6.cjs.js +87 -0
- package/dist/router-v6.d.ts +11 -0
- package/dist/router-v6.es.js +64 -0
- package/dist/router.cjs.js +7 -0
- package/dist/router.es.js +7 -0
- package/package.json +12 -2
- package/src/provider.tsx +37 -23
- package/src/router-v5.tsx +78 -0
- package/src/router-v6.tsx +76 -0
- package/src/router.tsx +9 -0
- package/vite.config.ts +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# @module-federation/bridge-react
|
|
2
2
|
|
|
3
|
-
## 0.0.0-next-
|
|
3
|
+
## 0.0.0-next-20240718072411
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- chore: bump next
|
|
8
|
+
- @module-federation/bridge-shared@0.0.0-next-20240718072411
|
|
8
9
|
|
|
9
10
|
## 0.2.6
|
|
10
11
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -307,32 +307,50 @@ function createBridgeComponent(bridgeInfo) {
|
|
|
307
307
|
return () => {
|
|
308
308
|
const rootMap = /* @__PURE__ */ new Map();
|
|
309
309
|
const RawComponent = (info) => {
|
|
310
|
-
const { appInfo, propsInfo } = info;
|
|
310
|
+
const { appInfo, propsInfo, ...restProps } = info;
|
|
311
311
|
const { name, memoryRoute, basename = "/" } = appInfo;
|
|
312
|
-
return /* @__PURE__ */ React__namespace.createElement(context.RouterContext.Provider, { value: { name, basename, memoryRoute } }, /* @__PURE__ */ React__namespace.createElement(bridgeInfo.rootComponent, { ...propsInfo, basename }));
|
|
312
|
+
return /* @__PURE__ */ React__namespace.createElement(context.RouterContext.Provider, { value: { name, basename, memoryRoute } }, /* @__PURE__ */ React__namespace.createElement(bridgeInfo.rootComponent, { ...propsInfo, basename, ...restProps }));
|
|
313
313
|
};
|
|
314
314
|
return {
|
|
315
|
-
render(info) {
|
|
315
|
+
async render(info) {
|
|
316
316
|
context.LoggerInstance.log(`createBridgeComponent render Info`, info);
|
|
317
317
|
const { name, basename, memoryRoute, ...propsInfo } = info;
|
|
318
318
|
if (context.atLeastReact18(React__namespace)) {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
319
|
+
if (bridgeInfo == null ? void 0 : bridgeInfo.render) {
|
|
320
|
+
Promise.resolve(bridgeInfo == null ? void 0 : bridgeInfo.render(
|
|
321
|
+
/* @__PURE__ */ React__namespace.createElement(
|
|
322
|
+
RawComponent,
|
|
323
|
+
{
|
|
324
|
+
propsInfo,
|
|
325
|
+
appInfo: {
|
|
326
|
+
name,
|
|
327
|
+
basename,
|
|
328
|
+
memoryRoute
|
|
329
|
+
}
|
|
330
330
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
331
|
+
),
|
|
332
|
+
info.dom
|
|
333
|
+
)).then((root) => rootMap.set(info.dom, root));
|
|
334
|
+
} else {
|
|
335
|
+
const root = client.createRoot(info.dom);
|
|
336
|
+
root.render(
|
|
337
|
+
/* @__PURE__ */ React__namespace.createElement(
|
|
338
|
+
RawComponent,
|
|
339
|
+
{
|
|
340
|
+
propsInfo,
|
|
341
|
+
appInfo: {
|
|
342
|
+
name,
|
|
343
|
+
basename,
|
|
344
|
+
memoryRoute
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
)
|
|
348
|
+
);
|
|
349
|
+
rootMap.set(info.dom, root);
|
|
350
|
+
}
|
|
334
351
|
} else {
|
|
335
|
-
ReactDOM.render
|
|
352
|
+
const renderFunc = (bridgeInfo == null ? void 0 : bridgeInfo.render) || ReactDOM.render;
|
|
353
|
+
renderFunc(
|
|
336
354
|
/* @__PURE__ */ React__namespace.createElement(
|
|
337
355
|
RawComponent,
|
|
338
356
|
{
|
|
@@ -348,7 +366,7 @@ function createBridgeComponent(bridgeInfo) {
|
|
|
348
366
|
);
|
|
349
367
|
}
|
|
350
368
|
},
|
|
351
|
-
destroy(info) {
|
|
369
|
+
async destroy(info) {
|
|
352
370
|
context.LoggerInstance.log(`createBridgeComponent destroy Info`, {
|
|
353
371
|
dom: info.dom
|
|
354
372
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { default as default_2 } from 'react';
|
|
3
|
+
import { default as default_3 } from 'react-dom/client';
|
|
3
4
|
import { ErrorInfo } from 'react';
|
|
4
5
|
import { PropsWithChildren } from 'react';
|
|
5
6
|
import * as React_2 from 'react';
|
|
6
7
|
|
|
7
8
|
export declare function createBridgeComponent<T>(bridgeInfo: ProviderFnParams<T>): () => {
|
|
8
|
-
render(info: RenderFnParams & any): void
|
|
9
|
+
render(info: RenderFnParams & any): Promise<void>;
|
|
9
10
|
destroy(info: {
|
|
10
11
|
dom: HTMLElement;
|
|
11
|
-
}): void
|
|
12
|
+
}): Promise<void>;
|
|
12
13
|
rawComponent: React_2.ComponentType<T>;
|
|
13
14
|
__BRIDGE_FN__: (_args: T) => void;
|
|
14
15
|
};
|
|
@@ -19,8 +20,8 @@ export declare function createRemoteComponent<T, E extends keyof T>(info: {
|
|
|
19
20
|
fallback: ErrorBoundaryPropsWithComponent['FallbackComponent'];
|
|
20
21
|
export?: E;
|
|
21
22
|
}): (props: {
|
|
22
|
-
basename?: ProviderParams[
|
|
23
|
-
memoryRoute?: ProviderParams[
|
|
23
|
+
basename?: ProviderParams["basename"];
|
|
24
|
+
memoryRoute?: ProviderParams["memoryRoute"];
|
|
24
25
|
} & ("__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.JSX.Element;
|
|
25
26
|
|
|
26
27
|
declare type ErrorBoundaryPropsWithComponent = ErrorBoundarySharedProps & {
|
|
@@ -49,6 +50,7 @@ declare type FallbackProps = {
|
|
|
49
50
|
|
|
50
51
|
declare type ProviderFnParams<T> = {
|
|
51
52
|
rootComponent: React_2.ComponentType<T>;
|
|
53
|
+
render?: (App: React_2.ReactElement, id?: HTMLElement | string) => RootType | Promise<RootType>;
|
|
52
54
|
};
|
|
53
55
|
|
|
54
56
|
export declare interface ProviderParams {
|
|
@@ -63,4 +65,6 @@ export declare interface RenderFnParams extends ProviderParams {
|
|
|
63
65
|
dom: HTMLElement;
|
|
64
66
|
}
|
|
65
67
|
|
|
68
|
+
declare type RootType = HTMLElement | default_3.Root;
|
|
69
|
+
|
|
66
70
|
export { }
|
package/dist/index.es.js
CHANGED
|
@@ -288,32 +288,50 @@ function createBridgeComponent(bridgeInfo) {
|
|
|
288
288
|
return () => {
|
|
289
289
|
const rootMap = /* @__PURE__ */ new Map();
|
|
290
290
|
const RawComponent = (info) => {
|
|
291
|
-
const { appInfo, propsInfo } = info;
|
|
291
|
+
const { appInfo, propsInfo, ...restProps } = info;
|
|
292
292
|
const { name, memoryRoute, basename = "/" } = appInfo;
|
|
293
|
-
return /* @__PURE__ */ React.createElement(RouterContext.Provider, { value: { name, basename, memoryRoute } }, /* @__PURE__ */ React.createElement(bridgeInfo.rootComponent, { ...propsInfo, basename }));
|
|
293
|
+
return /* @__PURE__ */ React.createElement(RouterContext.Provider, { value: { name, basename, memoryRoute } }, /* @__PURE__ */ React.createElement(bridgeInfo.rootComponent, { ...propsInfo, basename, ...restProps }));
|
|
294
294
|
};
|
|
295
295
|
return {
|
|
296
|
-
render(info) {
|
|
296
|
+
async render(info) {
|
|
297
297
|
LoggerInstance.log(`createBridgeComponent render Info`, info);
|
|
298
298
|
const { name, basename, memoryRoute, ...propsInfo } = info;
|
|
299
299
|
if (atLeastReact18(React)) {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
300
|
+
if (bridgeInfo == null ? void 0 : bridgeInfo.render) {
|
|
301
|
+
Promise.resolve(bridgeInfo == null ? void 0 : bridgeInfo.render(
|
|
302
|
+
/* @__PURE__ */ React.createElement(
|
|
303
|
+
RawComponent,
|
|
304
|
+
{
|
|
305
|
+
propsInfo,
|
|
306
|
+
appInfo: {
|
|
307
|
+
name,
|
|
308
|
+
basename,
|
|
309
|
+
memoryRoute
|
|
310
|
+
}
|
|
311
311
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
),
|
|
313
|
+
info.dom
|
|
314
|
+
)).then((root) => rootMap.set(info.dom, root));
|
|
315
|
+
} else {
|
|
316
|
+
const root = client.createRoot(info.dom);
|
|
317
|
+
root.render(
|
|
318
|
+
/* @__PURE__ */ React.createElement(
|
|
319
|
+
RawComponent,
|
|
320
|
+
{
|
|
321
|
+
propsInfo,
|
|
322
|
+
appInfo: {
|
|
323
|
+
name,
|
|
324
|
+
basename,
|
|
325
|
+
memoryRoute
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
)
|
|
329
|
+
);
|
|
330
|
+
rootMap.set(info.dom, root);
|
|
331
|
+
}
|
|
315
332
|
} else {
|
|
316
|
-
ReactDOM.render
|
|
333
|
+
const renderFunc = (bridgeInfo == null ? void 0 : bridgeInfo.render) || ReactDOM.render;
|
|
334
|
+
renderFunc(
|
|
317
335
|
/* @__PURE__ */ React.createElement(
|
|
318
336
|
RawComponent,
|
|
319
337
|
{
|
|
@@ -329,7 +347,7 @@ function createBridgeComponent(bridgeInfo) {
|
|
|
329
347
|
);
|
|
330
348
|
}
|
|
331
349
|
},
|
|
332
|
-
destroy(info) {
|
|
350
|
+
async destroy(info) {
|
|
333
351
|
LoggerInstance.log(`createBridgeComponent destroy Info`, {
|
|
334
352
|
dom: info.dom
|
|
335
353
|
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const React = require("react");
|
|
4
|
+
const ReactRouterDom = require("react-router-dom/index.js");
|
|
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)
|
|
32
|
+
return /* @__PURE__ */ React.createElement(ReactRouterDom__namespace.BrowserRouter, { ...props });
|
|
33
|
+
if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
|
|
34
|
+
return /* @__PURE__ */ React.createElement(
|
|
35
|
+
ReactRouterDom__namespace.MemoryRouter,
|
|
36
|
+
{
|
|
37
|
+
...props,
|
|
38
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ React.createElement(
|
|
43
|
+
ReactRouterDom__namespace.BrowserRouter,
|
|
44
|
+
{
|
|
45
|
+
...propsRes,
|
|
46
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
function WraperRouterProvider(props) {
|
|
51
|
+
const { router, ...propsRes } = props;
|
|
52
|
+
const routerContextProps = React.useContext(context.RouterContext) || {};
|
|
53
|
+
const routers = router.routes;
|
|
54
|
+
context.LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
55
|
+
...routerContextProps,
|
|
56
|
+
routerContextProps,
|
|
57
|
+
WraperRouterProviderProps: props,
|
|
58
|
+
router
|
|
59
|
+
});
|
|
60
|
+
const RouterProvider = ReactRouterDom__namespace["RouterProvider"];
|
|
61
|
+
const createMemoryRouter = ReactRouterDom__namespace["createMemoryRouter"];
|
|
62
|
+
const createBrowserRouter = ReactRouterDom__namespace["createBrowserRouter"];
|
|
63
|
+
if (!routerContextProps)
|
|
64
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { ...props });
|
|
65
|
+
if (routerContextProps.memoryRoute) {
|
|
66
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
67
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
68
|
+
});
|
|
69
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
70
|
+
} else {
|
|
71
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
72
|
+
basename: routerContextProps.basename,
|
|
73
|
+
future: router.future,
|
|
74
|
+
window: router.window
|
|
75
|
+
});
|
|
76
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.BrowserRouter = WraperRouter;
|
|
80
|
+
exports.RouterProvider = WraperRouterProvider;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as default_2 } from 'react';
|
|
2
|
+
import * as ReactRouterDom from 'react-router-dom/index.js';
|
|
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
|
+
export { }
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React__default, { useContext } from "react";
|
|
2
|
+
import * as ReactRouterDom from "react-router-dom/index.js";
|
|
3
|
+
import { R as RouterContext, L as LoggerInstance } from "./context-Bw2PEwa6.js";
|
|
4
|
+
function WraperRouter(props) {
|
|
5
|
+
const { basename, ...propsRes } = props;
|
|
6
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
7
|
+
LoggerInstance.log(`WraperRouter info >>>`, {
|
|
8
|
+
...routerContextProps,
|
|
9
|
+
routerContextProps,
|
|
10
|
+
WraperRouterProps: props
|
|
11
|
+
});
|
|
12
|
+
if (!routerContextProps)
|
|
13
|
+
return /* @__PURE__ */ React__default.createElement(ReactRouterDom.BrowserRouter, { ...props });
|
|
14
|
+
if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
|
|
15
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
16
|
+
ReactRouterDom.MemoryRouter,
|
|
17
|
+
{
|
|
18
|
+
...props,
|
|
19
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
24
|
+
ReactRouterDom.BrowserRouter,
|
|
25
|
+
{
|
|
26
|
+
...propsRes,
|
|
27
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function WraperRouterProvider(props) {
|
|
32
|
+
const { router, ...propsRes } = props;
|
|
33
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
34
|
+
const routers = router.routes;
|
|
35
|
+
LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
36
|
+
...routerContextProps,
|
|
37
|
+
routerContextProps,
|
|
38
|
+
WraperRouterProviderProps: props,
|
|
39
|
+
router
|
|
40
|
+
});
|
|
41
|
+
const RouterProvider = ReactRouterDom["RouterProvider"];
|
|
42
|
+
const createMemoryRouter = ReactRouterDom["createMemoryRouter"];
|
|
43
|
+
const createBrowserRouter = ReactRouterDom["createBrowserRouter"];
|
|
44
|
+
if (!routerContextProps)
|
|
45
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...props });
|
|
46
|
+
if (routerContextProps.memoryRoute) {
|
|
47
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
48
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
49
|
+
});
|
|
50
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
51
|
+
} else {
|
|
52
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
53
|
+
basename: routerContextProps.basename,
|
|
54
|
+
future: router.future,
|
|
55
|
+
window: router.window
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
WraperRouter as BrowserRouter,
|
|
62
|
+
WraperRouterProvider as RouterProvider
|
|
63
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const React = require("react");
|
|
4
|
+
const ReactRouterDom = require("react-router-dom/dist/index.js");
|
|
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)
|
|
32
|
+
return /* @__PURE__ */ React.createElement(ReactRouterDom__namespace.BrowserRouter, { ...props });
|
|
33
|
+
if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
|
|
34
|
+
return /* @__PURE__ */ React.createElement(
|
|
35
|
+
ReactRouterDom__namespace.MemoryRouter,
|
|
36
|
+
{
|
|
37
|
+
...props,
|
|
38
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ React.createElement(
|
|
43
|
+
ReactRouterDom__namespace.BrowserRouter,
|
|
44
|
+
{
|
|
45
|
+
...propsRes,
|
|
46
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
function WraperRouterProvider(props) {
|
|
51
|
+
const { router, ...propsRes } = props;
|
|
52
|
+
const routerContextProps = React.useContext(context.RouterContext) || {};
|
|
53
|
+
const routers = router.routes;
|
|
54
|
+
context.LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
55
|
+
...routerContextProps,
|
|
56
|
+
routerContextProps,
|
|
57
|
+
WraperRouterProviderProps: props,
|
|
58
|
+
router
|
|
59
|
+
});
|
|
60
|
+
const RouterProvider = ReactRouterDom__namespace["RouterProvider"];
|
|
61
|
+
const createMemoryRouter = ReactRouterDom__namespace["createMemoryRouter"];
|
|
62
|
+
const createBrowserRouter = ReactRouterDom__namespace["createBrowserRouter"];
|
|
63
|
+
if (!routerContextProps)
|
|
64
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { ...props });
|
|
65
|
+
if (routerContextProps.memoryRoute) {
|
|
66
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
67
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
68
|
+
});
|
|
69
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
70
|
+
} else {
|
|
71
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
72
|
+
basename: routerContextProps.basename,
|
|
73
|
+
future: router.future,
|
|
74
|
+
window: router.window
|
|
75
|
+
});
|
|
76
|
+
return /* @__PURE__ */ React.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.BrowserRouter = WraperRouter;
|
|
80
|
+
exports.RouterProvider = WraperRouterProvider;
|
|
81
|
+
Object.keys(ReactRouterDom).forEach((k) => {
|
|
82
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
|
|
83
|
+
Object.defineProperty(exports, k, {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
get: () => ReactRouterDom[k]
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as default_2 } from 'react';
|
|
2
|
+
import * as ReactRouterDom from 'react-router-dom/dist/index.js';
|
|
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-dom/dist/index.js";
|
|
10
|
+
|
|
11
|
+
export { }
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React__default, { useContext } from "react";
|
|
2
|
+
import * as ReactRouterDom from "react-router-dom/dist/index.js";
|
|
3
|
+
export * from "react-router-dom/dist/index.js";
|
|
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)
|
|
14
|
+
return /* @__PURE__ */ React__default.createElement(ReactRouterDom.BrowserRouter, { ...props });
|
|
15
|
+
if (routerContextProps == null ? void 0 : routerContextProps.memoryRoute) {
|
|
16
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
17
|
+
ReactRouterDom.MemoryRouter,
|
|
18
|
+
{
|
|
19
|
+
...props,
|
|
20
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
25
|
+
ReactRouterDom.BrowserRouter,
|
|
26
|
+
{
|
|
27
|
+
...propsRes,
|
|
28
|
+
basename: (routerContextProps == null ? void 0 : routerContextProps.basename) || basename
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
function WraperRouterProvider(props) {
|
|
33
|
+
const { router, ...propsRes } = props;
|
|
34
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
35
|
+
const routers = router.routes;
|
|
36
|
+
LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
37
|
+
...routerContextProps,
|
|
38
|
+
routerContextProps,
|
|
39
|
+
WraperRouterProviderProps: props,
|
|
40
|
+
router
|
|
41
|
+
});
|
|
42
|
+
const RouterProvider = ReactRouterDom["RouterProvider"];
|
|
43
|
+
const createMemoryRouter = ReactRouterDom["createMemoryRouter"];
|
|
44
|
+
const createBrowserRouter = ReactRouterDom["createBrowserRouter"];
|
|
45
|
+
if (!routerContextProps)
|
|
46
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...props });
|
|
47
|
+
if (routerContextProps.memoryRoute) {
|
|
48
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
49
|
+
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
52
|
+
} else {
|
|
53
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
54
|
+
basename: routerContextProps.basename,
|
|
55
|
+
future: router.future,
|
|
56
|
+
window: router.window
|
|
57
|
+
});
|
|
58
|
+
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...propsRes, router: BrowserRouterInstance });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
WraperRouter as BrowserRouter,
|
|
63
|
+
WraperRouterProvider as RouterProvider
|
|
64
|
+
};
|
package/dist/router.cjs.js
CHANGED
|
@@ -60,14 +60,21 @@ function WraperRouterProvider(props) {
|
|
|
60
60
|
const RouterProvider = ReactRouterDom__namespace["RouterProvider"];
|
|
61
61
|
const createMemoryRouter = ReactRouterDom__namespace["createMemoryRouter"];
|
|
62
62
|
const createBrowserRouter = ReactRouterDom__namespace["createBrowserRouter"];
|
|
63
|
+
console.log("=======resolve to v5!!");
|
|
63
64
|
if (!routerContextProps)
|
|
64
65
|
return /* @__PURE__ */ React.createElement(RouterProvider, { ...props });
|
|
66
|
+
console.log("=======resolve to v6!!");
|
|
65
67
|
if (routerContextProps.memoryRoute) {
|
|
66
68
|
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
67
69
|
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
68
70
|
});
|
|
69
71
|
return /* @__PURE__ */ React.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
70
72
|
} else {
|
|
73
|
+
console.log("=======createBrowserRouter routers", routers);
|
|
74
|
+
console.log(
|
|
75
|
+
"=======createBrowserRouter routerContextProps.basename",
|
|
76
|
+
routerContextProps.basename
|
|
77
|
+
);
|
|
71
78
|
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
72
79
|
basename: routerContextProps.basename,
|
|
73
80
|
future: router.future,
|
package/dist/router.es.js
CHANGED
|
@@ -42,14 +42,21 @@ function WraperRouterProvider(props) {
|
|
|
42
42
|
const RouterProvider = ReactRouterDom["RouterProvider"];
|
|
43
43
|
const createMemoryRouter = ReactRouterDom["createMemoryRouter"];
|
|
44
44
|
const createBrowserRouter = ReactRouterDom["createBrowserRouter"];
|
|
45
|
+
console.log("=======resolve to v5!!");
|
|
45
46
|
if (!routerContextProps)
|
|
46
47
|
return /* @__PURE__ */ React__default.createElement(RouterProvider, { ...props });
|
|
48
|
+
console.log("=======resolve to v6!!");
|
|
47
49
|
if (routerContextProps.memoryRoute) {
|
|
48
50
|
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
49
51
|
initialEntries: [routerContextProps == null ? void 0 : routerContextProps.memoryRoute.entryPath]
|
|
50
52
|
});
|
|
51
53
|
return /* @__PURE__ */ React__default.createElement(RouterProvider, { router: MemeoryRouterInstance });
|
|
52
54
|
} else {
|
|
55
|
+
console.log("=======createBrowserRouter routers", routers);
|
|
56
|
+
console.log(
|
|
57
|
+
"=======createBrowserRouter routerContextProps.basename",
|
|
58
|
+
routerContextProps.basename
|
|
59
|
+
);
|
|
53
60
|
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
54
61
|
basename: routerContextProps.basename,
|
|
55
62
|
future: router.future,
|
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-20240718072411",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -20,12 +20,22 @@
|
|
|
20
20
|
"import": "./dist/router.es.js",
|
|
21
21
|
"require": "./dist/router.cjs.js"
|
|
22
22
|
},
|
|
23
|
+
"./router-v5": {
|
|
24
|
+
"types": "./dist/router-v5.d.ts",
|
|
25
|
+
"import": "./dist/router-v5.es.js",
|
|
26
|
+
"require": "./dist/router-v5.cjs.js"
|
|
27
|
+
},
|
|
28
|
+
"./router-v6": {
|
|
29
|
+
"types": "./dist/router-v6.d.ts",
|
|
30
|
+
"import": "./dist/router-v6.es.js",
|
|
31
|
+
"require": "./dist/router-v6.cjs.js"
|
|
32
|
+
},
|
|
23
33
|
"./*": "./*"
|
|
24
34
|
},
|
|
25
35
|
"dependencies": {
|
|
26
36
|
"@loadable/component": "^5.16.4",
|
|
27
37
|
"react-error-boundary": "^4.0.13",
|
|
28
|
-
"@module-federation/bridge-shared": "0.0.0-next-
|
|
38
|
+
"@module-federation/bridge-shared": "0.0.0-next-20240718072411"
|
|
29
39
|
},
|
|
30
40
|
"peerDependencies": {
|
|
31
41
|
"react": ">=16.9.0",
|
package/src/provider.tsx
CHANGED
|
@@ -9,45 +9,61 @@ import type {
|
|
|
9
9
|
} from '@module-federation/bridge-shared';
|
|
10
10
|
import { LoggerInstance, atLeastReact18 } from './utils';
|
|
11
11
|
|
|
12
|
+
type RootType = HTMLElement | ReactDOMClient.Root;
|
|
12
13
|
type ProviderFnParams<T> = {
|
|
13
14
|
rootComponent: React.ComponentType<T>;
|
|
15
|
+
render?: (App: React.ReactElement, id?: HTMLElement | string) => RootType | Promise<RootType>;
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
export function createBridgeComponent<T>(bridgeInfo: ProviderFnParams<T>) {
|
|
17
19
|
return () => {
|
|
18
|
-
const rootMap = new Map<any,
|
|
19
|
-
|
|
20
|
+
const rootMap = new Map<any, RootType>();
|
|
20
21
|
const RawComponent = (info: { propsInfo: T; appInfo: ProviderParams }) => {
|
|
21
|
-
const { appInfo, propsInfo } = info;
|
|
22
|
+
const { appInfo, propsInfo, ...restProps } = info;
|
|
22
23
|
const { name, memoryRoute, basename = '/' } = appInfo;
|
|
23
24
|
|
|
24
25
|
return (
|
|
25
26
|
<RouterContext.Provider value={{ name, basename, memoryRoute }}>
|
|
26
|
-
<bridgeInfo.rootComponent {...propsInfo} basename={basename} />
|
|
27
|
+
<bridgeInfo.rootComponent {...propsInfo} basename={basename} {...restProps} />
|
|
27
28
|
</RouterContext.Provider>
|
|
28
29
|
);
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
return {
|
|
32
|
-
render(info: RenderFnParams & any) {
|
|
33
|
+
async render(info: RenderFnParams & any) {
|
|
33
34
|
LoggerInstance.log(`createBridgeComponent render Info`, info);
|
|
34
35
|
const { name, basename, memoryRoute, ...propsInfo } = info;
|
|
35
|
-
|
|
36
36
|
if (atLeastReact18(React)) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
// render is provided by user
|
|
38
|
+
if (bridgeInfo?.render) {
|
|
39
|
+
Promise.resolve(bridgeInfo?.render(
|
|
40
|
+
<RawComponent
|
|
41
|
+
propsInfo={propsInfo}
|
|
42
|
+
appInfo={{
|
|
43
|
+
name,
|
|
44
|
+
basename,
|
|
45
|
+
memoryRoute,
|
|
46
|
+
}}
|
|
47
|
+
/>,
|
|
48
|
+
info.dom
|
|
49
|
+
)).then((root: RootType) => rootMap.set(info.dom, root));
|
|
50
|
+
} else {
|
|
51
|
+
const root: RootType = ReactDOMClient.createRoot(info.dom);
|
|
52
|
+
root.render(
|
|
53
|
+
<RawComponent
|
|
54
|
+
propsInfo={propsInfo}
|
|
55
|
+
appInfo={{
|
|
56
|
+
name,
|
|
57
|
+
basename,
|
|
58
|
+
memoryRoute,
|
|
59
|
+
}}
|
|
60
|
+
/>,
|
|
61
|
+
);
|
|
62
|
+
rootMap.set(info.dom, root);
|
|
63
|
+
}
|
|
49
64
|
} else {
|
|
50
|
-
ReactDOM.render
|
|
65
|
+
const renderFunc = bridgeInfo?.render || ReactDOM.render;
|
|
66
|
+
renderFunc(
|
|
51
67
|
<RawComponent
|
|
52
68
|
propsInfo={propsInfo}
|
|
53
69
|
appInfo={{
|
|
@@ -60,13 +76,13 @@ export function createBridgeComponent<T>(bridgeInfo: ProviderFnParams<T>) {
|
|
|
60
76
|
);
|
|
61
77
|
}
|
|
62
78
|
},
|
|
63
|
-
destroy(info: { dom: HTMLElement }) {
|
|
79
|
+
async destroy(info: { dom: HTMLElement }) {
|
|
64
80
|
LoggerInstance.log(`createBridgeComponent destroy Info`, {
|
|
65
81
|
dom: info.dom,
|
|
66
82
|
});
|
|
67
83
|
if (atLeastReact18(React)) {
|
|
68
84
|
const root = rootMap.get(info.dom);
|
|
69
|
-
root?.unmount();
|
|
85
|
+
(root as ReactDOMClient.Root)?.unmount();
|
|
70
86
|
} else {
|
|
71
87
|
ReactDOM.unmountComponentAtNode(info.dom);
|
|
72
88
|
}
|
|
@@ -84,5 +100,3 @@ export function ShadowRoot(info: { children: () => JSX.Element }) {
|
|
|
84
100
|
|
|
85
101
|
return <div ref={domRef}>{root && <info.children />}</div>;
|
|
86
102
|
}
|
|
87
|
-
|
|
88
|
-
// function ShadowContent() {}
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
if (!routerContextProps) return <ReactRouterDom.BrowserRouter {...props} />;
|
|
23
|
+
|
|
24
|
+
if (routerContextProps?.memoryRoute) {
|
|
25
|
+
return (
|
|
26
|
+
<ReactRouterDom.MemoryRouter
|
|
27
|
+
{...props}
|
|
28
|
+
initialEntries={[routerContextProps?.memoryRoute.entryPath]}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
return (
|
|
33
|
+
<ReactRouterDom.BrowserRouter
|
|
34
|
+
{...propsRes}
|
|
35
|
+
basename={routerContextProps?.basename || basename}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function WraperRouterProvider(
|
|
41
|
+
props: Parameters<typeof ReactRouterDom.RouterProvider>[0],
|
|
42
|
+
) {
|
|
43
|
+
const { router, ...propsRes } = props;
|
|
44
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
45
|
+
const routers = router.routes;
|
|
46
|
+
LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
47
|
+
...routerContextProps,
|
|
48
|
+
routerContextProps,
|
|
49
|
+
WraperRouterProviderProps: props,
|
|
50
|
+
router,
|
|
51
|
+
});
|
|
52
|
+
const RouterProvider = (ReactRouterDom as any)['Router' + 'Provider'];
|
|
53
|
+
const createMemoryRouter = (ReactRouterDom as any)['create' + 'MemoryRouter'];
|
|
54
|
+
const createBrowserRouter = (ReactRouterDom as any)[
|
|
55
|
+
'create' + 'BrowserRouter'
|
|
56
|
+
];
|
|
57
|
+
if (!routerContextProps) return <RouterProvider {...props} />;
|
|
58
|
+
|
|
59
|
+
if (routerContextProps.memoryRoute) {
|
|
60
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
61
|
+
initialEntries: [routerContextProps?.memoryRoute.entryPath],
|
|
62
|
+
});
|
|
63
|
+
return <RouterProvider router={MemeoryRouterInstance} />;
|
|
64
|
+
} else {
|
|
65
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
66
|
+
basename: routerContextProps.basename,
|
|
67
|
+
future: router.future,
|
|
68
|
+
window: router.window,
|
|
69
|
+
});
|
|
70
|
+
return <RouterProvider {...propsRes} router={BrowserRouterInstance} />;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
// export * from 'react-router-dom/index.js';
|
|
76
|
+
|
|
77
|
+
export { WraperRouter as BrowserRouter };
|
|
78
|
+
export { WraperRouterProvider as RouterProvider };
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
if (!routerContextProps) return <ReactRouterDom.BrowserRouter {...props} />;
|
|
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
|
+
function WraperRouterProvider(
|
|
40
|
+
props: Parameters<typeof ReactRouterDom.RouterProvider>[0],
|
|
41
|
+
) {
|
|
42
|
+
const { router, ...propsRes } = props;
|
|
43
|
+
const routerContextProps = useContext(RouterContext) || {};
|
|
44
|
+
const routers = router.routes;
|
|
45
|
+
LoggerInstance.log(`WraperRouterProvider info >>>`, {
|
|
46
|
+
...routerContextProps,
|
|
47
|
+
routerContextProps,
|
|
48
|
+
WraperRouterProviderProps: props,
|
|
49
|
+
router,
|
|
50
|
+
});
|
|
51
|
+
const RouterProvider = (ReactRouterDom as any)['Router' + 'Provider'];
|
|
52
|
+
const createMemoryRouter = (ReactRouterDom as any)['create' + 'MemoryRouter'];
|
|
53
|
+
const createBrowserRouter = (ReactRouterDom as any)[
|
|
54
|
+
'create' + 'BrowserRouter'
|
|
55
|
+
];
|
|
56
|
+
if (!routerContextProps) return <RouterProvider {...props} />;
|
|
57
|
+
|
|
58
|
+
if (routerContextProps.memoryRoute) {
|
|
59
|
+
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
60
|
+
initialEntries: [routerContextProps?.memoryRoute.entryPath],
|
|
61
|
+
});
|
|
62
|
+
return <RouterProvider router={MemeoryRouterInstance} />;
|
|
63
|
+
} else {
|
|
64
|
+
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
65
|
+
basename: routerContextProps.basename,
|
|
66
|
+
future: router.future,
|
|
67
|
+
window: router.window,
|
|
68
|
+
});
|
|
69
|
+
return <RouterProvider {...propsRes} router={BrowserRouterInstance} />;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export * from 'react-router-dom/dist/index.js';
|
|
74
|
+
|
|
75
|
+
export { WraperRouter as BrowserRouter };
|
|
76
|
+
export { WraperRouterProvider as RouterProvider };
|
package/src/router.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useContext } from 'react';
|
|
2
2
|
// The upper alias react-router-dom$ into this file avoids the loop
|
|
3
3
|
import * as ReactRouterDom from 'react-router-dom/';
|
|
4
|
+
|
|
4
5
|
import { RouterContext } from './context';
|
|
5
6
|
import { LoggerInstance } from './utils';
|
|
6
7
|
|
|
@@ -52,14 +53,22 @@ function WraperRouterProvider(
|
|
|
52
53
|
const createBrowserRouter = (ReactRouterDom as any)[
|
|
53
54
|
'create' + 'BrowserRouter'
|
|
54
55
|
];
|
|
56
|
+
console.log('=======resolve to v5!!');
|
|
55
57
|
if (!routerContextProps) return <RouterProvider {...props} />;
|
|
56
58
|
|
|
59
|
+
console.log('=======resolve to v6!!');
|
|
60
|
+
|
|
57
61
|
if (routerContextProps.memoryRoute) {
|
|
58
62
|
const MemeoryRouterInstance = createMemoryRouter(routers, {
|
|
59
63
|
initialEntries: [routerContextProps?.memoryRoute.entryPath],
|
|
60
64
|
});
|
|
61
65
|
return <RouterProvider router={MemeoryRouterInstance} />;
|
|
62
66
|
} else {
|
|
67
|
+
console.log('=======createBrowserRouter routers', routers);
|
|
68
|
+
console.log(
|
|
69
|
+
'=======createBrowserRouter routerContextProps.basename',
|
|
70
|
+
routerContextProps.basename,
|
|
71
|
+
);
|
|
63
72
|
const BrowserRouterInstance = createBrowserRouter(routers, {
|
|
64
73
|
basename: routerContextProps.basename,
|
|
65
74
|
future: router.future,
|
package/vite.config.ts
CHANGED
|
@@ -22,6 +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-v5.tsx'),
|
|
26
|
+
'router-v6': path.resolve(__dirname, 'src/router-v6.tsx'),
|
|
25
27
|
},
|
|
26
28
|
formats: ['cjs', 'es'],
|
|
27
29
|
fileName: (format, entryName) => `${entryName}.${format}.js`,
|
|
@@ -32,6 +34,8 @@ export default defineConfig({
|
|
|
32
34
|
'@remix-run/router',
|
|
33
35
|
'react-router',
|
|
34
36
|
'react-router-dom/',
|
|
37
|
+
'react-router-dom/index.js',
|
|
38
|
+
'react-router-dom/dist/index.js',
|
|
35
39
|
],
|
|
36
40
|
},
|
|
37
41
|
minify: false,
|