@river-build/sdk
Version:
For more details, visit the following resources:
37 lines • 1.19 kB
TypeScript
import { Observable } from './observable';
import { LoadPriority, Store, Identifiable } from '../store/store';
export interface PersistedOpts {
tableName: string;
}
export type PersistedModel<T> = {
status: 'loading';
data: T;
} | {
status: 'loaded';
data: T;
} | {
status: 'error';
data: T;
error: Error;
};
interface Storable {
}
export declare function persistedObservable(options: PersistedOpts): <T extends new (...args: any[]) => Storable>(constructor: T) => {
new (...args: any[]): {};
tableName: string;
} & T;
export declare class PersistedObservable<T extends Identifiable> extends Observable<PersistedModel<T>> implements Storable {
protected tableName: string;
protected readonly store: Store;
protected readonly loadPriority: LoadPriority;
constructor(initialValue: T, store: Store, loadPriority?: LoadPriority);
protected load(): void;
get value(): PersistedModel<T>;
setValue(_newValue: PersistedModel<T>): void;
get data(): T;
setData(newDataPartial: Partial<T>): void;
protected onLoaded(): void;
protected onSaved(): void;
}
export {};
//# sourceMappingURL=persistedObservable.d.ts.map