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