syncflow-engine
Version:
A flexible and robust data synchronization library for JavaScript applications
42 lines (41 loc) • 1.51 kB
TypeScript
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[]>;
}