UNPKG

opinionated-machine

Version:

Very opinionated DI framework for fastify, built on top of awilix

38 lines 1.33 kB
/** * Abstract base class for controllers that use the `ApiContract` API. * * Concrete controllers declare a static `contracts` field and a `routes` object * built with `buildApiRoute()`. The generic ensures every contract has a matching route. * * @example * ```typescript * class UserController extends AbstractApiController<typeof UserController.contracts> { * static contracts = { * getUser: getUserContract, * streamUpdates: streamUpdatesContract, * } as const * * readonly routes = { * getUser: buildApiRoute(UserController.contracts.getUser, async (req) => ({ * status: 200, * body: { id: req.params.id }, * })), * streamUpdates: buildApiRoute(UserController.contracts.streamUpdates, async (_req, sse) => { * sse.start('keepAlive') * }), * } * } * ``` */ export class AbstractApiController { /** * Optional controller-level defaults for gateway metadata. * * Merged underneath per-route metadata (passed inline via * `buildApiRoute(..., { gatewayMetadata })` or attached post-hoc via * `withGatewayMetadata`) when `DIContext.buildGatewayManifest()` assembles a * manifest. See `AbstractController.gatewayDefaults` for full semantics. */ gatewayDefaults; } //# sourceMappingURL=AbstractApiController.js.map