Files
XCDesktop/api/infra/moduleLoader.ts
2026-03-08 01:34:54 +08:00

25 lines
685 B
TypeScript

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<ModuleManager> {
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
}