@effect/platform 0.48.15 → 0.48.17
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/Http/Cookies/package.json +6 -0
- package/README.md +235 -46
- package/dist/cjs/Http/Client.js +6 -1
- package/dist/cjs/Http/Client.js.map +1 -1
- package/dist/cjs/Http/ClientRequest.js.map +1 -1
- package/dist/cjs/Http/ClientResponse.js.map +1 -1
- package/dist/cjs/Http/Cookies.js +566 -0
- package/dist/cjs/Http/Cookies.js.map +1 -0
- package/dist/cjs/Http/Headers.js +2 -2
- package/dist/cjs/Http/Headers.js.map +1 -1
- package/dist/cjs/Http/IncomingMessage.js +12 -16
- package/dist/cjs/Http/IncomingMessage.js.map +1 -1
- package/dist/cjs/Http/Multipart.js.map +1 -1
- package/dist/cjs/Http/Router.js +11 -1
- package/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/ServerRequest.js +6 -1
- package/dist/cjs/Http/ServerRequest.js.map +1 -1
- package/dist/cjs/Http/ServerResponse.js +36 -1
- package/dist/cjs/Http/ServerResponse.js.map +1 -1
- package/dist/cjs/Http/UrlParams.js +2 -2
- package/dist/cjs/Http/UrlParams.js.map +1 -1
- package/dist/cjs/HttpClient.js +3 -1
- package/dist/cjs/HttpClient.js.map +1 -1
- package/dist/cjs/HttpServer.js +3 -1
- package/dist/cjs/HttpServer.js.map +1 -1
- package/dist/cjs/internal/http/body.js +2 -2
- package/dist/cjs/internal/http/body.js.map +1 -1
- package/dist/cjs/internal/http/client.js +9 -3
- package/dist/cjs/internal/http/client.js.map +1 -1
- package/dist/cjs/internal/http/clientRequest.js +2 -2
- package/dist/cjs/internal/http/clientRequest.js.map +1 -1
- package/dist/cjs/internal/http/clientResponse.js +16 -8
- package/dist/cjs/internal/http/clientResponse.js.map +1 -1
- package/dist/cjs/internal/http/multipart.js +4 -4
- package/dist/cjs/internal/http/multipart.js.map +1 -1
- package/dist/cjs/internal/http/router.js +34 -7
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/http/serverRequest.js +30 -15
- package/dist/cjs/internal/http/serverRequest.js.map +1 -1
- package/dist/cjs/internal/http/serverResponse.js +48 -23
- package/dist/cjs/internal/http/serverResponse.js.map +1 -1
- package/dist/dts/Error.d.ts.map +1 -1
- package/dist/dts/Http/App.d.ts +1 -1
- package/dist/dts/Http/App.d.ts.map +1 -1
- package/dist/dts/Http/Client.d.ts +13 -2
- package/dist/dts/Http/Client.d.ts.map +1 -1
- package/dist/dts/Http/ClientRequest.d.ts +2 -1
- package/dist/dts/Http/ClientRequest.d.ts.map +1 -1
- package/dist/dts/Http/ClientResponse.d.ts +7 -4
- package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
- package/dist/dts/Http/Cookies.d.ts +253 -0
- package/dist/dts/Http/Cookies.d.ts.map +1 -0
- package/dist/dts/Http/Headers.d.ts +2 -2
- package/dist/dts/Http/Headers.d.ts.map +1 -1
- package/dist/dts/Http/IncomingMessage.d.ts +7 -6
- package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
- package/dist/dts/Http/Multipart.d.ts +3 -2
- package/dist/dts/Http/Multipart.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +29 -3
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/ServerRequest.d.ts +14 -6
- package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
- package/dist/dts/Http/ServerResponse.d.ts +89 -13
- package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
- package/dist/dts/Http/UrlParams.d.ts +3 -2
- package/dist/dts/Http/UrlParams.d.ts.map +1 -1
- package/dist/dts/HttpClient.d.ts +8 -0
- package/dist/dts/HttpClient.d.ts.map +1 -1
- package/dist/dts/HttpServer.d.ts +8 -0
- package/dist/dts/HttpServer.d.ts.map +1 -1
- package/dist/dts/Socket.d.ts +3 -3
- package/dist/dts/Socket.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/Client.js +5 -0
- package/dist/esm/Http/Client.js.map +1 -1
- package/dist/esm/Http/ClientRequest.js.map +1 -1
- package/dist/esm/Http/ClientResponse.js.map +1 -1
- package/dist/esm/Http/Cookies.js +518 -0
- package/dist/esm/Http/Cookies.js.map +1 -0
- package/dist/esm/Http/Headers.js +2 -2
- package/dist/esm/Http/Headers.js.map +1 -1
- package/dist/esm/Http/IncomingMessage.js +12 -15
- package/dist/esm/Http/IncomingMessage.js.map +1 -1
- package/dist/esm/Http/Multipart.js.map +1 -1
- package/dist/esm/Http/Router.js +10 -0
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/ServerRequest.js +5 -0
- package/dist/esm/Http/ServerRequest.js.map +1 -1
- package/dist/esm/Http/ServerResponse.js +35 -0
- package/dist/esm/Http/ServerResponse.js.map +1 -1
- package/dist/esm/Http/UrlParams.js +2 -2
- package/dist/esm/Http/UrlParams.js.map +1 -1
- package/dist/esm/HttpClient.js +8 -0
- package/dist/esm/HttpClient.js.map +1 -1
- package/dist/esm/HttpServer.js +8 -0
- package/dist/esm/HttpServer.js.map +1 -1
- package/dist/esm/internal/http/body.js +2 -2
- package/dist/esm/internal/http/body.js.map +1 -1
- package/dist/esm/internal/http/client.js +8 -2
- package/dist/esm/internal/http/client.js.map +1 -1
- package/dist/esm/internal/http/clientRequest.js +2 -2
- package/dist/esm/internal/http/clientRequest.js.map +1 -1
- package/dist/esm/internal/http/clientResponse.js +16 -8
- package/dist/esm/internal/http/clientResponse.js.map +1 -1
- package/dist/esm/internal/http/multipart.js +4 -4
- package/dist/esm/internal/http/multipart.js.map +1 -1
- package/dist/esm/internal/http/router.js +31 -6
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/http/serverRequest.js +28 -14
- package/dist/esm/internal/http/serverRequest.js.map +1 -1
- package/dist/esm/internal/http/serverResponse.js +47 -22
- package/dist/esm/internal/http/serverResponse.js.map +1 -1
- package/package.json +12 -4
- package/src/Http/Client.ts +16 -2
- package/src/Http/ClientRequest.ts +3 -1
- package/src/Http/ClientResponse.ts +18 -7
- package/src/Http/Cookies.ts +718 -0
- package/src/Http/Headers.ts +16 -8
- package/src/Http/IncomingMessage.ts +17 -12
- package/src/Http/Multipart.ts +5 -2
- package/src/Http/Router.ts +50 -3
- package/src/Http/ServerRequest.ts +25 -7
- package/src/Http/ServerResponse.ts +145 -13
- package/src/Http/UrlParams.ts +3 -2
- package/src/HttpClient.ts +8 -0
- package/src/HttpServer.ts +8 -0
- package/src/internal/http/body.ts +3 -2
- package/src/internal/http/client.ts +45 -5
- package/src/internal/http/clientRequest.ts +3 -2
- package/src/internal/http/clientResponse.ts +18 -8
- package/src/internal/http/multipart.ts +7 -4
- package/src/internal/http/router.ts +80 -6
- package/src/internal/http/serverRequest.ts +41 -15
- package/src/internal/http/serverResponse.ts +190 -18
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ParseOptions } from "@effect/schema/AST"
|
|
1
2
|
import type * as Schema from "@effect/schema/Schema"
|
|
2
3
|
import * as Effect from "effect/Effect"
|
|
3
4
|
import * as Effectable from "effect/Effectable"
|
|
@@ -7,6 +8,7 @@ import * as Stream from "effect/Stream"
|
|
|
7
8
|
import type * as PlatformError from "../../Error.js"
|
|
8
9
|
import type * as FileSystem from "../../FileSystem.js"
|
|
9
10
|
import type * as Body from "../../Http/Body.js"
|
|
11
|
+
import * as Cookies from "../../Http/Cookies.js"
|
|
10
12
|
import * as Headers from "../../Http/Headers.js"
|
|
11
13
|
import * as Platform from "../../Http/Platform.js"
|
|
12
14
|
import type * as ServerResponse from "../../Http/ServerResponse.js"
|
|
@@ -26,6 +28,7 @@ class ServerResponseImpl extends Effectable.StructuralClass<ServerResponse.Serve
|
|
|
26
28
|
readonly status: number,
|
|
27
29
|
readonly statusText: string | undefined,
|
|
28
30
|
headers: Headers.Headers,
|
|
31
|
+
readonly cookies: Cookies.Cookies,
|
|
29
32
|
readonly body: Body.Body
|
|
30
33
|
) {
|
|
31
34
|
super()
|
|
@@ -62,6 +65,7 @@ class ServerResponseImpl extends Effectable.StructuralClass<ServerResponse.Serve
|
|
|
62
65
|
status: this.status,
|
|
63
66
|
statusText: this.statusText,
|
|
64
67
|
headers: this.headers,
|
|
68
|
+
cookies: this.cookies.toJSON(),
|
|
65
69
|
body: this.body.toJSON()
|
|
66
70
|
}
|
|
67
71
|
}
|
|
@@ -72,11 +76,12 @@ export const isServerResponse = (u: unknown): u is ServerResponse.ServerResponse
|
|
|
72
76
|
typeof u === "object" && u !== null && TypeId in u
|
|
73
77
|
|
|
74
78
|
/** @internal */
|
|
75
|
-
export const empty = (options?: ServerResponse.Options.WithContent): ServerResponse.ServerResponse =>
|
|
79
|
+
export const empty = (options?: ServerResponse.Options.WithContent | undefined): ServerResponse.ServerResponse =>
|
|
76
80
|
new ServerResponseImpl(
|
|
77
81
|
options?.status ?? 204,
|
|
78
82
|
options?.statusText,
|
|
79
83
|
options?.headers ?? Headers.empty,
|
|
84
|
+
options?.cookies ?? Cookies.empty,
|
|
80
85
|
internalBody.empty
|
|
81
86
|
)
|
|
82
87
|
|
|
@@ -89,6 +94,7 @@ export const uint8Array = (
|
|
|
89
94
|
options?.status ?? 200,
|
|
90
95
|
options?.statusText,
|
|
91
96
|
options?.headers ?? Headers.empty,
|
|
97
|
+
options?.cookies ?? Cookies.empty,
|
|
92
98
|
internalBody.uint8Array(body, getContentType(options))
|
|
93
99
|
)
|
|
94
100
|
|
|
@@ -98,6 +104,7 @@ export const text = (body: string, options?: ServerResponse.Options.WithContentT
|
|
|
98
104
|
options?.status ?? 200,
|
|
99
105
|
options?.statusText,
|
|
100
106
|
options?.headers ?? Headers.empty,
|
|
107
|
+
options?.cookies ?? Cookies.empty,
|
|
101
108
|
internalBody.text(body, getContentType(options))
|
|
102
109
|
)
|
|
103
110
|
|
|
@@ -150,42 +157,46 @@ export const htmlStream = <A extends ReadonlyArray<Template.InterpolatedWithStre
|
|
|
150
157
|
/** @internal */
|
|
151
158
|
export const json = (
|
|
152
159
|
body: unknown,
|
|
153
|
-
options?: ServerResponse.Options.WithContent
|
|
160
|
+
options?: ServerResponse.Options.WithContent | undefined
|
|
154
161
|
): Effect.Effect<ServerResponse.ServerResponse, Body.BodyError> =>
|
|
155
162
|
Effect.map(internalBody.json(body), (body) =>
|
|
156
163
|
new ServerResponseImpl(
|
|
157
164
|
options?.status ?? 200,
|
|
158
165
|
options?.statusText,
|
|
159
166
|
options?.headers ?? Headers.empty,
|
|
167
|
+
options?.cookies ?? Cookies.empty,
|
|
160
168
|
body
|
|
161
169
|
))
|
|
162
170
|
|
|
163
171
|
/** @internal */
|
|
164
172
|
export const unsafeJson = (
|
|
165
173
|
body: unknown,
|
|
166
|
-
options?: ServerResponse.Options.WithContent
|
|
174
|
+
options?: ServerResponse.Options.WithContent | undefined
|
|
167
175
|
): ServerResponse.ServerResponse =>
|
|
168
176
|
new ServerResponseImpl(
|
|
169
177
|
options?.status ?? 200,
|
|
170
178
|
options?.statusText,
|
|
171
179
|
options?.headers ?? Headers.empty,
|
|
180
|
+
options?.cookies ?? Cookies.empty,
|
|
172
181
|
internalBody.unsafeJson(body)
|
|
173
182
|
)
|
|
174
183
|
|
|
175
184
|
/** @internal */
|
|
176
185
|
export const schemaJson = <A, I, R>(
|
|
177
|
-
schema: Schema.Schema<A, I, R
|
|
186
|
+
schema: Schema.Schema<A, I, R>,
|
|
187
|
+
options?: ParseOptions | undefined
|
|
178
188
|
) => {
|
|
179
|
-
const encode = internalBody.jsonSchema(schema)
|
|
189
|
+
const encode = internalBody.jsonSchema(schema, options)
|
|
180
190
|
return (
|
|
181
191
|
body: A,
|
|
182
|
-
options?: ServerResponse.Options.WithContent
|
|
192
|
+
options?: ServerResponse.Options.WithContent | undefined
|
|
183
193
|
): Effect.Effect<ServerResponse.ServerResponse, Body.BodyError, R> =>
|
|
184
194
|
Effect.map(encode(body), (body) =>
|
|
185
195
|
new ServerResponseImpl(
|
|
186
196
|
options?.status ?? 200,
|
|
187
197
|
options?.statusText,
|
|
188
198
|
options?.headers ?? Headers.empty,
|
|
199
|
+
options?.cookies ?? Cookies.empty,
|
|
189
200
|
body
|
|
190
201
|
))
|
|
191
202
|
}
|
|
@@ -193,7 +204,7 @@ export const schemaJson = <A, I, R>(
|
|
|
193
204
|
/** @internal */
|
|
194
205
|
export const file = (
|
|
195
206
|
path: string,
|
|
196
|
-
options?: ServerResponse.Options & FileSystem.StreamOptions
|
|
207
|
+
options?: (ServerResponse.Options & FileSystem.StreamOptions) | undefined
|
|
197
208
|
): Effect.Effect<ServerResponse.ServerResponse, PlatformError.PlatformError, Platform.Platform> =>
|
|
198
209
|
Effect.flatMap(
|
|
199
210
|
Platform.Platform,
|
|
@@ -203,7 +214,7 @@ export const file = (
|
|
|
203
214
|
/** @internal */
|
|
204
215
|
export const fileWeb = (
|
|
205
216
|
file: Body.Body.FileLike,
|
|
206
|
-
options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
|
|
217
|
+
options?: (ServerResponse.Options.WithContent & FileSystem.StreamOptions) | undefined
|
|
207
218
|
): Effect.Effect<ServerResponse.ServerResponse, never, Platform.Platform> =>
|
|
208
219
|
Effect.flatMap(
|
|
209
220
|
Platform.Platform,
|
|
@@ -213,50 +224,54 @@ export const fileWeb = (
|
|
|
213
224
|
/** @internal */
|
|
214
225
|
export const urlParams = (
|
|
215
226
|
body: UrlParams.Input,
|
|
216
|
-
options?: ServerResponse.Options.WithContent
|
|
227
|
+
options?: ServerResponse.Options.WithContent | undefined
|
|
217
228
|
): ServerResponse.ServerResponse =>
|
|
218
229
|
new ServerResponseImpl(
|
|
219
230
|
options?.status ?? 200,
|
|
220
231
|
options?.statusText,
|
|
221
232
|
options?.headers ?? Headers.empty,
|
|
233
|
+
options?.cookies ?? Cookies.empty,
|
|
222
234
|
internalBody.text(UrlParams.toString(UrlParams.fromInput(body)), "application/x-www-form-urlencoded")
|
|
223
235
|
)
|
|
224
236
|
|
|
225
237
|
/** @internal */
|
|
226
|
-
export const raw = (body: unknown, options?: ServerResponse.Options): ServerResponse.ServerResponse =>
|
|
238
|
+
export const raw = (body: unknown, options?: ServerResponse.Options | undefined): ServerResponse.ServerResponse =>
|
|
227
239
|
new ServerResponseImpl(
|
|
228
240
|
options?.status ?? 200,
|
|
229
241
|
options?.statusText,
|
|
230
242
|
options?.headers ?? Headers.empty,
|
|
243
|
+
options?.cookies ?? Cookies.empty,
|
|
231
244
|
internalBody.raw(body)
|
|
232
245
|
)
|
|
233
246
|
|
|
234
247
|
/** @internal */
|
|
235
248
|
export const formData = (
|
|
236
249
|
body: FormData,
|
|
237
|
-
options?: ServerResponse.Options.WithContent
|
|
250
|
+
options?: ServerResponse.Options.WithContent | undefined
|
|
238
251
|
): ServerResponse.ServerResponse =>
|
|
239
252
|
new ServerResponseImpl(
|
|
240
253
|
options?.status ?? 200,
|
|
241
254
|
options?.statusText,
|
|
242
255
|
options?.headers ?? Headers.empty,
|
|
256
|
+
options?.cookies ?? Cookies.empty,
|
|
243
257
|
internalBody.formData(body)
|
|
244
258
|
)
|
|
245
259
|
|
|
246
260
|
/** @internal */
|
|
247
261
|
export const stream = (
|
|
248
262
|
body: Stream.Stream<Uint8Array, unknown>,
|
|
249
|
-
options?: ServerResponse.Options
|
|
263
|
+
options?: ServerResponse.Options | undefined
|
|
250
264
|
): ServerResponse.ServerResponse =>
|
|
251
265
|
new ServerResponseImpl(
|
|
252
266
|
options?.status ?? 200,
|
|
253
267
|
options?.statusText,
|
|
254
268
|
options?.headers ?? Headers.empty,
|
|
269
|
+
options?.cookies ?? Cookies.empty,
|
|
255
270
|
internalBody.stream(body, getContentType(options), options?.contentLength)
|
|
256
271
|
)
|
|
257
272
|
|
|
258
273
|
/** @internal */
|
|
259
|
-
export const getContentType = (options?: ServerResponse.Options): string | undefined => {
|
|
274
|
+
export const getContentType = (options?: ServerResponse.Options | undefined): string | undefined => {
|
|
260
275
|
if (options?.contentType) {
|
|
261
276
|
return options.contentType
|
|
262
277
|
} else if (options?.headers) {
|
|
@@ -275,9 +290,156 @@ export const setHeader = dual<
|
|
|
275
290
|
self.status,
|
|
276
291
|
self.statusText,
|
|
277
292
|
Headers.set(self.headers, key, value),
|
|
293
|
+
self.cookies,
|
|
278
294
|
self.body
|
|
279
295
|
))
|
|
280
296
|
|
|
297
|
+
/** @internal */
|
|
298
|
+
export const replaceCookies = dual<
|
|
299
|
+
(cookies: Cookies.Cookies) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
300
|
+
(self: ServerResponse.ServerResponse, cookies: Cookies.Cookies) => ServerResponse.ServerResponse
|
|
301
|
+
>(2, (self, cookies) =>
|
|
302
|
+
new ServerResponseImpl(
|
|
303
|
+
self.status,
|
|
304
|
+
self.statusText,
|
|
305
|
+
self.headers,
|
|
306
|
+
cookies,
|
|
307
|
+
self.body
|
|
308
|
+
))
|
|
309
|
+
|
|
310
|
+
/** @internal */
|
|
311
|
+
export const setCookie = dual<
|
|
312
|
+
(
|
|
313
|
+
name: string,
|
|
314
|
+
value: string,
|
|
315
|
+
options?: Cookies.Cookie["options"]
|
|
316
|
+
) => (self: ServerResponse.ServerResponse) => Effect.Effect<ServerResponse.ServerResponse, Cookies.CookiesError>,
|
|
317
|
+
(
|
|
318
|
+
self: ServerResponse.ServerResponse,
|
|
319
|
+
name: string,
|
|
320
|
+
value: string,
|
|
321
|
+
options?: Cookies.Cookie["options"]
|
|
322
|
+
) => Effect.Effect<ServerResponse.ServerResponse, Cookies.CookiesError>
|
|
323
|
+
>(
|
|
324
|
+
(args) => Cookies.isCookies(args[0]),
|
|
325
|
+
(self, name, value, options) =>
|
|
326
|
+
Effect.map(Cookies.set(self.cookies, name, value, options), (cookies) =>
|
|
327
|
+
new ServerResponseImpl(
|
|
328
|
+
self.status,
|
|
329
|
+
self.statusText,
|
|
330
|
+
self.headers,
|
|
331
|
+
cookies,
|
|
332
|
+
self.body
|
|
333
|
+
))
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
/** @internal */
|
|
337
|
+
export const unsafeSetCookie = dual<
|
|
338
|
+
(
|
|
339
|
+
name: string,
|
|
340
|
+
value: string,
|
|
341
|
+
options?: Cookies.Cookie["options"]
|
|
342
|
+
) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
343
|
+
(
|
|
344
|
+
self: ServerResponse.ServerResponse,
|
|
345
|
+
name: string,
|
|
346
|
+
value: string,
|
|
347
|
+
options?: Cookies.Cookie["options"]
|
|
348
|
+
) => ServerResponse.ServerResponse
|
|
349
|
+
>(
|
|
350
|
+
(args) => Cookies.isCookies(args[0]),
|
|
351
|
+
(self, name, value, options) =>
|
|
352
|
+
new ServerResponseImpl(
|
|
353
|
+
self.status,
|
|
354
|
+
self.statusText,
|
|
355
|
+
self.headers,
|
|
356
|
+
Cookies.unsafeSet(self.cookies, name, value, options),
|
|
357
|
+
self.body
|
|
358
|
+
)
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
/** @internal */
|
|
362
|
+
export const updateCookies = dual<
|
|
363
|
+
(
|
|
364
|
+
f: (cookies: Cookies.Cookies) => Cookies.Cookies
|
|
365
|
+
) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
366
|
+
(
|
|
367
|
+
self: ServerResponse.ServerResponse,
|
|
368
|
+
f: (cookies: Cookies.Cookies) => Cookies.Cookies
|
|
369
|
+
) => ServerResponse.ServerResponse
|
|
370
|
+
>(2, (self, f) =>
|
|
371
|
+
new ServerResponseImpl(
|
|
372
|
+
self.status,
|
|
373
|
+
self.statusText,
|
|
374
|
+
self.headers,
|
|
375
|
+
f(self.cookies),
|
|
376
|
+
self.body
|
|
377
|
+
))
|
|
378
|
+
|
|
379
|
+
/** @internal */
|
|
380
|
+
export const setCookies = dual<
|
|
381
|
+
(
|
|
382
|
+
cookies: Iterable<readonly [name: string, value: string, options?: Cookies.Cookie["options"]]>
|
|
383
|
+
) => (self: ServerResponse.ServerResponse) => Effect.Effect<ServerResponse.ServerResponse, Cookies.CookiesError>,
|
|
384
|
+
(
|
|
385
|
+
self: ServerResponse.ServerResponse,
|
|
386
|
+
cookies: Iterable<readonly [name: string, value: string, options?: Cookies.Cookie["options"]]>
|
|
387
|
+
) => Effect.Effect<ServerResponse.ServerResponse, Cookies.CookiesError>
|
|
388
|
+
>(
|
|
389
|
+
2,
|
|
390
|
+
(self, cookies) =>
|
|
391
|
+
Effect.map(Cookies.setAll(self.cookies, cookies), (cookies) =>
|
|
392
|
+
new ServerResponseImpl(
|
|
393
|
+
self.status,
|
|
394
|
+
self.statusText,
|
|
395
|
+
self.headers,
|
|
396
|
+
cookies,
|
|
397
|
+
self.body
|
|
398
|
+
))
|
|
399
|
+
)
|
|
400
|
+
|
|
401
|
+
/** @internal */
|
|
402
|
+
export const unsafeSetCookies = dual<
|
|
403
|
+
(
|
|
404
|
+
cookies: Iterable<readonly [name: string, value: string, options?: Cookies.Cookie["options"]]>
|
|
405
|
+
) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
406
|
+
(
|
|
407
|
+
self: ServerResponse.ServerResponse,
|
|
408
|
+
cookies: Iterable<readonly [name: string, value: string, options?: Cookies.Cookie["options"]]>
|
|
409
|
+
) => ServerResponse.ServerResponse
|
|
410
|
+
>(
|
|
411
|
+
2,
|
|
412
|
+
(self, cookies) =>
|
|
413
|
+
new ServerResponseImpl(
|
|
414
|
+
self.status,
|
|
415
|
+
self.statusText,
|
|
416
|
+
self.headers,
|
|
417
|
+
Cookies.unsafeSetAll(self.cookies, cookies),
|
|
418
|
+
self.body
|
|
419
|
+
)
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
/** @internal */
|
|
423
|
+
export const removeCookie = dual<
|
|
424
|
+
(
|
|
425
|
+
name: string
|
|
426
|
+
) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
427
|
+
(
|
|
428
|
+
self: ServerResponse.ServerResponse,
|
|
429
|
+
name: string
|
|
430
|
+
) => ServerResponse.ServerResponse
|
|
431
|
+
>(
|
|
432
|
+
2,
|
|
433
|
+
(self, name) =>
|
|
434
|
+
new ServerResponseImpl(
|
|
435
|
+
self.status,
|
|
436
|
+
self.statusText,
|
|
437
|
+
self.headers,
|
|
438
|
+
Cookies.remove(self.cookies, name),
|
|
439
|
+
self.body
|
|
440
|
+
)
|
|
441
|
+
)
|
|
442
|
+
|
|
281
443
|
/** @internal */
|
|
282
444
|
export const setHeaders = dual<
|
|
283
445
|
(input: Headers.Input) => (self: ServerResponse.ServerResponse) => ServerResponse.ServerResponse,
|
|
@@ -287,6 +449,7 @@ export const setHeaders = dual<
|
|
|
287
449
|
self.status,
|
|
288
450
|
self.statusText,
|
|
289
451
|
Headers.setAll(self.headers, input),
|
|
452
|
+
self.cookies,
|
|
290
453
|
self.body
|
|
291
454
|
))
|
|
292
455
|
|
|
@@ -299,6 +462,7 @@ export const setStatus = dual<
|
|
|
299
462
|
status,
|
|
300
463
|
statusText,
|
|
301
464
|
self.headers,
|
|
465
|
+
self.cookies,
|
|
302
466
|
self.body
|
|
303
467
|
))
|
|
304
468
|
|
|
@@ -315,17 +479,25 @@ export const setBody = dual<
|
|
|
315
479
|
self.status,
|
|
316
480
|
self.statusText,
|
|
317
481
|
headers,
|
|
482
|
+
self.cookies,
|
|
318
483
|
body
|
|
319
484
|
)
|
|
320
485
|
})
|
|
321
486
|
|
|
322
487
|
/** @internal */
|
|
323
488
|
export const toWeb = (response: ServerResponse.ServerResponse, withoutBody = false): Response => {
|
|
489
|
+
const headers = new globalThis.Headers(response.headers)
|
|
490
|
+
if (!Cookies.isEmpty(response.cookies)) {
|
|
491
|
+
const toAdd = Cookies.toSetCookieHeaders(response.cookies)
|
|
492
|
+
for (const header of toAdd) {
|
|
493
|
+
headers.append("set-cookie", header)
|
|
494
|
+
}
|
|
495
|
+
}
|
|
324
496
|
if (withoutBody) {
|
|
325
497
|
return new Response(undefined, {
|
|
326
498
|
status: response.status,
|
|
327
499
|
statusText: response.statusText as string,
|
|
328
|
-
headers
|
|
500
|
+
headers
|
|
329
501
|
})
|
|
330
502
|
}
|
|
331
503
|
const body = response.body
|
|
@@ -334,7 +506,7 @@ export const toWeb = (response: ServerResponse.ServerResponse, withoutBody = fal
|
|
|
334
506
|
return new Response(undefined, {
|
|
335
507
|
status: response.status,
|
|
336
508
|
statusText: response.statusText as string,
|
|
337
|
-
headers
|
|
509
|
+
headers
|
|
338
510
|
})
|
|
339
511
|
}
|
|
340
512
|
case "Uint8Array":
|
|
@@ -342,21 +514,21 @@ export const toWeb = (response: ServerResponse.ServerResponse, withoutBody = fal
|
|
|
342
514
|
return new Response(body.body as any, {
|
|
343
515
|
status: response.status,
|
|
344
516
|
statusText: response.statusText,
|
|
345
|
-
headers
|
|
517
|
+
headers
|
|
346
518
|
})
|
|
347
519
|
}
|
|
348
520
|
case "FormData": {
|
|
349
521
|
return new Response(body.formData as any, {
|
|
350
522
|
status: response.status,
|
|
351
523
|
statusText: response.statusText,
|
|
352
|
-
headers
|
|
524
|
+
headers
|
|
353
525
|
})
|
|
354
526
|
}
|
|
355
527
|
case "Stream": {
|
|
356
528
|
return new Response(Stream.toReadableStream(body.stream), {
|
|
357
529
|
status: response.status,
|
|
358
530
|
statusText: response.statusText,
|
|
359
|
-
headers
|
|
531
|
+
headers
|
|
360
532
|
})
|
|
361
533
|
}
|
|
362
534
|
}
|