UNPKG

crann

Version:

Effortless State Synchronization for Web Extensions

61 lines (60 loc) 2.91 kB
import { DerivedInstanceState, DerivedServiceState, DerivedState, CrannOptions, AnyConfig, StateChangeListener, MergeStateTypes } from "./model/crann.model"; import { AgentInfo, Agent, BrowserLocation } from "./transport"; export declare class Crann<TConfig extends AnyConfig> { private config; private static instance; private instances; private defaultServiceState; private defaultInstanceState; private serviceState; private stateChangeListeners; private instanceReadyListeners; private storagePrefix; private porter; private rpcEndpoint; private logger; constructor(config: TConfig, options?: CrannOptions); static getInstance<TConfig extends AnyConfig>(config: TConfig, options?: CrannOptions): Crann<TConfig>; /** * Add an instance to the Crann instance. * @param key The key of the instance to add. * @param agentTag The tag of the agent that is adding the instance, for logging. */ private addInstance; private removeInstance; setServiceState(state: Partial<DerivedServiceState<TConfig>>): Promise<void>; setInstanceState(key: string, state: Partial<DerivedInstanceState<TConfig>>): Promise<void>; private persist; clear(): Promise<void>; subscribe(listener: StateChangeListener<TConfig>): void; private notify; get(): DerivedState<TConfig>; get(key: string): DerivedInstanceState<TConfig> & DerivedServiceState<TConfig>; findInstance(location: BrowserLocation): string | null; queryAgents(query: Partial<BrowserLocation>): Agent[]; set(state: Partial<DerivedServiceState<TConfig>>): Promise<void>; set(state: Partial<MergeStateTypes<DerivedInstanceState<TConfig>, DerivedServiceState<TConfig>>>, key: string): Promise<void>; private hydrate; private removePrefix; private initializeInstanceDefault; private initializeServiceDefault; subscribeToInstanceReady(listener: (instanceId: string, agent: AgentInfo) => void): () => void; private notifyInstanceReady; private extractActions; } export interface CrannAPI<TConfig extends AnyConfig> { get: { (): DerivedState<TConfig>; (key: string): DerivedInstanceState<TConfig> & DerivedServiceState<TConfig>; }; set: { (state: Partial<DerivedServiceState<TConfig>>): Promise<void>; (state: Partial<MergeStateTypes<DerivedInstanceState<TConfig>, DerivedServiceState<TConfig>>>, key: string): Promise<void>; }; subscribe: (listener: StateChangeListener<TConfig>) => void; onInstanceReady: (listener: (instanceId: string, agent: AgentInfo) => void) => () => void; findInstance: (location: BrowserLocation) => string | null; queryAgents: (query: Partial<BrowserLocation>) => Agent[]; clear: () => Promise<void>; } export declare function create<TConfig extends AnyConfig>(config: TConfig, options?: CrannOptions): CrannAPI<TConfig>;