keyv-anyredis
Version:
Storage adapter for Keyv that works with multiple Redis clients, including cluster clients
100 lines • 6.86 kB
JavaScript
"use strict";
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _RedisPromiseAdapter_client, _RedisPromiseAdapter_get, _RedisPromiseAdapter_set, _RedisPromiseAdapter_del, _RedisPromiseAdapter_sadd, _RedisPromiseAdapter_srem, _RedisPromiseAdapter_smembers, _RedisPromiseAdapter_sismember;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RedisPromiseAdapter = void 0;
const events_1 = __importDefault(require("events"));
const util_1 = require("util");
const compatible_redis_client_1 = require("./compatible-redis-client");
const node_redis_v4_adapter_1 = require("./node-redis-v4-adapter");
/**
* Converts a Redis callback interface to match a Redis Promise interface. Implements only
* a minimal subset of Redis functionality as defined in
* {@link CompatiblePromiseRedisClient}.
*/
class RedisPromiseAdapter extends events_1.default {
constructor(client) {
super();
_RedisPromiseAdapter_client.set(this, void 0);
// Promisified client methods
_RedisPromiseAdapter_get.set(this, void 0);
_RedisPromiseAdapter_set.set(this, void 0);
_RedisPromiseAdapter_del.set(this, void 0);
_RedisPromiseAdapter_sadd.set(this, void 0);
_RedisPromiseAdapter_srem.set(this, void 0);
_RedisPromiseAdapter_smembers.set(this, void 0);
_RedisPromiseAdapter_sismember.set(this, void 0);
__classPrivateFieldSet(this, _RedisPromiseAdapter_client, client, "f");
// istanbul ignore else
if (__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f") instanceof events_1.default) {
__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").on('error', error => this.emit('error', error));
}
// Bind Promisified versions of the client methods
__classPrivateFieldSet(this, _RedisPromiseAdapter_get, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").get).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_set, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").set).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_del, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").del).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_sadd, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").sadd).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_srem, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").srem).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_smembers, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").smembers).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
__classPrivateFieldSet(this, _RedisPromiseAdapter_sismember, (0, util_1.promisify)(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f").sismember).bind(__classPrivateFieldGet(this, _RedisPromiseAdapter_client, "f")), "f");
}
/**
* Factory method returns a Promise-based Redis client.
*
* If the provided client is a callback client, it’s wrapped in the Promise adapter. If
* the provided client is a Promise client, it’s passed through and returned.
*
* @param client a Redis Promise or callback client
*
* @returns a Redis Promise client
*/
static create(client) {
if ((0, compatible_redis_client_1.isCompatiblePromiseRedisClient)(client)) {
return client;
}
if ((0, compatible_redis_client_1.isCompatibleNodeRedisV4Client)(client)) {
return new node_redis_v4_adapter_1.NodeRedisV4Adapter(client);
}
return new RedisPromiseAdapter(client);
}
get(key) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_get, "f").call(this, key);
}
set(key, value, expiryMode, time) {
if (expiryMode && typeof time === 'number') {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_set, "f").call(this, key, value, expiryMode, time);
}
return __classPrivateFieldGet(this, _RedisPromiseAdapter_set, "f").call(this, key, value);
}
del(key) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_del, "f").call(this, key);
}
sadd(key, member) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_sadd, "f").call(this, key, member);
}
srem(key, member) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_srem, "f").call(this, key, member);
}
smembers(key) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_smembers, "f").call(this, key);
}
sismember(key, member) {
return __classPrivateFieldGet(this, _RedisPromiseAdapter_sismember, "f").call(this, key, member);
}
}
exports.RedisPromiseAdapter = RedisPromiseAdapter;
_RedisPromiseAdapter_client = new WeakMap(), _RedisPromiseAdapter_get = new WeakMap(), _RedisPromiseAdapter_set = new WeakMap(), _RedisPromiseAdapter_del = new WeakMap(), _RedisPromiseAdapter_sadd = new WeakMap(), _RedisPromiseAdapter_srem = new WeakMap(), _RedisPromiseAdapter_smembers = new WeakMap(), _RedisPromiseAdapter_sismember = new WeakMap();
//# sourceMappingURL=redis-promise-adapter.js.map