nestjs-custom-injector
Version:
Custom injecting logic for NestJS with support multi providing
41 lines (40 loc) • 1.97 kB
TypeScript
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;
};