EventEmitterMQ.js 5.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.EventEmitterMQ = void 0;
  6. var _events = _interopRequireDefault(require("events"));
  7. function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
  8. const emitter = new _events.default.EventEmitter();
  9. const subscriptions = new Map();
  10. function unsubscribe(channel) {
  11. if (!subscriptions.has(channel)) {
  12. //console.log('No channel to unsub from');
  13. return;
  14. }
  15. //console.log('unsub ', channel);
  16. emitter.removeListener(channel, subscriptions.get(channel));
  17. subscriptions.delete(channel);
  18. }
  19. class Publisher {
  20. constructor(emitter) {
  21. this.emitter = emitter;
  22. }
  23. publish(channel, message) {
  24. this.emitter.emit(channel, message);
  25. }
  26. }
  27. class Consumer extends _events.default.EventEmitter {
  28. constructor(emitter) {
  29. super();
  30. this.emitter = emitter;
  31. }
  32. subscribe(channel) {
  33. unsubscribe(channel);
  34. const handler = message => {
  35. this.emit('message', channel, message);
  36. };
  37. subscriptions.set(channel, handler);
  38. this.emitter.on(channel, handler);
  39. }
  40. unsubscribe(channel) {
  41. unsubscribe(channel);
  42. }
  43. }
  44. function createPublisher() {
  45. return new Publisher(emitter);
  46. }
  47. function createSubscriber() {
  48. return new Consumer(emitter);
  49. }
  50. const EventEmitterMQ = exports.EventEmitterMQ = {
  51. createPublisher,
  52. createSubscriber
  53. };
  54. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJlbWl0dGVyIiwiZXZlbnRzIiwiRXZlbnRFbWl0dGVyIiwic3Vic2NyaXB0aW9ucyIsIk1hcCIsInVuc3Vic2NyaWJlIiwiY2hhbm5lbCIsImhhcyIsInJlbW92ZUxpc3RlbmVyIiwiZ2V0IiwiZGVsZXRlIiwiUHVibGlzaGVyIiwiY29uc3RydWN0b3IiLCJwdWJsaXNoIiwibWVzc2FnZSIsImVtaXQiLCJDb25zdW1lciIsInN1YnNjcmliZSIsImhhbmRsZXIiLCJzZXQiLCJvbiIsImNyZWF0ZVB1Ymxpc2hlciIsImNyZWF0ZVN1YnNjcmliZXIiLCJFdmVudEVtaXR0ZXJNUSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvTWVzc2FnZVF1ZXVlL0V2ZW50RW1pdHRlck1RLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcblxuY29uc3QgZW1pdHRlciA9IG5ldyBldmVudHMuRXZlbnRFbWl0dGVyKCk7XG5jb25zdCBzdWJzY3JpcHRpb25zID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiB1bnN1YnNjcmliZShjaGFubmVsOiBzdHJpbmcpIHtcbiAgaWYgKCFzdWJzY3JpcHRpb25zLmhhcyhjaGFubmVsKSkge1xuICAgIC8vY29uc29sZS5sb2coJ05vIGNoYW5uZWwgdG8gdW5zdWIgZnJvbScpO1xuICAgIHJldHVybjtcbiAgfVxuICAvL2NvbnNvbGUubG9nKCd1bnN1YiAnLCBjaGFubmVsKTtcbiAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihjaGFubmVsLCBzdWJzY3JpcHRpb25zLmdldChjaGFubmVsKSk7XG4gIHN1YnNjcmlwdGlvbnMuZGVsZXRlKGNoYW5uZWwpO1xufVxuXG5jbGFzcyBQdWJsaXNoZXIge1xuICBlbWl0dGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZW1pdHRlcjogYW55KSB7XG4gICAgdGhpcy5lbWl0dGVyID0gZW1pdHRlcjtcbiAgfVxuXG4gIHB1Ymxpc2goY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIuZW1pdChjaGFubmVsLCBtZXNzYWdlKTtcbiAgfVxufVxuXG5jbGFzcyBDb25zdW1lciBleHRlbmRzIGV2ZW50cy5FdmVudEVtaXR0ZXIge1xuICBlbWl0dGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZW1pdHRlcjogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVtaXR0ZXIgPSBlbWl0dGVyO1xuICB9XG5cbiAgc3Vic2NyaWJlKGNoYW5uZWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHVuc3Vic2NyaWJlKGNoYW5uZWwpO1xuICAgIGNvbnN0IGhhbmRsZXIgPSBtZXNzYWdlID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZScsIGNoYW5uZWwsIG1lc3NhZ2UpO1xuICAgIH07XG4gICAgc3Vic2NyaXB0aW9ucy5zZXQoY2hhbm5lbCwgaGFuZGxlcik7XG4gICAgdGhpcy5lbWl0dGVyLm9uKGNoYW5uZWwsIGhhbmRsZXIpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoY2hhbm5lbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdW5zdWJzY3JpYmUoY2hhbm5lbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUHVibGlzaGVyKCk6IGFueSB7XG4gIHJldHVybiBuZXcgUHVibGlzaGVyKGVtaXR0ZXIpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdWJzY3JpYmVyKCk6IGFueSB7XG4gIHJldHVybiBuZXcgQ29uc3VtZXIoZW1pdHRlcik7XG59XG5cbmNvbnN0IEV2ZW50RW1pdHRlck1RID0ge1xuICBjcmVhdGVQdWJsaXNoZXIsXG4gIGNyZWF0ZVN1YnNjcmliZXIsXG59O1xuXG5leHBvcnQgeyBFdmVudEVtaXR0ZXJNUSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBNEIsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFNUIsTUFBTUcsT0FBTyxHQUFHLElBQUlDLGVBQU0sQ0FBQ0MsWUFBWSxDQUFDLENBQUM7QUFDekMsTUFBTUMsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLFNBQVNDLFdBQVdBLENBQUNDLE9BQWUsRUFBRTtFQUNwQyxJQUFJLENBQUNILGFBQWEsQ0FBQ0ksR0FBRyxDQUFDRCxPQUFPLENBQUMsRUFBRTtJQUMvQjtJQUNBO0VBQ0Y7RUFDQTtFQUNBTixPQUFPLENBQUNRLGNBQWMsQ0FBQ0YsT0FBTyxFQUFFSCxhQUFhLENBQUNNLEdBQUcsQ0FBQ0gsT0FBTyxDQUFDLENBQUM7RUFDM0RILGFBQWEsQ0FBQ08sTUFBTSxDQUFDSixPQUFPLENBQUM7QUFDL0I7QUFFQSxNQUFNSyxTQUFTLENBQUM7RUFHZEMsV0FBV0EsQ0FBQ1osT0FBWSxFQUFFO0lBQ3hCLElBQUksQ0FBQ0EsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUFhLE9BQU9BLENBQUNQLE9BQWUsRUFBRVEsT0FBZSxFQUFRO0lBQzlDLElBQUksQ0FBQ2QsT0FBTyxDQUFDZSxJQUFJLENBQUNULE9BQU8sRUFBRVEsT0FBTyxDQUFDO0VBQ3JDO0FBQ0Y7QUFFQSxNQUFNRSxRQUFRLFNBQVNmLGVBQU0sQ0FBQ0MsWUFBWSxDQUFDO0VBR3pDVSxXQUFXQSxDQUFDWixPQUFZLEVBQUU7SUFDeEIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNBLE9BQU8sR0FBR0EsT0FBTztFQUN4QjtFQUVBaUIsU0FBU0EsQ0FBQ1gsT0FBZSxFQUFRO0lBQy9CRCxXQUFXLENBQUNDLE9BQU8sQ0FBQztJQUNwQixNQUFNWSxPQUFPLEdBQUdKLE9BQU8sSUFBSTtNQUN6QixJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUVULE9BQU8sRUFBRVEsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFDRFgsYUFBYSxDQUFDZ0IsR0FBRyxDQUFDYixPQUFPLEVBQUVZLE9BQU8sQ0FBQztJQUNuQyxJQUFJLENBQUNsQixPQUFPLENBQUNvQixFQUFFLENBQUNkLE9BQU8sRUFBRVksT0FBTyxDQUFDO0VBQ25DO0VBRUFiLFdBQVdBLENBQUNDLE9BQWUsRUFBUTtJQUNqQ0QsV0FBVyxDQUFDQyxPQUFPLENBQUM7RUFDdEI7QUFDRjtBQUVBLFNBQVNlLGVBQWVBLENBQUEsRUFBUTtFQUM5QixPQUFPLElBQUlWLFNBQVMsQ0FBQ1gsT0FBTyxDQUFDO0FBQy9CO0FBRUEsU0FBU3NCLGdCQUFnQkEsQ0FBQSxFQUFRO0VBQy9CLE9BQU8sSUFBSU4sUUFBUSxDQUFDaEIsT0FBTyxDQUFDO0FBQzlCO0FBRUEsTUFBTXVCLGNBQWMsR0FBQUMsT0FBQSxDQUFBRCxjQUFBLEdBQUc7RUFDckJGLGVBQWU7RUFDZkM7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119