( predicate: (input: In) => Effect.Effect<boolean, E, R> )
| 1765 | * @since 4.0.0 |
| 1766 | */ |
| 1767 | export const takeUntilEffect = <In, E, R>( |
| 1768 | predicate: (input: In) => Effect.Effect<boolean, E, R> |
| 1769 | ): Sink<Array<In>, In, In, E, R> => |
| 1770 | suspend(() => { |
| 1771 | let done = false |
| 1772 | return takeWhileEffect((input) => { |
| 1773 | if (done) { |
| 1774 | return Effect.succeed(false) |
| 1775 | } |
| 1776 | return Effect.map(predicate(input), (b) => { |
| 1777 | done = b |
| 1778 | return true |
| 1779 | }) |
| 1780 | }) |
| 1781 | }) |
| 1782 | |
| 1783 | /** |
| 1784 | * A sink that executes the provided effectful function for every item fed |