@unikvs/cbor
値を CBOR でシリアライズするミドルウェア @unikvs/cbor の使い方を説明します。
概要
値を CBOR でシリアライズするミドルウェアです。Middleware
単発の読み書きでは値をそのまま CBOR のバイト列に変換し、ストリームでは CBOR アイテムを連結したシーケンスとして変換します。
nameは"Cbor"です。isOpenはつねにtrueです。
インストールは次のコマンドで行います。
npm install @unikvs/cborpnpm add @unikvs/cboryarn add @unikvs/cborbun add @unikvs/cbornub add @unikvs/cboraube add @unikvs/cbor使い方
Cbor は IMiddleware を実装しています。UniKvs には use() で渡します。
import { Cbor } from "@unikvs/cbor";
以下は、オブジェクトを CBOR 化して保存し、読み取り時に元の形へ戻す例です。
import { Cbor } from "@unikvs/cbor";
import { Memory } from "@unikvs/memory";
import * as unikvs from "unikvs";
const kvs = new unikvs.Builder<{ item: unikvs.Value<{ readonly id: number }> }>()
.use(new Cbor())
.persist(new Memory())
.build();
await kvs.open();
await kvs.set("item", { id: 1 });
const item = await kvs.get("item");
await kvs.close();
データ型
| メソッド | 入力 | 出力 |
|---|---|---|
encode |
unknown |
Uint8Array<ArrayBuffer> |
decode |
Uint8Array<ArrayBuffer> |
unknown |
encodeStream |
unknown |
Uint8Array<ArrayBuffer> |
decodeStream |
Uint8Array<ArrayBuffer> |
unknown |
encodeは値を CBOR のバイト列に変換します。decodeは CBOR のバイト列を値に戻します。encodeStreamは入力 1 件ごとに 1 つの CBOR アイテムを出力し、順番に連結します。decodeStreamは受信したバイト列を蓄積し、完成した値から順に出力します。- 途中で切れたデータは次のチャンクの到着を待ち、終了時に残余がある場合はエラーを投げます。
- 空のチャンクはデコードに影響しないため、このミドルウェアは無視します。
エラー
このパッケージが投げるエラーは次のとおりです。
CborEncodeError
意味
値の CBOR エンコードに失敗したときに、このエラーが投げられます。失敗の原因は cause に保持されます。
対処方法
cause を確認し、CBOR で表現できる値を渡してください。
CborDecodeError
意味
CBOR データのデコードに失敗したときに、このエラーが投げられます。破損した入力や、ストリーム終端に残った未完成のデータが対象です。失敗の原因は cause に保持されます。
対処方法
入力が正しい CBOR データであり、ストリームが途中で切れていないか確認してください。