sveltekit-sync
Version:
Local-first sync engine for SvelteKit
39 lines (38 loc) • 1.49 kB
TypeScript
import type { SyncOperation, SyncResult, ServerAdapter } from '../types.js';
import type { SyncConfig } from './types.js';
import type { RequestEvent } from '@sveltejs/kit';
export declare class ServerSyncEngine<TAdapter extends ServerAdapter = ServerAdapter> {
private adapter;
private config;
private realtimeServer;
constructor(adapter: TAdapter, config: SyncConfig);
push(operations: SyncOperation[], userId: string): Promise<SyncResult>;
pull(lastSync: number, clientId: string, userId: string): Promise<SyncOperation[]>;
private checkAccess;
private resolveConflict;
createRealtimeHandlers(): {
GET: (event: RequestEvent) => Promise<Response>;
POST: (event: RequestEvent) => Promise<Response>;
handle: ({ event, resolve }: {
event: any;
resolve: any;
}) => Promise<any>;
};
subscribeToChanges(tables: string[], userId: string, callback: (ops: SyncOperation[]) => void): Promise<() => void>;
}
/**
* Create server sync engine with realtime handlers
*/
export declare function createServerSync({ adapter, config }: {
adapter: ServerAdapter;
config: SyncConfig;
}): {
sync: ServerSyncEngine<ServerAdapter<any>>;
syncEngine: ServerSyncEngine<ServerAdapter<any>>;
GET: (event: RequestEvent) => Promise<Response>;
POST: (event: RequestEvent) => Promise<Response>;
handle: ({ event, resolve }: {
event: any;
resolve: any;
}) => Promise<any>;
};