32 lines
935 B
TypeScript
32 lines
935 B
TypeScript
import type { Router, Application } from 'express'
|
|
import type { ServiceContainer } from './container.js'
|
|
|
|
export interface ModuleMetadata {
|
|
id: string
|
|
name: string
|
|
version: string
|
|
basePath: string
|
|
dependencies?: string[]
|
|
order?: number
|
|
}
|
|
|
|
export interface ModuleLifecycle {
|
|
onLoad?(container: ServiceContainer): void | Promise<void>
|
|
onUnload?(container: ServiceContainer): void | Promise<void>
|
|
onActivate?(container: ServiceContainer): void | Promise<void>
|
|
onDeactivate?(container: ServiceContainer): void | Promise<void>
|
|
}
|
|
|
|
export interface ApiModule {
|
|
metadata: ModuleMetadata
|
|
lifecycle?: ModuleLifecycle
|
|
createRouter: (container: ServiceContainer) => Router | Promise<Router>
|
|
}
|
|
|
|
export interface LegacyApiModule {
|
|
name: string
|
|
basePath: string
|
|
init?: (app: Application, container: ServiceContainer) => void | Promise<void>
|
|
createRouter: (container: ServiceContainer) => Router | Promise<Router>
|
|
}
|