Safely serialize and deserialize Deno KV entries, keys and values. Making it possible to work on KV data in browsers or other runtimes.
See the docsimport {
entryToJSON,
entryMaybeToJSON,
keyPartToJSON,
keyToJSON,
valueToJSON,
toEntry,
toEntryMaybe,
toKeyPart,
toKey,
toValue,
} from "@kitsonk/kv-toolbox/json";
import {
exportEntries,
exportToResponse,
importEntries,
LineTransformStream,
} from "@kitsonk/kv-toolbox/ndjson";
New line delimitated JSON (NDJSON) is the most straight forward way of handling Deno KV data in a serialized format.
See the docsWorking with arbitrarily size blobs like Uint8Array
s, byte ReadableStream
s, Blob
s and File
s, stream blob values to a browser, and manage Deno KV's 64k per entry value limit.
import {
get,
getAsBlob,
getAsJSON,
getAsResponse,
getAsStream,
getMeta,
remove,
set,
toJSON,
toValue,
} from "@kitsonk/kv-toolbox/blob";
import {
equals,
keys,
partEquals,
startsWith,
tree,
unique,
uniqueCount,
} from "@kitsonk/kv-toolbox/keys";
Make working with Deno KV keys easier, especially when using a sub-key pattern.
See the docsCreate atomic transactions without having to worry about Deno KV's limitations per transaction as well as provide atomic transactions for blobs via .checkBlob()
and .setBlob()
.
import {
batchedAtomic,
} from "@kitsonk/kv-toolbox/batched_atomic";
const kv = await Deno.openKv();
await batchedAtomic(kv)
.check({ key: ["hello"], versionstamp: null })
.checkBlob({ key: ["video"], versionstamp: null })
.set(["hello"], "deno kv")
.setBlob(
["video"],
new Blob([], { type: "video/mp4" }),
)
.commit();
await kv.close();