rx-synchronizer
Version:
Commonly-used synchronizer bases that can be composed into more specific purposes.
32 lines (31 loc) • 1.27 kB
TypeScript
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;
}