UNPKG

redis-smq-common

Version:

RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.

51 lines 1.93 kB
import { CallbackEmptyReplyError } from '../errors/index.js'; import { RedisClientError } from './errors/index.js'; import { ERedisConfigClient, } from './types/index.js'; function createNodeRedisClient(config, cb) { import('./clients/node-redis/node-redis-client.js') .then(({ NodeRedisClient }) => { const client = new NodeRedisClient(config.options); cb(null, client); }) .catch(() => cb(new RedisClientError('REDIS client is not available. Please install node-redis.'))); } function createIORedisClient(config, cb) { import('./clients/ioredis/ioredis-client.js') .then(({ IoredisClient }) => { const client = new IoredisClient(config.options); cb(null, client); }) .catch(() => cb(new RedisClientError('IOREDIS client is not available. Please install ioredis.'))); } function initializeRedisClient(config, cb) { if (config.client === ERedisConfigClient.REDIS) { return createNodeRedisClient(config, cb); } if (config.client === ERedisConfigClient.IOREDIS) { return createIORedisClient(config, cb); } cb(new RedisClientError('Unsupported Redis client type. Supported types are: REDIS, IOREDIS.')); } export function createRedisClient(config, cb) { initializeRedisClient(config, (err, client) => { if (err) return cb(err); if (!client) return cb(new CallbackEmptyReplyError()); const onReady = () => { removeListeners(); cb(null, client); }; const onError = (err) => { removeListeners(); cb(err); }; const removeListeners = () => { client.removeListener('ready', onReady); client.removeListener('error', onError); }; client.once('ready', onReady); client.once('error', onError); }); } //# sourceMappingURL=create-redis-client.js.map