opinionated-machine
Version:
Very opinionated DI framework for fastify, built on top of awilix
22 lines (21 loc) • 1.29 kB
TypeScript
import { type AwilixContainer, type NameAndRegistrationPair } from 'awilix';
import type { AbstractModule } from './AbstractModule.js';
import type { NestedPartial } from './configUtils.js';
import { type DependencyInjectionOptions, DIContext } from './DIContext.js';
export type CreateTestContextParams<Dependencies, Config extends object> = {
modules?: readonly AbstractModule<unknown>[];
secondaryModules?: readonly AbstractModule<unknown>[];
diOptions?: DependencyInjectionOptions;
dependencyOverrides?: NameAndRegistrationPair<Dependencies>;
configOverrides?: NestedPartial<Config>;
};
export declare abstract class AbstractTestContextFactory<Dependencies extends object, ExternalDependencies, Config extends object> {
diContainer: AwilixContainer<Dependencies>;
private readonly externalDependencies;
protected configDependencyId: string;
private readonly allModules;
constructor(externalDependencies: ExternalDependencies, allModules: readonly AbstractModule<unknown>[], diContainer?: AwilixContainer<Dependencies>);
resetExternalDependencies(): void;
abstract resolveBaseAppConfig(): Config;
createTestContext(params?: CreateTestContextParams<Dependencies, Config>): Promise<DIContext<Dependencies, Config, ExternalDependencies>>;
}