@deno/kv
Version:
A Deno KV client library optimized for Node.js.
28 lines (27 loc) • 2.13 kB
TypeScript
import { encodeBinary as encodeAtomicWrite } from "./proto/messages/com/deno/kv/datapath/AtomicWrite.js";
import { encodeBinary as encodeSnapshotRead } from "./proto/messages/com/deno/kv/datapath/SnapshotRead.js";
import { decodeBinary as decodeSnapshotReadOutput } from "./proto/messages/com/deno/kv/datapath/SnapshotReadOutput.js";
import { decodeBinary as decodeAtomicWriteOutput } from "./proto/messages/com/deno/kv/datapath/AtomicWriteOutput.js";
import { AtomicWrite, AtomicWriteOutput, SnapshotRead, SnapshotReadOutput, Watch } from "./proto/messages/com/deno/kv/datapath/index.js";
export { decodeAtomicWriteOutput, decodeSnapshotReadOutput, encodeAtomicWrite, encodeSnapshotRead, };
export type KvConnectProtocolVersion = 1 | 2 | 3;
export declare function fetchDatabaseMetadata(url: string, accessToken: string, fetcher: typeof fetch, maxRetries: number, supportedVersions: KvConnectProtocolVersion[]): Promise<{
metadata: DatabaseMetadata;
responseUrl: string;
}>;
export declare function fetchSnapshotRead(url: string, accessToken: string, databaseId: string, req: SnapshotRead, fetcher: typeof fetch, maxRetries: number, version: KvConnectProtocolVersion): Promise<SnapshotReadOutput>;
export declare function fetchAtomicWrite(url: string, accessToken: string, databaseId: string, write: AtomicWrite, fetcher: typeof fetch, maxRetries: number, version: KvConnectProtocolVersion): Promise<AtomicWriteOutput>;
export declare function fetchWatchStream(url: string, accessToken: string, databaseId: string, watch: Watch, fetcher: typeof fetch, maxRetries: number, version: KvConnectProtocolVersion): Promise<ReadableStream<Uint8Array>>;
export interface DatabaseMetadata {
readonly version: 1 | 2;
readonly databaseId: string;
readonly endpoints: EndpointInfo[];
readonly token: string;
readonly expiresAt: string;
}
export interface EndpointInfo {
/** A fully qualified URL, or a URL relative to the metadata URL. The path of the URL must not end with a slash.
* e.g. https://data.example.com/v1, /v1, ./v1 */
readonly url: string;
readonly consistency: "strong" | "eventual";
}