openKvToolbox()
allow access to most of the features of the library in an enriched that builds on top of Deno.Kv
.
import { openKvToolbox } from "@kitsonk/kv-toolbox";
const file = await Deno.readFile("hello.jpeg");
const kv = await openKvToolbox();
await kv.setBlob(["hello.jpeg"], file);
kv.close();
import {
generateKey,
openCryptoKv,
} from "@kitsonk/kv-toolbox/crypto";
const kv = await openCryptoKv(generateKey());
const res = await kv.setBlob(
["hello"],
window.crypto.getRandomValues(new Uint8Array(65_536)),
);
if (res.ok) {
const maybeValue = await kv.getBlob(["hello"]);
await kv.deleteBlob(["hello"]);
}
kv.close();
Encrypt and decrypt Deno KV values, ensuring that data at rest is secure.
See the docsSafely 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();