---
title: "@unikvs/core"
description: "全パッケージで共有される型とエラーの基盤。役割、インストール、公開値の一覧と各ドキュメントへの案内です。"
---

## 概要 [#overview]

`@unikvs/core` 共有 はすべてのパッケージとプラグインで共有される基盤です。ストレージやミドルウェアなどのプラグインが実装すべきインターフェース (`IStorage`・`IMiddleware`) と、操作ごとに受け渡されるコンテキスト、そして共通のエラー基盤を提供します。

最大の特徴は実行時の値としてエラークラスのみを提供し、それ以外はすべて型のみである点です。バンドルに余計な実行コードを持ち込まず、プラグイン間の契約を型で固定します。

```mermaid
flowchart LR
  A["@unikvs/core"] --> B[IStorage]
  A --> C[IMiddleware]
  A --> D[コンテキスト]
  A --> E[エラー]
  B --> F[ストレージ各社]
  C --> G[ミドルウェア各社]
```

## インストール [#installation]

```package-install
npm i @unikvs/core
```

:::note[通常は直接インストール不要です]
`unikvs` や各プラグインが依存しているため、通常は推移的に取得されます。プラグインやストレージを自作するときに直接依存します。
:::

言語切り替えのために `valibot` を使います。メッセージの多言語化を利用する場合のみ、使う側が別途インストールします。詳しくは[エラー › 言語切り替え](/unikvs/packages/core/errors#i18n)を参照してください。

ESM 専用 (`sideEffects: false`) です。依存は `i18n-error-base` と `maypromise` のみで、いずれも軽量です。

## 公開値と型 [#exports]

エントリーポイント (`@unikvs/core`) から公開される実行時の値は 9 個だけです。

| 実行時の値                | 種類   | 説明                           | 詳しい説明                           |
| ------------------------- | ------ | ------------------------------ | ------------------------------------ |
| `ErrorBase`               | クラス | すべての共通エラーの基底       | [エラー](/unikvs/packages/core/errors#errors-base)       |
| `InvalidUsageErrorBase`   | クラス | 使い方の誤りを示すエラーの基底 | [エラー](/unikvs/packages/core/errors#errors-base)       |
| `KeyNotFoundError`        | クラス | キーが見つからない             | [エラー](/unikvs/packages/core/errors#errors)            |
| `UnsupportedRuntimeError` | クラス | 対応ランタイム外で使用した     | [エラー](/unikvs/packages/core/errors#errors)            |
| `InvalidPartSizeError`    | クラス | 不正なパートサイズ             | [エラー](/unikvs/packages/core/errors#errors)            |
| `StorageAbortedError`     | クラス | 開始前に中断シグナルが発火済み | [エラー](/unikvs/packages/core/errors#errors)            |
| `RepairNotAllowedError`   | クラス | 書き戻しが拒否された           | [エラー](/unikvs/packages/core/errors#errors)            |
| `ReadonlyVariableError`   | クラス | 読み取り専用変数への書き込み   | [エラー](/unikvs/packages/core/errors#errors)            |
| `setErrorMessage`         | 関数   | 言語ごとのメッセージを登録する | [エラー](/unikvs/packages/core/errors#set-error-message) |

それ以外はすべて型のみです。ソース上はファイルごとに分かれています。

| ソース                      | 内容                                 | 実行時の値 | 詳しい説明                                     |
| --------------------------- | ------------------------------------ | ---------- | ---------------------------------------------- |
| `errors.ts`                 | エラークラスと `setErrorMessage`     | あり       | [エラー](/unikvs/packages/core/errors)                             |
| `pipeline-context.types.ts` | 操作ごとのコンテキスト               | なし       | [パイプラインコンテキスト](/unikvs/packages/core/pipeline-context) |
| `storage.types.ts`          | 保存先プラグインのインターフェース   | なし       | [ストレージ](/unikvs/packages/core/storage)                        |
| `middleware.types.ts`       | 中間処理プラグインのインターフェース | なし       | [ミドルウェア](/unikvs/packages/core/middleware)                   |
| `stream.types.ts`           | Web 標準ストリームのエイリアス       | なし       | [ストリーム](/unikvs/packages/core/stream)                         |

```ts
import {
  type ErrorMeta,
  type IStorage,
  type IMiddleware,
  type IPipelineContext,
  type IGetContext,
  type ISetContext,
  type IReadableStream,
  KeyNotFoundError,
} from "@unikvs/core";
```

:::tip[型のみのサブパス]
`storage.types.js`・`middleware.types.js`・`pipeline-context.types.js`・`stream.types.js` は型のみで、実行時の値は公開しません。
:::

## ドキュメント案内 [#guide]

目的ごとに読み進めます。

**[エラー](/unikvs/packages/core/errors)**

エラー基盤と 6 種類の共通エラー、言語切り替えの方法です。

**[パイプラインコンテキスト](/unikvs/packages/core/pipeline-context)**

実行時変数と操作ごとのコンテキストの一覧です。

**[ストレージ](/unikvs/packages/core/storage)**

保存先プラグインが実装する `IStorage` の説明です。

**[ミドルウェア](/unikvs/packages/core/middleware)**

中間処理プラグインが実装する `IMiddleware` の説明です。

**[ストリーム](/unikvs/packages/core/stream)**

Web 標準ストリームのエイリアスとチャンク型の扱いです。

プラグインを自作する場合は、[ストレージ](/unikvs/packages/core/storage#example)や[ミドルウェア](/unikvs/packages/core/middleware#example)の実装例から入ると全体像をつかめます。
