UNPKG

delta-sync

Version:

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

69 lines (68 loc) 2.68 kB
import { DeltaModel, DatabaseAdapter, Attachment, DataChange, QueryOptions } from './types'; import { LocalCoordinator } from './LocalCoordinator'; import { EncryptionConfig } from './SyncConfig'; export declare enum SyncStatus { Error = -2,// Error or offline status Offline = -1,// Error or 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) Maintaining = 4 } export interface SyncClientInitOptions { localAdapter: DatabaseAdapter; encryptionConfig?: EncryptionConfig; syncOption?: SyncOptions; } export interface SyncOptions { autoSync?: { enabled?: boolean; interval?: number; retryDelay?: number; }; onStatusUpdate?: (status: SyncStatus) => void; onVersionUpdate?: (version: number) => void; onChangePulled?: (changes: DataChange[]) => void; onChangePushed?: (changes: DataChange[]) => void; encryption?: EncryptionConfig; maxRetries?: number; timeout?: number; maxFileSize?: number; batchSize?: number; payloadSize?: number; fileChunkSize?: number; } export declare class SyncClient { private localAdapter; private localCoordinator; private cloudCoordinator?; private syncManager?; private syncOptions; private autoSyncTimer?; private syncStatus; private currentVersion; private cloudConfigured; constructor(options: SyncClientInitOptions); private initialize; enableAutoSync(interval?: number): void; disableAutoSync(): void; private scheduleNextSync; updateSyncOptions(options: Partial<SyncOptions>): void; setCloudAdapter(cloudAdapter: DatabaseAdapter): Promise<void>; private updateSyncStatus; query<T extends DeltaModel>(storeName: string, options?: QueryOptions): Promise<T[]>; save<T extends DeltaModel>(storeName: string, data: T | T[]): Promise<T[]>; delete(storeName: string, ids: string | string[]): Promise<void>; readFile(fileId: string): Promise<Blob | ArrayBuffer | null>; attach(storeId: string, modelId: string, file: File | Blob | ArrayBuffer, filename: string, mimeType: string, metadata?: any): Promise<Attachment>; detach(storeName: string, modelId: string, attachmentId: string): Promise<DeltaModel>; sync(): Promise<boolean>; push(): Promise<boolean>; pull(): Promise<boolean>; getlocalCoordinator(): LocalCoordinator; getlocalAdapter(): DatabaseAdapter; getSyncOptions(): SyncOptions; dispose(): void; disconnectCloud(): void; }