@unikvs/fs.bun
Bun のローカルファイルシステムにバイト列を保存する @unikvs/fs.bun の使い方を説明します。
概要
@unikvs/fs.bun はローカルファイルシステムにバイト列を保存するストレージプラグインです。Bun 専用 単一ノードでの永続化や、開発時の簡易な保存先として使います。
nameは"BunFs"で、isOpenで開閉状態を確認します。open()でルートディレクトリーを作成して開きます。close()はありません。- キーはファイル名としてそのまま保存します。書き込みは一時ファイルへの書き出しと完了時のリネームで原子的に行います。
インストールは次のコマンドで行います。
npm install @unikvs/fs.bunpnpm add @unikvs/fs.bunyarn add @unikvs/fs.bunbun add @unikvs/fs.bunnub add @unikvs/fs.bunaube add @unikvs/fs.bun使い方
BunFs は IStorage を実装しています。UniKvs には persist() で渡します。
import { BunFs } from "@unikvs/fs.bun";
BunFs
ローカルファイルシステムに保存するストレージです。利用者は open() で開いてから使います。
コンストラクターの引数は次のとおりです。
プロパティ型
BunFsOptions
将来の拡張用のオプション型です。現在は空のオブジェクトで、指定できる項目はありません。
以下は、値を保存して読み戻す例です。
import { BunFs } from "@unikvs/fs.bun";
import * as unikvs from "unikvs";
const kvs = new unikvs.Builder<{ file: unikvs.Value<Uint8Array> }>()
.persist(new BunFs("./data"))
.build();
await kvs.open();
await kvs.set("file", new Uint8Array([0, 1, 2]));
const data = await kvs.get("file");
console.log(data); // Uint8Array(3) [0, 1, 2]
データ型
| 操作 | 対応するデータ型 |
|---|---|
write・read |
Uint8Array<ArrayBuffer> |
getWritable・getReadable のチャンク |
Uint8Array<ArrayBuffer> |
write・readにはバイト列 (Uint8Array<ArrayBuffer>) を使います。- キーはファイル名として検証され、パス区切りなどを含むキーは拒否されます。
- ストリームの読み書きに対応し、チャンクは
Uint8Array<ArrayBuffer>です。 - 書き込みは一時ファイルへの書き出しと完了時のリネームで原子的に行われ、並行書き込みでも一時ファイルが衝突しません。
エラー
このパッケージ固有のエラーはありません。Bun 以外のランタイムで開こうとすると @unikvs/core の共通エラー UnsupportedRuntimeError を投げます。存在しないキーの読み取りや削除は ENOENT のシステムエラーで失敗します。