@effect/platform 0.48.28 → 0.49.0

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 (159) hide show
  1. package/README.md +12 -12
  2. package/dist/cjs/Http/App.js +13 -11
  3. package/dist/cjs/Http/App.js.map +1 -1
  4. package/dist/cjs/Http/Client.js +13 -3
  5. package/dist/cjs/Http/Client.js.map +1 -1
  6. package/dist/cjs/Http/ClientResponse.js +9 -9
  7. package/dist/cjs/Http/ClientResponse.js.map +1 -1
  8. package/dist/cjs/Http/Cookies.js +7 -7
  9. package/dist/cjs/Http/Cookies.js.map +1 -1
  10. package/dist/cjs/Http/Headers.js +7 -7
  11. package/dist/cjs/Http/Headers.js.map +1 -1
  12. package/dist/cjs/Http/IncomingMessage.js +7 -7
  13. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  14. package/dist/cjs/Http/Middleware.js +11 -1
  15. package/dist/cjs/Http/Middleware.js.map +1 -1
  16. package/dist/cjs/Http/Multiplex.js.map +1 -1
  17. package/dist/cjs/Http/Router.js +1 -6
  18. package/dist/cjs/Http/Router.js.map +1 -1
  19. package/dist/cjs/Http/UrlParams.js +13 -13
  20. package/dist/cjs/Http/UrlParams.js.map +1 -1
  21. package/dist/cjs/PlatformConfigProvider.js +2 -2
  22. package/dist/cjs/PlatformConfigProvider.js.map +1 -1
  23. package/dist/cjs/Socket.js +6 -6
  24. package/dist/cjs/Socket.js.map +1 -1
  25. package/dist/cjs/Transferable.js +1 -1
  26. package/dist/cjs/Transferable.js.map +1 -1
  27. package/dist/cjs/WorkerRunner.js.map +1 -1
  28. package/dist/cjs/internal/command.js +1 -1
  29. package/dist/cjs/internal/command.js.map +1 -1
  30. package/dist/cjs/internal/fileSystem.js +2 -2
  31. package/dist/cjs/internal/fileSystem.js.map +1 -1
  32. package/dist/cjs/internal/http/client.js +19 -16
  33. package/dist/cjs/internal/http/client.js.map +1 -1
  34. package/dist/cjs/internal/http/clientResponse.js +5 -5
  35. package/dist/cjs/internal/http/clientResponse.js.map +1 -1
  36. package/dist/cjs/internal/http/middleware.js +8 -3
  37. package/dist/cjs/internal/http/middleware.js.map +1 -1
  38. package/dist/cjs/internal/http/multipart.js +4 -4
  39. package/dist/cjs/internal/http/multipart.js.map +1 -1
  40. package/dist/cjs/internal/http/multiplex.js +2 -2
  41. package/dist/cjs/internal/http/multiplex.js.map +1 -1
  42. package/dist/cjs/internal/http/router.js +11 -11
  43. package/dist/cjs/internal/http/router.js.map +1 -1
  44. package/dist/cjs/internal/worker.js +7 -7
  45. package/dist/cjs/internal/worker.js.map +1 -1
  46. package/dist/cjs/internal/workerRunner.js +14 -13
  47. package/dist/cjs/internal/workerRunner.js.map +1 -1
  48. package/dist/dts/Command.d.ts +3 -3
  49. package/dist/dts/Command.d.ts.map +1 -1
  50. package/dist/dts/Http/App.d.ts +7 -7
  51. package/dist/dts/Http/App.d.ts.map +1 -1
  52. package/dist/dts/Http/Client.d.ts +78 -65
  53. package/dist/dts/Http/Client.d.ts.map +1 -1
  54. package/dist/dts/Http/ClientResponse.d.ts +5 -5
  55. package/dist/dts/Http/Cookies.d.ts +3 -3
  56. package/dist/dts/Http/Cookies.d.ts.map +1 -1
  57. package/dist/dts/Http/Headers.d.ts +4 -4
  58. package/dist/dts/Http/Headers.d.ts.map +1 -1
  59. package/dist/dts/Http/IncomingMessage.d.ts +4 -3
  60. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  61. package/dist/dts/Http/Middleware.d.ts +22 -5
  62. package/dist/dts/Http/Middleware.d.ts.map +1 -1
  63. package/dist/dts/Http/Multiplex.d.ts +22 -22
  64. package/dist/dts/Http/Multiplex.d.ts.map +1 -1
  65. package/dist/dts/Http/Router.d.ts +98 -66
  66. package/dist/dts/Http/Router.d.ts.map +1 -1
  67. package/dist/dts/Http/Server.d.ts +11 -11
  68. package/dist/dts/Http/Server.d.ts.map +1 -1
  69. package/dist/dts/Http/ServerRequest.d.ts +1 -1
  70. package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
  71. package/dist/dts/Http/TraceContext.d.ts.map +1 -1
  72. package/dist/dts/Http/UrlParams.d.ts.map +1 -1
  73. package/dist/dts/PlatformConfigProvider.d.ts.map +1 -1
  74. package/dist/dts/Socket.d.ts +10 -10
  75. package/dist/dts/Socket.d.ts.map +1 -1
  76. package/dist/dts/Transferable.d.ts.map +1 -1
  77. package/dist/dts/Worker.d.ts +6 -6
  78. package/dist/dts/Worker.d.ts.map +1 -1
  79. package/dist/dts/WorkerRunner.d.ts +5 -5
  80. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  81. package/dist/dts/internal/http/router.d.ts +1 -1
  82. package/dist/dts/internal/http/router.d.ts.map +1 -1
  83. package/dist/esm/Http/App.js +13 -11
  84. package/dist/esm/Http/App.js.map +1 -1
  85. package/dist/esm/Http/Client.js +12 -2
  86. package/dist/esm/Http/Client.js.map +1 -1
  87. package/dist/esm/Http/ClientResponse.js +5 -5
  88. package/dist/esm/Http/ClientResponse.js.map +1 -1
  89. package/dist/esm/Http/Cookies.js +7 -7
  90. package/dist/esm/Http/Cookies.js.map +1 -1
  91. package/dist/esm/Http/Headers.js +7 -7
  92. package/dist/esm/Http/Headers.js.map +1 -1
  93. package/dist/esm/Http/IncomingMessage.js +3 -3
  94. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  95. package/dist/esm/Http/Middleware.js +10 -0
  96. package/dist/esm/Http/Middleware.js.map +1 -1
  97. package/dist/esm/Http/Multiplex.js.map +1 -1
  98. package/dist/esm/Http/Router.js +0 -5
  99. package/dist/esm/Http/Router.js.map +1 -1
  100. package/dist/esm/Http/UrlParams.js +13 -13
  101. package/dist/esm/Http/UrlParams.js.map +1 -1
  102. package/dist/esm/PlatformConfigProvider.js +2 -2
  103. package/dist/esm/PlatformConfigProvider.js.map +1 -1
  104. package/dist/esm/Socket.js +6 -6
  105. package/dist/esm/Socket.js.map +1 -1
  106. package/dist/esm/Transferable.js +1 -1
  107. package/dist/esm/Transferable.js.map +1 -1
  108. package/dist/esm/WorkerRunner.js.map +1 -1
  109. package/dist/esm/internal/command.js +1 -1
  110. package/dist/esm/internal/command.js.map +1 -1
  111. package/dist/esm/internal/fileSystem.js +2 -2
  112. package/dist/esm/internal/fileSystem.js.map +1 -1
  113. package/dist/esm/internal/http/client.js +18 -13
  114. package/dist/esm/internal/http/client.js.map +1 -1
  115. package/dist/esm/internal/http/clientResponse.js +2 -2
  116. package/dist/esm/internal/http/clientResponse.js.map +1 -1
  117. package/dist/esm/internal/http/middleware.js +7 -2
  118. package/dist/esm/internal/http/middleware.js.map +1 -1
  119. package/dist/esm/internal/http/multipart.js +4 -4
  120. package/dist/esm/internal/http/multipart.js.map +1 -1
  121. package/dist/esm/internal/http/multiplex.js +2 -2
  122. package/dist/esm/internal/http/multiplex.js.map +1 -1
  123. package/dist/esm/internal/http/router.js +10 -9
  124. package/dist/esm/internal/http/router.js.map +1 -1
  125. package/dist/esm/internal/worker.js +7 -7
  126. package/dist/esm/internal/worker.js.map +1 -1
  127. package/dist/esm/internal/workerRunner.js +14 -13
  128. package/dist/esm/internal/workerRunner.js.map +1 -1
  129. package/package.json +3 -3
  130. package/src/Command.ts +3 -3
  131. package/src/Http/App.ts +44 -41
  132. package/src/Http/Client.ts +105 -90
  133. package/src/Http/ClientResponse.ts +7 -7
  134. package/src/Http/Cookies.ts +9 -9
  135. package/src/Http/Headers.ts +12 -12
  136. package/src/Http/IncomingMessage.ts +16 -6
  137. package/src/Http/Middleware.ts +30 -6
  138. package/src/Http/Multiplex.ts +38 -38
  139. package/src/Http/Router.ts +156 -141
  140. package/src/Http/Server.ts +16 -16
  141. package/src/Http/ServerRequest.ts +1 -1
  142. package/src/Http/UrlParams.ts +15 -15
  143. package/src/PlatformConfigProvider.ts +2 -2
  144. package/src/Socket.ts +6 -6
  145. package/src/Transferable.ts +1 -1
  146. package/src/Worker.ts +9 -9
  147. package/src/WorkerRunner.ts +5 -4
  148. package/src/internal/command.ts +12 -6
  149. package/src/internal/fileSystem.ts +2 -2
  150. package/src/internal/http/client.ts +221 -204
  151. package/src/internal/http/clientResponse.ts +2 -2
  152. package/src/internal/http/middleware.ts +24 -1
  153. package/src/internal/http/multipart.ts +4 -4
  154. package/src/internal/http/multiplex.ts +54 -54
  155. package/src/internal/http/router.ts +146 -116
  156. package/src/internal/http/server.ts +17 -17
  157. package/src/internal/http/serverRequest.ts +1 -1
  158. package/src/internal/worker.ts +14 -14
  159. package/src/internal/workerRunner.ts +20 -16
@@ -34,13 +34,15 @@ export type TypeId = typeof TypeId
34
34
  * @since 1.0.0
35
35
  * @category models
36
36
  */
37
- export interface Router<R, E> extends App.Default<Exclude<R, RouteContext>, E | Error.RouteNotFound>, Inspectable {
37
+ export interface Router<E = never, R = never>
38
+ extends App.Default<E | Error.RouteNotFound, Exclude<R, RouteContext>>, Inspectable
39
+ {
38
40
  readonly [TypeId]: TypeId
39
- readonly routes: Chunk.Chunk<Route<R, E>>
41
+ readonly routes: Chunk.Chunk<Route<E, R>>
40
42
  readonly mounts: Chunk.Chunk<
41
43
  readonly [
42
44
  prefix: string,
43
- httpApp: App.Default<R, E>,
45
+ httpApp: App.Default<E, R>,
44
46
  options?: { readonly includePrefix?: boolean | undefined } | undefined
45
47
  ]
46
48
  >
@@ -78,12 +80,13 @@ export type PathInput = `/${string}` | "*"
78
80
  * @since 1.0.0
79
81
  * @category models
80
82
  */
81
- export interface Route<R, E> extends Inspectable {
83
+ export interface Route<E = never, R = never> extends Inspectable {
82
84
  readonly [RouteTypeId]: RouteTypeId
83
85
  readonly method: Method.Method | "*"
84
86
  readonly path: PathInput
85
- readonly handler: Route.Handler<R, E>
87
+ readonly handler: Route.Handler<E, R>
86
88
  readonly prefix: Option.Option<string>
89
+ readonly uninterruptible: boolean
87
90
  }
88
91
 
89
92
  /**
@@ -93,7 +96,7 @@ export declare namespace Route {
93
96
  /**
94
97
  * @since 1.0.0
95
98
  */
96
- export type Handler<R, E> = Effect.Effect<
99
+ export type Handler<E, R> = Effect.Effect<
97
100
  ServerResponse.ServerResponse,
98
101
  E,
99
102
  R | RouteContext | ServerRequest.ServerRequest
@@ -224,7 +227,7 @@ export const schemaSearchParams: <R, I extends Readonly<Record<string, string>>,
224
227
  * @since 1.0.0
225
228
  * @category constructors
226
229
  */
227
- export const empty: Router<never, never> = internal.empty
230
+ export const empty: Router = internal.empty
228
231
 
229
232
  /**
230
233
  * @since 1.0.0
@@ -232,27 +235,28 @@ export const empty: Router<never, never> = internal.empty
232
235
  */
233
236
  export const fromIterable: <R extends Route<any, any>>(
234
237
  routes: Iterable<R>
235
- ) => Router<R extends Route<infer Env, infer _> ? Env : never, R extends Route<infer _, infer E> ? E : never> =
238
+ ) => Router<R extends Route<infer E, infer _> ? E : never, R extends Route<infer _, infer Env> ? Env : never> =
236
239
  internal.fromIterable
237
240
 
238
241
  /**
239
242
  * @since 1.0.0
240
243
  * @category constructors
241
244
  */
242
- export const makeRoute: <R, E>(
245
+ export const makeRoute: <E, R>(
243
246
  method: Method.Method,
244
247
  path: PathInput,
245
- handler: Route.Handler<R, E>,
246
- prefix?: Option.Option<string>
247
- ) => Route<Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E> = internal.makeRoute
248
+ handler: Route.Handler<E, R>,
249
+ prefix?: Option.Option<string>,
250
+ uninterruptible?: boolean
251
+ ) => Route<E, Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>> = internal.makeRoute
248
252
 
249
253
  /**
250
254
  * @since 1.0.0
251
255
  * @category combinators
252
256
  */
253
257
  export const prefixAll: {
254
- (prefix: PathInput): <R, E>(self: Router<R, E>) => Router<R, E>
255
- <R, E>(self: Router<R, E>, prefix: PathInput): Router<R, E>
258
+ (prefix: PathInput): <R, E>(self: Router<E, R>) => Router<E, R>
259
+ <R, E>(self: Router<E, R>, prefix: PathInput): Router<E, R>
256
260
  } = internal.prefixAll
257
261
 
258
262
  /**
@@ -260,12 +264,12 @@ export const prefixAll: {
260
264
  * @category combinators
261
265
  */
262
266
  export const concat: {
263
- <R1, E1>(that: Router<R1, E1>): <R, E>(
264
- self: Router<R, E>
265
- ) => Router<R1 | R, E1 | E>
266
- <R, E, R1, E1>(self: Router<R, E>, that: Router<R1, E1>): Router<
267
- R | R1,
268
- E | E1
267
+ <R1, E1>(that: Router<E1, R1>): <R, E>(
268
+ self: Router<E, R>
269
+ ) => Router<E1 | E, R1 | R>
270
+ <R, E, R1, E1>(self: Router<E, R>, that: Router<E1, R1>): Router<
271
+ E | E1,
272
+ R | R1
269
273
  >
270
274
  } = internal.concat
271
275
 
@@ -274,8 +278,8 @@ export const concat: {
274
278
  * @category routing
275
279
  */
276
280
  export const mount: {
277
- <R1, E1>(path: `/${string}`, that: Router<R1, E1>): <R, E>(self: Router<R, E>) => Router<R1 | R, E1 | E>
278
- <R, E, R1, E1>(self: Router<R, E>, path: `/${string}`, that: Router<R1, E1>): Router<R | R1, E | E1>
281
+ <R1, E1>(path: `/${string}`, that: Router<E1, R1>): <R, E>(self: Router<E, R>) => Router<E1 | E, R1 | R>
282
+ <R, E, R1, E1>(self: Router<E, R>, path: `/${string}`, that: Router<E1, R1>): Router<E | E1, R | R1>
279
283
  } = internal.mount
280
284
 
281
285
  /**
@@ -285,24 +289,24 @@ export const mount: {
285
289
  export const mountApp: {
286
290
  <R1, E1>(
287
291
  path: `/${string}`,
288
- that: App.Default<R1, E1>,
292
+ that: App.Default<E1, R1>,
289
293
  options?: { readonly includePrefix?: boolean | undefined } | undefined
290
294
  ): <R, E>(
291
- self: Router<R, E>
295
+ self: Router<E, R>
292
296
  ) => Router<
297
+ E1 | E,
293
298
  | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
294
- | Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
295
- E1 | E
299
+ | Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
296
300
  >
297
301
  <R, E, R1, E1>(
298
- self: Router<R, E>,
302
+ self: Router<E, R>,
299
303
  path: `/${string}`,
300
- that: App.Default<R1, E1>,
304
+ that: App.Default<E1, R1>,
301
305
  options?: { readonly includePrefix?: boolean | undefined } | undefined
302
306
  ): Router<
307
+ E | E1,
303
308
  | Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
304
- | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
305
- E | E1
309
+ | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
306
310
  >
307
311
  } = internal.mountApp
308
312
 
@@ -315,15 +319,17 @@ export const route: (
315
319
  ) => {
316
320
  <R1, E1>(
317
321
  path: PathInput,
318
- handler: Route.Handler<R1, E1>
322
+ handler: Route.Handler<E1, R1>,
323
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
319
324
  ): <R, E>(
320
- self: Router<R, E>
321
- ) => Router<R | Exclude<R1, ServerRequest.ServerRequest | RouteContext | Scope.Scope>, E1 | E>
325
+ self: Router<E, R>
326
+ ) => Router<E1 | E, R | Exclude<R1, ServerRequest.ServerRequest | RouteContext | Scope.Scope>>
322
327
  <R, E, R1, E1>(
323
- self: Router<R, E>,
328
+ self: Router<E, R>,
324
329
  path: PathInput,
325
- handler: Route.Handler<R1, E1>
326
- ): Router<R | Exclude<R1, ServerRequest.ServerRequest | RouteContext | Scope.Scope>, E | E1>
330
+ handler: Route.Handler<E1, R1>,
331
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
332
+ ): Router<E | E1, R | Exclude<R1, ServerRequest.ServerRequest | RouteContext | Scope.Scope>>
327
333
  } = internal.route
328
334
 
329
335
  /**
@@ -333,15 +339,17 @@ export const route: (
333
339
  export const all: {
334
340
  <R1, E1>(
335
341
  path: PathInput,
336
- handler: Route.Handler<R1, E1>
342
+ handler: Route.Handler<E1, R1>,
343
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
337
344
  ): <R, E>(
338
- self: Router<R, E>
339
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
345
+ self: Router<E, R>
346
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
340
347
  <R, E, R1, E1>(
341
- self: Router<R, E>,
348
+ self: Router<E, R>,
342
349
  path: PathInput,
343
- handler: Route.Handler<R1, E1>
344
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
350
+ handler: Route.Handler<E1, R1>,
351
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
352
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
345
353
  } = internal.all
346
354
 
347
355
  /**
@@ -351,15 +359,17 @@ export const all: {
351
359
  export const get: {
352
360
  <R1, E1>(
353
361
  path: PathInput,
354
- handler: Route.Handler<R1, E1>
362
+ handler: Route.Handler<E1, R1>,
363
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
355
364
  ): <R, E>(
356
- self: Router<R, E>
357
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
365
+ self: Router<E, R>
366
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
358
367
  <R, E, R1, E1>(
359
- self: Router<R, E>,
368
+ self: Router<E, R>,
360
369
  path: PathInput,
361
- handler: Route.Handler<R1, E1>
362
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
370
+ handler: Route.Handler<E1, R1>,
371
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
372
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
363
373
  } = internal.get
364
374
 
365
375
  /**
@@ -369,15 +379,17 @@ export const get: {
369
379
  export const post: {
370
380
  <R1, E1>(
371
381
  path: PathInput,
372
- handler: Route.Handler<R1, E1>
382
+ handler: Route.Handler<E1, R1>,
383
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
373
384
  ): <R, E>(
374
- self: Router<R, E>
375
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
385
+ self: Router<E, R>
386
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
376
387
  <R, E, R1, E1>(
377
- self: Router<R, E>,
388
+ self: Router<E, R>,
378
389
  path: PathInput,
379
- handler: Route.Handler<R1, E1>
380
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
390
+ handler: Route.Handler<E1, R1>,
391
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
392
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
381
393
  } = internal.post
382
394
 
383
395
  /**
@@ -387,15 +399,17 @@ export const post: {
387
399
  export const patch: {
388
400
  <R1, E1>(
389
401
  path: PathInput,
390
- handler: Route.Handler<R1, E1>
402
+ handler: Route.Handler<E1, R1>,
403
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
391
404
  ): <R, E>(
392
- self: Router<R, E>
393
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
405
+ self: Router<E, R>
406
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
394
407
  <R, E, R1, E1>(
395
- self: Router<R, E>,
408
+ self: Router<E, R>,
396
409
  path: PathInput,
397
- handler: Route.Handler<R1, E1>
398
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
410
+ handler: Route.Handler<E1, R1>,
411
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
412
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
399
413
  } = internal.patch
400
414
 
401
415
  /**
@@ -405,15 +419,17 @@ export const patch: {
405
419
  export const put: {
406
420
  <R1, E1>(
407
421
  path: PathInput,
408
- handler: Route.Handler<R1, E1>
422
+ handler: Route.Handler<E1, R1>,
423
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
409
424
  ): <R, E>(
410
- self: Router<R, E>
411
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
425
+ self: Router<E, R>
426
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
412
427
  <R, E, R1, E1>(
413
- self: Router<R, E>,
428
+ self: Router<E, R>,
414
429
  path: PathInput,
415
- handler: Route.Handler<R1, E1>
416
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
430
+ handler: Route.Handler<E1, R1>,
431
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
432
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
417
433
  } = internal.put
418
434
 
419
435
  /**
@@ -423,15 +439,17 @@ export const put: {
423
439
  export const del: {
424
440
  <R1, E1>(
425
441
  path: PathInput,
426
- handler: Route.Handler<R1, E1>
442
+ handler: Route.Handler<E1, R1>,
443
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
427
444
  ): <R, E>(
428
- self: Router<R, E>
429
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
445
+ self: Router<E, R>
446
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
430
447
  <R, E, R1, E1>(
431
- self: Router<R, E>,
448
+ self: Router<E, R>,
432
449
  path: PathInput,
433
- handler: Route.Handler<R1, E1>
434
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
450
+ handler: Route.Handler<E1, R1>,
451
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
452
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
435
453
  } = internal.del
436
454
 
437
455
  /**
@@ -441,15 +459,17 @@ export const del: {
441
459
  export const head: {
442
460
  <R1, E1>(
443
461
  path: PathInput,
444
- handler: Route.Handler<R1, E1>
462
+ handler: Route.Handler<E1, R1>,
463
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
445
464
  ): <R, E>(
446
- self: Router<R, E>
447
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
465
+ self: Router<E, R>
466
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
448
467
  <R, E, R1, E1>(
449
- self: Router<R, E>,
468
+ self: Router<E, R>,
450
469
  path: PathInput,
451
- handler: Route.Handler<R1, E1>
452
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
470
+ handler: Route.Handler<E1, R1>,
471
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
472
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
453
473
  } = internal.head
454
474
 
455
475
  /**
@@ -459,15 +479,17 @@ export const head: {
459
479
  export const options: {
460
480
  <R1, E1>(
461
481
  path: PathInput,
462
- handler: Route.Handler<R1, E1>
482
+ handler: Route.Handler<E1, R1>,
483
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
463
484
  ): <R, E>(
464
- self: Router<R, E>
465
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
485
+ self: Router<E, R>
486
+ ) => Router<E1 | E, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
466
487
  <R, E, R1, E1>(
467
- self: Router<R, E>,
488
+ self: Router<E, R>,
468
489
  path: PathInput,
469
- handler: Route.Handler<R1, E1>
470
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
490
+ handler: Route.Handler<E1, R1>,
491
+ options?: { readonly uninterruptible?: boolean | undefined } | undefined
492
+ ): Router<E | E1, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
471
493
  } = internal.options
472
494
 
473
495
  /**
@@ -475,13 +497,13 @@ export const options: {
475
497
  * @category combinators
476
498
  */
477
499
  export const use: {
478
- <R, E, R1, E1>(
479
- f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
480
- ): (self: Router<R, E>) => Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1>
481
- <R, E, R1, E1>(
482
- self: Router<R, E>,
483
- f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
484
- ): Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1>
500
+ <E, R, R1, E1>(
501
+ f: (self: Route.Handler<E, R>) => App.Default<E1, R1>
502
+ ): (self: Router<E, R>) => Router<E1, Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
503
+ <E, R, R1, E1>(
504
+ self: Router<E, R>,
505
+ f: (self: Route.Handler<E, R>) => App.Default<E1, R1>
506
+ ): Router<E1, Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
485
507
  } = internal.use
486
508
 
487
509
  /**
@@ -489,13 +511,13 @@ export const use: {
489
511
  * @category combinators
490
512
  */
491
513
  export const catchAll: {
492
- <E, R2, E2>(
493
- f: (e: E) => Route.Handler<R2, E2>
494
- ): <R>(self: Router<R, E>) => Router<R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E2>
495
- <R, E, R2, E2>(
496
- self: Router<R, E>,
497
- f: (e: E) => Route.Handler<R2, E2>
498
- ): Router<R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E2>
514
+ <E, E2, R2>(
515
+ f: (e: E) => Route.Handler<E2, R2>
516
+ ): <R>(self: Router<E, R>) => Router<E2, R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
517
+ <R, E, E2, R2>(
518
+ self: Router<E, R>,
519
+ f: (e: E) => Route.Handler<E2, R2>
520
+ ): Router<E2, R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
499
521
  } = internal.catchAll
500
522
 
501
523
  /**
@@ -503,13 +525,13 @@ export const catchAll: {
503
525
  * @category combinators
504
526
  */
505
527
  export const catchAllCause: {
506
- <E, R2, E2>(
507
- f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
508
- ): <R>(self: Router<R, E>) => Router<R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E2>
509
- <R, E, R2, E2>(
510
- self: Router<R, E>,
511
- f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
512
- ): Router<R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E2>
528
+ <E, E2, R2>(
529
+ f: (e: Cause.Cause<E>) => Route.Handler<E2, R2>
530
+ ): <R>(self: Router<E, R>) => Router<E2, R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
531
+ <R, E, E2, R2>(
532
+ self: Router<E, R>,
533
+ f: (e: Cause.Cause<E>) => Route.Handler<E2, R2>
534
+ ): Router<E2, R | Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
513
535
  } = internal.catchAllCause
514
536
 
515
537
  /**
@@ -517,17 +539,17 @@ export const catchAllCause: {
517
539
  * @category combinators
518
540
  */
519
541
  export const catchTag: {
520
- <K extends E extends { _tag: string } ? E["_tag"] : never, E, R1, E1>(
542
+ <K extends E extends { _tag: string } ? E["_tag"] : never, E, E1, R1>(
521
543
  k: K,
522
- f: (e: Extract<E, { _tag: K }>) => Route.Handler<R1, E1>
544
+ f: (e: Extract<E, { _tag: K }>) => Route.Handler<E1, R1>
523
545
  ): <R>(
524
- self: Router<R, E>
525
- ) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | Exclude<E, { _tag: K }>>
526
- <R, E, K extends E extends { _tag: string } ? E["_tag"] : never, R1, E1>(
527
- self: Router<R, E>,
546
+ self: Router<E, R>
547
+ ) => Router<E1 | Exclude<E, { _tag: K }>, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
548
+ <R, E, K extends E extends { _tag: string } ? E["_tag"] : never, E1, R1>(
549
+ self: Router<E, R>,
528
550
  k: K,
529
- f: (e: Extract<E, { _tag: K }>) => Route.Handler<R1, E1>
530
- ): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | Exclude<E, { _tag: K }>>
551
+ f: (e: Extract<E, { _tag: K }>) => Route.Handler<E1, R1>
552
+ ): Router<E1 | Exclude<E, { _tag: K }>, R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>>
531
553
  } = internal.catchTag
532
554
 
533
555
  /**
@@ -543,19 +565,19 @@ export const catchTags: {
543
565
  >(
544
566
  cases: Cases
545
567
  ): <R>(
546
- self: Router<R, E>
568
+ self: Router<E, R>
547
569
  ) => Router<
570
+ | Exclude<E, { _tag: keyof Cases }>
571
+ | {
572
+ [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
573
+ }[keyof Cases],
548
574
  | R
549
575
  | Exclude<
550
576
  {
551
577
  [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer R> ? R : never
552
578
  }[keyof Cases],
553
579
  RouteContext | ServerRequest.ServerRequest | Scope.Scope
554
- >,
555
- | Exclude<E, { _tag: keyof Cases }>
556
- | {
557
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
558
- }[keyof Cases]
580
+ >
559
581
  >
560
582
  <
561
583
  R,
@@ -564,20 +586,20 @@ export const catchTags: {
564
586
  ? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined } :
565
587
  {}
566
588
  >(
567
- self: Router<R, E>,
589
+ self: Router<E, R>,
568
590
  cases: Cases
569
591
  ): Router<
592
+ | Exclude<E, { _tag: keyof Cases }>
593
+ | {
594
+ [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
595
+ }[keyof Cases],
570
596
  | R
571
597
  | Exclude<
572
598
  {
573
599
  [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer R> ? R : never
574
600
  }[keyof Cases],
575
601
  RouteContext | ServerRequest.ServerRequest | Scope.Scope
576
- >,
577
- | Exclude<E, { _tag: keyof Cases }>
578
- | {
579
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
580
- }[keyof Cases]
602
+ >
581
603
  >
582
604
  } = internal.catchTags
583
605
 
@@ -589,12 +611,12 @@ export const provideService: {
589
611
  <T extends Context.Tag<any, any>>(
590
612
  tag: T,
591
613
  service: Context.Tag.Service<T>
592
- ): <R, E>(self: Router<R, E>) => Router<Exclude<R, Context.Tag.Identifier<T>>, E>
614
+ ): <R, E>(self: Router<E, R>) => Router<E, Exclude<R, Context.Tag.Identifier<T>>>
593
615
  <R, E, T extends Context.Tag<any, any>>(
594
- self: Router<R, E>,
616
+ self: Router<E, R>,
595
617
  tag: T,
596
618
  service: Context.Tag.Service<T>
597
- ): Router<Exclude<R, Context.Tag.Identifier<T>>, E>
619
+ ): Router<E, Exclude<R, Context.Tag.Identifier<T>>>
598
620
  } = internal.provideService
599
621
 
600
622
  /**
@@ -606,26 +628,19 @@ export const provideServiceEffect: {
606
628
  tag: T,
607
629
  effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
608
630
  ): <R, E>(
609
- self: Router<R, E>
631
+ self: Router<E, R>
610
632
  ) => Router<
633
+ E1 | E,
611
634
  | Exclude<R, Context.Tag.Identifier<T>>
612
- | Exclude<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, Context.Tag.Identifier<T>>,
613
- E1 | E
635
+ | Exclude<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, Context.Tag.Identifier<T>>
614
636
  >
615
637
  <R, E, T extends Context.Tag<any, any>, R1, E1>(
616
- self: Router<R, E>,
638
+ self: Router<E, R>,
617
639
  tag: T,
618
640
  effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
619
641
  ): Router<
642
+ E | E1,
620
643
  | Exclude<R, Context.Tag.Identifier<T>>
621
- | Exclude<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, Context.Tag.Identifier<T>>,
622
- E | E1
644
+ | Exclude<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, Context.Tag.Identifier<T>>
623
645
  >
624
646
  } = internal.provideServiceEffect
625
-
626
- /**
627
- * @since 1.0.0
628
- * @category combinators
629
- */
630
- export const uninterruptible: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R> =
631
- internal.uninterruptible
@@ -29,14 +29,14 @@ export type TypeId = typeof TypeId
29
29
  export interface Server {
30
30
  readonly [TypeId]: TypeId
31
31
  readonly serve: {
32
- <R, E>(httpApp: App.Default<R, E>): Effect.Effect<
32
+ <R, E>(httpApp: App.Default<E, R>): Effect.Effect<
33
33
  void,
34
34
  never,
35
35
  Exclude<R, ServerRequest.ServerRequest> | Scope.Scope
36
36
  >
37
37
  <R, E, App extends App.Default<any, any>>(
38
- httpApp: App.Default<R, E>,
39
- middleware: Middleware.Middleware.Applied<R, E, App>
38
+ httpApp: App.Default<E, R>,
39
+ middleware: Middleware.Middleware.Applied<App, E, R>
40
40
  ): Effect.Effect<
41
41
  void,
42
42
  never,
@@ -92,7 +92,7 @@ export const Server: Context.Tag<Server, Server> = internal.serverTag
92
92
  export const make: (
93
93
  options: {
94
94
  readonly serve: (
95
- httpApp: App.Default<never, unknown>,
95
+ httpApp: App.Default<unknown>,
96
96
  middleware?: Middleware.Middleware
97
97
  ) => Effect.Effect<void, never, Scope.Scope>
98
98
  readonly address: Address
@@ -105,23 +105,23 @@ export const make: (
105
105
  */
106
106
  export const serve: {
107
107
  (): <R, E>(
108
- httpApp: App.Default<R, E>
108
+ httpApp: App.Default<E, R>
109
109
  ) => Layer.Layer<never, never, Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
110
110
  <R, E, App extends App.Default<any, any>>(
111
- middleware: Middleware.Middleware.Applied<R, E, App>
111
+ middleware: Middleware.Middleware.Applied<App, E, R>
112
112
  ): (
113
- httpApp: App.Default<R, E>
113
+ httpApp: App.Default<E, R>
114
114
  ) => Layer.Layer<
115
115
  never,
116
116
  never,
117
117
  Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>
118
118
  >
119
119
  <R, E>(
120
- httpApp: App.Default<R, E>
120
+ httpApp: App.Default<E, R>
121
121
  ): Layer.Layer<never, never, Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
122
122
  <R, E, App extends App.Default<any, any>>(
123
- httpApp: App.Default<R, E>,
124
- middleware: Middleware.Middleware.Applied<R, E, App>
123
+ httpApp: App.Default<E, R>,
124
+ middleware: Middleware.Middleware.Applied<App, E, R>
125
125
  ): Layer.Layer<never, never, Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>>
126
126
  } = internal.serve
127
127
 
@@ -131,23 +131,23 @@ export const serve: {
131
131
  */
132
132
  export const serveEffect: {
133
133
  (): <R, E>(
134
- httpApp: App.Default<R, E>
134
+ httpApp: App.Default<E, R>
135
135
  ) => Effect.Effect<void, never, Scope.Scope | Server | Exclude<R, ServerRequest.ServerRequest>>
136
136
  <R, E, App extends App.Default<any, any>>(
137
- middleware: Middleware.Middleware.Applied<R, E, App>
137
+ middleware: Middleware.Middleware.Applied<App, E, R>
138
138
  ): (
139
- httpApp: App.Default<R, E>
139
+ httpApp: App.Default<E, R>
140
140
  ) => Effect.Effect<
141
141
  void,
142
142
  never,
143
143
  Scope.Scope | Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>
144
144
  >
145
145
  <R, E>(
146
- httpApp: App.Default<R, E>
146
+ httpApp: App.Default<E, R>
147
147
  ): Effect.Effect<void, never, Scope.Scope | Server | Exclude<R, ServerRequest.ServerRequest>>
148
148
  <R, E, App extends App.Default<any, any>>(
149
- httpApp: App.Default<R, E>,
150
- middleware: Middleware.Middleware.Applied<R, E, App>
149
+ httpApp: App.Default<E, R>,
150
+ middleware: Middleware.Middleware.Applied<App, E, R>
151
151
  ): Effect.Effect<void, never, Scope.Scope | Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>>
152
152
  } = internal.serveEffect
153
153
 
@@ -8,7 +8,7 @@ import type { Channel } from "effect/Channel"
8
8
  import type { Chunk } from "effect/Chunk"
9
9
  import type * as Context from "effect/Context"
10
10
  import type * as Effect from "effect/Effect"
11
- import type { ReadonlyRecord } from "effect/ReadonlyRecord"
11
+ import type { ReadonlyRecord } from "effect/Record"
12
12
  import type * as Scope from "effect/Scope"
13
13
  import type * as Stream from "effect/Stream"
14
14
  import type * as FileSystem from "../FileSystem.js"