awilix-manager
Version:
Wrapper over awilix to support more complex use-cases, such as async init and eager injection
38 lines (37 loc) • 2.04 kB
TypeScript
import { type AwilixContainer, type BuildResolver, type BuildResolverOptions, type DisposableResolver } from 'awilix';
import type { FunctionReturning } from 'awilix/lib/container';
import type { Resolver } from 'awilix/lib/resolvers';
declare module 'awilix' {
interface ResolverOptions<T> {
asyncInit?: boolean | string | (<U extends T>(instance: U, diContainer: AwilixContainer) => Promise<unknown>);
asyncInitPriority?: number;
asyncDispose?: boolean | string | (<U extends T>(instance: U) => Promise<unknown>);
asyncDisposePriority?: number;
eagerInject?: boolean | string;
tags?: string[];
enabled?: boolean;
}
}
export type AwilixManagerConfig = {
diContainer: AwilixContainer;
asyncInit?: boolean;
asyncDispose?: boolean;
eagerInject?: boolean;
strictBooleanEnforced?: boolean;
};
export declare function asMockClass<T = object>(Type: unknown, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare function asMockValue<T = object>(value: unknown): Resolver<T>;
export declare function asMockFunction<T = object>(fn: FunctionReturning<unknown>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
export declare class AwilixManager {
readonly config: AwilixManagerConfig;
constructor(config: AwilixManagerConfig);
executeInit(): Promise<void>;
executeDispose(): Promise<void>;
getWithTags(tags: string[]): Record<string, any>;
getByPredicate(predicate: (entity: any) => boolean): Record<string, any>;
}
export declare function asyncInit(diContainer: AwilixContainer): Promise<void>;
export declare function eagerInject(diContainer: AwilixContainer): void;
export declare function getWithTags(diContainer: AwilixContainer, tags: string[]): Record<string, any>;
export declare function getByPredicate(diContainer: AwilixContainer, predicate: (entity: any) => boolean): Record<string, any>;
export declare function asyncDispose(diContainer: AwilixContainer): Promise<void>;