はじめに
UniKVS のインストールから基本操作までの最短手順を説明します。
インストール
unikvs 本体に加えて、利用するストレージやトランスフォーマーのパッケージをインストールします。
npm install unikvs @unikvs/memorypnpm add unikvs @unikvs/memoryyarn add unikvs @unikvs/memorybun add unikvs @unikvs/memorynub add unikvs @unikvs/memoryaube add unikvs @unikvs/memorynpm install unikvs @unikvs/fs.node @unikvs/compressionpnpm add unikvs @unikvs/fs.node @unikvs/compressionyarn add unikvs @unikvs/fs.node @unikvs/compressionbun add unikvs @unikvs/fs.node @unikvs/compressionnub add unikvs @unikvs/fs.node @unikvs/compressionaube add unikvs @unikvs/fs.node @unikvs/compression基本的な使い方
メモリーストレージを使った最小例です。設定して作成し、開いて操作し、閉じます。
ビルダーを作る
UniKvs.config() でビルダーを作ります。型パラメーターにキーと値のマッピングを指定します。
import { UniKvs, type Value } from "unikvs";
const builder = UniKvs.config<{
foo: Value<Uint8Array>;
}>();保存先を追加して作る
appendStorage() で保存先を追加し、create() でクライアントを作ります。トランスフォーマーが不要なら省略できます。
import { Memory } from "@unikvs/memory";
const kvs = builder.appendStorage(new Memory()).create();開いて操作する
open() で初期化し、set・get・has・delete などを操作します。
await kvs.open();
await kvs.set("foo", Uint8Array.from([0, 1, 2]));
const bytes = await kvs.get("foo");
console.log(bytes);
console.log(await kvs.has("foo"));
await kvs.delete("foo");閉じる
使い終わったら close() で終了します。
await kvs.close();トランスフォーマーを足す
圧縮を透過的に行う例です。
import { Compression } from "@unikvs/compression";
import { Memory } from "@unikvs/memory";
import { UniKvs, type Value } from "unikvs";
const kvs = UniKvs.config<{
foo: Value<Uint8Array>;
}>()
.appendTransformer(new Compression("gzip"))
.appendStorage(new Memory())
.create();
利用側の set・get は変えずに、保存時の圧縮と取得時の展開を自動で行います。
入力値を検証する
UniKvs.config({ schema }) に Valibot スキーマを渡すと、型推論と実行時検証が有効になります。Valibot スキーマを使う場合は valibot を別途インストールします。
import { Memory } from "@unikvs/memory";
import { PlainValue, UniKvs } from "unikvs";
import * as v from "valibot";
const kvs = UniKvs.config({
schema: {
foo: PlainValue(v.instance(Uint8Array)),
},
})
.appendStorage(new Memory())
.create();
set の入力検証に失敗すると InvalidInputError を投げ、get の出力検証に失敗すると InvalidOutputError を投げます。動的キーには配列形式も使えます。詳しくは基本概念のスキーマ定義と検証のタイミングを参照してください。