値を検証する
Valibot スキーマでキーと入出力値を検証する手順です。
入力ミスや保存データの破損に早く気づきたい場合は、Valibot スキーマによる検証を使います。
スキーマを指定する
Builder の schema オプションに、PlainValue() や StreamValue() と Valibot スキーマの組み合わせを渡します。valibot は別途インストールします。
npm install valibotpnpm add valibotyarn add valibotbun add valibotnub add valibotaube add valibotキー名をそのまま使う場合は、オブジェクト形式で指定します。
import * as unikvs from "unikvs";
import * as v from "valibot";
const kvs = new unikvs.Builder({
schema: {
message: unikvs.PlainValue(v.pipe(v.string(), v.minLength(1))),
},
})
.persist(storage)
.build();キーのパターンで使い分ける場合は、配列形式で指定します。最初に一致した定義を採用します。
import * as unikvs from "unikvs";
import * as v from "valibot";
const kvs = new unikvs.Builder({
schema: [
[v.pipe(v.string(), v.regex(/^msg-.+/)), unikvs.PlainValue(v.string())],
[v.pipe(v.string(), v.regex(/^img-.+/)), unikvs.StreamValue(v.instance(Uint8Array))],
],
})
.persist(storage)
.build();検証の範囲を確認する
操作ごとの検証内容と失敗時のエラーは次のとおりです。
| 操作 | 検証内容 | 失敗時のエラー |
|---|---|---|
set |
入力値を検証します。 | InvalidInputError |
get |
出力値を検証します。 | InvalidOutputError |
stream |
チャンクを 1 つずつ検証します。 | InvalidOutputError |
has・delete |
配列形式の場合のみ、キーを検証します。 | InvalidInputError |
await kvs.set("message", "hello");
await kvs.get("message"); // "hello"
// 入力検証に失敗し、InvalidInputError を投げます
await kvs.set("message", "");
検証を使わない場合
schema を省略した場合は、実行時の検証を行いません。型レベルでの制限だけが残ります。
import * as unikvs from "unikvs";
const kvs = new unikvs.Builder<{
message: unikvs.PlainValue<string>;
}>()
.persist(storage)
.build();
入力値の形式を本番環境でも保証したい場合は、スキーマありの構成を選んでください。