UNPKG

@daaku/kombat-indexed-db

Version:

Kombat storage implemented using IndexedDB.

29 lines (28 loc) 1.13 kB
import type { Local, Message } from '@daaku/kombat'; import { IDBPDatabase } from 'idb'; export interface Changes { [key: string]: { [key: string]: { [key: string]: unknown; }; }; } export type ChangeListener = { (changes: Changes): void; }; export declare function syncDatasetIndexedDB(db: IDBPDatabase, prefix?: string): ChangeListener; export declare function syncDatasetMem(mem: any): ChangeListener; export declare function loadDatasetMem(mem: any, db: IDBPDatabase, prefix?: string): Promise<void>; export declare class LocalIndexedDB implements Local { #private; constructor(internalPrefix?: string); listenChanges(cb: ChangeListener): () => void; upgradeDB(db: IDBPDatabase): void; setDB(db: IDBPDatabase): void; applyChanges(messages: Message[]): Promise<void>; storeMessages(messages: Message[]): Promise<boolean[]>; queryMessages(since: string): Promise<Message[]>; queryLatestMessages(messages: Message[]): Promise<(Message | undefined)[]>; set(key: string, value: string): Promise<void>; get(key: string): Promise<string | undefined>; }