redis-conn-wrapper
Version:
A wrapper for node 'redis' library.
185 lines • 4.27 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var redis_1 = require("redis");
var originActions = [
'del',
'dump',
'exists',
'expire',
'expireat',
'keys',
'migrate',
'move',
'object',
'persist',
'pexpire',
'pexpireat',
'pttl',
'randomkey',
'rename',
'renamenx',
'restore',
'sort',
'ttl',
'type',
'scan',
'append',
'bitcount',
'bitop',
'decr',
'decrby',
'get',
'getbit',
'getrange',
'getset',
'incr',
'incrby',
'incrbyfloat',
'mget',
'mset',
'msetnx',
'psetex',
'set',
'setbit',
'setex',
'setnx',
'setrange',
'strlen',
'hdel',
'hexists',
'hget',
'hgetall',
'hincrby',
'hincrbyfloat',
'hkeys',
'hlen',
'hmget',
'hmset',
'hset',
'hsetnx',
'hvals',
'hscan',
'blpop',
'brpop',
'brpoplpush',
'lindex',
'linsert',
'llen',
'lpop',
'lpush',
'lpushx',
'lrange',
'lrem',
'lset',
'ltrim',
'rpop',
'rpoplpush',
'rpush',
'rpushx',
'sadd',
'scard',
'sdiff',
'sdiffstore',
'sinter',
'sinterstore',
'sismember',
'smembers',
'smove',
'spop',
'srandmember',
'srem',
'sunion',
'sunionstore',
'sscan',
'zadd',
'zcard',
'zcount',
'zincrby',
'zrange',
'zrangebyscore',
'zrank',
'zrem',
'zremrangebyrank',
'zremrangebyscore',
'zrevrange',
'zrevrangebyscore',
'zrevrank',
'zscore',
'zunionstore',
'zinterstore',
'zscan',
'psubscribe',
'publish',
'pubsub',
'punsubscribe',
'subscribe',
'unsubscribe',
'discard',
'exec',
'multi',
'unwatch',
'watch',
'info',
];
var extensionActions = ['getObj', 'setObj'];
var Actions = originActions.concat(extensionActions);
var wrapper = function (connection) {
var wrappedConn = {};
Actions.forEach(function (funcName) {
if (typeof connection[funcName] === 'function') {
var originFunc_1 = connection[funcName];
wrappedConn[funcName] = wrappedConn[funcName.toUpperCase()] = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new Promise(function (resolve, reject) {
originFunc_1.apply(connection, args.concat(function (error, replies) {
if (error) {
reject(error);
}
else {
resolve(replies);
}
}));
});
};
}
});
wrappedConn.getObj = function (key) { return wrappedConn.get(key).then(JSON.parse); };
wrappedConn.setObj = function (key, value, timeout) {
if (timeout) {
return wrappedConn.set(key, typeof value === 'string' ? value : JSON.stringify(value), 'EX', timeout);
}
else {
return wrappedConn.set(key, typeof value === 'string' ? value : JSON.stringify(value));
}
};
return wrappedConn;
};
var init = function (configs) {
var connection = redis_1.createClient(configs.port, configs.host, __assign({ retry_strategy: function (options) {
if (options.error && options.error.code === 'ECONNREFUSED') {
console.error('Redis server refused the connection.');
}
if (options.total_retry_time > 2000 * 2) {
return undefined;
}
return 2000;
} }, configs));
var wrappedConn = wrapper(connection);
return wrappedConn;
};
exports.default = init;
//# sourceMappingURL=index.js.map