@vyer-technologies/offline-first
Version:
Forked from @wora Offline First
63 lines • 2.2 kB
TypeScript
import { CacheOptions } from '@vyer-technologies/cache-persist';
export type Request<T> = {
payload: T;
backup?: any;
sink?: any;
};
export type OfflineRecordCache<T> = {
id: string;
request: Request<T>;
fetchTime: number;
retry?: number;
error?: any;
serial?: boolean;
};
export type OfflineFirstOptions<T> = {
manualExecution?: boolean;
execute: (offlineRecord: OfflineRecordCache<T>) => Promise<any>;
start?: (mutations: Array<OfflineRecordCache<T>>) => Promise<Array<OfflineRecordCache<T>>>;
onExecute?: (mutation: OfflineRecordCache<T>) => Promise<OfflineRecordCache<T>>;
finish?: (mutations: ReadonlyArray<OfflineRecordCache<T>>, error?: Error) => Promise<void>;
onComplete?: (options: {
offlineRecord: OfflineRecordCache<T>;
response: any;
}) => Promise<boolean>;
onDiscard?: (options: {
offlineRecord: OfflineRecordCache<T>;
error: any;
}) => Promise<boolean>;
onPublish?: (offlineRecord: OfflineRecordCache<T>) => Promise<OfflineRecordCache<T>>;
compare?: (v1: OfflineRecordCache<T>, v2: OfflineRecordCache<T>) => number;
};
export declare class OfflineFirst<T> {
private offlineStore;
private busy;
private offlineOptions;
private online;
private rehydrated;
private promisesRestore;
private disposeListener;
constructor(persistOptions?: CacheOptions);
setOfflineOptions(offlineOptions?: OfflineFirstOptions<T>): void;
purge(): Promise<boolean>;
isManualExecution(): boolean;
dispose(): void;
hydrate(): Promise<boolean>;
isOnline(): boolean;
subscribe(callback: (state: any, action: any) => void): () => void;
notify(): void;
getState(): {
[key: string]: any;
};
remove(id: string): Promise<void>;
set(id: string, value: OfflineRecordCache<T>): Promise<void>;
getListMutation(): Array<OfflineRecordCache<T>>;
process(): Promise<void>;
executeMutation(offlineRecord: OfflineRecordCache<T>): Promise<void>;
publish(options: {
id?: string;
request: Request<T>;
serial?: boolean;
}): Promise<OfflineRecordCache<T>>;
}
//# sourceMappingURL=index.d.ts.map