UNPKG

typescript-event-emitter

Version:

Versatile and feature-rich TypeScript library for event management, providing a solid foundation for building event-driven applications in TypeScript.

52 lines (51 loc) 1.32 kB
import { EventFilter, Listener } from './Types'; export interface GlobalOption { separator: string; } export interface EventInfo { separator: string; event: string; } export interface EventHistory { event: string; listenerId: string; timestamp: number; args: unknown[]; } export interface ThrottleDebounceOption { delay: number; leading?: boolean; trailing?: boolean; } export interface Option { filter?: EventFilter; /** * Throttle configuration. Can be a number (delay in ms) or an object with delay, leading, and trailing. */ throttle?: number | ThrottleDebounceOption; /** * Debounce configuration. Can be a number (delay in ms) or an object with delay, leading, and trailing. */ debounce?: number | ThrottleDebounceOption; priority?: number; separator?: string; concurrency?: number; } export interface EventListener { listener: Listener; priority: number; eventInfo: EventInfo; concurrency: number; id: string; } export interface EventNamespace { [event: string]: { listeners: EventListener[]; throttled?: boolean; }; } export type Hook = (eventName: string, ...args: unknown[]) => void | Promise<void>; export interface Hooks { beforeEmit: Hook[]; afterEmit: Hook[]; }