import { SinkInternal } from "@effect/core/stream/Sink/operations/_internal/SinkInternal" /** * @tsplus static effect/core/stream/Sink.Ops dropWhileEffect */ export function dropWhileEffect( p: (input: In) => Effect ): Sink { const loop: Channel< R, E, Chunk, unknown, E, Chunk, unknown > = Channel.readWith( (input: Chunk) => Channel.unwrap( Effect.dropWhile(input, p) .map((leftover) => leftover.isEmpty ? loop : Channel.write(leftover).flatMap(() => Channel.identity, unknown>()) ) ), (err) => Channel.fail(err), () => Channel.unit ) return new SinkInternal(loop) }