UNPKG

journaly

Version:

A simple pub-sub library project

38 lines 1.35 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SenderReceiver = void 0; const invalidTopic_1 = __importDefault(require("./invalidTopic")); const subject_1 = require("./subject"); class SenderReceiver extends subject_1.Subject { constructor() { super(); this.subscribers = {}; } subscribe(subscriber, topic) { this.subscribers[topic] = subscriber; return Promise.resolve([]); } unsubscribe(subscriber, topic) { const index = this.checkSubscriber(subscriber, topic); if (index === -1) { return false; } delete this.subscribers[topic]; return true; } // eslint-disable-next-line @typescript-eslint/no-explicit-any async publish(topic, ...params) { const subscriber = this.subscribers[topic]; if (!subscriber) return new Promise((_resolve, reject) => reject(new invalidTopic_1.default(topic))); return Promise.resolve(subscriber(...params)); } checkSubscriber(_subscriber, topic) { return this.subscribers[topic] ? 1 : -1; } } exports.SenderReceiver = SenderReceiver; //# sourceMappingURL=senderReceiver.js.map