1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- "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() {
-
-
-
- emitter.removeAllListeners();
- return new Subscriber(emitter);
- }
- const EventEmitterPubSub = exports.EventEmitterPubSub = {
- createPublisher,
- createSubscriber
- };
|