@modern-js/runtime 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/cjs/cli/index.js +9 -0
  3. package/dist/cjs/common.js +6 -0
  4. package/dist/cjs/core/{app-config.js → appConfig.js} +8 -4
  5. package/dist/cjs/core/compatible.js +11 -10
  6. package/dist/cjs/core/index.js +6 -6
  7. package/dist/cjs/core/loader/index.js +4 -0
  8. package/dist/cjs/core/loader/loaderManager.js +6 -0
  9. package/dist/cjs/core/loader/useLoader.js +6 -2
  10. package/dist/cjs/core/types.js +15 -0
  11. package/dist/cjs/document/Body.js +6 -8
  12. package/dist/cjs/document/DocumentContext.js +4 -0
  13. package/dist/cjs/document/DocumentStructureContext.js +4 -0
  14. package/dist/cjs/document/Head.js +7 -11
  15. package/dist/cjs/document/Html.js +24 -22
  16. package/dist/cjs/document/Links.js +1 -3
  17. package/dist/cjs/document/Root.js +8 -14
  18. package/dist/cjs/document/Script.js +5 -7
  19. package/dist/cjs/document/Scripts.js +1 -3
  20. package/dist/cjs/document/cli/index.js +8 -2
  21. package/dist/cjs/exports/head.js +4 -0
  22. package/dist/cjs/exports/loadable.js +4 -0
  23. package/dist/cjs/exports/styled.js +4 -0
  24. package/dist/cjs/router/cli/index.js +3 -7
  25. package/dist/cjs/router/index.js +4 -0
  26. package/dist/cjs/router/runtime/DefaultNotFound.js +13 -10
  27. package/dist/cjs/router/runtime/DeferredDataScripts.js +165 -0
  28. package/dist/cjs/router/runtime/index.js +116 -3
  29. package/dist/cjs/router/runtime/plugin.js +18 -6
  30. package/dist/cjs/router/runtime/plugin.node.js +16 -49
  31. package/dist/cjs/router/runtime/utils.js +79 -101
  32. package/dist/cjs/router/runtime/withRouter.js +9 -6
  33. package/dist/cjs/{runtime-context.js → runtimeContext.js} +3 -3
  34. package/dist/cjs/ssr/cli/babel-plugin-ssr-loader-id.js +4 -0
  35. package/dist/cjs/ssr/cli/index.js +6 -0
  36. package/dist/cjs/ssr/index.js +10 -24
  37. package/dist/cjs/ssr/index.node.js +5 -0
  38. package/dist/cjs/ssr/prefetch.js +3 -6
  39. package/dist/cjs/ssr/react/nossr/index.js +4 -0
  40. package/dist/cjs/ssr/react/prerender/index.js +4 -0
  41. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +7 -13
  42. package/dist/cjs/ssr/serverRender/renderToStream/bulidTemplate.before.js +5 -0
  43. package/dist/cjs/ssr/serverRender/renderToStream/index.js +4 -0
  44. package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +22 -7
  45. package/dist/cjs/ssr/serverRender/renderToStream/template.js +2 -1
  46. package/dist/cjs/ssr/serverRender/renderToString/entry.js +28 -11
  47. package/dist/cjs/ssr/serverRender/renderToString/index.js +4 -0
  48. package/dist/cjs/ssr/serverRender/renderToString/loadable.js +1 -1
  49. package/dist/cjs/ssr/serverRender/time.worker.js +1 -1
  50. package/dist/cjs/ssr/serverRender/utils.js +1 -1
  51. package/dist/cjs/ssr/utils.js +16 -4
  52. package/dist/cjs/state/index.js +4 -0
  53. package/dist/cjs/state/plugins.js +4 -0
  54. package/dist/cjs/state/runtime/index.js +4 -0
  55. package/dist/cjs/state/runtime/plugin.js +5 -7
  56. package/dist/esm/cli/index.js +5 -1
  57. package/dist/esm/common.js +3 -1
  58. package/dist/esm/core/{app-config.js → appConfig.js} +3 -1
  59. package/dist/esm/core/compatible.js +4 -2
  60. package/dist/esm/core/index.js +2 -2
  61. package/dist/esm/core/loader/loaderManager.js +3 -1
  62. package/dist/esm/core/loader/useLoader.js +1 -1
  63. package/dist/esm/core/types.js +1 -0
  64. package/dist/esm/document/cli/index.js +4 -2
  65. package/dist/esm/router/cli/index.js +1 -5
  66. package/dist/esm/router/runtime/DeferredDataScripts.js +166 -0
  67. package/dist/esm/router/runtime/index.js +3 -2
  68. package/dist/esm/router/runtime/plugin.js +11 -3
  69. package/dist/esm/router/runtime/plugin.node.js +11 -68
  70. package/dist/esm/router/runtime/utils.js +138 -81
  71. package/dist/esm/ssr/cli/index.js +2 -0
  72. package/dist/esm/ssr/index.node.js +1 -0
  73. package/dist/esm/ssr/prefetch.js +1 -0
  74. package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +37 -10
  75. package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -0
  76. package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +19 -8
  77. package/dist/esm/ssr/serverRender/renderToStream/template.js +2 -1
  78. package/dist/esm/ssr/serverRender/renderToString/entry.js +37 -13
  79. package/dist/esm/ssr/serverRender/time.worker.js +1 -1
  80. package/dist/esm/ssr/utils.js +6 -4
  81. package/dist/esm-node/cli/index.js +5 -0
  82. package/dist/esm-node/common.js +4 -0
  83. package/dist/esm-node/core/{app-config.js → appConfig.js} +5 -1
  84. package/dist/esm-node/core/compatible.js +5 -8
  85. package/dist/esm-node/core/index.js +2 -2
  86. package/dist/esm-node/core/loader/loaderManager.js +2 -0
  87. package/dist/esm-node/core/loader/useLoader.js +1 -1
  88. package/dist/esm-node/core/types.js +0 -0
  89. package/dist/esm-node/document/Body.js +6 -8
  90. package/dist/esm-node/document/Head.js +7 -11
  91. package/dist/esm-node/document/Html.js +24 -22
  92. package/dist/esm-node/document/Links.js +1 -3
  93. package/dist/esm-node/document/Root.js +8 -14
  94. package/dist/esm-node/document/Script.js +5 -7
  95. package/dist/esm-node/document/Scripts.js +1 -3
  96. package/dist/esm-node/document/cli/index.js +4 -2
  97. package/dist/esm-node/router/cli/index.js +2 -5
  98. package/dist/esm-node/router/runtime/DefaultNotFound.js +13 -10
  99. package/dist/esm-node/router/runtime/DeferredDataScripts.js +148 -0
  100. package/dist/esm-node/router/runtime/index.js +113 -2
  101. package/dist/esm-node/router/runtime/plugin.js +15 -7
  102. package/dist/esm-node/router/runtime/plugin.node.js +12 -52
  103. package/dist/esm-node/router/runtime/utils.js +70 -101
  104. package/dist/esm-node/router/runtime/withRouter.js +9 -6
  105. package/dist/esm-node/ssr/cli/index.js +2 -0
  106. package/dist/esm-node/ssr/index.js +6 -24
  107. package/dist/esm-node/ssr/index.node.js +1 -0
  108. package/dist/esm-node/ssr/prefetch.js +3 -6
  109. package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +7 -7
  110. package/dist/esm-node/ssr/serverRender/renderToStream/bulidTemplate.before.js +1 -0
  111. package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +22 -7
  112. package/dist/esm-node/ssr/serverRender/renderToStream/template.js +2 -1
  113. package/dist/esm-node/ssr/serverRender/renderToString/entry.js +24 -11
  114. package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +1 -1
  115. package/dist/esm-node/ssr/serverRender/time.worker.js +1 -1
  116. package/dist/esm-node/ssr/serverRender/utils.js +1 -1
  117. package/dist/esm-node/ssr/utils.js +6 -4
  118. package/dist/esm-node/state/runtime/plugin.js +1 -7
  119. package/dist/types/common.d.ts +3 -1
  120. package/dist/types/core/compatible.d.ts +1 -1
  121. package/dist/types/core/index.d.ts +4 -3
  122. package/dist/types/core/loader/index.d.ts +1 -2
  123. package/dist/types/core/loader/useLoader.d.ts +1 -15
  124. package/dist/types/core/plugin.d.ts +15 -15
  125. package/dist/types/core/types.d.ts +22 -0
  126. package/dist/types/index.d.ts +1 -1
  127. package/dist/types/router/runtime/DeferredDataScripts.d.ts +8 -0
  128. package/dist/types/router/runtime/index.d.ts +4 -2
  129. package/dist/types/router/runtime/utils.d.ts +23 -4
  130. package/dist/types/{runtime-context.d.ts → runtimeContext.d.ts} +2 -0
  131. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +2 -0
  132. package/dist/types/ssr/serverRender/renderToString/type.d.ts +1 -0
  133. package/package.json +14 -15
  134. package/dist/cjs/ssr/prefetch.worker.js +0 -67
  135. package/dist/cjs/ssr/serverRender/renderToStream/index.worker.js +0 -64
  136. package/dist/cjs/ssr/serverRender/renderToString/index.worker.js +0 -58
  137. package/dist/esm/ssr/prefetch.worker.js +0 -191
  138. package/dist/esm/ssr/serverRender/renderToStream/index.worker.js +0 -32
  139. package/dist/esm/ssr/serverRender/renderToString/index.worker.js +0 -167
  140. package/dist/esm-node/ssr/prefetch.worker.js +0 -46
  141. package/dist/esm-node/ssr/serverRender/renderToStream/index.worker.js +0 -35
  142. package/dist/esm-node/ssr/serverRender/renderToString/index.worker.js +0 -29
  143. package/dist/types/ssr/prefetch.worker.d.ts +0 -13
  144. package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +0 -6
  145. package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +0 -6
  146. /package/dist/esm/{runtime-context.js → runtimeContext.js} +0 -0
  147. /package/dist/esm-node/{runtime-context.js → runtimeContext.js} +0 -0
  148. /package/dist/types/core/{app-config.d.ts → appConfig.d.ts} +0 -0
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  };
19
19
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -21,16 +21,19 @@ __export(DefaultNotFound_exports, {
21
21
  });
22
22
  module.exports = __toCommonJS(DefaultNotFound_exports);
23
23
  var import_jsx_runtime = require("react/jsx-runtime");
24
- const DefaultNotFound = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
25
- style: {
26
- margin: "150px auto",
27
- textAlign: "center",
28
- display: "flex",
29
- alignItems: "center",
30
- justifyContent: "center"
31
- },
32
- children: "404"
33
- });
24
+ const DefaultNotFound = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
25
+ "div",
26
+ {
27
+ style: {
28
+ margin: "150px auto",
29
+ textAlign: "center",
30
+ display: "flex",
31
+ alignItems: "center",
32
+ justifyContent: "center"
33
+ },
34
+ children: "404"
35
+ }
36
+ );
34
37
  // Annotate the CommonJS export names for ESM import in node:
35
38
  0 && (module.exports = {
36
39
  DefaultNotFound
@@ -0,0 +1,165 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var DeferredDataScripts_exports = {};
19
+ __export(DeferredDataScripts_exports, {
20
+ default: () => DeferredDataScripts_default
21
+ });
22
+ module.exports = __toCommonJS(DeferredDataScripts_exports);
23
+ var import_jsx_runtime = require("react/jsx-runtime");
24
+ var import_react = require("react");
25
+ var import_react_router_dom = require("react-router-dom");
26
+ var import_serialize = require("@modern-js/utils/serialize");
27
+ var import_common = require("../../common");
28
+ var import_utils = require("./utils");
29
+ const setupFnStr = `function s(r,e){_ROUTER_DATA.r=_ROUTER_DATA.r||{},_ROUTER_DATA.r[r]=_ROUTER_DATA.r[r]||{};return new Promise((function(A,R){_ROUTER_DATA.r[r][e]={resolve:A,reject:R}}))};`;
30
+ const resolveFnStr = `function r(e,r,o,A){A?_ROUTER_DATA.r[e][r].reject(A):_ROUTER_DATA.r[e][r].resolve(o)};`;
31
+ const preResolvedFnStr = `function p(e,r){return void 0!==r?Promise.reject(new Error(r.message)):Promise.resovle(e)};`;
32
+ const DeferredDataScripts = () => {
33
+ const context = (0, import_react.useContext)(import_react_router_dom.UNSAFE_DataRouterContext);
34
+ const { staticContext } = context || {};
35
+ const hydratedRef = (0, import_react.useRef)(false);
36
+ (0, import_react.useEffect)(() => {
37
+ hydratedRef.current = true;
38
+ }, []);
39
+ const deferredScripts = (0, import_react.useMemo)(() => {
40
+ if (!staticContext) {
41
+ return null;
42
+ }
43
+ const activeDeferreds = staticContext.activeDeferreds || [];
44
+ const _ROUTER_DATA = {
45
+ loaderData: staticContext.loaderData,
46
+ errors: (0, import_utils.serializeErrors)(staticContext.errors)
47
+ };
48
+ let initialScripts = [
49
+ `_ROUTER_DATA = ${(0, import_serialize.serializeJson)(_ROUTER_DATA)};`,
50
+ `_ROUTER_DATA.s = ${setupFnStr}`,
51
+ `_ROUTER_DATA.r = ${resolveFnStr}`,
52
+ `_ROUTER_DATA.p = ${preResolvedFnStr}`
53
+ ].join("\n");
54
+ const deferredDataScripts = [];
55
+ initialScripts += Object.entries(activeDeferreds).map(([routeId, deferredData]) => {
56
+ const pendingKeys = new Set(deferredData.pendingKeys);
57
+ const { deferredKeys } = deferredData;
58
+ const deferredKeyPromiseStr = deferredKeys.map((key) => {
59
+ if (pendingKeys.has(key)) {
60
+ deferredDataScripts.push(
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
+ DeferredDataScript,
63
+ {
64
+ data: deferredData.data[key],
65
+ dataKey: key,
66
+ routeId
67
+ },
68
+ `${routeId} | ${key}`
69
+ )
70
+ );
71
+ return `${JSON.stringify(key)}: _ROUTER_DATA.s(${JSON.stringify(
72
+ routeId
73
+ )},${JSON.stringify(key)}) `;
74
+ } else {
75
+ const trackedPromise = deferredData.data[key];
76
+ if (typeof trackedPromise._error !== "undefined") {
77
+ const error = {
78
+ message: trackedPromise._error.message,
79
+ stack: process.env.NODE_ENV !== "production" ? trackedPromise._error.stack : void 0
80
+ };
81
+ return `${JSON.stringify(
82
+ key
83
+ )}: _ROUTER_DATA.p(${void 0}, ${(0, import_serialize.serializeJson)(error)})`;
84
+ } else {
85
+ if (typeof trackedPromise._data === "undefined") {
86
+ throw new Error(
87
+ `The deferred data for ${key} was not resolved, did you forget to return data from a deferred promise`
88
+ );
89
+ }
90
+ return `${JSON.stringify(key)}: _ROUTER_DATA.p(${(0, import_serialize.serializeJson)(
91
+ trackedPromise._data
92
+ )})`;
93
+ }
94
+ }
95
+ }).join(",\n");
96
+ return `Object.assign(_ROUTER_DATA.loaderData[${JSON.stringify(
97
+ routeId
98
+ )}], {${deferredKeyPromiseStr}});`;
99
+ }).join("\n");
100
+ return [initialScripts, deferredDataScripts];
101
+ }, []);
102
+ if (!deferredScripts) {
103
+ return null;
104
+ }
105
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
106
+ !hydratedRef.current && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
107
+ "script",
108
+ {
109
+ async: true,
110
+ suppressHydrationWarning: true,
111
+ dangerouslySetInnerHTML: { __html: deferredScripts[0] }
112
+ }
113
+ ),
114
+ !hydratedRef.current && deferredScripts[1],
115
+ import_common.JSX_SHELL_STREAM_END_MARK
116
+ ] });
117
+ };
118
+ const DeferredDataScript = ({
119
+ data,
120
+ routeId,
121
+ dataKey
122
+ }) => {
123
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, { children: typeof document === "undefined" && data && dataKey && routeId ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
124
+ import_react_router_dom.Await,
125
+ {
126
+ resolve: data,
127
+ errorElement: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorDeferredDataScript, { routeId, dataKey }),
128
+ children: (data2) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
129
+ "script",
130
+ {
131
+ async: true,
132
+ suppressHydrationWarning: true,
133
+ dangerouslySetInnerHTML: {
134
+ __html: `_ROUTER_DATA.r(${JSON.stringify(
135
+ routeId
136
+ )}, ${JSON.stringify(dataKey)}, ${(0, import_serialize.serializeJson)(data2)});`
137
+ }
138
+ }
139
+ )
140
+ }
141
+ ) : null });
142
+ };
143
+ const ErrorDeferredDataScript = ({
144
+ routeId,
145
+ dataKey
146
+ }) => {
147
+ const error = (0, import_react_router_dom.useAsyncError)();
148
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
+ "script",
150
+ {
151
+ suppressHydrationWarning: true,
152
+ dangerouslySetInnerHTML: {
153
+ __html: `_ROUTER_DATA.r(${JSON.stringify(routeId)}, ${JSON.stringify(
154
+ dataKey
155
+ )}, ${void 0}, ${(0, import_serialize.serializeJson)({
156
+ message: error.message,
157
+ stack: error.stack
158
+ })});`
159
+ }
160
+ }
161
+ );
162
+ };
163
+ var DeferredDataScripts_default = DeferredDataScripts;
164
+ // Annotate the CommonJS export names for ESM import in node:
165
+ 0 && (module.exports = {});
@@ -18,16 +18,129 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var runtime_exports = {};
20
20
  __export(runtime_exports, {
21
+ Await: () => import_react_router_dom.Await,
22
+ BrowserRouter: () => import_react_router_dom.BrowserRouter,
23
+ Form: () => import_react_router_dom.Form,
24
+ HashRouter: () => import_react_router_dom.HashRouter,
25
+ Link: () => import_react_router_dom.Link,
26
+ MemoryRouter: () => import_react_router_dom.MemoryRouter,
27
+ NavLink: () => import_react_router_dom.NavLink,
28
+ Navigate: () => import_react_router_dom.Navigate,
29
+ Outlet: () => import_react_router_dom.Outlet,
30
+ Route: () => import_react_router_dom.Route,
31
+ Router: () => import_react_router_dom.Router,
32
+ RouterProvider: () => import_react_router_dom.RouterProvider,
33
+ Routes: () => import_react_router_dom.Routes,
34
+ ScrollRestoration: () => import_react_router_dom.ScrollRestoration,
35
+ createBrowserRouter: () => import_react_router_dom.createBrowserRouter,
36
+ createHashRouter: () => import_react_router_dom.createHashRouter,
37
+ createMemoryRouter: () => import_react_router_dom.createMemoryRouter,
38
+ createRoutesFromChildren: () => import_react_router_dom.createRoutesFromChildren,
39
+ createRoutesFromElements: () => import_react_router_dom.createRoutesFromElements,
40
+ createSearchParams: () => import_react_router_dom.createSearchParams,
21
41
  default: () => runtime_default,
22
- modifyRoutes: () => import_plugin2.modifyRoutes
42
+ defer: () => import_remix_router.defer,
43
+ generatePath: () => import_react_router_dom.generatePath,
44
+ isRouteErrorResponse: () => import_react_router_dom.isRouteErrorResponse,
45
+ json: () => import_remix_router.json,
46
+ matchPath: () => import_react_router_dom.matchPath,
47
+ matchRoutes: () => import_react_router_dom.matchRoutes,
48
+ modifyRoutes: () => import_plugin2.modifyRoutes,
49
+ redirect: () => import_remix_router.redirect,
50
+ renderMatches: () => import_react_router_dom.renderMatches,
51
+ resolvePath: () => import_react_router_dom.resolvePath,
52
+ useActionData: () => import_react_router_dom.useActionData,
53
+ useAsyncError: () => import_react_router_dom.useAsyncError,
54
+ useAsyncValue: () => import_react_router_dom.useAsyncValue,
55
+ useBeforeUnload: () => import_react_router_dom.useBeforeUnload,
56
+ useFetcher: () => import_react_router_dom.useFetcher,
57
+ useFetchers: () => import_react_router_dom.useFetchers,
58
+ useFormAction: () => import_react_router_dom.useFormAction,
59
+ useHref: () => import_react_router_dom.useHref,
60
+ useInRouterContext: () => import_react_router_dom.useInRouterContext,
61
+ useLinkClickHandler: () => import_react_router_dom.useLinkClickHandler,
62
+ useLoaderData: () => import_react_router_dom.useLoaderData,
63
+ useLocation: () => import_react_router_dom.useLocation,
64
+ useMatch: () => import_react_router_dom.useMatch,
65
+ useMatches: () => import_react_router_dom.useMatches,
66
+ useNavigate: () => import_react_router_dom.useNavigate,
67
+ useNavigation: () => import_react_router_dom.useNavigation,
68
+ useNavigationType: () => import_react_router_dom.useNavigationType,
69
+ useOutlet: () => import_react_router_dom.useOutlet,
70
+ useOutletContext: () => import_react_router_dom.useOutletContext,
71
+ useParams: () => import_react_router_dom.useParams,
72
+ useResolvedPath: () => import_react_router_dom.useResolvedPath,
73
+ useRevalidator: () => import_react_router_dom.useRevalidator,
74
+ useRouteError: () => import_react_router_dom.useRouteError,
75
+ useRouteLoaderData: () => import_react_router_dom.useRouteLoaderData,
76
+ useRoutes: () => import_react_router_dom.useRoutes,
77
+ useSearchParams: () => import_react_router_dom.useSearchParams,
78
+ useSubmit: () => import_react_router_dom.useSubmit
23
79
  });
24
80
  module.exports = __toCommonJS(runtime_exports);
25
81
  var import_plugin = require("./plugin");
26
82
  var import_plugin2 = require("./plugin");
27
- __reExport(runtime_exports, require("react-router-dom"), module.exports);
28
83
  __reExport(runtime_exports, require("./withRouter"), module.exports);
84
+ var import_react_router_dom = require("react-router-dom");
85
+ var import_remix_router = require("@modern-js/utils/remix-router");
29
86
  var runtime_default = import_plugin.routerPlugin;
30
87
  // Annotate the CommonJS export names for ESM import in node:
31
88
  0 && (module.exports = {
32
- modifyRoutes
89
+ Await,
90
+ BrowserRouter,
91
+ Form,
92
+ HashRouter,
93
+ Link,
94
+ MemoryRouter,
95
+ NavLink,
96
+ Navigate,
97
+ Outlet,
98
+ Route,
99
+ Router,
100
+ RouterProvider,
101
+ Routes,
102
+ ScrollRestoration,
103
+ createBrowserRouter,
104
+ createHashRouter,
105
+ createMemoryRouter,
106
+ createRoutesFromChildren,
107
+ createRoutesFromElements,
108
+ createSearchParams,
109
+ defer,
110
+ generatePath,
111
+ isRouteErrorResponse,
112
+ json,
113
+ matchPath,
114
+ matchRoutes,
115
+ modifyRoutes,
116
+ redirect,
117
+ renderMatches,
118
+ resolvePath,
119
+ useActionData,
120
+ useAsyncError,
121
+ useAsyncValue,
122
+ useBeforeUnload,
123
+ useFetcher,
124
+ useFetchers,
125
+ useFormAction,
126
+ useHref,
127
+ useInRouterContext,
128
+ useLinkClickHandler,
129
+ useLoaderData,
130
+ useLocation,
131
+ useMatch,
132
+ useMatches,
133
+ useNavigate,
134
+ useNavigation,
135
+ useNavigationType,
136
+ useOutlet,
137
+ useOutletContext,
138
+ useParams,
139
+ useResolvedPath,
140
+ useRevalidator,
141
+ useRouteError,
142
+ useRouteLoaderData,
143
+ useRoutes,
144
+ useSearchParams,
145
+ useSubmit
33
146
  });
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -79,13 +83,21 @@ const routerPlugin = ({
79
83
  const routes = createRoutes ? createRoutes() : (0, import_react_router_dom.createRoutesFromElements)((0, import_utils.renderRoutes)(finalRouteConfig));
80
84
  const baseUrl = ((_a = window._SERVER_DATA) == null ? void 0 : _a.router.baseUrl) || select(location.pathname);
81
85
  const _basename = baseUrl === "/" ? (0, import_utils.urlJoin)(baseUrl, basename) : baseUrl;
82
- const router = supportHtml5History ? (0, import_react_router_dom.createBrowserRouter)(routes, { basename: _basename }) : (0, import_react_router_dom.createHashRouter)(routes, { basename: _basename });
83
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
84
- ...props,
85
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_router_dom.RouterProvider, {
86
- router
87
- })
86
+ let hydrationData = window._ROUTER_DATA;
87
+ if (hydrationData == null ? void 0 : hydrationData.errors) {
88
+ hydrationData = {
89
+ ...hydrationData,
90
+ errors: (0, import_utils.deserializeErrors)(hydrationData.errors)
91
+ };
92
+ }
93
+ const router = supportHtml5History ? (0, import_react_router_dom.createBrowserRouter)(routes, {
94
+ basename: _basename,
95
+ hydrationData
96
+ }) : (0, import_react_router_dom.createHashRouter)(routes, {
97
+ basename: _basename,
98
+ hydrationData
88
99
  });
100
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_router_dom.RouterProvider, { router }) });
89
101
  };
90
102
  };
91
103
  const RouteApp = getRouteApp();
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -30,8 +34,7 @@ __export(plugin_node_exports, {
30
34
  module.exports = __toCommonJS(plugin_node_exports);
31
35
  var import_jsx_runtime = require("react/jsx-runtime");
32
36
  var import_react = require("react");
33
- var import_serialize_javascript = __toESM(require("serialize-javascript"));
34
- var import_router = require("@remix-run/router");
37
+ var import_remix_router = require("@modern-js/utils/remix-router");
35
38
  var import_server = require("react-router-dom/server");
36
39
  var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
37
40
  var import_react_router_dom = require("react-router-dom");
@@ -65,26 +68,6 @@ function createFetchHeaders(requestHeaders) {
65
68
  }
66
69
  return headers;
67
70
  }
68
- function serializeErrors(errors) {
69
- if (!errors) {
70
- return null;
71
- }
72
- const entries = Object.entries(errors);
73
- const serialized = {};
74
- for (const [key, val] of entries) {
75
- if ((0, import_router.isRouteErrorResponse)(val)) {
76
- serialized[key] = { ...val, __type: "RouteErrorResponse" };
77
- } else if (val instanceof Error) {
78
- serialized[key] = {
79
- message: val.message,
80
- __type: "Error"
81
- };
82
- } else {
83
- serialized[key] = val;
84
- }
85
- }
86
- return serialized;
87
- }
88
71
  const routerPlugin = ({
89
72
  basename = "",
90
73
  routesConfig,
@@ -98,11 +81,11 @@ const routerPlugin = ({
98
81
  if (!routesConfig && !createRoutes) {
99
82
  return next({ context });
100
83
  }
101
- const { request } = context.ssrContext;
84
+ const { request, mode: ssrMode } = context.ssrContext;
102
85
  const baseUrl = request.baseUrl;
103
86
  const _basename = baseUrl === "/" ? (0, import_utils.urlJoin)(baseUrl, basename) : baseUrl;
104
- const routes = createRoutes ? createRoutes() : (0, import_react_router_dom.createRoutesFromElements)((0, import_utils.renderRoutes)(routesConfig));
105
- const { query } = (0, import_router.createStaticHandler)(routes, {
87
+ const routes = createRoutes ? createRoutes() : (0, import_react_router_dom.createRoutesFromElements)((0, import_utils.renderRoutes)(routesConfig, ssrMode));
88
+ const { query } = (0, import_remix_router.createStaticHandler)(routes, {
106
89
  basename: _basename
107
90
  });
108
91
  const remixRequest = createFetchRequest(request);
@@ -124,30 +107,14 @@ const routerPlugin = ({
124
107
  const getRouteApp = () => {
125
108
  return (props) => {
126
109
  const { router, routerContext } = (0, import_react.useContext)(import_core.RuntimeReactContext);
127
- const data = {
128
- loaderData: routerContext.loaderData,
129
- actionData: routerContext.actionData,
130
- errors: serializeErrors(routerContext.errors)
131
- };
132
- const hydrateScript = `window.__staticRouterHydrationData = ${(0, import_serialize_javascript.default)(
133
- data,
134
- { isJSON: true }
135
- )};`;
136
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(App, {
137
- ...props,
138
- children: [
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_server.StaticRouterProvider, {
140
- router,
141
- context: routerContext,
142
- hydrate: false
143
- }),
144
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("script", {
145
- suppressHydrationWarning: true,
146
- id: "the-nonce",
147
- dangerouslySetInnerHTML: { __html: hydrateScript }
148
- })
149
- ]
150
- });
110
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
111
+ import_server.StaticRouterProvider,
112
+ {
113
+ router,
114
+ context: routerContext,
115
+ hydrate: false
116
+ }
117
+ ) });
151
118
  };
152
119
  };
153
120
  const RouteApp = getRouteApp();