import { SinkInternal } from "@effect/core/stream/Sink/operations/_internal/SinkInternal" /** * A sink that takes the specified number of values. * * @tsplus static effect/core/stream/Sink.Ops take */ export function take( n: number ): Sink> { return Sink.foldChunks>( Chunk.empty(), (chunk) => chunk.length < n, (acc, input) => acc + input ).flatMap((acc) => { const [taken, leftover] = acc.splitAt(n) return new SinkInternal(Channel.write(leftover).flatMap(() => Channel.succeed(taken))) }) }