import { DynamicModule, Module } from '@nestjs/common'; import { EventEmitterService } from './event-emitter.service'; import { RedmineEventsGateway } from './events/redmine-events.gateway'; import { ServeStaticModule } from '@nestjs/serve-static'; import { join } from 'path'; import MainConfig from './configs/main-config'; import { ConfigModule } from '@nestjs/config'; import { RedmineDataLoader } from './redmine-data-loader/redmine-data-loader'; import { MainController } from './main/main.controller'; import { MainConfigModel } from './models/main-config-model'; @Module({}) export class EventEmitterModule { static register(params?: { config?: MainConfigModel }): DynamicModule { return { module: EventEmitterModule, imports: [ ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'client'), }), ConfigModule.forRoot({ load: [() => params?.config || MainConfig()] }), ], providers: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], exports: [EventEmitterService, RedmineEventsGateway, RedmineDataLoader], controllers: [MainController], }; } }