@hono/node-server 1.17.0 → 1.18.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.
- package/dist/index.js +62 -37
- package/dist/index.mjs +62 -37
- package/dist/listener.js +62 -37
- package/dist/listener.mjs +62 -37
- package/dist/serve-static.js +16 -19
- package/dist/serve-static.mjs +17 -20
- package/dist/server.js +62 -37
- package/dist/server.mjs +62 -37
- package/dist/utils.d.mts +3 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.js +27 -21
- package/dist/utils.mjs +24 -20
- package/dist/vercel.js +62 -37
- package/dist/vercel.mjs +62 -37
- package/package.json +1 -1
package/dist/vercel.mjs
CHANGED
|
@@ -249,30 +249,24 @@ Object.setPrototypeOf(Response2, GlobalResponse);
|
|
|
249
249
|
Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);
|
|
250
250
|
|
|
251
251
|
// src/utils.ts
|
|
252
|
-
function
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
writable.on("close", cancel);
|
|
261
|
-
writable.on("error", cancel);
|
|
262
|
-
reader.read().then(flow, cancel);
|
|
252
|
+
async function readWithoutBlocking(readPromise) {
|
|
253
|
+
return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);
|
|
254
|
+
}
|
|
255
|
+
function writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {
|
|
256
|
+
const handleError = () => {
|
|
257
|
+
};
|
|
258
|
+
writable.on("error", handleError);
|
|
259
|
+
(currentReadPromise ?? reader.read()).then(flow, handleStreamError);
|
|
263
260
|
return reader.closed.finally(() => {
|
|
264
|
-
writable.off("
|
|
265
|
-
writable.off("error", cancel);
|
|
261
|
+
writable.off("error", handleError);
|
|
266
262
|
});
|
|
267
|
-
function
|
|
268
|
-
reader.cancel(error).catch(() => {
|
|
269
|
-
});
|
|
263
|
+
function handleStreamError(error) {
|
|
270
264
|
if (error) {
|
|
271
265
|
writable.destroy(error);
|
|
272
266
|
}
|
|
273
267
|
}
|
|
274
268
|
function onDrain() {
|
|
275
|
-
reader.read().then(flow,
|
|
269
|
+
reader.read().then(flow, handleStreamError);
|
|
276
270
|
}
|
|
277
271
|
function flow({ done, value }) {
|
|
278
272
|
try {
|
|
@@ -281,13 +275,21 @@ function writeFromReadableStream(stream, writable) {
|
|
|
281
275
|
} else if (!writable.write(value)) {
|
|
282
276
|
writable.once("drain", onDrain);
|
|
283
277
|
} else {
|
|
284
|
-
return reader.read().then(flow,
|
|
278
|
+
return reader.read().then(flow, handleStreamError);
|
|
285
279
|
}
|
|
286
280
|
} catch (e) {
|
|
287
|
-
|
|
281
|
+
handleStreamError(e);
|
|
288
282
|
}
|
|
289
283
|
}
|
|
290
284
|
}
|
|
285
|
+
function writeFromReadableStream(stream, writable) {
|
|
286
|
+
if (stream.locked) {
|
|
287
|
+
throw new TypeError("ReadableStream is locked.");
|
|
288
|
+
} else if (writable.destroyed) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
return writeFromReadableStreamDefaultReader(stream.getReader(), writable);
|
|
292
|
+
}
|
|
291
293
|
var buildOutgoingHttpHeaders = (headers) => {
|
|
292
294
|
const res = {};
|
|
293
295
|
if (!(headers instanceof Headers)) {
|
|
@@ -329,8 +331,6 @@ global.fetch = (info, init) => {
|
|
|
329
331
|
|
|
330
332
|
// src/listener.ts
|
|
331
333
|
var outgoingEnded = Symbol("outgoingEnded");
|
|
332
|
-
var regBuffer = /^no$/i;
|
|
333
|
-
var regContentType = /^(application\/json\b|text\/(?!event-stream\b))/i;
|
|
334
334
|
var handleRequestError = () => new Response(null, {
|
|
335
335
|
status: 400
|
|
336
336
|
});
|
|
@@ -402,23 +402,48 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
|
402
402
|
}
|
|
403
403
|
const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);
|
|
404
404
|
if (res.body) {
|
|
405
|
-
const
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
405
|
+
const reader = res.body.getReader();
|
|
406
|
+
const values = [];
|
|
407
|
+
let done = false;
|
|
408
|
+
let currentReadPromise = void 0;
|
|
409
|
+
for (let i = 0; i < 2; i++) {
|
|
410
|
+
currentReadPromise = reader.read();
|
|
411
|
+
const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {
|
|
412
|
+
console.error(e);
|
|
413
|
+
done = true;
|
|
414
|
+
});
|
|
415
|
+
if (!chunk) {
|
|
416
|
+
if (i === 1 && resHeaderRecord["transfer-encoding"] !== "chunked") {
|
|
417
|
+
await new Promise((resolve) => setTimeout(resolve));
|
|
418
|
+
i--;
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
currentReadPromise = void 0;
|
|
424
|
+
if (chunk.value) {
|
|
425
|
+
values.push(chunk.value);
|
|
426
|
+
}
|
|
427
|
+
if (chunk.done) {
|
|
428
|
+
done = true;
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (done && !("content-length" in resHeaderRecord)) {
|
|
433
|
+
resHeaderRecord["content-length"] = values.reduce((acc, value) => acc + value.length, 0);
|
|
434
|
+
}
|
|
435
|
+
outgoing.writeHead(res.status, resHeaderRecord);
|
|
436
|
+
values.forEach((value) => {
|
|
437
|
+
;
|
|
438
|
+
outgoing.write(value);
|
|
439
|
+
});
|
|
440
|
+
if (done) {
|
|
441
|
+
outgoing.end();
|
|
417
442
|
} else {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
443
|
+
if (values.length === 0) {
|
|
444
|
+
flushHeaders(outgoing);
|
|
445
|
+
}
|
|
446
|
+
await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);
|
|
422
447
|
}
|
|
423
448
|
} else if (resHeaderRecord[X_ALREADY_SENT]) {
|
|
424
449
|
} else {
|