UNPKG

journaly

Version:

A simple pub-sub library project

51 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PublisherSubscriberWithMemory = void 0; const publisherSubscriber_1 = require("./publisherSubscriber"); class PublisherSubscriberWithMemory extends publisherSubscriber_1.PublisherSubscriber { constructor() { super(); this.oldData = {}; } getTopics() { const topics = []; let newProps = Object.getOwnPropertyNames(this.oldData); for (const prop of newProps) { if (!topics.includes(prop)) topics.push(prop); } newProps = Object.getOwnPropertyNames(this.subscribers); for (const prop of newProps) { if (!topics.includes(prop)) topics.push(prop); } return topics; } async subscribe(subscriber, topic) { try { await super.subscribe(subscriber, topic); return Promise.all(this.oldData[topic].map((params) => subscriber(...params))); } catch (error) { return new Promise((resolve) => { resolve([]); }); } } async publish(topic, ...params) { this.checkTopic(topic); const promises = Promise.all(this.subscribers[topic].map((subscriber) => { return subscriber(...params); })); this.oldData[topic].push(params); return promises; } checkTopic(topic) { if (!this.subscribers[topic]) { this.subscribers[topic] = []; this.oldData[topic] = []; } } } exports.PublisherSubscriberWithMemory = PublisherSubscriberWithMemory; //# sourceMappingURL=publisherSubscriberWithMemory.js.map