UNPKG

nope-js-node

Version:

NoPE Runtime for Nodejs. For Browser-Support please use nope-browser

75 lines (74 loc) 2.77 kB
"use strict"; /** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2021-03-22 19:03:15 * @modify date 2022-01-10 15:56:50 * @desc [description] */ Object.defineProperty(exports, "__esModule", { value: true }); exports.EventCommunicationInterface = void 0; const events_1 = require("events"); const idMethods_1 = require("../../helpers/idMethods"); const index_browser_1 = require("../../logger/index.browser"); const nopeObservable_1 = require("../../observables/nopeObservable"); /** * A Basic Mirror, used to share the events in a Mirror Style. * This Layer should not be used directly. this should only * be extended. * * @export * @class EventMirror * @implements {ICommunicationMirror} */ class EventCommunicationInterface { /** * Function which will be used to subscribe Data * * @param {(symbol | ValidEventTypesOfMirror)} event The Event to listen to * @param {(...args: any[]) => void} listener The "Listener" (A Callback, which will be called) * @memberof EventMirror */ async on(eventname, cb) { var _a; this._emitter.on(eventname, cb); if (eventname !== "statusChanged" && ((_a = this._logger) === null || _a === void 0 ? void 0 : _a.enabledFor(index_browser_1.DEBUG))) { this._emitter.on(eventname, (...args) => { this._logger.debug("received", "'" + eventname + "'", ...args); }); } } /** * Function, which will be used to emit data * * @param {ValidEventTypesOfMirror} event the name fo the event to emit something * @param {*} data the data to emit * @memberof EventMirror */ async emit(eventname, data) { this._emitter.emit(eventname, data); } async dispose() { var _a; // Disposes the Emitter. (_a = this._emitter) === null || _a === void 0 ? void 0 : _a.removeAllListeners(); } /** * Creates an instance of EventMirror. * @param {IEmitter} [_emitter=new EventEmitter() as any] The Type of Emitter to use. * @param {ILogger} [_logger] a Logger * @memberof EventMirror */ constructor(_emitter = new events_1.EventEmitter(), _logger, receivesOwnMessages = true) { this._emitter = _emitter; this._logger = _logger; this.receivesOwnMessages = receivesOwnMessages; this.connected = new nopeObservable_1.NopeObservable(); this.connected.setContent(true); this.id = (0, idMethods_1.generateId)(); } detailListeners(type, listeners) { throw new Error("Method not implemented."); } } exports.EventCommunicationInterface = EventCommunicationInterface;