UNPKG

mira-app-core

Version:

Core library for Mira TypeScript project - provides base functionality without auto-execution

85 lines 2.72 kB
/** * 事件参数基类 */ export declare class EventArgs { /** 事件名称 */ eventName: string; /** 事件发生时间 */ readonly whenOccurred: Date; /** 事件参数 */ args: Record<string, any>; /** * 创建一个事件参数实例 * @param eventName 事件名称,默认为空字符串 */ constructor(eventName?: string, args?: Record<string, any>); } /** * 事件订阅句柄,用于标识和管理订阅 */ export declare class EventSubscription<T extends EventArgs = EventArgs> { private readonly _id; private _isActive; /** * @param _id 订阅ID * @param eventName 事件名称 * @param handler 事件处理函数 * @param priority 订阅优先级,数字越大优先级越高 */ private readonly _eventName; private readonly _handler; private readonly _priority; constructor(eventName: string, handler: (args: T) => void, priority?: number); get id(): string; get isActive(): boolean; get eventName(): string; getHandler(): (args: T) => void; get priority(): number; /** 取消订阅 */ cancel(): void; } import { EventEmitter } from 'events'; /** * 事件管理器单例类 * 继承自Node.js EventEmitter以获得更好的性能和标准API */ export declare class EventManager extends EventEmitter { private static _instance; /** 获取EventManager单例实例 */ static get instance(): EventManager; constructor(); /** * 注册一个事件处理器 * @param eventName 事件名称 * @param handler 事件处理函数 * @returns 订阅句柄 */ subscribe<T extends EventArgs = EventArgs>(eventName: string, handler: (args: T) => void | boolean | Promise<boolean>, priority?: number): this; /** * 注册一个一次性事件处理器 * @param eventName 事件名称 * @param handler 事件处理函数 * @returns 订阅句柄 */ subscribeOnce<T extends EventArgs = EventArgs>(eventName: string, handler: (args: T) => void): this; /** * 取消订阅 * @param eventName 事件名称 * @param handler 要取消的事件处理函数 * @returns 是否成功取消订阅 */ unsubscribe<T extends EventArgs = EventArgs>(eventName: string, handler: (args: T) => void): void; /** * 广播事件 * @param eventName 事件名称 * @param args 事件参数 */ broadcast<T extends EventArgs = EventArgs>(eventName: string, args: T): Promise<boolean>; /** * 清理所有订阅 */ dispose(): void; /** 初始化事件处理器 */ private _initializeEventHandlers; } //# sourceMappingURL=event-manager.d.ts.map