UNPKG

@deno/kv

Version:

A Deno KV client library optimized for Node.js.

39 lines (38 loc) 1.98 kB
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;