@hono/node-server
Advanced tools
+42
-9
@@ -839,6 +839,27 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | ||
| const WAIT_FOR_WEBSOCKET_SYMBOL = Symbol("WAIT_FOR_WEBSOCKET_SYMBOL"); | ||
| const rejectUpgradeRequest = (socket, status) => { | ||
| socket.end(`HTTP/1.1 ${status.toString()} ${node_http.STATUS_CODES[status] ?? ""}\r\nConnection: close\r | ||
| Content-Length: 0\r | ||
| \r | ||
| const responseHeadersToSkip = new Set([ | ||
| "connection", | ||
| "content-length", | ||
| "keep-alive", | ||
| "proxy-authenticate", | ||
| "proxy-authorization", | ||
| "te", | ||
| "trailer", | ||
| "transfer-encoding", | ||
| "upgrade", | ||
| "sec-websocket-accept", | ||
| "sec-websocket-extensions", | ||
| "sec-websocket-protocol" | ||
| ]); | ||
| const appendResponseHeaders = (headers, responseHeaders) => { | ||
| if (!responseHeaders) return; | ||
| responseHeaders.forEach((value, key) => { | ||
| if (responseHeadersToSkip.has(key.toLowerCase())) return; | ||
| headers.push(`${key}: ${value}`); | ||
| }); | ||
| }; | ||
| const rejectUpgradeRequest = (socket, status, responseHeaders) => { | ||
| const responseLines = ["Connection: close", "Content-Length: 0"]; | ||
| appendResponseHeaders(responseLines, responseHeaders); | ||
| socket.end(`HTTP/1.1 ${status.toString()} ${node_http.STATUS_CODES[status] ?? ""}\r\n${responseLines.join("\r\n")}\r\n\r | ||
| `); | ||
@@ -884,5 +905,9 @@ }; | ||
| let status = 400; | ||
| let responseHeaders; | ||
| try { | ||
| const response = await fetchCallback(createUpgradeRequest(request), env); | ||
| if (response instanceof Response) status = response.status; | ||
| if (response instanceof Response) { | ||
| status = response.status; | ||
| responseHeaders = response.headers; | ||
| } | ||
| } catch { | ||
@@ -895,8 +920,16 @@ if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, 500); | ||
| waiterMap.delete(request); | ||
| if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status); | ||
| if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status, responseHeaders); | ||
| return; | ||
| } | ||
| wss.handleUpgrade(request, socket, head, (ws) => { | ||
| wss.emit("connection", ws, request); | ||
| }); | ||
| const addResponseHeaders = (headers) => { | ||
| appendResponseHeaders(headers, responseHeaders); | ||
| }; | ||
| wss.on("headers", addResponseHeaders); | ||
| try { | ||
| wss.handleUpgrade(request, socket, head, (ws) => { | ||
| wss.emit("connection", ws, request); | ||
| }); | ||
| } finally { | ||
| wss.off("headers", addResponseHeaders); | ||
| } | ||
| }); | ||
@@ -903,0 +936,0 @@ server.on("close", () => { |
+42
-9
@@ -838,6 +838,27 @@ import { t as X_ALREADY_SENT } from "./constants-BLSFu_RU.mjs"; | ||
| const WAIT_FOR_WEBSOCKET_SYMBOL = Symbol("WAIT_FOR_WEBSOCKET_SYMBOL"); | ||
| const rejectUpgradeRequest = (socket, status) => { | ||
| socket.end(`HTTP/1.1 ${status.toString()} ${STATUS_CODES[status] ?? ""}\r\nConnection: close\r | ||
| Content-Length: 0\r | ||
| \r | ||
| const responseHeadersToSkip = new Set([ | ||
| "connection", | ||
| "content-length", | ||
| "keep-alive", | ||
| "proxy-authenticate", | ||
| "proxy-authorization", | ||
| "te", | ||
| "trailer", | ||
| "transfer-encoding", | ||
| "upgrade", | ||
| "sec-websocket-accept", | ||
| "sec-websocket-extensions", | ||
| "sec-websocket-protocol" | ||
| ]); | ||
| const appendResponseHeaders = (headers, responseHeaders) => { | ||
| if (!responseHeaders) return; | ||
| responseHeaders.forEach((value, key) => { | ||
| if (responseHeadersToSkip.has(key.toLowerCase())) return; | ||
| headers.push(`${key}: ${value}`); | ||
| }); | ||
| }; | ||
| const rejectUpgradeRequest = (socket, status, responseHeaders) => { | ||
| const responseLines = ["Connection: close", "Content-Length: 0"]; | ||
| appendResponseHeaders(responseLines, responseHeaders); | ||
| socket.end(`HTTP/1.1 ${status.toString()} ${STATUS_CODES[status] ?? ""}\r\n${responseLines.join("\r\n")}\r\n\r | ||
| `); | ||
@@ -883,5 +904,9 @@ }; | ||
| let status = 400; | ||
| let responseHeaders; | ||
| try { | ||
| const response = await fetchCallback(createUpgradeRequest(request), env); | ||
| if (response instanceof Response) status = response.status; | ||
| if (response instanceof Response) { | ||
| status = response.status; | ||
| responseHeaders = response.headers; | ||
| } | ||
| } catch { | ||
@@ -894,8 +919,16 @@ if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, 500); | ||
| waiterMap.delete(request); | ||
| if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status); | ||
| if (server.listenerCount("upgrade") === 1) rejectUpgradeRequest(socket, status, responseHeaders); | ||
| return; | ||
| } | ||
| wss.handleUpgrade(request, socket, head, (ws) => { | ||
| wss.emit("connection", ws, request); | ||
| }); | ||
| const addResponseHeaders = (headers) => { | ||
| appendResponseHeaders(headers, responseHeaders); | ||
| }; | ||
| wss.on("headers", addResponseHeaders); | ||
| try { | ||
| wss.handleUpgrade(request, socket, head, (ws) => { | ||
| wss.emit("connection", ws, request); | ||
| }); | ||
| } finally { | ||
| wss.off("headers", addResponseHeaders); | ||
| } | ||
| }); | ||
@@ -902,0 +935,0 @@ server.on("close", () => { |
+1
-1
| { | ||
| "name": "@hono/node-server", | ||
| "version": "2.0.0", | ||
| "version": "2.0.1", | ||
| "description": "Node.js Adapter for Hono", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.mjs", |
102508
1.89%2377
2.86%