@modern-js/server-core 2.49.4-alpha.1 → 2.49.4

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 (35) hide show
  1. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +4 -1
  2. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +1 -2
  3. package/dist/cjs/base/adapters/node/node.js +19 -2
  4. package/dist/cjs/base/adapters/node/polyfills/stream.js +18 -11
  5. package/dist/cjs/base/middlewares/customServer/base.js +14 -4
  6. package/dist/cjs/base/middlewares/customServer/context.js +2 -2
  7. package/dist/cjs/base/middlewares/customServer/index.js +15 -1
  8. package/dist/cjs/base/middlewares/renderHandler/index.js +6 -1
  9. package/dist/cjs/base/middlewares/renderHandler/render.js +29 -12
  10. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +2 -2
  11. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +6 -1
  12. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +1 -2
  13. package/dist/esm/base/adapters/node/node.js +50 -11
  14. package/dist/esm/base/adapters/node/polyfills/stream.js +56 -32
  15. package/dist/esm/base/middlewares/customServer/base.js +14 -4
  16. package/dist/esm/base/middlewares/customServer/context.js +2 -2
  17. package/dist/esm/base/middlewares/customServer/index.js +19 -2
  18. package/dist/esm/base/middlewares/renderHandler/index.js +7 -2
  19. package/dist/esm/base/middlewares/renderHandler/render.js +52 -33
  20. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +3 -3
  21. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +4 -1
  22. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +1 -2
  23. package/dist/esm-node/base/adapters/node/node.js +10 -3
  24. package/dist/esm-node/base/adapters/node/polyfills/stream.js +18 -11
  25. package/dist/esm-node/base/middlewares/customServer/base.js +14 -4
  26. package/dist/esm-node/base/middlewares/customServer/context.js +2 -2
  27. package/dist/esm-node/base/middlewares/customServer/index.js +15 -1
  28. package/dist/esm-node/base/middlewares/renderHandler/index.js +6 -1
  29. package/dist/esm-node/base/middlewares/renderHandler/render.js +29 -12
  30. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +2 -2
  31. package/dist/types/base/adapters/node/node.d.ts +4 -2
  32. package/dist/types/base/middlewares/customServer/base.d.ts +5 -1
  33. package/dist/types/base/middlewares/customServer/context.d.ts +2 -1
  34. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +3 -1
  35. package/package.json +7 -7
@@ -47,6 +47,9 @@ function createPublicMiddleware({ pwd, routes }) {
47
47
  if (mimeType) {
48
48
  c.header("Content-Type", mimeType);
49
49
  }
50
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
51
+ c.header(k, v);
52
+ });
50
53
  return c.body(data, 200);
51
54
  }
52
55
  }
@@ -55,7 +58,7 @@ function createPublicMiddleware({ pwd, routes }) {
55
58
  }
56
59
  function matchRoute(req, routes) {
57
60
  for (const route of routes.sort(import_utils.sortRoutes)) {
58
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
61
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
59
62
  return route;
60
63
  }
61
64
  }
@@ -35,7 +35,6 @@ var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
36
  var import_mime = require("hono/utils/mime");
37
37
  var import_fileReader = require("@modern-js/runtime-utils/fileReader");
38
- var import_utils2 = require("../../../utils");
39
38
  var import_serverPublic = require("./serverPublic");
40
39
  function createStaticMiddleware(options) {
41
40
  const { pwd, routes } = options;
@@ -69,7 +68,7 @@ function createStaticMiddleware(options) {
69
68
  if (hit) {
70
69
  const filepath = import_path.default.join(pwd, pathname.replace(prefix, () => ""));
71
70
  if (!await import_utils.fs.pathExists(filepath)) {
72
- return c.html((0, import_utils2.createErrorHtml)(404), 404);
71
+ return next();
73
72
  }
74
73
  const mimeType = (0, import_mime.getMimeType)(filepath);
75
74
  if (mimeType) {
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var node_exports = {};
20
30
  __export(node_exports, {
@@ -112,9 +122,16 @@ const getRequestListener = (handler) => {
112
122
  }
113
123
  };
114
124
  };
115
- const createNodeServer = (requestHandler) => {
125
+ const createNodeServer = async (requestHandler, httpsOptions) => {
116
126
  const requestListener = getRequestListener(requestHandler);
117
- const nodeServer = (0, import_node_http.createServer)(requestListener);
127
+ let nodeServer;
128
+ if (httpsOptions) {
129
+ const { createServer } = await Promise.resolve().then(() => __toESM(require("node:https")));
130
+ nodeServer = createServer(httpsOptions, requestListener);
131
+ } else {
132
+ const { createServer } = await Promise.resolve().then(() => __toESM(require("node:http")));
133
+ nodeServer = createServer(requestListener);
134
+ }
118
135
  nodeServer.getRequestListener = () => requestListener;
119
136
  nodeServer.getRequestHandler = () => requestHandler;
120
137
  return nodeServer;
@@ -29,17 +29,24 @@ async function writeReadableStreamToWritable(stream, writable) {
29
29
  const reader = stream.getReader();
30
30
  const flushable = writable;
31
31
  try {
32
- while (true) {
33
- const { done, value } = await reader.read();
34
- if (done) {
35
- writable.end();
36
- break;
37
- }
38
- writable.write(value);
39
- if (typeof flushable.flush === "function") {
40
- flushable.flush();
41
- }
42
- }
32
+ await new Promise((resolve, reject) => {
33
+ writable.on("finish", resolve);
34
+ writable.on("error", reject);
35
+ const writeAndFlush = async () => {
36
+ while (true) {
37
+ const { done, value } = await reader.read();
38
+ if (done) {
39
+ writable.end();
40
+ break;
41
+ }
42
+ writable.write(value);
43
+ if (typeof flushable.flush === "function") {
44
+ flushable.flush();
45
+ }
46
+ }
47
+ };
48
+ writeAndFlush().catch(reject);
49
+ });
43
50
  } catch (error) {
44
51
  writable.destroy(error);
45
52
  throw error;
@@ -26,12 +26,12 @@ var import_class_private_field_init = require("@swc/helpers/_/_class_private_fie
26
26
  var import_class_private_field_set = require("@swc/helpers/_/_class_private_field_set");
27
27
  var import_cookie = require("hono/cookie");
28
28
  var import_utils = require("../../utils");
29
- function createBaseHookContext(c) {
29
+ function createBaseHookContext(c, resParams) {
30
30
  const logger = c.get("logger");
31
31
  const metrics = c.get("metrics");
32
32
  return {
33
33
  request: new BaseHookRequest(c),
34
- response: new BaseHookResponse(c),
34
+ response: new BaseHookResponse(c, resParams),
35
35
  logger,
36
36
  metrics
37
37
  };
@@ -118,7 +118,7 @@ class BaseHookRequest {
118
118
  }));
119
119
  }
120
120
  }
121
- var _c1 = /* @__PURE__ */ new WeakMap();
121
+ var _c1 = /* @__PURE__ */ new WeakMap(), _resArgs = /* @__PURE__ */ new WeakMap();
122
122
  class BaseHookResponse {
123
123
  get(key) {
124
124
  return (0, import_class_private_field_get._)(this, _c1).res.headers.get(key);
@@ -128,15 +128,20 @@ class BaseHookResponse {
128
128
  "set-cookie",
129
129
  "Set-Cookie"
130
130
  ].includes(key)) {
131
+ var _class_private_field_get1;
131
132
  (0, import_class_private_field_get._)(this, _c1).header(key, value.toString(), {
132
133
  append: true
133
134
  });
135
+ (_class_private_field_get1 = (0, import_class_private_field_get._)(this, _resArgs)) === null || _class_private_field_get1 === void 0 ? void 0 : _class_private_field_get1.headers.append(key, value.toString());
134
136
  } else {
137
+ var _class_private_field_get2;
135
138
  (0, import_class_private_field_get._)(this, _c1).header(key, value.toString());
139
+ (_class_private_field_get2 = (0, import_class_private_field_get._)(this, _resArgs)) === null || _class_private_field_get2 === void 0 ? void 0 : _class_private_field_get2.headers.set(key, value.toString());
136
140
  }
137
141
  }
138
142
  status(code) {
139
143
  (0, import_class_private_field_get._)(this, _c1).status(code);
144
+ (0, import_class_private_field_get._)(this, _resArgs) && ((0, import_class_private_field_get._)(this, _resArgs).status = code);
140
145
  }
141
146
  get cookies() {
142
147
  const setCookie = (key, value) => {
@@ -156,13 +161,18 @@ class BaseHookResponse {
156
161
  (0, import_class_private_field_get._)(this, _c1).res = (0, import_class_private_field_get._)(this, _c1).newResponse(body, options);
157
162
  this.private_overrided = true;
158
163
  }
159
- constructor(c) {
164
+ constructor(c, resArgs) {
160
165
  (0, import_class_private_field_init._)(this, _c1, {
161
166
  writable: true,
162
167
  value: void 0
163
168
  });
169
+ (0, import_class_private_field_init._)(this, _resArgs, {
170
+ writable: true,
171
+ value: void 0
172
+ });
164
173
  this.private_overrided = false;
165
174
  (0, import_class_private_field_set._)(this, _c1, c);
175
+ (0, import_class_private_field_set._)(this, _resArgs, resArgs);
166
176
  }
167
177
  }
168
178
  // Annotate the CommonJS export names for ESM import in node:
@@ -39,9 +39,9 @@ async function getAfterRenderCtx(c, baseHookCtx, route) {
39
39
  afterRenderCtx.route = route;
40
40
  return afterRenderCtx;
41
41
  }
42
- function createCustomMiddlewaresCtx(c, locals) {
42
+ function createCustomMiddlewaresCtx(c, locals, resArgs) {
43
43
  var _c_env_node, _c_env_node1;
44
- const baseContext = (0, import_base.createBaseHookContext)(c);
44
+ const baseContext = (0, import_base.createBaseHookContext)(c, resArgs);
45
45
  const reporter = c.get("reporter");
46
46
  const response = baseContext.response;
47
47
  response.locals = locals;
@@ -102,12 +102,18 @@ class CustomServer {
102
102
  }
103
103
  const reporter = c.get("reporter");
104
104
  const locals = {};
105
- const customMiddlewareCtx = (0, import_context.createCustomMiddlewaresCtx)(c, locals);
105
+ const resArgs = {
106
+ headers: new Headers()
107
+ };
108
+ const customMiddlewareCtx = (0, import_context.createCustomMiddlewaresCtx)(c, locals, resArgs);
106
109
  const getCost = (0, import_time.time)();
107
110
  await serverMiddleware(customMiddlewareCtx);
108
111
  const cost = getCost();
109
112
  cost && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(import_constants.ServerReportTimings.SERVER_MIDDLEWARE, cost));
110
113
  c.set("locals", locals);
114
+ if (isRedirect(resArgs.headers, resArgs.status)) {
115
+ return c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302);
116
+ }
111
117
  if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
112
118
  return void 0;
113
119
  }
@@ -130,6 +136,14 @@ class CustomServer {
130
136
  });
131
137
  }
132
138
  }
139
+ function isRedirect(headers, code) {
140
+ return [
141
+ 301,
142
+ 302,
143
+ 307,
144
+ 308
145
+ ].includes(code || 0) || headers.get("Location");
146
+ }
133
147
  // Annotate the CommonJS export names for ESM import in node:
134
148
  0 && (module.exports = {
135
149
  CustomServer
@@ -56,7 +56,12 @@ function createRenderHandler(render) {
56
56
  serverManifest,
57
57
  locals
58
58
  });
59
- return res;
59
+ const { body, status, headers } = res;
60
+ const headersData = {};
61
+ headers.forEach((v, k) => {
62
+ headersData[k] = v;
63
+ });
64
+ return c.body(body, status, headersData);
60
65
  };
61
66
  }
62
67
  async function getRenderHandler(options, serverBase) {
@@ -22,13 +22,31 @@ __export(render_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(render_exports);
24
24
  var import_universal = require("@modern-js/utils/universal");
25
+ var import_trie_router = require("hono/router/trie-router");
25
26
  var import_constants = require("../../../base/constants");
26
27
  var import_utils = require("../../utils");
27
28
  var import_dataHandler = require("./dataHandler");
28
29
  var import_ssrRender = require("./ssrRender");
30
+ function getRouter(routes) {
31
+ const sorted = routes.sort(import_utils.sortRoutes);
32
+ const router = new import_trie_router.TrieRouter();
33
+ for (const route of sorted) {
34
+ const { urlPath: originUrlPath } = route;
35
+ const urlPath = originUrlPath.endsWith("/") ? `${originUrlPath}*` : `${originUrlPath}/*`;
36
+ router.add("*", urlPath, route);
37
+ }
38
+ return router;
39
+ }
40
+ function matchRoute(router, request) {
41
+ const pathname = (0, import_utils.getPathname)(request);
42
+ const matched = router.match("*", pathname);
43
+ const result = matched[0][0];
44
+ return result || [];
45
+ }
29
46
  async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, onFallback: onFallbackFn }) {
47
+ const router = getRouter(routes);
30
48
  return async (req, { logger, nodeReq, reporter, templates, serverManifest, locals, metrics }) => {
31
- const routeInfo = matchRoute(req, routes);
49
+ const [routeInfo, params] = matchRoute(router, req);
32
50
  const onFallback = async (reason, error) => {
33
51
  return onFallbackFn === null || onFallbackFn === void 0 ? void 0 : onFallbackFn(reason, {
34
52
  logger,
@@ -69,6 +87,7 @@ async function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, n
69
87
  nodeReq,
70
88
  reporter,
71
89
  serverRoutes: routes,
90
+ params,
72
91
  locals,
73
92
  serverManifest,
74
93
  metrics
@@ -92,7 +111,7 @@ async function renderHandler(request, options, mode, onError) {
92
111
  const serverData = {
93
112
  router: {
94
113
  baseUrl: options.routeInfo.urlPath,
95
- params: {}
114
+ params: options.params
96
115
  }
97
116
  };
98
117
  let response;
@@ -106,17 +125,15 @@ async function renderHandler(request, options, mode, onError) {
106
125
  } else {
107
126
  response = csrRender(options.html);
108
127
  }
109
- return (0, import_utils.transformResponse)(response, injectServerData(serverData));
110
- }
111
- function matchRoute(req, routes) {
112
- const sorted = routes.sort(import_utils.sortRoutes);
113
- for (const route of sorted) {
114
- const pathname = (0, import_utils.getPathname)(req);
115
- if (pathname.startsWith(route.urlPath)) {
116
- return route;
117
- }
128
+ const newRes = (0, import_utils.transformResponse)(response, injectServerData(serverData));
129
+ const { routeInfo } = options;
130
+ applyExtendHeaders(newRes, routeInfo);
131
+ return newRes;
132
+ function applyExtendHeaders(r, route) {
133
+ Object.entries(route.responseHeaders || {}).forEach(([k, v]) => {
134
+ r.headers.set(k, v);
135
+ });
118
136
  }
119
- return void 0;
120
137
  }
121
138
  async function getRenderMode(req, framework, isSSR, forceCSR, nodeReq, onFallback) {
122
139
  const query = (0, import_utils.parseQuery)(req);
@@ -49,7 +49,7 @@ const defaultReporter = {
49
49
  reportWarn() {
50
50
  }
51
51
  };
52
- async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics }) {
52
+ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, params, metrics }) {
53
53
  var _serverManifest_renderBundles;
54
54
  const { entryName } = routeInfo;
55
55
  const loadableStats = serverManifest.loadableStats || {};
@@ -69,7 +69,7 @@ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, meta
69
69
  const ssrContext = {
70
70
  request: {
71
71
  baseUrl: routeInfo.urlPath,
72
- params: {},
72
+ params,
73
73
  pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : (0, import_utils.getPathname)(request),
74
74
  host,
75
75
  query,
@@ -1,4 +1,5 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
4
  import path from "path";
4
5
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
@@ -31,6 +32,10 @@ function createPublicMiddleware(param) {
31
32
  if (mimeType) {
32
33
  c.header("Content-Type", mimeType);
33
34
  }
35
+ Object.entries(route.responseHeaders || {}).forEach(function(param2) {
36
+ var _param = _sliced_to_array(param2, 2), k = _param[0], v = _param[1];
37
+ c.header(k, v);
38
+ });
34
39
  return [
35
40
  2,
36
41
  c.body(data, 200)
@@ -60,7 +65,7 @@ function matchRoute(req, routes) {
60
65
  try {
61
66
  for (var _iterator = routes.sort(sortRoutes)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
62
67
  var route = _step.value;
63
- if (!route.isSSR && !route.isApi && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
68
+ if (!route.isSSR && route.entryPath.startsWith("public") && req.path.startsWith(route.urlPath)) {
64
69
  return route;
65
70
  }
66
71
  }
@@ -5,7 +5,6 @@ import path from "path";
5
5
  import { fs } from "@modern-js/utils";
6
6
  import { getMimeType } from "hono/utils/mime";
7
7
  import { fileReader } from "@modern-js/runtime-utils/fileReader";
8
- import { createErrorHtml } from "../../../utils";
9
8
  import { createPublicMiddleware } from "./serverPublic";
10
9
  function createStaticMiddleware(options) {
11
10
  var pwd = options.pwd, routes = options.routes;
@@ -54,7 +53,7 @@ function createStaticMiddleware(options) {
54
53
  if (!_state.sent()) {
55
54
  return [
56
55
  2,
57
- c.html(createErrorHtml(404), 404)
56
+ next()
58
57
  ];
59
58
  }
60
59
  mimeType = getMimeType(filepath);
@@ -2,7 +2,7 @@ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
3
3
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
4
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
- import { createServer, ServerResponse } from "node:http";
5
+ import { ServerResponse } from "node:http";
6
6
  import { createReadableStreamFromReadable, writeReadableStreamToWritable } from "./polyfills/stream";
7
7
  import { installGlobals } from "./polyfills/install";
8
8
  installGlobals();
@@ -179,17 +179,56 @@ var getRequestListener = function(handler) {
179
179
  };
180
180
  }();
181
181
  };
182
- var createNodeServer = function(requestHandler) {
183
- var requestListener = getRequestListener(requestHandler);
184
- var nodeServer = createServer(requestListener);
185
- nodeServer.getRequestListener = function() {
186
- return requestListener;
187
- };
188
- nodeServer.getRequestHandler = function() {
189
- return requestHandler;
182
+ var createNodeServer = function() {
183
+ var _ref = _async_to_generator(function(requestHandler, httpsOptions) {
184
+ var requestListener, nodeServer, createServer, createServer1;
185
+ return _ts_generator(this, function(_state) {
186
+ switch (_state.label) {
187
+ case 0:
188
+ requestListener = getRequestListener(requestHandler);
189
+ if (!httpsOptions)
190
+ return [
191
+ 3,
192
+ 2
193
+ ];
194
+ return [
195
+ 4,
196
+ import("node:https")
197
+ ];
198
+ case 1:
199
+ createServer = _state.sent().createServer;
200
+ nodeServer = createServer(httpsOptions, requestListener);
201
+ return [
202
+ 3,
203
+ 4
204
+ ];
205
+ case 2:
206
+ return [
207
+ 4,
208
+ import("node:http")
209
+ ];
210
+ case 3:
211
+ createServer1 = _state.sent().createServer;
212
+ nodeServer = createServer1(requestListener);
213
+ _state.label = 4;
214
+ case 4:
215
+ nodeServer.getRequestListener = function() {
216
+ return requestListener;
217
+ };
218
+ nodeServer.getRequestHandler = function() {
219
+ return requestHandler;
220
+ };
221
+ return [
222
+ 2,
223
+ nodeServer
224
+ ];
225
+ }
226
+ });
227
+ });
228
+ return function createNodeServer2(requestHandler, httpsOptions) {
229
+ return _ref.apply(this, arguments);
190
230
  };
191
- return nodeServer;
192
- };
231
+ }();
193
232
  export {
194
233
  createNodeServer,
195
234
  createWebRequest,
@@ -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
  ];
@@ -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;