@@ -6,12 +6,13 @@ import type { Inspectable } from "effect/Inspectable"
66import type * as Runtime from "effect/Runtime"
77import type * as Schema from "effect/Schema"
88import type { ParseOptions } from "effect/SchemaAST"
9- import type * as Stream from "effect/Stream"
10- import type { Cookie , Cookies , CookiesError } from "./Cookies.js"
9+ import * as Stream from "effect/Stream"
10+ import type { Cookie , CookiesError } from "./Cookies.js"
11+ import * as Cookies from "./Cookies.js"
1112import type * as PlatformError from "./Error.js"
1213import type * as FileSystem from "./FileSystem.js"
1314import type * as Headers from "./Headers.js"
14- import type * as Body from "./HttpBody.js"
15+ import * as Body from "./HttpBody.js"
1516import type * as Platform from "./HttpPlatform.js"
1617import type { Respondable } from "./HttpServerRespondable.js"
1718import * as internal from "./internal/httpServerResponse.js"
@@ -39,7 +40,7 @@ export interface HttpServerResponse extends Effect.Effect<HttpServerResponse>, I
3940 readonly status : number
4041 readonly statusText ?: string | undefined
4142 readonly headers : Headers . Headers
42- readonly cookies : Cookies
43+ readonly cookies : Cookies . Cookies
4344 readonly body : Body . HttpBody
4445}
4546
@@ -51,7 +52,7 @@ export interface Options {
5152 readonly status ?: number | undefined
5253 readonly statusText ?: string | undefined
5354 readonly headers ?: Headers . Input | undefined
54- readonly cookies ?: Cookies | undefined
55+ readonly cookies ?: Cookies . Cookies | undefined
5556 readonly contentType ?: string | undefined
5657 readonly contentLength ?: number | undefined
5758}
@@ -246,8 +247,8 @@ export const expireCookie: {
246247 * @category combinators
247248 */
248249export const replaceCookies : {
249- ( cookies : Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
250- ( self : HttpServerResponse , cookies : Cookies ) : HttpServerResponse
250+ ( cookies : Cookies . Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
251+ ( self : HttpServerResponse , cookies : Cookies . Cookies ) : HttpServerResponse
251252} = internal . replaceCookies
252253
253254/**
@@ -299,17 +300,17 @@ export const unsafeSetCookie: {
299300 * @category combinators
300301 */
301302export const updateCookies : {
302- ( f : ( cookies : Cookies ) => Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
303- ( self : HttpServerResponse , f : ( cookies : Cookies ) => Cookies ) : HttpServerResponse
303+ ( f : ( cookies : Cookies . Cookies ) => Cookies . Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
304+ ( self : HttpServerResponse , f : ( cookies : Cookies . Cookies ) => Cookies . Cookies ) : HttpServerResponse
304305} = internal . updateCookies
305306
306307/**
307308 * @since 1.0.0
308309 * @category combinators
309310 */
310311export const mergeCookies : {
311- ( cookies : Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
312- ( self : HttpServerResponse , cookies : Cookies ) : HttpServerResponse
312+ ( cookies : Cookies . Cookies ) : ( self : HttpServerResponse ) => HttpServerResponse
313+ ( self : HttpServerResponse , cookies : Cookies . Cookies ) : HttpServerResponse
313314} = internal . mergeCookies
314315
315316/**
@@ -393,3 +394,29 @@ export const toWeb: (
393394 readonly runtime ?: Runtime . Runtime < never > | undefined
394395 }
395396) => Response = internal . toWeb
397+
398+ /**
399+ * @since 1.0.0
400+ * @category conversions
401+ */
402+ export const fromWeb = ( response : Response ) : HttpServerResponse => {
403+ const headers = response . headers
404+ const setCookieHeaders = headers . getSetCookie ( )
405+ headers . delete ( "set-cookie" )
406+ let self = empty ( {
407+ status : response . status ,
408+ statusText : response . statusText ,
409+ headers : headers as any ,
410+ cookies : Cookies . fromSetCookie ( setCookieHeaders )
411+ } )
412+ if ( response . body ) {
413+ self = setBody (
414+ self ,
415+ Body . stream ( Stream . fromReadableStream ( {
416+ evaluate : ( ) => response . body ! ,
417+ onError : ( e ) => e
418+ } ) )
419+ )
420+ }
421+ return self
422+ }
0 commit comments