{"version":3,"sources":["jsdelivr-header.js","/npm/redis-sentinel-shard@0.0.2/index.js"],"names":[],"mappings":"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","file":"/npm/redis-sentinel-shard@0.0.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/redis-sentinel-shard@0.0.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var assert = require('assert');\nvar HashRing = require('hashring');\nvar step = require('step');\nvar sentinel = require('redis-sentinel');\n\nmodule.exports = function RedisSentinelShard(endpoints, masters) {\n  var mastersHash = {};\n\n  if (Array.isArray(masters)) {\n    masters.forEach(function(masterName) {\n      mastersHash[masterName] = 1;\n    });\n  }\n  else if (masters && (typeof value === 'object')) {\n    mastersHash = masters;\n  }\n  else {\n    throw new Error('masters must be an Array or Object');\n  }\n\n  var self = {};\n  var clients = {};\n  var Sentinel = sentinel.Sentinel(endpoints);\n  Object.keys(mastersHash).forEach(function(masterName) {\n    clients[masterName] = Sentinel.createClient(masterName);\n  });\n\n  self.ring = new HashRing(mastersHash);\n\n  // All of these commands have 'key' as their first parameter\n  var SHARDABLE = [\n    \"append\", \"bitcount\", \"blpop\", \"brpop\", \"debug object\", \"decr\", \"decrby\", \"del\", \"dump\", \"exists\", \"expire\",\n    \"expireat\", \"get\", \"getbit\", \"getrange\", \"getset\", \"hdel\", \"hexists\", \"hget\", \"hgetall\", \"hincrby\",\n    \"hincrbyfloat\", \"hkeys\", \"hlen\", \"hmget\", \"hmset\", \"hset\", \"hsetnx\", \"hvals\", \"incr\", \"incrby\", \"incrbyfloat\",\n    \"lindex\", \"linsert\", \"llen\", \"lpop\", \"lpush\", \"lpushx\", \"lrange\", \"lrem\", \"lset\", \"ltrim\", \"mget\", \"move\",\n    \"persist\", \"pexpire\", \"pexpireat\", \"psetex\", \"pttl\", \"rename\", \"renamenx\", \"restore\", \"rpop\", \"rpush\", \"rpushx\",\n    \"sadd\", \"scard\", \"sdiff\", \"set\", \"setbit\", \"setex\", \"setnx\", \"setrange\", \"sinter\", \"sismember\", \"smembers\",\n    \"sort\", \"spop\", \"srandmember\", \"srem\", \"strlen\", \"sunion\", \"ttl\", \"type\", \"watch\", \"zadd\", \"zcard\", \"zcount\",\n    \"zincrby\", \"zrange\", \"zrangebyscore\", \"zrank\", \"zrem\", \"zremrangebyrank\", \"zremrangebyscore\", \"zrevrange\",\n    \"zrevrangebyscore\", \"zrevrank\", \"zscore\"\n  ];\n  SHARDABLE.forEach(function(command) {\n    self[command] = function() {\n      var node = self.ring.get(arguments[0]);\n      var client = clients[node];\n      client[command].apply(client, arguments);\n    };\n  });\n\n  // No key parameter to shard on - throw Error\n  var UNSHARDABLE = [\n    \"auth\", \"bgrewriteaof\", \"bgsave\", \"bitop\", \"brpoplpush\", \"client kill\", \"client list\", \"client getname\",\n    \"client setname\", \"config get\", \"config set\", \"config resetstat\", \"dbsize\", \"debug segfault\", \"discard\",\n    \"echo\", \"eval\", \"evalsha\", \"exec\", \"flushall\", \"flushdb\", \"info\", \"keys\", \"lastsave\", \"migrate\", \"monitor\",\n    \"mset\", \"msetnx\", \"multi\", \"object\", \"ping\", \"psubscribe\", \"publish\", \"punsubscribe\", \"quit\", \"randomkey\",\n    \"rpoplpush\", \"save\", \"script exists\", \"script flush\", \"script kill\", \"script load\", \"sdiffstore\", \"select\",\n    \"shutdown\", \"sinterstore\", \"slaveof\", \"slowlog\", \"smove\", \"subscribe\", \"sunionstore\", \"sync\", \"time\",\n    \"unsubscribe\", \"unwatch\", \"zinterstore\", \"zunionstore\"\n  ];\n  UNSHARDABLE.forEach(function(command) {\n    self[command] = function() {\n      throw new Error(command + ' is not shardable');\n    };\n  });\n\n  // This is the tricky part - pipeline commands to multiple servers\n  self.multi = function Multi() {\n\n    var self = {};\n    var multis = {};\n    var interlachen = [];\n\n    // Setup chainable shardable commands\n    SHARDABLE.forEach(function(command) {\n      self[command] = function() {\n        var node = self.ring.get(arguments[0]);\n        var multi = multis[node];\n        if (!multi) {\n          multi = multis[node] = clients[node].multi();\n        }\n        interlachen.push(node);\n        multi[command].apply(multi, arguments);\n        return self;\n      };\n    });\n\n    UNSHARDABLE.forEach(function(command) {\n      self[command] = function() {\n        throw new Error(command + \" is not supported\");\n      };\n    });\n\n    // Exec the pipeline and interleave the results\n    self.exec = function(callback) {\n      var nodes = Object.keys(multis);\n      step(\n        function run() {\n          var group = this.group();\n          nodes.forEach(function(node) {\n            multis[node].exec(group());\n          });\n        },\n        function done(error, groups) {\n          if (error) { return callback(error); }\n          assert(nodes.length === groups.length, \"wrong number of responses\");\n          var results = [];\n          interlachen.forEach(function(node) {\n            var index = nodes.indexOf(node);\n            assert(groups[index].length > 0, node + \" is missing a result\");\n            results.push(groups[index].shift());\n          });\n          callback(null, results);\n        }\n      );\n    };\n    return self; // Multi()\n  };\n\n\n  self.on = function(event, listener) {\n    options.servers.forEach(function(server) {\n      clients[server].on(event, function() {\n        // append server as last arg passed to listener\n        var args = Array.prototype.slice.call(arguments).concat(server);\n        listener.apply(undefined, args);\n      });\n    });\n  };\n\n  // Note: listener will fire once per shard, not once per cluster\n  self.once = function(event, listener) {\n    options.servers.forEach(function(server) {\n      clients[server].once(event, function() {\n        // append server as last arg passed to listener\n        var args = Array.prototype.slice.call(arguments).concat(server);\n        listener.apply(undefined, args);\n      });\n    });\n  };\n\n  return self; // RedisSentinelShard()\n};\n"]}