Import
import { Push } from "@typed/fx";Access Push.mapEffect 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 mapEffect: {
<B, C, E3, R3>(f: (b: B) => Effect.Effect<C, E3, R3>): <A, E, R, E2, R2>(push: Push<A, E, R, B, E2, R2>) => Push<A, E, R, C, E2 | E3, R2 | R3>;
<A, E, R, B, E2, R2, C, E3, R3>(push: Push<A, E, R, B, E2, R2>, f: (b: B) => Effect.Effect<C, E3, R3>): Push<A, E, R, C, E2 | E3, R2 | R3>;
};Why
Use this for output enrichment that needs Effect services or can fail while keeping input handling independent.
Ownership and lifetime
Each mapper Effect runs inside the output subscription and is interrupted with
it. No work starts before run; cleanup belongs to the upstream Fx and mapper
effects. mapEffect itself introduces no separate buffer or long-lived fiber.
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.succeed(2))
const doubled = Push.mapEffect(push, (n) => Effect.succeed(n * 2))Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.