UNPKG

rx-synchronizer

Version:

Commonly-used synchronizer bases that can be composed into more specific purposes.

32 lines (31 loc) 1.27 kB
import { Never, Try } from 'javascriptutilities'; import { NextObserver, Observable, ObservableInput, SchedulerLike } from 'rxjs'; import * as ProgressSync from './progress'; export declare type BaseDepn = Pick<ProgressSync.Depn, 'progressReceiver' | 'stopStream'> & Readonly<{ /** * If this is true, duplicate params will be filtered out with an operator. */ allowDuplicateParams: boolean; description: string; errorReceiver: NextObserver<Never<Error>>; resultReceiptScheduler?: SchedulerLike; }>; export declare type Depn<Param, Result> = BaseDepn & Readonly<{ paramStream: Observable<Try<Param>>; resultReceiver: NextObserver<Never<Result>>; validateParam: (param: Param) => Error[] | Observable<Error[]>; modifyWithParam: (params: Param) => ObservableInput<Result>; }>; /** * Synchronizer that validates and modifies some data on trigger. */ export declare type Type = Readonly<{ synchronize: <Param, Result>(dependency: Depn<Param, Result>) => void; }>; export declare class Impl implements Type { private readonly progressSync; private readonly subscription; constructor(); constructor(progressSync: ProgressSync.Type); synchronize<Param, Result>(dependency: Depn<Param, Result>): void; }