@effect/platform 0.43.11 → 0.44.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 (235) hide show
  1. package/dist/cjs/Error.js +4 -0
  2. package/dist/cjs/Error.js.map +1 -1
  3. package/dist/cjs/Http/App.js.map +1 -1
  4. package/dist/cjs/Http/Body.js.map +1 -1
  5. package/dist/cjs/Http/Client.js.map +1 -1
  6. package/dist/cjs/Http/ClientError.js +4 -0
  7. package/dist/cjs/Http/ClientError.js.map +1 -1
  8. package/dist/cjs/Http/ClientResponse.js.map +1 -1
  9. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  10. package/dist/cjs/Http/Multipart.js.map +1 -1
  11. package/dist/cjs/Http/Server.js +26 -1
  12. package/dist/cjs/Http/Server.js.map +1 -1
  13. package/dist/cjs/Http/ServerError.js.map +1 -1
  14. package/dist/cjs/Http/ServerResponse.js.map +1 -1
  15. package/dist/cjs/HttpServer.js +7 -1
  16. package/dist/cjs/HttpServer.js.map +1 -1
  17. package/dist/cjs/KeyValueStore.js.map +1 -1
  18. package/dist/cjs/Path.js.map +1 -1
  19. package/dist/cjs/Transferable.js +51 -48
  20. package/dist/cjs/Transferable.js.map +1 -1
  21. package/dist/cjs/Worker.js +6 -1
  22. package/dist/cjs/Worker.js.map +1 -1
  23. package/dist/cjs/WorkerError.js +4 -0
  24. package/dist/cjs/WorkerError.js.map +1 -1
  25. package/dist/cjs/index.js +62 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/cjs/internal/commandExecutor.js +1 -1
  28. package/dist/cjs/internal/commandExecutor.js.map +1 -1
  29. package/dist/cjs/internal/effectify.js.map +1 -1
  30. package/dist/cjs/internal/fileSystem.js +1 -1
  31. package/dist/cjs/internal/fileSystem.js.map +1 -1
  32. package/dist/cjs/internal/http/body.js.map +1 -1
  33. package/dist/cjs/internal/http/client.js +2 -2
  34. package/dist/cjs/internal/http/client.js.map +1 -1
  35. package/dist/cjs/internal/http/etag.js +1 -1
  36. package/dist/cjs/internal/http/etag.js.map +1 -1
  37. package/dist/cjs/internal/http/multipart.js.map +1 -1
  38. package/dist/cjs/internal/http/platform.js +1 -1
  39. package/dist/cjs/internal/http/platform.js.map +1 -1
  40. package/dist/cjs/internal/http/router.js +1 -1
  41. package/dist/cjs/internal/http/router.js.map +1 -1
  42. package/dist/cjs/internal/http/server.js +23 -2
  43. package/dist/cjs/internal/http/server.js.map +1 -1
  44. package/dist/cjs/internal/http/serverRequest.js +1 -1
  45. package/dist/cjs/internal/http/serverRequest.js.map +1 -1
  46. package/dist/cjs/internal/http/serverResponse.js.map +1 -1
  47. package/dist/cjs/internal/keyValueStore.js +2 -2
  48. package/dist/cjs/internal/keyValueStore.js.map +1 -1
  49. package/dist/cjs/internal/path.js +9 -4
  50. package/dist/cjs/internal/path.js.map +1 -1
  51. package/dist/cjs/internal/terminal.js +1 -1
  52. package/dist/cjs/internal/terminal.js.map +1 -1
  53. package/dist/cjs/internal/worker.js +16 -12
  54. package/dist/cjs/internal/worker.js.map +1 -1
  55. package/dist/cjs/internal/workerError.js.map +1 -1
  56. package/dist/cjs/internal/workerRunner.js +15 -12
  57. package/dist/cjs/internal/workerRunner.js.map +1 -1
  58. package/dist/dts/Command.d.ts +9 -9
  59. package/dist/dts/Command.d.ts.map +1 -1
  60. package/dist/dts/CommandExecutor.d.ts +13 -13
  61. package/dist/dts/CommandExecutor.d.ts.map +1 -1
  62. package/dist/dts/Effectify.d.ts +55 -55
  63. package/dist/dts/Effectify.d.ts.map +1 -1
  64. package/dist/dts/Error.d.ts +2 -6
  65. package/dist/dts/Error.d.ts.map +1 -1
  66. package/dist/dts/FileSystem.d.ts +35 -35
  67. package/dist/dts/FileSystem.d.ts.map +1 -1
  68. package/dist/dts/Http/App.d.ts +5 -5
  69. package/dist/dts/Http/App.d.ts.map +1 -1
  70. package/dist/dts/Http/Body.d.ts +10 -11
  71. package/dist/dts/Http/Body.d.ts.map +1 -1
  72. package/dist/dts/Http/Client.d.ts +32 -32
  73. package/dist/dts/Http/Client.d.ts.map +1 -1
  74. package/dist/dts/Http/ClientError.d.ts +2 -6
  75. package/dist/dts/Http/ClientError.d.ts.map +1 -1
  76. package/dist/dts/Http/ClientRequest.d.ts +16 -16
  77. package/dist/dts/Http/ClientRequest.d.ts.map +1 -1
  78. package/dist/dts/Http/ClientResponse.d.ts +3 -3
  79. package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
  80. package/dist/dts/Http/Etag.d.ts +2 -2
  81. package/dist/dts/Http/Etag.d.ts.map +1 -1
  82. package/dist/dts/Http/IncomingMessage.d.ts +10 -10
  83. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  84. package/dist/dts/Http/Middleware.d.ts +3 -3
  85. package/dist/dts/Http/Multipart.d.ts +18 -19
  86. package/dist/dts/Http/Multipart.d.ts.map +1 -1
  87. package/dist/dts/Http/Multiplex.d.ts +4 -4
  88. package/dist/dts/Http/Multiplex.d.ts.map +1 -1
  89. package/dist/dts/Http/Platform.d.ts +3 -3
  90. package/dist/dts/Http/Platform.d.ts.map +1 -1
  91. package/dist/dts/Http/Router.d.ts +10 -10
  92. package/dist/dts/Http/Router.d.ts.map +1 -1
  93. package/dist/dts/Http/Server.d.ts +39 -14
  94. package/dist/dts/Http/Server.d.ts.map +1 -1
  95. package/dist/dts/Http/ServerError.d.ts +2 -3
  96. package/dist/dts/Http/ServerError.d.ts.map +1 -1
  97. package/dist/dts/Http/ServerRequest.d.ts +9 -9
  98. package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
  99. package/dist/dts/Http/ServerResponse.d.ts +7 -7
  100. package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
  101. package/dist/dts/Http/UrlParams.d.ts +4 -4
  102. package/dist/dts/HttpServer.d.ts +24 -0
  103. package/dist/dts/HttpServer.d.ts.map +1 -1
  104. package/dist/dts/KeyValueStore.d.ts +21 -21
  105. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  106. package/dist/dts/Path.d.ts +3 -3
  107. package/dist/dts/Path.d.ts.map +1 -1
  108. package/dist/dts/Runtime.d.ts +1 -1
  109. package/dist/dts/Runtime.d.ts.map +1 -1
  110. package/dist/dts/Terminal.d.ts +5 -5
  111. package/dist/dts/Terminal.d.ts.map +1 -1
  112. package/dist/dts/Transferable.d.ts +35 -13
  113. package/dist/dts/Transferable.d.ts.map +1 -1
  114. package/dist/dts/Worker.d.ts +58 -41
  115. package/dist/dts/Worker.d.ts.map +1 -1
  116. package/dist/dts/WorkerError.d.ts +3 -7
  117. package/dist/dts/WorkerError.d.ts.map +1 -1
  118. package/dist/dts/WorkerRunner.d.ts +13 -13
  119. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  120. package/dist/dts/index.d.ts +61 -0
  121. package/dist/dts/index.d.ts.map +1 -0
  122. package/dist/esm/Error.js +3 -0
  123. package/dist/esm/Error.js.map +1 -1
  124. package/dist/esm/Http/App.js.map +1 -1
  125. package/dist/esm/Http/Body.js.map +1 -1
  126. package/dist/esm/Http/Client.js.map +1 -1
  127. package/dist/esm/Http/ClientError.js +3 -0
  128. package/dist/esm/Http/ClientError.js.map +1 -1
  129. package/dist/esm/Http/ClientResponse.js.map +1 -1
  130. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  131. package/dist/esm/Http/Multipart.js.map +1 -1
  132. package/dist/esm/Http/Server.js +25 -0
  133. package/dist/esm/Http/Server.js.map +1 -1
  134. package/dist/esm/Http/ServerError.js.map +1 -1
  135. package/dist/esm/Http/ServerResponse.js.map +1 -1
  136. package/dist/esm/HttpServer.js +24 -0
  137. package/dist/esm/HttpServer.js.map +1 -1
  138. package/dist/esm/KeyValueStore.js.map +1 -1
  139. package/dist/esm/Path.js.map +1 -1
  140. package/dist/esm/Transferable.js +48 -45
  141. package/dist/esm/Transferable.js.map +1 -1
  142. package/dist/esm/Worker.js +5 -0
  143. package/dist/esm/Worker.js.map +1 -1
  144. package/dist/esm/WorkerError.js +3 -0
  145. package/dist/esm/WorkerError.js.map +1 -1
  146. package/dist/esm/index.js +61 -0
  147. package/dist/esm/index.js.map +1 -0
  148. package/dist/esm/internal/commandExecutor.js +2 -2
  149. package/dist/esm/internal/commandExecutor.js.map +1 -1
  150. package/dist/esm/internal/effectify.js.map +1 -1
  151. package/dist/esm/internal/fileSystem.js +2 -2
  152. package/dist/esm/internal/fileSystem.js.map +1 -1
  153. package/dist/esm/internal/http/body.js.map +1 -1
  154. package/dist/esm/internal/http/client.js +2 -2
  155. package/dist/esm/internal/http/client.js.map +1 -1
  156. package/dist/esm/internal/http/etag.js +1 -1
  157. package/dist/esm/internal/http/etag.js.map +1 -1
  158. package/dist/esm/internal/http/multipart.js.map +1 -1
  159. package/dist/esm/internal/http/platform.js +1 -1
  160. package/dist/esm/internal/http/platform.js.map +1 -1
  161. package/dist/esm/internal/http/router.js +1 -1
  162. package/dist/esm/internal/http/router.js.map +1 -1
  163. package/dist/esm/internal/http/server.js +18 -1
  164. package/dist/esm/internal/http/server.js.map +1 -1
  165. package/dist/esm/internal/http/serverRequest.js +1 -1
  166. package/dist/esm/internal/http/serverRequest.js.map +1 -1
  167. package/dist/esm/internal/http/serverResponse.js.map +1 -1
  168. package/dist/esm/internal/keyValueStore.js +2 -2
  169. package/dist/esm/internal/keyValueStore.js.map +1 -1
  170. package/dist/esm/internal/path.js +3 -3
  171. package/dist/esm/internal/path.js.map +1 -1
  172. package/dist/esm/internal/terminal.js +2 -2
  173. package/dist/esm/internal/terminal.js.map +1 -1
  174. package/dist/esm/internal/worker.js +14 -11
  175. package/dist/esm/internal/worker.js.map +1 -1
  176. package/dist/esm/internal/workerError.js.map +1 -1
  177. package/dist/esm/internal/workerRunner.js +15 -12
  178. package/dist/esm/internal/workerRunner.js.map +1 -1
  179. package/package.json +11 -3
  180. package/src/Command.ts +9 -9
  181. package/src/CommandExecutor.ts +13 -13
  182. package/src/Effectify.ts +55 -55
  183. package/src/Error.ts +2 -3
  184. package/src/FileSystem.ts +35 -35
  185. package/src/Http/App.ts +5 -5
  186. package/src/Http/Body.ts +12 -13
  187. package/src/Http/Client.ts +37 -37
  188. package/src/Http/ClientError.ts +2 -3
  189. package/src/Http/ClientRequest.ts +17 -17
  190. package/src/Http/ClientResponse.ts +8 -5
  191. package/src/Http/Etag.ts +2 -2
  192. package/src/Http/IncomingMessage.ts +27 -23
  193. package/src/Http/Middleware.ts +4 -4
  194. package/src/Http/Multipart.ts +22 -25
  195. package/src/Http/Multiplex.ts +4 -4
  196. package/src/Http/Platform.ts +3 -3
  197. package/src/Http/Router.ts +16 -16
  198. package/src/Http/Server.ts +53 -18
  199. package/src/Http/ServerError.ts +2 -3
  200. package/src/Http/ServerRequest.ts +22 -22
  201. package/src/Http/ServerResponse.ts +9 -10
  202. package/src/Http/UrlParams.ts +6 -6
  203. package/src/HttpServer.ts +24 -0
  204. package/src/KeyValueStore.ts +23 -23
  205. package/src/Path.ts +3 -3
  206. package/src/Runtime.ts +1 -1
  207. package/src/Terminal.ts +4 -4
  208. package/src/Transferable.ts +88 -70
  209. package/src/Worker.ts +73 -57
  210. package/src/WorkerError.ts +3 -4
  211. package/src/WorkerRunner.ts +21 -21
  212. package/src/index.ts +74 -0
  213. package/src/internal/command.ts +7 -7
  214. package/src/internal/commandExecutor.ts +3 -3
  215. package/src/internal/effectify.ts +1 -1
  216. package/src/internal/fileSystem.ts +3 -3
  217. package/src/internal/http/body.ts +12 -12
  218. package/src/internal/http/client.ts +42 -46
  219. package/src/internal/http/clientRequest.ts +15 -15
  220. package/src/internal/http/clientResponse.ts +18 -18
  221. package/src/internal/http/etag.ts +1 -1
  222. package/src/internal/http/middleware.ts +4 -4
  223. package/src/internal/http/multipart.ts +32 -39
  224. package/src/internal/http/multiplex.ts +5 -5
  225. package/src/internal/http/platform.ts +2 -2
  226. package/src/internal/http/router.ts +14 -14
  227. package/src/internal/http/server.ts +60 -23
  228. package/src/internal/http/serverRequest.ts +24 -24
  229. package/src/internal/http/serverResponse.ts +11 -11
  230. package/src/internal/keyValueStore.ts +7 -7
  231. package/src/internal/path.ts +4 -4
  232. package/src/internal/terminal.ts +2 -2
  233. package/src/internal/worker.ts +55 -39
  234. package/src/internal/workerError.ts +1 -1
  235. package/src/internal/workerRunner.ts +55 -30
@@ -49,8 +49,8 @@ export const maxParts: FiberRef.FiberRef<Option.Option<number>> = globalValue(
49
49
 
50
50
  /** @internal */
51
51
  export const withMaxParts = dual<
52
- (count: Option.Option<number>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
53
- <R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>) => Effect.Effect<R, E, A>
52
+ (count: Option.Option<number>) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
53
+ <R, E, A>(effect: Effect.Effect<A, E, R>, count: Option.Option<number>) => Effect.Effect<A, E, R>
54
54
  >(2, (effect, count) => Effect.locally(effect, maxParts, count))
55
55
 
56
56
  /** @internal */
@@ -61,8 +61,8 @@ export const maxFieldSize: FiberRef.FiberRef<FileSystem.Size> = globalValue(
61
61
 
62
62
  /** @internal */
63
63
  export const withMaxFieldSize = dual<
64
- (size: FileSystem.SizeInput) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
65
- <R, E, A>(effect: Effect.Effect<R, E, A>, size: FileSystem.SizeInput) => Effect.Effect<R, E, A>
64
+ (size: FileSystem.SizeInput) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
65
+ <R, E, A>(effect: Effect.Effect<A, E, R>, size: FileSystem.SizeInput) => Effect.Effect<A, E, R>
66
66
  >(2, (effect, size) => Effect.locally(effect, maxFieldSize, FileSystem.Size(size)))
67
67
 
68
68
  /** @internal */
@@ -73,8 +73,8 @@ export const maxFileSize: FiberRef.FiberRef<Option.Option<FileSystem.Size>> = gl
73
73
 
74
74
  /** @internal */
75
75
  export const withMaxFileSize = dual<
76
- (size: Option.Option<FileSystem.SizeInput>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
77
- <R, E, A>(effect: Effect.Effect<R, E, A>, size: Option.Option<FileSystem.SizeInput>) => Effect.Effect<R, E, A>
76
+ (size: Option.Option<FileSystem.SizeInput>) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
77
+ <R, E, A>(effect: Effect.Effect<A, E, R>, size: Option.Option<FileSystem.SizeInput>) => Effect.Effect<A, E, R>
78
78
  >(2, (effect, size) => Effect.locally(effect, maxFileSize, Option.map(size, FileSystem.Size)))
79
79
 
80
80
  /** @internal */
@@ -85,11 +85,11 @@ export const fieldMimeTypes: FiberRef.FiberRef<Chunk.Chunk<string>> = globalValu
85
85
 
86
86
  /** @internal */
87
87
  export const withFieldMimeTypes = dual<
88
- (mimeTypes: ReadonlyArray<string>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
89
- <R, E, A>(effect: Effect.Effect<R, E, A>, mimeTypes: ReadonlyArray<string>) => Effect.Effect<R, E, A>
88
+ (mimeTypes: ReadonlyArray<string>) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
89
+ <R, E, A>(effect: Effect.Effect<A, E, R>, mimeTypes: ReadonlyArray<string>) => Effect.Effect<A, E, R>
90
90
  >(2, (effect, mimeTypes) => Effect.locally(effect, fieldMimeTypes, Chunk.fromIterable(mimeTypes)))
91
91
 
92
- const fileSchema: Schema.Schema<never, Multipart.PersistedFile, Multipart.PersistedFile> = Schema.struct({
92
+ const fileSchema: Schema.Schema<Multipart.PersistedFile> = Schema.struct({
93
93
  [TypeId]: Schema.uniqueSymbol(TypeId),
94
94
  _tag: Schema.literal("PersistedFile"),
95
95
  key: Schema.string,
@@ -99,29 +99,25 @@ const fileSchema: Schema.Schema<never, Multipart.PersistedFile, Multipart.Persis
99
99
  })
100
100
 
101
101
  /** @internal */
102
- export const filesSchema: Schema.Schema<
103
- never,
104
- ReadonlyArray<Multipart.PersistedFile>,
105
- ReadonlyArray<Multipart.PersistedFile>
106
- > = Schema.array(fileSchema)
102
+ export const filesSchema: Schema.Schema<ReadonlyArray<Multipart.PersistedFile>> = Schema.array(fileSchema)
107
103
 
108
104
  /** @internal */
109
105
  export const schemaPersisted = <R, I extends Multipart.Persisted, A>(
110
- schema: Schema.Schema<R, I, A>
106
+ schema: Schema.Schema<A, I, R>
111
107
  ) => {
112
108
  const parse = Schema.decodeUnknown(schema)
113
109
  return (persisted: Multipart.Persisted) => parse(persisted)
114
110
  }
115
111
 
116
112
  /** @internal */
117
- export const schemaJson = <R, I, A>(schema: Schema.Schema<R, I, A>): {
113
+ export const schemaJson = <A, I, R>(schema: Schema.Schema<A, I, R>): {
118
114
  (
119
115
  field: string
120
- ): (persisted: Multipart.Persisted) => Effect.Effect<R, ParseResult.ParseError, A>
116
+ ): (persisted: Multipart.Persisted) => Effect.Effect<A, ParseResult.ParseError, R>
121
117
  (
122
118
  persisted: Multipart.Persisted,
123
119
  field: string
124
- ): Effect.Effect<R, ParseResult.ParseError, A>
120
+ ): Effect.Effect<A, ParseResult.ParseError, R>
125
121
  } => {
126
122
  const fromJson = Schema.parseJson(schema)
127
123
  return dual<
@@ -129,11 +125,11 @@ export const schemaJson = <R, I, A>(schema: Schema.Schema<R, I, A>): {
129
125
  field: string
130
126
  ) => (
131
127
  persisted: Multipart.Persisted
132
- ) => Effect.Effect<R, ParseResult.ParseError, A>,
128
+ ) => Effect.Effect<A, ParseResult.ParseError, R>,
133
129
  (
134
130
  persisted: Multipart.Persisted,
135
131
  field: string
136
- ) => Effect.Effect<R, ParseResult.ParseError, A>
132
+ ) => Effect.Effect<A, ParseResult.ParseError, R>
137
133
  >(2, (persisted, field) =>
138
134
  Effect.map(
139
135
  Schema.decodeUnknown(
@@ -148,7 +144,7 @@ export const schemaJson = <R, I, A>(schema: Schema.Schema<R, I, A>): {
148
144
  /** @internal */
149
145
  export const makeConfig = (
150
146
  headers: Record<string, string>
151
- ): Effect.Effect<never, never, MP.BaseConfig> =>
147
+ ): Effect.Effect<MP.BaseConfig> =>
152
148
  Effect.map(
153
149
  Effect.all({
154
150
  maxParts: Effect.map(FiberRef.get(maxParts), Option.getOrUndefined),
@@ -177,12 +173,11 @@ export const makeChannel = <IE>(
177
173
  headers: Record<string, string>,
178
174
  bufferSize = 16
179
175
  ): Channel.Channel<
180
- never,
181
- IE,
176
+ Chunk.Chunk<Multipart.Part>,
182
177
  Chunk.Chunk<Uint8Array>,
183
- unknown,
184
178
  Multipart.MultipartError | IE,
185
- Chunk.Chunk<Multipart.Part>,
179
+ IE,
180
+ unknown,
186
181
  unknown
187
182
  > =>
188
183
  Channel.acquireUseRelease(
@@ -198,12 +193,11 @@ const makeFromQueue = <IE>(
198
193
  config: MP.BaseConfig,
199
194
  queue: Queue.Queue<Chunk.Chunk<Uint8Array> | null>
200
195
  ): Channel.Channel<
201
- never,
202
- IE,
196
+ Chunk.Chunk<Multipart.Part>,
203
197
  Chunk.Chunk<Uint8Array>,
204
- unknown,
205
198
  IE | Multipart.MultipartError,
206
- Chunk.Chunk<Multipart.Part>,
199
+ IE,
200
+ unknown,
207
201
  unknown
208
202
  > =>
209
203
  Channel.suspend(() => {
@@ -233,7 +227,7 @@ const makeFromQueue = <IE>(
233
227
  onFile(info) {
234
228
  let chunks: Array<Uint8Array> = []
235
229
  let finished = false
236
- const take: Channel.Channel<never, unknown, unknown, unknown, never, Chunk.Chunk<Uint8Array>, void> = Channel
230
+ const take: Channel.Channel<Chunk.Chunk<Uint8Array>, unknown, never, unknown, void, unknown> = Channel
237
231
  .suspend(() => {
238
232
  if (chunks.length === 0) {
239
233
  return finished ? Channel.unit : Channel.zipRight(pump, take)
@@ -289,13 +283,12 @@ const makeFromQueue = <IE>(
289
283
  )
290
284
 
291
285
  const partsChannel: Channel.Channel<
292
- never,
293
- unknown,
294
- unknown,
286
+ Chunk.Chunk<Multipart.Part>,
295
287
  unknown,
296
288
  IE | Multipart.MultipartError,
297
- Chunk.Chunk<Multipart.Part>,
298
- void
289
+ unknown,
290
+ void,
291
+ unknown
299
292
  > = Channel.suspend(() => {
300
293
  if (error._tag === "Some") {
301
294
  return Channel.failCause(error.value)
@@ -351,11 +344,11 @@ class FileImpl implements Multipart.File {
351
344
  readonly key: string
352
345
  readonly name: string
353
346
  readonly contentType: string
354
- readonly content: Stream.Stream<never, Multipart.MultipartError, Uint8Array>
347
+ readonly content: Stream.Stream<Uint8Array, Multipart.MultipartError>
355
348
 
356
349
  constructor(
357
350
  info: MP.PartInfo,
358
- channel: Channel.Channel<never, unknown, unknown, unknown, never, Chunk.Chunk<Uint8Array>, void>
351
+ channel: Channel.Channel<Chunk.Chunk<Uint8Array>, unknown, never, unknown, void, unknown>
359
352
  ) {
360
353
  this[TypeId] = TypeId
361
354
  this.key = info.name
@@ -377,9 +370,9 @@ const defaultWriteFile = (path: string, file: Multipart.File) =>
377
370
 
378
371
  /** @internal */
379
372
  export const toPersisted = (
380
- stream: Stream.Stream<never, Multipart.MultipartError, Multipart.Part>,
373
+ stream: Stream.Stream<Multipart.Part, Multipart.MultipartError>,
381
374
  writeFile = defaultWriteFile
382
- ): Effect.Effect<FileSystem.FileSystem | Path.Path | Scope.Scope, Multipart.MultipartError, Multipart.Persisted> =>
375
+ ): Effect.Effect<Multipart.Persisted, Multipart.MultipartError, FileSystem.FileSystem | Path.Path | Scope.Scope> =>
383
376
  pipe(
384
377
  Effect.Do,
385
378
  Effect.bind("fs", () => FileSystem.FileSystem),
@@ -12,7 +12,7 @@ import type * as ServerResponse from "../../Http/ServerResponse.js"
12
12
  export const TypeId: Multiplex.TypeId = Symbol.for("@effect/platform/Http/Multiplex") as Multiplex.TypeId
13
13
 
14
14
  class MultiplexImpl<R, E>
15
- extends Effectable.Class<R | ServerRequest.ServerRequest, E | Error.RouteNotFound, ServerResponse.ServerResponse>
15
+ extends Effectable.Class<ServerResponse.ServerResponse, E | Error.RouteNotFound, R | ServerRequest.ServerRequest>
16
16
  implements Multiplex.Multiplex<R, E>
17
17
  {
18
18
  readonly [TypeId]: Multiplex.TypeId
@@ -20,7 +20,7 @@ class MultiplexImpl<R, E>
20
20
  constructor(
21
21
  readonly apps: ReadonlyArray<
22
22
  readonly [
23
- predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<R, E, boolean>,
23
+ predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<boolean, E, R>,
24
24
  app: App.Default<R, E>
25
25
  ]
26
26
  >
@@ -57,19 +57,19 @@ export const empty: Multiplex.Multiplex<never, never> = new MultiplexImpl([])
57
57
  /** @internal */
58
58
  export const make = <R, E>(
59
59
  apps: Iterable<
60
- readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<R, E, boolean>, app: App.Default<R, E>]
60
+ readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<boolean, E, R>, app: App.Default<R, E>]
61
61
  >
62
62
  ): Multiplex.Multiplex<R, E> => new MultiplexImpl(ReadonlyArray.fromIterable(apps))
63
63
 
64
64
  /** @internal */
65
65
  export const add = dual<
66
66
  <R2, E2, R3, E3>(
67
- predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<R2, E2, boolean>,
67
+ predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<boolean, E2, R2>,
68
68
  app: App.Default<R3, E3>
69
69
  ) => <R, E>(self: Multiplex.Multiplex<R, E>) => Multiplex.Multiplex<R | R2 | R3, E | E2 | E3>,
70
70
  <R, E, R2, E2, R3, E3>(
71
71
  self: Multiplex.Multiplex<R, E>,
72
- predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<R2, E2, boolean>,
72
+ predicate: (request: ServerRequest.ServerRequest) => Effect.Effect<boolean, E2, R2>,
73
73
  app: App.Default<R3, E3>
74
74
  ) => Multiplex.Multiplex<R | R2 | R3, E | E2 | E3>
75
75
  >(
@@ -12,7 +12,7 @@ import type * as ServerResponse from "../../Http/ServerResponse.js"
12
12
  export const TypeId: Platform.TypeId = Symbol.for("@effect/platform/Http/Platform") as Platform.TypeId
13
13
 
14
14
  /** @internal */
15
- export const tag = Context.Tag<Platform.Platform>(TypeId)
15
+ export const tag = Context.GenericTag<Platform.Platform>("@effect/platform/Http/Platform")
16
16
 
17
17
  /** @internal */
18
18
  export const make = (impl: {
@@ -32,7 +32,7 @@ export const make = (impl: {
32
32
  headers: Headers.Headers,
33
33
  options?: FileSystem.StreamOptions
34
34
  ) => ServerResponse.ServerResponse
35
- }): Effect.Effect<FileSystem.FileSystem | Etag.Generator, never, Platform.Platform> =>
35
+ }): Effect.Effect<Platform.Platform, never, FileSystem.FileSystem | Etag.Generator> =>
36
36
  Effect.gen(function*(_) {
37
37
  const fs = yield* _(FileSystem.FileSystem)
38
38
  const etagGen = yield* _(Etag.Generator)
@@ -27,7 +27,7 @@ export const RouteContextTypeId: Router.RouteContextTypeId = Symbol.for(
27
27
  ) as Router.RouteContextTypeId
28
28
 
29
29
  /** @internal */
30
- export const RouteContext = Context.Tag<Router.RouteContext>("@effect/platform/Http/Router/RouteContext")
30
+ export const RouteContext = Context.GenericTag<Router.RouteContext>("@effect/platform/Http/Router/RouteContext")
31
31
 
32
32
  /** @internal */
33
33
  export const params = Effect.map(RouteContext, (_) => _.params)
@@ -36,29 +36,29 @@ export const params = Effect.map(RouteContext, (_) => _.params)
36
36
  export const searchParams = Effect.map(RouteContext, (_) => _.searchParams)
37
37
 
38
38
  /** @internal */
39
- export const schemaParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
39
+ export const schemaParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<A, I, R>) => {
40
40
  const parse = Schema.decodeUnknown(schema)
41
41
  return Effect.flatMap(RouteContext, (_) => parse({ ..._.searchParams, ..._.params }))
42
42
  }
43
43
 
44
44
  /** @internal */
45
- export const schemaPathParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
45
+ export const schemaPathParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<A, I, R>) => {
46
46
  const parse = Schema.decodeUnknown(schema)
47
47
  return Effect.flatMap(RouteContext, (_) => parse(_.params))
48
48
  }
49
49
 
50
50
  /** @internal */
51
51
  export const schemaSearchParams = <R, I extends Readonly<Record<string, string>>, A>(
52
- schema: Schema.Schema<R, I, A>
52
+ schema: Schema.Schema<A, I, R>
53
53
  ) => {
54
54
  const parse = Schema.decodeUnknown(schema)
55
55
  return Effect.flatMap(RouteContext, (_) => parse(_.searchParams))
56
56
  }
57
57
 
58
58
  class RouterImpl<R, E> extends Effectable.StructuralClass<
59
- Exclude<R, Router.RouteContext>,
59
+ ServerResponse.ServerResponse,
60
60
  E | Error.RouteNotFound,
61
- ServerResponse.ServerResponse
61
+ Exclude<R, Router.RouteContext>
62
62
  > implements Router.Router<R, E> {
63
63
  readonly [TypeId]: Router.TypeId
64
64
  constructor(
@@ -70,9 +70,9 @@ class RouterImpl<R, E> extends Effectable.StructuralClass<
70
70
  this.httpApp = toHttpApp(this) as any
71
71
  }
72
72
  private httpApp: Effect.Effect<
73
- Exclude<R, Router.RouteContext>,
73
+ ServerResponse.ServerResponse,
74
74
  E | Error.RouteNotFound,
75
- ServerResponse.ServerResponse
75
+ Exclude<R, Router.RouteContext>
76
76
  >
77
77
  commit() {
78
78
  return this.httpApp
@@ -134,7 +134,7 @@ const toHttpApp = <R, E>(
134
134
  request = sliceRequestUrl(request, route.prefix.value)
135
135
  }
136
136
  return Effect.mapInputContext(
137
- route.handler as Effect.Effect<Router.Router.ExcludeProvided<R>, E, ServerResponse.ServerResponse>,
137
+ route.handler as Effect.Effect<ServerResponse.ServerResponse, E, Router.Router.ExcludeProvided<R>>,
138
138
  (context) =>
139
139
  Context.add(
140
140
  Context.add(context, ServerRequest.ServerRequest, request),
@@ -387,7 +387,7 @@ export const catchTags: {
387
387
  Router.Router.ExcludeProvided<
388
388
  | R
389
389
  | {
390
- [K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer R, any, any>) ? R : never
390
+ [K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
391
391
  }[keyof Cases]
392
392
  >,
393
393
  | Exclude<E, { _tag: keyof Cases }>
@@ -409,7 +409,7 @@ export const catchTags: {
409
409
  Router.Router.ExcludeProvided<
410
410
  | R
411
411
  | {
412
- [K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<infer R, any, any>) ? R : never
412
+ [K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
413
413
  }[keyof Cases]
414
414
  >,
415
415
  | Exclude<E, { _tag: keyof Cases }>
@@ -442,7 +442,7 @@ export const provideService = dual<
442
442
  export const provideServiceEffect = dual<
443
443
  <T extends Context.Tag<any, any>, R1, E1>(
444
444
  tag: T,
445
- effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
445
+ effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
446
446
  ) => <R, E>(
447
447
  self: Router.Router<R, E>
448
448
  ) => Router.Router<
@@ -452,7 +452,7 @@ export const provideServiceEffect = dual<
452
452
  <R, E, T extends Context.Tag<any, any>, R1, E1>(
453
453
  self: Router.Router<R, E>,
454
454
  tag: T,
455
- effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
455
+ effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
456
456
  ) => Router.Router<
457
457
  Router.Router.ExcludeProvided<R1 | Exclude<R, Context.Tag.Identifier<T>>>,
458
458
  E | E1
@@ -460,5 +460,5 @@ export const provideServiceEffect = dual<
460
460
  >(3, <R, E, T extends Context.Tag<any, any>, R1, E1>(
461
461
  self: Router.Router<R, E>,
462
462
  tag: T,
463
- effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
463
+ effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
464
464
  ) => use(self, Effect.provideServiceEffect(tag, effect)))
@@ -12,7 +12,7 @@ import type * as ServerRequest from "../../Http/ServerRequest.js"
12
12
  export const TypeId: Server.TypeId = Symbol.for("@effect/platform/Http/Server") as Server.TypeId
13
13
 
14
14
  /** @internal */
15
- export const serverTag = Context.Tag<Server.Server>(TypeId)
15
+ export const serverTag = Context.GenericTag<Server.Server>("@effect/platform/Http/Server")
16
16
 
17
17
  const serverProto = {
18
18
  [TypeId]: TypeId
@@ -27,7 +27,7 @@ export const make = (
27
27
  readonly serve: (
28
28
  httpApp: App.Default<never, unknown>,
29
29
  middleware?: Middleware.Middleware
30
- ) => Effect.Effect<Scope.Scope, never, void>
30
+ ) => Effect.Effect<void, never, Scope.Scope>
31
31
  readonly address: Server.Address
32
32
  }
33
33
  ): Server.Server => Object.assign(Object.create(serverProto), options)
@@ -37,30 +37,26 @@ export const serve = dual<
37
37
  {
38
38
  (): <R, E>(
39
39
  httpApp: App.Default<R, E>
40
- ) => Layer.Layer<
41
- Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>,
42
- never,
43
- never
44
- >
40
+ ) => Layer.Layer<never, never, Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
45
41
  <R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<R, E, App>): (
46
42
  httpApp: App.Default<R, E>
47
43
  ) => Layer.Layer<
48
- Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
49
44
  never,
50
- never
45
+ never,
46
+ Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>
51
47
  >
52
48
  },
53
49
  {
54
50
  <R, E>(
55
51
  httpApp: App.Default<R, E>
56
- ): Layer.Layer<Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>, never, never>
52
+ ): Layer.Layer<never, never, Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
57
53
  <R, E, App extends App.Default<any, any>>(
58
54
  httpApp: App.Default<R, E>,
59
55
  middleware: Middleware.Middleware.Applied<R, E, App>
60
56
  ): Layer.Layer<
61
- Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
62
57
  never,
63
- never
58
+ never,
59
+ Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>
64
60
  >
65
61
  }
66
62
  >(
@@ -69,9 +65,9 @@ export const serve = dual<
69
65
  httpApp: App.Default<R, E>,
70
66
  middleware?: Middleware.Middleware.Applied<R, E, App>
71
67
  ): Layer.Layer<
72
- Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
73
68
  never,
74
- never
69
+ never,
70
+ Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>
75
71
  > =>
76
72
  Layer.scopedDiscard(
77
73
  Effect.flatMap(
@@ -87,29 +83,29 @@ export const serveEffect = dual<
87
83
  (): <R, E>(
88
84
  httpApp: App.Default<R, E>
89
85
  ) => Effect.Effect<
90
- Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>,
86
+ void,
91
87
  never,
92
- void
88
+ Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>
93
89
  >
94
90
  <R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<R, E, App>): (
95
91
  httpApp: App.Default<R, E>
96
92
  ) => Effect.Effect<
97
- Server.Server | Scope.Scope | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>,
93
+ void,
98
94
  never,
99
- void
95
+ Server.Server | Scope.Scope | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>
100
96
  >
101
97
  },
102
98
  {
103
99
  <R, E>(
104
100
  httpApp: App.Default<R, E>
105
- ): Effect.Effect<Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>, never, void>
101
+ ): Effect.Effect<void, never, Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>>
106
102
  <R, E, App extends App.Default<any, any>>(
107
103
  httpApp: App.Default<R, E>,
108
104
  middleware: Middleware.Middleware.Applied<R, E, App>
109
105
  ): Effect.Effect<
110
- Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest> | Scope.Scope,
106
+ void,
111
107
  never,
112
- void
108
+ Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest> | Scope.Scope
113
109
  >
114
110
  }
115
111
  >(
@@ -118,12 +114,53 @@ export const serveEffect = dual<
118
114
  httpApp: App.Default<R, E>,
119
115
  middleware: Middleware.Middleware.Applied<R, E, App>
120
116
  ): Effect.Effect<
121
- Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest> | Scope.Scope,
117
+ void,
122
118
  never,
123
- void
119
+ Server.Server | Exclude<R, ServerRequest.ServerRequest> | Scope.Scope
124
120
  > =>
125
121
  Effect.flatMap(
126
122
  serverTag,
127
123
  (server) => server.serve(httpApp, middleware)
128
124
  )) as any
129
125
  )
126
+
127
+ /** @internal */
128
+ export const formatAddress = (address: Server.Address): string => {
129
+ switch (address._tag) {
130
+ case "UnixAddress":
131
+ return `unix://${address.path}`
132
+ case "TcpAddress":
133
+ return `http://${address.hostname}:${address.port}`
134
+ }
135
+ }
136
+
137
+ /** @internal */
138
+ export const addressWith = <R, E, A>(
139
+ effect: (address: Server.Address) => Effect.Effect<A, E, R>
140
+ ): Effect.Effect<A, E, Server.Server | R> =>
141
+ Effect.flatMap(
142
+ serverTag,
143
+ (server) => effect(server.address)
144
+ )
145
+
146
+ /** @internal */
147
+ export const addressFormattedWith = <R, E, A>(
148
+ effect: (address: string) => Effect.Effect<A, E, R>
149
+ ): Effect.Effect<A, E, Server.Server | R> =>
150
+ Effect.flatMap(
151
+ serverTag,
152
+ (server) => effect(formatAddress(server.address))
153
+ )
154
+
155
+ /** @internal */
156
+ export const logAddress: Effect.Effect<void, never, Server.Server> = addressFormattedWith((_) =>
157
+ Effect.log(`Listening on ${_}`)
158
+ )
159
+
160
+ /** @internal */
161
+ export const withLogAddress = <R, E, A>(
162
+ layer: Layer.Layer<A, E, R>
163
+ ): Layer.Layer<A, E, R | Exclude<Server.Server, A>> =>
164
+ Layer.effectDiscard(logAddress).pipe(
165
+ Layer.provideMerge(layer)
166
+ )
@@ -19,19 +19,19 @@ import type * as Path from "../../Path.js"
19
19
  export const TypeId: ServerRequest.TypeId = Symbol.for("@effect/platform/Http/ServerRequest") as ServerRequest.TypeId
20
20
 
21
21
  /** @internal */
22
- export const serverRequestTag = Context.Tag<ServerRequest.ServerRequest>(TypeId)
22
+ export const serverRequestTag = Context.GenericTag<ServerRequest.ServerRequest>("@effect/platform/Http/ServerRequest")
23
23
 
24
24
  /** @internal */
25
25
  export const multipartPersisted = Effect.flatMap(serverRequestTag, (request) => request.multipart)
26
26
 
27
27
  /** @internal */
28
- export const schemaHeaders = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
28
+ export const schemaHeaders = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<A, I, R>) => {
29
29
  const parse = IncomingMessage.schemaHeaders(schema)
30
30
  return Effect.flatMap(serverRequestTag, parse)
31
31
  }
32
32
 
33
33
  /** @internal */
34
- export const schemaBodyJson = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
34
+ export const schemaBodyJson = <A, I, R>(schema: Schema.Schema<A, I, R>) => {
35
35
  const parse = IncomingMessage.schemaBodyJson(schema)
36
36
  return Effect.flatMap(serverRequestTag, parse)
37
37
  }
@@ -41,14 +41,14 @@ const isMultipart = (request: ServerRequest.ServerRequest) =>
41
41
 
42
42
  /** @internal */
43
43
  export const schemaBodyForm = <R, I extends Multipart.Persisted, A>(
44
- schema: Schema.Schema<R, I, A>
44
+ schema: Schema.Schema<A, I, R>
45
45
  ) => {
46
46
  const parseMultipart = Multipart.schemaPersisted(schema)
47
- const parseUrlParams = IncomingMessage.schemaBodyUrlParams(schema as Schema.Schema<R, any, A>)
47
+ const parseUrlParams = IncomingMessage.schemaBodyUrlParams(schema as Schema.Schema<A, any, R>)
48
48
  return Effect.flatMap(serverRequestTag, (request): Effect.Effect<
49
- R | ServerRequest.ServerRequest | Scope.Scope | FileSystem.FileSystem | Path.Path,
49
+ A,
50
50
  Multipart.MultipartError | ParseResult.ParseError | Error.RequestError,
51
- A
51
+ R | ServerRequest.ServerRequest | Scope.Scope | FileSystem.FileSystem | Path.Path
52
52
  > => {
53
53
  if (isMultipart(request)) {
54
54
  return Effect.flatMap(request.multipart, parseMultipart)
@@ -59,7 +59,7 @@ export const schemaBodyForm = <R, I extends Multipart.Persisted, A>(
59
59
 
60
60
  /** @internal */
61
61
  export const schemaBodyUrlParams = <R, I extends Readonly<Record<string, string>>, A>(
62
- schema: Schema.Schema<R, I, A>
62
+ schema: Schema.Schema<A, I, R>
63
63
  ) => {
64
64
  const parse = IncomingMessage.schemaBodyUrlParams(schema)
65
65
  return Effect.flatMap(serverRequestTag, parse)
@@ -67,14 +67,14 @@ export const schemaBodyUrlParams = <R, I extends Readonly<Record<string, string>
67
67
 
68
68
  /** @internal */
69
69
  export const schemaBodyMultipart = <R, I extends Multipart.Persisted, A>(
70
- schema: Schema.Schema<R, I, A>
70
+ schema: Schema.Schema<A, I, R>
71
71
  ) => {
72
72
  const parse = Multipart.schemaPersisted(schema)
73
73
  return Effect.flatMap(multipartPersisted, parse)
74
74
  }
75
75
 
76
76
  /** @internal */
77
- export const schemaBodyFormJson = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
77
+ export const schemaBodyFormJson = <A, I, R>(schema: Schema.Schema<A, I, R>) => {
78
78
  const parseMultipart = Multipart.schemaJson(schema)
79
79
  const parseUrlParams = UrlParams.schemaJson(schema)
80
80
  return (field: string) =>
@@ -83,9 +83,9 @@ export const schemaBodyFormJson = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
83
83
  (
84
84
  request
85
85
  ): Effect.Effect<
86
- R | FileSystem.FileSystem | Path.Path | Scope.Scope | ServerRequest.ServerRequest,
86
+ A,
87
87
  ParseResult.ParseError | Error.RequestError,
88
- A
88
+ R | FileSystem.FileSystem | Path.Path | Scope.Scope | ServerRequest.ServerRequest
89
89
  > => {
90
90
  if (isMultipart(request)) {
91
91
  return Effect.flatMap(
@@ -147,7 +147,7 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
147
147
  return this.headersOverride
148
148
  }
149
149
 
150
- get stream(): Stream.Stream<never, Error.RequestError, Uint8Array> {
150
+ get stream(): Stream.Stream<Uint8Array, Error.RequestError> {
151
151
  return this.source.body
152
152
  ? Stream.fromReadableStream(() => this.source.body as any, (_) =>
153
153
  Error.RequestError({
@@ -162,8 +162,8 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
162
162
  }))
163
163
  }
164
164
 
165
- private textEffect: Effect.Effect<never, Error.RequestError, string> | undefined
166
- get text(): Effect.Effect<never, Error.RequestError, string> {
165
+ private textEffect: Effect.Effect<string, Error.RequestError> | undefined
166
+ get text(): Effect.Effect<string, Error.RequestError> {
167
167
  if (this.textEffect) {
168
168
  return this.textEffect
169
169
  }
@@ -181,7 +181,7 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
181
181
  return this.textEffect
182
182
  }
183
183
 
184
- get json(): Effect.Effect<never, Error.RequestError, unknown> {
184
+ get json(): Effect.Effect<unknown, Error.RequestError> {
185
185
  return Effect.tryMap(this.text, {
186
186
  try: (_) => JSON.parse(_) as unknown,
187
187
  catch: (error) =>
@@ -193,7 +193,7 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
193
193
  })
194
194
  }
195
195
 
196
- get urlParamsBody(): Effect.Effect<never, Error.RequestError, UrlParams.UrlParams> {
196
+ get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, Error.RequestError> {
197
197
  return Effect.flatMap(this.text, (_) =>
198
198
  Effect.try({
199
199
  try: () => UrlParams.fromInput(new URLSearchParams(_)),
@@ -208,15 +208,15 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
208
208
 
209
209
  private multipartEffect:
210
210
  | Effect.Effect<
211
- Scope.Scope | FileSystem.FileSystem | Path.Path,
211
+ Multipart.Persisted,
212
212
  Multipart.MultipartError,
213
- Multipart.Persisted
213
+ Scope.Scope | FileSystem.FileSystem | Path.Path
214
214
  >
215
215
  | undefined
216
216
  get multipart(): Effect.Effect<
217
- Scope.Scope | FileSystem.FileSystem | Path.Path,
217
+ Multipart.Persisted,
218
218
  Multipart.MultipartError,
219
- Multipart.Persisted
219
+ Scope.Scope | FileSystem.FileSystem | Path.Path
220
220
  > {
221
221
  if (this.multipartEffect) {
222
222
  return this.multipartEffect
@@ -227,15 +227,15 @@ class ServerRequestImpl implements ServerRequest.ServerRequest {
227
227
  return this.multipartEffect
228
228
  }
229
229
 
230
- get multipartStream(): Stream.Stream<never, Multipart.MultipartError, Multipart.Part> {
230
+ get multipartStream(): Stream.Stream<Multipart.Part, Multipart.MultipartError> {
231
231
  return Stream.pipeThroughChannel(
232
232
  Stream.mapError(this.stream, (error) => Multipart.MultipartError("InternalError", error)),
233
233
  Multipart.makeChannel(this.headers)
234
234
  )
235
235
  }
236
236
 
237
- private arrayBufferEffect: Effect.Effect<never, Error.RequestError, ArrayBuffer> | undefined
238
- get arrayBuffer(): Effect.Effect<never, Error.RequestError, ArrayBuffer> {
237
+ private arrayBufferEffect: Effect.Effect<ArrayBuffer, Error.RequestError> | undefined
238
+ get arrayBuffer(): Effect.Effect<ArrayBuffer, Error.RequestError> {
239
239
  if (this.arrayBuffer) {
240
240
  return this.arrayBuffer
241
241
  }