UNPKG

rx-synchronizer

Version:

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

32 lines (31 loc) 1.2 kB
import { Omit, Undefined } from 'javascriptutilities'; import { NextObserver, Observable, SchedulerLike } from 'rxjs'; import * as TriggerSync from './trigger'; export declare type Depn<Query> = Omit<TriggerSync.Depn<Query>, 'triggerReceiver' | 'triggerStream'> & Readonly<{ /** * Only accept the query if the current url matches this pathname. */ acceptableUrlPathName: string; /** * State may mutate repeatedly, which may rapidly change the displayed url * making for ugly UI. This debounce time takes only the last query that * is not followed by anything else after a certain time. */ queryDebounceTime?: number; asyncOperatorScheduler?: SchedulerLike; queryStream: Observable<Query>; urlQueryReceiver: NextObserver<Query>; currentUrlPathName: () => Undefined<string>; }>; /** * Synchronize url query based on current state. */ export declare type Type = Readonly<{ synchronize: <Query>(dependency: Depn<Query>) => void; }>; export declare class Impl implements Type { private readonly triggerSync; constructor(); constructor(triggerSync: TriggerSync.Type); synchronize<Query>(dependency: Depn<Query>): void; }