From e0d21a54c8323728fbb75a32f4820a9996257809 Mon Sep 17 00:00:00 2001 From: Sebastian Lorenz Date: Thu, 12 Sep 2024 22:56:50 +0200 Subject: [PATCH] add filter refinement overloads to http client (#3595) --- .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 45f8b3d819..d89b55738e 100644 --- a/packages/platform/src/HttpClient.ts +++ b/packages/platform/src/HttpClient.ts @@ -174,15 +174,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 /** @@ -190,15 +201,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 8fc588308f..3398146422 100644 --- a/packages/platform/src/internal/httpClient.ts +++ b/packages/platform/src/internal/httpClient.ts @@ -476,32 +476,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<