多くの TypeScript DI ライブラリは、legacy decorators、Documentation Index
Fetch the complete documentation index at: https://docs.wyrly.dev/llms.txt
Use this file to discover all available pages before exploring further.
reflect-metadata、
emitDecoratorMetadata を前提に設計されてきました。
Wyrly は別のアプローチを取ります。依存関係は明示的で、トークンは型付きで、コアパッケージ
は Web フレームワークに依存しません。
設計目標
- TypeScript 標準デコレーターで動く
reflect-metadataを避けるemitDecoratorMetadataを避ける- parameter decorators を避ける
- 依存関係を明示的でレビューしやすい形にする
- リクエストスコープの Web アプリケーションをサポートする
- ドメインとアプリケーションコードをフレームワーク非依存に保つ
- CI やツール向けに依存グラフの検査機能を提供する
DDD と Clean Architecture
DDD や Clean Architecture のコードベースでは、application services が port に依存することがよくあります。暗黙的な自動化より明示性
Wyrly は意図的に依存宣言を必要とします。Request scopes
Web アプリでは、1 リクエストにつき 1 つの依存スコープが必要になることがよくあります。Wyrly はコアパッケージでスコープ付きライフタイムをサポートし、主要フレームワーク向けに薄いアダプターを提供します。 リクエストスコープは次のような用途に使います。- リクエストコンテキスト
- 認証済みユーザーコンテキスト
- unit-of-work オブジェクト
- DataLoader インスタンス
- リクエストローカルなキャッシュ
- 破棄が必要なリソース