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

UniKVS

TypeScript 製のモジュラーな KVS クライアント UniKVS の概要とドキュメント案内です。

UniKVSとは

UniKVS は TypeScript 製のモジュラーでポータブルな KVS クライアントです。透過的にデータを変換するトランスフォーマーと、複数バックエンドに書き込むストレージを、ビルダーパターンで組み合わせます。

主な特徴は次のとおりです。

  • トランスフォーマーによる透過的なエンコード・デコードに対応します。
  • 複数のストレージへの並列書き込みに対応します。
  • キーごとに値の型を定義し、利用可能な操作を型レベルで制御します。
  • Valibot スキーマによる入出力値の実行時検証に対応します。
  • 単一値とストリームの両方に対応します。
  • AbortSignal によるキャンセルと実行時変数の受け渡しに対応します。
  • Node.js とブラウザーの両方に対応したストレージを用意しています。

クイックスタート

npm install unikvs @unikvs/compression @unikvs/fs.node
pnpm add unikvs @unikvs/compression @unikvs/fs.node
yarn add unikvs @unikvs/compression @unikvs/fs.node
bun add unikvs @unikvs/compression @unikvs/fs.node
nub add unikvs @unikvs/compression @unikvs/fs.node
aube add unikvs @unikvs/compression @unikvs/fs.node
import { Compression } from "@unikvs/compression";
import { NodeFs } from "@unikvs/fs.node";
import { UniKvs, type Value } from "unikvs";

const kvs = UniKvs.config<{
  foo: Value<Uint8Array<ArrayBuffer>>;
}>()
  .appendTransformer(new Compression("gzip"))
  .appendStorage(new NodeFs(".tmp"))
  .create();

await kvs.open();

await kvs.set("foo", Uint8Array.from([0, 1, 2]));

const bytes = await kvs.get("foo");

await kvs.close();

上記の例では、キー foo のバイト列を透過的に gzip 圧縮し、.tmp/ 配下に保存します。

ドキュメントの読み進め方

パッケージ一覧

UniKVS

設定ビルダーと KVS クライアント本体です。

@unikvs/core

全パッケージ共有の型とエラー基盤です。

@unikvs/utils

プラグイン実装者向けの共有関数群です。

@unikvs/compression

gzip・deflate・deflate-raw による圧縮と展開を行います。

@unikvs/checksum

MD5・SHA-1・SHA-224・SHA-256・SHA-384・SHA-512 の検証を行います。

@unikvs/json

値を JSON に、ストリームでは JSON Lines に変換します。

@unikvs/superjson

Date・Map・Set・BigInt・undefined を保持したまま SuperJSON で変換します。

@unikvs/cbor

値を CBOR に、ストリームでは CBOR シーケンスに変換します。

@unikvs/memory

メモリー上に任意のデータを保存します。

@unikvs/fs.node

Node.js のローカルファイルシステムに保存します。

@unikvs/fs.bun

Bun のローカルファイルシステムに保存します。

@unikvs/redis.bun

Bun の Redis クライアントで Redis に保存します。

@unikvs/s3.node

S3 互換のオブジェクトストレージに保存します。

@unikvs/s3.bun

Bun で S3 互換のオブジェクトストレージに保存します。

@unikvs/opfs

ブラウザーの OPFS に保存します。

@unikvs/indexeddb

ブラウザーの IndexedDB に保存します。

@unikvs/writeonly

既存のストレージを書き込み専用にします。

@unikvs/debug

読み書きされる操作とデータのデバッグ情報をログに記録します。

@unikvs/passthrough

データを何も変換せずそのまま透過させます。

動作環境

パッケージ Node.js Bun ブラウザー
unikvs 対応します。 対応します。 対応します。
@unikvs/core 対応します。 対応します。 対応します。
@unikvs/utils 対応します。 対応します。 対応します。
@unikvs/compression 対応します。 対応します。 対応します。
@unikvs/checksum 対応します。 対応します。 対応します。
@unikvs/json 対応します。 対応します。 対応します。
@unikvs/superjson 対応します。 対応します。 対応します。
@unikvs/cbor 対応します。 対応します。 対応します。
@unikvs/memory 対応します。 対応します。 対応します。
@unikvs/fs.node 対応します。 対応しません。 対応しません。
@unikvs/fs.bun 対応しません。 対応します。 対応しません。
@unikvs/redis.bun 対応しません。 対応します。 対応しません。
@unikvs/s3.node 対応します。 対応しません。 対応しません。
@unikvs/s3.bun 対応しません。 対応します。 対応しません。
@unikvs/opfs 対応しません。 対応しません。 対応します。
@unikvs/indexeddb 対応しません。 対応しません。 対応します。
@unikvs/writeonly 対応します。 対応します。 対応します。
@unikvs/debug 対応します。 対応します。 対応します。
@unikvs/passthrough 対応します。 対応します。 対応します。

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