opinionated-machine
Version:
Very opinionated DI framework for fastify, built on top of awilix
14 lines (13 loc) • 783 B
TypeScript
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>;
}