"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitterPubSub = void 0; var _events = _interopRequireDefault(require("events")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const emitter = new _events.default.EventEmitter(); class Publisher { constructor(emitter) { this.emitter = emitter; } publish(channel, message) { this.emitter.emit(channel, message); } } class Subscriber extends _events.default.EventEmitter { constructor(emitter) { super(); this.emitter = emitter; this.subscriptions = new Map(); } subscribe(channel) { const handler = message => { this.emit('message', channel, message); }; this.subscriptions.set(channel, handler); this.emitter.on(channel, handler); } unsubscribe(channel) { if (!this.subscriptions.has(channel)) { return; } this.emitter.removeListener(channel, this.subscriptions.get(channel)); this.subscriptions.delete(channel); } } function createPublisher() { return new Publisher(emitter); } function createSubscriber() { // createSubscriber is called once at live query server start // to avoid max listeners warning, we should clean up the event emitter // each time this function is called emitter.removeAllListeners(); return new Subscriber(emitter); } const EventEmitterPubSub = exports.EventEmitterPubSub = { createPublisher, createSubscriber }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJlbWl0dGVyIiwiZXZlbnRzIiwiRXZlbnRFbWl0dGVyIiwiUHVibGlzaGVyIiwiY29uc3RydWN0b3IiLCJwdWJsaXNoIiwiY2hhbm5lbCIsIm1lc3NhZ2UiLCJlbWl0IiwiU3Vic2NyaWJlciIsInN1YnNjcmlwdGlvbnMiLCJNYXAiLCJzdWJzY3JpYmUiLCJoYW5kbGVyIiwic2V0Iiwib24iLCJ1bnN1YnNjcmliZSIsImhhcyIsInJlbW92ZUxpc3RlbmVyIiwiZ2V0IiwiZGVsZXRlIiwiY3JlYXRlUHVibGlzaGVyIiwiY3JlYXRlU3Vic2NyaWJlciIsInJlbW92ZUFsbExpc3RlbmVycyIsIkV2ZW50RW1pdHRlclB1YlN1YiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvUHViU3ViL0V2ZW50RW1pdHRlclB1YlN1Yi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5cbmNvbnN0IGVtaXR0ZXIgPSBuZXcgZXZlbnRzLkV2ZW50RW1pdHRlcigpO1xuXG5jbGFzcyBQdWJsaXNoZXIge1xuICBlbWl0dGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZW1pdHRlcjogYW55KSB7XG4gICAgdGhpcy5lbWl0dGVyID0gZW1pdHRlcjtcbiAgfVxuXG4gIHB1Ymxpc2goY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIuZW1pdChjaGFubmVsLCBtZXNzYWdlKTtcbiAgfVxufVxuXG5jbGFzcyBTdWJzY3JpYmVyIGV4dGVuZHMgZXZlbnRzLkV2ZW50RW1pdHRlciB7XG4gIGVtaXR0ZXI6IGFueTtcbiAgc3Vic2NyaXB0aW9uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGVtaXR0ZXI6IGFueSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbWl0dGVyID0gZW1pdHRlcjtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBzdWJzY3JpYmUoY2hhbm5lbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlciA9IG1lc3NhZ2UgPT4ge1xuICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlJywgY2hhbm5lbCwgbWVzc2FnZSk7XG4gICAgfTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuc2V0KGNoYW5uZWwsIGhhbmRsZXIpO1xuICAgIHRoaXMuZW1pdHRlci5vbihjaGFubmVsLCBoYW5kbGVyKTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKGNoYW5uZWw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zLmhhcyhjaGFubmVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoY2hhbm5lbCwgdGhpcy5zdWJzY3JpcHRpb25zLmdldChjaGFubmVsKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmRlbGV0ZShjaGFubmVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQdWJsaXNoZXIoKTogYW55IHtcbiAgcmV0dXJuIG5ldyBQdWJsaXNoZXIoZW1pdHRlcik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmliZXIoKTogYW55IHtcbiAgLy8gY3JlYXRlU3Vic2NyaWJlciBpcyBjYWxsZWQgb25jZSBhdCBsaXZlIHF1ZXJ5IHNlcnZlciBzdGFydFxuICAvLyB0byBhdm9pZCBtYXggbGlzdGVuZXJzIHdhcm5pbmcsIHdlIHNob3VsZCBjbGVhbiB1cCB0aGUgZXZlbnQgZW1pdHRlclxuICAvLyBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWRcbiAgZW1pdHRlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgcmV0dXJuIG5ldyBTdWJzY3JpYmVyKGVtaXR0ZXIpO1xufVxuXG5jb25zdCBFdmVudEVtaXR0ZXJQdWJTdWIgPSB7XG4gIGNyZWF0ZVB1Ymxpc2hlcixcbiAgY3JlYXRlU3Vic2NyaWJlcixcbn07XG5cbmV4cG9ydCB7IEV2ZW50RW1pdHRlclB1YlN1YiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBNEIsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFNUIsTUFBTUcsT0FBTyxHQUFHLElBQUlDLGVBQU0sQ0FBQ0MsWUFBWSxDQUFDLENBQUM7QUFFekMsTUFBTUMsU0FBUyxDQUFDO0VBR2RDLFdBQVdBLENBQUNKLE9BQVksRUFBRTtJQUN4QixJQUFJLENBQUNBLE9BQU8sR0FBR0EsT0FBTztFQUN4QjtFQUVBSyxPQUFPQSxDQUFDQyxPQUFlLEVBQUVDLE9BQWUsRUFBUTtJQUM5QyxJQUFJLENBQUNQLE9BQU8sQ0FBQ1EsSUFBSSxDQUFDRixPQUFPLEVBQUVDLE9BQU8sQ0FBQztFQUNyQztBQUNGO0FBRUEsTUFBTUUsVUFBVSxTQUFTUixlQUFNLENBQUNDLFlBQVksQ0FBQztFQUkzQ0UsV0FBV0EsQ0FBQ0osT0FBWSxFQUFFO0lBQ3hCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxDQUFDQSxPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDVSxhQUFhLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7RUFDaEM7RUFFQUMsU0FBU0EsQ0FBQ04sT0FBZSxFQUFRO0lBQy9CLE1BQU1PLE9BQU8sR0FBR04sT0FBTyxJQUFJO01BQ3pCLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRUYsT0FBTyxFQUFFQyxPQUFPLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksQ0FBQ0csYUFBYSxDQUFDSSxHQUFHLENBQUNSLE9BQU8sRUFBRU8sT0FBTyxDQUFDO0lBQ3hDLElBQUksQ0FBQ2IsT0FBTyxDQUFDZSxFQUFFLENBQUNULE9BQU8sRUFBRU8sT0FBTyxDQUFDO0VBQ25DO0VBRUFHLFdBQVdBLENBQUNWLE9BQWUsRUFBUTtJQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDSSxhQUFhLENBQUNPLEdBQUcsQ0FBQ1gsT0FBTyxDQUFDLEVBQUU7TUFDcEM7SUFDRjtJQUNBLElBQUksQ0FBQ04sT0FBTyxDQUFDa0IsY0FBYyxDQUFDWixPQUFPLEVBQUUsSUFBSSxDQUFDSSxhQUFhLENBQUNTLEdBQUcsQ0FBQ2IsT0FBTyxDQUFDLENBQUM7SUFDckUsSUFBSSxDQUFDSSxhQUFhLENBQUNVLE1BQU0sQ0FBQ2QsT0FBTyxDQUFDO0VBQ3BDO0FBQ0Y7QUFFQSxTQUFTZSxlQUFlQSxDQUFBLEVBQVE7RUFDOUIsT0FBTyxJQUFJbEIsU0FBUyxDQUFDSCxPQUFPLENBQUM7QUFDL0I7QUFFQSxTQUFTc0IsZ0JBQWdCQSxDQUFBLEVBQVE7RUFDL0I7RUFDQTtFQUNBO0VBQ0F0QixPQUFPLENBQUN1QixrQkFBa0IsQ0FBQyxDQUFDO0VBQzVCLE9BQU8sSUFBSWQsVUFBVSxDQUFDVCxPQUFPLENBQUM7QUFDaEM7QUFFQSxNQUFNd0Isa0JBQWtCLEdBQUFDLE9BQUEsQ0FBQUQsa0JBQUEsR0FBRztFQUN6QkgsZUFBZTtFQUNmQztBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=