@modern-js/server-core 2.64.1 → 2.64.3

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 (43) hide show
  1. package/dist/cjs/adapters/node/index.js +2 -0
  2. package/dist/cjs/adapters/node/node.js +1 -1
  3. package/dist/cjs/adapters/node/plugins/resource.js +53 -4
  4. package/dist/cjs/plugins/default.js +10 -2
  5. package/dist/cjs/plugins/render/index.js +6 -0
  6. package/dist/cjs/plugins/render/render.js +29 -15
  7. package/dist/cjs/plugins/render/renderRscHandler.js +51 -0
  8. package/dist/cjs/plugins/render/serverActionHandler.js +51 -0
  9. package/dist/cjs/plugins/render/ssrRender.js +4 -1
  10. package/dist/cjs/utils/error.js +1 -1
  11. package/dist/esm/adapters/node/index.js +2 -1
  12. package/dist/esm/adapters/node/node.js +1 -1
  13. package/dist/esm/adapters/node/plugins/resource.js +174 -5
  14. package/dist/esm/plugins/default.js +10 -2
  15. package/dist/esm/plugins/render/index.js +7 -1
  16. package/dist/esm/plugins/render/render.js +72 -44
  17. package/dist/esm/plugins/render/renderRscHandler.js +49 -0
  18. package/dist/esm/plugins/render/serverActionHandler.js +49 -0
  19. package/dist/esm/plugins/render/ssrRender.js +5 -2
  20. package/dist/esm/utils/error.js +1 -1
  21. package/dist/esm-node/adapters/node/index.js +2 -1
  22. package/dist/esm-node/adapters/node/node.js +1 -1
  23. package/dist/esm-node/adapters/node/plugins/resource.js +49 -4
  24. package/dist/esm-node/plugins/default.js +10 -2
  25. package/dist/esm-node/plugins/render/index.js +6 -0
  26. package/dist/esm-node/plugins/render/render.js +30 -16
  27. package/dist/esm-node/plugins/render/renderRscHandler.js +27 -0
  28. package/dist/esm-node/plugins/render/serverActionHandler.js +27 -0
  29. package/dist/esm-node/plugins/render/ssrRender.js +4 -1
  30. package/dist/esm-node/utils/error.js +1 -1
  31. package/dist/types/adapters/node/index.d.ts +1 -1
  32. package/dist/types/adapters/node/plugins/resource.d.ts +5 -1
  33. package/dist/types/plugins/default.d.ts +1 -1
  34. package/dist/types/plugins/render/render.d.ts +1 -1
  35. package/dist/types/plugins/render/renderRscHandler.d.ts +2 -0
  36. package/dist/types/plugins/render/serverActionHandler.d.ts +2 -0
  37. package/dist/types/plugins/render/ssrRender.d.ts +7 -3
  38. package/dist/types/types/config/server.d.ts +2 -0
  39. package/dist/types/types/render.d.ts +4 -1
  40. package/dist/types/types/requestHandler.d.ts +9 -3
  41. package/dist/types/types/server.d.ts +11 -1
  42. package/dist/types/utils/error.d.ts +1 -1
  43. package/package.json +7 -7
@@ -2,14 +2,22 @@ import { logPlugin } from "./log";
2
2
  import { initMonitorsPlugin, injectServerTiming, injectloggerPluigin } from "./monitors";
3
3
  import { processedByPlugin } from "./processedBy";
4
4
  import { injectRenderHandlerPlugin } from "./render";
5
+ function createSilenceLogger() {
6
+ return new Proxy({}, {
7
+ get: function() {
8
+ return function() {
9
+ };
10
+ }
11
+ });
12
+ }
5
13
  function createDefaultPlugins() {
6
14
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
7
15
  var plugins = [
16
+ logPlugin(),
8
17
  initMonitorsPlugin(),
9
18
  injectRenderHandlerPlugin(options),
10
- injectloggerPluigin(options.logger),
19
+ injectloggerPluigin(options.logger ? options.logger : createSilenceLogger()),
11
20
  injectServerTiming(),
12
- logPlugin(),
13
21
  processedByPlugin()
14
22
  ];
15
23
  return plugins;
@@ -133,7 +133,7 @@ function getPageRoutes(routes) {
133
133
  function createRenderHandler(render) {
134
134
  return function() {
135
135
  var _ref = _async_to_generator(function(c, _) {
136
- var _c_env_node, logger, reporter, monitors, templates, serverManifest, locals, metrics, matchPathname, matchEntryName, loaderContext, request, nodeReq, res, body, status, headers, headersData;
136
+ var _c_env_node, logger, reporter, monitors, templates, serverManifest, rscServerManifest, rscClientManifest, rscSSRManifest, locals, metrics, matchPathname, matchEntryName, loaderContext, request, nodeReq, res, body, status, headers, headersData;
137
137
  return _ts_generator(this, function(_state) {
138
138
  switch (_state.label) {
139
139
  case 0:
@@ -142,6 +142,9 @@ function createRenderHandler(render) {
142
142
  monitors = c.get("monitors");
143
143
  templates = c.get("templates") || {};
144
144
  serverManifest = c.get("serverManifest") || {};
145
+ rscServerManifest = c.get("rscServerManifest");
146
+ rscClientManifest = c.get("rscClientManifest");
147
+ rscSSRManifest = c.get("rscSSRManifest");
145
148
  locals = c.get("locals");
146
149
  metrics = c.get("metrics");
147
150
  matchPathname = c.get("matchPathname");
@@ -159,6 +162,9 @@ function createRenderHandler(render) {
159
162
  templates,
160
163
  metrics,
161
164
  serverManifest,
165
+ rscServerManifest,
166
+ rscClientManifest,
167
+ rscSSRManifest,
162
168
  loaderContext,
163
169
  locals,
164
170
  matchPathname,
@@ -10,8 +10,10 @@ import { cutNameByHyphen } from "@modern-js/utils/universal";
10
10
  import { TrieRouter } from "hono/router/trie-router";
11
11
  import { X_MODERNJS_RENDER } from "../../constants";
12
12
  import { uniqueKeyByRoute } from "../../utils";
13
- import { ErrorDigest, createErrorHtml, getPathname, getRuntimeEnv, onError as onErrorFn, parseHeaders, parseQuery, sortRoutes } from "../../utils";
13
+ import { ErrorDigest, createErrorHtml, getPathname, getRuntimeEnv, parseHeaders, parseQuery, sortRoutes } from "../../utils";
14
14
  import { dataHandler } from "./dataHandler";
15
+ import { renderRscHandler } from "./renderRscHandler";
16
+ import { serverActionHandler } from "./serverActionHandler";
15
17
  import { ssrRender } from "./ssrRender";
16
18
  var DYNAMIC_ROUTE_REG = /\/:./;
17
19
  function getRouter(routes) {
@@ -76,31 +78,31 @@ function createRender(_) {
76
78
  }
77
79
  function _createRender() {
78
80
  _createRender = _async_to_generator(function(param) {
79
- var routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, config, onFallbackFn, router;
81
+ var routes, pwd, metaName, staticGenerate, cacheConfig, forceCSR, config, onFallback, router;
80
82
  return _ts_generator(this, function(_state) {
81
- routes = param.routes, pwd = param.pwd, metaName = param.metaName, staticGenerate = param.staticGenerate, cacheConfig = param.cacheConfig, forceCSR = param.forceCSR, config = param.config, onFallbackFn = param.onFallback;
83
+ routes = param.routes, pwd = param.pwd, metaName = param.metaName, staticGenerate = param.staticGenerate, cacheConfig = param.cacheConfig, forceCSR = param.forceCSR, config = param.config, onFallback = param.onFallback;
82
84
  router = getRouter(routes);
83
85
  return [
84
86
  2,
85
87
  function() {
86
88
  var _ref = _async_to_generator(function(req, param2) {
87
- var logger, reporter, metrics, monitors, nodeReq, templates, serverManifest, locals, matchEntryName, matchPathname, loaderContext, forMatchpathname, _matchRoute, routeInfo, params, framework, fallbackHeader, fallbackReason, onFallback, html, renderMode, headerData, onError, onTiming, onBoundError, renderOptions, response, _tmp;
89
+ var logger, reporter, metrics, monitors, nodeReq, templates, serverManifest, rscClientManifest, rscSSRManifest, rscServerManifest, locals, matchEntryName, matchPathname, loaderContext, forMatchpathname, _matchRoute, routeInfo, params, framework, fallbackHeader, fallbackReason, fallbackWrapper, html, renderMode, headerData, onError, onTiming, renderOptions, response, _tmp;
88
90
  return _ts_generator(this, function(_state2) {
89
91
  switch (_state2.label) {
90
92
  case 0:
91
- logger = param2.logger, reporter = param2.reporter, metrics = param2.metrics, monitors = param2.monitors, nodeReq = param2.nodeReq, templates = param2.templates, serverManifest = param2.serverManifest, locals = param2.locals, matchEntryName = param2.matchEntryName, matchPathname = param2.matchPathname, loaderContext = param2.loaderContext;
93
+ logger = param2.logger, reporter = param2.reporter, metrics = param2.metrics, monitors = param2.monitors, nodeReq = param2.nodeReq, templates = param2.templates, serverManifest = param2.serverManifest, rscClientManifest = param2.rscClientManifest, rscSSRManifest = param2.rscSSRManifest, rscServerManifest = param2.rscServerManifest, locals = param2.locals, matchEntryName = param2.matchEntryName, matchPathname = param2.matchPathname, loaderContext = param2.loaderContext;
92
94
  forMatchpathname = matchPathname !== null && matchPathname !== void 0 ? matchPathname : getPathname(req);
93
95
  _matchRoute = _sliced_to_array(matchRoute(router, forMatchpathname, matchEntryName), 2), routeInfo = _matchRoute[0], params = _matchRoute[1];
94
96
  framework = metaName || "modern-js";
95
97
  fallbackHeader = "x-".concat(cutNameByHyphen(framework), "-ssr-fallback");
96
98
  fallbackReason = null;
97
- onFallback = function() {
99
+ fallbackWrapper = function() {
98
100
  var _ref2 = _async_to_generator(function(reason, error) {
99
101
  return _ts_generator(this, function(_state3) {
100
102
  fallbackReason = reason;
101
103
  return [
102
104
  2,
103
- onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
105
+ onFallback === null || onFallback === void 0 ? void 0 : onFallback(reason, {
104
106
  logger,
105
107
  reporter,
106
108
  metrics
@@ -108,7 +110,7 @@ function _createRender() {
108
110
  ];
109
111
  });
110
112
  });
111
- return function onFallback2(reason, error) {
113
+ return function fallbackWrapper2(reason, error) {
112
114
  return _ref2.apply(this, arguments);
113
115
  };
114
116
  }();
@@ -137,39 +139,17 @@ function _createRender() {
137
139
  }
138
140
  return [
139
141
  4,
140
- getRenderMode(req, fallbackHeader, routeInfo.isSSR, forceCSR, nodeReq, onFallback)
142
+ getRenderMode(req, fallbackHeader, routeInfo.isSSR, forceCSR, nodeReq, fallbackWrapper)
141
143
  ];
142
144
  case 1:
143
145
  renderMode = _state2.sent();
144
146
  headerData = parseHeaders(req);
145
- onError = function(e) {
146
- monitors === null || monitors === void 0 ? void 0 : monitors.error("SSR Error - ".concat(_instanceof(e, Error) ? e.name : e, ", error = %s, req.url = %s, req.headers = %o"), _instanceof(e, Error) ? e.stack || e.message : e, forMatchpathname, getHeadersWithoutCookie(headerData));
147
+ onError = function(e, key) {
148
+ monitors === null || monitors === void 0 ? void 0 : monitors.error("SSR Error - ".concat(key || (_instanceof(e, Error) ? e.name : e), ", error = %s, req.url = %s, req.headers = %o"), _instanceof(e, Error) ? e.stack || e.message : e, forMatchpathname, getHeadersWithoutCookie(headerData));
147
149
  };
148
150
  onTiming = function(name, dur) {
149
151
  monitors === null || monitors === void 0 ? void 0 : monitors.timing(name, dur, "SSR");
150
152
  };
151
- onBoundError = function() {
152
- var _ref2 = _async_to_generator(function(e) {
153
- return _ts_generator(this, function(_state3) {
154
- switch (_state3.label) {
155
- case 0:
156
- onErrorFn(ErrorDigest.ERENDER, e, monitors, req);
157
- return [
158
- 4,
159
- onFallback === null || onFallback === void 0 ? void 0 : onFallback("error", e)
160
- ];
161
- case 1:
162
- _state3.sent();
163
- return [
164
- 2
165
- ];
166
- }
167
- });
168
- });
169
- return function onBoundError2(e) {
170
- return _ref2.apply(this, arguments);
171
- };
172
- }();
173
153
  renderOptions = {
174
154
  pwd,
175
155
  html,
@@ -184,6 +164,9 @@ function _createRender() {
184
164
  logger,
185
165
  metrics,
186
166
  locals,
167
+ rscClientManifest,
168
+ rscSSRManifest,
169
+ rscServerManifest,
187
170
  serverManifest,
188
171
  loaderContext: loaderContext || /* @__PURE__ */ new Map(),
189
172
  onError,
@@ -195,20 +178,30 @@ function _createRender() {
195
178
  3,
196
179
  2
197
180
  ];
198
- case "ssr":
181
+ case "rsc-tree":
199
182
  return [
200
183
  3,
201
184
  6
202
185
  ];
186
+ case "rsc-action":
187
+ return [
188
+ 3,
189
+ 8
190
+ ];
191
+ case "ssr":
192
+ return [
193
+ 3,
194
+ 10
195
+ ];
203
196
  case "csr":
204
197
  return [
205
198
  3,
206
- 6
199
+ 10
207
200
  ];
208
201
  }
209
202
  return [
210
203
  3,
211
- 8
204
+ 12
212
205
  ];
213
206
  case 2:
214
207
  return [
@@ -224,7 +217,7 @@ function _createRender() {
224
217
  ];
225
218
  return [
226
219
  4,
227
- renderHandler(req, renderOptions, "ssr", onBoundError)
220
+ renderHandler(req, renderOptions, "ssr", fallbackWrapper)
228
221
  ];
229
222
  case 4:
230
223
  _tmp = _state2.sent();
@@ -233,22 +226,44 @@ function _createRender() {
233
226
  response = _tmp;
234
227
  return [
235
228
  3,
236
- 9
229
+ 13
237
230
  ];
238
231
  case 6:
239
232
  return [
240
233
  4,
241
- renderHandler(req, renderOptions, renderMode, onBoundError)
234
+ renderRscHandler(req, renderOptions)
242
235
  ];
243
236
  case 7:
244
237
  response = _state2.sent();
245
238
  return [
246
239
  3,
247
- 9
240
+ 13
248
241
  ];
249
242
  case 8:
250
- throw new Error("Unknown render mode: ".concat(renderMode));
243
+ return [
244
+ 4,
245
+ serverActionHandler(req, renderOptions)
246
+ ];
251
247
  case 9:
248
+ response = _state2.sent();
249
+ return [
250
+ 3,
251
+ 13
252
+ ];
253
+ case 10:
254
+ return [
255
+ 4,
256
+ renderHandler(req, renderOptions, renderMode, fallbackWrapper)
257
+ ];
258
+ case 11:
259
+ response = _state2.sent();
260
+ return [
261
+ 3,
262
+ 13
263
+ ];
264
+ case 12:
265
+ throw new Error("Unknown render mode: ".concat(renderMode));
266
+ case 13:
252
267
  if (fallbackReason) {
253
268
  response.headers.set(fallbackHeader, "1;reason=".concat(fallbackReason));
254
269
  }
@@ -268,11 +283,11 @@ function _createRender() {
268
283
  });
269
284
  return _createRender.apply(this, arguments);
270
285
  }
271
- function renderHandler(request, options, mode, onError) {
286
+ function renderHandler(request, options, mode, fallbackWrapper) {
272
287
  return _renderHandler.apply(this, arguments);
273
288
  }
274
289
  function _renderHandler() {
275
- _renderHandler = _async_to_generator(function(request, options, mode, onError) {
290
+ _renderHandler = _async_to_generator(function(request, options, mode, fallbackWrapper) {
276
291
  var _options_config_server, response, serverManifest, ssrByRouteIds, runtimeEnv, nestedRoutesJson, routes, urlPath, pathToFileURL, matchRoutes, url, matchedRoutes, _lastMatch_route, lastMatch, e, routeInfo;
277
292
  function applyExtendHeaders(r, route) {
278
293
  Object.entries(route.responseHeaders || {}).forEach(function(param) {
@@ -350,9 +365,10 @@ function _renderHandler() {
350
365
  ];
351
366
  case 6:
352
367
  e = _state.sent();
368
+ options.onError(e, ErrorDigest.ERENDER);
353
369
  return [
354
370
  4,
355
- onError(e)
371
+ fallbackWrapper("error", e)
356
372
  ];
357
373
  case 7:
358
374
  _state.sent();
@@ -391,6 +407,18 @@ function _getRenderMode() {
391
407
  switch (_state.label) {
392
408
  case 0:
393
409
  query = parseQuery(req);
410
+ if (req.headers.get("x-rsc-action")) {
411
+ return [
412
+ 2,
413
+ "rsc-action"
414
+ ];
415
+ }
416
+ if (req.headers.get("x-rsc-tree")) {
417
+ return [
418
+ 2,
419
+ "rsc-tree"
420
+ ];
421
+ }
394
422
  if (!isSSR)
395
423
  return [
396
424
  3,
@@ -0,0 +1,49 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
+ var renderRscHandler = function() {
5
+ var _ref = _async_to_generator(function(req, param) {
6
+ var serverManifest, routeInfo, rscClientManifest, _serverManifest_renderBundles, serverBundle, rscRequestHandler;
7
+ return _ts_generator(this, function(_state) {
8
+ serverManifest = param.serverManifest, routeInfo = param.routeInfo, rscClientManifest = param.rscClientManifest;
9
+ serverBundle = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_renderBundles = serverManifest.renderBundles) === null || _serverManifest_renderBundles === void 0 ? void 0 : _serverManifest_renderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
10
+ if (!serverBundle) {
11
+ return [
12
+ 2,
13
+ new Response("Cannot find server bundle for RSC", {
14
+ status: 500
15
+ })
16
+ ];
17
+ }
18
+ rscRequestHandler = serverBundle.rscRequestHandler;
19
+ if (!rscRequestHandler) {
20
+ return [
21
+ 2,
22
+ new Response("Cannot find request handler for RSC", {
23
+ status: 500
24
+ })
25
+ ];
26
+ }
27
+ if (!rscClientManifest) {
28
+ return [
29
+ 2,
30
+ new Response("Cannot find rsc client manifest", {
31
+ status: 500
32
+ })
33
+ ];
34
+ }
35
+ return [
36
+ 2,
37
+ rscRequestHandler({
38
+ clientManifest: rscClientManifest
39
+ })
40
+ ];
41
+ });
42
+ });
43
+ return function renderRscHandler2(req, _) {
44
+ return _ref.apply(this, arguments);
45
+ };
46
+ }();
47
+ export {
48
+ renderRscHandler
49
+ };
@@ -0,0 +1,49 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
+ var serverActionHandler = function() {
5
+ var _ref = _async_to_generator(function(req, param) {
6
+ var serverManifest, routeInfo, rscClientManifest, _serverManifest_renderBundles, serverBundle, handleAction;
7
+ return _ts_generator(this, function(_state) {
8
+ serverManifest = param.serverManifest, routeInfo = param.routeInfo, rscClientManifest = param.rscClientManifest;
9
+ serverBundle = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_renderBundles = serverManifest.renderBundles) === null || _serverManifest_renderBundles === void 0 ? void 0 : _serverManifest_renderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
10
+ if (!serverBundle) {
11
+ return [
12
+ 2,
13
+ new Response("Cannot find server bundle for server action", {
14
+ status: 500
15
+ })
16
+ ];
17
+ }
18
+ handleAction = serverBundle.handleAction;
19
+ if (!handleAction) {
20
+ return [
21
+ 2,
22
+ new Response("Cannot find server action handler", {
23
+ status: 500
24
+ })
25
+ ];
26
+ }
27
+ if (!rscClientManifest) {
28
+ return [
29
+ 2,
30
+ new Response("Cannot find rsc client manifest", {
31
+ status: 500
32
+ })
33
+ ];
34
+ }
35
+ return [
36
+ 2,
37
+ handleAction(req, {
38
+ clientManifest: rscClientManifest
39
+ })
40
+ ];
41
+ });
42
+ });
43
+ return function serverActionHandler2(req, _) {
44
+ return _ref.apply(this, arguments);
45
+ };
46
+ }();
47
+ export {
48
+ serverActionHandler
49
+ };
@@ -11,11 +11,11 @@ function ssrRender(request, _) {
11
11
  }
12
12
  function _ssrRender() {
13
13
  _ssrRender = _async_to_generator(function(request, param) {
14
- var routeInfo, html, userConfig, staticGenerate, nodeReq, serverManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, headers, key, renderBundle, requestHandler, config, requestHandlerOptions, cacheControl, response;
14
+ var routeInfo, html, userConfig, staticGenerate, nodeReq, serverManifest, rscSSRManifest, rscClientManifest, rscServerManifest, locals, params, loaderContext, reporter, cacheConfig, logger, metrics, onError, onTiming, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, headers, key, renderBundle, requestHandler, config, requestHandlerOptions, cacheControl, response;
15
15
  return _ts_generator(this, function(_state) {
16
16
  switch (_state.label) {
17
17
  case 0:
18
- routeInfo = param.routeInfo, html = param.html, userConfig = param.config, staticGenerate = param.staticGenerate, nodeReq = param.nodeReq, serverManifest = param.serverManifest, locals = param.locals, params = param.params, loaderContext = param.loaderContext, reporter = param.reporter, cacheConfig = param.cacheConfig, logger = param.logger, metrics = param.metrics, onError = param.onError, onTiming = param.onTiming;
18
+ routeInfo = param.routeInfo, html = param.html, userConfig = param.config, staticGenerate = param.staticGenerate, nodeReq = param.nodeReq, serverManifest = param.serverManifest, rscSSRManifest = param.rscSSRManifest, rscClientManifest = param.rscClientManifest, rscServerManifest = param.rscServerManifest, locals = param.locals, params = param.params, loaderContext = param.loaderContext, reporter = param.reporter, cacheConfig = param.cacheConfig, logger = param.logger, metrics = param.metrics, onError = param.onError, onTiming = param.onTiming;
19
19
  entryName = routeInfo.entryName;
20
20
  loadableStats = serverManifest.loadableStats || {};
21
21
  routeManifest = serverManifest.routeManifest || {};
@@ -49,6 +49,9 @@ function _ssrRender() {
49
49
  params,
50
50
  loaderContext,
51
51
  config,
52
+ rscSSRManifest,
53
+ rscClientManifest,
54
+ rscServerManifest,
52
55
  locals,
53
56
  reporter,
54
57
  staticGenerate,
@@ -13,7 +13,7 @@ var ErrorDigest;
13
13
  (function(ErrorDigest2) {
14
14
  ErrorDigest2["ENOTF"] = "Page could not be found";
15
15
  ErrorDigest2["EINTER"] = "Internal server error";
16
- ErrorDigest2["ERENDER"] = "SSR render failed";
16
+ ErrorDigest2["ERENDER"] = "SSR render fallback";
17
17
  })(ErrorDigest || (ErrorDigest = {}));
18
18
  function onError(digest, error, monitors, req) {
19
19
  var headerData = req && parseHeaders(req);
@@ -1,6 +1,6 @@
1
1
  import { httpCallBack2HonoMid, connectMid2HonoMid } from "./hono";
2
2
  import { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable } from "./node";
3
- import { serverStaticPlugin, injectResourcePlugin, getHtmlTemplates, getServerManifest, injectNodeSeverPlugin } from "./plugins";
3
+ import { serverStaticPlugin, injectResourcePlugin, getHtmlTemplates, getServerManifest, injectNodeSeverPlugin, injectRscManifestPlugin } from "./plugins";
4
4
  import { loadServerPlugins, loadServerEnv, loadServerRuntimeConfig, loadServerCliConfig, loadCacheConfig } from "./helper";
5
5
  export {
6
6
  connectMid2HonoMid,
@@ -11,6 +11,7 @@ export {
11
11
  httpCallBack2HonoMid,
12
12
  injectNodeSeverPlugin,
13
13
  injectResourcePlugin,
14
+ injectRscManifestPlugin,
14
15
  loadCacheConfig,
15
16
  loadServerCliConfig,
16
17
  loadServerEnv,
@@ -22,7 +22,7 @@ const createWebRequest = (req, res, body) => {
22
22
  signal: controller.signal
23
23
  };
24
24
  res.on("close", () => controller.abort("res closed"));
25
- if (body || !(method === "GET" || method === "HEAD") && ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes("__loader")) || req.headers["x-mf-micro"]) {
25
+ if (body || !(method === "GET" || method === "HEAD") && ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.includes("__loader")) || req.headers["x-mf-micro"] || req.headers["x-rsc-action"] || req.headers["x-parse-through-body"]) {
26
26
  init.body = body !== null && body !== void 0 ? body : createReadableStreamFromReadable(req);
27
27
  init.duplex = "half";
28
28
  }
@@ -66,16 +66,56 @@ async function getServerManifest(pwd, routes, logger) {
66
66
  nestedRoutesJson
67
67
  };
68
68
  }
69
- function injectServerManifest(pwd, routes) {
69
+ function injectServerManifest(pwd, routes, manifestPromise) {
70
70
  return async (c, next) => {
71
71
  if (routes && !c.get("serverManifest")) {
72
72
  const logger = c.get("logger");
73
- const serverManifest = await getServerManifest(pwd, routes, logger);
73
+ const serverManifest = await (manifestPromise || getServerManifest(pwd, routes, logger));
74
74
  c.set("serverManifest", serverManifest);
75
75
  }
76
76
  await next();
77
77
  };
78
78
  }
79
+ async function getRscServerManifest(pwd) {
80
+ const rscServerManifest = await compatibleRequire(path.join(pwd, "bundles", "react-server-manifest.json")).catch((_) => void 0);
81
+ return rscServerManifest;
82
+ }
83
+ async function getClientManifest(pwd) {
84
+ const rscClientManifest = await compatibleRequire(path.join(pwd, "react-client-manifest.json")).catch((_) => void 0);
85
+ return rscClientManifest;
86
+ }
87
+ async function getRscSSRManifest(pwd) {
88
+ const rscSSRManifest = await compatibleRequire(path.join(pwd, "react-ssr-manifest.json")).catch((_) => void 0);
89
+ return rscSSRManifest;
90
+ }
91
+ const injectRscManifestPlugin = () => ({
92
+ name: "@modern-js/plugin-inject-rsc-manifest",
93
+ setup(api) {
94
+ return {
95
+ async prepare() {
96
+ const { middlewares, distDirectory: pwd } = api.useAppContext();
97
+ middlewares.push({
98
+ name: "inject-rsc-manifest",
99
+ handler: async (c, next) => {
100
+ if (!c.get("rscServerManifest")) {
101
+ const rscServerManifest = await getRscServerManifest(pwd);
102
+ c.set("rscServerManifest", rscServerManifest);
103
+ }
104
+ if (!c.get("rscClientManifest")) {
105
+ const rscClientManifest = await getClientManifest(pwd);
106
+ c.set("rscClientManifest", rscClientManifest);
107
+ }
108
+ if (!c.get("rscSSRManifest")) {
109
+ const rscSSRManifest = await getRscSSRManifest(pwd);
110
+ c.set("rscSSRManifest", rscSSRManifest);
111
+ }
112
+ await next();
113
+ }
114
+ });
115
+ }
116
+ };
117
+ }
118
+ });
79
119
  const injectResourcePlugin = () => ({
80
120
  name: "@modern-js/plugin-inject-resource",
81
121
  setup(api) {
@@ -83,13 +123,14 @@ const injectResourcePlugin = () => ({
83
123
  async prepare() {
84
124
  const { middlewares, routes, distDirectory: pwd } = api.useAppContext();
85
125
  let htmlTemplatePromise;
126
+ let manifestPromise;
86
127
  if (isProd()) {
87
- getServerManifest(pwd, routes || [], console);
128
+ manifestPromise = getServerManifest(pwd, routes || [], console);
88
129
  htmlTemplatePromise = getHtmlTemplates(pwd, routes || []);
89
130
  }
90
131
  middlewares.push({
91
132
  name: "inject-server-manifest",
92
- handler: injectServerManifest(pwd, routes)
133
+ handler: injectServerManifest(pwd, routes, manifestPromise)
93
134
  });
94
135
  middlewares.push({
95
136
  name: "inject-html",
@@ -100,9 +141,13 @@ const injectResourcePlugin = () => ({
100
141
  }
101
142
  });
102
143
  export {
144
+ getClientManifest,
103
145
  getHtmlTemplates,
146
+ getRscSSRManifest,
147
+ getRscServerManifest,
104
148
  getServerManifest,
105
149
  injectResourcePlugin,
150
+ injectRscManifestPlugin,
106
151
  injectServerManifest,
107
152
  injectTemplates
108
153
  };
@@ -2,13 +2,21 @@ import { logPlugin } from "./log";
2
2
  import { initMonitorsPlugin, injectServerTiming, injectloggerPluigin } from "./monitors";
3
3
  import { processedByPlugin } from "./processedBy";
4
4
  import { injectRenderHandlerPlugin } from "./render";
5
+ function createSilenceLogger() {
6
+ return new Proxy({}, {
7
+ get: () => {
8
+ return () => {
9
+ };
10
+ }
11
+ });
12
+ }
5
13
  function createDefaultPlugins(options = {}) {
6
14
  const plugins = [
15
+ logPlugin(),
7
16
  initMonitorsPlugin(),
8
17
  injectRenderHandlerPlugin(options),
9
- injectloggerPluigin(options.logger),
18
+ injectloggerPluigin(options.logger ? options.logger : createSilenceLogger()),
10
19
  injectServerTiming(),
11
- logPlugin(),
12
20
  processedByPlugin()
13
21
  ];
14
22
  return plugins;
@@ -65,6 +65,9 @@ function createRenderHandler(render) {
65
65
  const monitors = c.get("monitors");
66
66
  const templates = c.get("templates") || {};
67
67
  const serverManifest = c.get("serverManifest") || {};
68
+ const rscServerManifest = c.get("rscServerManifest");
69
+ const rscClientManifest = c.get("rscClientManifest");
70
+ const rscSSRManifest = c.get("rscSSRManifest");
68
71
  const locals = c.get("locals");
69
72
  const metrics = c.get("metrics");
70
73
  const matchPathname = c.get("matchPathname");
@@ -80,6 +83,9 @@ function createRenderHandler(render) {
80
83
  templates,
81
84
  metrics,
82
85
  serverManifest,
86
+ rscServerManifest,
87
+ rscClientManifest,
88
+ rscSSRManifest,
83
89
  loaderContext,
84
90
  locals,
85
91
  matchPathname,