UNPKG

opinionated-machine

Version:

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

33 lines (32 loc) 1.83 kB
import type { AwilixContainer, NameAndRegistrationPair } from 'awilix'; import { AwilixManager } from 'awilix-manager'; import type { FastifyInstance } from 'fastify'; import type { AbstractModule } from './AbstractModule.js'; import { type NestedPartial } from './configUtils.js'; import type { ENABLE_ALL } from './diConfigUtils.js'; export type RegisterDependenciesParams<Dependencies, Config, ExternalDependencies> = { modules: readonly AbstractModule<unknown, ExternalDependencies>[]; secondaryModules?: readonly AbstractModule<unknown, ExternalDependencies>[]; dependencyOverrides?: NameAndRegistrationPair<Dependencies>; configOverrides?: NestedPartial<Config>; configDependencyId?: string; }; export type DependencyInjectionOptions = { jobQueuesEnabled?: false | typeof ENABLE_ALL | string[]; enqueuedJobWorkersEnabled?: false | typeof ENABLE_ALL | string[]; messageQueueConsumersEnabled?: false | typeof ENABLE_ALL | string[]; periodicJobsEnabled?: false | typeof ENABLE_ALL | string[]; }; export declare class DIContext<Dependencies extends object, Config extends object, ExternalDependencies = undefined> { private readonly options; readonly awilixManager: AwilixManager; readonly diContainer: AwilixContainer<Dependencies>; private readonly controllerResolvers; private readonly appConfig; constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions, appConfig: Config, awilixManager?: AwilixManager); private registerModule; registerDependencies(params: RegisterDependenciesParams<Dependencies, Config, ExternalDependencies>, externalDependencies: ExternalDependencies, resolveControllers?: boolean): void; registerRoutes(app: FastifyInstance<any, any, any, any>): void; destroy(): Promise<void>; init(): Promise<void>; }