CR-FASTAPI-019: TypeScript SDK の整備 & E2E - 完了レポート
実装日時
2025年12月8日(初回実装) 2025年12月10日(NexusCoreClient 追加、エラーハンドリング改善)
概要
目的
TypeScript SDK を Python SDK と同等レベル(v0.1.0 商品化+E2E 確立)まで引き上げる。
ゴール
- TypeScript SDK が v0.1.0 として Semantic Versioning ベースで明示されている
- npm install(ローカルパス指定 or Test Registry)で利用可能
- SDK 専用 README が存在し、インストール方法、認証設定、使用例が明確になっている
- LICENSE が SDK ディレクトリ直下に存在
- TypeScript SDK 向けのテストが揃っている(import / 型レベルの smoke test + E2E テスト)
実装ステップ
Step 1: generate_sdk.py の更新
変更ファイル: tools/generate_sdk.py
post_process_typescript_sdk()関数を追加し、生成後にバージョンを 0.1.0 に反映- package.json の version と license を自動設定
Step 2: LICENSE の配置
作成ファイル: sdk/typescript/LICENSE
- MIT License を配置(プロジェクト全体のライセンス方針に合わせる)
Step 3: SDK 専用 README の作成
作成ファイル: sdk/typescript/README.md
- 概要、インストール方法、認証設定、使用例、エラーコードの扱いを記載
- エラーコードカタログ.md へのリンクを追加
Step 4: examples ディレクトリの作成
作成ファイル: sdk/typescript/examples/basic_usage.ts
- Projects 一覧取得の基本的な使用例を実装
Step 5: tests ディレクトリの作成
作成ファイル:
sdk/typescript/tests/test_imports.test.ts- インポート確認テストsdk/typescript/tests/test_projects_e2e.test.ts- E2E テスト(環境変数チェック付き)sdk/typescript/tests/test_client_e2e.test.ts- NexusCoreClient の E2E テスト(2025年12月10日追加)sdk/typescript/tests/utils/apikey_helper.ts- E2E テスト用 API Key ヘルパー(2025年12月10日追加)
Step 7: NexusCoreClient の実装(2025年12月10日追加)
作成ファイル:
sdk/typescript/client.ts- 商品レベルの SDK クライアント(NexusCoreClientクラス)sdk/typescript/errors.ts- エラーハンドリング(NexusCoreApiErrorクラス)sdk/typescript/index.ts- エントリーポイントの更新(NexusCoreClientとNexusCoreApiErrorをエクスポート)
機能:
- API Key 認証を内部で処理
- FastAPI の
detail形式に対応したエラーハンドリング - ネットワークエラーの適切な処理(
ECONNREFUSEDなど) - 型安全な API メソッド(Projects, Runs, Execute, Health)
Step 6: Makefile の更新
変更ファイル: Makefile
sdk-ts-build: TypeScript SDK のビルドターゲットを追加sdk-ts-test: TypeScript SDK のテストターゲットを追加sdk-ts-publish-test: Test npm Registry への publish ターゲットを追加
変更ファイル一覧
新規作成ファイル
sdk/typescript/LICENSE- MIT Licensesdk/typescript/README.md- TypeScript SDK 専用 READMEsdk/typescript/examples/basic_usage.ts- 基本的な使用例sdk/typescript/tests/test_imports.test.ts- インポート確認テストsdk/typescript/tests/test_projects_e2e.test.ts- E2E テストsdk/typescript/tests/test_client_e2e.test.ts- NexusCoreClient の E2E テスト(2025年12月10日追加)sdk/typescript/tests/utils/apikey_helper.ts- E2E テスト用 API Key ヘルパー(2025年12月10日追加)sdk/typescript/client.ts- 商品レベルの SDK クライアント(2025年12月10日追加)sdk/typescript/errors.ts- エラーハンドリング(2025年12月10日追加)docs/api/CR-FASTAPI-019_完了報告.md- 完了レポート(本ファイル)
変更ファイル
tools/generate_sdk.py- TypeScript SDK の後処理(バージョン 0.1.0 反映)を追加Makefile- sdk-ts-build、sdk-ts-test、sdk-ts-publish-test ターゲットを追加sdk/typescript/index.ts-NexusCoreClientとNexusCoreApiErrorをエクスポート(2025年12月10日更新)sdk/typescript/package.json-mainとtypesをdist/index.jsとdist/index.d.tsに更新(2025年12月10日更新)sdk/typescript/tsconfig.json-rootDirを.に設定、src/ディレクトリを除外(2025年12月10日更新)sdk/typescript/jest.config.js- カバレッジ設定を更新(2025年12月10日更新)
動作確認結果
テスト実行
TypeScript SDK テスト:
cd sdk/typescript
npm install
npm test
結果(2025年12月10日確認): ✅ すべてのテストが成功
test_imports.test.ts: 10 passed(インポート確認テスト)test_client_e2e.test.ts: 3 passed(NexusCoreClient の E2E テスト)- プロジェクト一覧取得
- 無効な API Key で 401 エラー
- 存在しないプロジェクト ID で 404 エラー
test_projects_e2e.test.ts: 1 passed(Projects API の E2E テスト)- 合計: 14 passed, 3 test suites
既存 API テスト:
cd ../..
pytest tests/api -v -k "not e2e"
結果: ✅ 既存 API テストに悪影響なし
ビルド確認
make sdk-ts-build
結果(2025年12月10日確認): ✅ TypeScript SDK のビルドが成功
cd sdk/typescript
npm run build
- TypeScript コンパイルエラーなし
dist/ディレクトリに正常に出力
設計上の改善点
- バージョン管理: Semantic Versioning に基づく v0.1.0 として明確化
- 自動化: generate_sdk.py の後処理でバージョンを自動反映
- E2E テスト: 環境変数チェックにより、CI 環境でも安全に実行可能
- 商品レベルの SDK クライアント:
NexusCoreClientクラスにより、API Key 認証を内部で処理し、型安全な API メソッドを提供(2025年12月10日追加) - エラーハンドリング: FastAPI の
detail形式に対応し、ネットワークエラーも適切に処理(2025年12月10日追加) - 型安全性: TypeScript の strict モードを有効化し、型安全性を確保(2025年12月10日追加)
既知の制約・注意事項
- SDK コード本体は OpenAPI Generator によって自動生成されるため、手書き修正は禁止
- E2E テストは FASTAPI_BASE_URL と NEXUSCORE_API_KEY 環境変数が必要
- 環境変数が設定されていない場合はテストをスキップする設計
- Test npm Registry への publish には NPM_TOKEN 環境変数の設定が必要
次のステップ
- ✅ 実際の SDK 生成:
make sdk-tsを実行して TypeScript SDK を生成(完了) - ✅ テストの有効化: 生成された SDK の構造に合わせてテストコードを調整(完了)
- ✅ 商品レベルの SDK クライアント:
NexusCoreClientを実装し、エラーハンドリングを改善(完了) - 公式 npm Registry 公開: Test Registry での検証後、公式 npm Registry への公開を検討
追加実装内容(2025年12月10日)
NexusCoreClient の実装
- API Key 認証を内部で処理する商品レベルの SDK クライアント
- 型安全な API メソッド(Projects, Runs, Execute, Health)
- FastAPI の
detail形式に対応したエラーハンドリング - ネットワークエラーの適切な処理(
ECONNREFUSEDなど)
エラーハンドリングの改善
NexusCoreApiErrorクラスによる統一されたエラー処理- FastAPI の
{ detail: { error: { code, message } } }形式に対応 - ネットワークエラー(
status: 0)の適切な処理
テストの追加
test_client_e2e.test.ts: NexusCoreClient の E2E テスト(3 passed)- ネットワークエラーの検出とスキップ機能
- 無効な API Key で 401 エラーが正しく検出されることを確認
関連ドキュメント
- CR-FASTAPI-018 Completion Report - Python SDK 商品化
- エラーコードカタログ
- API README