From 719aa7742ff4e72270e8d561c42dd24cb28ecd1a Mon Sep 17 00:00:00 2001 From: David Mo Date: Fri, 5 Dec 2025 15:30:27 -0500 Subject: [PATCH 1/4] fix `Response.empty` not setting headers --- .../effect/src/unstable/http/HttpServerResponse.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/effect/src/unstable/http/HttpServerResponse.ts b/packages/effect/src/unstable/http/HttpServerResponse.ts index 2cef8b8e3..2d7fda4a3 100644 --- a/packages/effect/src/unstable/http/HttpServerResponse.ts +++ b/packages/effect/src/unstable/http/HttpServerResponse.ts @@ -78,11 +78,16 @@ export const isHttpServerResponse = (u: unknown): u is HttpServerResponse => has */ export const empty = ( options?: Options.WithContent | undefined -): HttpServerResponse => - makeResponse({ +): HttpServerResponse => { + const headers = options?.headers + ? Headers.fromInput(options.headers) + : Headers.empty + return makeResponse({ status: options?.status ?? 204, - statusText: options?.statusText - }) + statusText: options?.statusText, + headers + }); +} /** * @since 4.0.0 From 96b648c96e63885f283c555ac321e6be4980ab39 Mon Sep 17 00:00:00 2001 From: David Mo Date: Fri, 5 Dec 2025 15:33:26 -0500 Subject: [PATCH 2/4] also add cookies --- packages/effect/src/unstable/http/HttpServerResponse.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/effect/src/unstable/http/HttpServerResponse.ts b/packages/effect/src/unstable/http/HttpServerResponse.ts index 2d7fda4a3..c8af69366 100644 --- a/packages/effect/src/unstable/http/HttpServerResponse.ts +++ b/packages/effect/src/unstable/http/HttpServerResponse.ts @@ -85,7 +85,8 @@ export const empty = ( return makeResponse({ status: options?.status ?? 204, statusText: options?.statusText, - headers + headers, + cookies: options?.cookies ?? Cookies.empty }); } From 38b81dbe7d106b317d5c4b1c222bdb38ebedc957 Mon Sep 17 00:00:00 2001 From: David Mo Date: Fri, 5 Dec 2025 15:48:38 -0500 Subject: [PATCH 3/4] add empty response test --- .../platform-node/test/NodeHttpServer.test.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/platform-node/test/NodeHttpServer.test.ts b/packages/platform-node/test/NodeHttpServer.test.ts index 2cedc2d7c..7fd0ab650 100644 --- a/packages/platform-node/test/NodeHttpServer.test.ts +++ b/packages/platform-node/test/NodeHttpServer.test.ts @@ -34,6 +34,27 @@ const IdParams = Schema.Struct({ const todoResponse = HttpServerResponse.schemaJson(Todo) describe("HttpServer", () => { + it.effect("empty", () => + Effect.gen(function*() { + const now = new Date().toISOString() + yield* HttpRouter.add( + "GET", + "/healthz", + Effect.succeed( + HttpServerResponse.empty({ + status: 200, + headers: { date: now } + }) + ) + ).pipe( + HttpRouter.serve, + Layer.build + ) + const health = yield* HttpClient.get("/healthz") + expect(health.status).toEqual(200) + expect(health.headers.date).toEqual(now) + }).pipe(Effect.provide(NodeHttpServer.layerTest))) + it.effect("schema", () => Effect.gen(function*() { yield* HttpRouter.add( From 164657ae213449c09518d23e340256419fa4bf3a Mon Sep 17 00:00:00 2001 From: David Mo Date: Fri, 5 Dec 2025 19:00:24 -0500 Subject: [PATCH 4/4] fix lint error --- packages/effect/src/unstable/http/HttpServerResponse.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/effect/src/unstable/http/HttpServerResponse.ts b/packages/effect/src/unstable/http/HttpServerResponse.ts index c8af69366..095c337dd 100644 --- a/packages/effect/src/unstable/http/HttpServerResponse.ts +++ b/packages/effect/src/unstable/http/HttpServerResponse.ts @@ -87,7 +87,7 @@ export const empty = ( statusText: options?.statusText, headers, cookies: options?.cookies ?? Cookies.empty - }); + }) } /**