メインコンテンツへスキップ

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.

Wyrly はフレームワーク統合を薄く保ちます。コアパッケージはトークン、プロバイダー、コンテナ、スコープ、検証、グラフ検査を担当します。アダプターはリクエストスコープを作成し、フレームワーク固有の方法で公開します。

Next.js App Router

インストール:
npm install @wyrly/next @wyrly/core next react
Route Handlers では withDI を使います。
import { createContainer } from "@wyrly/core";
import { withDI } from "@wyrly/next";

const container = createContainer();

export const GET = withDI(container, async (_req, { di }) => {
  const usecase = di.resolve(MyUseCase);
  return Response.json(await usecase.run());
});
Next.js adapter は Server Actions と Server Components 向けの helpers も提供します。

Express

Express adapter を使うと、1 request につき 1 scope を作り、request object から取得できます。
import { diMiddleware } from "@wyrly/express";

app.use(diMiddleware(container));

Hono

Hono アダプターはエッジ向けのリクエストスコープに使います。
import { di, getDI } from "@wyrly/hono";

app.use("*", di(container));

app.get("/users/:id", async (c) => {
  const scope = getDI(c);
  const usecase = scope.resolve(GetUserUseCase);
  return c.json(await usecase.execute(c.req.param("id")));
});

Fresh

Fresh 2.x アプリケーションでは @wyrly/fresh を使います。このパッケージは JSR で公開されています。
deno add jsr:@wyrly/fresh

GraphQL

各 GraphQL リクエストが DI スコープとリクエストローカルなローダーを所有すべき場合は、GraphQL アダプターを使います。 DataLoader インスタンス、リクエストコンテキスト、認証状態、破棄が必要なリソースに有用です。

Adapter はアプリの外側の層に置く

フレームワークアダプターはアプリケーションの外側の層に置いてください。ドメインオブジェクトや use case は RequestResponse、フレームワークのコンテキストオブジェクトではなく、ポートや値オブジェクトに依存すべきです。