"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitterMQ = void 0; var _events = _interopRequireDefault(require("events")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const emitter = new _events.default.EventEmitter(); const subscriptions = new Map(); function unsubscribe(channel) { if (!subscriptions.has(channel)) { //console.log('No channel to unsub from'); return; } //console.log('unsub ', channel); emitter.removeListener(channel, subscriptions.get(channel)); subscriptions.delete(channel); } class Publisher { constructor(emitter) { this.emitter = emitter; } publish(channel, message) { this.emitter.emit(channel, message); } } class Consumer extends _events.default.EventEmitter { constructor(emitter) { super(); this.emitter = emitter; } subscribe(channel) { unsubscribe(channel); const handler = message => { this.emit('message', channel, message); }; subscriptions.set(channel, handler); this.emitter.on(channel, handler); } unsubscribe(channel) { unsubscribe(channel); } } function createPublisher() { return new Publisher(emitter); } function createSubscriber() { return new Consumer(emitter); } const EventEmitterMQ = exports.EventEmitterMQ = { createPublisher, createSubscriber }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJlbWl0dGVyIiwiZXZlbnRzIiwiRXZlbnRFbWl0dGVyIiwic3Vic2NyaXB0aW9ucyIsIk1hcCIsInVuc3Vic2NyaWJlIiwiY2hhbm5lbCIsImhhcyIsInJlbW92ZUxpc3RlbmVyIiwiZ2V0IiwiZGVsZXRlIiwiUHVibGlzaGVyIiwiY29uc3RydWN0b3IiLCJwdWJsaXNoIiwibWVzc2FnZSIsImVtaXQiLCJDb25zdW1lciIsInN1YnNjcmliZSIsImhhbmRsZXIiLCJzZXQiLCJvbiIsImNyZWF0ZVB1Ymxpc2hlciIsImNyZWF0ZVN1YnNjcmliZXIiLCJFdmVudEVtaXR0ZXJNUSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvTWVzc2FnZVF1ZXVlL0V2ZW50RW1pdHRlck1RLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcblxuY29uc3QgZW1pdHRlciA9IG5ldyBldmVudHMuRXZlbnRFbWl0dGVyKCk7XG5jb25zdCBzdWJzY3JpcHRpb25zID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiB1bnN1YnNjcmliZShjaGFubmVsOiBzdHJpbmcpIHtcbiAgaWYgKCFzdWJzY3JpcHRpb25zLmhhcyhjaGFubmVsKSkge1xuICAgIC8vY29uc29sZS5sb2coJ05vIGNoYW5uZWwgdG8gdW5zdWIgZnJvbScpO1xuICAgIHJldHVybjtcbiAgfVxuICAvL2NvbnNvbGUubG9nKCd1bnN1YiAnLCBjaGFubmVsKTtcbiAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihjaGFubmVsLCBzdWJzY3JpcHRpb25zLmdldChjaGFubmVsKSk7XG4gIHN1YnNjcmlwdGlvbnMuZGVsZXRlKGNoYW5uZWwpO1xufVxuXG5jbGFzcyBQdWJsaXNoZXIge1xuICBlbWl0dGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZW1pdHRlcjogYW55KSB7XG4gICAgdGhpcy5lbWl0dGVyID0gZW1pdHRlcjtcbiAgfVxuXG4gIHB1Ymxpc2goY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIuZW1pdChjaGFubmVsLCBtZXNzYWdlKTtcbiAgfVxufVxuXG5jbGFzcyBDb25zdW1lciBleHRlbmRzIGV2ZW50cy5FdmVudEVtaXR0ZXIge1xuICBlbWl0dGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZW1pdHRlcjogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVtaXR0ZXIgPSBlbWl0dGVyO1xuICB9XG5cbiAgc3Vic2NyaWJlKGNoYW5uZWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHVuc3Vic2NyaWJlKGNoYW5uZWwpO1xuICAgIGNvbnN0IGhhbmRsZXIgPSBtZXNzYWdlID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZScsIGNoYW5uZWwsIG1lc3NhZ2UpO1xuICAgIH07XG4gICAgc3Vic2NyaXB0aW9ucy5zZXQoY2hhbm5lbCwgaGFuZGxlcik7XG4gICAgdGhpcy5lbWl0dGVyLm9uKGNoYW5uZWwsIGhhbmRsZXIpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoY2hhbm5lbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdW5zdWJzY3JpYmUoY2hhbm5lbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUHVibGlzaGVyKCk6IGFueSB7XG4gIHJldHVybiBuZXcgUHVibGlzaGVyKGVtaXR0ZXIpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdWJzY3JpYmVyKCk6IGFueSB7XG4gIHJldHVybiBuZXcgQ29uc3VtZXIoZW1pdHRlcik7XG59XG5cbmNvbnN0IEV2ZW50RW1pdHRlck1RID0ge1xuICBjcmVhdGVQdWJsaXNoZXIsXG4gIGNyZWF0ZVN1YnNjcmliZXIsXG59O1xuXG5leHBvcnQgeyBFdmVudEVtaXR0ZXJNUSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBNEIsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFNUIsTUFBTUcsT0FBTyxHQUFHLElBQUlDLGVBQU0sQ0FBQ0MsWUFBWSxDQUFDLENBQUM7QUFDekMsTUFBTUMsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLFNBQVNDLFdBQVdBLENBQUNDLE9BQWUsRUFBRTtFQUNwQyxJQUFJLENBQUNILGFBQWEsQ0FBQ0ksR0FBRyxDQUFDRCxPQUFPLENBQUMsRUFBRTtJQUMvQjtJQUNBO0VBQ0Y7RUFDQTtFQUNBTixPQUFPLENBQUNRLGNBQWMsQ0FBQ0YsT0FBTyxFQUFFSCxhQUFhLENBQUNNLEdBQUcsQ0FBQ0gsT0FBTyxDQUFDLENBQUM7RUFDM0RILGFBQWEsQ0FBQ08sTUFBTSxDQUFDSixPQUFPLENBQUM7QUFDL0I7QUFFQSxNQUFNSyxTQUFTLENBQUM7RUFHZEMsV0FBV0EsQ0FBQ1osT0FBWSxFQUFFO0lBQ3hCLElBQUksQ0FBQ0EsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUFhLE9BQU9BLENBQUNQLE9BQWUsRUFBRVEsT0FBZSxFQUFRO0lBQzlDLElBQUksQ0FBQ2QsT0FBTyxDQUFDZSxJQUFJLENBQUNULE9BQU8sRUFBRVEsT0FBTyxDQUFDO0VBQ3JDO0FBQ0Y7QUFFQSxNQUFNRSxRQUFRLFNBQVNmLGVBQU0sQ0FBQ0MsWUFBWSxDQUFDO0VBR3pDVSxXQUFXQSxDQUFDWixPQUFZLEVBQUU7SUFDeEIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNBLE9BQU8sR0FBR0EsT0FBTztFQUN4QjtFQUVBaUIsU0FBU0EsQ0FBQ1gsT0FBZSxFQUFRO0lBQy9CRCxXQUFXLENBQUNDLE9BQU8sQ0FBQztJQUNwQixNQUFNWSxPQUFPLEdBQUdKLE9BQU8sSUFBSTtNQUN6QixJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUVULE9BQU8sRUFBRVEsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFDRFgsYUFBYSxDQUFDZ0IsR0FBRyxDQUFDYixPQUFPLEVBQUVZLE9BQU8sQ0FBQztJQUNuQyxJQUFJLENBQUNsQixPQUFPLENBQUNvQixFQUFFLENBQUNkLE9BQU8sRUFBRVksT0FBTyxDQUFDO0VBQ25DO0VBRUFiLFdBQVdBLENBQUNDLE9BQWUsRUFBUTtJQUNqQ0QsV0FBVyxDQUFDQyxPQUFPLENBQUM7RUFDdEI7QUFDRjtBQUVBLFNBQVNlLGVBQWVBLENBQUEsRUFBUTtFQUM5QixPQUFPLElBQUlWLFNBQVMsQ0FBQ1gsT0FBTyxDQUFDO0FBQy9CO0FBRUEsU0FBU3NCLGdCQUFnQkEsQ0FBQSxFQUFRO0VBQy9CLE9BQU8sSUFBSU4sUUFBUSxDQUFDaEIsT0FBTyxDQUFDO0FBQzlCO0FBRUEsTUFBTXVCLGNBQWMsR0FBQUMsT0FBQSxDQUFBRCxjQUFBLEdBQUc7RUFDckJGLGVBQWU7RUFDZkM7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119