UNPKG

post-me

Version:

Use web Workers and other Windows through a simple Promise API

55 lines (54 loc) 1.99 kB
import { EventsType } from './common'; /** * A simple event emitter interface used to implement the observer pattern throughout the codebase. * * @public * */ export interface Emitter<E extends EventsType> { /** * Add a listener to a specific event. * * @param eventName - The name of the event * @param listener - A listener function that takes as parameter the payload of the event */ addEventListener<K extends keyof E>(eventName: K, listener: (data: E[K]) => void): void; /** * Remove a listener from a specific event. * * @param eventName - The name of the event * @param listener - A listener function that had been added previously */ removeEventListener<K extends keyof E>(eventName: K, listener: (data: E[K]) => void): void; /** * Add a listener to a specific event, that will only be invoked once * * @remarks * * After the first occurrence of the specified event, the listener will be invoked and * immediately removed. * * @param eventName - The name of the event * @param listener - A listener function that had been added previously */ once<K extends keyof E>(eventName: K): Promise<E[K]>; } /** * A concrete implementation of the {@link Emitter} interface * * @public */ export declare class ConcreteEmitter<E extends EventsType> implements Emitter<E> { private _listeners; constructor(); /** {@inheritDoc Emitter.addEventListener} */ addEventListener<K extends keyof E>(eventName: K, listener: (data: E[K]) => void): void; /** {@inheritDoc Emitter.removeEventListener} */ removeEventListener<K extends keyof E>(eventName: K, listener: (data: E[K]) => void): void; /** {@inheritDoc Emitter.once} */ once<K extends keyof E>(eventName: K): Promise<E[K]>; /** @internal */ protected emit<K extends keyof E>(eventName: K, data: E[K]): void; /** @internal */ protected removeAllListeners(): void; }