@deno/kv
Version:
A Deno KV client library optimized for Node.js.
39 lines (38 loc) • 1.98 kB
TypeScript
import { KvService } from "./kv_types.js";
import { DecodeV8, EncodeV8 } from "./kv_util.js";
export interface NapiBasedServiceOptions {
/** Enable some console logging */
readonly debug?: boolean;
/** Underlying native napi interface */
readonly napi?: NapiInterface;
/** Custom serializer to use when serializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'serialize' function in Node's 'v8' module. */
readonly encodeV8: EncodeV8;
/** Custom deserializer to use when deserializing v8-encoded KV values.
*
* When you are running on Node 18+, pass the 'deserialize' function in Node's 'v8' module. */
readonly decodeV8: DecodeV8;
/** The database will be opened as an in-memory database. */
readonly inMemory?: boolean;
}
/**
* Return a KVService that creates KV instances backed by a native Node NAPI interface.
*/
export declare function makeNapiBasedService(opts: NapiBasedServiceOptions): KvService;
export interface NapiInterface {
open(path: string, inMemory: boolean | undefined | null, debug: boolean): number;
close(db: number, debug: boolean): void;
snapshotRead(dbId: number, snapshotReadBytes: Uint8Array, debug: boolean): Promise<Uint8Array>;
atomicWrite(dbId: number, atomicWriteBytes: Uint8Array, debug: boolean): Promise<Uint8Array>;
dequeueNextMessage(dbId: number, debug: boolean): Promise<{
bytes: Uint8Array;
messageId: number;
} | undefined>;
finishMessage(dbId: number, messageId: number, success: boolean, debug: boolean): Promise<void>;
startWatch(dbId: number, watchBytes: Uint8Array, debug: boolean): Promise<number>;
dequeueNextWatchMessage(dbId: number, watchId: number, debug: boolean): Promise<Uint8Array | undefined>;
endWatch(dbId: number, watchId: number, debug: boolean): void;
}
export declare const NAPI_FUNCTIONS: string[];
export declare function isNapiInterface(obj: unknown): obj is NapiInterface;