@fbltd/async
Version:
Miscellaneous async utils
32 lines (31 loc) • 942 B
TypeScript
import { Dependency } from "./dependency.ts";
export interface IStreamIterator<TValue = any> {
owner: Dependency;
dispose(): void;
readonly isDisposed: boolean;
next(): Promise<IteratorResult<TValue, void>>;
}
export interface IDependencyStream<TValue = any> {
dispose(): void;
readonly isDisposed: boolean;
[Symbol.asyncIterator](): AsyncIterator<TValue, void>;
}
export interface IIsEquals<T> {
(prev: T, cur: T): boolean;
}
export type IAllStreamConfig<T> = {
withCustomEquality: IIsEquals<T>;
/**
* Reaction happens anyway right after current task
* wherever dependency was disposed
*/
withReactionOnSubscribe: boolean;
};
export type IThisStreamConfig = Partial<{
/**
* Reaction happens right after current task
* wherever dependency itself was disposed, but
* stream dispose has priority over first reaction
*/
withReactionOnSubscribe: boolean;
}>;