@zerooneit/expressive-tea
Version:
A REST API over Express and Typescript
35 lines (34 loc) • 1.37 kB
TypeScript
import { Express, Router } from 'express';
import { ExpressiveTeaModuleProps } from '../libs/interfaces';
/**
* @typedef {Object} ExpressiveTeaModuleProps
* @property {Object[]} controllers Controllers Assigned to Module
* @property {Object[]} providers Dependency Injection Providers
* @property {string} mountpoint Endpoint part which Module it will use as root.
*/
/**
* @module Decorators/Module
*/
/**
* Module Decorator is a Class Decorator which is help to register a Module into Expressive Tea. A module is a
* placeholder over a mountpoint. We can considerate a module like a container which provide isolation and modularity
* for our project. This module can be mounted in different applications and will move all the controller routes too.
* @decorator {ClassDecorator} Module - Module Class Register Decorator
* @param {ExpressiveTeaModuleProps} options
* @summary Module Decorator
* @example
* {REPLACE-AT}Module({
* controllers: [],
* providers: [],
* mountpoint: '/'
* })
* class Example {}
*/
export declare function Module(options: ExpressiveTeaModuleProps): <T extends new (...args: any[]) => {}>(Module: T) => {
new (...args: any[]): {
readonly settings: ExpressiveTeaModuleProps;
readonly router: Router;
readonly controllers: any[];
__register(server: Express): void;
};
} & T;