UNPKG

redis-conn-wrapper

Version:
185 lines 4.27 kB
"use strict"; 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