UNPKG

@orbit/coordinator

Version:

A coordinator and set of coordination strategies for managing data flow and keeping @orbit/data sources in sync.

45 lines (44 loc) 1.52 kB
import { Source } from '@orbit/data'; import { Dict } from '@orbit/utils'; import { Strategy } from './strategy'; export interface CoordinatorOptions { sources?: Source[]; strategies?: Strategy[]; defaultActivationOptions?: ActivationOptions; } export declare enum LogLevel { None = 0, Errors = 1, Warnings = 2, Info = 3 } export interface ActivationOptions { logLevel?: LogLevel; } /** * The Coordinator class manages a set of sources to which it applies a set of * coordination strategies. */ export declare class Coordinator { protected _sources: Dict<Source>; protected _strategies: Dict<Strategy>; protected _activated?: Promise<void>; protected _defaultActivationOptions: ActivationOptions; protected _currentActivationOptions?: ActivationOptions; constructor(options?: CoordinatorOptions); addSource(source: Source): void; removeSource(name: string): void; getSource<T extends Source = Source>(name: string): T; get sources(): Source[]; get sourceNames(): string[]; addStrategy(strategy: Strategy): void; removeStrategy(name: string): void; getStrategy<T extends Strategy = Strategy>(name: string): T; get strategies(): Strategy[]; get strategyNames(): string[]; get activated(): Promise<void> | undefined; activate(options?: ActivationOptions): Promise<void>; deactivate(): Promise<void>; protected _activate(options?: ActivationOptions): Promise<void>; protected _deactivate(): Promise<void>; }