@modern-js/runtime 3.0.5 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cjs/cli/code.js +9 -8
  2. package/dist/cjs/cli/template.js +46 -8
  3. package/dist/cjs/core/browser/index.js +4 -1
  4. package/dist/cjs/core/server/stream/createReadableStream.js +2 -0
  5. package/dist/cjs/core/server/string/index.js +4 -1
  6. package/dist/cjs/router/cli/code/index.js +1 -1
  7. package/dist/cjs/router/cli/code/utils.js +5 -5
  8. package/dist/cjs/router/runtime/PrefetchLink.js +1 -4
  9. package/dist/esm/cli/code.mjs +9 -8
  10. package/dist/esm/cli/index.mjs +2 -1
  11. package/dist/esm/cli/ssr/index.mjs +2 -1
  12. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +1 -1
  13. package/dist/esm/cli/template.mjs +48 -10
  14. package/dist/esm/core/browser/index.mjs +4 -1
  15. package/dist/esm/core/constants.mjs +1 -1
  16. package/dist/esm/core/context/index.mjs +3 -3
  17. package/dist/esm/core/index.mjs +2 -3
  18. package/dist/esm/core/server/index.mjs +3 -2
  19. package/dist/esm/core/server/react/index.mjs +2 -3
  20. package/dist/esm/core/server/server.mjs +3 -4
  21. package/dist/esm/core/server/stream/createReadableStream.mjs +2 -0
  22. package/dist/esm/core/server/stream/shared.mjs +1 -1
  23. package/dist/esm/core/server/string/index.mjs +4 -1
  24. package/dist/esm/document/cli/index.mjs +2 -1
  25. package/dist/esm/exports/head.mjs +2 -1
  26. package/dist/esm/exports/loadable.mjs +2 -2
  27. package/dist/esm/index.mjs +5 -6
  28. package/dist/esm/internal.mjs +1 -2
  29. package/dist/esm/react-server.mjs +3 -4
  30. package/dist/esm/router/cli/code/getClientRoutes/index.mjs +1 -2
  31. package/dist/esm/router/cli/code/index.mjs +2 -2
  32. package/dist/esm/router/cli/code/utils.mjs +2 -2
  33. package/dist/esm/router/cli/index.mjs +2 -1
  34. package/dist/esm/router/internal.mjs +1 -2
  35. package/dist/esm/router/runtime/DeferredDataScripts.mjs +1 -1
  36. package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +1 -1
  37. package/dist/esm/router/runtime/PrefetchLink.mjs +1 -5
  38. package/dist/esm/router/runtime/index.mjs +3 -3
  39. package/dist/esm/router/runtime/internal.mjs +3 -2
  40. package/dist/esm/router/runtime/plugin.mjs +1 -1
  41. package/dist/esm-node/cli/code.mjs +9 -8
  42. package/dist/esm-node/cli/index.mjs +2 -1
  43. package/dist/esm-node/cli/ssr/index.mjs +2 -1
  44. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +1 -1
  45. package/dist/esm-node/cli/template.mjs +48 -10
  46. package/dist/esm-node/core/browser/index.mjs +4 -1
  47. package/dist/esm-node/core/constants.mjs +1 -1
  48. package/dist/esm-node/core/context/index.mjs +3 -3
  49. package/dist/esm-node/core/index.mjs +2 -3
  50. package/dist/esm-node/core/server/index.mjs +3 -2
  51. package/dist/esm-node/core/server/react/index.mjs +2 -3
  52. package/dist/esm-node/core/server/server.mjs +3 -4
  53. package/dist/esm-node/core/server/stream/createReadableStream.mjs +2 -0
  54. package/dist/esm-node/core/server/stream/shared.mjs +1 -1
  55. package/dist/esm-node/core/server/string/index.mjs +4 -1
  56. package/dist/esm-node/document/cli/index.mjs +2 -1
  57. package/dist/esm-node/exports/head.mjs +2 -1
  58. package/dist/esm-node/exports/loadable.mjs +2 -2
  59. package/dist/esm-node/index.mjs +5 -6
  60. package/dist/esm-node/internal.mjs +1 -2
  61. package/dist/esm-node/react-server.mjs +3 -4
  62. package/dist/esm-node/router/cli/code/getClientRoutes/index.mjs +1 -2
  63. package/dist/esm-node/router/cli/code/index.mjs +2 -2
  64. package/dist/esm-node/router/cli/code/utils.mjs +2 -2
  65. package/dist/esm-node/router/cli/index.mjs +2 -1
  66. package/dist/esm-node/router/internal.mjs +1 -2
  67. package/dist/esm-node/router/runtime/DeferredDataScripts.mjs +1 -1
  68. package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +1 -1
  69. package/dist/esm-node/router/runtime/PrefetchLink.mjs +1 -5
  70. package/dist/esm-node/router/runtime/index.mjs +3 -3
  71. package/dist/esm-node/router/runtime/internal.mjs +3 -2
  72. package/dist/esm-node/router/runtime/plugin.mjs +1 -1
  73. package/dist/types/cli/template.d.ts +2 -1
  74. package/dist/types/router/cli/code/utils.d.ts +1 -1
  75. package/package.json +11 -11
  76. package/{rstest.config.ts → rstest.config.mts} +0 -6
@@ -59,13 +59,7 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
59
59
  nestedRoutesEntry
60
60
  });
61
61
  let indexCode = '';
62
- indexCode = !ssrMode && config.server.rsc ? external_template_js_namespaceObject.entryForCSRWithRSC({
63
- metaName,
64
- entryName,
65
- mountId,
66
- urlPath: serverRoutes.find((route)=>route.entryName === entryName)?.urlPath,
67
- isNestedRouter: entrypoint.nestedRoutesEntry
68
- }) : external_template_js_namespaceObject.index({
62
+ indexCode = ssrMode || !config.server.rsc || customEntry ? external_template_js_namespaceObject.index({
69
63
  srcDirectory,
70
64
  internalSrcAlias,
71
65
  metaName,
@@ -75,6 +69,12 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
75
69
  mountId,
76
70
  enableRsc: config.server.rsc,
77
71
  isNestedRouter: !!entrypoint.nestedRoutesEntry
72
+ }) : external_template_js_namespaceObject.entryForCSRWithRSC({
73
+ metaName,
74
+ entryName,
75
+ mountId,
76
+ urlPath: serverRoutes.find((route)=>route.entryName === entryName)?.urlPath,
77
+ isNestedRouter: entrypoint.nestedRoutesEntry
78
78
  });
79
79
  const indexFile = external_path_default().resolve(internalDirectory, `./${entryName}/${external_constants_js_namespaceObject.ENTRY_POINT_FILE_NAME}`);
80
80
  await utils_namespaceObject.fs.outputFile(indexFile, indexCode, 'utf8');
@@ -141,7 +141,8 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
141
141
  });
142
142
  await utils_namespaceObject.fs.outputFile(AppProxyPath, appProxyCode);
143
143
  contextCode = external_template_js_namespaceObject.runtimeGlobalContextForRSCClient({
144
- metaName
144
+ metaName,
145
+ customEntry
145
146
  });
146
147
  const contextServerCode = external_template_js_namespaceObject.runtimeGlobalContextForRSCServer({
147
148
  metaName
@@ -197,16 +197,54 @@ const runtimeGlobalContextForRSCServer = ({ metaName })=>`
197
197
  App: DefaultRoot,
198
198
  RSCRoot: AppProxy,
199
199
  });`;
200
- const runtimeGlobalContextForRSCClient = ({ metaName })=>`
201
- import { createElement, Fragment } from 'react';
202
- import { setGlobalContext } from '@${metaName}/runtime/context';
200
+ const runtimeGlobalContextForRSCClient = ({ metaName, customEntry })=>`
201
+ ${customEntry ? `import {
202
+ RscClientRoot,
203
+ createFromFetch,
204
+ createFromReadableStream,
205
+ isRedirectResponse,
206
+ rscStream,
207
+ callServer,
208
+ setServerCallback,
209
+ } from '@${metaName}/runtime/rsc/client';` : ''}
210
+ import { createElement, Fragment } from 'react';
211
+ import { setGlobalContext } from '@${metaName}/runtime/context';
203
212
 
204
- const DefaultRoot = ({ children }: { children?: ReactNode }) =>
205
- createElement(Fragment, null, children);
213
+ ${customEntry ? 'setServerCallback(callServer);' : ''}
206
214
 
207
- setGlobalContext({
208
- App: DefaultRoot
209
- });`;
215
+ ${customEntry ? `const handleRedirectResponse = (res: Response) => {
216
+ const { headers } = res;
217
+ const location = headers.get('X-Modernjs-Redirect');
218
+ const baseUrl = headers.get('X-Modernjs-BaseUrl');
219
+ if (location) {
220
+ if (baseUrl && baseUrl !== '/') {
221
+ window.location.replace(baseUrl + location);
222
+ } else {
223
+ window.location.replace(location);
224
+ }
225
+ return res;
226
+ }
227
+ return res;
228
+ };
229
+
230
+ const data = ${process.env.MODERN_DISABLE_INJECT_RSC_DATA ? `createFromFetch(
231
+ fetch(location.pathname, {
232
+ headers: {
233
+ 'x-rsc-tree': 'true',
234
+ },
235
+ }).then(handleRedirectResponse),
236
+ )` : `createFromReadableStream(rscStream, {
237
+ callServer: callServer,
238
+ })`};` : ''}
239
+
240
+ const DefaultRoot = ({ children }: { children?: ReactNode }) =>
241
+ createElement(Fragment, null, children);
242
+
243
+ ${customEntry ? 'const RSCRoot = () => createElement(RscClientRoot, { rscPayload: data });' : ''}
244
+
245
+ setGlobalContext({
246
+ App: ${customEntry ? 'RSCRoot' : 'DefaultRoot'}
247
+ });`;
210
248
  const AppProxyForRSC = ({ srcDirectory, internalSrcAlias, entry, customEntry })=>`
211
249
  import App from '${(0, utils_namespaceObject.formatImportPath)(customEntry ? entry.replace(/entry\.[tj]sx/, 'App').replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace('.tsx', ''))}';
212
250
  import React from 'react';
@@ -39,6 +39,7 @@ __webpack_require__.d(__webpack_exports__, {
39
39
  renderWithReact18: ()=>renderWithReact18,
40
40
  renderWithReact17: ()=>renderWithReact17
41
41
  });
42
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
42
43
  const external_cookie_namespaceObject = require("cookie");
43
44
  var external_cookie_default = /*#__PURE__*/ __webpack_require__.n(external_cookie_namespaceObject);
44
45
  const index_js_namespaceObject = require("../context/index.js");
@@ -128,7 +129,9 @@ async function renderWithReact17(App, rootElement) {
128
129
  }
129
130
  async function hydrateWithReact18(App, rootElement) {
130
131
  const ReactDOM = await import("react-dom/client");
131
- const root = ReactDOM.hydrateRoot(rootElement, App);
132
+ const root = ReactDOM.hydrateRoot(rootElement, App, {
133
+ identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX
134
+ });
132
135
  return root;
133
136
  }
134
137
  async function hydrateWithReact17(App, rootElement, callback) {
@@ -28,6 +28,7 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const external_stream_namespaceObject = require("stream");
30
30
  const node_namespaceObject = require("@modern-js/runtime-utils/node");
31
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
31
32
  const external_common_js_namespaceObject = require("../../../common.js");
32
33
  const external_constants_js_namespaceObject = require("../../constants.js");
33
34
  const index_js_namespaceObject = require("../../context/index.js");
@@ -65,6 +66,7 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
65
66
  return new Promise((resolve)=>{
66
67
  const { pipe: reactStreamingPipe } = renderToPipeableStream(processedRootElement, {
67
68
  nonce: config.nonce,
69
+ identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX,
68
70
  [onReady] () {
69
71
  let styledComponentsStyleTags = '';
70
72
  extenders.forEach((extender)=>{
@@ -36,6 +36,7 @@ __webpack_require__.d(__webpack_exports__, {
36
36
  renderString: ()=>renderString
37
37
  });
38
38
  const time_namespaceObject = require("@modern-js/runtime-utils/time");
39
+ const constants_namespaceObject = require("@modern-js/utils/universal/constants");
39
40
  const server_namespaceObject = require("react-dom/server");
40
41
  var server_default = /*#__PURE__*/ __webpack_require__.n(server_namespaceObject);
41
42
  const external_react_helmet_namespaceObject = require("react-helmet");
@@ -104,7 +105,9 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
104
105
  const finalApp = collectors.reduce((pre, creator)=>creator.collect?.(pre) || pre, App);
105
106
  try {
106
107
  const end = (0, time_namespaceObject.time)();
107
- html = server_default().renderToString(finalApp);
108
+ html = server_default().renderToString(finalApp, {
109
+ identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX
110
+ });
108
111
  chunkSet.renderLevel = external_constants_js_namespaceObject.RenderLevel.SERVER_RENDER;
109
112
  helmetData = external_react_helmet_default().renderStatic();
110
113
  const cost = end();
@@ -160,7 +160,7 @@ const generateCode = async (appContext, config, entrypoints, api)=>{
160
160
  }
161
161
  const serverLoaderCombined = external_templates_js_namespaceObject.ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext);
162
162
  if (serverLoaderCombined) {
163
- const serverLoaderFile = (0, external_utils_js_namespaceObject.getServerCombinedModueFile)(internalDirectory, entryName);
163
+ const serverLoaderFile = (0, external_utils_js_namespaceObject.getServerCombinedModuleFile)(internalDirectory, entryName);
164
164
  await utils_namespaceObject.fs.outputFile(serverLoaderFile, serverLoaderCombined);
165
165
  }
166
166
  await utils_namespaceObject.fs.outputFile(external_path_default().resolve(internalDirectory, `./${entryName}/${external_constants_js_namespaceObject.FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
@@ -34,10 +34,10 @@ var __webpack_exports__ = {};
34
34
  __webpack_require__.r(__webpack_exports__);
35
35
  __webpack_require__.d(__webpack_exports__, {
36
36
  parseModule: ()=>parseModule,
37
+ getServerCombinedModuleFile: ()=>getServerCombinedModuleFile,
37
38
  hasLoader: ()=>hasLoader,
38
- isPageComponentFile: ()=>isPageComponentFile,
39
39
  getPathWithoutExt: ()=>getPathWithoutExt,
40
- getServerCombinedModueFile: ()=>getServerCombinedModueFile,
40
+ isPageComponentFile: ()=>isPageComponentFile,
41
41
  getServerLoadersFile: ()=>getServerLoadersFile,
42
42
  walkDirectory: ()=>walkDirectory,
43
43
  hasAction: ()=>hasAction,
@@ -112,13 +112,13 @@ const hasAction = async (filename, source)=>{
112
112
  return false;
113
113
  };
114
114
  const getServerLoadersFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'route-server-loaders.js');
115
- const getServerCombinedModueFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
115
+ const getServerCombinedModuleFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
116
116
  const getPathWithoutExt = (filename)=>{
117
117
  const extname = external_path_default().extname(filename);
118
118
  return extname ? filename.slice(0, -extname.length) : filename;
119
119
  };
120
120
  exports.getPathWithoutExt = __webpack_exports__.getPathWithoutExt;
121
- exports.getServerCombinedModueFile = __webpack_exports__.getServerCombinedModueFile;
121
+ exports.getServerCombinedModuleFile = __webpack_exports__.getServerCombinedModuleFile;
122
122
  exports.getServerLoadersFile = __webpack_exports__.getServerLoadersFile;
123
123
  exports.hasAction = __webpack_exports__.hasAction;
124
124
  exports.hasLoader = __webpack_exports__.hasLoader;
@@ -128,7 +128,7 @@ exports.replaceWithAlias = __webpack_exports__.replaceWithAlias;
128
128
  exports.walkDirectory = __webpack_exports__.walkDirectory;
129
129
  for(var __rspack_i in __webpack_exports__)if (-1 === [
130
130
  "getPathWithoutExt",
131
- "getServerCombinedModueFile",
131
+ "getServerCombinedModuleFile",
132
132
  "getServerLoadersFile",
133
133
  "hasAction",
134
134
  "hasLoader",
@@ -18,9 +18,6 @@ var __webpack_require__ = {};
18
18
  });
19
19
  };
20
20
  })();
21
- (()=>{
22
- __webpack_require__.e = ()=>Promise.resolve();
23
- })();
24
21
  (()=>{
25
22
  __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
23
  })();
@@ -183,7 +180,7 @@ const createPrefetchLink = (Link)=>/*#__PURE__*/ external_react_default().forwar
183
180
  ...props,
184
181
  ...prefetchHandlers
185
182
  }),
186
- shouldPrefetch && __webpack_require__.e && !isAbsolute ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PrefetchPageLinks, {
183
+ shouldPrefetch && __webpack_chunk_load__ && !isAbsolute ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PrefetchPageLinks, {
187
184
  path: resolvedPath
188
185
  }) : null
189
186
  ]
@@ -21,13 +21,7 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
21
21
  nestedRoutesEntry
22
22
  });
23
23
  let indexCode = '';
24
- indexCode = !ssrMode && config.server.rsc ? entryForCSRWithRSC({
25
- metaName,
26
- entryName,
27
- mountId,
28
- urlPath: serverRoutes.find((route)=>route.entryName === entryName)?.urlPath,
29
- isNestedRouter: entrypoint.nestedRoutesEntry
30
- }) : index({
24
+ indexCode = ssrMode || !config.server.rsc || customEntry ? index({
31
25
  srcDirectory,
32
26
  internalSrcAlias,
33
27
  metaName,
@@ -37,6 +31,12 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
37
31
  mountId,
38
32
  enableRsc: config.server.rsc,
39
33
  isNestedRouter: !!entrypoint.nestedRoutesEntry
34
+ }) : entryForCSRWithRSC({
35
+ metaName,
36
+ entryName,
37
+ mountId,
38
+ urlPath: serverRoutes.find((route)=>route.entryName === entryName)?.urlPath,
39
+ isNestedRouter: entrypoint.nestedRoutesEntry
40
40
  });
41
41
  const indexFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_FILE_NAME}`);
42
42
  await fs.outputFile(indexFile, indexCode, 'utf8');
@@ -103,7 +103,8 @@ const generateCode = async (entrypoints, appContext, config, hooks)=>{
103
103
  });
104
104
  await fs.outputFile(AppProxyPath, appProxyCode);
105
105
  contextCode = runtimeGlobalContextForRSCClient({
106
- metaName
106
+ metaName,
107
+ customEntry
107
108
  });
108
109
  const contextServerCode = runtimeGlobalContextForRSCServer({
109
110
  metaName
@@ -89,4 +89,5 @@ const runtimePlugin = (params)=>({
89
89
  }
90
90
  });
91
91
  const cli = runtimePlugin;
92
- export { cli as default, documentPlugin, isRuntimeEntry, routerPlugin, runtimePlugin, ssrPlugin };
92
+ export default cli;
93
+ export { documentPlugin, isRuntimeEntry, routerPlugin, runtimePlugin, ssrPlugin };
@@ -105,4 +105,5 @@ const ssrPlugin = ()=>({
105
105
  }
106
106
  });
107
107
  const cli_ssr = ssrPlugin;
108
- export { cli_ssr as default, ssrPlugin };
108
+ export default cli_ssr;
109
+ export { ssrPlugin };
@@ -73,4 +73,4 @@ class LoadablePlugin {
73
73
  }
74
74
  }
75
75
  const loadable_bundler_plugin = LoadablePlugin;
76
- export { loadable_bundler_plugin as default };
76
+ export default loadable_bundler_plugin;
@@ -152,16 +152,54 @@ const runtimeGlobalContextForRSCServer = ({ metaName })=>`
152
152
  App: DefaultRoot,
153
153
  RSCRoot: AppProxy,
154
154
  });`;
155
- const runtimeGlobalContextForRSCClient = ({ metaName })=>`
156
- import { createElement, Fragment } from 'react';
157
- import { setGlobalContext } from '@${metaName}/runtime/context';
158
-
159
- const DefaultRoot = ({ children }: { children?: ReactNode }) =>
160
- createElement(Fragment, null, children);
161
-
162
- setGlobalContext({
163
- App: DefaultRoot
164
- });`;
155
+ const runtimeGlobalContextForRSCClient = ({ metaName, customEntry })=>`
156
+ ${customEntry ? `import {
157
+ RscClientRoot,
158
+ createFromFetch,
159
+ createFromReadableStream,
160
+ isRedirectResponse,
161
+ rscStream,
162
+ callServer,
163
+ setServerCallback,
164
+ } from '@${metaName}/runtime/rsc/client';` : ''}
165
+ import { createElement, Fragment } from 'react';
166
+ import { setGlobalContext } from '@${metaName}/runtime/context';
167
+
168
+ ${customEntry ? 'setServerCallback(callServer);' : ''}
169
+
170
+ ${customEntry ? `const handleRedirectResponse = (res: Response) => {
171
+ const { headers } = res;
172
+ const location = headers.get('X-Modernjs-Redirect');
173
+ const baseUrl = headers.get('X-Modernjs-BaseUrl');
174
+ if (location) {
175
+ if (baseUrl && baseUrl !== '/') {
176
+ window.location.replace(baseUrl + location);
177
+ } else {
178
+ window.location.replace(location);
179
+ }
180
+ return res;
181
+ }
182
+ return res;
183
+ };
184
+
185
+ const data = ${process.env.MODERN_DISABLE_INJECT_RSC_DATA ? `createFromFetch(
186
+ fetch(location.pathname, {
187
+ headers: {
188
+ 'x-rsc-tree': 'true',
189
+ },
190
+ }).then(handleRedirectResponse),
191
+ )` : `createFromReadableStream(rscStream, {
192
+ callServer: callServer,
193
+ })`};` : ''}
194
+
195
+ const DefaultRoot = ({ children }: { children?: ReactNode }) =>
196
+ createElement(Fragment, null, children);
197
+
198
+ ${customEntry ? 'const RSCRoot = () => createElement(RscClientRoot, { rscPayload: data });' : ''}
199
+
200
+ setGlobalContext({
201
+ App: ${customEntry ? 'RSCRoot' : 'DefaultRoot'}
202
+ });`;
165
203
  const AppProxyForRSC = ({ srcDirectory, internalSrcAlias, entry, customEntry })=>`
166
204
  import App from '${formatImportPath(customEntry ? entry.replace(/entry\.[tj]sx/, 'App').replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace('.tsx', ''))}';
167
205
  import React from 'react';
@@ -1,3 +1,4 @@
1
+ import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
1
2
  import cookie from "cookie";
2
3
  import { getGlobalInternalRuntimeContext } from "../context/index.mjs";
3
4
  import { getInitialContext } from "../context/runtime.mjs";
@@ -86,7 +87,9 @@ async function renderWithReact17(App, rootElement) {
86
87
  }
87
88
  async function hydrateWithReact18(App, rootElement) {
88
89
  const ReactDOM = await import("react-dom/client");
89
- const root = ReactDOM.hydrateRoot(rootElement, App);
90
+ const root = ReactDOM.hydrateRoot(rootElement, App, {
91
+ identifierPrefix: SSR_HYDRATION_ID_PREFIX
92
+ });
90
93
  return root;
91
94
  }
92
95
  async function hydrateWithReact17(App, rootElement, callback) {
@@ -5,4 +5,4 @@ var constants_RenderLevel = /*#__PURE__*/ function(RenderLevel) {
5
5
  }({});
6
6
  const SSR_DATA_JSON_ID = '__MODERN_SSR_DATA__';
7
7
  const ROUTER_DATA_JSON_ID = '__MODERN_ROUTER_DATA__';
8
- export { ROUTER_DATA_JSON_ID, constants_RenderLevel as RenderLevel, SSR_DATA_JSON_ID };
8
+ export { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID, constants_RenderLevel as RenderLevel };
@@ -1,5 +1,3 @@
1
- import { InternalRuntimeContext, RuntimeContext, getInitialContext } from "./runtime.mjs";
2
- import { getServerPayload, setServerPayload } from "./serverPayload/index.mjs";
3
1
  const globalContext = {};
4
2
  function getGlobalIsRscClient() {
5
3
  return globalContext.isRscClient;
@@ -42,4 +40,6 @@ function getGlobalLayoutApp() {
42
40
  function getGlobalBasename() {
43
41
  return globalContext.basename;
44
42
  }
45
- export { InternalRuntimeContext, RuntimeContext, getCurrentEntryName, getGlobalApp, getGlobalBasename, getGlobalEnableRsc, getGlobalInternalRuntimeContext, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRSCRoot, getGlobalRoutes, getInitialContext, getServerPayload, setGlobalContext, setGlobalInternalRuntimeContext, setServerPayload };
43
+ export { InternalRuntimeContext, RuntimeContext, getInitialContext } from "./runtime.mjs";
44
+ export { getServerPayload, setServerPayload } from "./serverPayload/index.mjs";
45
+ export { getCurrentEntryName, getGlobalApp, getGlobalBasename, getGlobalEnableRsc, getGlobalInternalRuntimeContext, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRSCRoot, getGlobalRoutes, setGlobalContext, setGlobalInternalRuntimeContext };
@@ -1,3 +1,2 @@
1
- import { defineRuntimeConfig } from "./config.mjs";
2
- import { RuntimeContext, useRuntimeContext } from "./context/runtime.mjs";
3
- export { RuntimeContext, defineRuntimeConfig, useRuntimeContext };
1
+ export { defineRuntimeConfig } from "./config.mjs";
2
+ export { RuntimeContext, useRuntimeContext } from "./context/runtime.mjs";
@@ -1,7 +1,8 @@
1
- import { NoSSR, NoSSRCache } from "./react/index.mjs";
2
1
  const ssr = (_config)=>({
3
2
  name: '@modern-js/plugin-ssr',
4
3
  setup: (_api)=>{}
5
4
  });
6
5
  const server = ssr;
7
- export { NoSSR, NoSSRCache, server as default, ssr };
6
+ export { NoSSR, NoSSRCache } from "./react/index.mjs";
7
+ export default server;
8
+ export { ssr };
@@ -1,3 +1,2 @@
1
- import { NoSSR } from "./nossr/index.mjs";
2
- import { NoSSRCache } from "./no-ssr-cache/index.mjs";
3
- export { NoSSR, NoSSRCache };
1
+ export { NoSSR } from "./nossr/index.mjs";
2
+ export { NoSSRCache } from "./no-ssr-cache/index.mjs";
@@ -1,4 +1,3 @@
1
- import { renderString } from "./string/index.mjs";
2
- import { renderStreaming } from "./stream/index.mjs";
3
- import { createRequestHandler } from "./requestHandler.mjs";
4
- export { createRequestHandler, renderStreaming, renderString };
1
+ export { renderString } from "./string/index.mjs";
2
+ export { renderStreaming } from "./stream/index.mjs";
3
+ export { createRequestHandler } from "./requestHandler.mjs";
@@ -1,5 +1,6 @@
1
1
  import { PassThrough, Readable, Transform } from "stream";
2
2
  import { storage } from "@modern-js/runtime-utils/node";
3
+ import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
3
4
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common.mjs";
4
5
  import { RenderLevel } from "../../constants.mjs";
5
6
  import { getGlobalInternalRuntimeContext } from "../../context/index.mjs";
@@ -37,6 +38,7 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
37
38
  return new Promise((resolve)=>{
38
39
  const { pipe: reactStreamingPipe } = renderToPipeableStream(processedRootElement, {
39
40
  nonce: config.nonce,
41
+ identifierPrefix: SSR_HYDRATION_ID_PREFIX,
40
42
  [onReady] () {
41
43
  let styledComponentsStyleTags = '';
42
44
  extenders.forEach((extender)=>{
@@ -105,4 +105,4 @@ function createRenderStreaming(createReadableStreamPromise) {
105
105
  return stream;
106
106
  };
107
107
  }
108
- export { shared_ShellChunkStatus as ShellChunkStatus, createRenderStreaming, encodeForWebStream, getReadableStreamFromString, resolveStreamingMode };
108
+ export { createRenderStreaming, encodeForWebStream, getReadableStreamFromString, resolveStreamingMode, shared_ShellChunkStatus as ShellChunkStatus };
@@ -1,4 +1,5 @@
1
1
  import { time } from "@modern-js/runtime-utils/time";
2
+ import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
2
3
  import server from "react-dom/server";
3
4
  import react_helmet from "react-helmet";
4
5
  import { RenderLevel } from "../../constants.mjs";
@@ -65,7 +66,9 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
65
66
  const finalApp = collectors.reduce((pre, creator)=>creator.collect?.(pre) || pre, App);
66
67
  try {
67
68
  const end = time();
68
- html = server.renderToString(finalApp);
69
+ html = server.renderToString(finalApp, {
70
+ identifierPrefix: SSR_HYDRATION_ID_PREFIX
71
+ });
69
72
  chunkSet.renderLevel = RenderLevel.SERVER_RENDER;
70
73
  helmetData = react_helmet.renderStatic();
71
74
  const cost = end();
@@ -347,4 +347,5 @@ const documentPlugin = ()=>({
347
347
  }
348
348
  });
349
349
  const cli = documentPlugin;
350
- export { cli as default, documentPlugin, getDocumentByEntryName };
350
+ export default cli;
351
+ export { documentPlugin, getDocumentByEntryName };
@@ -1,4 +1,5 @@
1
1
  "use client";
2
2
  import react_helmet, { Helmet } from "react-helmet";
3
3
  const head = react_helmet;
4
- export { Helmet, head as default };
4
+ export default head;
5
+ export { Helmet };
@@ -1,4 +1,4 @@
1
- import component from "@loadable/component";
2
1
  export * from "@loadable/component";
2
+ import component from "@loadable/component";
3
3
  const loadable = component;
4
- export { loadable as default };
4
+ export default loadable;
@@ -1,6 +1,5 @@
1
- import { isBrowser } from "./common.mjs";
2
- import { getMonitors } from "./core/context/monitors/index.mjs";
3
- import { getRequest } from "./core/context/request/index.mjs";
4
- import { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
5
- import { RuntimeContext, defineRuntimeConfig, useRuntimeContext } from "./core/index.mjs";
6
- export { RuntimeContext, defineRuntimeConfig, getMonitors, getRequest, isBrowser, redirect, setHeaders, setStatus, useRuntimeContext };
1
+ export { isBrowser } from "./common.mjs";
2
+ export { getMonitors } from "./core/context/monitors/index.mjs";
3
+ export { getRequest } from "./core/context/request/index.mjs";
4
+ export { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
5
+ export { RuntimeContext, defineRuntimeConfig, useRuntimeContext } from "./core/index.mjs";
@@ -1,2 +1 @@
1
- import { InternalRuntimeContext } from "./core/context/runtime.mjs";
2
- export { InternalRuntimeContext };
1
+ export { InternalRuntimeContext } from "./core/context/runtime.mjs";
@@ -1,4 +1,3 @@
1
- import { getRequest } from "./core/context/request/index.mjs";
2
- import { getMonitors } from "./core/context/monitors/index.mjs";
3
- import { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
4
- export { getMonitors, getRequest, redirect, setHeaders, setStatus };
1
+ export { getRequest } from "./core/context/request/index.mjs";
2
+ export { getMonitors } from "./core/context/monitors/index.mjs";
3
+ export { redirect, setHeaders, setStatus } from "./core/context/response/index.mjs";
@@ -1,2 +1 @@
1
- import { getClientRoutes } from "./getRoutes.mjs";
2
- export { getClientRoutes };
1
+ export { getClientRoutes } from "./getRoutes.mjs";
@@ -6,7 +6,7 @@ import { resolveSSRMode } from "../../../cli/ssr/mode.mjs";
6
6
  import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants.mjs";
7
7
  import { walk } from "./nestedRoutes.mjs";
8
8
  import { fileSystemRoutes, routesForServer, ssrLoaderCombinedModule } from "./templates.mjs";
9
- import { getServerCombinedModueFile, getServerLoadersFile } from "./utils.mjs";
9
+ import { getServerCombinedModuleFile, getServerLoadersFile } from "./utils.mjs";
10
10
  async function generateRoutesForEntry(entrypoint, appContext) {
11
11
  const routes = [];
12
12
  if (entrypoint.nestedRoutesEntry) {
@@ -119,7 +119,7 @@ const generateCode = async (appContext, config, entrypoints, api)=>{
119
119
  }
120
120
  const serverLoaderCombined = ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext);
121
121
  if (serverLoaderCombined) {
122
- const serverLoaderFile = getServerCombinedModueFile(internalDirectory, entryName);
122
+ const serverLoaderFile = getServerCombinedModuleFile(internalDirectory, entryName);
123
123
  await fs.outputFile(serverLoaderFile, serverLoaderCombined);
124
124
  }
125
125
  await fs.outputFile(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code, 'utf8');
@@ -65,9 +65,9 @@ const hasAction = async (filename, source)=>{
65
65
  return false;
66
66
  };
67
67
  const getServerLoadersFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'route-server-loaders.js');
68
- const getServerCombinedModueFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'server-loader-combined.js');
68
+ const getServerCombinedModuleFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'server-loader-combined.js');
69
69
  const getPathWithoutExt = (filename)=>{
70
70
  const extname = path.extname(filename);
71
71
  return extname ? filename.slice(0, -extname.length) : filename;
72
72
  };
73
- export { getPathWithoutExt, getServerCombinedModueFile, getServerLoadersFile, hasAction, hasLoader, isPageComponentFile, parseModule, replaceWithAlias, walkDirectory };
73
+ export { getPathWithoutExt, getServerCombinedModuleFile, getServerLoadersFile, hasAction, hasLoader, isPageComponentFile, parseModule, replaceWithAlias, walkDirectory };
@@ -77,4 +77,5 @@ const routerPlugin = ()=>({
77
77
  }
78
78
  });
79
79
  const cli = routerPlugin;
80
- export { cli as default, handleFileChange, handleModifyEntrypoints, isRouteEntry, routerPlugin };
80
+ export default cli;
81
+ export { handleFileChange, handleModifyEntrypoints, isRouteEntry, routerPlugin };
@@ -1,3 +1,2 @@
1
- import { routerPlugin } from "./runtime/internal.mjs";
2
1
  export * from "./runtime/internal.mjs";
3
- export { routerPlugin as default };
2
+ export { routerPlugin as default } from "./runtime/internal.mjs";
@@ -1,2 +1,2 @@
1
1
  const DeferredDataScripts = ()=>null;
2
- export { DeferredDataScripts as default };
2
+ export default DeferredDataScripts;
@@ -117,4 +117,4 @@ const DeferredDataScripts = (props)=>{
117
117
  });
118
118
  };
119
119
  const DeferredDataScripts_node = DeferredDataScripts;
120
- export { DeferredDataScripts_node as default };
120
+ export default DeferredDataScripts_node;
@@ -3,10 +3,6 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Link as router_Link, NavLink, matchRoutes, useHref, useMatches, useResolvedPath } from "@modern-js/runtime-utils/router";
4
4
  import react, { useContext, useMemo } from "react";
5
5
  import { InternalRuntimeContext } from "../../core/context/index.mjs";
6
- var __webpack_require__ = {};
7
- (()=>{
8
- __webpack_require__.e = ()=>Promise.resolve();
9
- })();
10
6
  function composeEventHandlers(theirHandler, ourHandler) {
11
7
  return (event)=>{
12
8
  theirHandler?.(event);
@@ -145,7 +141,7 @@ const createPrefetchLink = (Link)=>/*#__PURE__*/ react.forwardRef(({ to, prefetc
145
141
  ...props,
146
142
  ...prefetchHandlers
147
143
  }),
148
- shouldPrefetch && __webpack_require__.e && !isAbsolute ? /*#__PURE__*/ jsx(PrefetchPageLinks, {
144
+ shouldPrefetch && __webpack_chunk_load__ && !isAbsolute ? /*#__PURE__*/ jsx(PrefetchPageLinks, {
149
145
  path: resolvedPath
150
146
  }) : null
151
147
  ]
@@ -1,9 +1,9 @@
1
- import { useRouteLoaderData } from "@modern-js/runtime-utils/router";
2
- import { Link, NavLink } from "./PrefetchLink.mjs";
3
1
  export * from "@modern-js/runtime-utils/router";
4
2
  export * from "./withRouter.mjs";
3
+ import { useRouteLoaderData } from "@modern-js/runtime-utils/router";
5
4
  const runtime_useRouteLoaderData = (routeId)=>{
6
5
  const realRouteId = routeId.replace(/\[(.*?)\]/g, '($1)');
7
6
  return useRouteLoaderData(realRouteId);
8
7
  };
9
- export { Link, NavLink, runtime_useRouteLoaderData as useRouteLoaderData };
8
+ export { Link, NavLink } from "./PrefetchLink.mjs";
9
+ export { runtime_useRouteLoaderData as useRouteLoaderData };
@@ -1,4 +1,5 @@
1
1
  import { modifyRoutes, routerPlugin } from "./plugin.mjs";
2
- import { renderRoutes } from "./utils.mjs";
3
2
  const internal = routerPlugin;
4
- export { internal as default, modifyRoutes, renderRoutes, routerPlugin };
3
+ export { renderRoutes } from "./utils.mjs";
4
+ export default internal;
5
+ export { modifyRoutes, routerPlugin };