UNPKG

delta-sync

Version:

A lightweight framework for bi-directional database synchronization with automatic version tracking and conflict resolution.

77 lines (76 loc) 2.02 kB
import { DataChange } from '../types/Queue'; import { DatabaseAdapter } from '../types/DatabaseAdapter'; export interface SyncOptions { batchSize?: number; maxPayloadSize?: number; autoSync?: boolean; syncInterval?: number; retryCount?: number; onProgress?: (progress: SyncProgress) => void; onError?: (error: Error) => void; } export interface SyncProgress { phase: 'push' | 'pull' | 'complete'; processed: number; total: number; details?: any; } export interface CloudAdapter { processSyncQueue(changes: DataChange[]): Promise<SyncResponse>; fetchChanges(query: { since: number; }): Promise<SyncDataResponse>; } export interface SyncResponse { success: boolean; error?: string; processed?: number; info?: { used: number; quota: number; }; } export interface SyncDataResponse { success: boolean; error?: string; changes?: DataChange[]; timestamp?: number; } export declare enum SyncStatus { Idle = "idle", Uploading = "uploading", Downloading = "downloading", Error = "error", Offline = "offline" } export declare class SyncEngine { private localAdapter; private cloudAdapter; private options; private pendingQueue; private status; private syncVersion; private isSyncing; private syncTimer; private errorMessage; constructor(localAdapter: DatabaseAdapter, cloudAdapter: CloudAdapter, options?: SyncOptions); getStatus(): { status: SyncStatus; errorMessage: string; pendingChanges: number; }; enqueueChanges(changes: DataChange[]): void; private debounceTimer; private debounceSync; startAutoSync(): void; stopAutoSync(): void; initSync(): Promise<void>; pushChanges(): Promise<void>; pullChanges(): Promise<void>; syncAll(): Promise<void>; private prepareBatch; private processRemoteChange; private estimateSize; clearPendingQueue(): void; destroy(): void; }