@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.
Files changed (52) hide show
  1. package/Http/Body.d.ts +16 -0
  2. package/Http/Body.d.ts.map +1 -1
  3. package/Http/Body.js +7 -1
  4. package/Http/Body.js.map +1 -1
  5. package/Http/ClientRequest.d.ts +8 -0
  6. package/Http/ClientRequest.d.ts.map +1 -1
  7. package/Http/ClientRequest.js +7 -1
  8. package/Http/ClientRequest.js.map +1 -1
  9. package/Http/Etag.d.ts +2 -0
  10. package/Http/Etag.d.ts.map +1 -1
  11. package/Http/Etag.js.map +1 -1
  12. package/Http/Router.d.ts +45 -32
  13. package/Http/Router.d.ts.map +1 -1
  14. package/Http/Router.js.map +1 -1
  15. package/Http/ServerResponse.d.ts +5 -0
  16. package/Http/ServerResponse.d.ts.map +1 -1
  17. package/Http/ServerResponse.js +8 -2
  18. package/Http/ServerResponse.js.map +1 -1
  19. package/internal/http/body.js +6 -1
  20. package/internal/http/body.js.map +1 -1
  21. package/internal/http/clientRequest.js +4 -1
  22. package/internal/http/clientRequest.js.map +1 -1
  23. package/internal/http/router.d.ts +1 -1
  24. package/internal/http/router.d.ts.map +1 -1
  25. package/internal/http/router.js.map +1 -1
  26. package/internal/http/serverResponse.js +12 -1
  27. package/internal/http/serverResponse.js.map +1 -1
  28. package/mjs/Http/Body.mjs +5 -0
  29. package/mjs/Http/Body.mjs.map +1 -1
  30. package/mjs/Http/ClientRequest.mjs +5 -0
  31. package/mjs/Http/ClientRequest.mjs.map +1 -1
  32. package/mjs/Http/Etag.mjs.map +1 -1
  33. package/mjs/Http/Router.mjs.map +1 -1
  34. package/mjs/Http/ServerResponse.mjs +5 -0
  35. package/mjs/Http/ServerResponse.mjs.map +1 -1
  36. package/mjs/internal/http/body.mjs +4 -0
  37. package/mjs/internal/http/body.mjs.map +1 -1
  38. package/mjs/internal/http/clientRequest.mjs +2 -0
  39. package/mjs/internal/http/clientRequest.mjs.map +1 -1
  40. package/mjs/internal/http/router.mjs.map +1 -1
  41. package/mjs/internal/http/serverResponse.mjs +10 -0
  42. package/mjs/internal/http/serverResponse.mjs.map +1 -1
  43. package/package.json +1 -1
  44. package/src/Http/Body.ts +18 -0
  45. package/src/Http/ClientRequest.ts +9 -0
  46. package/src/Http/Etag.ts +2 -0
  47. package/src/Http/Router.ts +65 -93
  48. package/src/Http/ServerResponse.ts +9 -0
  49. package/src/internal/http/body.ts +6 -1
  50. package/src/internal/http/clientRequest.ts +6 -0
  51. package/src/internal/http/router.ts +31 -30
  52. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.13.11",
3
+ "version": "0.13.13",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
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
  /**
@@ -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
- self: Router<R, E>
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
- self: Router<R, E>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1 | E>
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 | Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E | E1>
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<Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1>
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<Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1>
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
- self: Router<R, E>
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>(f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): <R>(
400
- self: Router<R, E>
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
- [K in E["_tag"]]+?:
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>(self: Router<R, E>) => Router<
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
- [K in E["_tag"]]+?:
460
- | ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>)
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>>(tag: T, service: Context.Tag.Service<T>): <
491
- R,
492
- E
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<Exclude<R1, RouteContext | ServerRequest.ServerRequest> | Exclude<R, Context.Tag.Identifier<T>>, E | E1>
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 type * as Stream_ from "@effect/stream/Stream"
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>