super-event-emitter
Version:
🔨 Lightweight and simple interpretation of popular event management
54 lines (53 loc) • 2.13 kB
TypeScript
/**
* @author Piotr Kowalski <piecioshka@gmail.com> (https://piecioshka.pl/)
* @name super-event-emitter
* @description 🔨 Lightweight and simple interpretation of popular event management
* @version 5.0.3
* @license MIT
* @example
* const bar = new SuperEventEmitter();
* bar.on('foo', function () {
* console.log('foo event emitted');
* });
* bar.emit('foo');
*/
type MyEvent = {
name: string;
fn: (this: MyEvent["ctx"], nameOrPayload: string | any, payload?: any) => void;
run: MyEvent["fn"];
ctx: unknown;
};
export declare class SuperEventEmitter {
_listeners: MyEvent[];
/**
* Register listener on concrete name with specified handler.
*/
on: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
addEventListener: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
addListener: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
bind: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
/**
* Register listener.
* Remove them after once event triggered.
*/
once: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
/**
* Unregister listener.
* Remove concrete listener by name and itself definition.
*/
off: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
removeEventListener: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
removeListener: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
unbind: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
/**
* Trigger event.
* All of listeners waiting for emit event will be executed.
*/
emit: (name: MyEvent["name"], payload?: any) => this;
dispatchEventListener: (name: MyEvent["name"], payload?: any) => this;
dispatchListener: (name: MyEvent["name"], payload?: any) => this;
trigger: (name: MyEvent["name"], payload?: any) => this;
static mixin: <T extends Record<string, any>>(target: T) => T & Record<keyof SuperEventEmitter, any>;
static VERSION: string;
}
export {};