UNPKG

json-crdt-server

Version:

JSON CRDT server and syncing local-first browser client

44 lines (43 loc) 1.98 kB
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 {};