@daaku/kombat-indexed-db
Version:
Kombat storage implemented using IndexedDB.
29 lines (28 loc) • 1.13 kB
TypeScript
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>;
}