/**
* @file 模块基类
* @description 提供功能模块的基类实现
* @author JunBin.Yang
*/
import { Container } from '@core/di';
import { NavigationService } from '@core/navigation';
import { FeatureModule, ModuleContext, RouteRegistry } from './FeatureModule';
/**
* 模块基类
* 提供功能模块的默认实现
*/
export abstract class BaseModule implements FeatureModule {
/**
* 模块唯一标识(子类必须实现)
*/
abstract readonly moduleId: string;
/**
* 模块名称
*/
readonly moduleName?: string;
/**
* 模块版本
*/
readonly version?: string;
/**
* 模块依赖
*/
readonly dependencies?: string[];
/**
* 注册服务(子类可选实现)
* @param container DI 容器
*/
registerServices?(container: Container): void;
/**
* 注册路由(子类可选实现)
* @param registry 路由注册器
*/
registerRoutes?(registry: RouteRegistry): void;
/**
* 注册守卫(子类可选实现)
* @param navigationService 导航服务
*/
registerGuards?(navigationService: NavigationService): void;
/**
* 模块初始化(子类可选实现)
* @param context 模块上下文
*/
onInit?(context: ModuleContext): Promise<void> | void;
/**
* 模块销毁(子类可选实现)
*/
onDestroy?(): void;
}