@modern-js/server-core 2.49.4-alpha.2 → 2.49.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/base/adapters/node/node.js +19 -2
  2. package/dist/cjs/base/adapters/node/polyfills/stream.js +18 -11
  3. package/dist/cjs/base/index.js +2 -0
  4. package/dist/cjs/base/middlewares/customServer/base.js +14 -4
  5. package/dist/cjs/base/middlewares/customServer/context.js +2 -2
  6. package/dist/cjs/base/middlewares/customServer/index.js +65 -11
  7. package/dist/cjs/base/middlewares/customServer/loader.js +37 -0
  8. package/dist/cjs/base/middlewares/index.js +9 -0
  9. package/dist/cjs/base/middlewares/renderHandler/index.js +16 -3
  10. package/dist/cjs/base/middlewares/renderHandler/render.js +4 -3
  11. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +1 -1
  12. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +2 -1
  13. package/dist/cjs/base/utils/index.js +3 -3
  14. package/dist/cjs/base/utils/request.js +19 -6
  15. package/dist/esm/base/adapters/node/node.js +50 -11
  16. package/dist/esm/base/adapters/node/polyfills/stream.js +56 -32
  17. package/dist/esm/base/index.js +2 -1
  18. package/dist/esm/base/middlewares/customServer/base.js +14 -4
  19. package/dist/esm/base/middlewares/customServer/context.js +2 -2
  20. package/dist/esm/base/middlewares/customServer/index.js +127 -47
  21. package/dist/esm/base/middlewares/customServer/loader.js +13 -0
  22. package/dist/esm/base/middlewares/index.js +4 -0
  23. package/dist/esm/base/middlewares/renderHandler/index.js +81 -28
  24. package/dist/esm/base/middlewares/renderHandler/render.js +5 -4
  25. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +1 -1
  26. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +3 -2
  27. package/dist/esm/base/utils/index.js +1 -1
  28. package/dist/esm/base/utils/request.js +18 -6
  29. package/dist/esm-node/base/adapters/node/node.js +10 -3
  30. package/dist/esm-node/base/adapters/node/polyfills/stream.js +18 -11
  31. package/dist/esm-node/base/index.js +2 -1
  32. package/dist/esm-node/base/middlewares/customServer/base.js +14 -4
  33. package/dist/esm-node/base/middlewares/customServer/context.js +2 -2
  34. package/dist/esm-node/base/middlewares/customServer/index.js +63 -10
  35. package/dist/esm-node/base/middlewares/customServer/loader.js +13 -0
  36. package/dist/esm-node/base/middlewares/index.js +4 -0
  37. package/dist/esm-node/base/middlewares/renderHandler/index.js +17 -4
  38. package/dist/esm-node/base/middlewares/renderHandler/render.js +4 -3
  39. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +1 -1
  40. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +2 -1
  41. package/dist/esm-node/base/utils/index.js +1 -1
  42. package/dist/esm-node/base/utils/request.js +18 -6
  43. package/dist/types/base/adapters/node/node.d.ts +4 -2
  44. package/dist/types/base/index.d.ts +1 -1
  45. package/dist/types/base/middlewares/customServer/base.d.ts +5 -1
  46. package/dist/types/base/middlewares/customServer/context.d.ts +2 -1
  47. package/dist/types/base/middlewares/customServer/index.d.ts +2 -1
  48. package/dist/types/base/middlewares/customServer/loader.d.ts +10 -0
  49. package/dist/types/base/middlewares/index.d.ts +1 -0
  50. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +2 -1
  51. package/dist/types/base/utils/index.d.ts +1 -1
  52. package/dist/types/base/utils/request.d.ts +7 -2
  53. package/dist/types/core/plugin.d.ts +8 -8
  54. package/dist/types/core/render.d.ts +1 -0
  55. package/package.json +7 -7
@@ -9,7 +9,7 @@ function writeReadableStreamToWritable(stream, writable) {
9
9
  }
10
10
  function _writeReadableStreamToWritable() {
11
11
  _writeReadableStreamToWritable = _async_to_generator(function(stream, writable) {
12
- var reader, flushable, _ref, done, value, error;
12
+ var reader, flushable, error;
13
13
  return _ts_generator(this, function(_state) {
14
14
  switch (_state.label) {
15
15
  case 0:
@@ -19,48 +19,72 @@ function _writeReadableStreamToWritable() {
19
19
  case 1:
20
20
  _state.trys.push([
21
21
  1,
22
- 5,
22
+ 3,
23
23
  ,
24
- 6
24
+ 4
25
25
  ]);
26
- _state.label = 2;
27
- case 2:
28
- if (false)
29
- return [
30
- 3,
31
- 4
32
- ];
33
26
  return [
34
27
  4,
35
- reader.read()
28
+ new Promise(function(resolve, reject) {
29
+ writable.on("finish", resolve);
30
+ writable.on("error", reject);
31
+ var writeAndFlush = function() {
32
+ var _ref = _async_to_generator(function() {
33
+ var _ref2, done, value;
34
+ return _ts_generator(this, function(_state2) {
35
+ switch (_state2.label) {
36
+ case 0:
37
+ if (false)
38
+ return [
39
+ 3,
40
+ 2
41
+ ];
42
+ return [
43
+ 4,
44
+ reader.read()
45
+ ];
46
+ case 1:
47
+ _ref2 = _state2.sent(), done = _ref2.done, value = _ref2.value;
48
+ if (done) {
49
+ writable.end();
50
+ return [
51
+ 3,
52
+ 2
53
+ ];
54
+ }
55
+ writable.write(value);
56
+ if (typeof flushable.flush === "function") {
57
+ flushable.flush();
58
+ }
59
+ return [
60
+ 3,
61
+ 0
62
+ ];
63
+ case 2:
64
+ return [
65
+ 2
66
+ ];
67
+ }
68
+ });
69
+ });
70
+ return function writeAndFlush2() {
71
+ return _ref.apply(this, arguments);
72
+ };
73
+ }();
74
+ writeAndFlush().catch(reject);
75
+ })
36
76
  ];
37
- case 3:
38
- _ref = _state.sent(), done = _ref.done, value = _ref.value;
39
- if (done) {
40
- writable.end();
41
- return [
42
- 3,
43
- 4
44
- ];
45
- }
46
- writable.write(value);
47
- if (typeof flushable.flush === "function") {
48
- flushable.flush();
49
- }
50
- return [
51
- 3,
52
- 2
53
- ];
54
- case 4:
77
+ case 2:
78
+ _state.sent();
55
79
  return [
56
80
  3,
57
- 6
81
+ 4
58
82
  ];
59
- case 5:
83
+ case 3:
60
84
  error = _state.sent();
61
85
  writable.destroy(error);
62
86
  throw error;
63
- case 6:
87
+ case 4:
64
88
  return [
65
89
  2
66
90
  ];
@@ -1,6 +1,6 @@
1
1
  import { createErrorHtml, onError, ErrorDigest } from "./utils";
2
2
  import { AGGRED_DIR } from "./constants";
3
- import { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler, logHandler, processedBy } from "./middlewares";
3
+ import { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler, logHandler, processedBy, getLoaderCtx } from "./middlewares";
4
4
  import { createServerBase } from "./serverBase";
5
5
  export {
6
6
  AGGRED_DIR,
@@ -9,6 +9,7 @@ export {
9
9
  createErrorHtml,
10
10
  createServerBase,
11
11
  favionFallbackMiddleware,
12
+ getLoaderCtx,
12
13
  getRenderHandler,
13
14
  injectLogger,
14
15
  injectReporter,
@@ -5,12 +5,12 @@ import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_fie
5
5
  import { _ as _create_class } from "@swc/helpers/_/_create_class";
6
6
  import { getCookie } from "hono/cookie";
7
7
  import { getHost } from "../../utils";
8
- function createBaseHookContext(c) {
8
+ function createBaseHookContext(c, resParams) {
9
9
  var logger = c.get("logger");
10
10
  var metrics = c.get("metrics");
11
11
  return {
12
12
  request: new BaseHookRequest(c),
13
- response: new BaseHookResponse(c),
13
+ response: new BaseHookResponse(c, resParams),
14
14
  logger,
15
15
  metrics
16
16
  };
@@ -137,17 +137,22 @@ var BaseHookRequest = /* @__PURE__ */ function() {
137
137
  ]);
138
138
  return BaseHookRequest2;
139
139
  }();
140
- var _c1 = /* @__PURE__ */ new WeakMap();
140
+ var _c1 = /* @__PURE__ */ new WeakMap(), _resArgs = /* @__PURE__ */ new WeakMap();
141
141
  var BaseHookResponse = /* @__PURE__ */ function() {
142
142
  "use strict";
143
- function BaseHookResponse2(c) {
143
+ function BaseHookResponse2(c, resArgs) {
144
144
  _class_call_check(this, BaseHookResponse2);
145
145
  _class_private_field_init(this, _c1, {
146
146
  writable: true,
147
147
  value: void 0
148
148
  });
149
+ _class_private_field_init(this, _resArgs, {
150
+ writable: true,
151
+ value: void 0
152
+ });
149
153
  this.private_overrided = false;
150
154
  _class_private_field_set(this, _c1, c);
155
+ _class_private_field_set(this, _resArgs, resArgs);
151
156
  }
152
157
  var _proto = BaseHookResponse2.prototype;
153
158
  _proto.get = function get(key) {
@@ -158,15 +163,20 @@ var BaseHookResponse = /* @__PURE__ */ function() {
158
163
  "set-cookie",
159
164
  "Set-Cookie"
160
165
  ].includes(key)) {
166
+ var _$_class_private_field_get;
161
167
  _class_private_field_get(this, _c1).header(key, value.toString(), {
162
168
  append: true
163
169
  });
170
+ (_$_class_private_field_get = _class_private_field_get(this, _resArgs)) === null || _$_class_private_field_get === void 0 ? void 0 : _$_class_private_field_get.headers.append(key, value.toString());
164
171
  } else {
172
+ var _$_class_private_field_get1;
165
173
  _class_private_field_get(this, _c1).header(key, value.toString());
174
+ (_$_class_private_field_get1 = _class_private_field_get(this, _resArgs)) === null || _$_class_private_field_get1 === void 0 ? void 0 : _$_class_private_field_get1.headers.set(key, value.toString());
166
175
  }
167
176
  };
168
177
  _proto.status = function status(code) {
169
178
  _class_private_field_get(this, _c1).status(code);
179
+ _class_private_field_get(this, _resArgs) && (_class_private_field_get(this, _resArgs).status = code);
170
180
  };
171
181
  _proto.raw = function raw(body, options) {
172
182
  _class_private_field_get(this, _c1).res = _class_private_field_get(this, _c1).newResponse(body, options);
@@ -37,9 +37,9 @@ function _getAfterRenderCtx() {
37
37
  });
38
38
  return _getAfterRenderCtx.apply(this, arguments);
39
39
  }
40
- function createCustomMiddlewaresCtx(c, locals) {
40
+ function createCustomMiddlewaresCtx(c, locals, resArgs) {
41
41
  var _c_env_node, _c_env_node1;
42
- var baseContext = createBaseHookContext(c);
42
+ var baseContext = createBaseHookContext(c, resArgs);
43
43
  var reporter = c.get("reporter");
44
44
  var response = baseContext.response;
45
45
  response.locals = locals;
@@ -4,8 +4,10 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
4
  import { time } from "@modern-js/runtime-utils/time";
5
5
  import { transformResponse } from "../../utils";
6
6
  import { ServerReportTimings } from "../../constants";
7
+ import { getLoaderCtx } from "./loader";
7
8
  import { getAfterMatchCtx, getAfterRenderCtx, createCustomMiddlewaresCtx, createAfterStreamingRenderContext } from "./context";
8
9
  import { createBaseHookContext } from "./base";
10
+ import { getLoaderCtx as getLoaderCtx2 } from "./loader";
9
11
  var noop = function() {
10
12
  };
11
13
  var isHtmlResponse = function(response) {
@@ -26,7 +28,7 @@ var CustomServer = /* @__PURE__ */ function() {
26
28
  }
27
29
  }, {
28
30
  onLast: function() {
29
- return null;
31
+ return [];
30
32
  }
31
33
  });
32
34
  }
@@ -159,62 +161,140 @@ var CustomServer = /* @__PURE__ */ function() {
159
161
  };
160
162
  _proto.getServerMiddleware = function getServerMiddleware() {
161
163
  var _this = this;
162
- return function() {
163
- var _ref = _async_to_generator(function(c, next) {
164
- var _c_env, serverMiddleware, reporter, locals, customMiddlewareCtx, getCost, cost;
165
- return _ts_generator(this, function(_state) {
166
- switch (_state.label) {
167
- case 0:
164
+ return _async_to_generator(function() {
165
+ var serverMiddleware;
166
+ return _ts_generator(this, function(_state) {
167
+ switch (_state.label) {
168
+ case 0:
169
+ return [
170
+ 4,
171
+ _this.serverMiddlewarePromise
172
+ ];
173
+ case 1:
174
+ serverMiddleware = _state.sent();
175
+ if (!serverMiddleware) {
168
176
  return [
169
- 4,
170
- _this.serverMiddlewarePromise
177
+ 2
171
178
  ];
172
- case 1:
173
- serverMiddleware = _state.sent();
174
- if (!serverMiddleware) {
175
- return [
176
- 2,
177
- next()
178
- ];
179
- }
180
- reporter = c.get("reporter");
181
- locals = {};
182
- customMiddlewareCtx = createCustomMiddlewaresCtx(c, locals);
183
- getCost = time();
179
+ }
180
+ if (Array.isArray(serverMiddleware)) {
184
181
  return [
185
- 4,
186
- serverMiddleware(customMiddlewareCtx)
182
+ 2,
183
+ getUnstableMiddlewares(serverMiddleware)
187
184
  ];
188
- case 2:
189
- _state.sent();
190
- cost = getCost();
191
- cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost));
192
- c.set("locals", locals);
193
- if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
194
- return [
195
- 2,
196
- void 0
197
- ];
198
- }
199
- if (!c.finalized) {
200
- return [
201
- 2,
202
- next()
203
- ];
204
- }
205
- return [
206
- 2
207
- ];
208
- }
185
+ }
186
+ return [
187
+ 2,
188
+ function() {
189
+ var _ref = _async_to_generator(function(c, next) {
190
+ var _c_env_node_res, _c_env_node, _c_env, reporter, locals, resArgs, customMiddlewareCtx, getCost, cost;
191
+ return _ts_generator(this, function(_state2) {
192
+ switch (_state2.label) {
193
+ case 0:
194
+ reporter = c.get("reporter");
195
+ locals = {};
196
+ resArgs = {
197
+ headers: new Headers()
198
+ };
199
+ customMiddlewareCtx = createCustomMiddlewaresCtx(c, locals, resArgs);
200
+ getCost = time();
201
+ return [
202
+ 4,
203
+ serverMiddleware(customMiddlewareCtx)
204
+ ];
205
+ case 1:
206
+ _state2.sent();
207
+ cost = getCost();
208
+ cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost));
209
+ c.set("locals", locals);
210
+ if (isRedirect(resArgs.headers, resArgs.status)) {
211
+ return [
212
+ 2,
213
+ c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302)
214
+ ];
215
+ }
216
+ if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : (_c_env_node = _c_env.node) === null || _c_env_node === void 0 ? void 0 : (_c_env_node_res = _c_env_node.res) === null || _c_env_node_res === void 0 ? void 0 : _c_env_node_res.headersSent) {
217
+ return [
218
+ 2,
219
+ void 0
220
+ ];
221
+ }
222
+ if (!c.finalized) {
223
+ return [
224
+ 2,
225
+ next()
226
+ ];
227
+ }
228
+ return [
229
+ 2
230
+ ];
231
+ }
232
+ });
233
+ });
234
+ return function(c, next) {
235
+ return _ref.apply(this, arguments);
236
+ };
237
+ }()
238
+ ];
239
+ }
240
+ });
241
+ })();
242
+ };
243
+ return CustomServer2;
244
+ }();
245
+ function isRedirect(headers, code) {
246
+ return [
247
+ 301,
248
+ 302,
249
+ 307,
250
+ 308
251
+ ].includes(code || 0) || headers.get("Location");
252
+ }
253
+ function getUnstableMiddlewares(serverMiddleware) {
254
+ return serverMiddleware.map(function(middleware) {
255
+ return function() {
256
+ var _ref = _async_to_generator(function(c, next) {
257
+ var context;
258
+ return _ts_generator(this, function(_state) {
259
+ context = createMiddlewareContextFromHono(c);
260
+ return [
261
+ 2,
262
+ middleware(context, next)
263
+ ];
209
264
  });
210
265
  });
211
266
  return function(c, next) {
212
267
  return _ref.apply(this, arguments);
213
268
  };
214
269
  }();
270
+ });
271
+ }
272
+ function createMiddlewareContextFromHono(c) {
273
+ var loaderContext = getLoaderCtx(c);
274
+ return {
275
+ get request() {
276
+ return c.req.raw;
277
+ },
278
+ get response() {
279
+ return c.res;
280
+ },
281
+ set response(newRes) {
282
+ c.res = newRes;
283
+ },
284
+ get: function get(key) {
285
+ return loaderContext.get(key);
286
+ },
287
+ set: function set(key, value) {
288
+ return loaderContext.set(key, value);
289
+ },
290
+ status: c.status.bind(c),
291
+ header: c.header.bind(c),
292
+ body: c.body.bind(c),
293
+ html: c.html.bind(c),
294
+ redirect: c.redirect.bind(c)
215
295
  };
216
- return CustomServer2;
217
- }();
296
+ }
218
297
  export {
219
- CustomServer
298
+ CustomServer,
299
+ getLoaderCtx2 as getLoaderCtx
220
300
  };
@@ -0,0 +1,13 @@
1
+ function getLoaderCtx(c) {
2
+ var loaderContext = c.get("loaderContext");
3
+ if (loaderContext) {
4
+ return loaderContext;
5
+ } else {
6
+ var loaderContext1 = /* @__PURE__ */ new Map();
7
+ c.set("loaderContext", loaderContext1);
8
+ return loaderContext1;
9
+ }
10
+ }
11
+ export {
12
+ getLoaderCtx
13
+ };
@@ -3,3 +3,7 @@ export * from "./monitor";
3
3
  export * from "./renderHandler";
4
4
  export * from "./logger";
5
5
  export * from "./frameworkHeader";
6
+ import { getLoaderCtx } from "./customServer";
7
+ export {
8
+ getLoaderCtx
9
+ };
@@ -1,14 +1,15 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
+ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
5
  import { checkIsProd, sortRoutes, getRuntimeEnv } from "../../utils";
5
6
  import { initReporter } from "../monitor";
6
- import { CustomServer } from "../customServer";
7
+ import { CustomServer, getLoaderCtx } from "../customServer";
7
8
  import { createRender } from "./render";
8
9
  function createRenderHandler(render) {
9
10
  return function() {
10
11
  var _ref = _async_to_generator(function(c, _) {
11
- var _c_env_node, logger, reporter, templates, serverManifest, locals, metrics, request, nodeReq, res;
12
+ var _c_env_node, logger, reporter, templates, serverManifest, locals, metrics, loaderContext, request, nodeReq, res, body, status, headers, headersData;
12
13
  return _ts_generator(this, function(_state) {
13
14
  switch (_state.label) {
14
15
  case 0:
@@ -18,6 +19,7 @@ function createRenderHandler(render) {
18
19
  serverManifest = c.get("serverManifest") || {};
19
20
  locals = c.get("locals");
20
21
  metrics = c.get("metrics");
22
+ loaderContext = getLoaderCtx(c);
21
23
  request = c.req.raw;
22
24
  nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
23
25
  return [
@@ -29,14 +31,20 @@ function createRenderHandler(render) {
29
31
  templates,
30
32
  metrics,
31
33
  serverManifest,
34
+ loaderContext,
32
35
  locals
33
36
  })
34
37
  ];
35
38
  case 1:
36
39
  res = _state.sent();
40
+ body = res.body, status = res.status, headers = res.headers;
41
+ headersData = {};
42
+ headers.forEach(function(v, k) {
43
+ headersData[k] = v;
44
+ });
37
45
  return [
38
46
  2,
39
- res
47
+ c.body(body, status, headersData)
40
48
  ];
41
49
  }
42
50
  });
@@ -109,7 +117,7 @@ function bindRenderHandler(server, options) {
109
117
  }
110
118
  function _bindRenderHandler() {
111
119
  _bindRenderHandler = _async_to_generator(function(server, options) {
112
- var routes, pwd, disableCustomHook, runner, customServer, cacheModuleName, ssrCache, pageRoutes, render, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, originUrlPath, entryName, urlPath, customServerHookMiddleware, customServerMiddleware;
120
+ var routes, pwd, disableCustomHook, runner, customServer, cacheModuleName, ssrCache, pageRoutes, render, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, originUrlPath, entryName, urlPath, customServerHookMiddleware, customServerMiddleware, _server, err;
113
121
  return _ts_generator(this, function(_state) {
114
122
  switch (_state.label) {
115
123
  case 0:
@@ -118,7 +126,7 @@ function _bindRenderHandler() {
118
126
  if (!(routes && routes.length > 0))
119
127
  return [
120
128
  3,
121
- 5
129
+ 12
122
130
  ];
123
131
  customServer = new CustomServer(runner, server, pwd);
124
132
  if (!(getRuntimeEnv() === "node"))
@@ -151,34 +159,79 @@ function _bindRenderHandler() {
151
159
  case 4:
152
160
  render = _state.sent();
153
161
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
154
- try {
155
- for (_iterator = pageRoutes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
156
- route = _step.value;
157
- originUrlPath = route.urlPath, entryName = route.entryName;
158
- urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
159
- customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
160
- server.use(urlPath, initReporter(entryName));
161
- !disableCustomHook && server.use(urlPath, customServerHookMiddleware);
162
- customServerMiddleware = customServer.getServerMiddleware();
162
+ _state.label = 5;
163
+ case 5:
164
+ _state.trys.push([
165
+ 5,
166
+ 10,
167
+ 11,
168
+ 12
169
+ ]);
170
+ _iterator = pageRoutes[Symbol.iterator]();
171
+ _state.label = 6;
172
+ case 6:
173
+ if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done))
174
+ return [
175
+ 3,
176
+ 9
177
+ ];
178
+ route = _step.value;
179
+ originUrlPath = route.urlPath, entryName = route.entryName;
180
+ urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
181
+ customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
182
+ server.use(urlPath, initReporter(entryName));
183
+ !disableCustomHook && server.use(urlPath, customServerHookMiddleware);
184
+ return [
185
+ 4,
186
+ customServer.getServerMiddleware()
187
+ ];
188
+ case 7:
189
+ customServerMiddleware = _state.sent();
190
+ if (customServerMiddleware) {
191
+ if (Array.isArray(customServerMiddleware)) {
192
+ ;
193
+ (_server = server).use.apply(_server, [
194
+ urlPath
195
+ ].concat(_to_consumable_array(customServerMiddleware)));
196
+ } else {
163
197
  server.use(urlPath, customServerMiddleware);
164
- render && server.all(urlPath, createRenderHandler(render));
165
198
  }
166
- } catch (err) {
167
- _didIteratorError = true;
168
- _iteratorError = err;
199
+ }
200
+ render && server.all(urlPath, createRenderHandler(render));
201
+ _state.label = 8;
202
+ case 8:
203
+ _iteratorNormalCompletion = true;
204
+ return [
205
+ 3,
206
+ 6
207
+ ];
208
+ case 9:
209
+ return [
210
+ 3,
211
+ 12
212
+ ];
213
+ case 10:
214
+ err = _state.sent();
215
+ _didIteratorError = true;
216
+ _iteratorError = err;
217
+ return [
218
+ 3,
219
+ 12
220
+ ];
221
+ case 11:
222
+ try {
223
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
224
+ _iterator.return();
225
+ }
169
226
  } finally {
170
- try {
171
- if (!_iteratorNormalCompletion && _iterator.return != null) {
172
- _iterator.return();
173
- }
174
- } finally {
175
- if (_didIteratorError) {
176
- throw _iteratorError;
177
- }
227
+ if (_didIteratorError) {
228
+ throw _iteratorError;
178
229
  }
179
230
  }
180
- _state.label = 5;
181
- case 5:
231
+ return [
232
+ 7
233
+ ];
234
+ case 12:
182
235
  return [
183
236
  2
184
237
  ];
@@ -3,8 +3,8 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
3
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
4
  import { cutNameByHyphen } from "@modern-js/utils/universal";
5
5
  import { TrieRouter } from "hono/router/trie-router";
6
+ import { parseQuery, getPathname, createErrorHtml, sortRoutes, transformResponse, onError as onErrorFn, ErrorDigest } from "../../utils";
6
7
  import { REPLACE_REG } from "../../../base/constants";
7
- import { createErrorHtml, sortRoutes, parseQuery, transformResponse, getPathname, onError as onErrorFn, ErrorDigest } from "../../utils";
8
8
  import { dataHandler } from "./dataHandler";
9
9
  import { ssrRender } from "./ssrRender";
10
10
  function getRouter(routes) {
@@ -53,11 +53,11 @@ function _createRender() {
53
53
  2,
54
54
  function() {
55
55
  var _ref = _async_to_generator(function(req, param2) {
56
- var logger, nodeReq, reporter, templates, serverManifest, locals, metrics, _matchRoute, routeInfo, params, onFallback, html, renderMode, onError, renderOptions, response;
56
+ var logger, nodeReq, reporter, templates, serverManifest, locals, metrics, loaderContext, _matchRoute, routeInfo, params, onFallback, html, renderMode, onError, renderOptions, response;
57
57
  return _ts_generator(this, function(_state2) {
58
58
  switch (_state2.label) {
59
59
  case 0:
60
- logger = param2.logger, nodeReq = param2.nodeReq, reporter = param2.reporter, templates = param2.templates, serverManifest = param2.serverManifest, locals = param2.locals, metrics = param2.metrics;
60
+ logger = param2.logger, nodeReq = param2.nodeReq, reporter = param2.reporter, templates = param2.templates, serverManifest = param2.serverManifest, locals = param2.locals, metrics = param2.metrics, loaderContext = param2.loaderContext;
61
61
  _matchRoute = _sliced_to_array(matchRoute(router, req), 2), routeInfo = _matchRoute[0], params = _matchRoute[1];
62
62
  onFallback = function() {
63
63
  var _ref2 = _async_to_generator(function(reason, error) {
@@ -141,7 +141,8 @@ function _createRender() {
141
141
  params,
142
142
  locals,
143
143
  serverManifest,
144
- metrics
144
+ metrics,
145
+ loaderContext: loaderContext || /* @__PURE__ */ new Map()
145
146
  };
146
147
  switch (renderMode) {
147
148
  case "data":
@@ -6,8 +6,8 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
6
  import { Readable } from "stream";
7
7
  import { SERVER_DIR, requireExistModule } from "@modern-js/utils";
8
8
  import { createMemoryStorage } from "@modern-js/runtime-utils/storer";
9
- import { createReadableStreamFromReadable } from "../../adapters/node/polyfills/stream";
10
9
  import { createTransformStream, getPathname } from "../../utils";
10
+ import { createReadableStreamFromReadable } from "../../adapters/node/polyfills/stream";
11
11
  var CacheManager = /* @__PURE__ */ function() {
12
12
  "use strict";
13
13
  function CacheManager2(container) {
@@ -24,11 +24,11 @@ function ssrRender(request, _) {
24
24
  }
25
25
  function _ssrRender() {
26
26
  _ssrRender = _async_to_generator(function(request, param) {
27
- var routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, host, isSpider, responseProxy, query, headers, key, ssrContext, renderBundle, runtimeEnv, ssrResult, cacheStatus, render, cacheModuleName, ssrCache, incomingMessage, cacheControl, _ref, data, status, redirection, headers1, Readable, streamModule, createReadableStreamFromReadable, _tmp, data1;
27
+ var routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics, loaderContext, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, host, isSpider, responseProxy, query, headers, key, ssrContext, renderBundle, runtimeEnv, ssrResult, cacheStatus, render, cacheModuleName, ssrCache, incomingMessage, cacheControl, _ref, data, status, redirection, headers1, Readable, streamModule, createReadableStreamFromReadable, _tmp, data1;
28
28
  return _ts_generator(this, function(_state) {
29
29
  switch (_state.label) {
30
30
  case 0:
31
- routeInfo = param.routeInfo, html = param.html, staticGenerate = param.staticGenerate, nonce = param.nonce, metaName = param.metaName, reporter = param.reporter, logger = param.logger, nodeReq = param.nodeReq, serverManifest = param.serverManifest, locals = param.locals, params = param.params, metrics = param.metrics;
31
+ routeInfo = param.routeInfo, html = param.html, staticGenerate = param.staticGenerate, nonce = param.nonce, metaName = param.metaName, reporter = param.reporter, logger = param.logger, nodeReq = param.nodeReq, serverManifest = param.serverManifest, locals = param.locals, params = param.params, metrics = param.metrics, loaderContext = param.loaderContext;
32
32
  entryName = routeInfo.entryName;
33
33
  loadableStats = serverManifest.loadableStats || {};
34
34
  routeManifest = serverManifest.routeManifest || {};
@@ -66,6 +66,7 @@ function _ssrRender() {
66
66
  redirection: {},
67
67
  template: html,
68
68
  loadableStats,
69
+ loaderContext,
69
70
  routeManifest,
70
71
  entryName,
71
72
  staticGenerate,