UNPKG

@constl/bohr-db

Version:

Type-safe databases for orbit-db.

24 lines (23 loc) 1.29 kB
import type { JSONSchemaType } from "ajv"; import { type NestedDatabaseType, type NestedValue } from "@orbitdb/nested-db"; import { ExtractKeys, ExtractKeysAsList, GetValueFromKey, GetValueFromKeyList, RecursivePartial } from "./types.js"; export type TypedNested<T extends NestedValue> = Omit<NestedDatabaseType, "put" | "set" | "putNested" | "del" | "get" | "all"> & { put<K extends ExtractKeys<T>>(key: K, value: GetValueFromKey<T, K>): Promise<string>; put<K extends ExtractKeysAsList<T>>(key: K, value: GetValueFromKeyList<T, K>): Promise<string>; set: TypedNested<T>["put"]; putNested(value: RecursivePartial<T>): Promise<string[]>; putNested<K extends ExtractKeys<T>>(key: K, value: GetValueFromKey<T, K>): Promise<string[]>; setNested: TypedNested<T>["putNested"]; del<K extends ExtractKeys<T>>(key: K): Promise<string>; get<K extends ExtractKeys<T>>(key: K): Promise<GetValueFromKey<T, K> | undefined>; all: () => Promise<{ key: ExtractKeys<T>; value: GetValueFromKey<T, ExtractKeys<T>>; hash: string; }[]>; allAsJSON(): Promise<T>; }; export declare const typedNested: <T extends NestedValue>({ db, schema, }: { db: NestedDatabaseType; schema: JSONSchemaType<RecursivePartial<T>>; }) => TypedNested<T>;