2.0.1 • Published 4 months ago

eemitt v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

eemitt

Event emitter for all engines.

Installation

npm i eemitt --save

Usage

import { Emitter } from 'eemitt'

const emitter = new Emitter()

// listen to an event
emitter.on('foo', (e, data) => console.log('foo', e, data))
emitter.once('foo', (e, data) => console.log('foo', e, data))

// fire an event
emitter.emit('foo')
emitter.emit({ type: 'foo', a: 'b' })

// clearing all event of 'foo'
emitter.removeAllListeners('foo')

// clearing all events
emitter.removeAllListeners()

// working with handler references:
function onFoo() {}
emitter.on('foo', onFoo)   // listen
emitter.off('foo', onFoo)  // unlisten

Types

export interface IEventType {
    [key: string]: any;
    type: string;
}
export interface IEvent<T = unknown, U = IEmitter> {
    [key: string]: any;
    type: string;
    target: T;
    currentTarget: U;
    isImmediatePropagationStopped: boolean;
    stopImmediatePropagation(): void;
    startImmediatePropagation(): void;
}
export interface IEmitter {
    _events: IEventTransports;
    on(eventName: string | string[], fn: IEventListener, ctx?: any): this;
    once(eventName: string | string[], fn: IEventListener, ctx?: any): this;
    off(eventName: string | string[], fn: IEventListener): this;
    emit(eventArgs: string | IEventType): number;
    removeAllListeners(eventName?: string | string[]): this;
}
export type IEventListener<T = unknown, U = IEmitter> = (evt: IEvent<T, U>) => any;
export interface IEventTransport {
    fn: IEventListener;
    once: boolean;
    ctx: any;
}
export interface IEventTransports {
    [eventName: string]: IEventTransport[];
}
export declare class EEvent<T = unknown, U = Emitter> implements IEvent<T, U> {
    [key: string]: any;
    type: string;
    target: T;
    currentTarget: U;
    isImmediatePropagationStopped: boolean;
    constructor(eventType: string | IEventType, currentTarget: U);
    stopImmediatePropagation(): void;
    startImmediatePropagation(): void;
}
export declare class Emitter implements IEmitter {
    _events: IEventTransports;
    on(eventName: string | string[], fn: IEventListener<unknown, this>, ctx?: any): this;
    once(eventName: string | string[], fn: IEventListener<unknown, this>, ctx?: any): this;
    off(eventName: string | string[], fn: IEventListener<unknown, this>): this;
    emit(eventType: string | IEventType): number;
    removeAllListeners(eventName?: string | string[]): this;
}
2.0.1

4 months ago

2.0.0

4 months ago

1.0.0

8 months ago