han-prev-core
Version:
Core framework for Han - A powerful Node.js framework inspired by NestJS
70 lines (69 loc) • 2.69 kB
TypeScript
import "reflect-metadata";
import { Express } from "express";
import type { CorsOptions } from "cors";
import type { HelmetOptions } from "helmet";
export interface HanApplicationOptions {
cors?: boolean | CorsOptions;
helmet?: boolean | HelmetOptions;
bodyParser?: boolean;
globalPrefix?: string;
microservice?: boolean;
logger?: boolean | any;
shutdownHooks?: {
enabled?: boolean;
signals?: Array<keyof HanApplicationShutdownSignal>;
gracefulTimeout?: number;
};
}
export interface HanApplicationShutdownSignal {
SIGINT: string;
SIGTERM: string;
SIGKILL: string;
}
export interface HanApplication {
app: Express;
listen(port: number | string, callback?: () => void): Promise<any>;
listen(port: number | string, hostname: string, callback?: () => void): Promise<any>;
enableCors(): HanApplication;
useGlobalPrefix(prefix: string): HanApplication;
getUrl(): Promise<string>;
close(): Promise<void>;
getRoutes(): any[];
get<T>(token: string | (new (...args: any[]) => T)): T;
getHttpServer(): any;
getHttpAdapter(): any;
startAllMicroservices(): Promise<HanApplication>;
useGlobalFilters(...filters: any[]): HanApplication;
useGlobalPipes(...pipes: any[]): HanApplication;
useGlobalInterceptors(...interceptors: any[]): HanApplication;
useGlobalGuards(...guards: any[]): HanApplication;
use(...args: any[]): HanApplication;
init(): Promise<void>;
onApplicationShutdown(callback: () => Promise<void> | void): void;
}
export declare class HanFactory {
private moduleClass;
private options;
private app;
private controllers;
private server;
private isShuttingDown;
private shutdownCallbacks;
constructor(moduleClass: any, options?: HanApplicationOptions);
static create(moduleClass: any, options?: HanApplicationOptions): Promise<HanApplication>;
static createMicroservice(moduleClass: any, options?: HanApplicationOptions): Promise<HanApplication>;
bootstrap(): Promise<HanApplication>;
private setupCriticalMiddleware;
private setupOptionalMiddleware;
private bootstrapModule;
private configureModuleMiddleware;
private createModuleInstance;
private setupRoutes;
private setupGlobalPrefix;
private setupErrorHandling;
private setupShutdownHooks;
private extractControllersFromModule;
private createApplicationInstance;
}
export declare function createHanApp(moduleClass: any, options?: HanApplicationOptions): Promise<HanApplication>;
export declare function createHanMicroservice(moduleClass: any, options?: HanApplicationOptions): Promise<HanApplication>;