@fbltd/async
Version:
Miscellaneous async utils
38 lines (37 loc) • 1.18 kB
TypeScript
import { PromiseConfiguration } from "../promise-configuration.js";
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;
/**
* Dispose happens anyway right after current task,
* wherever value of dependency was changed
*/
externalDispose: PromiseConfiguration<any>;
}>;