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

@unikvs/base64url

バイト列を base64url 化するミドルウェア @unikvs/base64url の使い方を説明します。

概要

バイト列を URL セーフな base64url 文字列化して返すミドルウェアです。Middleware

このミドルウェアは + と / を使わないため、URL やファイル名に埋め込む用途に向いています。パディングありとなしの両形式に対応し、デコード時はどちらも受け付けます。

  • name は "Base64Url" です。
  • isOpen はつねに true です。

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

npm install @unikvs/base64url
pnpm add @unikvs/base64url
yarn add @unikvs/base64url
bun add @unikvs/base64url
nub add @unikvs/base64url
aube add @unikvs/base64url

使い方

Base64Url は IMiddleware を実装しています。UniKvs には use() で渡します。

import { Base64Url } from "@unikvs/base64url";

コンストラクターの引数は次のとおりです。

プロパティ型
encoder?FastUtf8

文字列のバイト列化に使う実体です。省略時は既定値を使います。

型FastUtf8
decoder?FastUtf8

バイト列の文字列化に使う実体です。省略時は既定値を使います。

型FastUtf8
padding?boolean

エンコード時に `=` を付与するかどうかです。省略時は `false` です。

型boolean

以下は、バイト列を base64url 化して保存し、読み取り時に元のバイト列へ戻す例です。

import { Base64Url } from "@unikvs/base64url";
import { Memory } from "@unikvs/memory";
import * as unikvs from "unikvs";

const kvs = new unikvs.Builder<{ file: unikvs.Value<Uint8Array> }>()
  .use(new Base64Url())
  .persist(new Memory())
  .build();

await kvs.open();
await kvs.set("file", new Uint8Array([0x01, 0x02, 0x03]));
const file = await kvs.get("file");
await kvs.close();

データ型

メソッド 入力 出力
encode Uint8Array<ArrayBuffer> Uint8Array<ArrayBuffer>
decode Uint8Array<ArrayBuffer> Uint8Array<ArrayBuffer>
encodeStream Uint8Array<ArrayBuffer> Uint8Array<ArrayBuffer>
decodeStream Uint8Array<ArrayBuffer> Uint8Array<ArrayBuffer>
  • encode はバイト列を base64url 文字列に変換し、UTF-8 でバイト列化します。
  • decode は base64url 化されたバイト列を元のバイト列に戻します。
  • デコード時はパディングありとなしのどちらの形式も受け付けます。
  • encodeStream は 3 バイト単位で区切り、チャンクをまたいだ余りを次回に持ち越します。
  • エンコード時の余りはストリームの終了時に確定します。
  • decodeStream は 4 文字単位で復元し、余りを次回に持ち越します。
  • パディングを含む末尾はストリームの終了時に検証して復元します。

エラー

このパッケージが投げるエラーは次のとおりです。

Base64UrlDecodeError

意味

このミドルウェアは入力を base64url として解釈できないときに、このエラーを投げます。不正な文字や誤った = の配置、長さの余りが 1 になる入力が対象です。

対処方法

入力が正しい base64url か確認してください。

なお、ストリーム終端で UTF-8 の途中バイトが残った場合は、TypeError がそのまま伝播します。

Base64UrlInvalidPaddingError

padding オプションに真偽値以外を指定すると、このエラーが投げられます。

プロパティ型
actualunknown

指定された `padding` の値です。

型unknown

意味

使い方の誤りのため、InvalidUsageErrorBase を継承します。meta.actual に指定値をそのまま保持します。

対処方法

padding に true か false を指定してください。省略時は false です。

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