UNPKG

syncflow-engine

Version:

A flexible and robust data synchronization library for JavaScript applications

42 lines (41 loc) 1.51 kB
export type SyncStatus = "idle" | "syncing" | "error" | "offline"; export type SyncOperation = { id: string; timestamp: number | Date; type: "create" | "update" | "delete"; entity: string; data: unknown; status: "pending" | "completed" | "error"; retryCount: number; }; export interface SyncConfig { retryLimit: number; retryDelay: number; batchSize: number; autoStart: boolean; debug: boolean; entityTypes?: EntityType[]; } export type Entity = { id: string; [key: string]: any; }; export type SyncEvent = "syncStart" | "syncComplete" | "syncError" | "statusChange" | "operationComplete"; export type EntityType = string; export type SyncEventType = SyncEvent | EntityType; export type SyncEventCallback = (data?: unknown) => void; export interface ISyncEngine { init(): Promise<void>; start(): Promise<void>; stop(): Promise<void>; sync(): Promise<void>; getStatus(): SyncStatus; addListener(event: SyncEventType, callback: SyncEventCallback): void; removeListener(event: SyncEventType, callback: SyncEventCallback): void; getEntities(entityType: EntityType): Promise<Entity[]>; getEntityTypes(): EntityType[]; addEntityListener(entityType: EntityType, callback: (entities: Entity[]) => void): void; removeEntityListener(entityType: EntityType, callback: (entities: Entity[]) => void): void; getPendingOperations(): Promise<SyncOperation[]>; removePendingOperations(): Promise<SyncOperation[]>; }