@effect/platform 0.66.2 → 0.67.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 (178) hide show
  1. package/dist/cjs/Command.js.map +1 -1
  2. package/dist/cjs/Cookies.js.map +1 -1
  3. package/dist/cjs/Effectify.js.map +1 -1
  4. package/dist/cjs/Headers.js.map +1 -1
  5. package/dist/cjs/HttpApi.js.map +1 -1
  6. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  7. package/dist/cjs/HttpApiEndpoint.js.map +1 -1
  8. package/dist/cjs/HttpApiGroup.js.map +1 -1
  9. package/dist/cjs/HttpApiSchema.js.map +1 -1
  10. package/dist/cjs/HttpApiSecurity.js.map +1 -1
  11. package/dist/cjs/HttpApp.js.map +1 -1
  12. package/dist/cjs/HttpClient.js +8 -1
  13. package/dist/cjs/HttpClient.js.map +1 -1
  14. package/dist/cjs/HttpClientError.js +8 -1
  15. package/dist/cjs/HttpClientError.js.map +1 -1
  16. package/dist/cjs/HttpClientRequest.js.map +1 -1
  17. package/dist/cjs/HttpClientResponse.js +11 -1
  18. package/dist/cjs/HttpClientResponse.js.map +1 -1
  19. package/dist/cjs/HttpIncomingMessage.js.map +1 -1
  20. package/dist/cjs/HttpMiddleware.js.map +1 -1
  21. package/dist/cjs/HttpMultiplex.js.map +1 -1
  22. package/dist/cjs/HttpRouter.js.map +1 -1
  23. package/dist/cjs/HttpServer.js.map +1 -1
  24. package/dist/cjs/HttpServerResponse.js.map +1 -1
  25. package/dist/cjs/KeyValueStore.js.map +1 -1
  26. package/dist/cjs/Multipart.js.map +1 -1
  27. package/dist/cjs/OpenApi.js.map +1 -1
  28. package/dist/cjs/PlatformLogger.js.map +1 -1
  29. package/dist/cjs/Socket.js +4 -1
  30. package/dist/cjs/Socket.js.map +1 -1
  31. package/dist/cjs/Transferable.js.map +1 -1
  32. package/dist/cjs/UrlParams.js.map +1 -1
  33. package/dist/cjs/internal/httpBody.js +3 -0
  34. package/dist/cjs/internal/httpBody.js.map +1 -1
  35. package/dist/cjs/internal/httpClient.js +12 -14
  36. package/dist/cjs/internal/httpClient.js.map +1 -1
  37. package/dist/cjs/internal/httpClientResponse.js +16 -1
  38. package/dist/cjs/internal/httpClientResponse.js.map +1 -1
  39. package/dist/cjs/internal/httpMultiplex.js +3 -0
  40. package/dist/cjs/internal/httpMultiplex.js.map +1 -1
  41. package/dist/cjs/internal/httpRouter.js +3 -0
  42. package/dist/cjs/internal/httpRouter.js.map +1 -1
  43. package/dist/cjs/internal/httpServerResponse.js +3 -0
  44. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  45. package/dist/dts/Command.d.ts +134 -0
  46. package/dist/dts/Command.d.ts.map +1 -1
  47. package/dist/dts/Cookies.d.ts +120 -0
  48. package/dist/dts/Cookies.d.ts.map +1 -1
  49. package/dist/dts/Effectify.d.ts +9 -0
  50. package/dist/dts/Effectify.d.ts.map +1 -1
  51. package/dist/dts/Headers.d.ts +56 -0
  52. package/dist/dts/Headers.d.ts.map +1 -1
  53. package/dist/dts/HttpApi.d.ts +58 -0
  54. package/dist/dts/HttpApi.d.ts.map +1 -1
  55. package/dist/dts/HttpApiBuilder.d.ts +84 -0
  56. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  57. package/dist/dts/HttpApiEndpoint.d.ts +118 -0
  58. package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
  59. package/dist/dts/HttpApiGroup.d.ts +100 -0
  60. package/dist/dts/HttpApiGroup.d.ts.map +1 -1
  61. package/dist/dts/HttpApiSchema.d.ts +16 -0
  62. package/dist/dts/HttpApiSchema.d.ts.map +1 -1
  63. package/dist/dts/HttpApiSecurity.d.ts +16 -0
  64. package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
  65. package/dist/dts/HttpApp.d.ts.map +1 -1
  66. package/dist/dts/HttpClient.d.ts +308 -0
  67. package/dist/dts/HttpClient.d.ts.map +1 -1
  68. package/dist/dts/HttpClientError.d.ts +5 -0
  69. package/dist/dts/HttpClientError.d.ts.map +1 -1
  70. package/dist/dts/HttpClientRequest.d.ts +208 -0
  71. package/dist/dts/HttpClientRequest.d.ts.map +1 -1
  72. package/dist/dts/HttpClientResponse.d.ts +30 -0
  73. package/dist/dts/HttpClientResponse.d.ts.map +1 -1
  74. package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
  75. package/dist/dts/HttpMiddleware.d.ts +24 -0
  76. package/dist/dts/HttpMiddleware.d.ts.map +1 -1
  77. package/dist/dts/HttpMultiplex.d.ts +72 -0
  78. package/dist/dts/HttpMultiplex.d.ts.map +1 -1
  79. package/dist/dts/HttpRouter.d.ts +184 -0
  80. package/dist/dts/HttpRouter.d.ts.map +1 -1
  81. package/dist/dts/HttpServer.d.ts +32 -0
  82. package/dist/dts/HttpServer.d.ts.map +1 -1
  83. package/dist/dts/HttpServerResponse.d.ts +96 -0
  84. package/dist/dts/HttpServerResponse.d.ts.map +1 -1
  85. package/dist/dts/KeyValueStore.d.ts +8 -0
  86. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  87. package/dist/dts/Multipart.d.ts +32 -0
  88. package/dist/dts/Multipart.d.ts.map +1 -1
  89. package/dist/dts/OpenApi.d.ts +8 -0
  90. package/dist/dts/OpenApi.d.ts.map +1 -1
  91. package/dist/dts/PlatformLogger.d.ts +46 -0
  92. package/dist/dts/PlatformLogger.d.ts.map +1 -1
  93. package/dist/dts/Socket.d.ts +8 -0
  94. package/dist/dts/Socket.d.ts.map +1 -1
  95. package/dist/dts/Transferable.d.ts +8 -0
  96. package/dist/dts/Transferable.d.ts.map +1 -1
  97. package/dist/dts/UrlParams.d.ts +64 -0
  98. package/dist/dts/UrlParams.d.ts.map +1 -1
  99. package/dist/dts/internal/httpRouter.d.ts.map +1 -1
  100. package/dist/esm/Command.js.map +1 -1
  101. package/dist/esm/Cookies.js.map +1 -1
  102. package/dist/esm/Effectify.js.map +1 -1
  103. package/dist/esm/Headers.js.map +1 -1
  104. package/dist/esm/HttpApi.js.map +1 -1
  105. package/dist/esm/HttpApiBuilder.js.map +1 -1
  106. package/dist/esm/HttpApiEndpoint.js.map +1 -1
  107. package/dist/esm/HttpApiGroup.js.map +1 -1
  108. package/dist/esm/HttpApiSchema.js.map +1 -1
  109. package/dist/esm/HttpApiSecurity.js.map +1 -1
  110. package/dist/esm/HttpApp.js.map +1 -1
  111. package/dist/esm/HttpClient.js +7 -0
  112. package/dist/esm/HttpClient.js.map +1 -1
  113. package/dist/esm/HttpClientError.js +6 -0
  114. package/dist/esm/HttpClientError.js.map +1 -1
  115. package/dist/esm/HttpClientRequest.js.map +1 -1
  116. package/dist/esm/HttpClientResponse.js +10 -0
  117. package/dist/esm/HttpClientResponse.js.map +1 -1
  118. package/dist/esm/HttpIncomingMessage.js.map +1 -1
  119. package/dist/esm/HttpMiddleware.js.map +1 -1
  120. package/dist/esm/HttpMultiplex.js.map +1 -1
  121. package/dist/esm/HttpRouter.js.map +1 -1
  122. package/dist/esm/HttpServer.js.map +1 -1
  123. package/dist/esm/HttpServerResponse.js.map +1 -1
  124. package/dist/esm/KeyValueStore.js.map +1 -1
  125. package/dist/esm/Multipart.js.map +1 -1
  126. package/dist/esm/OpenApi.js.map +1 -1
  127. package/dist/esm/PlatformLogger.js.map +1 -1
  128. package/dist/esm/Socket.js +4 -1
  129. package/dist/esm/Socket.js.map +1 -1
  130. package/dist/esm/Transferable.js.map +1 -1
  131. package/dist/esm/UrlParams.js.map +1 -1
  132. package/dist/esm/internal/httpBody.js +3 -0
  133. package/dist/esm/internal/httpBody.js.map +1 -1
  134. package/dist/esm/internal/httpClient.js +11 -13
  135. package/dist/esm/internal/httpClient.js.map +1 -1
  136. package/dist/esm/internal/httpClientResponse.js +14 -0
  137. package/dist/esm/internal/httpClientResponse.js.map +1 -1
  138. package/dist/esm/internal/httpMultiplex.js +3 -0
  139. package/dist/esm/internal/httpMultiplex.js.map +1 -1
  140. package/dist/esm/internal/httpRouter.js +3 -0
  141. package/dist/esm/internal/httpRouter.js.map +1 -1
  142. package/dist/esm/internal/httpServerResponse.js +3 -0
  143. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  144. package/package.json +3 -3
  145. package/src/Command.ts +134 -0
  146. package/src/Cookies.ts +128 -38
  147. package/src/Effectify.ts +9 -0
  148. package/src/Headers.ts +106 -7
  149. package/src/HttpApi.ts +58 -0
  150. package/src/HttpApiBuilder.ts +85 -3
  151. package/src/HttpApiEndpoint.ts +121 -9
  152. package/src/HttpApiGroup.ts +102 -7
  153. package/src/HttpApiSchema.ts +22 -4
  154. package/src/HttpApiSecurity.ts +16 -0
  155. package/src/HttpApp.ts +8 -0
  156. package/src/HttpClient.ts +315 -11
  157. package/src/HttpClientError.ts +7 -0
  158. package/src/HttpClientRequest.ts +213 -1
  159. package/src/HttpClientResponse.ts +33 -0
  160. package/src/HttpIncomingMessage.ts +8 -0
  161. package/src/HttpMiddleware.ts +24 -0
  162. package/src/HttpMultiplex.ts +72 -0
  163. package/src/HttpRouter.ts +189 -18
  164. package/src/HttpServer.ts +34 -6
  165. package/src/HttpServerResponse.ts +98 -10
  166. package/src/KeyValueStore.ts +8 -0
  167. package/src/Multipart.ts +32 -0
  168. package/src/OpenApi.ts +31 -18
  169. package/src/PlatformLogger.ts +46 -0
  170. package/src/Socket.ts +19 -13
  171. package/src/Transferable.ts +9 -3
  172. package/src/UrlParams.ts +64 -0
  173. package/src/internal/httpBody.ts +3 -0
  174. package/src/internal/httpClient.ts +41 -26
  175. package/src/internal/httpClientResponse.ts +40 -1
  176. package/src/internal/httpMultiplex.ts +3 -0
  177. package/src/internal/httpRouter.ts +3 -0
  178. package/src/internal/httpServerResponse.ts +3 -0
@@ -181,10 +181,20 @@ export interface asEmpty<
181
181
  * @category empty response
182
182
  */
183
183
  export const asEmpty: {
184
- <S extends Schema.Schema.Any>(options: {
185
- readonly status: number
186
- readonly decode: LazyArg<Schema.Schema.Type<S>>
187
- }): (self: S) => asEmpty<S>
184
+ /**
185
+ * @since 1.0.0
186
+ * @category empty response
187
+ */
188
+ <S extends Schema.Schema.Any>(
189
+ options: {
190
+ readonly status: number
191
+ readonly decode: LazyArg<Schema.Schema.Type<S>>
192
+ }
193
+ ): (self: S) => asEmpty<S>
194
+ /**
195
+ * @since 1.0.0
196
+ * @category empty response
197
+ */
188
198
  <S extends Schema.Schema.Any>(
189
199
  self: S,
190
200
  options: {
@@ -335,12 +345,20 @@ export declare namespace Encoding {
335
345
  * @category encoding
336
346
  */
337
347
  export const withEncoding: {
348
+ /**
349
+ * @since 1.0.0
350
+ * @category encoding
351
+ */
338
352
  <A extends Schema.Schema.Any, Kind extends Encoding["kind"]>(
339
353
  options: {
340
354
  readonly kind: Kind
341
355
  readonly contentType?: string | undefined
342
356
  } & Encoding.Validate<A, Kind>
343
357
  ): (self: A) => A
358
+ /**
359
+ * @since 1.0.0
360
+ * @category encoding
361
+ */
344
362
  <A extends Schema.Schema.Any, Kind extends Encoding["kind"]>(
345
363
  self: A,
346
364
  options: {
@@ -141,7 +141,15 @@ export const basic: Basic = Object.assign(Object.create(Proto), {
141
141
  * @category annotations
142
142
  */
143
143
  export const annotateMerge: {
144
+ /**
145
+ * @since 1.0.0
146
+ * @category annotations
147
+ */
144
148
  <I>(context: Context.Context<I>): <A extends HttpApiSecurity>(self: A) => A
149
+ /**
150
+ * @since 1.0.0
151
+ * @category annotations
152
+ */
145
153
  <A extends HttpApiSecurity, I>(self: A, context: Context.Context<I>): A
146
154
  } = dual(
147
155
  2,
@@ -157,7 +165,15 @@ export const annotateMerge: {
157
165
  * @category annotations
158
166
  */
159
167
  export const annotate: {
168
+ /**
169
+ * @since 1.0.0
170
+ * @category annotations
171
+ */
160
172
  <I, S>(tag: Context.Tag<I, S>, value: S): <A extends HttpApiSecurity>(self: A) => A
173
+ /**
174
+ * @since 1.0.0
175
+ * @category annotations
176
+ */
161
177
  <A extends HttpApiSecurity, I, S>(self: A, tag: Context.Tag<I, S>, value: S): A
162
178
  } = dual(
163
179
  3,
package/src/HttpApp.ts CHANGED
@@ -136,7 +136,15 @@ export const appendPreResponseHandler: (handler: PreResponseHandler) => Effect.E
136
136
  * @category fiber refs
137
137
  */
138
138
  export const withPreResponseHandler = dual<
139
+ /**
140
+ * @since 1.0.0
141
+ * @category fiber refs
142
+ */
139
143
  (handler: PreResponseHandler) => <A, E, R>(self: HttpApp<A, E, R>) => HttpApp<A, E, R>,
144
+ /**
145
+ * @since 1.0.0
146
+ * @category fiber refs
147
+ */
140
148
  <A, E, R>(self: HttpApp<A, E, R>, handler: PreResponseHandler) => HttpApp<A, E, R>
141
149
  >(2, (self, handler) =>
142
150
  Effect.locallyWith(
package/src/HttpClient.ts CHANGED
@@ -94,9 +94,17 @@ export const HttpClient: Context.Tag<HttpClient.Service, HttpClient.Service> = i
94
94
  * @category error handling
95
95
  */
96
96
  export const catchAll: {
97
+ /**
98
+ * @since 1.0.0
99
+ * @category error handling
100
+ */
97
101
  <E, E2, R2, A2>(
98
102
  f: (e: E) => Effect.Effect<A2, E2, R2>
99
103
  ): <A, R>(self: HttpClient<A, E, R>) => HttpClient<A2 | A, E2, R2 | R>
104
+ /**
105
+ * @since 1.0.0
106
+ * @category error handling
107
+ */
100
108
  <A, E, R, A2, E2, R2>(
101
109
  self: HttpClient<A, E, R>,
102
110
  f: (e: E) => Effect.Effect<A2, E2, R2>
@@ -108,10 +116,18 @@ export const catchAll: {
108
116
  * @category error handling
109
117
  */
110
118
  export const catchTag: {
119
+ /**
120
+ * @since 1.0.0
121
+ * @category error handling
122
+ */
111
123
  <E extends { _tag: string }, K extends E["_tag"] & string, A1, E1, R1>(
112
124
  tag: K,
113
125
  f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
114
126
  ): <A, R>(self: HttpClient<A, E, R>) => HttpClient<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R>
127
+ /**
128
+ * @since 1.0.0
129
+ * @category error handling
130
+ */
115
131
  <A, E extends { _tag: string }, R, K extends E["_tag"] & string, A1, E1, R1>(
116
132
  self: HttpClient<A, E, R>,
117
133
  tag: K,
@@ -124,12 +140,14 @@ export const catchTag: {
124
140
  * @category error handling
125
141
  */
126
142
  export const catchTags: {
143
+ /**
144
+ * @since 1.0.0
145
+ * @category error handling
146
+ */
127
147
  <
128
148
  E extends { _tag: string },
129
149
  Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
130
- >(
131
- cases: Cases
132
- ): <A, R>(
150
+ >(cases: Cases): <A, R>(
133
151
  self: HttpClient<A, E, R>
134
152
  ) => HttpClient<
135
153
  | A
@@ -145,15 +163,16 @@ export const catchTags: {
145
163
  [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer R> ? R : never
146
164
  }[keyof Cases]
147
165
  >
166
+ /**
167
+ * @since 1.0.0
168
+ * @category error handling
169
+ */
148
170
  <
149
171
  A,
150
172
  E extends { _tag: string },
151
173
  R,
152
174
  Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
153
- >(
154
- self: HttpClient<A, E, R>,
155
- cases: Cases
156
- ): HttpClient<
175
+ >(self: HttpClient<A, E, R>, cases: Cases): HttpClient<
157
176
  | A
158
177
  | {
159
178
  [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer A, any, any> ? A : never
@@ -176,21 +195,45 @@ export const catchTags: {
176
195
  * @category filters
177
196
  */
178
197
  export const filterOrElse: {
198
+ /**
199
+ * Filters the result of a response, or runs an alternative effect if the predicate fails.
200
+ *
201
+ * @since 1.0.0
202
+ * @category filters
203
+ */
179
204
  <A, B extends A, C, E2, R2>(
180
205
  refinement: Predicate.Refinement<NoInfer<A>, B>,
181
206
  orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
182
207
  ): <E, R>(self: HttpClient<A, E, R>) => HttpClient<B | C, E | E2, R | R2>
208
+ /**
209
+ * Filters the result of a response, or runs an alternative effect if the predicate fails.
210
+ *
211
+ * @since 1.0.0
212
+ * @category filters
213
+ */
183
214
  <A, B, E2, R2>(
184
215
  predicate: Predicate.Predicate<NoInfer<A>>,
185
216
  orElse: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
186
217
  ): <E, R>(
187
218
  self: HttpClient<A, E, R>
188
219
  ) => HttpClient<A | B, E2 | E, R2 | R>
220
+ /**
221
+ * Filters the result of a response, or runs an alternative effect if the predicate fails.
222
+ *
223
+ * @since 1.0.0
224
+ * @category filters
225
+ */
189
226
  <A, E, R, B extends A, C, E2, R2>(
190
227
  self: HttpClient<A, E, R>,
191
228
  refinement: Predicate.Refinement<A, B>,
192
229
  orElse: (a: A) => Effect.Effect<C, E2, R2>
193
230
  ): HttpClient<B | C, E | E2, R | R2>
231
+ /**
232
+ * Filters the result of a response, or runs an alternative effect if the predicate fails.
233
+ *
234
+ * @since 1.0.0
235
+ * @category filters
236
+ */
194
237
  <A, E, R, B, E2, R2>(
195
238
  self: HttpClient<A, E, R>,
196
239
  predicate: Predicate.Predicate<A>,
@@ -205,19 +248,43 @@ export const filterOrElse: {
205
248
  * @category filters
206
249
  */
207
250
  export const filterOrFail: {
251
+ /**
252
+ * Filters the result of a response, or throws an error if the predicate fails.
253
+ *
254
+ * @since 1.0.0
255
+ * @category filters
256
+ */
208
257
  <A, B extends A, E2>(
209
258
  refinement: Predicate.Refinement<NoInfer<A>, B>,
210
259
  orFailWith: (a: NoInfer<A>) => E2
211
260
  ): <E, R>(self: HttpClient<A, E, R>) => HttpClient<B, E | E2, R>
261
+ /**
262
+ * Filters the result of a response, or throws an error if the predicate fails.
263
+ *
264
+ * @since 1.0.0
265
+ * @category filters
266
+ */
212
267
  <A, E2>(
213
268
  predicate: Predicate.Predicate<NoInfer<A>>,
214
269
  orFailWith: (a: NoInfer<A>) => E2
215
270
  ): <E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E2 | E, R>
271
+ /**
272
+ * Filters the result of a response, or throws an error if the predicate fails.
273
+ *
274
+ * @since 1.0.0
275
+ * @category filters
276
+ */
216
277
  <A, B extends A, E, R, E2>(
217
278
  self: HttpClient<A, E, R>,
218
279
  refinement: Predicate.Refinement<A, B>,
219
280
  orFailWith: (a: A) => E2
220
281
  ): HttpClient<B, E2 | E, R>
282
+ /**
283
+ * Filters the result of a response, or throws an error if the predicate fails.
284
+ *
285
+ * @since 1.0.0
286
+ * @category filters
287
+ */
221
288
  <A, E, R, E2>(
222
289
  self: HttpClient<A, E, R>,
223
290
  predicate: Predicate.Predicate<A>,
@@ -232,9 +299,21 @@ export const filterOrFail: {
232
299
  * @category filters
233
300
  */
234
301
  export const filterStatus: {
302
+ /**
303
+ * Filters responses by HTTP status code.
304
+ *
305
+ * @since 1.0.0
306
+ * @category filters
307
+ */
235
308
  (
236
309
  f: (status: number) => boolean
237
310
  ): <E, R>(self: HttpClient.WithResponse<E, R>) => HttpClient.WithResponse<E | Error.ResponseError, R>
311
+ /**
312
+ * Filters responses by HTTP status code.
313
+ *
314
+ * @since 1.0.0
315
+ * @category filters
316
+ */
238
317
  <E, R>(
239
318
  self: HttpClient.WithResponse<E, R>,
240
319
  f: (status: number) => boolean
@@ -278,9 +357,17 @@ export const makeService: (
278
357
  * @category mapping & sequencing
279
358
  */
280
359
  export const transform: {
360
+ /**
361
+ * @since 1.0.0
362
+ * @category mapping & sequencing
363
+ */
281
364
  <A, E, R, A1, E1, R1>(
282
365
  f: (effect: Effect.Effect<A, E, R>, request: ClientRequest.HttpClientRequest) => Effect.Effect<A1, E1, R1>
283
366
  ): (self: HttpClient<A, E, R>) => HttpClient<A1, E | E1, R | R1>
367
+ /**
368
+ * @since 1.0.0
369
+ * @category mapping & sequencing
370
+ */
284
371
  <A, E, R, A1, E1, R1>(
285
372
  self: HttpClient<A, E, R>,
286
373
  f: (effect: Effect.Effect<A, E, R>, request: ClientRequest.HttpClientRequest) => Effect.Effect<A1, E1, R1>
@@ -292,9 +379,17 @@ export const transform: {
292
379
  * @category mapping & sequencing
293
380
  */
294
381
  export const transformResponse: {
382
+ /**
383
+ * @since 1.0.0
384
+ * @category mapping & sequencing
385
+ */
295
386
  <A, E, R, A1, E1, R1>(
296
387
  f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A1, E1, R1>
297
388
  ): (self: HttpClient<A, E, R>) => HttpClient<A1, E1, R1>
389
+ /**
390
+ * @since 1.0.0
391
+ * @category mapping & sequencing
392
+ */
298
393
  <A, E, R, A1, E1, R1>(
299
394
  self: HttpClient<A, E, R>,
300
395
  f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A1, E1, R1>
@@ -308,7 +403,19 @@ export const transformResponse: {
308
403
  * @category mapping & sequencing
309
404
  */
310
405
  export const map: {
406
+ /**
407
+ * Transforms the result of a request.
408
+ *
409
+ * @since 1.0.0
410
+ * @category mapping & sequencing
411
+ */
311
412
  <A, B>(f: (a: A) => B): <E, R>(self: HttpClient<A, E, R>) => HttpClient<B, E, R>
413
+ /**
414
+ * Transforms the result of a request.
415
+ *
416
+ * @since 1.0.0
417
+ * @category mapping & sequencing
418
+ */
312
419
  <A, E, R, B>(self: HttpClient<A, E, R>, f: (a: A) => B): HttpClient<B, E, R>
313
420
  } = internal.map
314
421
 
@@ -319,9 +426,21 @@ export const map: {
319
426
  * @category mapping & sequencing
320
427
  */
321
428
  export const mapEffect: {
429
+ /**
430
+ * Transforms the result of a request using an effectful function.
431
+ *
432
+ * @since 1.0.0
433
+ * @category mapping & sequencing
434
+ */
322
435
  <A, B, E2, R2>(
323
436
  f: (a: A) => Effect.Effect<B, E2, R2>
324
437
  ): <E, R>(self: HttpClient<A, E, R>) => HttpClient<B, E2 | E, R2 | R>
438
+ /**
439
+ * Transforms the result of a request using an effectful function.
440
+ *
441
+ * @since 1.0.0
442
+ * @category mapping & sequencing
443
+ */
325
444
  <A, E, R, B, E2, R2>(self: HttpClient<A, E, R>, f: (a: A) => Effect.Effect<B, E2, R2>): HttpClient<B, E | E2, R2 | R>
326
445
  } = internal.mapEffect
327
446
 
@@ -332,9 +451,21 @@ export const mapEffect: {
332
451
  * @category mapping & sequencing
333
452
  */
334
453
  export const mapRequest: {
454
+ /**
455
+ * Appends a transformation of the request object before sending it.
456
+ *
457
+ * @since 1.0.0
458
+ * @category mapping & sequencing
459
+ */
335
460
  (
336
461
  f: (a: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest
337
462
  ): <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E, R>
463
+ /**
464
+ * Appends a transformation of the request object before sending it.
465
+ *
466
+ * @since 1.0.0
467
+ * @category mapping & sequencing
468
+ */
338
469
  <A, E, R>(
339
470
  self: HttpClient<A, E, R>,
340
471
  f: (a: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest
@@ -348,9 +479,21 @@ export const mapRequest: {
348
479
  * @category mapping & sequencing
349
480
  */
350
481
  export const mapRequestEffect: {
482
+ /**
483
+ * Appends an effectful transformation of the request object before sending it.
484
+ *
485
+ * @since 1.0.0
486
+ * @category mapping & sequencing
487
+ */
351
488
  <E2, R2>(
352
489
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<ClientRequest.HttpClientRequest, E2, R2>
353
490
  ): <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E2 | E, R2 | R>
491
+ /**
492
+ * Appends an effectful transformation of the request object before sending it.
493
+ *
494
+ * @since 1.0.0
495
+ * @category mapping & sequencing
496
+ */
354
497
  <A, E, R, E2, R2>(
355
498
  self: HttpClient<A, E, R>,
356
499
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<ClientRequest.HttpClientRequest, E2, R2>
@@ -364,9 +507,21 @@ export const mapRequestEffect: {
364
507
  * @category mapping & sequencing
365
508
  */
366
509
  export const mapRequestInput: {
510
+ /**
511
+ * Prepends a transformation of the request object before sending it.
512
+ *
513
+ * @since 1.0.0
514
+ * @category mapping & sequencing
515
+ */
367
516
  (
368
517
  f: (a: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest
369
518
  ): <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E, R>
519
+ /**
520
+ * Prepends a transformation of the request object before sending it.
521
+ *
522
+ * @since 1.0.0
523
+ * @category mapping & sequencing
524
+ */
370
525
  <A, E, R>(
371
526
  self: HttpClient<A, E, R>,
372
527
  f: (a: ClientRequest.HttpClientRequest) => ClientRequest.HttpClientRequest
@@ -380,9 +535,21 @@ export const mapRequestInput: {
380
535
  * @category mapping & sequencing
381
536
  */
382
537
  export const mapRequestInputEffect: {
538
+ /**
539
+ * Prepends an effectful transformation of the request object before sending it.
540
+ *
541
+ * @since 1.0.0
542
+ * @category mapping & sequencing
543
+ */
383
544
  <E2, R2>(
384
545
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<ClientRequest.HttpClientRequest, E2, R2>
385
546
  ): <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E2 | E, R2 | R>
547
+ /**
548
+ * Prepends an effectful transformation of the request object before sending it.
549
+ *
550
+ * @since 1.0.0
551
+ * @category mapping & sequencing
552
+ */
386
553
  <A, E, R, E2, R2>(
387
554
  self: HttpClient<A, E, R>,
388
555
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<ClientRequest.HttpClientRequest, E2, R2>
@@ -419,14 +586,70 @@ export declare namespace Retry {
419
586
  * @category error handling
420
587
  */
421
588
  export const retry: {
589
+ /**
590
+ * Retries the request based on a provided schedule or policy.
591
+ *
592
+ * @since 1.0.0
593
+ * @category error handling
594
+ */
422
595
  <E, O extends Effect.Retry.Options<E>>(options: O): <A, R>(self: HttpClient<A, E, R>) => Retry.Return<R, E, A, O>
596
+ /**
597
+ * Retries the request based on a provided schedule or policy.
598
+ *
599
+ * @since 1.0.0
600
+ * @category error handling
601
+ */
423
602
  <B, E, R1>(
424
603
  policy: Schedule.Schedule<B, NoInfer<E>, R1>
425
604
  ): <A, R>(self: HttpClient<A, E, R>) => HttpClient<A, E, R1 | R>
605
+ /**
606
+ * Retries the request based on a provided schedule or policy.
607
+ *
608
+ * @since 1.0.0
609
+ * @category error handling
610
+ */
426
611
  <A, E, R, O extends Effect.Retry.Options<E>>(self: HttpClient<A, E, R>, options: O): Retry.Return<R, E, A, O>
612
+ /**
613
+ * Retries the request based on a provided schedule or policy.
614
+ *
615
+ * @since 1.0.0
616
+ * @category error handling
617
+ */
427
618
  <A, E, R, B, R1>(self: HttpClient<A, E, R>, policy: Schedule.Schedule<B, E, R1>): HttpClient<A, E, R1 | R>
428
619
  } = internal.retry
429
620
 
621
+ /**
622
+ * Retries common transient errors, such as rate limiting or network issues.
623
+ *
624
+ * @since 1.0.0
625
+ * @category error handling
626
+ */
627
+ export const retryTransient: {
628
+ /**
629
+ * Retries common transient errors, such as rate limiting or network issues.
630
+ *
631
+ * @since 1.0.0
632
+ * @category error handling
633
+ */
634
+ <B, E, R1 = never>(
635
+ options:
636
+ | { readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>; readonly times?: number }
637
+ | Schedule.Schedule<B, NoInfer<E>, R1>
638
+ ): <A, R>(self: HttpClient<A, E, R>) => HttpClient<A, E, R1 | R>
639
+ /**
640
+ * Retries common transient errors, such as rate limiting or network issues.
641
+ *
642
+ * @since 1.0.0
643
+ * @category error handling
644
+ */
645
+ <A, E, R, B, R1 = never>(
646
+ self: HttpClient<A, E, R>,
647
+ options:
648
+ | { readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>; readonly times?: number }
649
+ | Schedule.Schedule<B, NoInfer<E>, R1>
650
+ ): HttpClient<A, E, R1 | R>
651
+ } = internal.retryTransient
652
+
430
653
  /**
431
654
  * Ensures resources are properly scoped and released after execution.
432
655
  *
@@ -442,14 +665,23 @@ export const scoped: <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E, Ex
442
665
  * @category schema
443
666
  */
444
667
  export const schemaFunction: {
445
- <SA, SI, SR>(
446
- schema: Schema.Schema<SA, SI, SR>,
447
- options?: ParseOptions | undefined
448
- ): <A, E, R>(
668
+ /**
669
+ * Creates a function that validates request data against a schema before sending it.
670
+ *
671
+ * @since 1.0.0
672
+ * @category schema
673
+ */
674
+ <SA, SI, SR>(schema: Schema.Schema<SA, SI, SR>, options?: ParseOptions | undefined): <A, E, R>(
449
675
  self: HttpClient<A, E, R>
450
676
  ) => (
451
677
  request: ClientRequest.HttpClientRequest
452
678
  ) => (a: SA) => Effect.Effect<A, Error.RequestError | E | ParseResult.ParseError, SR | R>
679
+ /**
680
+ * Creates a function that validates request data against a schema before sending it.
681
+ *
682
+ * @since 1.0.0
683
+ * @category schema
684
+ */
453
685
  <A, E, R, SA, SI, SR>(
454
686
  self: HttpClient<A, E, R>,
455
687
  schema: Schema.Schema<SA, SI, SR>,
@@ -466,9 +698,21 @@ export const schemaFunction: {
466
698
  * @category mapping & sequencing
467
699
  */
468
700
  export const tap: {
701
+ /**
702
+ * Performs an additional effect after a successful request.
703
+ *
704
+ * @since 1.0.0
705
+ * @category mapping & sequencing
706
+ */
469
707
  <A, _, E2, R2>(
470
708
  f: (a: A) => Effect.Effect<_, E2, R2>
471
709
  ): <E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E2 | E, R2 | R>
710
+ /**
711
+ * Performs an additional effect after a successful request.
712
+ *
713
+ * @since 1.0.0
714
+ * @category mapping & sequencing
715
+ */
472
716
  <A, E, R, _, E2, R2>(self: HttpClient<A, E, R>, f: (a: A) => Effect.Effect<_, E2, R2>): HttpClient<A, E | E2, R2 | R>
473
717
  } = internal.tap
474
718
 
@@ -479,9 +723,21 @@ export const tap: {
479
723
  * @category mapping & sequencing
480
724
  */
481
725
  export const tapRequest: {
726
+ /**
727
+ * Performs an additional effect on the request before sending it.
728
+ *
729
+ * @since 1.0.0
730
+ * @category mapping & sequencing
731
+ */
482
732
  <_, E2, R2>(
483
733
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<_, E2, R2>
484
734
  ): <A, E, R>(self: HttpClient<A, E, R>) => HttpClient<A, E2 | E, R2 | R>
735
+ /**
736
+ * Performs an additional effect on the request before sending it.
737
+ *
738
+ * @since 1.0.0
739
+ * @category mapping & sequencing
740
+ */
485
741
  <A, E, R, _, E2, R2>(
486
742
  self: HttpClient<A, E, R>,
487
743
  f: (a: ClientRequest.HttpClientRequest) => Effect.Effect<_, E2, R2>
@@ -495,7 +751,19 @@ export const tapRequest: {
495
751
  * @category cookies
496
752
  */
497
753
  export const withCookiesRef: {
754
+ /**
755
+ * Associates a `Ref` of cookies with the client for handling cookies across requests.
756
+ *
757
+ * @since 1.0.0
758
+ * @category cookies
759
+ */
498
760
  (ref: Ref<Cookies>): <E, R>(self: HttpClient.WithResponse<E, R>) => HttpClient.WithResponse<E, R>
761
+ /**
762
+ * Associates a `Ref` of cookies with the client for handling cookies across requests.
763
+ *
764
+ * @since 1.0.0
765
+ * @category cookies
766
+ */
499
767
  <E, R>(self: HttpClient.WithResponse<E, R>, ref: Ref<Cookies>): HttpClient.WithResponse<E, R>
500
768
  } = internal.withCookiesRef
501
769
 
@@ -506,7 +774,19 @@ export const withCookiesRef: {
506
774
  * @category redirects
507
775
  */
508
776
  export const followRedirects: {
777
+ /**
778
+ * Follows HTTP redirects up to a specified number of times.
779
+ *
780
+ * @since 1.0.0
781
+ * @category redirects
782
+ */
509
783
  (maxRedirects?: number | undefined): <E, R>(self: HttpClient.WithResponse<E, R>) => HttpClient.WithResponse<E, R>
784
+ /**
785
+ * Follows HTTP redirects up to a specified number of times.
786
+ *
787
+ * @since 1.0.0
788
+ * @category redirects
789
+ */
510
790
  <E, R>(self: HttpClient.WithResponse<E, R>, maxRedirects?: number | undefined): HttpClient.WithResponse<E, R>
511
791
  } = internal.followRedirects
512
792
 
@@ -524,9 +804,21 @@ export const currentTracerDisabledWhen: FiberRef.FiberRef<Predicate.Predicate<Cl
524
804
  * @category fiber refs
525
805
  */
526
806
  export const withTracerDisabledWhen: {
807
+ /**
808
+ * Disables tracing for specific requests based on a provided predicate.
809
+ *
810
+ * @since 1.0.0
811
+ * @category fiber refs
812
+ */
527
813
  (
528
814
  predicate: Predicate.Predicate<ClientRequest.HttpClientRequest>
529
815
  ): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
816
+ /**
817
+ * Disables tracing for specific requests based on a provided predicate.
818
+ *
819
+ * @since 1.0.0
820
+ * @category fiber refs
821
+ */
530
822
  <A, E, R>(
531
823
  effect: Effect.Effect<A, E, R>,
532
824
  predicate: Predicate.Predicate<ClientRequest.HttpClientRequest>
@@ -546,7 +838,19 @@ export const currentTracerPropagation: FiberRef.FiberRef<boolean> = internal.cur
546
838
  * @category fiber refs
547
839
  */
548
840
  export const withTracerPropagation: {
841
+ /**
842
+ * Enables or disables tracing propagation for the request.
843
+ *
844
+ * @since 1.0.0
845
+ * @category fiber refs
846
+ */
549
847
  (enabled: boolean): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
848
+ /**
849
+ * Enables or disables tracing propagation for the request.
850
+ *
851
+ * @since 1.0.0
852
+ * @category fiber refs
853
+ */
550
854
  <A, E, R>(effect: Effect.Effect<A, E, R>, enabled: boolean): Effect.Effect<A, E, R>
551
855
  } = internal.withTracerPropagation
552
856
 
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as Error from "@effect/platform/Error"
5
+ import { hasProperty } from "effect/Predicate"
5
6
  import type * as ClientRequest from "./HttpClientRequest.js"
6
7
  import type * as ClientResponse from "./HttpClientResponse.js"
7
8
  import * as internal from "./internal/httpClientError.js"
@@ -18,6 +19,12 @@ export const TypeId: unique symbol = internal.TypeId
18
19
  */
19
20
  export type TypeId = typeof TypeId
20
21
 
22
+ /**
23
+ * @since 1.0.0
24
+ * @category guards
25
+ */
26
+ export const isHttpClientError = (u: unknown): u is HttpClientError => hasProperty(u, TypeId)
27
+
21
28
  /**
22
29
  * @since 1.0.0
23
30
  * @category error