@effect/platform 0.48.29 → 0.49.1

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