UNPKG

recoder-shared

Version:

Shared types, utilities, and configurations for Recoder

81 lines 2.65 kB
/** * Data Synchronization Client for Recoder.xyz * Handles cross-platform data sync with conflict resolution */ import { EventEmitter } from 'events'; import { AuthClient } from './auth-client'; import { WebSocketClient } from './websocket-client'; export interface SyncState { dataType: string; lastSyncAt: string; syncVersion: number; syncStatus: 'synced' | 'pending' | 'conflicted' | 'failed'; conflictData?: any; deviceSyncMap: Record<string, number>; } export interface SyncConfig { authClient: AuthClient; webSocketClient?: WebSocketClient; baseURL?: string; syncInterval?: number; enableRealTimeSync?: boolean; } export interface ProjectData { id: string; name: string; type: string; description?: string; status: string; config: any; updatedAt: string; } export interface SettingsData { name?: string; organization?: string; preferences?: any; aiProviders?: any; } export interface SyncResult<T = any> { success: boolean; data?: T; version?: number; syncStatus: 'updated' | 'synced' | 'conflicted' | 'up_to_date'; conflicted: boolean; conflicts?: any[]; } export type SyncDataType = 'projects' | 'settings' | 'history' | 'preferences'; export declare class SyncClient extends EventEmitter { private authClient; private webSocketClient?; private api; private syncInterval?; private config; private localVersions; private syncInProgress; constructor(config: SyncConfig); private setupAPIInterceptors; private setupWebSocketListeners; startAutoSync(): Promise<void>; stopAutoSync(): void; syncAll(): Promise<void>; sync<T = any>(dataType: SyncDataType): Promise<SyncResult<T>>; syncProjects(): Promise<SyncResult<ProjectData[]>>; syncSettings(): Promise<SyncResult<SettingsData>>; updateProjects(projects: ProjectData[]): Promise<SyncResult<ProjectData[]>>; updateSettings(settings: SettingsData): Promise<SyncResult<SettingsData>>; resolveConflict(dataType: SyncDataType, resolution: 'server_wins' | 'client_wins' | 'merge', resolvedData?: any): Promise<SyncResult>; forceSync(): Promise<any>; getSyncStatus(): Promise<SyncState[]>; private performSync; private handleSyncRequest; private handleSyncUpdate; private handleSyncError; private loadLocalVersions; private saveLocalVersions; get isSyncing(): boolean; get autoSyncEnabled(): boolean; getLocalVersion(dataType: SyncDataType): number; getSyncingDataTypes(): SyncDataType[]; } export default SyncClient; //# sourceMappingURL=sync-client.d.ts.map