@module-federation/bridge-react 0.0.0-next-20240819040425 → 0.0.0-next-20240819112150

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.
@@ -1,20 +1,13 @@
1
- import React, {
2
- useContext,
3
- useEffect,
4
- useRef,
5
- useState,
6
- forwardRef,
7
- } from 'react';
1
+ import React, { useContext, useEffect, useRef, useState } from 'react';
8
2
  import * as ReactRouterDOM from 'react-router-dom';
9
3
  import type { ProviderParams } from '@module-federation/bridge-shared';
10
4
  import { LoggerInstance, pathJoin } from '../utils';
11
5
  import { dispatchPopstateEnv } from '@module-federation/bridge-shared';
12
- import { ErrorBoundaryPropsWithComponent } from 'react-error-boundary';
13
6
 
14
7
  declare const __APP_VERSION__: string;
8
+
15
9
  export interface RenderFnParams extends ProviderParams {
16
10
  dom?: any;
17
- fallback: ErrorBoundaryPropsWithComponent['FallbackComponent'];
18
11
  }
19
12
 
20
13
  interface RemoteModule {
@@ -29,96 +22,71 @@ interface RemoteModule {
29
22
  }
30
23
 
31
24
  interface RemoteAppParams {
32
- moduleName: string;
25
+ name: string;
33
26
  providerInfo: NonNullable<RemoteModule['provider']>;
34
27
  exportName: string | number | symbol;
35
- fallback: ErrorBoundaryPropsWithComponent['FallbackComponent'];
36
28
  }
37
29
 
38
- const RemoteAppWrapper = forwardRef(function (
39
- props: RemoteAppParams & RenderFnParams,
40
- ref,
41
- ) {
42
- const RemoteApp = () => {
43
- LoggerInstance.log(`RemoteAppWrapper RemoteApp props >>>`, { props });
44
- const {
45
- moduleName,
46
- memoryRoute,
47
- basename,
48
- providerInfo,
49
- className,
50
- style,
51
- fallback,
52
- ...resProps
53
- } = props;
54
-
55
- const rootRef: React.MutableRefObject<HTMLElement | null> =
56
- ref && 'current' in ref
57
- ? (ref as React.MutableRefObject<HTMLElement | null>)
58
- : useRef(null);
59
- const renderDom: React.MutableRefObject<HTMLElement | null> = useRef(null);
60
- const providerInfoRef = useRef<any>(null);
61
-
62
- useEffect(() => {
63
- const renderTimeout = setTimeout(() => {
64
- const providerReturn = providerInfo();
65
- providerInfoRef.current = providerReturn;
66
-
67
- const renderProps = {
68
- moduleName,
69
- dom: rootRef.current,
70
- basename,
71
- memoryRoute,
72
- fallback,
73
- ...resProps,
74
- };
75
- renderDom.current = rootRef.current;
76
- LoggerInstance.log(
77
- `createRemoteComponent LazyComponent render >>>`,
78
- renderProps,
79
- );
80
- providerReturn.render(renderProps);
30
+ const RemoteApp = ({
31
+ name,
32
+ memoryRoute,
33
+ basename,
34
+ providerInfo,
35
+ ...resProps
36
+ }: RemoteAppParams & ProviderParams) => {
37
+ const rootRef = useRef(null);
38
+ const renderDom = useRef(null);
39
+ const providerInfoRef = useRef<any>(null);
40
+
41
+ useEffect(() => {
42
+ const renderTimeout = setTimeout(() => {
43
+ const providerReturn = providerInfo();
44
+ providerInfoRef.current = providerReturn;
45
+ const renderProps = {
46
+ name,
47
+ dom: rootRef.current,
48
+ basename,
49
+ memoryRoute,
50
+ ...resProps,
51
+ };
52
+ renderDom.current = rootRef.current;
53
+ LoggerInstance.log(
54
+ `createRemoteComponent LazyComponent render >>>`,
55
+ renderProps,
56
+ );
57
+ providerReturn.render(renderProps);
58
+ });
59
+
60
+ return () => {
61
+ clearTimeout(renderTimeout);
62
+ setTimeout(() => {
63
+ if (providerInfoRef.current?.destroy) {
64
+ LoggerInstance.log(
65
+ `createRemoteComponent LazyComponent destroy >>>`,
66
+ { name, basename, dom: renderDom.current },
67
+ );
68
+ providerInfoRef.current?.destroy({
69
+ dom: renderDom.current,
70
+ });
71
+ }
81
72
  });
73
+ };
74
+ }, []);
82
75
 
83
- return () => {
84
- clearTimeout(renderTimeout);
85
- setTimeout(() => {
86
- if (providerInfoRef.current?.destroy) {
87
- LoggerInstance.log(
88
- `createRemoteComponent LazyComponent destroy >>>`,
89
- { moduleName, basename, dom: renderDom.current },
90
- );
91
- providerInfoRef.current?.destroy({
92
- dom: renderDom.current,
93
- });
94
- }
95
- });
96
- };
97
- }, []);
98
-
99
- return (
100
- <div
101
- className={props?.className}
102
- style={props?.style}
103
- ref={rootRef}
104
- ></div>
105
- );
106
- };
76
+ //@ts-ignore
77
+ return <div ref={rootRef}></div>;
78
+ };
107
79
 
108
- (RemoteApp as any)['__APP_VERSION__'] = __APP_VERSION__;
109
- return <RemoteApp />;
110
- });
80
+ (RemoteApp as any)['__APP_VERSION__'] = __APP_VERSION__;
111
81
 
112
82
  interface ExtraDataProps {
113
83
  basename?: string;
114
84
  }
115
85
 
116
- export function withRouterData<
117
- P extends Parameters<typeof RemoteAppWrapper>[0],
118
- >(
86
+ export function withRouterData<P extends Parameters<typeof RemoteApp>[0]>(
119
87
  WrappedComponent: React.ComponentType<P & ExtraDataProps>,
120
88
  ): React.FC<Omit<P, keyof ExtraDataProps>> {
121
- const Component = forwardRef(function (props: any, ref) {
89
+ return (props: any) => {
122
90
  let enableDispathPopstate = false;
123
91
  let routerContextVal: any;
124
92
  try {
@@ -190,12 +158,8 @@ export function withRouterData<
190
158
  }, [location]);
191
159
  }
192
160
 
193
- return <WrappedComponent {...(props as P)} basename={basename} ref={ref} />;
194
- });
195
-
196
- return forwardRef(function (props, ref) {
197
- return <Component {...props} ref={ref} />;
198
- }) as any;
161
+ return <WrappedComponent {...(props as P)} basename={basename} />;
162
+ };
199
163
  }
200
164
 
201
- export default withRouterData(RemoteAppWrapper);
165
+ export default withRouterData(RemoteApp);
package/src/router.tsx CHANGED
@@ -4,7 +4,7 @@ import * as ReactRouterDom from 'react-router-dom/';
4
4
  import { RouterContext } from './context';
5
5
  import { LoggerInstance } from './utils';
6
6
 
7
- function WrapperRouter(
7
+ function WraperRouter(
8
8
  props:
9
9
  | Parameters<typeof ReactRouterDom.BrowserRouter>[0]
10
10
  | Parameters<typeof ReactRouterDom.MemoryRouter>[0],
@@ -12,11 +12,12 @@ function WrapperRouter(
12
12
  const { basename, ...propsRes } = props;
13
13
  const routerContextProps = useContext(RouterContext) || {};
14
14
 
15
- LoggerInstance.log(`WrapperRouter info >>>`, {
15
+ LoggerInstance.log(`WraperRouter info >>>`, {
16
16
  ...routerContextProps,
17
17
  routerContextProps,
18
- WrapperRouterProps: props,
18
+ WraperRouterProps: props,
19
19
  });
20
+ if (!routerContextProps) return <ReactRouterDom.BrowserRouter {...props} />;
20
21
 
21
22
  if (routerContextProps?.memoryRoute) {
22
23
  return (
@@ -34,16 +35,16 @@ function WrapperRouter(
34
35
  );
35
36
  }
36
37
 
37
- function WrapperRouterProvider(
38
+ function WraperRouterProvider(
38
39
  props: Parameters<typeof ReactRouterDom.RouterProvider>[0],
39
40
  ) {
40
41
  const { router, ...propsRes } = props;
41
42
  const routerContextProps = useContext(RouterContext) || {};
42
43
  const routers = router.routes;
43
- LoggerInstance.log(`WrapperRouterProvider info >>>`, {
44
+ LoggerInstance.log(`WraperRouterProvider info >>>`, {
44
45
  ...routerContextProps,
45
46
  routerContextProps,
46
- WrapperRouterProviderProps: props,
47
+ WraperRouterProviderProps: props,
47
48
  router,
48
49
  });
49
50
  const RouterProvider = (ReactRouterDom as any)['Router' + 'Provider'];
@@ -51,6 +52,7 @@ function WrapperRouterProvider(
51
52
  const createBrowserRouter = (ReactRouterDom as any)[
52
53
  'create' + 'BrowserRouter'
53
54
  ];
55
+ if (!routerContextProps) return <RouterProvider {...props} />;
54
56
 
55
57
  if (routerContextProps.memoryRoute) {
56
58
  const MemeoryRouterInstance = createMemoryRouter(routers, {
@@ -69,5 +71,5 @@ function WrapperRouterProvider(
69
71
 
70
72
  export * from 'react-router-dom/';
71
73
 
72
- export { WrapperRouter as BrowserRouter };
73
- export { WrapperRouterProvider as RouterProvider };
74
+ export { WraperRouter as BrowserRouter };
75
+ export { WraperRouterProvider as RouterProvider };
package/vite.config.ts CHANGED
@@ -22,8 +22,6 @@ 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'),
27
25
  },
28
26
  formats: ['cjs', 'es'],
29
27
  fileName: (format, entryName) => `${entryName}.${format}.js`,
@@ -34,33 +32,6 @@ export default defineConfig({
34
32
  '@remix-run/router',
35
33
  'react-router',
36
34
  'react-router-dom/',
37
- 'react-router-dom/index.js',
38
- 'react-router-dom/dist/index.js',
39
- ],
40
- plugins: [
41
- {
42
- name: 'modify-output-plugin',
43
- generateBundle(options, bundle) {
44
- for (const fileName in bundle) {
45
- const chunk = bundle[fileName];
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
-
54
- if (fileName.includes('router-v5') && chunk.type === 'chunk') {
55
- chunk.code = chunk.code.replace(
56
- // Match 'react-router-dom/' followed by single quotes, double quotes, or backticks, replacing only 'react-router-dom/' to react-router-v5 dist file structure
57
- /react-router-dom\/(?=[\'\"\`])/g,
58
- 'react-router-dom/index.js',
59
- );
60
- }
61
- }
62
- },
63
- },
64
35
  ],
65
36
  },
66
37
  minify: false,
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const React = require("react");
4
- const ReactRouterDom$1 = require("react-router-dom/index.js");
5
- const context = require("./context--mtFt3tp.cjs");
6
- const ReactRouterDom = require("react-router-dom/index.js");
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;
50
- Object.keys(ReactRouterDom).forEach((k) => {
51
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
52
- Object.defineProperty(exports, k, {
53
- enumerable: true,
54
- get: () => ReactRouterDom[k]
55
- });
56
- });
@@ -1,9 +0,0 @@
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
-
7
- export * from "react-router-dom/";
8
-
9
- export { }
@@ -1,32 +0,0 @@
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";
4
- export * from "react-router-dom/index.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$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
- }
30
- export {
31
- WraperRouter as BrowserRouter
32
- };
@@ -1,83 +0,0 @@
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 == 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;
77
- Object.keys(ReactRouterDom).forEach((k) => {
78
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
79
- Object.defineProperty(exports, k, {
80
- enumerable: true,
81
- get: () => ReactRouterDom[k]
82
- });
83
- });
@@ -1,11 +0,0 @@
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 { }
@@ -1,60 +0,0 @@
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 == 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
- }
57
- export {
58
- WraperRouter as BrowserRouter,
59
- WraperRouterProvider as RouterProvider
60
- };
package/src/router-v5.tsx DELETED
@@ -1,42 +0,0 @@
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 };
package/src/router-v6.tsx DELETED
@@ -1,73 +0,0 @@
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 };