UNPKG

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
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>; }