authia 0.1.0

High-performance JWT verification library for Ed25519 using WebAssembly
Documentation
# authia


[English]./README.md | [日本語]./README.ja.md

WebAssemblyを使用した高性能なEd25519 JWT検証ライブラリ

## 特徴


- 🚀 Rust + WebAssemblyによる高速なEd25519 JWT検証
- 🔒 セキュアな設計 - アルゴリズムはEd25519に固定
- 🌐 ユニバーサルランタイム対応(Node.js、ブラウザ、Cloudflare Workers)
- 📦 ランタイム依存なし
- 🎯 TypeScript型定義を同梱
- ⚡ 自動的なWasm初期化

## 📊 ベンチマーク


Node.jsの標準ライブラリである`jose`と比較して、**authia**はRustの効率性と積極的なキャッシングにより、より高速な実行と低いオーバーヘッドを提供します。

| ライブラリ        | 平均 (ms)  | p50 (ms)   | p95 (ms)   | 高速化    |
| :---------------- | :--------- | :--------- | :--------- | :-------- |
| **authia (WASM)** | **0.29ms** | **0.26ms** | **0.48ms** | **1.11x** |
| jose (JS Native)  | 0.32ms     | 0.29ms     | 0.48ms     | 1.00x     |

_Node.js v24環境で2,000回の反復テスト。検証にはEd25519署名チェック、クレーム検証(iss、aud、exp、iat)、ペイロードデコードが含まれます。_

## インストール


```bash
npm install authia
```

## 使い方


ライブラリは環境(Node.jsまたはBundler/Workers)を自動検出し、WebAssemblyの読み込みを処理します。

### アクセストークンの検証


```typescript
import { verifyAccessToken } from "authia";

try {
  // Cloudflare Workers: 初回呼び出しは非同期
  // Node.js: 同期的に検証
  const payload = await verifyAccessToken(token, {
    publicKeyJwk: process.env.JWT_PUBLIC_KEY,
    audience: "kapock-app",
    issuer: "https://auth.kapock.com",
  });

  console.log(`ユーザーID: ${payload.sub}, メール: ${payload.email}`);
} catch (error) {
  console.error("トークン検証失敗:", error);
}
```

### リフレッシュトークンの検証


```typescript
import { verifyRefreshToken } from "authia";

const payload = await verifyRefreshToken(token, {
  publicKeyJwk: process.env.JWT_PUBLIC_KEY,
  audience: "kapock-app",
  issuer: "https://auth.kapock.com",
});

console.log(`JTI: ${payload.jti}`);
```

## ランタイムの動作


### Node.js


検証は**同期的**です。WebAssemblyモジュールは起動時に`fs.readFileSync`を使用して読み込まれます。

### Cloudflare Workers / バンドラー


検証は**非同期**(Promiseを返す)で、非同期WebAssemblyコンパイルを可能にします。Wasmは最初の関数呼び出し時に自動的に初期化されます。

## API


詳細は[APIドキュメント](./docs/api.md)を参照してください。

## ライセンス


MIT