import 'reflect-metadata'; import { TConstructor } from '../../../types'; import { IAutoManager } from './IAutoManager'; import { ICronTaskRegister } from '../slot'; import { ApplicationEventPublisher } from '../slot'; /** * 自动装配管理器 */ declare class ApplicationManager { protected factory: TConstructor[]; protected managerChain: IAutoManager[]; /** * 装配完成后的服务集合 * key: symbol 装配的服务类型 * value: Set 装配的服务实例集合 * * 例如: 获取所有调度任务注解的服务实例集合 * @example * ```typescript * import { ApplicationContext } from '@that-tool'; * // 获取所有调度任务注解的服务实例集合 * const cronTasks = ApplicationContext.services.get(METADATA.TASK.CRON); * // 进一步获取名字为 CronTaskRegister 的服务实例 * const cronTaskRegister = cronTasks.get('CronTaskRegister'); * // 进一步获取每个调度任务实例ICronTaskService的线程池状态 * const register = ApplicationContext.getCronTasks(); * for (const [ id, task ] of register.get('CronTaskRegister')!.services){ * Logger.info("正在挂起的线程:", task._queuePending) * Logger.info("正在执行的线程:", task._queueThread) * } * ``` */ services: Map>; eventPublisher: ApplicationEventPublisher; add(china: TConstructor): this; build(baseDir?: string): Promise; protected loadModule(path: string): Promise; /** * 扫描并自动装配 * @param scanDir 基于目录扫描 默认 src */ protected scan(scanDir?: string): Promise; protected execute(): Promise; getEventListeners(): Map; /** * 获取所有调度任务的服务实例集合 */ getCronTasks(): Map; } /** * 自动装配管理器上下文 * * 用于在不同模块之间共享装配器实例 * * 构建时add添加管理链路,build构建装配链路并执行装配 * * 默认添加了 ConfigureManager、FrameWorkManager、TaskManager 三个管理器, 可直接build() * @example * ```typescript * import { ApplicationContext } from '@that-tool'; * * (async () => { * // await ApplicationContext.add(ConfigureManager).build(); * await ApplicationContext.build(); * // 装配完成后可通过 ApplicationContext.services 获取装配的服务 * Logger.info(ApplicationContext.services); * })(); * ``` */ export declare const ApplicationContext: ApplicationManager; export declare let EventPublisher: ApplicationEventPublisher; export {};