UNPKG

journaly

Version:

A simple pub-sub library project

48 lines 1.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SubjectObserver = void 0; const invalidSubscriber_1 = __importDefault(require("./invalidSubscriber")); const subject_1 = require("./subject"); class SubjectObserver extends subject_1.Subject { constructor() { super(); this.subscribers = []; } getTopics() { return []; } subscribe(subscriber) { if (this.checkSubscriber(subscriber) !== -1) return new Promise((_resolve, reject) => { reject(new invalidSubscriber_1.default()); }); this.subscribers.push(subscriber); return new Promise((resolve) => { resolve([]); }); } unsubscribe(subscriber) { const index = this.checkSubscriber(subscriber); if (index === -1) { return false; } this.subscribers.splice(index, 1); return true; } // eslint-disable-next-line @typescript-eslint/no-explicit-any async publish(...params) { return Promise.all(this.subscribers.map((subscriber) => { return subscriber(...params); })); } // eslint-disable-next-line @typescript-eslint/no-empty-function checkSubscriber(subscriber) { const index = this.subscribers.indexOf(subscriber); return index; } } exports.SubjectObserver = SubjectObserver; //# sourceMappingURL=subjectObserver.js.map