UNPKG

pub-sub-topic-ts

Version:
36 lines (35 loc) 896 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Topic = void 0; class Topic { constructor(_name) { this._name = _name; this._subscribers = []; this._data = []; this.name = _name; } notifyAll(data) { for (const subscriber of this._subscribers) { subscriber.notify(data); } } addSubscriber(subscriber) { this._subscribers.push(subscriber); } removeSubscriber(subscriber) { this._subscribers = this._subscribers.filter(s => { return s.id !== subscriber.id; }); } publish(data) { this._data.push(data); this.notifyAll(this._data); } subscribe(subscriber) { this.addSubscriber(subscriber); } unsubscribe(subscriber) { this.removeSubscriber(subscriber); } } exports.Topic = Topic;