diff --git a/.changeset/thick-coats-buy.md b/.changeset/thick-coats-buy.md new file mode 100644 index 0000000000..8cc5fdb2e0 --- /dev/null +++ b/.changeset/thick-coats-buy.md @@ -0,0 +1,5 @@ +--- +"@effect/platform": patch +--- + +Added refinement overloads to `HttpClient.filterOrFail` and `HttpClient.filterOrElse` diff --git a/packages/platform/src/HttpClient.ts b/packages/platform/src/HttpClient.ts index 1240abcb73..58c10d2e6d 100644 --- a/packages/platform/src/HttpClient.ts +++ b/packages/platform/src/HttpClient.ts @@ -200,15 +200,26 @@ export const catchTags: { * @category filters */ export const filterOrElse: { + ( + refinement: Predicate.Refinement, B>, + orElse: (a: NoInfer) => Effect.Effect + ): (self: HttpClient) => HttpClient ( - f: Predicate.Predicate, - orElse: (a: A) => Effect.Effect - ): (self: HttpClient) => HttpClient + predicate: Predicate.Predicate>, + orElse: (a: NoInfer) => Effect.Effect + ): ( + self: HttpClient + ) => HttpClient + ( + self: HttpClient, + refinement: Predicate.Refinement, + orElse: (a: A) => Effect.Effect + ): HttpClient ( self: HttpClient, - f: Predicate.Predicate, + predicate: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ): HttpClient + ): HttpClient } = internal.filterOrElse /** @@ -216,15 +227,24 @@ export const filterOrElse: { * @category filters */ export const filterOrFail: { + ( + refinement: Predicate.Refinement, B>, + orFailWith: (a: NoInfer) => E2 + ): (self: HttpClient) => HttpClient ( - f: Predicate.Predicate, - orFailWith: (a: A) => E2 + predicate: Predicate.Predicate>, + orFailWith: (a: NoInfer) => E2 ): (self: HttpClient) => HttpClient + ( + self: HttpClient, + refinement: Predicate.Refinement, + orFailWith: (a: A) => E2 + ): HttpClient ( self: HttpClient, - f: Predicate.Predicate, + predicate: Predicate.Predicate, orFailWith: (a: A) => E2 - ): HttpClient + ): HttpClient } = internal.filterOrFail /** diff --git a/packages/platform/src/internal/httpClient.ts b/packages/platform/src/internal/httpClient.ts index 7cee624e0e..2949c7d43a 100644 --- a/packages/platform/src/internal/httpClient.ts +++ b/packages/platform/src/internal/httpClient.ts @@ -510,32 +510,50 @@ export const catchAll: { ) /** @internal */ -export const filterOrElse = dual< +export const filterOrElse: { + ( + refinement: Predicate.Refinement, B>, + orElse: (a: NoInfer) => Effect.Effect + ): (self: Client.HttpClient) => Client.HttpClient ( - f: Predicate.Predicate, - orElse: (a: A) => Effect.Effect - ) => ( + predicate: Predicate.Predicate>, + orElse: (a: NoInfer) => Effect.Effect + ): ( self: Client.HttpClient - ) => Client.HttpClient, + ) => Client.HttpClient + ( + self: Client.HttpClient, + refinement: Predicate.Refinement, + orElse: (a: A) => Effect.Effect + ): Client.HttpClient ( self: Client.HttpClient, - f: Predicate.Predicate, + predicate: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ) => Client.HttpClient ->(3, (self, f, orElse) => transformResponse(self, Effect.filterOrElse(f, orElse))) + ): Client.HttpClient +} = dual(3, (self, f, orElse) => transformResponse(self, Effect.filterOrElse(f, orElse))) /** @internal */ -export const filterOrFail = dual< +export const filterOrFail: { + ( + refinement: Predicate.Refinement, B>, + orFailWith: (a: NoInfer) => E2 + ): (self: Client.HttpClient) => Client.HttpClient ( - f: Predicate.Predicate, + predicate: Predicate.Predicate>, + orFailWith: (a: NoInfer) => E2 + ): (self: Client.HttpClient) => Client.HttpClient + ( + self: Client.HttpClient, + refinement: Predicate.Refinement, orFailWith: (a: A) => E2 - ) => (self: Client.HttpClient) => Client.HttpClient, + ): Client.HttpClient ( self: Client.HttpClient, - f: Predicate.Predicate, + predicate: Predicate.Predicate, orFailWith: (a: A) => E2 - ) => Client.HttpClient ->(3, (self, f, orFailWith) => transformResponse(self, Effect.filterOrFail(f, orFailWith))) + ): Client.HttpClient +} = dual(3, (self, f, orFailWith) => transformResponse(self, Effect.filterOrFail(f, orFailWith))) /** @internal */ export const map = dual<