Import
import { Push } from "@typed/fx";Access Push.filterEffect through the imported Push export. Its declaration below describes the member.
This public exposure is a re-export. Its import path is supported; declaration documentation is shared with the other public exposures below.
Signatures
export declare const filterEffect: {
<B, R3, E3>(f: (b: B) => Effect.Effect<boolean, E3, R3>): <A, E, R, E2, R2>(push: Push<A, E, R, B, E2, R2>) => Push<A, E, R, B, E2 | E3, R2 | R3>;
<A, E, R, B, E2, R2, R3, E3>(push: Push<A, E, R, B, E2, R2>, f: (b: B) => Effect.Effect<boolean, E3, R3>): Push<A, E, R, B, E2 | E3, R2 | R3>;
};Why
Use this when an observed event needs an Effect service or fallible check before it is visible downstream.
Ownership and lifetime
Predicate effects run inside and are interrupted with the output subscription.
Their E3 failures and R3 services join the Fx channels. No separate queue or
persistent fiber is introduced.
Examples
import { Effect } from "effect"
import * as Fx from "@typed/fx/Fx"
import * as Push from "@typed/fx/Push"
import * as Sink from "@typed/fx/Sink"
const push = Push.make(Sink.make(() => Effect.void, (_: string) => Effect.void), Fx.fromIterable([1, 2]))
const positive = Push.filterEffect(push, (n) => Effect.succeed(n > 0))Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.