@nestia/core
Version:
Super-fast validation decorators of NestJS
45 lines (41 loc) • 1.28 kB
text/typescript
import { Module } from "@nestjs/common";
import { ModuleMetadata } from "@nestjs/common/interfaces";
import { Creator } from "../typings/Creator";
import { load_controllers } from "./internal/load_controller";
/**
* Dynamic module.
*
* `DynamicModule` is a namespace wrapping a convenient function, which can load
* controller classes dynamically just by specifying their directory path.
*
* @author Jeongho Nam - https://github.com/samchon
*/
export namespace DynamicModule {
/**
* Mount dynamic module.
*
* Constructs a module instance with directory path of controller classes.
*
* Every controller classes in the target directory would be dynamically
* mounted.
*
* @param path Path of controllers
* @param metadata Additional metadata except controllers
* @returns Module instance
*/
export async function mount(
path: string | string[] | { include: string[]; exclude?: string[] },
metadata: Omit<ModuleMetadata, "controllers"> = {},
isTsNode?: boolean,
) {
// LOAD CONTROLLERS
const controllers: Creator<object>[] = await load_controllers(
path,
isTsNode,
);
// RETURN WITH DECORATING
({ ...metadata, controllers })
class NestiaModule {}
return NestiaModule;
}
}