nope-js-browser
Version:
NoPE Runtime for the Browser. For nodejs please use nope-js-node
71 lines (70 loc) • 2.51 kB
JavaScript
/**
* @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]
*/
import { EventEmitter } from "events";
import { generateId } from "../../helpers/idMethods";
import { DEBUG } from "../../logger/index.browser";
import { NopeObservable } from "../../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}
*/
export 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(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 EventEmitter(), _logger, receivesOwnMessages = true) {
this._emitter = _emitter;
this._logger = _logger;
this.receivesOwnMessages = receivesOwnMessages;
this.connected = new NopeObservable();
this.connected.setContent(true);
this.id = generateId();
}
detailListeners(type, listeners) {
throw new Error("Method not implemented.");
}
}