opinionated-machine
Version:
Very opinionated DI framework for fastify, built on top of awilix
25 lines (24 loc) • 850 B
TypeScript
import type { BuildResolver, BuildResolverOptions, DisposableResolver } from 'awilix';
declare module 'awilix' {
interface ResolverOptions<T> {
/** Marks a resolver as an api controller (new ApiContract-based). */
isApiController?: boolean;
}
}
/**
* Register an `AbstractApiController` subclass with the awilix DI container.
*
* The returned resolver does **not** set `isSSEController` or `isDualModeController`,
* so `DIContext` reads its `routes` property automatically during `registerRoutes()`.
*
* @example
* ```typescript
* // In a module's resolveControllers():
* return {
* userController: asApiControllerClass(UserController),
* }
* ```
*/
export declare function asApiControllerClass<T = object>(Type: {
prototype: T;
}, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;