delta-sync
Version:
A lightweight framework for bi-directional database synchronization with automatic version tracking and conflict resolution.
57 lines (56 loc) • 1.67 kB
TypeScript
import { SyncViewItem } from "./SyncView";
export declare const TOMBSTONE_STORE = "tombStones";
export declare enum SyncStatus {
REJECTED = -3,// Error status
ERROR = -2,// Error status
OFFLINE = -1,// Offline status
IDLE = 0,// Idle status
UPLOADING = 1,// Upload synchronization in progress
DOWNLOADING = 2,// Download synchronization in progress
OPERATING = 3,// Operation in progress (clearing notes and other special operations)
CHECKING = 4
}
export interface SyncResult {
success: boolean;
error?: string;
syncedAt?: number;
stats?: {
uploaded: number;
downloaded: number;
errors: number;
};
}
export interface SyncProgress {
processed: number;
total: number;
}
export interface DataChange<T = any> {
id: string;
_ver: number;
data?: T;
}
export interface DataChangeSet {
put: Map<string, DataChange[]>;
delete: Map<string, DataChange[]>;
}
export interface DatabaseAdapter {
listStoreItems(storeName: string, offset?: number, since?: number, before?: number): Promise<{
items: SyncViewItem[];
hasMore?: boolean;
offset?: number;
}>;
readStore<T extends {
id: string;
}>(storeName: string, limit?: number, offset?: number): Promise<{
items: T[];
hasMore: boolean;
}>;
readBulk<T extends {
id: string;
}>(storeName: string, ids: string[]): Promise<T[]>;
putBulk<T extends {
id: string;
}>(storeName: string, items: T[]): Promise<T[]>;
deleteBulk(storeName: string, ids: string[]): Promise<void>;
clearStore(storeName: string): Promise<boolean>;
}