UNPKG

@hamstudy/flamp

Version:

JavaScript Amateur Multicast Protocol AMP-2 Version 3 Implemented from specification document http://www.w1hkj.com/files/flamp/Amp-2.V3.0.Protocol.pdf • Version 1.0.0 - W5ALT, Walt Fair, Jr. (Derived From) • Version 2.0.0 - W1HKJ, Dave Freese, w

36 lines (35 loc) 1.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypedEvent = void 0; /** passes through events as they happen. You will not get events from before you start listening */ class TypedEvent { listeners = []; listenersOncer = []; on = (listener) => { this.listeners.push(listener); return { dispose: () => this.off(listener) }; }; once = (listener) => { this.listenersOncer.push(listener); }; off = (listener) => { var callbackIndex = this.listeners.indexOf(listener); if (callbackIndex > -1) this.listeners.splice(callbackIndex, 1); }; emit = (event) => { /** Update any general listeners */ this.listeners.forEach((listener) => listener(event)); /** Clear the `once` queue */ if (this.listenersOncer.length > 0) { this.listenersOncer.forEach((listener) => listener(event)); this.listenersOncer = []; } }; pipe = (te) => { return this.on((e) => te.emit(e)); }; } exports.TypedEvent = TypedEvent;