@brycemarshall/event-dispatcher
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

@brycemarshall/event-dispatcher

A library for dispatching events to subscriber clients.

Installation

npm install @brycemarshall/event-dispatcher

The module exports the following types:

/**
 * The interface that must be implemented by an object that can subscribe to events.
 */
export interface AppEventListenerObject {
    /**
     * The method that is invoked when an event is raised.
     * @param sender The object that raised or is otherwise associated with the event.
     * @param args Optional event arguments.
     */
    handleEvent(sender: any, args?: any): void;
}
/**
 * The signature of function can subscribe to events.
 */
export declare type AppEventListener = (sender: any, args?: any) => void;
/**
 * The interface implemented by an event source.
 */
export interface AppEventSource {
    /**
     * Adds the specified event listener to the event source's subscriber collection.
     * @param listener The event listener to be added.
     */
    subscribe(listener: AppEventListener | AppEventListenerObject): void;
    /**
     * Removes the specified event listener from the event source's subscriber collection.
     * @param listener The event listener to be removed.
     */
    unsubscribe(listener: AppEventListener | AppEventListenerObject): void;
}
/**
 * The interface implemented by an event dispatcher.
 */
export interface AppEventDispatcher extends AppEventSource {
    /**
     * Raises an event which is dispatched to all subscribers in the event dispatcher's subscriber collection.
     * @param sender The object that raised or is otherwise associated with the event.
     * @param args Optional event arguments.
     */
    dispatch(sender: any, args?: any): void;
}
/**
 * Manages event subscriptions and dispatching.
 */
export declare class EventDispatcher implements AppEventDispatcher {
    private _h;
    /**
     * Returns an AppEventSource object which can be used to manage subscriptions associated with this instance, but which cannot be used to dispatch events.
     */
    getTarget(): AppEventSource;
    /**
     * Raises an event which is dispatched to all subscribers in this instance's subscriber collection.
     * @param sender The object that raised or is otherwise associated with the event.
     * @param args Optional event arguments.
     */
    dispatch(sender: any, args?: any): void;
    /**
     * Adds the specified event listener to this instances subscriber collection.
     * @param listener The event listener to be added.
     */
    subscribe(listener: AppEventListener | AppEventListenerObject): void;
    /**
     * Removes the specified event listener from this instance's subscriber collection.
     * @param listener The event listener to be removed.
     */
    unsubscribe(listener: AppEventListener | AppEventListenerObject): void;
}

Contributors

  • Bryce Marshall

MIT Licenced

Package Sidebar

Install

npm i @brycemarshall/event-dispatcher

Weekly Downloads

2

Version

1.0.1

License

MIT

Last publish

Collaborators

  • brycemarshall