import type { Application } from 'express' import type { ServiceContainer } from './container.js' import type { ApiModule } from './types.js' import { ModuleManager } from './moduleManager.js' export async function loadModules( app: Application, container: ServiceContainer, modules: ApiModule[] ): Promise { const manager = new ModuleManager(container) for (const module of modules) { await manager.register(module) } for (const module of manager.getAllModules()) { await manager.activate(module.metadata.id) const router = await module.createRouter(container) app.use('/api' + module.metadata.basePath, router) } return manager }