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
TypeScript
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[];
}