@effect/platform 0.48.29 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/dist/cjs/Http/App.js +9 -7
- package/dist/cjs/Http/App.js.map +1 -1
- package/dist/cjs/Http/Client.js +13 -3
- package/dist/cjs/Http/Client.js.map +1 -1
- package/dist/cjs/Http/ClientResponse.js +9 -9
- package/dist/cjs/Http/ClientResponse.js.map +1 -1
- package/dist/cjs/Http/Cookies.js +7 -7
- package/dist/cjs/Http/Cookies.js.map +1 -1
- package/dist/cjs/Http/Headers.js +7 -7
- package/dist/cjs/Http/Headers.js.map +1 -1
- package/dist/cjs/Http/IncomingMessage.js +7 -7
- package/dist/cjs/Http/IncomingMessage.js.map +1 -1
- package/dist/cjs/Http/Middleware.js +11 -1
- package/dist/cjs/Http/Middleware.js.map +1 -1
- package/dist/cjs/Http/Multiplex.js.map +1 -1
- package/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/UrlParams.js +13 -13
- package/dist/cjs/Http/UrlParams.js.map +1 -1
- package/dist/cjs/PlatformConfigProvider.js +2 -2
- package/dist/cjs/PlatformConfigProvider.js.map +1 -1
- package/dist/cjs/Socket.js +6 -6
- package/dist/cjs/Socket.js.map +1 -1
- package/dist/cjs/Transferable.js +1 -1
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/internal/command.js +1 -1
- package/dist/cjs/internal/command.js.map +1 -1
- package/dist/cjs/internal/fileSystem.js +2 -2
- package/dist/cjs/internal/fileSystem.js.map +1 -1
- package/dist/cjs/internal/http/client.js +19 -16
- package/dist/cjs/internal/http/client.js.map +1 -1
- package/dist/cjs/internal/http/clientResponse.js +5 -5
- package/dist/cjs/internal/http/clientResponse.js.map +1 -1
- package/dist/cjs/internal/http/middleware.js +8 -3
- package/dist/cjs/internal/http/middleware.js.map +1 -1
- package/dist/cjs/internal/http/multipart.js +4 -4
- package/dist/cjs/internal/http/multipart.js.map +1 -1
- package/dist/cjs/internal/http/multiplex.js +2 -2
- package/dist/cjs/internal/http/multiplex.js.map +1 -1
- package/dist/cjs/internal/http/router.js +2 -1
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/worker.js +7 -7
- package/dist/cjs/internal/worker.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +14 -13
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/Command.d.ts +3 -3
- package/dist/dts/Command.d.ts.map +1 -1
- package/dist/dts/Http/App.d.ts +7 -7
- package/dist/dts/Http/App.d.ts.map +1 -1
- package/dist/dts/Http/Client.d.ts +78 -65
- package/dist/dts/Http/Client.d.ts.map +1 -1
- package/dist/dts/Http/ClientResponse.d.ts +5 -5
- package/dist/dts/Http/Cookies.d.ts +3 -3
- package/dist/dts/Http/Cookies.d.ts.map +1 -1
- package/dist/dts/Http/Headers.d.ts +4 -4
- package/dist/dts/Http/Headers.d.ts.map +1 -1
- package/dist/dts/Http/IncomingMessage.d.ts +4 -3
- package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
- package/dist/dts/Http/Middleware.d.ts +22 -5
- package/dist/dts/Http/Middleware.d.ts.map +1 -1
- package/dist/dts/Http/Multiplex.d.ts +22 -22
- package/dist/dts/Http/Multiplex.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +80 -80
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/Server.d.ts +11 -11
- package/dist/dts/Http/Server.d.ts.map +1 -1
- package/dist/dts/Http/ServerRequest.d.ts +1 -1
- package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
- package/dist/dts/Http/TraceContext.d.ts.map +1 -1
- package/dist/dts/Http/UrlParams.d.ts.map +1 -1
- package/dist/dts/PlatformConfigProvider.d.ts.map +1 -1
- package/dist/dts/Socket.d.ts +10 -10
- package/dist/dts/Socket.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/Worker.d.ts +6 -6
- package/dist/dts/Worker.d.ts.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +5 -5
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/App.js +9 -7
- package/dist/esm/Http/App.js.map +1 -1
- package/dist/esm/Http/Client.js +12 -2
- package/dist/esm/Http/Client.js.map +1 -1
- package/dist/esm/Http/ClientResponse.js +5 -5
- package/dist/esm/Http/ClientResponse.js.map +1 -1
- package/dist/esm/Http/Cookies.js +7 -7
- package/dist/esm/Http/Cookies.js.map +1 -1
- package/dist/esm/Http/Headers.js +7 -7
- package/dist/esm/Http/Headers.js.map +1 -1
- package/dist/esm/Http/IncomingMessage.js +3 -3
- package/dist/esm/Http/IncomingMessage.js.map +1 -1
- package/dist/esm/Http/Middleware.js +10 -0
- package/dist/esm/Http/Middleware.js.map +1 -1
- package/dist/esm/Http/Multiplex.js.map +1 -1
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/UrlParams.js +13 -13
- package/dist/esm/Http/UrlParams.js.map +1 -1
- package/dist/esm/PlatformConfigProvider.js +2 -2
- package/dist/esm/PlatformConfigProvider.js.map +1 -1
- package/dist/esm/Socket.js +6 -6
- package/dist/esm/Socket.js.map +1 -1
- package/dist/esm/Transferable.js +1 -1
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/internal/command.js +1 -1
- package/dist/esm/internal/command.js.map +1 -1
- package/dist/esm/internal/fileSystem.js +2 -2
- package/dist/esm/internal/fileSystem.js.map +1 -1
- package/dist/esm/internal/http/client.js +18 -13
- package/dist/esm/internal/http/client.js.map +1 -1
- package/dist/esm/internal/http/clientResponse.js +2 -2
- package/dist/esm/internal/http/clientResponse.js.map +1 -1
- package/dist/esm/internal/http/middleware.js +7 -2
- package/dist/esm/internal/http/middleware.js.map +1 -1
- package/dist/esm/internal/http/multipart.js +4 -4
- package/dist/esm/internal/http/multipart.js.map +1 -1
- package/dist/esm/internal/http/multiplex.js +2 -2
- package/dist/esm/internal/http/multiplex.js.map +1 -1
- package/dist/esm/internal/http/router.js +2 -1
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/worker.js +7 -7
- package/dist/esm/internal/worker.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +14 -13
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +3 -3
- package/src/Command.ts +3 -3
- package/src/Http/App.ts +21 -17
- package/src/Http/Client.ts +105 -90
- package/src/Http/ClientResponse.ts +7 -7
- package/src/Http/Cookies.ts +9 -9
- package/src/Http/Headers.ts +12 -12
- package/src/Http/IncomingMessage.ts +16 -6
- package/src/Http/Middleware.ts +30 -6
- package/src/Http/Multiplex.ts +38 -38
- package/src/Http/Router.ts +136 -134
- package/src/Http/Server.ts +16 -16
- package/src/Http/ServerRequest.ts +1 -1
- package/src/Http/UrlParams.ts +15 -15
- package/src/PlatformConfigProvider.ts +2 -2
- package/src/Socket.ts +6 -6
- package/src/Transferable.ts +1 -1
- package/src/Worker.ts +9 -9
- package/src/WorkerRunner.ts +5 -4
- package/src/internal/command.ts +12 -6
- package/src/internal/fileSystem.ts +2 -2
- package/src/internal/http/client.ts +221 -204
- package/src/internal/http/clientResponse.ts +2 -2
- package/src/internal/http/middleware.ts +24 -1
- package/src/internal/http/multipart.ts +4 -4
- package/src/internal/http/multiplex.ts +54 -54
- package/src/internal/http/router.ts +121 -104
- package/src/internal/http/server.ts +17 -17
- package/src/internal/http/serverRequest.ts +1 -1
- package/src/internal/worker.ts +14 -14
- package/src/internal/workerRunner.ts +20 -16
|
@@ -52,6 +52,23 @@ export const withTracerDisabledWhen = dual<
|
|
|
52
52
|
) => Effect.Effect<A, E, R>
|
|
53
53
|
>(2, (self, pred) => Effect.locally(self, currentTracerDisabledWhen, pred))
|
|
54
54
|
|
|
55
|
+
/** @internal */
|
|
56
|
+
export const currentFetchOptions = globalValue(
|
|
57
|
+
Symbol.for("@effect/platform/Http/Client/currentFetchOptions"),
|
|
58
|
+
() => FiberRef.unsafeMake<RequestInit>({})
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
/** @internal */
|
|
62
|
+
export const withFetchOptions = dual<
|
|
63
|
+
(
|
|
64
|
+
options: RequestInit
|
|
65
|
+
) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
66
|
+
<R, E, A>(
|
|
67
|
+
effect: Effect.Effect<A, E, R>,
|
|
68
|
+
options: RequestInit
|
|
69
|
+
) => Effect.Effect<A, E, R>
|
|
70
|
+
>(2, (self, options) => Effect.locally(self, currentFetchOptions, options))
|
|
71
|
+
|
|
55
72
|
const clientProto = {
|
|
56
73
|
[TypeId]: TypeId,
|
|
57
74
|
pipe() {
|
|
@@ -62,12 +79,12 @@ const clientProto = {
|
|
|
62
79
|
const isClient = (u: unknown): u is Client.Client<unknown, unknown, unknown> => Predicate.hasProperty(u, TypeId)
|
|
63
80
|
|
|
64
81
|
/** @internal */
|
|
65
|
-
export const make = <
|
|
82
|
+
export const make = <A, E, R, R2, E2>(
|
|
66
83
|
execute: (
|
|
67
84
|
request: Effect.Effect<ClientRequest.ClientRequest, E2, R2>
|
|
68
85
|
) => Effect.Effect<A, E, R>,
|
|
69
|
-
preprocess: Client.Client.Preprocess<
|
|
70
|
-
): Client.Client<
|
|
86
|
+
preprocess: Client.Client.Preprocess<E2, R2>
|
|
87
|
+
): Client.Client<A, E, R> => {
|
|
71
88
|
function client(request: ClientRequest.ClientRequest) {
|
|
72
89
|
return execute(preprocess(request))
|
|
73
90
|
}
|
|
@@ -116,53 +133,53 @@ export const Fetch = Context.GenericTag<Client.Fetch, typeof globalThis.fetch>(
|
|
|
116
133
|
)
|
|
117
134
|
|
|
118
135
|
/** @internal */
|
|
119
|
-
export const fetch
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
return send(undefined)
|
|
136
|
+
export const fetch: Client.Client.Default = makeDefault((request, fiber) => {
|
|
137
|
+
const context = fiber.getFiberRef(FiberRef.currentContext)
|
|
138
|
+
const fetch: typeof globalThis.fetch = context.unsafeMap.get(Fetch.key) ?? globalThis.fetch
|
|
139
|
+
const options = fiber.getFiberRef(currentFetchOptions)
|
|
140
|
+
return Effect.flatMap(
|
|
141
|
+
UrlParams.makeUrl(request.url, request.urlParams, (_) =>
|
|
142
|
+
new Error.RequestError({
|
|
143
|
+
request,
|
|
144
|
+
reason: "InvalidUrl",
|
|
145
|
+
error: _
|
|
146
|
+
})),
|
|
147
|
+
(url) => {
|
|
148
|
+
const headers = new Headers(request.headers)
|
|
149
|
+
const send = (body: BodyInit | undefined) =>
|
|
150
|
+
pipe(
|
|
151
|
+
Effect.acquireRelease(
|
|
152
|
+
Effect.sync(() => new AbortController()),
|
|
153
|
+
(controller) => Effect.sync(() => controller.abort())
|
|
154
|
+
),
|
|
155
|
+
Effect.flatMap((controller) =>
|
|
156
|
+
Effect.tryPromise({
|
|
157
|
+
try: () =>
|
|
158
|
+
fetch(url, {
|
|
159
|
+
...options,
|
|
160
|
+
method: request.method,
|
|
161
|
+
headers,
|
|
162
|
+
body,
|
|
163
|
+
duplex: request.body._tag === "Stream" ? "half" : undefined,
|
|
164
|
+
signal: controller.signal
|
|
165
|
+
} as any),
|
|
166
|
+
catch: (_) =>
|
|
167
|
+
new Error.RequestError({
|
|
168
|
+
request,
|
|
169
|
+
reason: "Transport",
|
|
170
|
+
error: _
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
),
|
|
174
|
+
Effect.map((_) => internalResponse.fromWeb(request, _))
|
|
175
|
+
)
|
|
176
|
+
if (Method.hasBody(request.method)) {
|
|
177
|
+
return send(convertBody(request.body))
|
|
163
178
|
}
|
|
164
|
-
|
|
165
|
-
|
|
179
|
+
return send(undefined)
|
|
180
|
+
}
|
|
181
|
+
)
|
|
182
|
+
})
|
|
166
183
|
|
|
167
184
|
const convertBody = (body: Body.Body): BodyInit | undefined => {
|
|
168
185
|
switch (body._tag) {
|
|
@@ -179,42 +196,74 @@ const convertBody = (body: Body.Body): BodyInit | undefined => {
|
|
|
179
196
|
}
|
|
180
197
|
}
|
|
181
198
|
|
|
182
|
-
/** @internal */
|
|
183
|
-
export const fetchOk = (options?: RequestInit): Client.Client.Default => filterStatusOk(fetch(options))
|
|
184
|
-
|
|
185
|
-
/** @internal */
|
|
186
|
-
export const layer = Layer.succeed(tag, fetch())
|
|
187
|
-
|
|
188
199
|
/** @internal */
|
|
189
200
|
export const transform = dual<
|
|
190
|
-
<
|
|
201
|
+
<A, E, R, R1, E1, A1>(
|
|
191
202
|
f: (
|
|
192
203
|
effect: Effect.Effect<A, E, R>,
|
|
193
204
|
request: ClientRequest.ClientRequest
|
|
194
205
|
) => Effect.Effect<A1, E1, R1>
|
|
195
|
-
) => (self: Client.Client<
|
|
196
|
-
<
|
|
197
|
-
self: Client.Client<
|
|
206
|
+
) => (self: Client.Client<A, E, R>) => Client.Client<A1, E | E1, R | R1>,
|
|
207
|
+
<A, E, R, R1, E1, A1>(
|
|
208
|
+
self: Client.Client<A, E, R>,
|
|
198
209
|
f: (
|
|
199
210
|
effect: Effect.Effect<A, E, R>,
|
|
200
211
|
request: ClientRequest.ClientRequest
|
|
201
212
|
) => Effect.Effect<A1, E1, R1>
|
|
202
|
-
) => Client.Client<
|
|
213
|
+
) => Client.Client<A1, E | E1, R | R1>
|
|
203
214
|
>(2, (self, f) =>
|
|
204
215
|
make(
|
|
205
216
|
Effect.flatMap((request) => f(self.execute(Effect.succeed(request)), request)),
|
|
206
217
|
self.preprocess
|
|
207
218
|
))
|
|
208
219
|
|
|
220
|
+
/** @internal */
|
|
221
|
+
export const filterStatus = dual<
|
|
222
|
+
(
|
|
223
|
+
f: (status: number) => boolean
|
|
224
|
+
) => <E, R>(
|
|
225
|
+
self: Client.Client.WithResponse<E, R>
|
|
226
|
+
) => Client.Client.WithResponse<E | Error.ResponseError, R>,
|
|
227
|
+
<E, R>(
|
|
228
|
+
self: Client.Client.WithResponse<E, R>,
|
|
229
|
+
f: (status: number) => boolean
|
|
230
|
+
) => Client.Client.WithResponse<E | Error.ResponseError, R>
|
|
231
|
+
>(2, (self, f) =>
|
|
232
|
+
transform(self, (effect, request) =>
|
|
233
|
+
Effect.filterOrFail(
|
|
234
|
+
effect,
|
|
235
|
+
(response) => f(response.status),
|
|
236
|
+
(response) =>
|
|
237
|
+
new Error.ResponseError({
|
|
238
|
+
request,
|
|
239
|
+
response,
|
|
240
|
+
reason: "StatusCode",
|
|
241
|
+
error: "non 2xx status code"
|
|
242
|
+
})
|
|
243
|
+
)))
|
|
244
|
+
|
|
245
|
+
/** @internal */
|
|
246
|
+
export const filterStatusOk: <E, R>(
|
|
247
|
+
self: Client.Client.WithResponse<E, R>
|
|
248
|
+
) => Client.Client.WithResponse<E | Error.ResponseError, R> = filterStatus(
|
|
249
|
+
(status) => status >= 200 && status < 300
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
/** @internal */
|
|
253
|
+
export const fetchOk: Client.Client.Default = filterStatusOk(fetch)
|
|
254
|
+
|
|
255
|
+
/** @internal */
|
|
256
|
+
export const layer = Layer.succeed(tag, fetch)
|
|
257
|
+
|
|
209
258
|
/** @internal */
|
|
210
259
|
export const transformResponse = dual<
|
|
211
|
-
<
|
|
260
|
+
<A, E, R, R1, E1, A1>(
|
|
212
261
|
f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A1, E1, R1>
|
|
213
|
-
) => (self: Client.Client<
|
|
214
|
-
<
|
|
215
|
-
self: Client.Client<
|
|
262
|
+
) => (self: Client.Client<A, E, R>) => Client.Client<A1, E1, R1>,
|
|
263
|
+
<A, E, R, R1, E1, A1>(
|
|
264
|
+
self: Client.Client<A, E, R>,
|
|
216
265
|
f: (effect: Effect.Effect<A, E, R>) => Effect.Effect<A1, E1, R1>
|
|
217
|
-
) => Client.Client<
|
|
266
|
+
) => Client.Client<A1, E1, R1>
|
|
218
267
|
>(2, (self, f) => make((request) => f(self.execute(request)), self.preprocess))
|
|
219
268
|
|
|
220
269
|
/** @internal */
|
|
@@ -222,9 +271,9 @@ export const catchTag: {
|
|
|
222
271
|
<K extends E extends { _tag: string } ? E["_tag"] : never, E, R1, E1, A1>(
|
|
223
272
|
tag: K,
|
|
224
273
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
225
|
-
): <
|
|
226
|
-
self: Client.Client<
|
|
227
|
-
) => Client.Client<
|
|
274
|
+
): <A, R>(
|
|
275
|
+
self: Client.Client<A, E, R>
|
|
276
|
+
) => Client.Client<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R>
|
|
228
277
|
<
|
|
229
278
|
R,
|
|
230
279
|
E,
|
|
@@ -234,10 +283,10 @@ export const catchTag: {
|
|
|
234
283
|
E1,
|
|
235
284
|
A1
|
|
236
285
|
>(
|
|
237
|
-
self: Client.Client<
|
|
286
|
+
self: Client.Client<A, E, R>,
|
|
238
287
|
tag: K,
|
|
239
288
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
240
|
-
): Client.Client<
|
|
289
|
+
): Client.Client<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R>
|
|
241
290
|
} = dual(
|
|
242
291
|
3,
|
|
243
292
|
<
|
|
@@ -249,10 +298,10 @@ export const catchTag: {
|
|
|
249
298
|
E1,
|
|
250
299
|
A1
|
|
251
300
|
>(
|
|
252
|
-
self: Client.Client<
|
|
301
|
+
self: Client.Client<A, E, R>,
|
|
253
302
|
tag: K,
|
|
254
303
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<A1, E1, R1>
|
|
255
|
-
): Client.Client<
|
|
304
|
+
): Client.Client<A1 | A, E1 | Exclude<E, { _tag: K }>, R1 | R> => transformResponse(self, Effect.catchTag(tag, f))
|
|
256
305
|
)
|
|
257
306
|
|
|
258
307
|
/** @internal */
|
|
@@ -276,14 +325,14 @@ export const catchTags: {
|
|
|
276
325
|
})
|
|
277
326
|
>(
|
|
278
327
|
cases: Cases
|
|
279
|
-
): <
|
|
280
|
-
self: Client.Client<
|
|
328
|
+
): <A, R>(
|
|
329
|
+
self: Client.Client<A, E, R>
|
|
281
330
|
) => Client.Client<
|
|
282
|
-
|
|
|
331
|
+
| A
|
|
283
332
|
| {
|
|
284
333
|
[K in keyof Cases]: Cases[K] extends (
|
|
285
334
|
...args: Array<any>
|
|
286
|
-
) => Effect.Effect<
|
|
335
|
+
) => Effect.Effect<infer A, any, any> ? A
|
|
287
336
|
: never
|
|
288
337
|
}[keyof Cases],
|
|
289
338
|
| Exclude<E, { _tag: keyof Cases }>
|
|
@@ -293,18 +342,18 @@ export const catchTags: {
|
|
|
293
342
|
) => Effect.Effect<any, infer E, any> ? E
|
|
294
343
|
: never
|
|
295
344
|
}[keyof Cases],
|
|
296
|
-
|
|
|
345
|
+
| R
|
|
297
346
|
| {
|
|
298
347
|
[K in keyof Cases]: Cases[K] extends (
|
|
299
348
|
...args: Array<any>
|
|
300
|
-
) => Effect.Effect<
|
|
349
|
+
) => Effect.Effect<any, any, infer R> ? R
|
|
301
350
|
: never
|
|
302
351
|
}[keyof Cases]
|
|
303
352
|
>
|
|
304
353
|
<
|
|
305
|
-
R,
|
|
306
|
-
E extends { _tag: string },
|
|
307
354
|
A,
|
|
355
|
+
E extends { _tag: string },
|
|
356
|
+
R,
|
|
308
357
|
Cases extends
|
|
309
358
|
& {
|
|
310
359
|
[K in Extract<E, { _tag: string }>["_tag"]]+?: (
|
|
@@ -321,14 +370,14 @@ export const catchTags: {
|
|
|
321
370
|
]: never
|
|
322
371
|
})
|
|
323
372
|
>(
|
|
324
|
-
self: Client.Client<
|
|
373
|
+
self: Client.Client<A, E, R>,
|
|
325
374
|
cases: Cases
|
|
326
375
|
): Client.Client<
|
|
327
|
-
|
|
|
376
|
+
| A
|
|
328
377
|
| {
|
|
329
378
|
[K in keyof Cases]: Cases[K] extends (
|
|
330
379
|
...args: Array<any>
|
|
331
|
-
) => Effect.Effect<
|
|
380
|
+
) => Effect.Effect<infer A, any, any> ? A
|
|
332
381
|
: never
|
|
333
382
|
}[keyof Cases],
|
|
334
383
|
| Exclude<E, { _tag: keyof Cases }>
|
|
@@ -338,20 +387,20 @@ export const catchTags: {
|
|
|
338
387
|
) => Effect.Effect<any, infer E, any> ? E
|
|
339
388
|
: never
|
|
340
389
|
}[keyof Cases],
|
|
341
|
-
|
|
|
390
|
+
| R
|
|
342
391
|
| {
|
|
343
392
|
[K in keyof Cases]: Cases[K] extends (
|
|
344
393
|
...args: Array<any>
|
|
345
|
-
) => Effect.Effect<
|
|
394
|
+
) => Effect.Effect<any, any, infer R> ? R
|
|
346
395
|
: never
|
|
347
396
|
}[keyof Cases]
|
|
348
397
|
>
|
|
349
398
|
} = dual(
|
|
350
399
|
2,
|
|
351
400
|
<
|
|
352
|
-
R,
|
|
353
|
-
E extends { _tag: string },
|
|
354
401
|
A,
|
|
402
|
+
E extends { _tag: string },
|
|
403
|
+
R,
|
|
355
404
|
Cases extends
|
|
356
405
|
& {
|
|
357
406
|
[K in Extract<E, { _tag: string }>["_tag"]]+?: (
|
|
@@ -368,14 +417,14 @@ export const catchTags: {
|
|
|
368
417
|
]: never
|
|
369
418
|
})
|
|
370
419
|
>(
|
|
371
|
-
self: Client.Client<
|
|
420
|
+
self: Client.Client<A, E, R>,
|
|
372
421
|
cases: Cases
|
|
373
422
|
): Client.Client<
|
|
374
|
-
|
|
|
423
|
+
| A
|
|
375
424
|
| {
|
|
376
425
|
[K in keyof Cases]: Cases[K] extends (
|
|
377
426
|
...args: Array<any>
|
|
378
|
-
) => Effect.Effect<
|
|
427
|
+
) => Effect.Effect<infer A, any, any> ? A
|
|
379
428
|
: never
|
|
380
429
|
}[keyof Cases],
|
|
381
430
|
| Exclude<E, { _tag: keyof Cases }>
|
|
@@ -385,11 +434,11 @@ export const catchTags: {
|
|
|
385
434
|
) => Effect.Effect<any, infer E, any> ? E
|
|
386
435
|
: never
|
|
387
436
|
}[keyof Cases],
|
|
388
|
-
|
|
|
437
|
+
| R
|
|
389
438
|
| {
|
|
390
439
|
[K in keyof Cases]: Cases[K] extends (
|
|
391
440
|
...args: Array<any>
|
|
392
|
-
) => Effect.Effect<
|
|
441
|
+
) => Effect.Effect<any, any, infer R> ? R
|
|
393
442
|
: never
|
|
394
443
|
}[keyof Cases]
|
|
395
444
|
> => transformResponse(self, Effect.catchTags(cases))
|
|
@@ -399,17 +448,17 @@ export const catchTags: {
|
|
|
399
448
|
export const catchAll: {
|
|
400
449
|
<E, R2, E2, A2>(
|
|
401
450
|
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
402
|
-
): <
|
|
403
|
-
<
|
|
404
|
-
self: Client.Client<
|
|
451
|
+
): <A, R>(self: Client.Client<A, E, R>) => Client.Client<A2 | A, E2, R | R2>
|
|
452
|
+
<A, E, R, R2, E2, A2>(
|
|
453
|
+
self: Client.Client<A, E, R>,
|
|
405
454
|
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
406
|
-
): Client.Client<
|
|
455
|
+
): Client.Client<A2 | A, E2, R | R2>
|
|
407
456
|
} = dual(
|
|
408
457
|
2,
|
|
409
|
-
<
|
|
410
|
-
self: Client.Client<
|
|
458
|
+
<A, E, R, R2, E2, A2>(
|
|
459
|
+
self: Client.Client<A, E, R>,
|
|
411
460
|
f: (e: E) => Effect.Effect<A2, E2, R2>
|
|
412
|
-
): Client.Client<
|
|
461
|
+
): Client.Client<A2 | A, E2, R | R2> => transformResponse(self, Effect.catchAll(f))
|
|
413
462
|
)
|
|
414
463
|
|
|
415
464
|
/** @internal */
|
|
@@ -417,14 +466,14 @@ export const filterOrElse = dual<
|
|
|
417
466
|
<A, R2, E2, B>(
|
|
418
467
|
f: Predicate.Predicate<A>,
|
|
419
468
|
orElse: (a: A) => Effect.Effect<B, E2, R2>
|
|
420
|
-
) => <
|
|
421
|
-
self: Client.Client<
|
|
422
|
-
) => Client.Client<
|
|
423
|
-
<
|
|
424
|
-
self: Client.Client<
|
|
469
|
+
) => <E, R>(
|
|
470
|
+
self: Client.Client<A, E, R>
|
|
471
|
+
) => Client.Client<A | B, E2 | E, R2 | R>,
|
|
472
|
+
<A, E, R, R2, E2, B>(
|
|
473
|
+
self: Client.Client<A, E, R>,
|
|
425
474
|
f: Predicate.Predicate<A>,
|
|
426
475
|
orElse: (a: A) => Effect.Effect<B, E2, R2>
|
|
427
|
-
) => Client.Client<
|
|
476
|
+
) => Client.Client<A | B, E2 | E, R2 | R>
|
|
428
477
|
>(3, (self, f, orElse) => transformResponse(self, Effect.filterOrElse(f, orElse)))
|
|
429
478
|
|
|
430
479
|
/** @internal */
|
|
@@ -432,93 +481,61 @@ export const filterOrFail = dual<
|
|
|
432
481
|
<A, E2>(
|
|
433
482
|
f: Predicate.Predicate<A>,
|
|
434
483
|
orFailWith: (a: A) => E2
|
|
435
|
-
) => <
|
|
436
|
-
<
|
|
437
|
-
self: Client.Client<
|
|
484
|
+
) => <E, R>(self: Client.Client<A, E, R>) => Client.Client<A, E2 | E, R>,
|
|
485
|
+
<A, E, R, E2>(
|
|
486
|
+
self: Client.Client<A, E, R>,
|
|
438
487
|
f: Predicate.Predicate<A>,
|
|
439
488
|
orFailWith: (a: A) => E2
|
|
440
|
-
) => Client.Client<
|
|
489
|
+
) => Client.Client<A, E2 | E, R>
|
|
441
490
|
>(3, (self, f, orFailWith) => transformResponse(self, Effect.filterOrFail(f, orFailWith)))
|
|
442
491
|
|
|
443
|
-
/** @internal */
|
|
444
|
-
export const filterStatus = dual<
|
|
445
|
-
(
|
|
446
|
-
f: (status: number) => boolean
|
|
447
|
-
) => <R, E>(
|
|
448
|
-
self: Client.Client.WithResponse<R, E>
|
|
449
|
-
) => Client.Client.WithResponse<R, E | Error.ResponseError>,
|
|
450
|
-
<R, E>(
|
|
451
|
-
self: Client.Client.WithResponse<R, E>,
|
|
452
|
-
f: (status: number) => boolean
|
|
453
|
-
) => Client.Client.WithResponse<R, E | Error.ResponseError>
|
|
454
|
-
>(2, (self, f) =>
|
|
455
|
-
transform(self, (effect, request) =>
|
|
456
|
-
Effect.filterOrFail(
|
|
457
|
-
effect,
|
|
458
|
-
(response) => f(response.status),
|
|
459
|
-
(response) =>
|
|
460
|
-
new Error.ResponseError({
|
|
461
|
-
request,
|
|
462
|
-
response,
|
|
463
|
-
reason: "StatusCode",
|
|
464
|
-
error: "non 2xx status code"
|
|
465
|
-
})
|
|
466
|
-
)))
|
|
467
|
-
|
|
468
|
-
/** @internal */
|
|
469
|
-
export const filterStatusOk: <R, E>(
|
|
470
|
-
self: Client.Client.WithResponse<R, E>
|
|
471
|
-
) => Client.Client.WithResponse<R, E | Error.ResponseError> = filterStatus(
|
|
472
|
-
(status) => status >= 200 && status < 300
|
|
473
|
-
)
|
|
474
|
-
|
|
475
492
|
/** @internal */
|
|
476
493
|
export const map = dual<
|
|
477
494
|
<A, B>(
|
|
478
495
|
f: (a: A) => B
|
|
479
|
-
) => <
|
|
480
|
-
<
|
|
481
|
-
self: Client.Client<
|
|
496
|
+
) => <E, R>(self: Client.Client<A, E, R>) => Client.Client<B, E, R>,
|
|
497
|
+
<A, E, R, B>(
|
|
498
|
+
self: Client.Client<A, E, R>,
|
|
482
499
|
f: (a: A) => B
|
|
483
|
-
) => Client.Client<
|
|
500
|
+
) => Client.Client<B, E, R>
|
|
484
501
|
>(2, (self, f) => transformResponse(self, Effect.map(f)))
|
|
485
502
|
|
|
486
503
|
/** @internal */
|
|
487
504
|
export const mapEffect = dual<
|
|
488
505
|
<A, R2, E2, B>(
|
|
489
506
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
490
|
-
) => <
|
|
491
|
-
<
|
|
492
|
-
self: Client.Client<
|
|
507
|
+
) => <E, R>(self: Client.Client<A, E, R>) => Client.Client<B, E | E2, R | R2>,
|
|
508
|
+
<A, E, R, R2, E2, B>(
|
|
509
|
+
self: Client.Client<A, E, R>,
|
|
493
510
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
494
|
-
) => Client.Client<
|
|
511
|
+
) => Client.Client<B, E | E2, R | R2>
|
|
495
512
|
>(2, (self, f) => transformResponse(self, Effect.flatMap(f)))
|
|
496
513
|
|
|
497
514
|
/** @internal */
|
|
498
|
-
export const scoped = <
|
|
499
|
-
self: Client.Client<
|
|
500
|
-
): Client.Client<Exclude<R, Scope.Scope
|
|
515
|
+
export const scoped = <A, E, R>(
|
|
516
|
+
self: Client.Client<A, E, R>
|
|
517
|
+
): Client.Client<A, E, Exclude<R, Scope.Scope>> => transformResponse(self, Effect.scoped)
|
|
501
518
|
|
|
502
519
|
/** @internal */
|
|
503
520
|
export const mapEffectScoped = dual<
|
|
504
521
|
<A, R2, E2, B>(
|
|
505
522
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
506
|
-
) => <
|
|
507
|
-
<
|
|
508
|
-
self: Client.Client<
|
|
523
|
+
) => <E, R>(self: Client.Client<A, E, R>) => Client.Client<B, E | E2, Exclude<R | R2, Scope.Scope>>,
|
|
524
|
+
<A, E, R, R2, E2, B>(
|
|
525
|
+
self: Client.Client<A, E, R>,
|
|
509
526
|
f: (a: A) => Effect.Effect<B, E2, R2>
|
|
510
|
-
) => Client.Client<Exclude<R | R2, Scope.Scope
|
|
527
|
+
) => Client.Client<B, E | E2, Exclude<R | R2, Scope.Scope>>
|
|
511
528
|
>(2, (self, f) => scoped(mapEffect(self, f)))
|
|
512
529
|
|
|
513
530
|
/** @internal */
|
|
514
531
|
export const mapRequest = dual<
|
|
515
532
|
(
|
|
516
533
|
f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
|
|
517
|
-
) => <
|
|
518
|
-
<
|
|
519
|
-
self: Client.Client<
|
|
534
|
+
) => <A, E, R>(self: Client.Client<A, E, R>) => Client.Client<A, E, R>,
|
|
535
|
+
<A, E, R>(
|
|
536
|
+
self: Client.Client<A, E, R>,
|
|
520
537
|
f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
|
|
521
|
-
) => Client.Client<
|
|
538
|
+
) => Client.Client<A, E, R>
|
|
522
539
|
>(2, (self, f) => make(self.execute, (request) => Effect.map(self.preprocess(request), f)))
|
|
523
540
|
|
|
524
541
|
/** @internal */
|
|
@@ -527,26 +544,26 @@ export const mapRequestEffect = dual<
|
|
|
527
544
|
f: (
|
|
528
545
|
a: ClientRequest.ClientRequest
|
|
529
546
|
) => Effect.Effect<ClientRequest.ClientRequest, E2, R2>
|
|
530
|
-
) => <
|
|
531
|
-
self: Client.Client<
|
|
532
|
-
) => Client.Client<
|
|
533
|
-
<
|
|
534
|
-
self: Client.Client<
|
|
547
|
+
) => <A, E, R>(
|
|
548
|
+
self: Client.Client<A, E, R>
|
|
549
|
+
) => Client.Client<A, E | E2, R | R2>,
|
|
550
|
+
<A, E, R, R2, E2>(
|
|
551
|
+
self: Client.Client<A, E, R>,
|
|
535
552
|
f: (
|
|
536
553
|
a: ClientRequest.ClientRequest
|
|
537
554
|
) => Effect.Effect<ClientRequest.ClientRequest, E2, R2>
|
|
538
|
-
) => Client.Client<
|
|
555
|
+
) => Client.Client<A, E | E2, R | R2>
|
|
539
556
|
>(2, (self, f) => make(self.execute as any, (request) => Effect.flatMap(self.preprocess(request), f)))
|
|
540
557
|
|
|
541
558
|
/** @internal */
|
|
542
559
|
export const mapInputRequest = dual<
|
|
543
560
|
(
|
|
544
561
|
f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
|
|
545
|
-
) => <
|
|
546
|
-
<
|
|
547
|
-
self: Client.Client<
|
|
562
|
+
) => <A, E, R>(self: Client.Client<A, E, R>) => Client.Client<A, E, R>,
|
|
563
|
+
<A, E, R>(
|
|
564
|
+
self: Client.Client<A, E, R>,
|
|
548
565
|
f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
|
|
549
|
-
) => Client.Client<
|
|
566
|
+
) => Client.Client<A, E, R>
|
|
550
567
|
>(2, (self, f) => make(self.execute, (request) => self.preprocess(f(request))))
|
|
551
568
|
|
|
552
569
|
/** @internal */
|
|
@@ -555,32 +572,32 @@ export const mapInputRequestEffect = dual<
|
|
|
555
572
|
f: (
|
|
556
573
|
a: ClientRequest.ClientRequest
|
|
557
574
|
) => Effect.Effect<ClientRequest.ClientRequest, E2, R2>
|
|
558
|
-
) => <
|
|
559
|
-
self: Client.Client<
|
|
560
|
-
) => Client.Client<
|
|
561
|
-
<
|
|
562
|
-
self: Client.Client<
|
|
575
|
+
) => <A, E, R>(
|
|
576
|
+
self: Client.Client<A, E, R>
|
|
577
|
+
) => Client.Client<A, E | E2, R | R2>,
|
|
578
|
+
<A, E, R, R2, E2>(
|
|
579
|
+
self: Client.Client<A, E, R>,
|
|
563
580
|
f: (
|
|
564
581
|
a: ClientRequest.ClientRequest
|
|
565
582
|
) => Effect.Effect<ClientRequest.ClientRequest, E2, R2>
|
|
566
|
-
) => Client.Client<
|
|
583
|
+
) => Client.Client<A, E | E2, R | R2>
|
|
567
584
|
>(2, (self, f) => make(self.execute as any, (request) => Effect.flatMap(f(request), self.preprocess)))
|
|
568
585
|
|
|
569
586
|
/** @internal */
|
|
570
587
|
export const retry: {
|
|
571
588
|
<R1, E extends E0, E0, B>(
|
|
572
589
|
policy: Schedule.Schedule<B, E0, R1>
|
|
573
|
-
): <
|
|
574
|
-
<
|
|
575
|
-
self: Client.Client<
|
|
590
|
+
): <A, R>(self: Client.Client<A, E, R>) => Client.Client<A, E, R1 | R>
|
|
591
|
+
<A, E extends E0, E0, R, R1, B>(
|
|
592
|
+
self: Client.Client<A, E, R>,
|
|
576
593
|
policy: Schedule.Schedule<B, E0, R1>
|
|
577
|
-
): Client.Client<R | R1
|
|
594
|
+
): Client.Client<A, E, R | R1>
|
|
578
595
|
} = dual(
|
|
579
596
|
2,
|
|
580
|
-
<
|
|
581
|
-
self: Client.Client<
|
|
597
|
+
<A, E extends E0, E0, R, R1, B>(
|
|
598
|
+
self: Client.Client<A, E, R>,
|
|
582
599
|
policy: Schedule.Schedule<B, E0, R1>
|
|
583
|
-
): Client.Client<R | R1
|
|
600
|
+
): Client.Client<A, E, R | R1> => transformResponse(self, Effect.retry(policy))
|
|
584
601
|
)
|
|
585
602
|
|
|
586
603
|
/** @internal */
|
|
@@ -588,15 +605,15 @@ export const schemaFunction = dual<
|
|
|
588
605
|
<SA, SI, SR>(
|
|
589
606
|
schema: Schema.Schema<SA, SI, SR>,
|
|
590
607
|
options?: ParseOptions | undefined
|
|
591
|
-
) => <
|
|
592
|
-
self: Client.Client<
|
|
608
|
+
) => <A, E, R>(
|
|
609
|
+
self: Client.Client<A, E, R>
|
|
593
610
|
) => (
|
|
594
611
|
request: ClientRequest.ClientRequest
|
|
595
612
|
) => (
|
|
596
613
|
a: SA
|
|
597
614
|
) => Effect.Effect<A, E | ParseResult.ParseError | Error.RequestError, SR | R>,
|
|
598
|
-
<
|
|
599
|
-
self: Client.Client<
|
|
615
|
+
<A, E, R, SA, SI, SR>(
|
|
616
|
+
self: Client.Client<A, E, R>,
|
|
600
617
|
schema: Schema.Schema<SA, SI, SR>,
|
|
601
618
|
options?: ParseOptions | undefined
|
|
602
619
|
) => (
|
|
@@ -631,41 +648,41 @@ export const schemaFunction = dual<
|
|
|
631
648
|
export const tap = dual<
|
|
632
649
|
<A, R2, E2, _>(
|
|
633
650
|
f: (a: A) => Effect.Effect<_, E2, R2>
|
|
634
|
-
) => <
|
|
635
|
-
<
|
|
636
|
-
self: Client.Client<
|
|
651
|
+
) => <E, R>(self: Client.Client<A, E, R>) => Client.Client<A, E | E2, R | R2>,
|
|
652
|
+
<A, E, R, R2, E2, _>(
|
|
653
|
+
self: Client.Client<A, E, R>,
|
|
637
654
|
f: (a: A) => Effect.Effect<_, E2, R2>
|
|
638
|
-
) => Client.Client<
|
|
655
|
+
) => Client.Client<A, E | E2, R | R2>
|
|
639
656
|
>(2, (self, f) => transformResponse(self, Effect.tap(f)))
|
|
640
657
|
|
|
641
658
|
/** @internal */
|
|
642
659
|
export const tapRequest = dual<
|
|
643
660
|
<R2, E2, _>(
|
|
644
661
|
f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2>
|
|
645
|
-
) => <
|
|
646
|
-
self: Client.Client<
|
|
647
|
-
) => Client.Client<
|
|
648
|
-
<
|
|
649
|
-
self: Client.Client<
|
|
662
|
+
) => <A, E, R>(
|
|
663
|
+
self: Client.Client<A, E, R>
|
|
664
|
+
) => Client.Client<A, E | E2, R | R2>,
|
|
665
|
+
<A, E, R, R2, E2, _>(
|
|
666
|
+
self: Client.Client<A, E, R>,
|
|
650
667
|
f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2>
|
|
651
|
-
) => Client.Client<
|
|
668
|
+
) => Client.Client<A, E | E2, R | R2>
|
|
652
669
|
>(2, (self, f) => make(self.execute as any, (request) => Effect.tap(self.preprocess(request), f)))
|
|
653
670
|
|
|
654
671
|
/** @internal */
|
|
655
672
|
export const withCookiesRef = dual<
|
|
656
673
|
(
|
|
657
674
|
ref: Ref.Ref<Cookies.Cookies>
|
|
658
|
-
) => <
|
|
659
|
-
<
|
|
660
|
-
self: Client.Client.WithResponse<
|
|
675
|
+
) => <E, R>(self: Client.Client.WithResponse<E, R>) => Client.Client.WithResponse<E, R>,
|
|
676
|
+
<E, R>(
|
|
677
|
+
self: Client.Client.WithResponse<E, R>,
|
|
661
678
|
ref: Ref.Ref<Cookies.Cookies>
|
|
662
|
-
) => Client.Client.WithResponse<
|
|
679
|
+
) => Client.Client.WithResponse<E, R>
|
|
663
680
|
>(
|
|
664
681
|
2,
|
|
665
|
-
<
|
|
666
|
-
self: Client.Client.WithResponse<
|
|
682
|
+
<E, R>(
|
|
683
|
+
self: Client.Client.WithResponse<E, R>,
|
|
667
684
|
ref: Ref.Ref<Cookies.Cookies>
|
|
668
|
-
): Client.Client.WithResponse<
|
|
685
|
+
): Client.Client.WithResponse<E, R> =>
|
|
669
686
|
make(
|
|
670
687
|
(request: Effect.Effect<ClientRequest.ClientRequest, E, R>) =>
|
|
671
688
|
Effect.tap(
|