コンテンツにスキップ
UniKVS
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

@unikvs/allow-repair

読み取り時の書き戻しの可否を制御するミドルウェアです。

概要

@unikvs/allow-repair は読み取り時の書き戻しを許可または拒否するプラグインです。Middleware

このミドルウェアは PassThrough を継承し、データ変換は行わず、そのまま通します。複数ストレージで前段への書き戻しを一時的に止めたい場合に使います。

  • name は AllowRepair です。
  • isOpen は常に true です。open() は不要です。
  • 初期状態では書き戻しを許可します。disable() で拒否に切り替わります。

インストールは次のコマンドで行います。

npm install @unikvs/allow-repair
pnpm add @unikvs/allow-repair
yarn add @unikvs/allow-repair
bun add @unikvs/allow-repair
nub add @unikvs/allow-repair
aube 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 が無効な読み取りでは、このエラーを投げません。

このページは役に立ちましたか?