sveltekit-sync
Version:
Local-first sync engine for SvelteKit
51 lines (50 loc) • 1.54 kB
TypeScript
import { type DBSchema, type IDBPDatabase } from 'idb';
interface SyncMeta {
key: string;
value: any;
}
interface SyncQueueItem {
id: string;
[key: string]: any;
}
interface SyncOperation extends SyncQueueItem {
status: 'pending' | 'processing' | 'completed' | 'failed';
error?: string;
}
interface SyncDBSchema extends DBSchema {
sync_queue: {
key: string;
value: SyncOperation;
};
sync_meta: {
key: string;
value: SyncMeta;
};
[key: string]: {
key: string;
value: any;
};
}
export declare class IDBAdapter implements LocalAdapter<IDBPDatabase<SyncDBSchema>> {
private db;
private dbName;
private version;
constructor(dbName?: string, version?: number);
private ensureInitialized;
init(schema?: {
[table: string]: string;
}): Promise<void>;
insert(table: string, data: any): Promise<any>;
update(table: string, id: string, data: any): Promise<any>;
delete(table: string, id: string): Promise<void>;
find(table: string, query?: any): Promise<any[]>;
findOne(table: string, id: string): Promise<any | null>;
addToQueue(op: SyncOperation): Promise<void>;
getQueue(): Promise<SyncOperation[]>;
removeFromQueue(ids: string[]): Promise<void>;
updateQueueStatus(id: string, status: SyncOperation['status'], error?: string): Promise<void>;
getLastSync(): Promise<number>;
setLastSync(timestamp: number): Promise<void>;
getClientId(): Promise<string>;
}
export {};