From cf18c26411241d1923b187d2f34cd78b0df9d5ac Mon Sep 17 00:00:00 2001 From: Masonlet Date: Mon, 13 Jul 2026 14:38:53 -0400 Subject: [PATCH] fix: add error boundary to node:http server --- src/server.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/server.ts b/src/server.ts index e006e90..f7db2ae 100644 --- a/src/server.ts +++ b/src/server.ts @@ -10,17 +10,22 @@ export function queryFromUrl(url: URL): RawQuery { export function startServer(port: number): Server { return createServer(async (req, res) => { - const url = new URL(req.url ?? "/", "http://localhost"); + try { + const url = new URL(req.url ?? "/", "http://localhost"); - if (url.pathname !== "/api/languages") { - res.writeHead(404, { "Content-Type": "text/plain" }); - res.end("Not Found"); - return; - } + if (url.pathname !== "/api/languages") { + res.writeHead(404, { "Content-Type": "text/plain" }); + res.end("Not Found"); + return; + } - const { status, headers, body } = await handleLanguages(queryFromUrl(url)); - res.writeHead(status, headers); - res.end(body); + const { status, headers, body } = await handleLanguages(queryFromUrl(url)); + res.writeHead(status, headers); + res.end(body); + } catch { + if (!res.headersSent) res.writeHead(400, { "Content-Type": "text/plain" }); + res.end("Bad Request"); + } }).listen(port); }