From 7ba0ab0f8c58474f5dc358db373e0693adfa725d Mon Sep 17 00:00:00 2001 From: Sebastian Lorenz Date: Thu, 12 Sep 2024 11:49:50 +0200 Subject: [PATCH] add filter refinement overloads to http client --- .changeset/thick-coats-buy.md | 5 +++ packages/platform/src/HttpClient.ts | 38 ++++++++++++---- packages/platform/src/internal/httpClient.ts | 46 ++++++++++++++------ 3 files changed, 66 insertions(+), 23 deletions(-) create mode 100644 .changeset/thick-coats-buy.md 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<