@silverwind/ioredis-mock
Version:
This library emulates ioredis by performing all operations in-memory.
2,616 lines (2,613 loc) • 350 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, {get: all[name], enumerable: true});
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
};
// node_modules/redis-commands/commands.json
var require_commands = __commonJS({
"node_modules/redis-commands/commands.json"(exports2, module2) {
module2.exports = {
acl: {
arity: -2,
flags: [
"admin",
"noscript",
"loading",
"stale",
"skip_slowlog"
],
keyStart: 0,
keyStop: 0,
step: 0
},
append: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
asking: {
arity: 1,
flags: [
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
auth: {
arity: -2,
flags: [
"noscript",
"loading",
"stale",
"skip_monitor",
"skip_slowlog",
"fast",
"no_auth"
],
keyStart: 0,
keyStop: 0,
step: 0
},
bgrewriteaof: {
arity: 1,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
bgsave: {
arity: -1,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
bitcount: {
arity: -2,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
bitfield: {
arity: -2,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
bitfield_ro: {
arity: -2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
bitop: {
arity: -4,
flags: [
"write",
"denyoom"
],
keyStart: 2,
keyStop: -1,
step: 1
},
bitpos: {
arity: -3,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
blmove: {
arity: 6,
flags: [
"write",
"denyoom",
"noscript"
],
keyStart: 1,
keyStop: 2,
step: 1
},
blpop: {
arity: -3,
flags: [
"write",
"noscript"
],
keyStart: 1,
keyStop: -2,
step: 1
},
brpop: {
arity: -3,
flags: [
"write",
"noscript"
],
keyStart: 1,
keyStop: -2,
step: 1
},
brpoplpush: {
arity: 4,
flags: [
"write",
"denyoom",
"noscript"
],
keyStart: 1,
keyStop: 2,
step: 1
},
bzpopmax: {
arity: -3,
flags: [
"write",
"noscript",
"fast"
],
keyStart: 1,
keyStop: -2,
step: 1
},
bzpopmin: {
arity: -3,
flags: [
"write",
"noscript",
"fast"
],
keyStart: 1,
keyStop: -2,
step: 1
},
client: {
arity: -2,
flags: [
"admin",
"noscript",
"random",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
cluster: {
arity: -2,
flags: [
"admin",
"random",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
command: {
arity: -1,
flags: [
"random",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
config: {
arity: -2,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
copy: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 2,
step: 1
},
dbsize: {
arity: 1,
flags: [
"readonly",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
debug: {
arity: -2,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
decr: {
arity: 2,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
decrby: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
del: {
arity: -2,
flags: [
"write"
],
keyStart: 1,
keyStop: -1,
step: 1
},
discard: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
dump: {
arity: 2,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
echo: {
arity: 2,
flags: [
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
eval: {
arity: -3,
flags: [
"noscript",
"may_replicate",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
evalsha: {
arity: -3,
flags: [
"noscript",
"may_replicate",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
exec: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"skip_monitor",
"skip_slowlog"
],
keyStart: 0,
keyStop: 0,
step: 0
},
exists: {
arity: -2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: -1,
step: 1
},
expire: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
expireat: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
failover: {
arity: -1,
flags: [
"admin",
"noscript",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
flushall: {
arity: -1,
flags: [
"write"
],
keyStart: 0,
keyStop: 0,
step: 0
},
flushdb: {
arity: -1,
flags: [
"write"
],
keyStart: 0,
keyStop: 0,
step: 0
},
geoadd: {
arity: -5,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
geodist: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
geohash: {
arity: -2,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
geopos: {
arity: -2,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
georadius: {
arity: -6,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
},
georadius_ro: {
arity: -6,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
georadiusbymember: {
arity: -5,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
},
georadiusbymember_ro: {
arity: -5,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
geosearch: {
arity: -7,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
geosearchstore: {
arity: -8,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 2,
step: 1
},
get: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
getbit: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
getdel: {
arity: 2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
getex: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
getrange: {
arity: 4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
getset: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hdel: {
arity: -3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hello: {
arity: -1,
flags: [
"noscript",
"loading",
"stale",
"skip_monitor",
"skip_slowlog",
"fast",
"no_auth"
],
keyStart: 0,
keyStop: 0,
step: 0
},
hexists: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hget: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hgetall: {
arity: 2,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hincrby: {
arity: 4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hincrbyfloat: {
arity: 4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hkeys: {
arity: 2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hlen: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hmget: {
arity: -3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hmset: {
arity: -4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
"host:": {
arity: -1,
flags: [
"readonly",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
hrandfield: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hscan: {
arity: -3,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hset: {
arity: -4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hsetnx: {
arity: 4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hstrlen: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
hvals: {
arity: 2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: 1,
step: 1
},
incr: {
arity: 2,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
incrby: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
incrbyfloat: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
info: {
arity: -1,
flags: [
"random",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
keys: {
arity: 2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 0,
keyStop: 0,
step: 0
},
lastsave: {
arity: 1,
flags: [
"random",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
latency: {
arity: -2,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
lindex: {
arity: 3,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
linsert: {
arity: 5,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
llen: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lmove: {
arity: 5,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 2,
step: 1
},
lolwut: {
arity: -1,
flags: [
"readonly",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
lpop: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lpos: {
arity: -3,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lpush: {
arity: -3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lpushx: {
arity: -3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lrange: {
arity: 4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lrem: {
arity: 4,
flags: [
"write"
],
keyStart: 1,
keyStop: 1,
step: 1
},
lset: {
arity: 4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
ltrim: {
arity: 4,
flags: [
"write"
],
keyStart: 1,
keyStop: 1,
step: 1
},
memory: {
arity: -2,
flags: [
"readonly",
"random",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
mget: {
arity: -2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: -1,
step: 1
},
migrate: {
arity: -6,
flags: [
"write",
"random",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
module: {
arity: -2,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
monitor: {
arity: 1,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
move: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
mset: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 2
},
msetnx: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 2
},
multi: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
object: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 2,
keyStop: 2,
step: 1
},
persist: {
arity: 2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
pexpire: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
pexpireat: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
pfadd: {
arity: -2,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
pfcount: {
arity: -2,
flags: [
"readonly",
"may_replicate"
],
keyStart: 1,
keyStop: -1,
step: 1
},
pfdebug: {
arity: -3,
flags: [
"write",
"denyoom",
"admin"
],
keyStart: 2,
keyStop: 2,
step: 1
},
pfmerge: {
arity: -2,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 1
},
pfselftest: {
arity: 1,
flags: [
"admin"
],
keyStart: 0,
keyStop: 0,
step: 0
},
ping: {
arity: -1,
flags: [
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
post: {
arity: -1,
flags: [
"readonly",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
psetex: {
arity: 4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
psubscribe: {
arity: -2,
flags: [
"pubsub",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
psync: {
arity: -3,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
pttl: {
arity: 2,
flags: [
"readonly",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
publish: {
arity: 3,
flags: [
"pubsub",
"loading",
"stale",
"fast",
"may_replicate"
],
keyStart: 0,
keyStop: 0,
step: 0
},
pubsub: {
arity: -2,
flags: [
"pubsub",
"random",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
punsubscribe: {
arity: -1,
flags: [
"pubsub",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
quit: {
arity: 1,
flags: [
"loading",
"stale",
"readonly"
],
keyStart: 0,
keyStop: 0,
step: 0
},
randomkey: {
arity: 1,
flags: [
"readonly",
"random"
],
keyStart: 0,
keyStop: 0,
step: 0
},
readonly: {
arity: 1,
flags: [
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
readwrite: {
arity: 1,
flags: [
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
rename: {
arity: 3,
flags: [
"write"
],
keyStart: 1,
keyStop: 2,
step: 1
},
renamenx: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 2,
step: 1
},
replconf: {
arity: -1,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
replicaof: {
arity: 3,
flags: [
"admin",
"noscript",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
reset: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
restore: {
arity: -4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
"restore-asking": {
arity: -4,
flags: [
"write",
"denyoom",
"asking"
],
keyStart: 1,
keyStop: 1,
step: 1
},
role: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
rpop: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
rpoplpush: {
arity: 3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 2,
step: 1
},
rpush: {
arity: -3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
rpushx: {
arity: -3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
sadd: {
arity: -3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
save: {
arity: 1,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
scan: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 0,
keyStop: 0,
step: 0
},
scard: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
script: {
arity: -2,
flags: [
"noscript",
"may_replicate"
],
keyStart: 0,
keyStop: 0,
step: 0
},
sdiff: {
arity: -2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: -1,
step: 1
},
sdiffstore: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 1
},
select: {
arity: 2,
flags: [
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
set: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
setbit: {
arity: 4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
setex: {
arity: 4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
setnx: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
setrange: {
arity: 4,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 1,
step: 1
},
shutdown: {
arity: -1,
flags: [
"admin",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
sinter: {
arity: -2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: -1,
step: 1
},
sinterstore: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 1
},
sismember: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
slaveof: {
arity: 3,
flags: [
"admin",
"noscript",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
slowlog: {
arity: -2,
flags: [
"admin",
"random",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
smembers: {
arity: 2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: 1,
step: 1
},
smismember: {
arity: -3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
smove: {
arity: 4,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 2,
step: 1
},
sort: {
arity: -2,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
},
spop: {
arity: -2,
flags: [
"write",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
srandmember: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
srem: {
arity: -3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
sscan: {
arity: -3,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
stralgo: {
arity: -2,
flags: [
"readonly",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
strlen: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
subscribe: {
arity: -2,
flags: [
"pubsub",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
substr: {
arity: 4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
sunion: {
arity: -2,
flags: [
"readonly",
"sort_for_script"
],
keyStart: 1,
keyStop: -1,
step: 1
},
sunionstore: {
arity: -3,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: -1,
step: 1
},
swapdb: {
arity: 3,
flags: [
"write",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
sync: {
arity: 1,
flags: [
"admin",
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
time: {
arity: 1,
flags: [
"random",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
touch: {
arity: -2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: -1,
step: 1
},
ttl: {
arity: 2,
flags: [
"readonly",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
type: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
unlink: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: -1,
step: 1
},
unsubscribe: {
arity: -1,
flags: [
"pubsub",
"noscript",
"loading",
"stale"
],
keyStart: 0,
keyStop: 0,
step: 0
},
unwatch: {
arity: 1,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 0,
keyStop: 0,
step: 0
},
wait: {
arity: 3,
flags: [
"noscript"
],
keyStart: 0,
keyStop: 0,
step: 0
},
watch: {
arity: -2,
flags: [
"noscript",
"loading",
"stale",
"fast"
],
keyStart: 1,
keyStop: -1,
step: 1
},
xack: {
arity: -4,
flags: [
"write",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xadd: {
arity: -5,
flags: [
"write",
"denyoom",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xautoclaim: {
arity: -6,
flags: [
"write",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xclaim: {
arity: -6,
flags: [
"write",
"random",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xdel: {
arity: -3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xgroup: {
arity: -2,
flags: [
"write",
"denyoom"
],
keyStart: 2,
keyStop: 2,
step: 1
},
xinfo: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 2,
keyStop: 2,
step: 1
},
xlen: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xpending: {
arity: -3,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xrange: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xread: {
arity: -4,
flags: [
"readonly",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
xreadgroup: {
arity: -7,
flags: [
"write",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
xrevrange: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xsetid: {
arity: 3,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
xtrim: {
arity: -2,
flags: [
"write",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zadd: {
arity: -4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zcard: {
arity: 2,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zcount: {
arity: 4,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zdiff: {
arity: -3,
flags: [
"readonly",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
zdiffstore: {
arity: -4,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zincrby: {
arity: 4,
flags: [
"write",
"denyoom",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zinter: {
arity: -3,
flags: [
"readonly",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
zinterstore: {
arity: -4,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zlexcount: {
arity: 4,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zmscore: {
arity: -3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zpopmax: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zpopmin: {
arity: -2,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrandmember: {
arity: -2,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrange: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrangebylex: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrangebyscore: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrangestore: {
arity: -5,
flags: [
"write",
"denyoom"
],
keyStart: 1,
keyStop: 2,
step: 1
},
zrank: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrem: {
arity: -3,
flags: [
"write",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zremrangebylex: {
arity: 4,
flags: [
"write"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zremrangebyrank: {
arity: 4,
flags: [
"write"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zremrangebyscore: {
arity: 4,
flags: [
"write"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrevrange: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrevrangebylex: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrevrangebyscore: {
arity: -4,
flags: [
"readonly"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zrevrank: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zscan: {
arity: -3,
flags: [
"readonly",
"random"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zscore: {
arity: 3,
flags: [
"readonly",
"fast"
],
keyStart: 1,
keyStop: 1,
step: 1
},
zunion: {
arity: -3,
flags: [
"readonly",
"movablekeys"
],
keyStart: 0,
keyStop: 0,
step: 0
},
zunionstore: {
arity: -4,
flags: [
"write",
"denyoom",
"movablekeys"
],
keyStart: 1,
keyStop: 1,
step: 1
}
};
}
});
// node_modules/redis-commands/index.js
var require_redis_commands = __commonJS({
"node_modules/redis-commands/index.js"(exports2) {
"use strict";
var commands = require_commands();
exports2.list = Object.keys(commands);
var flags = {};
exports2.list.forEach(function(commandName) {
flags[commandName] = commands[commandName].flags.reduce(function(flags2, flag) {
flags2[flag] = true;
return flags2;
}, {});
});
exports2.exists = function(commandName) {
return Boolean(commands[commandName]);
};
exports2.hasFlag = function(commandName, flag) {
if (!flags[commandName]) {
throw new Error("Unknown command " + commandName);
}
return Boolean(flags[commandName][flag]);
};
exports2.getKeyIndexes = function(commandName, args, options) {
var command2 = commands[commandName];
if (!command2) {
throw new Error("Unknown command " + commandName);
}
if (!Array.isArray(args)) {
throw new Error("Expect args to be an array");
}
var keys2 = [];
var i, keyStart, keyStop, parseExternalKey;
switch (commandName) {
case "zunionstore":
case "zinterstore":
keys2.push(0);
case "eval":
case "evalsha":
keyStop = Number(args[1]) + 2;
for (i = 2; i < keyStop; i++) {
keys2.push(i);
}
break;
case "sort":
parseExternalKey = options && options.parseExternalKey;
keys2.push(0);
for (i = 1; i < args.length - 1; i++) {
if (typeof args[i] !== "string") {
continue;
}
var directive = args[i].toUpperCase();
if (directive === "GET") {
i += 1;
if (args[i] !== "#") {
if (parseExternalKey) {
keys2.push([i, getExternalKeyNameLength(args[i])]);
} else {
keys2.push(i);
}
}
} else if (directive === "BY") {
i += 1;
if (parseExternalKey) {
keys2.push([i, getExternalKeyNameLength(args[i])]);
} else {
keys2.push(i);
}
} else if (directive === "STORE") {
i += 1;
keys2.push(i);
}
}
break;
case "migrate":
if (args[2] === "") {
for (i = 5; i < args.length - 1; i++) {
if (args[i].toUpperCase() === "KEYS") {
for (var j = i + 1; j < args.length; j++) {
keys2.push(j);
}
break;
}
}
} else {
keys2.push(2);
}
break;
case "xreadgroup":
case "xread":
for (i = commandName === "xread" ? 0 : 3; i < args.length - 1; i++) {
if (String(args[i]).toUpperCase() === "STREAMS") {
for (j = i + 1; j <= i + (args.length - 1 - i) / 2; j++) {
keys2.push(j);
}
break;
}
}
break;
default:
if (command2.step > 0) {
keyStart = command2.keyStart - 1;
keyStop = command2.keyStop > 0 ? command2.keyStop : args.length + command2.keyStop + 1;
for (i = keyStart; i < keyStop; i += command2.step) {
keys2.push(i);
}
}
break;
}
return keys2;
};
function getExternalKeyNameLength(key) {
if (typeof key !== "string") {
key = String(key);
}
var hashPos = key.indexOf("->");
return hashPos === -1 ? key.length : hashPos;
}
}
});
// node_modules/lodash.defaults/index.js
var require_lodash = __commonJS({
"node_modules/lodash.defaults/index.js"(exports2, module2) {
var MAX_SAFE_INTEGER = 9007199254740991;
var argsTag = "[object Arguments]";
var funcTag = "[object Function]";
var genTag = "[object GeneratorFunction]";
var reIsUint = /^(?:0|[1-9]\d*)$/;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function baseTimes(n, iteratee) {
var index = -1, result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
var objectProto = Object.prototype;
var hasOwnProperty = objectProto.hasOwnProperty;
var objectToString = objectProto.toString;
var propertyIsEnumerable = objectProto.propertyIsEnumerable;
var nativeMax = Math.max;
function arrayLikeKeys(value, inherited) {
var result = isArray2(value) || isArguments(value) ? baseTimes(value.length, String) : [];
var length = result.length, skipIndexes = !!length;
for (var key in value) {
if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == "length" || isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
function assignInDefaults(objValue, srcValue, key, object) {
if (objValue === void 0 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {
return srcValue;
}
return objValue;
}
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
object[key] = value;
}
}
function baseKeysIn(object) {
if (!isObject(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object), result = [];
for (var key in object) {
if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
result.push(key);
}
}
return result;
}
function baseRest(func, start) {
start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
return function() {
var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = array;
return apply(func, this, otherArgs);
};
}
function copyObject(source, props, object, customizer) {
object || (object = {});
var index = -1, length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
assignValue(object, key, newValue === void 0 ? source[key] : newValue);
}
return object;
}
function createAssigner(assigner) {
return baseRest(function(object, sources) {
var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? void 0 : customizer;
length = 1;
}
object = Object(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
function isIndex(value, length) {
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length && (typeof value == "number" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function isIterateeCall(value, index, object) {
if (!isObject(object)) {
return false;
}
var type2 = typeof index;
if (type2 == "number" ? isArrayLike(object) && isIndex(index, object.length) : type2 == "string" && index in object) {
return eq(object[index], value);
}
return false;
}
function isPrototype(value) {
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
return value === proto;
}
function nativeKeysI