Skip to content

Commit

Permalink
fix support for Predicates in Predicate.compose (#3000)
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart authored Jun 17, 2024
1 parent 06ede85 commit 7204ca5
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .changeset/tidy-pandas-juggle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": patch
---

fix support for Predicates in Predicate.compose
3 changes: 3 additions & 0 deletions packages/effect/dtslint/Predicate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,9 @@ Predicate.compose(Predicate.isString, (
s // $ExpectType string
): s is NonEmptyString => s.length > 0)

// $ExpectType Refinement<unknown, string>
pipe(Predicate.isString, Predicate.compose((s) => /^a/.test(s)))

// -------------------------------------------------------------------------------------
// and
// -------------------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions packages/effect/src/Predicate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,9 @@ export const isPromiseLike = (
*/
export const compose: {
<A, B extends A, C extends B>(bc: Refinement<B, C>): (ab: Refinement<A, B>) => Refinement<A, C>
<A, B extends A>(bc: Predicate<NoInfer<B>>): (ab: Refinement<A, B>) => Refinement<A, B>
<A, B extends A, C extends B>(ab: Refinement<A, B>, bc: Refinement<B, C>): Refinement<A, C>
<A, B extends A>(ab: Refinement<A, B>, bc: Predicate<NoInfer<B>>): Refinement<A, B>
} = dual(
2,
<A, B extends A, C extends B>(ab: Refinement<A, B>, bc: Refinement<B, C>): Refinement<A, C> => (a): a is C =>
Expand Down

0 comments on commit 7204ca5

Please sign in to comment.