UNPKG

nestjs-custom-injector

Version:

Custom injecting logic for NestJS with support multi providing

41 lines (40 loc) 1.97 kB
import { InstanceToken } from '@nestjs/core/injector/module'; export declare const CUSTOM_INJECTOR_METADATA = "custom-injector:metadata"; export declare type InjectedProvidersStorageItemOptions<T, E extends CustomInjectorError<T> = CustomInjectorError<T>> = (GetProvidersOptions<T, E> & { lazy?: boolean; multi: true; }) | (GetProviderOptions<T, E> & { lazy?: boolean; multi?: false; }); export declare type InjectedProvidersStorageItem<T = unknown, E extends CustomInjectorError<T> = CustomInjectorError<T>> = { target: object; token: InstanceToken; options?: InjectedProvidersStorageItemOptions<T, E>; instance: null | T | T[]; appiled: boolean; init: () => void; asyncInit: () => Promise<void>; }; export declare class CustomInjectorError<T = unknown> extends Error { message: string; injectedProvidersStorageItem?: InjectedProvidersStorageItem<T, CustomInjectorError<T>> | undefined; constructor(message: string, injectedProvidersStorageItem?: InjectedProvidersStorageItem<T, CustomInjectorError<T>> | undefined); } export interface GetComponentsOptions<T, E extends CustomInjectorError<T>> { providerFactory?: (value: any) => T | Promise<T>; defaultProvidersValue?: T[]; providersFactory?: (value: any) => T[]; errorFactory?: (message: string, injectedProvidersStorageItem?: InjectedProvidersStorageItem<T, E>) => E; } export interface GetLastComponentOptions<T, E extends CustomInjectorError<T>> { providerFactory?: (value: any) => T | Promise<T>; defaultProviderValue?: T | Promise<T>; errorFactory?: (message: string, injectedProvidersStorageItem?: InjectedProvidersStorageItem<T, E>) => E; } export declare type GetProvidersOptions<T, E extends CustomInjectorError<T>> = GetComponentsOptions<T, E> & { propertyName?: keyof T; }; export declare type GetProviderOptions<T, E extends CustomInjectorError<T>> = GetLastComponentOptions<T, E> & { propertyName?: keyof T; };