json-crdt-server
Version:
JSON CRDT server and syncing local-first browser client
44 lines (43 loc) • 1.98 kB
TypeScript
import { Mutex } from '../../../../util/Mutex';
import type { AbstractLevel } from 'abstract-level';
import type { JsonValueCodec } from '@jsonjoy.com/json-pack/lib/codecs/types';
import type * as types from '../types';
type BinStrLevel = AbstractLevel<any, string, Uint8Array>;
export declare class LevelStore implements types.Store {
protected readonly kv: BinStrLevel;
protected readonly codec: JsonValueCodec;
protected readonly mutex: Mutex;
constructor(kv: BinStrLevel, codec?: JsonValueCodec, mutex?: Mutex);
protected keyBase(id: string): string;
protected endKey(id: string): string;
protected startKey(id: string): string;
protected batchBase(id: string): string;
protected batchKey(id: string, seq: number): string;
protected touchKeyBase(): string;
protected touchKey(id: string): string;
/** @todo Add in-memory cache on read. */
get(id: string): Promise<types.StoreGetResult | undefined>;
getSnapshot(id: string, seq: number): Promise<{
snapshot: types.StoreSnapshot;
batches: types.StoreBatch[];
}>;
exists(id: string): Promise<boolean>;
seq(id: string): Promise<number | undefined>;
create(start: types.StoreSnapshot, end: types.StoreSnapshot, incomingBatch?: types.StoreIncomingBatch): Promise<types.StoreCreateResult>;
push(snapshot0: types.StoreIncomingSnapshot, batch0: types.StoreIncomingBatch): Promise<types.StorePushResult>;
compact(id: string, to: number, advance: types.Advance): Promise<void>;
scan(id: string, min: number, max: number): Promise<types.StoreBatch[]>;
remove(id: string): Promise<boolean>;
/** @todo Make this method async and return something useful. */
stats(): {
blocks: number;
batches: number;
};
/**
* @todo Need to add GC tests.
*/
removeAccessedBefore(ts: number, limit?: number): Promise<void>;
removeOldest(x: number): Promise<void>;
stop(): Promise<void>;
}
export {};