redis-smq-common
Version:
RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.
51 lines • 1.93 kB
JavaScript
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