@modern-js/runtime 2.65.1 → 2.65.2

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 (56) hide show
  1. package/dist/cjs/cache/index.js +22 -0
  2. package/dist/cjs/cli/ssr/index.js +1 -1
  3. package/dist/cjs/core/context/monitors/default.js +43 -0
  4. package/dist/cjs/core/context/monitors/index.js +31 -0
  5. package/dist/cjs/core/context/monitors/index.server.js +33 -0
  6. package/dist/cjs/core/context/request/index.js +30 -0
  7. package/dist/cjs/core/context/request/index.server.js +32 -0
  8. package/dist/cjs/core/server/requestHandler.js +84 -76
  9. package/dist/cjs/core/server/stream/shared.js +40 -45
  10. package/dist/cjs/core/server/string/index.js +50 -55
  11. package/dist/cjs/core/server/string/prefetch.js +47 -52
  12. package/dist/cjs/index.js +6 -0
  13. package/dist/cjs/react-server.js +28 -0
  14. package/dist/cjs/router/runtime/plugin.node.js +1 -2
  15. package/dist/cjs/router/runtime/utils.js +4 -6
  16. package/dist/esm/cache/index.js +1 -0
  17. package/dist/esm/cli/ssr/index.js +1 -1
  18. package/dist/esm/core/context/monitors/default.js +40 -0
  19. package/dist/esm/core/context/monitors/index.js +7 -0
  20. package/dist/esm/core/context/monitors/index.server.js +9 -0
  21. package/dist/esm/core/context/request/index.js +6 -0
  22. package/dist/esm/core/context/request/index.server.js +8 -0
  23. package/dist/esm/core/server/requestHandler.js +131 -117
  24. package/dist/esm/core/server/stream/shared.js +49 -63
  25. package/dist/esm/core/server/string/index.js +82 -93
  26. package/dist/esm/core/server/string/prefetch.js +83 -94
  27. package/dist/esm/index.js +4 -0
  28. package/dist/esm/react-server.js +4 -0
  29. package/dist/esm/router/runtime/plugin.node.js +1 -2
  30. package/dist/esm/router/runtime/utils.js +4 -6
  31. package/dist/esm-node/cache/index.js +1 -0
  32. package/dist/esm-node/cli/ssr/index.js +1 -1
  33. package/dist/esm-node/core/context/monitors/default.js +19 -0
  34. package/dist/esm-node/core/context/monitors/index.js +7 -0
  35. package/dist/esm-node/core/context/monitors/index.server.js +9 -0
  36. package/dist/esm-node/core/context/request/index.js +6 -0
  37. package/dist/esm-node/core/context/request/index.server.js +8 -0
  38. package/dist/esm-node/core/server/requestHandler.js +84 -76
  39. package/dist/esm-node/core/server/stream/shared.js +40 -45
  40. package/dist/esm-node/core/server/string/index.js +50 -55
  41. package/dist/esm-node/core/server/string/prefetch.js +47 -52
  42. package/dist/esm-node/index.js +4 -0
  43. package/dist/esm-node/react-server.js +4 -0
  44. package/dist/esm-node/router/runtime/plugin.node.js +1 -2
  45. package/dist/esm-node/router/runtime/utils.js +4 -6
  46. package/dist/types/cache/index.d.ts +1 -0
  47. package/dist/types/core/compatible.d.ts +2 -2
  48. package/dist/types/core/context/monitors/default.d.ts +2 -0
  49. package/dist/types/core/context/monitors/index.d.ts +1 -0
  50. package/dist/types/core/context/monitors/index.server.d.ts +2 -0
  51. package/dist/types/core/context/request/index.d.ts +1 -0
  52. package/dist/types/core/context/request/index.server.d.ts +1 -0
  53. package/dist/types/index.d.ts +2 -0
  54. package/dist/types/react-server.d.ts +1 -0
  55. package/dist/types/router/runtime/utils.d.ts +3 -5
  56. package/package.json +21 -11
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var cache_exports = {};
17
+ module.exports = __toCommonJS(cache_exports);
18
+ __reExport(cache_exports, require("@modern-js/runtime-utils/cache"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("@modern-js/runtime-utils/cache")
22
+ });
@@ -121,7 +121,7 @@ const ssrPlugin = () => ({
121
121
  source: {
122
122
  alias: {
123
123
  // ensure that all packages use the same storage in @modern-js/runtime-utils/node
124
- "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node")
124
+ "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node").replace(`${import_path.default.sep}cjs${import_path.default.sep}`, `${import_path.default.sep}esm${import_path.default.sep}`)
125
125
  }
126
126
  },
127
127
  tools: {
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var default_exports = {};
20
+ __export(default_exports, {
21
+ defaultMonitors: () => defaultMonitors
22
+ });
23
+ module.exports = __toCommonJS(default_exports);
24
+ const defaultMonitors = {
25
+ counter(name, ...args) {
26
+ },
27
+ info(message, ...args) {
28
+ },
29
+ debug(message, ...args) {
30
+ },
31
+ trace(message, ...args) {
32
+ },
33
+ warn(message, ...args) {
34
+ },
35
+ error(message, ...args) {
36
+ },
37
+ timing(name, dur, ...args) {
38
+ }
39
+ };
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ defaultMonitors
43
+ });
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var monitors_exports = {};
20
+ __export(monitors_exports, {
21
+ getMonitors: () => getMonitors
22
+ });
23
+ module.exports = __toCommonJS(monitors_exports);
24
+ var import_default = require("./default");
25
+ const getMonitors = () => {
26
+ return import_default.defaultMonitors;
27
+ };
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ getMonitors
31
+ });
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var index_server_exports = {};
20
+ __export(index_server_exports, {
21
+ getMonitors: () => getMonitors
22
+ });
23
+ module.exports = __toCommonJS(index_server_exports);
24
+ var import_node = require("@modern-js/runtime-utils/node");
25
+ var import_default = require("./default");
26
+ const getMonitors = () => {
27
+ const storageContext = import_node.storage.useContext();
28
+ return storageContext.monitors || import_default.defaultMonitors;
29
+ };
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ getMonitors
33
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var request_exports = {};
20
+ __export(request_exports, {
21
+ getRequest: () => getRequest
22
+ });
23
+ module.exports = __toCommonJS(request_exports);
24
+ const getRequest = () => {
25
+ return new Request(location.href);
26
+ };
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ getRequest
30
+ });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var index_server_exports = {};
20
+ __export(index_server_exports, {
21
+ getRequest: () => getRequest
22
+ });
23
+ module.exports = __toCommonJS(index_server_exports);
24
+ var import_node = require("@modern-js/runtime-utils/node");
25
+ const getRequest = () => {
26
+ const context = import_node.storage.useContext();
27
+ return context === null || context === void 0 ? void 0 : context.request;
28
+ };
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ getRequest
32
+ });
@@ -21,6 +21,7 @@ __export(requestHandler_exports, {
21
21
  createRequestHandler: () => createRequestHandler
22
22
  });
23
23
  module.exports = __toCommonJS(requestHandler_exports);
24
+ var import_node = require("@modern-js/runtime-utils/node");
24
25
  var import_request = require("@modern-js/runtime-utils/universal/request");
25
26
  var import_context = require("../context");
26
27
  var import_runtime = require("../context/runtime");
@@ -87,85 +88,92 @@ function createSSRContext(request, options) {
87
88
  }
88
89
  const createRequestHandler = async (handleRequest, createRequestOptions) => {
89
90
  const requestHandler = async (request, options) => {
90
- var _context_routerContext, _context_routerContext1, _context_routerContext2;
91
- const Root = (0, import_react.createRoot)();
92
- const internalRuntimeContext = (0, import_context.getGlobalInternalRuntimeContext)();
93
- const hooks = internalRuntimeContext.hooks;
94
- const { routeManifest } = options.resource;
95
- const context = (0, import_runtime.getInitialContext)(false, routeManifest);
96
- const runBeforeRender = async (context2) => {
97
- const result = await hooks.onBeforeRender.call(context2);
98
- if (typeof Response !== "undefined" && result instanceof Response) {
99
- return result;
100
- }
101
- const init = (0, import_context.getGlobalAppInit)();
102
- return init === null || init === void 0 ? void 0 : init(context2);
103
- };
104
- const responseProxy = {
105
- headers: {},
106
- code: -1
107
- };
108
- const ssrContext = createSSRContext(request, {
109
- ...options,
110
- responseProxy
111
- });
112
- Object.assign(context, {
113
- ssrContext,
114
- isBrowser: false,
115
- loaderManager: (0, import_loaderManager.createLoaderManager)({}, {
116
- skipNonStatic: options.staticGenerate,
117
- // if not static generate, only non-static loader can exec on prod env
118
- skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
119
- })
120
- });
121
- const getRedirectResponse = (result) => {
122
- if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
123
- result instanceof Response && result.status >= 300 && result.status <= 399) {
124
- const { status } = result;
125
- const redirectUrl = result.headers.get("Location") || "/";
126
- const { ssrContext: ssrContext2 } = context;
127
- if (ssrContext2) {
128
- return new Response(null, {
129
- status,
130
- headers: {
131
- Location: redirectUrl
132
- }
133
- });
91
+ const headersData = (0, import_request.parseHeaders)(request);
92
+ return import_node.storage.run({
93
+ headers: headersData,
94
+ request,
95
+ monitors: options.monitors
96
+ }, async () => {
97
+ var _context_routerContext, _context_routerContext1, _context_routerContext2;
98
+ const Root = (0, import_react.createRoot)();
99
+ const internalRuntimeContext = (0, import_context.getGlobalInternalRuntimeContext)();
100
+ const hooks = internalRuntimeContext.hooks;
101
+ const { routeManifest } = options.resource;
102
+ const context = (0, import_runtime.getInitialContext)(false, routeManifest);
103
+ const runBeforeRender = async (context2) => {
104
+ const result = await hooks.onBeforeRender.call(context2);
105
+ if (typeof Response !== "undefined" && result instanceof Response) {
106
+ return result;
107
+ }
108
+ const init = (0, import_context.getGlobalAppInit)();
109
+ return init === null || init === void 0 ? void 0 : init(context2);
110
+ };
111
+ const responseProxy = {
112
+ headers: {},
113
+ code: -1
114
+ };
115
+ const ssrContext = createSSRContext(request, {
116
+ ...options,
117
+ responseProxy
118
+ });
119
+ Object.assign(context, {
120
+ ssrContext,
121
+ isBrowser: false,
122
+ loaderManager: (0, import_loaderManager.createLoaderManager)({}, {
123
+ skipNonStatic: options.staticGenerate,
124
+ // if not static generate, only non-static loader can exec on prod env
125
+ skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
126
+ })
127
+ });
128
+ const getRedirectResponse = (result) => {
129
+ if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
130
+ result instanceof Response && result.status >= 300 && result.status <= 399) {
131
+ const { status } = result;
132
+ const redirectUrl = result.headers.get("Location") || "/";
133
+ const { ssrContext: ssrContext2 } = context;
134
+ if (ssrContext2) {
135
+ return new Response(null, {
136
+ status,
137
+ headers: {
138
+ Location: redirectUrl
139
+ }
140
+ });
141
+ }
134
142
  }
143
+ return void 0;
144
+ };
145
+ const initialData = await runBeforeRender(context);
146
+ if (((_context_routerContext = context.routerContext) === null || _context_routerContext === void 0 ? void 0 : _context_routerContext.statusCode) && ((_context_routerContext1 = context.routerContext) === null || _context_routerContext1 === void 0 ? void 0 : _context_routerContext1.statusCode) !== 200) {
147
+ var _context_routerContext3, _context_ssrContext;
148
+ (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
135
149
  }
136
- return void 0;
137
- };
138
- const initialData = await runBeforeRender(context);
139
- if (((_context_routerContext = context.routerContext) === null || _context_routerContext === void 0 ? void 0 : _context_routerContext.statusCode) && ((_context_routerContext1 = context.routerContext) === null || _context_routerContext1 === void 0 ? void 0 : _context_routerContext1.statusCode) !== 200) {
140
- var _context_routerContext3, _context_ssrContext;
141
- (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
142
- }
143
- const errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
144
- if (errors.length > 0) {
145
- options.onError(errors[0], import_tracer.SSRErrors.LOADER_ERROR);
146
- }
147
- context.initialData = initialData;
148
- const redirectResponse = getRedirectResponse(initialData);
149
- if (redirectResponse) {
150
- return redirectResponse;
151
- }
152
- const { htmlTemplate } = options.resource;
153
- options.resource.htmlTemplate = htmlTemplate.replace("</head>", `${import_constants.CHUNK_CSS_PLACEHOLDER}</head>`);
154
- const response = await handleRequest(request, Root, {
155
- ...options,
156
- runtimeContext: context,
157
- RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && (0, import_context.getGlobalRSCRoot)()
158
- });
159
- Object.entries(responseProxy.headers).forEach(([key, value]) => {
160
- response.headers.set(key, value);
161
- });
162
- if (responseProxy.code !== -1) {
163
- return new Response(response.body, {
164
- status: responseProxy.code,
165
- headers: response.headers
150
+ const errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
151
+ if (errors.length > 0) {
152
+ options.onError(errors[0], import_tracer.SSRErrors.LOADER_ERROR);
153
+ }
154
+ context.initialData = initialData;
155
+ const redirectResponse = getRedirectResponse(initialData);
156
+ if (redirectResponse) {
157
+ return redirectResponse;
158
+ }
159
+ const { htmlTemplate } = options.resource;
160
+ options.resource.htmlTemplate = htmlTemplate.replace("</head>", `${import_constants.CHUNK_CSS_PLACEHOLDER}</head>`);
161
+ const response = await handleRequest(request, Root, {
162
+ ...options,
163
+ runtimeContext: context,
164
+ RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && (0, import_context.getGlobalRSCRoot)()
166
165
  });
167
- }
168
- return response;
166
+ Object.entries(responseProxy.headers).forEach(([key, value]) => {
167
+ response.headers.set(key, value);
168
+ });
169
+ if (responseProxy.code !== -1) {
170
+ return new Response(response.body, {
171
+ status: responseProxy.code,
172
+ headers: response.headers
173
+ });
174
+ }
175
+ return response;
176
+ });
169
177
  };
170
178
  return requestHandler;
171
179
  };
@@ -25,9 +25,7 @@ __export(shared_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(shared_exports);
27
27
  var import_jsx_runtime = require("react/jsx-runtime");
28
- var import_node = require("@modern-js/runtime-utils/node");
29
28
  var import_time = require("@modern-js/runtime-utils/time");
30
- var import_request = require("@modern-js/runtime-utils/universal/request");
31
29
  var import_wrapper = require("../../react/wrapper");
32
30
  var import_tracer = require("../tracer");
33
31
  var import_utils = require("../utils");
@@ -58,51 +56,48 @@ function getReadableStreamFromString(content) {
58
56
  function createRenderStreaming(createReadableStreamPromise) {
59
57
  return async (request, serverRoot, options) => {
60
58
  const createReadableStreamFromElement = await createReadableStreamPromise;
61
- const headersData = (0, import_request.parseHeaders)(request);
62
- return (0, import_node.run)(headersData, async () => {
63
- const end = (0, import_time.time)();
64
- const { runtimeContext, config, resource } = options;
65
- const { onError, onTiming } = options;
66
- const { htmlTemplate, entryName } = resource;
67
- const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
68
- const RSCServerRoot = ({ children }) => {
69
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
70
- children
71
- });
72
- };
73
- let rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
74
- ssr: true
75
- }));
76
- rootElement = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RSCServerRoot, {
77
- children: rootElement
59
+ const end = (0, import_time.time)();
60
+ const { runtimeContext, config, resource } = options;
61
+ const { onError, onTiming } = options;
62
+ const { htmlTemplate, entryName } = resource;
63
+ const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
64
+ const RSCServerRoot = ({ children }) => {
65
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
66
+ children
78
67
  });
79
- const stream = await createReadableStreamFromElement(request, rootElement, {
80
- config,
81
- htmlTemplate,
82
- runtimeContext,
83
- ssrConfig,
84
- entryName,
85
- rscClientManifest: options.rscClientManifest,
86
- rscSSRManifest: options.rscSSRManifest,
87
- rscServerManifest: options.rscServerManifest,
88
- rscRoot: options.rscRoot,
89
- onShellReady() {
90
- const cost = end();
91
- onTiming(import_tracer.SSRTimings.RENDER_SHELL, cost);
92
- },
93
- onAllReady() {
94
- const cost = end();
95
- onTiming(import_tracer.SSRTimings.RENDER_HTML, cost);
96
- },
97
- onShellError(error) {
98
- onError(error, import_tracer.SSRErrors.RENDER_SHELL);
99
- },
100
- onError(error) {
101
- onError(error, import_tracer.SSRErrors.RENDER_STREAM);
102
- }
103
- });
104
- return stream;
68
+ };
69
+ let rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
70
+ ssr: true
71
+ }));
72
+ rootElement = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RSCServerRoot, {
73
+ children: rootElement
74
+ });
75
+ const stream = await createReadableStreamFromElement(request, rootElement, {
76
+ config,
77
+ htmlTemplate,
78
+ runtimeContext,
79
+ ssrConfig,
80
+ entryName,
81
+ rscClientManifest: options.rscClientManifest,
82
+ rscSSRManifest: options.rscSSRManifest,
83
+ rscServerManifest: options.rscServerManifest,
84
+ rscRoot: options.rscRoot,
85
+ onShellReady() {
86
+ const cost = end();
87
+ onTiming(import_tracer.SSRTimings.RENDER_SHELL, cost);
88
+ },
89
+ onAllReady() {
90
+ const cost = end();
91
+ onTiming(import_tracer.SSRTimings.RENDER_HTML, cost);
92
+ },
93
+ onShellError(error) {
94
+ onError(error, import_tracer.SSRErrors.RENDER_SHELL);
95
+ },
96
+ onError(error) {
97
+ onError(error, import_tracer.SSRErrors.RENDER_STREAM);
98
+ }
105
99
  });
100
+ return stream;
106
101
  };
107
102
  }
108
103
  // Annotate the CommonJS export names for ESM import in node:
@@ -31,9 +31,7 @@ __export(string_exports, {
31
31
  renderString: () => renderString
32
32
  });
33
33
  module.exports = __toCommonJS(string_exports);
34
- var import_node = require("@modern-js/runtime-utils/node");
35
34
  var import_time = require("@modern-js/runtime-utils/time");
36
- var import_request = require("@modern-js/runtime-utils/universal/request");
37
35
  var import_server = __toESM(require("react-dom/server"));
38
36
  var import_react_helmet = __toESM(require("react-helmet"));
39
37
  var import_constants = require("../../constants");
@@ -48,59 +46,56 @@ var import_prefetch = require("./prefetch");
48
46
  var import_ssrData = require("./ssrData");
49
47
  var import_styledComponent = require("./styledComponent");
50
48
  const renderString = async (request, serverRoot, options) => {
51
- const headersData = (0, import_request.parseHeaders)(request);
52
- return (0, import_node.run)(headersData, async () => {
53
- var _runtimeContext_ssrContext;
54
- const { resource, runtimeContext, config, onError, onTiming } = options;
55
- const tracer = {
56
- onError,
57
- onTiming
58
- };
59
- const routerContext = runtimeContext.routerContext;
60
- const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
61
- const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
62
- const chunkSet = {
63
- renderLevel: import_constants.RenderLevel.CLIENT_RENDER,
64
- ssrScripts: "",
65
- jsChunk: "",
66
- cssChunk: ""
67
- };
68
- let prefetchData = {};
69
- try {
70
- prefetchData = await (0, import_prefetch.prefetch)(serverRoot, request, options, ssrConfig, tracer);
71
- chunkSet.renderLevel = import_constants.RenderLevel.SERVER_PREFETCH;
72
- } catch (e) {
73
- chunkSet.renderLevel = import_constants.RenderLevel.CLIENT_RENDER;
74
- tracer.onError(e, import_tracer.SSRErrors.PRERENDER);
75
- }
76
- const collectors = [
77
- new import_styledComponent.StyledCollector(chunkSet),
78
- new import_loadable.LoadableCollector({
79
- stats: loadableStats,
80
- nonce: config.nonce,
81
- routeManifest,
82
- template: htmlTemplate,
83
- entryName,
84
- chunkSet,
85
- config
86
- }),
87
- new import_ssrData.SSRDataCollector({
88
- request,
89
- prefetchData,
90
- ssrConfig,
91
- ssrContext: runtimeContext.ssrContext,
92
- chunkSet,
93
- routerContext,
94
- nonce: config.nonce,
95
- useJsonScript: config.useJsonScript
96
- })
97
- ];
98
- const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
99
- ssr: true
100
- }));
101
- const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
102
- return html;
103
- });
49
+ var _runtimeContext_ssrContext;
50
+ const { resource, runtimeContext, config, onError, onTiming } = options;
51
+ const tracer = {
52
+ onError,
53
+ onTiming
54
+ };
55
+ const routerContext = runtimeContext.routerContext;
56
+ const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
57
+ const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
58
+ const chunkSet = {
59
+ renderLevel: import_constants.RenderLevel.CLIENT_RENDER,
60
+ ssrScripts: "",
61
+ jsChunk: "",
62
+ cssChunk: ""
63
+ };
64
+ let prefetchData = {};
65
+ try {
66
+ prefetchData = await (0, import_prefetch.prefetch)(serverRoot, request, options, ssrConfig, tracer);
67
+ chunkSet.renderLevel = import_constants.RenderLevel.SERVER_PREFETCH;
68
+ } catch (e) {
69
+ chunkSet.renderLevel = import_constants.RenderLevel.CLIENT_RENDER;
70
+ tracer.onError(e, import_tracer.SSRErrors.PRERENDER);
71
+ }
72
+ const collectors = [
73
+ new import_styledComponent.StyledCollector(chunkSet),
74
+ new import_loadable.LoadableCollector({
75
+ stats: loadableStats,
76
+ nonce: config.nonce,
77
+ routeManifest,
78
+ template: htmlTemplate,
79
+ entryName,
80
+ chunkSet,
81
+ config
82
+ }),
83
+ new import_ssrData.SSRDataCollector({
84
+ request,
85
+ prefetchData,
86
+ ssrConfig,
87
+ ssrContext: runtimeContext.ssrContext,
88
+ chunkSet,
89
+ routerContext,
90
+ nonce: config.nonce,
91
+ useJsonScript: config.useJsonScript
92
+ })
93
+ ];
94
+ const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
95
+ ssr: true
96
+ }));
97
+ const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
98
+ return html;
104
99
  };
105
100
  async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifiers, { onError, onTiming }) {
106
101
  let html = "";