@modern-js/server-core 2.51.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
  });
@@ -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
  };
@@ -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
  };
@@ -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.51.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/utils": "2.51.0",
72
73
  "@modern-js/plugin": "2.51.0",
73
- "@modern-js/runtime-utils": "2.51.0",
74
- "@modern-js/utils": "2.51.0"
74
+ "@modern-js/runtime-utils": "2.51.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/jest": "^29",