UNPKG

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
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>;