import { Module, DynamicModule, Global } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { EnterpriseModule } from './module/enterprise/enterprise.module'; import { UtilsModule } from './utils/utils.module'; import { UserModule } from './module/user/user.module'; import { EntityModule } from './module/meta/entity.module'; import { ModuleModule } from './module/module/module.module'; import { NotificationModule } from './module/notification/notification.module'; import { LayoutModule } from './module/layout/layout.module'; import { ListMasterModule } from './module/listmaster/listmaster.module'; import { FilterModule } from './module/filter/filter.module'; import { AuthModule } from './module/auth/auth.module'; import { LeadModule } from './module/lead/lead.module'; import { LayoutPreferenceModule } from './module/layout_preference/layout_preference.module'; import { WorkflowModule } from './module/workflow/workflow.module'; import { WorkflowAutomationModule } from './module/workflow-automation/workflow-automation.module'; import { MapperModule } from './module/mapper/mapper.module'; import { WorkflowScheduleModule } from './module/workflow-schedule/workflow-schedule.module'; import { LinkedAttributesModule } from './module/linked_attributes/linked_attributes.module'; import { ExportModule } from './module/export/export.module'; @Global() @Module({}) export class CoreModule { static forRootAsync( dbModule: DynamicModule, isSso: boolean, isWorkflow?: boolean, ): DynamicModule { if (!dbModule) { throw new Error('Database module must be provided.'); } const importsArray = [ ConfigModule.forRoot({ isGlobal: true }), dbModule, EntityModule, UtilsModule, NotificationModule, ListMasterModule, FilterModule, AuthModule, LeadModule, LayoutPreferenceModule, WorkflowModule, WorkflowAutomationModule, WorkflowScheduleModule.forRoot({ is_workflow: isWorkflow }), MapperModule, LinkedAttributesModule, ExportModule ]; const exportsArray = [ ConfigModule, dbModule, EntityModule, AuthModule, UtilsModule, NotificationModule, ListMasterModule, FilterModule, LeadModule, LayoutPreferenceModule, MapperModule, WorkflowModule, WorkflowAutomationModule, WorkflowScheduleModule.forRoot({ is_workflow: isWorkflow }), LinkedAttributesModule, ExportModule ]; if (isSso) { importsArray.push( UserModule, ModuleModule, LayoutModule, EnterpriseModule, ); exportsArray.push( UserModule, ModuleModule, LayoutModule, EnterpriseModule, ); } return { module: CoreModule, imports: importsArray, exports: exportsArray, }; } }