`akanjs/signal`은 service 주변의 API boundary를 선언합니다. `*.signal.ts`에서 endpoint, internal job, database slice, guard, middleware, request argument, registered server signal을 정의할 때 사용합니다.
Public / None / guard
Guard class는 endpoint 또는 slice 실행 전에 request가 통과할 수 있는지 결정합니다. `Public`은 항상 통과하고, `None`은 막으며, `guard(name)`은 app-specific rule을 위한 named guard base class를 생성합니다.
사용 예시
Req / Res / Ws
advanced endpoint를 위한 internal argument provider입니다. `Req`는 Bun request, `Res`는 mutable response context, `Ws`는 websocket subscription state와 event hook을 제공합니다.
사용 예시
middleware / Middleware
Middleware는 endpoint execution을 감쌉니다. built-in에는 Logging, Cache, Timeout, Retry가 있고 custom middleware는 `SignalContext`를 읽어 언제 `next()`를 호출할지 결정할 수 있습니다.
사용 예시
SignalRegistry
database 및 service signal을 위한 global registry입니다. app `sig.ts` 파일은 serialized fetch metadata, server route, runtime signal lookup을 일관되게 만들기 위해 모든 module signal을 등록합니다.