distilled-cloudflare — Effect対応 Cloudflare SDK

Library

概要

distilled-cloudflareは、CloudflareのOpenAPI仕様から自動生成されたEffectネイティブなTypeScript SDKです。各API操作はEffect<A, E, R>を返すため、Effectランタイムのコンポーザビリティやエラーハンドリング機構をそのまま利用できます。エラーはすべてTaggedErrorクラスとして型付けされており、パターンマッチングで安全に扱えます。自動ページネーション機能により、ページ単位/アイテム単位でストリーミング的にデータを扱えるため、大量データの取得も効率的です。現状は小規模なコードベースですが、Cloudflare APIとの1:1互換性を目指した設計が特徴です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 4
  • ファイル数: 12
  • メインの言語: TypeScript

主な特徴

  • OpenAPI仕様から自動生成され、Cloudflare APIと1:1の互換性を維持
  • Effectネイティブ:すべての操作がEffect<A, E, R>で返る
  • 型付きエラー(TaggedError)により安全なエラーパターンマッチングが可能
  • 自動ページネーション機能でページまたはアイテムをストリーミング処理

技術的なポイント

distilled-cloudflareの最大の技術的特徴は「自動生成」と「Effect統合」にあります。CloudflareのOpenAPIスキーマ(api-schemas)を起点にクライアントコードを生成することで、APIエンドポイント、リクエスト/レスポンスの型、安全なパラメータ処理がコードレベルで保証されています。これにより、API仕様の変更があった場合でも生成プロセスを回すだけで型の一貫性が保たれます。

もう一つの重要点は、Effectライブラリ(Effect.tsなど)のプリミティブをそのまま用いている点です。通常のPromiseベースのSDKと異なり、すべての操作がEffect<A, E, R>を返すため、遅延評価・キャンセル・環境(R)注入や合成が自然に行えます。これにより、リトライやタイムアウト、並列実行といった副作用制御をEffectの標準的な抽象で扱えます。

エラーモデルはTaggedErrorクラスを採用しており、APIエラーやHTTPエラーを型付きで表現します。TaggedErrorを使うことで、パターンマッチングや型ガードによるきめ細かなハンドリングが可能になり、文字列ベースのエラー判定より安全です。たとえば認証エラー、レート制限、バリデーションエラーなどを個別に取り扱えます。

ページネーションは自動化されており、APIの「pages」単位・「items」単位でストリーム的に扱えるユーティリティを提供します。大量のリスト取得処理でメモリ使用を抑えつつ、遅延的に処理を進められるため、ワーカーやバッチ処理にも向いています。

コードベース自体は小さく、bun.lockが含まれることからbun環境での利用や高速インストールも意識されています。package.jsonやTypeScript設定により、ライブラリはNodeやCloudflare Workersなどの環境で動作するよう設計されていますが、Effectの環境型(R)としてfetchや認証トークンの注入を要求する設計になっている可能性があります。現段階ではコミット数が少ないため安定版というよりは初期実装・実験的な段階ですが、Effectを使った型安全なCloudflare操作を望む開発者には有用な出発点です。(約1200–1500字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • AGENTS.md: file
  • README.md: file
  • bun.lock: file
  • package.json: file

…他 7 ファイル

まとめ

Effectベースで型安全なCloudflare操作を提供する軽量SDK。今後の拡張に期待。

リポジトリ情報:

READMEの抜粋:

distilled-cloudflare

A fully typed Cloudflare SDK for Effect, generated from the Cloudflare OpenAPI specification.

Features

  • Generated from OpenAPI spec — 1:1 compatibility with Cloudflare APIs
  • Typed errors — All errors are TaggedError classes for pattern matching
  • Effect-native — All operations return Effect<A, E, R> with typed errors
  • Automatic pagination — Stream pages or items with `.pages…