UNPKG

opinionated-machine

Version:

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

14 lines (13 loc) 783 B
import type { Resolver } from 'awilix'; import type { DependencyInjectionOptions } from './DIContext.js'; export type MandatoryNameAndRegistrationPair<T> = { [U in keyof T]: Resolver<T[U]>; }; /** * Use this utility type to combine dependencies from multiple modules into full context list of dependencies */ export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never; export declare abstract class AbstractModule<ModuleDependencies, ExternalDependencies = never> { abstract resolveDependencies(diOptions: DependencyInjectionOptions, externalDependencies: ExternalDependencies): MandatoryNameAndRegistrationPair<ModuleDependencies>; abstract resolveControllers(): MandatoryNameAndRegistrationPair<unknown>; }