delta-sync
Version:
A lightweight framework for bi-directional database synchronization with automatic version tracking and conflict resolution.
24 lines (23 loc) • 1.43 kB
TypeScript
import { DeltaModel, DatabaseAdapter, DataChange, Attachment, AttachmentChange } from './types';
import { EncryptionConfig } from './SyncConfig';
export declare class LocalCoordinator {
localAdapter: DatabaseAdapter;
private encryptionConfig?;
private readonly LOCAL_CHANGES_STORE;
private readonly ATTACHMENT_CHANGES_STORE;
private readonly META_STORE;
private readonly VERSION_KEY;
constructor(localAdapter: DatabaseAdapter, encryptionConfig?: EncryptionConfig);
putBulk<T extends DeltaModel>(storeName: string, items: T[], skipTracking?: boolean): Promise<T[]>;
deleteBulk(storeName: string, ids: string[], skipTracking?: boolean): Promise<void>;
attachFile(modelId: string, storeName: string, file: File | Blob | ArrayBuffer, filename: string, mimeType: string, metadata?: any): Promise<Attachment>;
detachFile(storeName: string, modelId: string, attachmentId: string): Promise<DeltaModel>;
private trackAttachmentChange;
private trackDataChange;
applyDataChange<T extends DeltaModel>(changes: DataChange<T>[]): Promise<void>;
applyAttachmentChanges(changes: AttachmentChange[]): Promise<void>;
getPendingChanges(since: number, limit?: number): Promise<DataChange[]>;
getPendingAttachmentChanges(since: number, limit?: number): Promise<AttachmentChange[]>;
updateCurrentVersion(timestamp: number): Promise<void>;
getCurrentVersion(): Promise<number>;
}