UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

28 lines (27 loc) 2.1 kB
import EventEmitter from 'events'; type EventMap<T> = Record<keyof T, any[]>; type IfEventMap<Events extends EventMap<Events>, True, False> = object extends Events ? False : True; type Args<Events extends EventMap<Events>, EventName extends string | symbol> = IfEventMap<Events, EventName extends keyof Events ? Events[EventName] : EventName extends keyof EventEmitterEventMap ? EventEmitterEventMap[EventName] : any[], any[]>; type EventNames<Events extends EventMap<Events>, EventName extends string | symbol> = IfEventMap<Events, EventName | (keyof Events & (string | symbol)) | keyof EventEmitterEventMap, string | symbol>; type Listener<Events extends EventMap<Events>, EventName extends string | symbol> = IfEventMap<Events, (...args: EventName extends keyof Events ? Events[EventName] : EventName extends keyof EventEmitterEventMap ? EventEmitterEventMap[EventName] : any[]) => void, (...args: any[]) => void>; interface EventEmitterEventMap { newListener: [eventName: string | symbol, listener: (...args: any[]) => void]; removeListener: [ eventName: string | symbol, listener: (...args: any[]) => void ]; } export declare class EventHandler<T extends EventMap<T> = any> { _eventEmitter: EventEmitter<T>; private _eventCallCount; constructor(); eventCount<E extends string | symbol>(eventName: EventNames<T, E>): number; fire<E extends string | symbol>(eventName: EventNames<T, E>, ...args: Args<T, E>): void; waitForFirstEventCall<E extends string | symbol>(eventName: EventNames<T, E>): Promise<void>; awaitEventCall<E extends string | symbol>(eventName: EventNames<T, E>): Promise<void>; removeListener<E extends string | symbol>(eventName: EventNames<T, E>, listener: Listener<T, E>): EventEmitter<T>; removeAllListeners<E extends string | symbol>(eventName: EventNames<T, E>): EventEmitter<T>; on<E extends string | symbol>(eventName: EventNames<T, E>, listener: Listener<T, E>): EventEmitter<T>; once<E extends string | symbol>(eventName: EventNames<T, E>, listener: Listener<T, E>): EventEmitter<T>; } export {};