opinionated-machine
Version:
Very opinionated DI framework for fastify, built on top of awilix
35 lines (34 loc) • 2.45 kB
TypeScript
import type { BuildResolver, BuildResolverOptions, Constructor, DisposableResolver } from 'awilix';
import type { FunctionReturning } from 'awilix/lib/container';
import type { DependencyInjectionOptions } from './DIContext.js';
declare module 'awilix' {
interface ResolverOptions<T> {
public?: boolean;
}
}
export declare function asSingletonClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asSingletonFunction<T>(fn: FunctionReturning<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asServiceClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asUseCaseClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asRepositoryClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asControllerClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export type MessageQueueConsumerModuleOptions = {
queueName: string;
diOptions: DependencyInjectionOptions;
};
export declare function asMessageQueueHandlerClass<T = object>(Type: Constructor<T>, mqOptions: MessageQueueConsumerModuleOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export type EnqueuedJobWorkerModuleOptions = {
queueName: string;
diOptions: DependencyInjectionOptions;
};
export declare function asEnqueuedJobWorkerClass<T = object>(Type: Constructor<T>, workerOptions: EnqueuedJobWorkerModuleOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export type PeriodicJobOptions = {
jobName: string;
diOptions: DependencyInjectionOptions;
};
export declare function asPeriodicJobClass<T = object>(Type: Constructor<T>, workerOptions: PeriodicJobOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export type JobQueueModuleOptions = {
queueName?: string;
diOptions: DependencyInjectionOptions;
};
export declare function asJobQueueClass<T = object>(Type: Constructor<T>, queueOptions: JobQueueModuleOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;