jinaga
Version:
Data management for web and mobile applications.
43 lines • 1.54 kB
TypeScript
import { FactManager } from "../managers/factManager";
import { Specification } from "../specification/specification";
import { FactReference, ProjectedResult } from "../storage";
export declare type ResultAddedFunc<U> = (value: U) => Promise<() => Promise<void>> | // Asynchronous with removal function
Promise<void> | // Asynchronous without removal function
(() => void) | // Synchronous with removal function
void;
export interface ObservableCollection<T> {
onAdded(handler: ResultAddedFunc<T>): void;
}
export interface Observer<T> {
cached(): Promise<boolean>;
loaded(): Promise<void>;
stop(): void;
}
export declare class ObserverImpl<T> implements Observer<T> {
private factManager;
private given;
private specification;
private givenHash;
private cachedPromise;
private loadedPromise;
private listeners;
private removalsByTuple;
private notifiedTuples;
private addedHandlers;
private specificationHash;
private feeds;
private stopped;
constructor(factManager: FactManager, given: FactReference[], specification: Specification, resultAdded: ResultAddedFunc<T>);
start(keepAlive: boolean): void;
private addSpecificationListeners;
cached(): Promise<boolean>;
loaded(): Promise<void>;
stop(): void;
private fetch;
private read;
private onResult;
private notifyAdded;
notifyRemoved(resultSubset: string[], projectedResult: ProjectedResult[]): Promise<void>;
private injectObservers;
}
//# sourceMappingURL=observer.d.ts.map