mira-app-core
Version:
Core library for Mira TypeScript project - provides base functionality without auto-execution
85 lines • 2.72 kB
TypeScript
/**
* 事件参数基类
*/
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