sveltekit-sync
Version:
Local-first sync engine for SvelteKit
86 lines (85 loc) • 2.26 kB
TypeScript
import type { RealtimeClientConfig, RealtimeStatus } from './types.js';
import { EventEmitter } from './event-emitter.js';
/**
* Client-side realtime connection manager.
* Handles SSE connections with automatic reconnection and polling fallback.
*/
export declare class RealtimeClient extends EventEmitter {
private config;
private eventSource;
private status;
private reconnectAttempts;
private reconnectTimer;
private heartbeatTimer;
private clientId;
private lastEventId;
constructor(config?: RealtimeClientConfig);
private resolveConfig;
/**
* Initialize the realtime client with a client ID
*/
init(clientId: string): void;
/**
* Update configuration at runtime
*/
configure(config: Partial<RealtimeClientConfig>): void;
/**
* Get current connection status
*/
getStatus(): RealtimeStatus;
/**
* Check if currently connected
*/
isConnected(): boolean;
/**
* Connect to the SSE endpoint
*/
connect(): void;
/**
* Disconnect from the SSE endpoint
*/
disconnect(): void;
/**
* Force reconnection
*/
reconnect(): void;
/**
* Enable realtime and connect
*/
enable(): void;
/**
* Disable realtime and disconnect
*/
disable(): void;
/**
* Send a message to the server via POST
* This enables bidirectional communication (client -> server)
*/
send(type: string, data: any): Promise<void>;
/**
* Join a channel to receive channel-specific events
*/
joinChannel(channel: string): Promise<void>;
/**
* Leave a channel
*/
leaveChannel(channel: string): Promise<void>;
/**
* Clean up resources
*/
destroy(): void;
private buildEndpointUrl;
private handleMessage;
private handleOperationsEvent;
private handleError;
private scheduleReconnect;
private startHeartbeatMonitor;
private resetHeartbeatMonitor;
private clearTimers;
private setStatus;
}
/**
* Create a realtime client with the given configuration.
* Simple factory function for ease of use.
*/
export declare function createRealtimeClient(config?: RealtimeClientConfig): RealtimeClient;