@effect/platform 0.10.4 → 0.11.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.
- package/Effectify.d.ts.map +1 -1
- package/Http/Body.d.ts +129 -0
- package/Http/Body.d.ts.map +1 -0
- package/Http/Body.js +70 -0
- package/Http/Body.js.map +1 -0
- package/Http/Client.d.ts +213 -0
- package/Http/Client.d.ts.map +1 -0
- package/Http/Client.js +124 -0
- package/Http/Client.js.map +1 -0
- package/Http/ClientError.d.ts +70 -0
- package/Http/ClientError.d.ts.map +1 -0
- package/Http/ClientError.js +28 -0
- package/Http/ClientError.js.map +1 -0
- package/Http/ClientRequest.d.ts +317 -0
- package/Http/ClientRequest.d.ts.map +1 -0
- package/Http/ClientRequest.js +202 -0
- package/Http/ClientRequest.js.map +1 -0
- package/Http/ClientResponse.d.ts +36 -0
- package/Http/ClientResponse.d.ts.map +1 -0
- package/Http/ClientResponse.js +29 -0
- package/Http/ClientResponse.js.map +1 -0
- package/Http/FormData.d.ts +56 -0
- package/Http/FormData.d.ts.map +1 -0
- package/Http/FormData.js +13 -0
- package/Http/FormData.js.map +1 -0
- package/Http/Headers.d.ts +38 -0
- package/Http/Headers.d.ts.map +1 -0
- package/Http/Headers.js +54 -0
- package/Http/Headers.js.map +1 -0
- package/Http/IncomingMessage.d.ts +37 -0
- package/Http/IncomingMessage.d.ts.map +1 -0
- package/Http/IncomingMessage.js +30 -0
- package/Http/IncomingMessage.js.map +1 -0
- package/Http/Method.d.ts +10 -0
- package/Http/Method.d.ts.map +1 -0
- package/Http/Method.js +12 -0
- package/Http/Method.js.map +1 -0
- package/Http/UrlParams.d.ts +56 -0
- package/Http/UrlParams.d.ts.map +1 -0
- package/Http/UrlParams.js +74 -0
- package/Http/UrlParams.js.map +1 -0
- package/HttpClient.d.ts +32 -0
- package/HttpClient.d.ts.map +1 -0
- package/HttpClient.js +23 -0
- package/HttpClient.js.map +1 -0
- package/README.md +3 -0
- package/internal/console.js.map +1 -1
- package/internal/effectify.js.map +1 -1
- package/internal/error.js.map +1 -1
- package/internal/http/body.d.ts +2 -0
- package/internal/http/body.d.ts.map +1 -0
- package/internal/http/body.js +101 -0
- package/internal/http/body.js.map +1 -0
- package/internal/http/client.d.ts +3 -0
- package/internal/http/client.d.ts.map +1 -0
- package/internal/http/client.js +147 -0
- package/internal/http/client.js.map +1 -0
- package/internal/http/clientError.d.ts +2 -0
- package/internal/http/clientError.d.ts.map +1 -0
- package/internal/http/clientError.js +24 -0
- package/internal/http/clientError.js.map +1 -0
- package/internal/http/clientRequest.d.ts +2 -0
- package/internal/http/clientRequest.d.ts.map +1 -0
- package/internal/http/clientRequest.js +180 -0
- package/internal/http/clientRequest.js.map +1 -0
- package/internal/http/clientResponse.d.ts +2 -0
- package/internal/http/clientResponse.d.ts.map +1 -0
- package/internal/http/clientResponse.js +101 -0
- package/internal/http/clientResponse.js.map +1 -0
- package/mjs/Http/Body.mjs +52 -0
- package/mjs/Http/Body.mjs.map +1 -0
- package/mjs/Http/Client.mjs +97 -0
- package/mjs/Http/Client.mjs.map +1 -0
- package/mjs/Http/ClientError.mjs +17 -0
- package/mjs/Http/ClientError.mjs.map +1 -0
- package/mjs/Http/ClientRequest.mjs +162 -0
- package/mjs/Http/ClientRequest.mjs.map +1 -0
- package/mjs/Http/ClientResponse.mjs +18 -0
- package/mjs/Http/ClientResponse.mjs.map +1 -0
- package/mjs/Http/FormData.mjs +6 -0
- package/mjs/Http/FormData.mjs.map +1 -0
- package/mjs/Http/Headers.mjs +40 -0
- package/mjs/Http/Headers.mjs.map +1 -0
- package/mjs/Http/IncomingMessage.mjs +19 -0
- package/mjs/Http/IncomingMessage.mjs.map +1 -0
- package/mjs/Http/Method.mjs +5 -0
- package/mjs/Http/Method.mjs.map +1 -0
- package/mjs/Http/UrlParams.mjs +57 -0
- package/mjs/Http/UrlParams.mjs.map +1 -0
- package/mjs/HttpClient.mjs +18 -0
- package/mjs/HttpClient.mjs.map +1 -0
- package/mjs/internal/console.mjs.map +1 -1
- package/mjs/internal/effectify.mjs.map +1 -1
- package/mjs/internal/error.mjs.map +1 -1
- package/mjs/internal/http/body.mjs +83 -0
- package/mjs/internal/http/body.mjs.map +1 -0
- package/mjs/internal/http/client.mjs +120 -0
- package/mjs/internal/http/client.mjs.map +1 -0
- package/mjs/internal/http/clientError.mjs +13 -0
- package/mjs/internal/http/clientError.mjs.map +1 -0
- package/mjs/internal/http/clientRequest.mjs +138 -0
- package/mjs/internal/http/clientRequest.mjs.map +1 -0
- package/mjs/internal/http/clientResponse.mjs +91 -0
- package/mjs/internal/http/clientResponse.mjs.map +1 -0
- package/package.json +13 -8
- package/src/Effectify.ts +65 -65
- package/src/Http/Body.ts +148 -0
- package/src/Http/Client.ts +280 -0
- package/src/Http/ClientError.ts +80 -0
- package/src/Http/ClientRequest.ts +383 -0
- package/src/Http/ClientResponse.ts +42 -0
- package/src/Http/FormData.ts +61 -0
- package/src/Http/Headers.ts +69 -0
- package/src/Http/IncomingMessage.ts +45 -0
- package/src/Http/Method.ts +17 -0
- package/src/Http/UrlParams.ts +106 -0
- package/src/HttpClient.ts +32 -0
- package/src/internal/console.ts +6 -6
- package/src/internal/effectify.ts +14 -14
- package/src/internal/error.ts +2 -2
- package/src/internal/http/body.ts +113 -0
- package/src/internal/http/client.ts +437 -0
- package/src/internal/http/clientError.ts +20 -0
- package/src/internal/http/clientRequest.ts +390 -0
- package/src/internal/http/clientResponse.ts +114 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Context from "@effect/data/Context"
|
|
5
|
+
import type * as Predicate from "@effect/data/Predicate"
|
|
6
|
+
import type * as Effect from "@effect/io/Effect"
|
|
7
|
+
import type * as Layer from "@effect/io/Layer"
|
|
8
|
+
import type * as Schedule from "@effect/io/Schedule"
|
|
9
|
+
import type * as Error from "@effect/platform/Http/ClientError"
|
|
10
|
+
import type * as ClientRequest from "@effect/platform/Http/ClientRequest"
|
|
11
|
+
import type * as ClientResponse from "@effect/platform/Http/ClientResponse"
|
|
12
|
+
import * as internal from "@effect/platform/internal/http/client"
|
|
13
|
+
import type * as ParseResult from "@effect/schema/ParseResult"
|
|
14
|
+
import type * as Schema from "@effect/schema/Schema"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category models
|
|
19
|
+
*/
|
|
20
|
+
export interface Client<R, E, A> {
|
|
21
|
+
(request: ClientRequest.ClientRequest): Effect.Effect<R, E, A>
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
export namespace Client {
|
|
28
|
+
/**
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category models
|
|
31
|
+
*/
|
|
32
|
+
export type WithResponse<R, E> = Client<R, E, ClientResponse.ClientResponse>
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @category models
|
|
37
|
+
*/
|
|
38
|
+
export type Default = WithResponse<never, Error.HttpClientError>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
* @category tags
|
|
44
|
+
*/
|
|
45
|
+
export const Client: Context.Tag<Client.Default, Client.Default> = internal.tag
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category layers
|
|
50
|
+
*/
|
|
51
|
+
export const fetchLayer: Layer.Layer<never, never, Client.Default> = internal.fetchLayer
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @since 1.0.0
|
|
55
|
+
* @category constructors
|
|
56
|
+
*/
|
|
57
|
+
export const fetch: (options?: RequestInit) => Client.Default = internal.fetch
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
* @category constructors
|
|
62
|
+
*/
|
|
63
|
+
export const fetchOk: (options?: RequestInit) => Client.Default = internal.fetchOk
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
* @category error handling
|
|
68
|
+
*/
|
|
69
|
+
export const catchAll: {
|
|
70
|
+
<E, R2, E2, A2>(f: (e: E) => Effect.Effect<R2, E2, A2>): <R, A>(self: Client<R, E, A>) => Client<R2 | R, E2, A2 | A>
|
|
71
|
+
<R, E, A, R2, E2, A2>(self: Client<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, A2>): Client<R | R2, E2, A | A2>
|
|
72
|
+
} = internal.catchAll
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
* @category error handling
|
|
77
|
+
*/
|
|
78
|
+
export const catchTag: {
|
|
79
|
+
<E extends { _tag: string }, K extends E["_tag"] & string, R1, E1, A1>(
|
|
80
|
+
tag: K,
|
|
81
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
82
|
+
): <R, A>(self: Client<R, E, A>) => Client<R1 | R, E1 | Exclude<E, { _tag: K }>, A1 | A>
|
|
83
|
+
<R, E extends { _tag: string }, A, K extends E["_tag"] & string, E1, R1, A1>(
|
|
84
|
+
self: Client<R, E, A>,
|
|
85
|
+
tag: K,
|
|
86
|
+
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
87
|
+
): Client<R | R1, E1 | Exclude<E, { _tag: K }>, A | A1>
|
|
88
|
+
} = internal.catchTag
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @since 1.0.0
|
|
92
|
+
* @category error handling
|
|
93
|
+
*/
|
|
94
|
+
export const catchTags: {
|
|
95
|
+
<
|
|
96
|
+
E extends { _tag: string },
|
|
97
|
+
Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
|
|
98
|
+
>(
|
|
99
|
+
cases: Cases
|
|
100
|
+
): <R, A>(
|
|
101
|
+
self: Client<R, E, A>
|
|
102
|
+
) => Client<
|
|
103
|
+
| R
|
|
104
|
+
| {
|
|
105
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
106
|
+
}[keyof Cases],
|
|
107
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
108
|
+
| {
|
|
109
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
110
|
+
}[keyof Cases],
|
|
111
|
+
| A
|
|
112
|
+
| {
|
|
113
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer A> ? A : never
|
|
114
|
+
}[keyof Cases]
|
|
115
|
+
>
|
|
116
|
+
<
|
|
117
|
+
R,
|
|
118
|
+
E extends { _tag: string },
|
|
119
|
+
A,
|
|
120
|
+
Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
|
|
121
|
+
>(
|
|
122
|
+
self: Client<R, E, A>,
|
|
123
|
+
cases: Cases
|
|
124
|
+
): Client<
|
|
125
|
+
| R
|
|
126
|
+
| {
|
|
127
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
128
|
+
}[keyof Cases],
|
|
129
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
130
|
+
| {
|
|
131
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
132
|
+
}[keyof Cases],
|
|
133
|
+
| A
|
|
134
|
+
| {
|
|
135
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer A> ? A : never
|
|
136
|
+
}[keyof Cases]
|
|
137
|
+
>
|
|
138
|
+
} = internal.catchTags
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @since 1.0.0
|
|
142
|
+
* @category filters
|
|
143
|
+
*/
|
|
144
|
+
export const filterOrElse: {
|
|
145
|
+
<A, R2, E2, B>(
|
|
146
|
+
f: Predicate.Predicate<A>,
|
|
147
|
+
orElse: (a: A) => Effect.Effect<R2, E2, B>
|
|
148
|
+
): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A | B>
|
|
149
|
+
<R, E, A, R2, E2, B>(
|
|
150
|
+
self: Client<R, E, A>,
|
|
151
|
+
f: Predicate.Predicate<A>,
|
|
152
|
+
orElse: (a: A) => Effect.Effect<R2, E2, B>
|
|
153
|
+
): Client<R | R2, E | E2, A | B>
|
|
154
|
+
} = internal.filterOrElse
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @since 1.0.0
|
|
158
|
+
* @category filters
|
|
159
|
+
*/
|
|
160
|
+
export const filterOrFail: {
|
|
161
|
+
<A, E2>(f: Predicate.Predicate<A>, orFailWith: (a: A) => E2): <R, E>(self: Client<R, E, A>) => Client<R, E2 | E, A>
|
|
162
|
+
<R, E, A, E2>(self: Client<R, E, A>, f: Predicate.Predicate<A>, orFailWith: (a: A) => E2): Client<R, E | E2, A>
|
|
163
|
+
} = internal.filterOrFail
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @since 1.0.0
|
|
167
|
+
* @category filters
|
|
168
|
+
*/
|
|
169
|
+
export const filterStatus: {
|
|
170
|
+
(
|
|
171
|
+
f: (status: number) => boolean
|
|
172
|
+
): <R, E>(self: Client.WithResponse<R, E>) => Client.WithResponse<R, E | Error.ResponseError>
|
|
173
|
+
<R, E>(
|
|
174
|
+
self: Client.WithResponse<R, E>,
|
|
175
|
+
f: (status: number) => boolean
|
|
176
|
+
): Client.WithResponse<R, Error.ResponseError | E>
|
|
177
|
+
} = internal.filterStatus
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @since 1.0.0
|
|
181
|
+
* @category filters
|
|
182
|
+
*/
|
|
183
|
+
export const filterStatusOk: <R, E>(
|
|
184
|
+
self: Client.WithResponse<R, E>
|
|
185
|
+
) => Client.WithResponse<R, Error.ResponseError | E> = internal.filterStatusOk
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @since 1.0.0
|
|
189
|
+
* @category mapping & sequencing
|
|
190
|
+
*/
|
|
191
|
+
export const map: {
|
|
192
|
+
<A, B>(f: (a: A) => B): <R, E>(self: Client<R, E, A>) => Client<R, E, B>
|
|
193
|
+
<R, E, A, B>(self: Client<R, E, A>, f: (a: A) => B): Client<R, E, B>
|
|
194
|
+
} = internal.map
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @since 1.0.0
|
|
198
|
+
* @category mapping & sequencing
|
|
199
|
+
*/
|
|
200
|
+
export const mapEffect: {
|
|
201
|
+
<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, B>
|
|
202
|
+
<R, E, A, R2, E2, B>(self: Client<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Client<R | R2, E | E2, B>
|
|
203
|
+
} = internal.mapEffect
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @since 1.0.0
|
|
207
|
+
* @category mapping & sequencing
|
|
208
|
+
*/
|
|
209
|
+
export const mapRequest: {
|
|
210
|
+
(
|
|
211
|
+
f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
|
|
212
|
+
): <R, E, A>(self: Client<R, E, A>) => Client<R, E, A>
|
|
213
|
+
<R, E, A>(self: Client<R, E, A>, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client<R, E, A>
|
|
214
|
+
} = internal.mapRequest
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* @since 1.0.0
|
|
218
|
+
* @category mapping & sequencing
|
|
219
|
+
*/
|
|
220
|
+
export const mapRequestEffect: {
|
|
221
|
+
<R2, E2>(
|
|
222
|
+
f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
|
|
223
|
+
): <R, E, A>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
|
|
224
|
+
<R, E, A, R2, E2>(
|
|
225
|
+
self: Client<R, E, A>,
|
|
226
|
+
f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
|
|
227
|
+
): Client<R | R2, E | E2, A>
|
|
228
|
+
} = internal.mapRequestEffect
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* @since 1.0.0
|
|
232
|
+
* @category error handling
|
|
233
|
+
*/
|
|
234
|
+
export const retry: {
|
|
235
|
+
<R1, E extends E0, E0, B>(policy: Schedule.Schedule<R1, E0, B>): <R, A>(self: Client<R, E, A>) => Client<R1 | R, E, A>
|
|
236
|
+
<R, E extends E0, E0, A, R1, B>(self: Client<R, E, A>, policy: Schedule.Schedule<R1, E0, B>): Client<R | R1, E, A>
|
|
237
|
+
} = internal.retry
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* @since 1.0.0
|
|
241
|
+
* @category schema
|
|
242
|
+
*/
|
|
243
|
+
export const schemaFunction: {
|
|
244
|
+
<SI, SA>(
|
|
245
|
+
schema: Schema.Schema<SI, SA>
|
|
246
|
+
): <R, E, A>(
|
|
247
|
+
self: Client<R, E, A>
|
|
248
|
+
) => (
|
|
249
|
+
request: ClientRequest.ClientRequest
|
|
250
|
+
) => (a: SA) => Effect.Effect<R, Error.RequestError | E | ParseResult.ParseError, A>
|
|
251
|
+
<R, E, A, SI, SA>(
|
|
252
|
+
self: Client<R, E, A>,
|
|
253
|
+
schema: Schema.Schema<SI, SA>
|
|
254
|
+
): (
|
|
255
|
+
request: ClientRequest.ClientRequest
|
|
256
|
+
) => (a: SA) => Effect.Effect<R, Error.RequestError | ParseResult.ParseError | E, A>
|
|
257
|
+
} = internal.schemaFunction
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @since 1.0.0
|
|
261
|
+
* @category mapping & sequencing
|
|
262
|
+
*/
|
|
263
|
+
export const tap: {
|
|
264
|
+
<A, R2, E2, _>(f: (a: A) => Effect.Effect<R2, E2, _>): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
|
|
265
|
+
<R, E, A, R2, E2, _>(self: Client<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, _>): Client<R | R2, E | E2, A>
|
|
266
|
+
} = internal.tap
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* @since 1.0.0
|
|
270
|
+
* @category mapping & sequencing
|
|
271
|
+
*/
|
|
272
|
+
export const tapRequest: {
|
|
273
|
+
<R2, E2, _>(
|
|
274
|
+
f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, _>
|
|
275
|
+
): <R, E, A>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
|
|
276
|
+
<R, E, A, R2, E2, _>(
|
|
277
|
+
self: Client<R, E, A>,
|
|
278
|
+
f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, _>
|
|
279
|
+
): Client<R | R2, E | E2, A>
|
|
280
|
+
} = internal.tapRequest
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Data from "@effect/data/Data"
|
|
5
|
+
import type * as ClientRequest from "@effect/platform/Http/ClientRequest"
|
|
6
|
+
import type * as ClientResponse from "@effect/platform/Http/ClientResponse"
|
|
7
|
+
import * as internal from "@effect/platform/internal/http/clientError"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category type id
|
|
12
|
+
*/
|
|
13
|
+
export const TypeId: unique symbol = internal.TypeId
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category type id
|
|
18
|
+
*/
|
|
19
|
+
export type TypeId = typeof TypeId
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category error
|
|
24
|
+
*/
|
|
25
|
+
export type HttpClientError = RequestError | ResponseError
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*/
|
|
30
|
+
export namespace HttpError {
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category models
|
|
34
|
+
*/
|
|
35
|
+
export interface Proto extends Data.Case {
|
|
36
|
+
readonly [TypeId]: TypeId
|
|
37
|
+
readonly _tag: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
*/
|
|
43
|
+
export type ProvidedFields = TypeId | "_tag" | keyof Data.Case
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category error
|
|
49
|
+
*/
|
|
50
|
+
export interface RequestError extends HttpError.Proto {
|
|
51
|
+
readonly _tag: "RequestError"
|
|
52
|
+
readonly request: ClientRequest.ClientRequest
|
|
53
|
+
readonly reason: "Transport" | "Encode"
|
|
54
|
+
readonly error: unknown
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category error
|
|
60
|
+
*/
|
|
61
|
+
export const RequestError: (props: Omit<RequestError, HttpError.ProvidedFields>) => RequestError = internal.requestError
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @category error
|
|
66
|
+
*/
|
|
67
|
+
export interface ResponseError extends HttpError.Proto {
|
|
68
|
+
readonly _tag: "ResponseError"
|
|
69
|
+
readonly request: ClientRequest.ClientRequest
|
|
70
|
+
readonly response: ClientResponse.ClientResponse
|
|
71
|
+
readonly reason: "StatusCode" | "Decode" | "EmptyBody"
|
|
72
|
+
readonly error: unknown
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @since 1.0.0
|
|
77
|
+
* @category error
|
|
78
|
+
*/
|
|
79
|
+
export const ResponseError: (props: Omit<ResponseError, HttpError.ProvidedFields>) => ResponseError =
|
|
80
|
+
internal.responseError
|