@modern-js/server-core 2.50.0 → 2.51.1-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.
@@ -29,6 +29,7 @@ const httpCallBack2HonoMid = (handler) => {
29
29
  req.__templates = context.get("templates") || {};
30
30
  req.__serverManifest = context.get("serverManifest") || {};
31
31
  await handler(req, res);
32
+ await new Promise((resolve) => setTimeout(resolve, 0));
32
33
  if (res.headersSent) {
33
34
  context.finalized = true;
34
35
  } else {
@@ -30,7 +30,8 @@ __export(node_exports, {
30
30
  injectTemplates: () => import_middlewares.injectTemplates,
31
31
  loadServerEnv: () => import_loadServer.loadServerEnv,
32
32
  registerMockHandlers: () => import_middlewares.registerMockHandlers,
33
- sendResponse: () => import_node.sendResponse
33
+ sendResponse: () => import_node.sendResponse,
34
+ writeReadableStreamToWritable: () => import_node.writeReadableStreamToWritable
34
35
  });
35
36
  module.exports = __toCommonJS(node_exports);
36
37
  var import_loadServer = require("./loadServer");
@@ -52,5 +53,6 @@ var import_middlewares = require("./middlewares");
52
53
  injectTemplates,
53
54
  loadServerEnv,
54
55
  registerMockHandlers,
55
- sendResponse
56
+ sendResponse,
57
+ writeReadableStreamToWritable
56
58
  });
@@ -30,12 +30,14 @@ var node_exports = {};
30
30
  __export(node_exports, {
31
31
  createNodeServer: () => createNodeServer,
32
32
  createWebRequest: () => createWebRequest,
33
- sendResponse: () => sendResponse
33
+ sendResponse: () => sendResponse,
34
+ writeReadableStreamToWritable: () => import_polyfills.writeReadableStreamToWritable
34
35
  });
35
36
  module.exports = __toCommonJS(node_exports);
36
37
  var import_node_http = require("node:http");
37
38
  var import_stream = require("./polyfills/stream");
38
39
  var import_install = require("./polyfills/install");
40
+ var import_polyfills = require("./polyfills");
39
41
  (0, import_install.installGlobals)();
40
42
  const createWebRequest = (req, res, body) => {
41
43
  var _req_url;
@@ -140,5 +142,6 @@ const createNodeServer = async (requestHandler, httpsOptions) => {
140
142
  0 && (module.exports = {
141
143
  createNodeServer,
142
144
  createWebRequest,
143
- sendResponse
145
+ sendResponse,
146
+ writeReadableStreamToWritable
144
147
  });
@@ -105,7 +105,7 @@ class CustomServer {
105
105
  return getUnstableMiddlewares(serverMiddleware);
106
106
  }
107
107
  return async (c, next) => {
108
- var _c_env;
108
+ var _c_env_node_res, _c_env_node, _c_env;
109
109
  const reporter = c.get("reporter");
110
110
  const locals = {};
111
111
  const resArgs = {
@@ -120,7 +120,7 @@ class CustomServer {
120
120
  if (isRedirect(resArgs.headers, resArgs.status)) {
121
121
  return c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302);
122
122
  }
123
- if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
123
+ 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) {
124
124
  return void 0;
125
125
  }
126
126
  if (!c.finalized) {
@@ -93,17 +93,27 @@ class CacheManager {
93
93
  html += chunk;
94
94
  return chunk;
95
95
  });
96
- stream.readable.getReader().closed.then(() => {
97
- const current = Date.now();
98
- const cache = {
99
- val: html,
100
- cursor: current
101
- };
102
- this.container.set(key, JSON.stringify(cache), {
103
- ttl
96
+ const reader = body.getReader();
97
+ const writer = stream.writable.getWriter();
98
+ const push = () => {
99
+ reader.read().then(({ done, value }) => {
100
+ if (done) {
101
+ const current = Date.now();
102
+ const cache = {
103
+ val: html,
104
+ cursor: current
105
+ };
106
+ this.container.set(key, JSON.stringify(cache), {
107
+ ttl
108
+ });
109
+ writer.close();
110
+ return;
111
+ }
112
+ writer.write(value);
113
+ push();
104
114
  });
105
- });
106
- body.pipeThrough(stream);
115
+ };
116
+ push();
107
117
  return {
108
118
  data: stream.readable,
109
119
  status
@@ -16,26 +16,34 @@ var httpCallBack2HonoMid = function(handler) {
16
16
  handler(req, res)
17
17
  ];
18
18
  case 1:
19
+ _state.sent();
20
+ return [
21
+ 4,
22
+ new Promise(function(resolve) {
23
+ return setTimeout(resolve, 0);
24
+ })
25
+ ];
26
+ case 2:
19
27
  _state.sent();
20
28
  if (!res.headersSent)
21
29
  return [
22
30
  3,
23
- 2
31
+ 3
24
32
  ];
25
33
  context.finalized = true;
26
34
  return [
27
35
  3,
28
- 4
36
+ 5
29
37
  ];
30
- case 2:
38
+ case 3:
31
39
  return [
32
40
  4,
33
41
  next()
34
42
  ];
35
- case 3:
36
- _state.sent();
37
- _state.label = 4;
38
43
  case 4:
44
+ _state.sent();
45
+ _state.label = 5;
46
+ case 5:
39
47
  return [
40
48
  2
41
49
  ];
@@ -1,6 +1,6 @@
1
1
  import { loadServerEnv } from "./loadServer";
2
2
  import { httpCallBack2HonoMid, connectMid2HonoMid } from "./hono";
3
- import { createNodeServer, sendResponse, createWebRequest } from "./node";
3
+ import { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable } from "./node";
4
4
  import { bindBFFHandler } from "./bff";
5
5
  import { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, getServerManifest } from "./middlewares";
6
6
  export {
@@ -16,5 +16,6 @@ export {
16
16
  injectTemplates,
17
17
  loadServerEnv,
18
18
  registerMockHandlers,
19
- sendResponse
19
+ sendResponse,
20
+ writeReadableStreamToWritable
20
21
  };
@@ -5,6 +5,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import { ServerResponse } from "node:http";
6
6
  import { createReadableStreamFromReadable, writeReadableStreamToWritable } from "./polyfills/stream";
7
7
  import { installGlobals } from "./polyfills/install";
8
+ import { writeReadableStreamToWritable as writeReadableStreamToWritable2 } from "./polyfills";
8
9
  installGlobals();
9
10
  var createWebRequest = function(req, res, body) {
10
11
  var _req_url;
@@ -232,5 +233,6 @@ var createNodeServer = function() {
232
233
  export {
233
234
  createNodeServer,
234
235
  createWebRequest,
235
- sendResponse
236
+ sendResponse,
237
+ writeReadableStreamToWritable2 as writeReadableStreamToWritable
236
238
  };
@@ -187,7 +187,7 @@ var CustomServer = /* @__PURE__ */ function() {
187
187
  2,
188
188
  function() {
189
189
  var _ref = _async_to_generator(function(c, next) {
190
- var _c_env, reporter, locals, resArgs, customMiddlewareCtx, getCost, cost;
190
+ var _c_env_node_res, _c_env_node, _c_env, reporter, locals, resArgs, customMiddlewareCtx, getCost, cost;
191
191
  return _ts_generator(this, function(_state2) {
192
192
  switch (_state2.label) {
193
193
  case 0:
@@ -213,7 +213,7 @@ var CustomServer = /* @__PURE__ */ function() {
213
213
  c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302)
214
214
  ];
215
215
  }
216
- if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
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
217
  return [
218
218
  2,
219
219
  void 0
@@ -73,7 +73,7 @@ var CacheManager = /* @__PURE__ */ function() {
73
73
  _proto.processCache = function processCache(key, render, ssrContext, ttl, status) {
74
74
  var _this = this;
75
75
  return _async_to_generator(function() {
76
- var renderResult, current, cache, body, html, stream;
76
+ var renderResult, current, cache, body, html, stream, reader, writer, push;
77
77
  return _ts_generator(this, function(_state) {
78
78
  switch (_state.label) {
79
79
  case 0:
@@ -128,17 +128,28 @@ var CacheManager = /* @__PURE__ */ function() {
128
128
  html += chunk;
129
129
  return chunk;
130
130
  });
131
- stream.readable.getReader().closed.then(function() {
132
- var current2 = Date.now();
133
- var cache2 = {
134
- val: html,
135
- cursor: current2
136
- };
137
- _this.container.set(key, JSON.stringify(cache2), {
138
- ttl
131
+ reader = body.getReader();
132
+ writer = stream.writable.getWriter();
133
+ push = function() {
134
+ reader.read().then(function(param) {
135
+ var done = param.done, value = param.value;
136
+ if (done) {
137
+ var current2 = Date.now();
138
+ var cache2 = {
139
+ val: html,
140
+ cursor: current2
141
+ };
142
+ _this.container.set(key, JSON.stringify(cache2), {
143
+ ttl
144
+ });
145
+ writer.close();
146
+ return;
147
+ }
148
+ writer.write(value);
149
+ push();
139
150
  });
140
- });
141
- body.pipeThrough(stream);
151
+ };
152
+ push();
142
153
  return [
143
154
  2,
144
155
  {
@@ -5,6 +5,7 @@ const httpCallBack2HonoMid = (handler) => {
5
5
  req.__templates = context.get("templates") || {};
6
6
  req.__serverManifest = context.get("serverManifest") || {};
7
7
  await handler(req, res);
8
+ await new Promise((resolve) => setTimeout(resolve, 0));
8
9
  if (res.headersSent) {
9
10
  context.finalized = true;
10
11
  } else {
@@ -1,6 +1,6 @@
1
1
  import { loadServerEnv } from "./loadServer";
2
2
  import { httpCallBack2HonoMid, connectMid2HonoMid } from "./hono";
3
- import { createNodeServer, sendResponse, createWebRequest } from "./node";
3
+ import { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable } from "./node";
4
4
  import { bindBFFHandler } from "./bff";
5
5
  import { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, getServerManifest } from "./middlewares";
6
6
  export {
@@ -16,5 +16,6 @@ export {
16
16
  injectTemplates,
17
17
  loadServerEnv,
18
18
  registerMockHandlers,
19
- sendResponse
19
+ sendResponse,
20
+ writeReadableStreamToWritable
20
21
  };
@@ -1,6 +1,7 @@
1
1
  import { ServerResponse } from "node:http";
2
2
  import { createReadableStreamFromReadable, writeReadableStreamToWritable } from "./polyfills/stream";
3
3
  import { installGlobals } from "./polyfills/install";
4
+ import { writeReadableStreamToWritable as writeReadableStreamToWritable2 } from "./polyfills";
4
5
  installGlobals();
5
6
  const createWebRequest = (req, res, body) => {
6
7
  var _req_url;
@@ -104,5 +105,6 @@ const createNodeServer = async (requestHandler, httpsOptions) => {
104
105
  export {
105
106
  createNodeServer,
106
107
  createWebRequest,
107
- sendResponse
108
+ sendResponse,
109
+ writeReadableStreamToWritable2 as writeReadableStreamToWritable
108
110
  };
@@ -81,7 +81,7 @@ class CustomServer {
81
81
  return getUnstableMiddlewares(serverMiddleware);
82
82
  }
83
83
  return async (c, next) => {
84
- var _c_env;
84
+ var _c_env_node_res, _c_env_node, _c_env;
85
85
  const reporter = c.get("reporter");
86
86
  const locals = {};
87
87
  const resArgs = {
@@ -96,7 +96,7 @@ class CustomServer {
96
96
  if (isRedirect(resArgs.headers, resArgs.status)) {
97
97
  return c.redirect(resArgs.headers.get("Location") || "", resArgs.status || 302);
98
98
  }
99
- if ((_c_env = c.env) === null || _c_env === void 0 ? void 0 : _c_env.node.res.headersSent) {
99
+ 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) {
100
100
  return void 0;
101
101
  }
102
102
  if (!c.finalized) {
@@ -59,17 +59,27 @@ class CacheManager {
59
59
  html += chunk;
60
60
  return chunk;
61
61
  });
62
- stream.readable.getReader().closed.then(() => {
63
- const current = Date.now();
64
- const cache = {
65
- val: html,
66
- cursor: current
67
- };
68
- this.container.set(key, JSON.stringify(cache), {
69
- ttl
62
+ const reader = body.getReader();
63
+ const writer = stream.writable.getWriter();
64
+ const push = () => {
65
+ reader.read().then(({ done, value }) => {
66
+ if (done) {
67
+ const current = Date.now();
68
+ const cache = {
69
+ val: html,
70
+ cursor: current
71
+ };
72
+ this.container.set(key, JSON.stringify(cache), {
73
+ ttl
74
+ });
75
+ writer.close();
76
+ return;
77
+ }
78
+ writer.write(value);
79
+ push();
70
80
  });
71
- });
72
- body.pipeThrough(stream);
81
+ };
82
+ push();
73
83
  return {
74
84
  data: stream.readable,
75
85
  status
@@ -1,6 +1,6 @@
1
1
  export { loadServerEnv } from './loadServer';
2
2
  export { httpCallBack2HonoMid, connectMid2HonoMid } from './hono';
3
3
  export type { ServerNodeContext, ServerNodeMiddleware } from './hono';
4
- export { createNodeServer, sendResponse, createWebRequest } from './node';
4
+ export { createNodeServer, sendResponse, createWebRequest, writeReadableStreamToWritable, } from './node';
5
5
  export { bindBFFHandler } from './bff';
6
6
  export { createStaticMiddleware, registerMockHandlers, injectServerManifest, injectTemplates, getHtmlTemplates, getServerManifest, } from './middlewares';
@@ -4,6 +4,7 @@ import { Server as NodeServer } from 'node:http';
4
4
  import type { Server as NodeHttpsServer } from 'node:https';
5
5
  import { NodeRequest, NodeResponse } from '../../../core/plugin';
6
6
  import { RequestHandler } from '../../../core/server';
7
+ export { writeReadableStreamToWritable } from './polyfills';
7
8
  export declare const createWebRequest: (req: NodeRequest, res: NodeResponse, body?: BodyInit) => Request;
8
9
  export declare const sendResponse: (response: Response, res: NodeResponse) => Promise<void>;
9
10
  declare const getRequestListener: (handler: RequestHandler) => (req: NodeRequest, res: NodeResponse) => Promise<void>;
@@ -12,4 +13,3 @@ type NodeServerWrapper = (NodeServer | NodeHttpsServer) & {
12
13
  getRequestHandler: () => RequestHandler;
13
14
  };
14
15
  export declare const createNodeServer: (requestHandler: RequestHandler, httpsOptions?: Record<string, unknown>) => Promise<NodeServerWrapper>;
15
- export {};
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.50.0",
18
+ "version": "2.51.1-alpha.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -69,9 +69,9 @@
69
69
  "hono": "^3.12.2",
70
70
  "isbot": "3.8.0",
71
71
  "merge-deep": "^3.0.3",
72
- "@modern-js/runtime-utils": "2.50.0",
73
- "@modern-js/plugin": "2.50.0",
74
- "@modern-js/utils": "2.50.0"
72
+ "@modern-js/utils": "2.51.0",
73
+ "@modern-js/plugin": "2.51.0",
74
+ "@modern-js/runtime-utils": "2.51.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/jest": "^29",
@@ -81,9 +81,9 @@
81
81
  "jest": "^29",
82
82
  "ts-jest": "^29.1.0",
83
83
  "typescript": "^5",
84
- "@modern-js/types": "2.50.0",
85
- "@scripts/build": "2.50.0",
86
- "@scripts/jest-config": "2.50.0"
84
+ "@modern-js/types": "2.51.0",
85
+ "@scripts/build": "2.51.0",
86
+ "@scripts/jest-config": "2.51.0"
87
87
  },
88
88
  "sideEffects": false,
89
89
  "publishConfig": {