layered-loader
Version:
Data loader with support for caching and fallback data sources
30 lines • 1.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createGroupNotificationPair = createGroupNotificationPair;
const node_crypto_1 = require("node:crypto");
const RedisGroupNotificationConsumer_1 = require("./RedisGroupNotificationConsumer");
const RedisGroupNotificationPublisher_1 = require("./RedisGroupNotificationPublisher");
const RedisNotificationFactory_1 = require("./RedisNotificationFactory");
const ioredis_1 = require("ioredis");
function createGroupNotificationPair(config) {
const resolvedConsumer = (0, RedisNotificationFactory_1.isClient)(config.consumerRedis) ? config.consumerRedis : new ioredis_1.Redis(config.consumerRedis);
const resolvedPublisher = (0, RedisNotificationFactory_1.isClient)(config.publisherRedis) ? config.publisherRedis : new ioredis_1.Redis(config.publisherRedis);
const serverUuid = (0, node_crypto_1.randomUUID)();
if (resolvedPublisher === resolvedConsumer) {
throw new Error('Same Redis client instance cannot be used both for publisher and for consumer, please create a separate connection');
}
const consumer = new RedisGroupNotificationConsumer_1.RedisGroupNotificationConsumer(resolvedConsumer, {
channel: config.channel,
serverUuid,
});
const publisher = new RedisGroupNotificationPublisher_1.RedisGroupNotificationPublisher(resolvedPublisher, {
channel: config.channel,
errorHandler: config.errorHandler,
serverUuid,
});
return {
publisher,
consumer,
};
}
//# sourceMappingURL=RedisGroupNotificationFactory.js.map
;