@johngw/stream
Version:
Reactive programming tools using the WHATWG Streams API.
30 lines (29 loc) • 740 B
text/typescript
/**
* A common interface for controllable streams.
*
* @group Sources
*/
export interface Controllable<T> extends ReadableStreamDefaultController<T> {
/**
* Register a pull subscriber.
*
* When the stream is ready to pull it will pull from all
* subscribers until the desired size has been fulfilled.
*/
onPull(pullListener: ControllerPullListener<T>): () => void;
}
/**
* The pull listener type for controllables.
*
* @group Sources
*/
export interface ControllerPullListener<T> {
(): T | Promise<T> | undefined;
}
/**
* An interface for a {@link ControllableStream:class}.
*
* @group Sources
*/
export interface ControllableReadableStream<T> extends ReadableStream<T>, Controllable<T> {
}