diff --git a/src/engine/EventEmitter.ts b/src/engine/EventEmitter.ts index 23ef2353a..8ea42562d 100644 --- a/src/engine/EventEmitter.ts +++ b/src/engine/EventEmitter.ts @@ -6,6 +6,9 @@ export type Handler = (event: EventType) => void; * Interface that represents a handle to a subscription that can be closed */ export interface Subscription { + /** + * Removes the associated event handler, synonymous with events.off(...); + */ close(): void; } @@ -19,6 +22,9 @@ export class EventEmitter { private _listenersOnce: Record[]> = {}; private _pipes: EventEmitter[] = []; + /** + * Removes all listeners and pipes + */ clear() { this._listeners = {}; this._listenersOnce = {}; @@ -90,6 +96,10 @@ export class EventEmitter { } } + /** + * Replay events from this emitter to another + * @param emitter + */ pipe(emitter: EventEmitter): Subscription { if (this === emitter) { throw Error('Cannot pipe to self'); @@ -106,6 +116,10 @@ export class EventEmitter { }; } + /** + * Remove any piped emitters + * @param emitter + */ unpipe(emitter: EventEmitter): void { const i = this._pipes.indexOf(emitter); if (i > -1) { @@ -113,10 +127,16 @@ export class EventEmitter { } } + /** + * Paused event emitters do not emit events + */ pause(): void { this._paused = true; } + /** + * Unpaused event emitter do emit events + */ unpause(): void { this._paused = false; }