@effect/platform 0.13.11 → 0.13.13
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/Body.d.ts +16 -0
- package/Http/Body.d.ts.map +1 -1
- package/Http/Body.js +7 -1
- package/Http/Body.js.map +1 -1
- package/Http/ClientRequest.d.ts +8 -0
- package/Http/ClientRequest.d.ts.map +1 -1
- package/Http/ClientRequest.js +7 -1
- package/Http/ClientRequest.js.map +1 -1
- package/Http/Etag.d.ts +2 -0
- package/Http/Etag.d.ts.map +1 -1
- package/Http/Etag.js.map +1 -1
- package/Http/Router.d.ts +45 -32
- package/Http/Router.d.ts.map +1 -1
- package/Http/Router.js.map +1 -1
- package/Http/ServerResponse.d.ts +5 -0
- package/Http/ServerResponse.d.ts.map +1 -1
- package/Http/ServerResponse.js +8 -2
- package/Http/ServerResponse.js.map +1 -1
- package/internal/http/body.js +6 -1
- package/internal/http/body.js.map +1 -1
- package/internal/http/clientRequest.js +4 -1
- package/internal/http/clientRequest.js.map +1 -1
- package/internal/http/router.d.ts +1 -1
- package/internal/http/router.d.ts.map +1 -1
- package/internal/http/router.js.map +1 -1
- package/internal/http/serverResponse.js +12 -1
- package/internal/http/serverResponse.js.map +1 -1
- package/mjs/Http/Body.mjs +5 -0
- package/mjs/Http/Body.mjs.map +1 -1
- package/mjs/Http/ClientRequest.mjs +5 -0
- package/mjs/Http/ClientRequest.mjs.map +1 -1
- package/mjs/Http/Etag.mjs.map +1 -1
- package/mjs/Http/Router.mjs.map +1 -1
- package/mjs/Http/ServerResponse.mjs +5 -0
- package/mjs/Http/ServerResponse.mjs.map +1 -1
- package/mjs/internal/http/body.mjs +4 -0
- package/mjs/internal/http/body.mjs.map +1 -1
- package/mjs/internal/http/clientRequest.mjs +2 -0
- package/mjs/internal/http/clientRequest.mjs.map +1 -1
- package/mjs/internal/http/router.mjs.map +1 -1
- package/mjs/internal/http/serverResponse.mjs +10 -0
- package/mjs/internal/http/serverResponse.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Http/Body.ts +18 -0
- package/src/Http/ClientRequest.ts +9 -0
- package/src/Http/Etag.ts +2 -0
- package/src/Http/Router.ts +65 -93
- package/src/Http/ServerResponse.ts +9 -0
- package/src/internal/http/body.ts +6 -1
- package/src/internal/http/clientRequest.ts +6 -0
- package/src/internal/http/router.ts +31 -30
- package/src/internal/http/serverResponse.ts +21 -0
|
@@ -74,6 +74,16 @@ export const file = (path, options) => Effect.map(({
|
|
|
74
74
|
info
|
|
75
75
|
}) => Effect.flatMap(Etag.Generator, generator => generator.fromFileInfo(info)))(Effect.bindTo(Effect.flatMap(FileSystem.FileSystem, fs => fs.stat(path)), "info"))));
|
|
76
76
|
/** @internal */
|
|
77
|
+
export const fileWeb = (file, options) => Effect.flatMap(Etag.Generator, generator => Effect.map(generator.fromFileWeb(file), etag => {
|
|
78
|
+
const body = internalBody.fileWeb(file);
|
|
79
|
+
const headers = {
|
|
80
|
+
...(options?.headers ?? {}),
|
|
81
|
+
etag: Etag.toString(etag),
|
|
82
|
+
"last-modified": new Date(file.lastModified).toUTCString()
|
|
83
|
+
};
|
|
84
|
+
return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
|
|
85
|
+
}));
|
|
86
|
+
/** @internal */
|
|
77
87
|
export const urlParams = (body, options) => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, internalBody.text(UrlParams.toString(UrlParams.fromInput(body)), "application/x-www-form-urlencoded"));
|
|
78
88
|
/** @internal */
|
|
79
89
|
export const raw = (body, options) => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, internalBody.raw(body));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","FileSystem","Etag","Headers","UrlParams","internalBody","Mime","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","empty","options","uint8Array","getContentType","text","json","map","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","etag","info","mtime","_tag","value","toUTCString","bind","fileInfo","getType","undefined","flatMap","Generator","generator","fromFileInfo","bindTo","fs","stat","urlParams","fromInput","raw","formData","stream","setHeader","self","key","set","setHeaders","input","setAll","setStatus","args","setBody","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","FileSystem","Etag","Headers","UrlParams","internalBody","Mime","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","empty","options","uint8Array","getContentType","text","json","map","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","etag","info","mtime","_tag","value","toUTCString","bind","fileInfo","getType","undefined","flatMap","Generator","generator","fromFileInfo","bindTo","fs","stat","fileWeb","fromFileWeb","Date","lastModified","urlParams","fromInput","raw","formData","stream","setHeader","self","key","set","setHeaders","input","setAll","setStatus","args","setBody","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
package/src/Http/Body.ts
CHANGED
|
@@ -42,6 +42,18 @@ export namespace Body {
|
|
|
42
42
|
readonly contentType?: string
|
|
43
43
|
readonly contentLength?: number
|
|
44
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category models
|
|
49
|
+
*/
|
|
50
|
+
export interface FileLike {
|
|
51
|
+
readonly name: string
|
|
52
|
+
readonly lastModified: number
|
|
53
|
+
readonly size: number
|
|
54
|
+
readonly stream: () => unknown
|
|
55
|
+
readonly type: string
|
|
56
|
+
}
|
|
45
57
|
}
|
|
46
58
|
|
|
47
59
|
/**
|
|
@@ -210,3 +222,9 @@ export const fileInfo: (
|
|
|
210
222
|
info: FileSystem.File.Info,
|
|
211
223
|
options?: FileSystem.StreamOptions & { readonly contentType?: string }
|
|
212
224
|
) => Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, Stream> = internal.fileInfo
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @since 1.0.0
|
|
228
|
+
* @category constructors
|
|
229
|
+
*/
|
|
230
|
+
export const fileWeb: (file: Body.FileLike) => Stream = internal.fileWeb
|
|
@@ -357,3 +357,12 @@ export const fileBody: {
|
|
|
357
357
|
options?: FileSystem.StreamOptions & { readonly contentType?: string }
|
|
358
358
|
): Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, ClientRequest>
|
|
359
359
|
} = internal.fileBody
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* @since 1.0.0
|
|
363
|
+
* @category combinators
|
|
364
|
+
*/
|
|
365
|
+
export const fileWebBody: {
|
|
366
|
+
(file: Body.Body.FileLike): (self: ClientRequest) => ClientRequest
|
|
367
|
+
(self: ClientRequest, file: Body.Body.FileLike): ClientRequest
|
|
368
|
+
} = internal.fileWebBody
|
package/src/Http/Etag.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import type * as Context from "@effect/data/Context"
|
|
5
5
|
import type * as Effect from "@effect/io/Effect"
|
|
6
6
|
import type * as FileSystem from "@effect/platform/FileSystem"
|
|
7
|
+
import type * as Body from "@effect/platform/Http/Body"
|
|
7
8
|
import * as internal from "@effect/platform/internal/http/etag"
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -55,6 +56,7 @@ export type GeneratorTypeId = typeof GeneratorTypeId
|
|
|
55
56
|
export interface Generator {
|
|
56
57
|
readonly [GeneratorTypeId]: GeneratorTypeId
|
|
57
58
|
readonly fromFileInfo: (info: FileSystem.File.Info) => Effect.Effect<never, never, Etag>
|
|
59
|
+
readonly fromFileWeb: (file: Body.Body.FileLike) => Effect.Effect<never, never, Etag>
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
/**
|
package/src/Http/Router.ts
CHANGED
|
@@ -37,6 +37,21 @@ export interface Router<R, E> extends App.Default<Exclude<R, RouteContext>, E |
|
|
|
37
37
|
readonly mounts: Chunk.Chunk<readonly [string, App.Default<R, E>]>
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
*/
|
|
43
|
+
export namespace Router {
|
|
44
|
+
/**
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
*/
|
|
47
|
+
export type ExcludeProvided<A> = Exclude<A, RouteContext | ServerRequest.ServerRequest>
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
*/
|
|
52
|
+
export type WithoutProvided<R, E> = Router<ExcludeProvided<R>, E>
|
|
53
|
+
}
|
|
54
|
+
|
|
40
55
|
/**
|
|
41
56
|
* @since 1.0.0
|
|
42
57
|
* @category type ids
|
|
@@ -183,14 +198,8 @@ export const concat: {
|
|
|
183
198
|
* @category routing
|
|
184
199
|
*/
|
|
185
200
|
export const mount: {
|
|
186
|
-
<R1, E1>(path: string, that: Router<R1, E1>): <R, E>(
|
|
187
|
-
|
|
188
|
-
) => Router<R1 | R, E1 | E>
|
|
189
|
-
<R, E, R1, E1>(
|
|
190
|
-
self: Router<R, E>,
|
|
191
|
-
path: string,
|
|
192
|
-
that: Router<R1, E1>
|
|
193
|
-
): Router<R | R1, E | E1>
|
|
201
|
+
<R1, E1>(path: string, that: Router<R1, E1>): <R, E>(self: Router<R, E>) => Router<R1 | R, E1 | E>
|
|
202
|
+
<R, E, R1, E1>(self: Router<R, E>, path: string, that: Router<R1, E1>): Router<R | R1, E | E1>
|
|
194
203
|
} = internal.mount
|
|
195
204
|
|
|
196
205
|
/**
|
|
@@ -201,20 +210,8 @@ export const mountApp: {
|
|
|
201
210
|
<R1, E1>(
|
|
202
211
|
path: string,
|
|
203
212
|
that: App.Default<R1, E1>
|
|
204
|
-
): <R, E>(
|
|
205
|
-
|
|
206
|
-
) => Router<
|
|
207
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest> | Exclude<R, RouteContext | ServerRequest.ServerRequest>,
|
|
208
|
-
E1 | E
|
|
209
|
-
>
|
|
210
|
-
<R, E, R1, E1>(
|
|
211
|
-
self: Router<R, E>,
|
|
212
|
-
path: string,
|
|
213
|
-
that: App.Default<R1, E1>
|
|
214
|
-
): Router<
|
|
215
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
216
|
-
E | E1
|
|
217
|
-
>
|
|
213
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
214
|
+
<R, E, R1, E1>(self: Router<R, E>, path: string, that: App.Default<R1, E1>): Router.WithoutProvided<R | R1, E | E1>
|
|
218
215
|
} = internal.mountApp
|
|
219
216
|
|
|
220
217
|
/**
|
|
@@ -227,12 +224,12 @@ export const route: (
|
|
|
227
224
|
<R1, E1>(
|
|
228
225
|
path: string,
|
|
229
226
|
handler: Route.Handler<R1, E1>
|
|
230
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
227
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
231
228
|
<R, E, R1, E1>(
|
|
232
229
|
self: Router<R, E>,
|
|
233
230
|
path: string,
|
|
234
231
|
handler: Route.Handler<R1, E1>
|
|
235
|
-
): Router<R |
|
|
232
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
236
233
|
} = internal.route
|
|
237
234
|
|
|
238
235
|
/**
|
|
@@ -243,12 +240,12 @@ export const all: {
|
|
|
243
240
|
<R1, E1>(
|
|
244
241
|
path: string,
|
|
245
242
|
handler: Route.Handler<R1, E1>
|
|
246
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
243
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
247
244
|
<R, E, R1, E1>(
|
|
248
245
|
self: Router<R, E>,
|
|
249
246
|
path: string,
|
|
250
247
|
handler: Route.Handler<R1, E1>
|
|
251
|
-
): Router<R |
|
|
248
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
252
249
|
} = internal.all
|
|
253
250
|
|
|
254
251
|
/**
|
|
@@ -259,12 +256,12 @@ export const get: {
|
|
|
259
256
|
<R1, E1>(
|
|
260
257
|
path: string,
|
|
261
258
|
handler: Route.Handler<R1, E1>
|
|
262
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
259
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
263
260
|
<R, E, R1, E1>(
|
|
264
261
|
self: Router<R, E>,
|
|
265
262
|
path: string,
|
|
266
263
|
handler: Route.Handler<R1, E1>
|
|
267
|
-
): Router<R |
|
|
264
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
268
265
|
} = internal.get
|
|
269
266
|
|
|
270
267
|
/**
|
|
@@ -275,12 +272,12 @@ export const post: {
|
|
|
275
272
|
<R1, E1>(
|
|
276
273
|
path: string,
|
|
277
274
|
handler: Route.Handler<R1, E1>
|
|
278
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
275
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
279
276
|
<R, E, R1, E1>(
|
|
280
277
|
self: Router<R, E>,
|
|
281
278
|
path: string,
|
|
282
279
|
handler: Route.Handler<R1, E1>
|
|
283
|
-
): Router<R |
|
|
280
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
284
281
|
} = internal.post
|
|
285
282
|
|
|
286
283
|
/**
|
|
@@ -291,12 +288,12 @@ export const patch: {
|
|
|
291
288
|
<R1, E1>(
|
|
292
289
|
path: string,
|
|
293
290
|
handler: Route.Handler<R1, E1>
|
|
294
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
291
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
295
292
|
<R, E, R1, E1>(
|
|
296
293
|
self: Router<R, E>,
|
|
297
294
|
path: string,
|
|
298
295
|
handler: Route.Handler<R1, E1>
|
|
299
|
-
): Router<R |
|
|
296
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
300
297
|
} = internal.patch
|
|
301
298
|
|
|
302
299
|
/**
|
|
@@ -307,12 +304,12 @@ export const put: {
|
|
|
307
304
|
<R1, E1>(
|
|
308
305
|
path: string,
|
|
309
306
|
handler: Route.Handler<R1, E1>
|
|
310
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
307
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
311
308
|
<R, E, R1, E1>(
|
|
312
309
|
self: Router<R, E>,
|
|
313
310
|
path: string,
|
|
314
311
|
handler: Route.Handler<R1, E1>
|
|
315
|
-
): Router<R |
|
|
312
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
316
313
|
} = internal.put
|
|
317
314
|
|
|
318
315
|
/**
|
|
@@ -323,12 +320,12 @@ export const del: {
|
|
|
323
320
|
<R1, E1>(
|
|
324
321
|
path: string,
|
|
325
322
|
handler: Route.Handler<R1, E1>
|
|
326
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
323
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
327
324
|
<R, E, R1, E1>(
|
|
328
325
|
self: Router<R, E>,
|
|
329
326
|
path: string,
|
|
330
327
|
handler: Route.Handler<R1, E1>
|
|
331
|
-
): Router<R |
|
|
328
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
332
329
|
} = internal.del
|
|
333
330
|
|
|
334
331
|
/**
|
|
@@ -339,12 +336,12 @@ export const head: {
|
|
|
339
336
|
<R1, E1>(
|
|
340
337
|
path: string,
|
|
341
338
|
handler: Route.Handler<R1, E1>
|
|
342
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
339
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
343
340
|
<R, E, R1, E1>(
|
|
344
341
|
self: Router<R, E>,
|
|
345
342
|
path: string,
|
|
346
343
|
handler: Route.Handler<R1, E1>
|
|
347
|
-
): Router<R |
|
|
344
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
348
345
|
} = internal.head
|
|
349
346
|
|
|
350
347
|
/**
|
|
@@ -355,12 +352,12 @@ export const options: {
|
|
|
355
352
|
<R1, E1>(
|
|
356
353
|
path: string,
|
|
357
354
|
handler: Route.Handler<R1, E1>
|
|
358
|
-
): <R, E>(self: Router<R, E>) => Router<
|
|
355
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | R, E1 | E>
|
|
359
356
|
<R, E, R1, E1>(
|
|
360
357
|
self: Router<R, E>,
|
|
361
358
|
path: string,
|
|
362
359
|
handler: Route.Handler<R1, E1>
|
|
363
|
-
): Router<R |
|
|
360
|
+
): Router.WithoutProvided<R | R1, E | E1>
|
|
364
361
|
} = internal.options
|
|
365
362
|
|
|
366
363
|
/**
|
|
@@ -370,11 +367,11 @@ export const options: {
|
|
|
370
367
|
export const use: {
|
|
371
368
|
<R, E, R1, E1>(
|
|
372
369
|
f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
|
|
373
|
-
): (self: Router<R, E>) => Router<
|
|
370
|
+
): (self: Router<R, E>) => Router.WithoutProvided<R1, E1>
|
|
374
371
|
<R, E, R1, E1>(
|
|
375
372
|
self: Router<R, E>,
|
|
376
373
|
f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
|
|
377
|
-
): Router<
|
|
374
|
+
): Router.WithoutProvided<R1, E1>
|
|
378
375
|
} = internal.use
|
|
379
376
|
|
|
380
377
|
/**
|
|
@@ -382,13 +379,8 @@ export const use: {
|
|
|
382
379
|
* @category combinators
|
|
383
380
|
*/
|
|
384
381
|
export const catchAll: {
|
|
385
|
-
<E, R2, E2>(f: (e: E) => Route.Handler<R2, E2>): <R>(
|
|
386
|
-
|
|
387
|
-
) => Router<R2 | R, E2>
|
|
388
|
-
<R, E, R2, E2>(
|
|
389
|
-
self: Router<R, E>,
|
|
390
|
-
f: (e: E) => Route.Handler<R2, E2>
|
|
391
|
-
): Router<R | R2, E2>
|
|
382
|
+
<E, R2, E2>(f: (e: E) => Route.Handler<R2, E2>): <R>(self: Router<R, E>) => Router.WithoutProvided<R2 | R, E2>
|
|
383
|
+
<R, E, R2, E2>(self: Router<R, E>, f: (e: E) => Route.Handler<R2, E2>): Router.WithoutProvided<R | R2, E2>
|
|
392
384
|
} = internal.catchAll
|
|
393
385
|
|
|
394
386
|
/**
|
|
@@ -396,13 +388,13 @@ export const catchAll: {
|
|
|
396
388
|
* @category combinators
|
|
397
389
|
*/
|
|
398
390
|
export const catchAllCause: {
|
|
399
|
-
<E, R2, E2>(
|
|
400
|
-
|
|
401
|
-
) => Router<R2 | R, E2>
|
|
391
|
+
<E, R2, E2>(
|
|
392
|
+
f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
|
|
393
|
+
): <R>(self: Router<R, E>) => Router.WithoutProvided<R2 | R, E2>
|
|
402
394
|
<R, E, R2, E2>(
|
|
403
395
|
self: Router<R, E>,
|
|
404
396
|
f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
|
|
405
|
-
): Router<R | R2, E2>
|
|
397
|
+
): Router.WithoutProvided<R | R2, E2>
|
|
406
398
|
} = internal.catchAllCause
|
|
407
399
|
|
|
408
400
|
/**
|
|
@@ -428,56 +420,40 @@ export const catchTag: {
|
|
|
428
420
|
export const catchTags: {
|
|
429
421
|
<
|
|
430
422
|
E,
|
|
431
|
-
Cases extends E extends { _tag: string }
|
|
432
|
-
|
|
433
|
-
| ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>)
|
|
434
|
-
| undefined
|
|
435
|
-
}
|
|
423
|
+
Cases extends E extends { _tag: string }
|
|
424
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined }
|
|
436
425
|
: {}
|
|
437
426
|
>(
|
|
438
427
|
cases: Cases
|
|
439
|
-
): <R>(
|
|
428
|
+
): <R>(
|
|
429
|
+
self: Router<R, E>
|
|
430
|
+
) => Router.WithoutProvided<
|
|
440
431
|
| R
|
|
441
432
|
| {
|
|
442
|
-
[K in keyof Cases]: Cases[K] extends (
|
|
443
|
-
...args: Array<any>
|
|
444
|
-
) => Effect.Effect<infer R, any, any> ? R
|
|
445
|
-
: never
|
|
433
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
446
434
|
}[keyof Cases],
|
|
447
435
|
| Exclude<E, { _tag: keyof Cases }>
|
|
448
436
|
| {
|
|
449
|
-
[K in keyof Cases]: Cases[K] extends (
|
|
450
|
-
...args: Array<any>
|
|
451
|
-
) => Effect.Effect<any, infer E, any> ? E
|
|
452
|
-
: never
|
|
437
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
453
438
|
}[keyof Cases]
|
|
454
439
|
>
|
|
455
440
|
<
|
|
456
441
|
R,
|
|
457
442
|
E,
|
|
458
|
-
Cases extends E extends { _tag: string }
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
| undefined
|
|
462
|
-
}
|
|
463
|
-
: {}
|
|
443
|
+
Cases extends E extends { _tag: string }
|
|
444
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined } :
|
|
445
|
+
{}
|
|
464
446
|
>(
|
|
465
447
|
self: Router<R, E>,
|
|
466
448
|
cases: Cases
|
|
467
|
-
): Router<
|
|
449
|
+
): Router.WithoutProvided<
|
|
468
450
|
| R
|
|
469
451
|
| {
|
|
470
|
-
[K in keyof Cases]: Cases[K] extends (
|
|
471
|
-
...args: Array<any>
|
|
472
|
-
) => Effect.Effect<infer R, any, any> ? R
|
|
473
|
-
: never
|
|
452
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
474
453
|
}[keyof Cases],
|
|
475
454
|
| Exclude<E, { _tag: keyof Cases }>
|
|
476
455
|
| {
|
|
477
|
-
[K in keyof Cases]: Cases[K] extends (
|
|
478
|
-
...args: Array<any>
|
|
479
|
-
) => Effect.Effect<any, infer E, any> ? E
|
|
480
|
-
: never
|
|
456
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
481
457
|
}[keyof Cases]
|
|
482
458
|
>
|
|
483
459
|
} = internal.catchTags
|
|
@@ -487,17 +463,15 @@ export const catchTags: {
|
|
|
487
463
|
* @category combinators
|
|
488
464
|
*/
|
|
489
465
|
export const provideService: {
|
|
490
|
-
<T extends Context.Tag<any, any>>(
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
>(
|
|
494
|
-
self: Router<R, E>
|
|
495
|
-
) => Router<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
466
|
+
<T extends Context.Tag<any, any>>(
|
|
467
|
+
tag: T,
|
|
468
|
+
service: Context.Tag.Service<T>
|
|
469
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
496
470
|
<R, E, T extends Context.Tag<any, any>>(
|
|
497
471
|
self: Router<R, E>,
|
|
498
472
|
tag: T,
|
|
499
473
|
service: Context.Tag.Service<T>
|
|
500
|
-
): Router<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
474
|
+
): Router.WithoutProvided<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
501
475
|
} = internal.provideService
|
|
502
476
|
|
|
503
477
|
/**
|
|
@@ -508,12 +482,10 @@ export const provideServiceEffect: {
|
|
|
508
482
|
<T extends Context.Tag<any, any>, R1, E1>(
|
|
509
483
|
tag: T,
|
|
510
484
|
effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
|
|
511
|
-
): <R, E>(
|
|
512
|
-
self: Router<R, E>
|
|
513
|
-
) => Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest> | Exclude<R, Context.Tag.Identifier<T>>, E1 | E>
|
|
485
|
+
): <R, E>(self: Router<R, E>) => Router.WithoutProvided<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E>
|
|
514
486
|
<R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
515
487
|
self: Router<R, E>,
|
|
516
488
|
tag: T,
|
|
517
489
|
effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
|
|
518
|
-
): Router<
|
|
490
|
+
): Router.WithoutProvided<R1 | Exclude<R, Context.Tag.Identifier<T>>, E | E1>
|
|
519
491
|
} = internal.provideServiceEffect
|
|
@@ -147,6 +147,15 @@ export const file: (
|
|
|
147
147
|
options?: Options & FileSystem.StreamOptions
|
|
148
148
|
) => Effect.Effect<FileSystem.FileSystem | Etag.Generator, PlatformError.PlatformError, ServerResponse> = internal.file
|
|
149
149
|
|
|
150
|
+
/**
|
|
151
|
+
* @since 1.0.0
|
|
152
|
+
* @category constructors
|
|
153
|
+
*/
|
|
154
|
+
export const fileWeb: (
|
|
155
|
+
file: Body.Body.FileLike,
|
|
156
|
+
options?: Options.WithContent
|
|
157
|
+
) => Effect.Effect<Etag.Generator, never, ServerResponse> = internal.fileWeb
|
|
158
|
+
|
|
150
159
|
/**
|
|
151
160
|
* @since 1.0.0
|
|
152
161
|
* @category combinators
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as Data from "@effect/data/Data"
|
|
2
|
+
import { identity } from "@effect/data/Function"
|
|
2
3
|
import * as Effect from "@effect/io/Effect"
|
|
3
4
|
import type * as PlatformError from "@effect/platform/Error"
|
|
4
5
|
import * as FileSystem from "@effect/platform/FileSystem"
|
|
5
6
|
import type * as Body from "@effect/platform/Http/Body"
|
|
6
7
|
import * as Schema from "@effect/schema/Schema"
|
|
7
|
-
import
|
|
8
|
+
import * as Stream_ from "@effect/stream/Stream"
|
|
8
9
|
|
|
9
10
|
/** @internal */
|
|
10
11
|
export const TypeId: Body.TypeId = Symbol.for(
|
|
@@ -124,6 +125,10 @@ export const fileInfo = (
|
|
|
124
125
|
)
|
|
125
126
|
)
|
|
126
127
|
|
|
128
|
+
/** @internal */
|
|
129
|
+
export const fileWeb = (file: Body.Body.FileLike): Body.Stream =>
|
|
130
|
+
stream(Stream_.fromReadableStream(() => file.stream() as ReadableStream<Uint8Array>, identity), file.type, file.size)
|
|
131
|
+
|
|
127
132
|
class FormDataImpl implements Body.FormData {
|
|
128
133
|
readonly [TypeId]: Body.TypeId
|
|
129
134
|
readonly _tag = "FormData"
|
|
@@ -356,6 +356,12 @@ export const fileBody = dual<
|
|
|
356
356
|
(self, path, options) => Effect.map(internalBody.file(path, options), (body) => setBody(self, body))
|
|
357
357
|
)
|
|
358
358
|
|
|
359
|
+
/** @internal */
|
|
360
|
+
export const fileWebBody = dual<
|
|
361
|
+
(file: Body.Body.FileLike) => (self: ClientRequest.ClientRequest) => ClientRequest.ClientRequest,
|
|
362
|
+
(self: ClientRequest.ClientRequest, file: Body.Body.FileLike) => ClientRequest.ClientRequest
|
|
363
|
+
>(2, (self, file) => setBody(self, internalBody.fileWeb(file)))
|
|
364
|
+
|
|
359
365
|
/** @internal */
|
|
360
366
|
export const schemaBody = <I, A>(schema: Schema.Schema<I, A>): {
|
|
361
367
|
(body: A): (self: ClientRequest.ClientRequest) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>
|