@golevelup/nestjs-modules
Version:
Reusable utilties to help level up NestJS Modules
36 lines • 1.61 kB
TypeScript
import { DynamicModule, Provider, Type } from '@nestjs/common';
import { ModuleMetadata } from '@nestjs/common/interfaces';
import { Subject } from 'rxjs';
type InjectionToken = string | symbol | Type;
export interface ModuleConfigFactory<T> {
createModuleConfig(): Promise<T> | T;
}
export type AsyncModuleConfig<T> = Pick<ModuleMetadata, 'imports' | 'exports'> & ({
useExisting: {
value: ModuleConfigFactory<T>;
provide?: InjectionToken;
};
} | {
useClass: Type<ModuleConfigFactory<T>>;
} | {
useFactory: (...args: any[]) => Promise<T> | T;
inject?: any[];
});
export declare function createModuleConfigProvider<T>(provide: InjectionToken, options: AsyncModuleConfig<T>): Provider[];
export interface IConfigurableDynamicRootModule<T, U> {
new (): Type<T>;
moduleSubject: Subject<DynamicModule>;
forRoot(moduleCtor: Type<T>, moduleConfig?: U): DynamicModule;
forRootAsync(moduleCtor: Type<T>, asyncModuleConfig: AsyncModuleConfig<U>): DynamicModule;
externallyConfigured(moduleCtor: Type<T>, wait: number): Promise<DynamicModule>;
}
/**
*
* @deprecated Please use Nestjs Configurable Module {@see https://docs.nestjs.com/fundamentals/dynamic-modules#configurable-module-builder}
* @param moduleConfigToken
* @param moduleProperties
* @returns
*/
export declare function createConfigurableDynamicRootModule<T, U>(moduleConfigToken: InjectionToken, moduleProperties?: Partial<Pick<ModuleMetadata, 'imports' | 'exports' | 'providers' | 'controllers'>>): IConfigurableDynamicRootModule<T, U>;
export {};
//# sourceMappingURL=dynamicModules.d.ts.map