@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
TypeScript
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>;
}