@grouparoo/core
Version:
The Grouparoo Core
76 lines (75 loc) • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT = void 0;
const url_1 = require("url");
const namespace = "redis";
exports.DEFAULT = {
[namespace]: () => {
const konstructor = process.env.REDIS_URL === "redis://mock" ||
process.env.REDIS_URL === "mock"
? require("ioredis-mock")
: require("ioredis");
let host = process.env.REDIS_HOST;
let port = process.env.REDIS_PORT;
let db = process.env.REDIS_DB;
let username = process.env.REDIS_USER;
let password = process.env.REDIS_PASS;
let protocol = process.env.REDIS_SSL ? "rediss" : "redis";
if (process.env.REDIS_URL) {
const parsed = new url_1.URL(process.env.REDIS_URL);
if (parsed.protocol)
protocol = parsed.protocol.split(":")[0];
if (parsed.username)
username = parsed.username;
if (parsed.password)
password = parsed.password;
if (parsed.hostname)
host = parsed.hostname;
if (parsed.port)
port = parsed.port;
if (parsed.pathname)
db = parsed.pathname.substring(1);
}
const maxBackoff = 1000;
const commonArgs = {
port,
host,
// For older redis servers, we cannot supply a username. This is normally triggered by a 1 or 0 char username in REDIS_URL
username: (username === null || username === void 0 ? void 0 : username.length) > 1 || process.env.REDIS_USER ? username : undefined,
password,
db: parseInt(db !== null && db !== void 0 ? db : "0"),
// ssl options
tls: protocol === "rediss" ? { rejectUnauthorized: false } : undefined,
// you can learn more about retryStrategy @ https://github.com/luin/ioredis#auto-reconnect
retryStrategy: (times) => {
if (times === 1) {
console.error("Unable to connect to Redis - please check your Redis config!");
return 5000;
}
return Math.min(times * 50, maxBackoff);
},
};
return {
// how many items should be fetched in a batch at once?
scanCount: 1000,
// how many ms should we wait when disconnecting after sending server-side disconnect message to the cluster
stopTimeout: 100,
_toExpand: false,
client: {
konstructor,
args: [commonArgs],
buildNew: true,
},
subscriber: {
konstructor,
args: [commonArgs],
buildNew: true,
},
tasks: {
konstructor,
args: [commonArgs],
buildNew: true,
},
};
},
};