@unikvs/allow-repair
読み取り時の書き戻しの可否を制御するミドルウェアです。
概要
@unikvs/allow-repair は読み取り時の書き戻しを許可または拒否するプラグインです。Middleware
このミドルウェアは PassThrough を継承し、データ変換は行わず、そのまま通します。複数ストレージで前段への書き戻しを一時的に止めたい場合に使います。
nameはAllowRepairです。isOpenは常にtrueです。open()は不要です。- 初期状態では書き戻しを許可します。
disable()で拒否に切り替わります。
インストールは次のコマンドで行います。
npm install @unikvs/allow-repairpnpm add @unikvs/allow-repairyarn add @unikvs/allow-repairbun add @unikvs/allow-repairnub add @unikvs/allow-repairaube add @unikvs/allow-repair使い方
AllowRepair は IMiddleware を実装しています。UniKvs には use() で渡します。
import { AllowRepair } from "@unikvs/allow-repair";
以下は、書き戻しを拒否した状態で読み取り、許可してから読み直す例です。
import { AllowRepair } from "@unikvs/allow-repair";
import { Memory } from "@unikvs/memory";
import * as unikvs from "unikvs";
const gate = new AllowRepair();
const kvs = new unikvs.Builder<{ foo: unikvs.Value<Uint8Array> }>()
.use(gate)
.persist(new Memory())
.build();
await kvs.open();
await kvs.set("foo", new Uint8Array([0, 1, 2]));
gate.disable();
try {
await kvs.get("foo", { repair: true });
} catch {
console.log("書き戻しが拒否されました");
}
gate.enable();
const bytes = await kvs.get("foo", { repair: true });
console.log(bytes); // Uint8Array(3) [0, 1, 2] になります
await kvs.close();
データ型
| メソッド | 入力 | 出力 |
|---|---|---|
encode |
TData |
TData |
decode |
TData |
TData |
encodeStream |
TChunk |
TChunk |
decodeStream |
TChunk |
TChunk |
encodeでは入力データをそのまま出力します。decodeでは入力データをそのまま出力します。encodeStreamでは入力ストリームをそのまま出力します。decodeStreamでは入力ストリームをそのまま出力します。useではgetとstreamの書き戻し可否だけを判定し、データ自体は変えません。
エラー
このパッケージ固有のエラーはありません。
use() は書き戻しが拒否されたときに RepairNotAllowedError を投げます。enabled が true の場合や repair が無効な読み取りでは、このエラーを投げません。