@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.
- package/dist/cjs/Command.js.map +1 -1
- package/dist/cjs/Cookies.js.map +1 -1
- package/dist/cjs/Effectify.js.map +1 -1
- package/dist/cjs/Headers.js.map +1 -1
- package/dist/cjs/HttpApi.js.map +1 -1
- package/dist/cjs/HttpApiBuilder.js.map +1 -1
- package/dist/cjs/HttpApiEndpoint.js.map +1 -1
- package/dist/cjs/HttpApiGroup.js.map +1 -1
- package/dist/cjs/HttpApiSchema.js.map +1 -1
- package/dist/cjs/HttpApiSecurity.js.map +1 -1
- package/dist/cjs/HttpApp.js.map +1 -1
- package/dist/cjs/HttpClient.js +8 -1
- package/dist/cjs/HttpClient.js.map +1 -1
- package/dist/cjs/HttpClientError.js +8 -1
- package/dist/cjs/HttpClientError.js.map +1 -1
- package/dist/cjs/HttpClientRequest.js.map +1 -1
- package/dist/cjs/HttpClientResponse.js +11 -1
- package/dist/cjs/HttpClientResponse.js.map +1 -1
- package/dist/cjs/HttpIncomingMessage.js.map +1 -1
- package/dist/cjs/HttpMiddleware.js.map +1 -1
- package/dist/cjs/HttpMultiplex.js.map +1 -1
- package/dist/cjs/HttpRouter.js.map +1 -1
- package/dist/cjs/HttpServer.js.map +1 -1
- package/dist/cjs/HttpServerResponse.js.map +1 -1
- package/dist/cjs/KeyValueStore.js.map +1 -1
- package/dist/cjs/Multipart.js.map +1 -1
- package/dist/cjs/OpenApi.js.map +1 -1
- package/dist/cjs/PlatformLogger.js.map +1 -1
- package/dist/cjs/Socket.js +4 -1
- package/dist/cjs/Socket.js.map +1 -1
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/UrlParams.js.map +1 -1
- package/dist/cjs/internal/httpBody.js +3 -0
- package/dist/cjs/internal/httpBody.js.map +1 -1
- package/dist/cjs/internal/httpClient.js +12 -14
- package/dist/cjs/internal/httpClient.js.map +1 -1
- package/dist/cjs/internal/httpClientResponse.js +16 -1
- package/dist/cjs/internal/httpClientResponse.js.map +1 -1
- package/dist/cjs/internal/httpMultiplex.js +3 -0
- package/dist/cjs/internal/httpMultiplex.js.map +1 -1
- package/dist/cjs/internal/httpRouter.js +3 -0
- package/dist/cjs/internal/httpRouter.js.map +1 -1
- package/dist/cjs/internal/httpServerResponse.js +3 -0
- package/dist/cjs/internal/httpServerResponse.js.map +1 -1
- package/dist/dts/Command.d.ts +134 -0
- package/dist/dts/Command.d.ts.map +1 -1
- package/dist/dts/Cookies.d.ts +120 -0
- package/dist/dts/Cookies.d.ts.map +1 -1
- package/dist/dts/Effectify.d.ts +9 -0
- package/dist/dts/Effectify.d.ts.map +1 -1
- package/dist/dts/Headers.d.ts +56 -0
- package/dist/dts/Headers.d.ts.map +1 -1
- package/dist/dts/HttpApi.d.ts +58 -0
- package/dist/dts/HttpApi.d.ts.map +1 -1
- package/dist/dts/HttpApiBuilder.d.ts +84 -0
- package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
- package/dist/dts/HttpApiEndpoint.d.ts +118 -0
- package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/dts/HttpApiGroup.d.ts +100 -0
- package/dist/dts/HttpApiGroup.d.ts.map +1 -1
- package/dist/dts/HttpApiSchema.d.ts +16 -0
- package/dist/dts/HttpApiSchema.d.ts.map +1 -1
- package/dist/dts/HttpApiSecurity.d.ts +16 -0
- package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
- package/dist/dts/HttpApp.d.ts.map +1 -1
- package/dist/dts/HttpClient.d.ts +308 -0
- package/dist/dts/HttpClient.d.ts.map +1 -1
- package/dist/dts/HttpClientError.d.ts +5 -0
- package/dist/dts/HttpClientError.d.ts.map +1 -1
- package/dist/dts/HttpClientRequest.d.ts +208 -0
- package/dist/dts/HttpClientRequest.d.ts.map +1 -1
- package/dist/dts/HttpClientResponse.d.ts +30 -0
- package/dist/dts/HttpClientResponse.d.ts.map +1 -1
- package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/dts/HttpMiddleware.d.ts +24 -0
- package/dist/dts/HttpMiddleware.d.ts.map +1 -1
- package/dist/dts/HttpMultiplex.d.ts +72 -0
- package/dist/dts/HttpMultiplex.d.ts.map +1 -1
- package/dist/dts/HttpRouter.d.ts +184 -0
- package/dist/dts/HttpRouter.d.ts.map +1 -1
- package/dist/dts/HttpServer.d.ts +32 -0
- package/dist/dts/HttpServer.d.ts.map +1 -1
- package/dist/dts/HttpServerResponse.d.ts +96 -0
- package/dist/dts/HttpServerResponse.d.ts.map +1 -1
- package/dist/dts/KeyValueStore.d.ts +8 -0
- package/dist/dts/KeyValueStore.d.ts.map +1 -1
- package/dist/dts/Multipart.d.ts +32 -0
- package/dist/dts/Multipart.d.ts.map +1 -1
- package/dist/dts/OpenApi.d.ts +8 -0
- package/dist/dts/OpenApi.d.ts.map +1 -1
- package/dist/dts/PlatformLogger.d.ts +46 -0
- package/dist/dts/PlatformLogger.d.ts.map +1 -1
- package/dist/dts/Socket.d.ts +8 -0
- package/dist/dts/Socket.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts +8 -0
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/UrlParams.d.ts +64 -0
- package/dist/dts/UrlParams.d.ts.map +1 -1
- package/dist/dts/internal/httpRouter.d.ts.map +1 -1
- package/dist/esm/Command.js.map +1 -1
- package/dist/esm/Cookies.js.map +1 -1
- package/dist/esm/Effectify.js.map +1 -1
- package/dist/esm/Headers.js.map +1 -1
- package/dist/esm/HttpApi.js.map +1 -1
- package/dist/esm/HttpApiBuilder.js.map +1 -1
- package/dist/esm/HttpApiEndpoint.js.map +1 -1
- package/dist/esm/HttpApiGroup.js.map +1 -1
- package/dist/esm/HttpApiSchema.js.map +1 -1
- package/dist/esm/HttpApiSecurity.js.map +1 -1
- package/dist/esm/HttpApp.js.map +1 -1
- package/dist/esm/HttpClient.js +7 -0
- package/dist/esm/HttpClient.js.map +1 -1
- package/dist/esm/HttpClientError.js +6 -0
- package/dist/esm/HttpClientError.js.map +1 -1
- package/dist/esm/HttpClientRequest.js.map +1 -1
- package/dist/esm/HttpClientResponse.js +10 -0
- package/dist/esm/HttpClientResponse.js.map +1 -1
- package/dist/esm/HttpIncomingMessage.js.map +1 -1
- package/dist/esm/HttpMiddleware.js.map +1 -1
- package/dist/esm/HttpMultiplex.js.map +1 -1
- package/dist/esm/HttpRouter.js.map +1 -1
- package/dist/esm/HttpServer.js.map +1 -1
- package/dist/esm/HttpServerResponse.js.map +1 -1
- package/dist/esm/KeyValueStore.js.map +1 -1
- package/dist/esm/Multipart.js.map +1 -1
- package/dist/esm/OpenApi.js.map +1 -1
- package/dist/esm/PlatformLogger.js.map +1 -1
- package/dist/esm/Socket.js +4 -1
- package/dist/esm/Socket.js.map +1 -1
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/UrlParams.js.map +1 -1
- package/dist/esm/internal/httpBody.js +3 -0
- package/dist/esm/internal/httpBody.js.map +1 -1
- package/dist/esm/internal/httpClient.js +11 -13
- package/dist/esm/internal/httpClient.js.map +1 -1
- package/dist/esm/internal/httpClientResponse.js +14 -0
- package/dist/esm/internal/httpClientResponse.js.map +1 -1
- package/dist/esm/internal/httpMultiplex.js +3 -0
- package/dist/esm/internal/httpMultiplex.js.map +1 -1
- package/dist/esm/internal/httpRouter.js +3 -0
- package/dist/esm/internal/httpRouter.js.map +1 -1
- package/dist/esm/internal/httpServerResponse.js +3 -0
- package/dist/esm/internal/httpServerResponse.js.map +1 -1
- package/package.json +3 -3
- package/src/Command.ts +134 -0
- package/src/Cookies.ts +128 -38
- package/src/Effectify.ts +9 -0
- package/src/Headers.ts +106 -7
- package/src/HttpApi.ts +58 -0
- package/src/HttpApiBuilder.ts +85 -3
- package/src/HttpApiEndpoint.ts +121 -9
- package/src/HttpApiGroup.ts +102 -7
- package/src/HttpApiSchema.ts +22 -4
- package/src/HttpApiSecurity.ts +16 -0
- package/src/HttpApp.ts +8 -0
- package/src/HttpClient.ts +315 -11
- package/src/HttpClientError.ts +7 -0
- package/src/HttpClientRequest.ts +213 -1
- package/src/HttpClientResponse.ts +33 -0
- package/src/HttpIncomingMessage.ts +8 -0
- package/src/HttpMiddleware.ts +24 -0
- package/src/HttpMultiplex.ts +72 -0
- package/src/HttpRouter.ts +189 -18
- package/src/HttpServer.ts +34 -6
- package/src/HttpServerResponse.ts +98 -10
- package/src/KeyValueStore.ts +8 -0
- package/src/Multipart.ts +32 -0
- package/src/OpenApi.ts +31 -18
- package/src/PlatformLogger.ts +46 -0
- package/src/Socket.ts +19 -13
- package/src/Transferable.ts +9 -3
- package/src/UrlParams.ts +64 -0
- package/src/internal/httpBody.ts +3 -0
- package/src/internal/httpClient.ts +41 -26
- package/src/internal/httpClientResponse.ts +40 -1
- package/src/internal/httpMultiplex.ts +3 -0
- package/src/internal/httpRouter.ts +3 -0
- package/src/internal/httpServerResponse.ts +3 -0
|
@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer"
|
|
|
12
12
|
import { pipeArguments } from "effect/Pipeable"
|
|
13
13
|
import * as Predicate from "effect/Predicate"
|
|
14
14
|
import * as Ref from "effect/Ref"
|
|
15
|
-
import
|
|
15
|
+
import * as Schedule from "effect/Schedule"
|
|
16
16
|
import * as Scope from "effect/Scope"
|
|
17
17
|
import * as Cookies from "../Cookies.js"
|
|
18
18
|
import * as Headers from "../Headers.js"
|
|
@@ -24,6 +24,7 @@ import * as TraceContext from "../HttpTraceContext.js"
|
|
|
24
24
|
import * as UrlParams from "../UrlParams.js"
|
|
25
25
|
import * as internalBody from "./httpBody.js"
|
|
26
26
|
import * as internalRequest from "./httpClientRequest.js"
|
|
27
|
+
import * as internalResponse from "./httpClientResponse.js"
|
|
27
28
|
|
|
28
29
|
/** @internal */
|
|
29
30
|
export const TypeId: Client.TypeId = Symbol.for(
|
|
@@ -235,36 +236,13 @@ export const filterStatus = dual<
|
|
|
235
236
|
self: Client.HttpClient.WithResponse<E, R>,
|
|
236
237
|
f: (status: number) => boolean
|
|
237
238
|
) => Client.HttpClient.WithResponse<E | Error.ResponseError, R>
|
|
238
|
-
>(2, (self, f) =>
|
|
239
|
-
transform(self, (effect, request) =>
|
|
240
|
-
Effect.filterOrFail(
|
|
241
|
-
effect,
|
|
242
|
-
(response) => f(response.status),
|
|
243
|
-
(response) =>
|
|
244
|
-
new Error.ResponseError({
|
|
245
|
-
request,
|
|
246
|
-
response,
|
|
247
|
-
reason: "StatusCode",
|
|
248
|
-
description: "invalid status code"
|
|
249
|
-
})
|
|
250
|
-
)))
|
|
239
|
+
>(2, (self, f) => transformResponse(self, Effect.flatMap(internalResponse.filterStatus(f))))
|
|
251
240
|
|
|
252
241
|
/** @internal */
|
|
253
242
|
export const filterStatusOk = <E, R>(
|
|
254
243
|
self: Client.HttpClient.WithResponse<E, R>
|
|
255
244
|
): Client.HttpClient.WithResponse<E | Error.ResponseError, R> =>
|
|
256
|
-
|
|
257
|
-
Effect.filterOrFail(
|
|
258
|
-
effect,
|
|
259
|
-
(response) => response.status >= 200 && response.status < 300,
|
|
260
|
-
(response) =>
|
|
261
|
-
new Error.ResponseError({
|
|
262
|
-
request,
|
|
263
|
-
response,
|
|
264
|
-
reason: "StatusCode",
|
|
265
|
-
description: "non 2xx status code"
|
|
266
|
-
})
|
|
267
|
-
))
|
|
245
|
+
transformResponse(self, Effect.flatMap(internalResponse.filterStatusOk))
|
|
268
246
|
|
|
269
247
|
/** @internal */
|
|
270
248
|
export const transformResponse = dual<
|
|
@@ -653,6 +631,43 @@ export const retry: {
|
|
|
653
631
|
): Client.HttpClient<A, E, R | R1> => transformResponse(self, Effect.retry(policy))
|
|
654
632
|
)
|
|
655
633
|
|
|
634
|
+
/** @internal */
|
|
635
|
+
export const retryTransient: {
|
|
636
|
+
<B, E, R1 = never>(
|
|
637
|
+
options: {
|
|
638
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
639
|
+
readonly times?: number
|
|
640
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
641
|
+
): <A, R>(self: Client.HttpClient<A, E, R>) => Client.HttpClient<A, E, R1 | R>
|
|
642
|
+
<A, E, R, B, R1 = never>(
|
|
643
|
+
self: Client.HttpClient<A, E, R>,
|
|
644
|
+
options: {
|
|
645
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
646
|
+
readonly times?: number
|
|
647
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
648
|
+
): Client.HttpClient<A, E, R1 | R>
|
|
649
|
+
} = dual(
|
|
650
|
+
2,
|
|
651
|
+
<A, E extends E0, E0, R, B, R1 = never>(
|
|
652
|
+
self: Client.HttpClient<A, E, R>,
|
|
653
|
+
options: {
|
|
654
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
655
|
+
readonly times?: number
|
|
656
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
657
|
+
): Client.HttpClient<A, E, R | R1> =>
|
|
658
|
+
transformResponse(
|
|
659
|
+
self,
|
|
660
|
+
Effect.retry({
|
|
661
|
+
while: (error) =>
|
|
662
|
+
Error.isHttpClientError(error) &&
|
|
663
|
+
((error._tag === "RequestError" && error.reason === "Transport") ||
|
|
664
|
+
(error._tag === "ResponseError" && error.response.status >= 429)),
|
|
665
|
+
schedule: Schedule.ScheduleTypeId in options ? options : options.schedule,
|
|
666
|
+
times: Schedule.ScheduleTypeId in options ? undefined : options.times
|
|
667
|
+
})
|
|
668
|
+
)
|
|
669
|
+
)
|
|
670
|
+
|
|
656
671
|
/** @internal */
|
|
657
672
|
export const schemaFunction = dual<
|
|
658
673
|
<SA, SI, SR>(
|
|
@@ -29,7 +29,7 @@ class ClientResponseImpl extends Inspectable.Class implements ClientResponse.Htt
|
|
|
29
29
|
readonly [TypeId]: ClientResponse.TypeId
|
|
30
30
|
|
|
31
31
|
constructor(
|
|
32
|
-
|
|
32
|
+
readonly request: ClientRequest.HttpClientRequest,
|
|
33
33
|
private readonly source: globalThis.Response
|
|
34
34
|
) {
|
|
35
35
|
super()
|
|
@@ -240,3 +240,42 @@ export const matchStatus = dual<
|
|
|
240
240
|
}
|
|
241
241
|
return cases.orElse(self)
|
|
242
242
|
})
|
|
243
|
+
|
|
244
|
+
/** @internal */
|
|
245
|
+
export const filterStatus = dual<
|
|
246
|
+
(
|
|
247
|
+
f: (status: number) => boolean
|
|
248
|
+
) => (
|
|
249
|
+
self: ClientResponse.HttpClientResponse
|
|
250
|
+
) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>,
|
|
251
|
+
(
|
|
252
|
+
self: ClientResponse.HttpClientResponse,
|
|
253
|
+
f: (status: number) => boolean
|
|
254
|
+
) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>
|
|
255
|
+
>(
|
|
256
|
+
2,
|
|
257
|
+
(self, f) =>
|
|
258
|
+
Effect.suspend(() =>
|
|
259
|
+
f(self.status) ? Effect.succeed(self) : Effect.fail(
|
|
260
|
+
new Error.ResponseError({
|
|
261
|
+
response: self,
|
|
262
|
+
request: self.request,
|
|
263
|
+
reason: "StatusCode",
|
|
264
|
+
description: "invalid status code"
|
|
265
|
+
})
|
|
266
|
+
)
|
|
267
|
+
)
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
/** @internal */
|
|
271
|
+
export const filterStatusOk = (
|
|
272
|
+
self: ClientResponse.HttpClientResponse
|
|
273
|
+
): Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError> =>
|
|
274
|
+
self.status >= 200 && self.status < 300 ? Effect.succeed(self) : Effect.fail(
|
|
275
|
+
new Error.ResponseError({
|
|
276
|
+
response: self,
|
|
277
|
+
request: self.request,
|
|
278
|
+
reason: "StatusCode",
|
|
279
|
+
description: "non 2xx status code"
|
|
280
|
+
})
|
|
281
|
+
)
|
|
@@ -200,6 +200,9 @@ class RouterImpl<E = never, R = never> extends Effectable.StructuralClass<
|
|
|
200
200
|
toString() {
|
|
201
201
|
return Inspectable.format(this)
|
|
202
202
|
}
|
|
203
|
+
[Inspectable.DenoInspectSymbol]() {
|
|
204
|
+
return this.toJSON()
|
|
205
|
+
}
|
|
203
206
|
[Inspectable.NodeInspectSymbol]() {
|
|
204
207
|
return this.toJSON()
|
|
205
208
|
}
|