master
push-take-until
Take values from a source stream until a signal stream emits or ends.
Published as @push-stream-std/push-take-until.
Synopsis
import takeUntil from '@push-stream-std/push-take-until';
const signal = pushable();
const untilSignal = takeUntil(signal);
values([1, 2, 3, 4, 5]).pipe(untilSignal).pipe(collect(function (err, result) {
console.log(result); // [1, 2] — signal ended after 2 values
}));
// End the signal stream to stop the outer stream
signal.end();
Install
npm config set @push-stream-std:registry https://hub.kl1.tenere.ai/api/packages/push-stream-std/npm/
npm config set -- //hub.kl1.tenere.ai/api/packages/push-stream-std/npm/:_authToken "$PACKAGE_TOKEN"
npm install @push-stream-std/push-take-until
Description
A push-stream through that passes through values from the source until the provided signal stream ends. When the signal stream ends (either normally or via abort), the take-until stream immediately ends the upstream source and downstream sink, closing the pipeline. This is useful for implementing cancellation patterns — for example, taking values from an event stream until a "stop" button is clicked.
API
takeUntil(signalStream)
Creates a take-until through stream.
- signalStream
object– A push-stream source. The take-until stream pipes the signal stream to an internal sink that tracks when the signal ends. When the signal'send()orabort()fires, the take-until stream ends. - Returns A through object with
pipe(),write(),end(),abort(),resume(),source,paused,ended.
Tests
npm test
Tests cover passthrough before signal ends, stopping after signal end, normal end without signal, signal abort propagation, and idempotent signal end handling.
Requirements
Node.js 18 or later. ESM only.
License
MIT
Description
Languages
JavaScript
100%