reiso
Version:
62 lines • 4.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Subscriptions = require("graphql-subscriptions");
const RedisNRP = require("node-redis-pubsub");
const Config_1 = require("../../Modules/Config");
let nrp;
const pubsub = new Subscriptions.PubSub();
let publishes = {};
function getPublishes() {
return publishes;
}
exports.getPublishes = getPublishes;
function cleanPublishes() {
if (nrp)
nrp.quit();
nrp = null;
publishes = {};
}
exports.cleanPublishes = cleanPublishes;
class SubscriptionManager {
constructor(name = 'Main') {
this.name = name;
this.publishes = publishes[name];
}
init() {
if (!nrp)
nrp = new RedisNRP(Config_1.getConfig().redisPubSub[this.name]);
if (this.publishes) {
for (let name of this.publishes) {
nrp.on(name, (data) => {
pubsub.publish(name, data);
});
}
}
}
}
exports.SubscriptionManager = SubscriptionManager;
async function Publish(name, data, scope = 'Main') {
if (!nrp) {
nrp = new RedisNRP(Config_1.getConfig().redisPubSub[scope]);
}
nrp.publish(name, data);
}
exports.Publish = Publish;
function Subscribe(name, filter, exceptionCheck) {
if (filter) {
return Subscriptions.withFilter(() => {
if (exceptionCheck) {
exceptionCheck();
}
return pubsub.asyncIterator(name);
}, filter);
}
else {
return exceptionCheck ? Subscriptions.withFilter(() => {
exceptionCheck();
return pubsub.asyncIterator(name);
}, () => true) : () => pubsub.asyncIterator(name);
}
}
exports.Subscribe = Subscribe;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Vic2NyaXB0aW9uTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9TZXJ2ZXIvR3JhcGhRTC9TdWJzY3JpcHRpb25NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQXVEO0FBQ3ZELDhDQUE4QztBQUU5QyxpREFBaUQ7QUFFakQsSUFBSSxHQUFhLENBQUM7QUFDbEIsTUFBTSxNQUFNLEdBQXlCLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWhFLElBQUksU0FBUyxHQUFpQyxFQUFFLENBQUE7QUFDaEQ7SUFDSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRkQsb0NBRUM7QUFDRDtJQUNJLElBQUksR0FBRztRQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ1gsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBSkQsd0NBSUM7QUFFRDtJQUlJLFlBQVksT0FBZSxNQUFNO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxJQUFJO1FBQ1AsSUFBSSxDQUFDLEdBQUc7WUFBRSxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsa0JBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUM3QixHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBbkJELGtEQW1CQztBQUVNLEtBQUssa0JBQWtCLElBQVksRUFBRSxJQUFTLEVBQUUsUUFBZ0IsTUFBTTtJQUN6RSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ04sR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLGtCQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN0RDtJQUNELEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFMRCwwQkFLQztBQUVELG1CQUEwQixJQUF1QixFQUFFLE1BQTBCLEVBQUUsY0FBeUI7SUFDcEcsSUFBSSxNQUFNLEVBQUU7UUFDUixPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksY0FBYyxFQUFFO2dCQUNoQixjQUFjLEVBQUUsQ0FBQzthQUNwQjtZQUNELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDZDtTQUFNO1FBQ0gsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xELGNBQWMsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckQ7QUFDTCxDQUFDO0FBZEQsOEJBY0MifQ==