journaly
Version:
A simple pub-sub library project
38 lines • 1.35 kB
JavaScript
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
;