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