UNPKG

@silverwind/ioredis-mock

Version:

This library emulates ioredis by performing all operations in-memory.

2,616 lines (2,613 loc) 350 kB
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