From 42da513c2531308b4646fc49dc18898ed6d22f0b Mon Sep 17 00:00:00 2001 From: York Yao Date: Tue, 12 Apr 2016 08:33:14 -0500 Subject: [PATCH] Try to provide a new definition for ioredis (#8910) * Create ioredis.d.ts * Create ioredis-tests.ts * Update ioredis.d.ts * Update ioredis-tests.ts * expose interfaces as type --- ioredis/ioredis-tests.ts | 54 +++ ioredis/ioredis.d.ts | 699 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 753 insertions(+) create mode 100644 ioredis/ioredis-tests.ts create mode 100644 ioredis/ioredis.d.ts diff --git a/ioredis/ioredis-tests.ts b/ioredis/ioredis-tests.ts new file mode 100644 index 000000000..928036791 --- /dev/null +++ b/ioredis/ioredis-tests.ts @@ -0,0 +1,54 @@ +/// + +import * as Redis from "ioredis"; +var redis = new Redis(); + +redis.set('foo', 'bar'); +redis.get('foo', function(err, result) { + console.log(result); +}); + +// Or using a promise if the last argument isn't a function +redis.get('foo').then(function(result: any) { + console.log(result); +}); + +// Arguments to commands are flattened, so the following are the same: +redis.sadd('set', 1, 3, 5, 7); +redis.sadd('set', [1, 3, 5, 7]); + +// All arguments are passed directly to the redis server: +redis.set('key', 100, 'EX', 10); + +new Redis() // Connect to 127.0.0.1:6379 +new Redis(6380) // 127.0.0.1:6380 +new Redis(6379, '192.168.1.1') // 192.168.1.1:6379 +new Redis('/tmp/redis.sock') +new Redis({ + port: 6379, // Redis port + host: '127.0.0.1', // Redis host + family: 4, // 4 (IPv4) or 6 (IPv6) + password: 'auth', + db: 0 +}) + +var pub = new Redis(); +redis.subscribe('news', 'music', function(err: any, count: any) { + // Now we are subscribed to both the 'news' and 'music' channels. + // `count` represents the number of channels we are currently subscribed to. + + pub.publish('news', 'Hello world!'); + pub.publish('music', 'Hello again!'); +}); + +redis.on('message', function(channel: any, message: any) { + // Receive message Hello world! from channel news + // Receive message Hello again! from channel music + console.log('Receive message %s from channel %s', message, channel); +}); + +// There's also an event called 'messageBuffer', which is the same as 'message' except +// it returns buffers instead of strings. +redis.on('messageBuffer', function(channel: any, message: any) { + // Both `channel` and `message` are buffers. +}); diff --git a/ioredis/ioredis.d.ts b/ioredis/ioredis.d.ts new file mode 100644 index 000000000..d8cd4b3c7 --- /dev/null +++ b/ioredis/ioredis.d.ts @@ -0,0 +1,699 @@ +// Type definitions for ioredis +// Project: https://github.com/luin/ioredis +// Definitions by: York Yao +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/* =================== USAGE =================== + import * as Redis from "ioredis"; + var redis = new Redis(); + =============================================== */ + +/// + +declare module "ioredis" { + + + interface RedisStatic { + new (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis; + new (host?: string, options?: IORedis.RedisOptions): IORedis.Redis; + new (options: IORedis.RedisOptions): IORedis.Redis; + new (url: string): IORedis.Redis; + (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis; + (host?: string, options?: IORedis.RedisOptions): IORedis.Redis; + (options: IORedis.RedisOptions): IORedis.Redis; + (url: string): IORedis.Redis; + Cluster: IORedis.Cluster; + } + + var redis: RedisStatic; + export = redis; +} +declare module IORedis { + interface Commander { + new (): Commander; + getBuiltinCommands(): string[]; + createBuiltinCommand(commandName: string): {}; + defineCommand(name: string, definition: { + numberOfKeys?: number; + lua?: string; + }): any; + sendCommand(): void; + } + + interface Redis extends NodeJS.EventEmitter, Commander { + connect(callback: Function): Promise; + disconnect(): void; + duplicate(): Redis; + monitor(calback: (error: Error, monitor: NodeJS.EventEmitter) => void): Promise; + + send_command(command: string, ...args: any[]): any; + auth(password: string, callback?: ResCallbackT): any; + ping(callback?: ResCallbackT): any; + append(key: string, value: string, callback?: ResCallbackT): any; + bitcount(key: string, callback?: ResCallbackT): any; + bitcount(key: string, start: number, end: number, callback?: ResCallbackT): any; + set(key: string, value: string, callback?: ResCallbackT): any; + get(key: string, callback?: ResCallbackT): any; + exists(key: string, value: string, callback?: ResCallbackT): any; + publish(channel: string, value: any): any; + subscribe(channel: string): any; + get(args: any[], callback?: ResCallbackT): any; + get(...args: any[]): any; + set(args: any[], callback?: ResCallbackT): any; + set(...args: any[]): any; + setnx(args: any[], callback?: ResCallbackT): any; + setnx(...args: any[]): any; + setex(args: any[], callback?: ResCallbackT): any; + setex(...args: any[]): any; + append(args: any[], callback?: ResCallbackT): any; + append(...args: any[]): any; + strlen(args: any[], callback?: ResCallbackT): any; + strlen(...args: any[]): any; + del(args: any[], callback?: ResCallbackT): any; + del(...args: any[]): any; + exists(args: any[], callback?: ResCallbackT): any; + exists(...args: any[]): any; + setbit(args: any[], callback?: ResCallbackT): any; + setbit(...args: any[]): any; + getbit(args: any[], callback?: ResCallbackT): any; + getbit(...args: any[]): any; + setrange(args: any[], callback?: ResCallbackT): any; + setrange(...args: any[]): any; + getrange(args: any[], callback?: ResCallbackT): any; + getrange(...args: any[]): any; + substr(args: any[], callback?: ResCallbackT): any; + substr(...args: any[]): any; + incr(args: any[], callback?: ResCallbackT): any; + incr(...args: any[]): any; + decr(args: any[], callback?: ResCallbackT): any; + decr(...args: any[]): any; + mget(args: any[], callback?: ResCallbackT): any; + mget(...args: any[]): any; + rpush(...args: any[]): any; + lpush(args: any[], callback?: ResCallbackT): any; + lpush(...args: any[]): any; + rpushx(args: any[], callback?: ResCallbackT): any; + rpushx(...args: any[]): any; + lpushx(args: any[], callback?: ResCallbackT): any; + lpushx(...args: any[]): any; + linsert(args: any[], callback?: ResCallbackT): any; + linsert(...args: any[]): any; + rpop(args: any[], callback?: ResCallbackT): any; + rpop(...args: any[]): any; + lpop(args: any[], callback?: ResCallbackT): any; + lpop(...args: any[]): any; + brpop(args: any[], callback?: ResCallbackT): any; + brpop(...args: any[]): any; + brpoplpush(args: any[], callback?: ResCallbackT): any; + brpoplpush(...args: any[]): any; + blpop(args: any[], callback?: ResCallbackT): any; + blpop(...args: any[]): any; + llen(args: any[], callback?: ResCallbackT): any; + llen(...args: any[]): any; + lindex(args: any[], callback?: ResCallbackT): any; + lindex(...args: any[]): any; + lset(args: any[], callback?: ResCallbackT): any; + lset(...args: any[]): any; + lrange(args: any[], callback?: ResCallbackT): any; + lrange(...args: any[]): any; + ltrim(args: any[], callback?: ResCallbackT): any; + ltrim(...args: any[]): any; + lrem(args: any[], callback?: ResCallbackT): any; + lrem(...args: any[]): any; + rpoplpush(args: any[], callback?: ResCallbackT): any; + rpoplpush(...args: any[]): any; + sadd(args: any[], callback?: ResCallbackT): any; + sadd(...args: any[]): any; + srem(args: any[], callback?: ResCallbackT): any; + srem(...args: any[]): any; + smove(args: any[], callback?: ResCallbackT): any; + smove(...args: any[]): any; + sismember(args: any[], callback?: ResCallbackT): any; + sismember(...args: any[]): any; + scard(args: any[], callback?: ResCallbackT): any; + scard(...args: any[]): any; + spop(args: any[], callback?: ResCallbackT): any; + spop(...args: any[]): any; + srandmember(args: any[], callback?: ResCallbackT): any; + srandmember(...args: any[]): any; + sinter(args: any[], callback?: ResCallbackT): any; + sinter(...args: any[]): any; + sinterstore(args: any[], callback?: ResCallbackT): any; + sinterstore(...args: any[]): any; + sunion(args: any[], callback?: ResCallbackT): any; + sunion(...args: any[]): any; + sunionstore(args: any[], callback?: ResCallbackT): any; + sunionstore(...args: any[]): any; + sdiff(args: any[], callback?: ResCallbackT): any; + sdiff(...args: any[]): any; + sdiffstore(args: any[], callback?: ResCallbackT): any; + sdiffstore(...args: any[]): any; + smembers(args: any[], callback?: ResCallbackT): any; + smembers(...args: any[]): any; + zadd(args: any[], callback?: ResCallbackT): any; + zadd(...args: any[]): any; + zincrby(args: any[], callback?: ResCallbackT): any; + zincrby(...args: any[]): any; + zrem(args: any[], callback?: ResCallbackT): any; + zrem(...args: any[]): any; + zremrangebyscore(args: any[], callback?: ResCallbackT): any; + zremrangebyscore(...args: any[]): any; + zremrangebyrank(args: any[], callback?: ResCallbackT): any; + zremrangebyrank(...args: any[]): any; + zunionstore(args: any[], callback?: ResCallbackT): any; + zunionstore(...args: any[]): any; + zinterstore(args: any[], callback?: ResCallbackT): any; + zinterstore(...args: any[]): any; + zrange(args: any[], callback?: ResCallbackT): any; + zrange(...args: any[]): any; + zrangebyscore(args: any[], callback?: ResCallbackT): any; + zrangebyscore(...args: any[]): any; + zrevrangebyscore(args: any[], callback?: ResCallbackT): any; + zrevrangebyscore(...args: any[]): any; + zcount(args: any[], callback?: ResCallbackT): any; + zcount(...args: any[]): any; + zrevrange(args: any[], callback?: ResCallbackT): any; + zrevrange(...args: any[]): any; + zcard(args: any[], callback?: ResCallbackT): any; + zcard(...args: any[]): any; + zscore(args: any[], callback?: ResCallbackT): any; + zscore(...args: any[]): any; + zrank(args: any[], callback?: ResCallbackT): any; + zrank(...args: any[]): any; + zrevrank(args: any[], callback?: ResCallbackT): any; + zrevrank(...args: any[]): any; + hset(args: any[], callback?: ResCallbackT): any; + hset(...args: any[]): any; + hsetnx(args: any[], callback?: ResCallbackT): any; + hsetnx(...args: any[]): any; + hget(args: any[], callback?: ResCallbackT): any; + hget(...args: any[]): any; + hmset(args: any[], callback?: ResCallbackT): any; + hmset(key: string, hash: any, callback?: ResCallbackT): any; + hmset(...args: any[]): any; + hmget(args: any[], callback?: ResCallbackT): any; + hmget(...args: any[]): any; + hincrby(args: any[], callback?: ResCallbackT): any; + hincrby(...args: any[]): any; + hdel(args: any[], callback?: ResCallbackT): any; + hdel(...args: any[]): any; + hlen(args: any[], callback?: ResCallbackT): any; + hlen(...args: any[]): any; + hkeys(args: any[], callback?: ResCallbackT): any; + hkeys(...args: any[]): any; + hvals(args: any[], callback?: ResCallbackT): any; + hvals(...args: any[]): any; + hgetall(args: any[], callback?: ResCallbackT): any; + hgetall(...args: any[]): any; + hgetall(key: string, callback?: ResCallbackT): any; + hexists(args: any[], callback?: ResCallbackT): any; + hexists(...args: any[]): any; + incrby(args: any[], callback?: ResCallbackT): any; + incrby(...args: any[]): any; + decrby(args: any[], callback?: ResCallbackT): any; + decrby(...args: any[]): any; + getset(args: any[], callback?: ResCallbackT): any; + getset(...args: any[]): any; + mset(args: any[], callback?: ResCallbackT): any; + mset(...args: any[]): any; + msetnx(args: any[], callback?: ResCallbackT): any; + msetnx(...args: any[]): any; + randomkey(args: any[], callback?: ResCallbackT): any; + randomkey(...args: any[]): any; + select(args: any[], callback?: ResCallbackT): void; + select(...args: any[]): void; + move(args: any[], callback?: ResCallbackT): any; + move(...args: any[]): any; + rename(args: any[], callback?: ResCallbackT): any; + rename(...args: any[]): any; + renamenx(args: any[], callback?: ResCallbackT): any; + renamenx(...args: any[]): any; + expire(args: any[], callback?: ResCallbackT): any; + expire(...args: any[]): any; + expireat(args: any[], callback?: ResCallbackT): any; + expireat(...args: any[]): any; + keys(args: any[], callback?: ResCallbackT): any; + keys(...args: any[]): any; + dbsize(args: any[], callback?: ResCallbackT): any; + dbsize(...args: any[]): any; + auth(args: any[], callback?: ResCallbackT): void; + auth(...args: any[]): void; + ping(args: any[], callback?: ResCallbackT): any; + ping(...args: any[]): any; + echo(args: any[], callback?: ResCallbackT): any; + echo(...args: any[]): any; + save(args: any[], callback?: ResCallbackT): any; + save(...args: any[]): any; + bgsave(args: any[], callback?: ResCallbackT): any; + bgsave(...args: any[]): any; + bgrewriteaof(args: any[], callback?: ResCallbackT): any; + bgrewriteaof(...args: any[]): any; + shutdown(args: any[], callback?: ResCallbackT): any; + shutdown(...args: any[]): any; + lastsave(args: any[], callback?: ResCallbackT): any; + lastsave(...args: any[]): any; + type(args: any[], callback?: ResCallbackT): any; + type(...args: any[]): any; + multi(args: any[], callback?: ResCallbackT): Pipeline; + multi(...args: any[]): Pipeline; + exec(args: any[], callback?: ResCallbackT): any; + exec(...args: any[]): any; + discard(args: any[], callback?: ResCallbackT): any; + discard(...args: any[]): any; + sync(args: any[], callback?: ResCallbackT): any; + sync(...args: any[]): any; + flushdb(args: any[], callback?: ResCallbackT): any; + flushdb(...args: any[]): any; + flushall(args: any[], callback?: ResCallbackT): any; + flushall(...args: any[]): any; + sort(args: any[], callback?: ResCallbackT): any; + sort(...args: any[]): any; + info(args: any[], callback?: ResCallbackT): any; + info(...args: any[]): any; + monitor(args: any[], callback?: ResCallbackT): any; + monitor(...args: any[]): any; + ttl(args: any[], callback?: ResCallbackT): any; + ttl(...args: any[]): any; + persist(args: any[], callback?: ResCallbackT): any; + persist(...args: any[]): any; + slaveof(args: any[], callback?: ResCallbackT): any; + slaveof(...args: any[]): any; + debug(args: any[], callback?: ResCallbackT): any; + debug(...args: any[]): any; + config(args: any[], callback?: ResCallbackT): any; + config(...args: any[]): any; + subscribe(args: any[], callback?: ResCallbackT): any; + subscribe(...args: any[]): any; + unsubscribe(args: any[], callback?: ResCallbackT): any; + unsubscribe(...args: any[]): any; + psubscribe(args: any[], callback?: ResCallbackT): any; + psubscribe(...args: any[]): any; + punsubscribe(args: any[], callback?: ResCallbackT): any; + punsubscribe(...args: any[]): any; + publish(args: any[], callback?: ResCallbackT): any; + publish(...args: any[]): any; + watch(args: any[], callback?: ResCallbackT): any; + watch(...args: any[]): any; + unwatch(args: any[], callback?: ResCallbackT): any; + unwatch(...args: any[]): any; + cluster(args: any[], callback?: ResCallbackT): any; + cluster(...args: any[]): any; + restore(args: any[], callback?: ResCallbackT): any; + restore(...args: any[]): any; + migrate(args: any[], callback?: ResCallbackT): any; + migrate(...args: any[]): any; + dump(args: any[], callback?: ResCallbackT): any; + dump(...args: any[]): any; + object(args: any[], callback?: ResCallbackT): any; + object(...args: any[]): any; + client(args: any[], callback?: ResCallbackT): any; + client(...args: any[]): any; + eval(args: any[], callback?: ResCallbackT): any; + eval(...args: any[]): any; + evalsha(args: any[], callback?: ResCallbackT): any; + evalsha(...args: any[]): any; + script(args: any[], callback?: ResCallbackT): any; + script(...args: any[]): any; + script(key: string, callback?: ResCallbackT): any; + quit(args: any[], callback?: ResCallbackT): any; + quit(...args: any[]): any; + scan(...args: any[]): any; + scan(args: any[], callback?: ResCallbackT): any; + hscan(...args: any[]): any; + hscan(args: any[], callback?: ResCallbackT): any; + zscan(...args: any[]): any; + zscan(args: any[], callback?: ResCallbackT): any; + + pipeline(): Pipeline; + pipeline(commands: string[][]): Pipeline; + + scanStream(options?: IORedis.ScanStreamOption): NodeJS.EventEmitter; + hscanStream(key: string, options?: IORedis.ScanStreamOption): NodeJS.EventEmitter; + } + + interface Pipeline { + exec(callback?: ResCallbackT): any; + + get(args: any[], callback?: ResCallbackT): Pipeline; + get(...args: any[]): Pipeline; + set(args: any[], callback?: ResCallbackT): Pipeline; + set(...args: any[]): Pipeline; + setnx(args: any[], callback?: ResCallbackT): Pipeline; + setnx(...args: any[]): Pipeline; + setex(args: any[], callback?: ResCallbackT): Pipeline; + setex(...args: any[]): Pipeline; + append(args: any[], callback?: ResCallbackT): Pipeline; + append(...args: any[]): Pipeline; + strlen(args: any[], callback?: ResCallbackT): Pipeline; + strlen(...args: any[]): Pipeline; + del(args: any[], callback?: ResCallbackT): Pipeline; + del(...args: any[]): Pipeline; + exists(args: any[], callback?: ResCallbackT): Pipeline; + exists(...args: any[]): Pipeline; + setbit(args: any[], callback?: ResCallbackT): Pipeline; + setbit(...args: any[]): Pipeline; + getbit(args: any[], callback?: ResCallbackT): Pipeline; + getbit(...args: any[]): Pipeline; + setrange(args: any[], callback?: ResCallbackT): Pipeline; + setrange(...args: any[]): Pipeline; + getrange(args: any[], callback?: ResCallbackT): Pipeline; + getrange(...args: any[]): Pipeline; + substr(args: any[], callback?: ResCallbackT): Pipeline; + substr(...args: any[]): Pipeline; + incr(args: any[], callback?: ResCallbackT): Pipeline; + incr(...args: any[]): Pipeline; + decr(args: any[], callback?: ResCallbackT): Pipeline; + decr(...args: any[]): Pipeline; + mget(args: any[], callback?: ResCallbackT): Pipeline; + mget(...args: any[]): Pipeline; + rpush(...args: any[]): Pipeline; + lpush(args: any[], callback?: ResCallbackT): Pipeline; + lpush(...args: any[]): Pipeline; + rpushx(args: any[], callback?: ResCallbackT): Pipeline; + rpushx(...args: any[]): Pipeline; + lpushx(args: any[], callback?: ResCallbackT): Pipeline; + lpushx(...args: any[]): Pipeline; + linsert(args: any[], callback?: ResCallbackT): Pipeline; + linsert(...args: any[]): Pipeline; + rpop(args: any[], callback?: ResCallbackT): Pipeline; + rpop(...args: any[]): Pipeline; + lpop(args: any[], callback?: ResCallbackT): Pipeline; + lpop(...args: any[]): Pipeline; + brpop(args: any[], callback?: ResCallbackT): Pipeline; + brpop(...args: any[]): Pipeline; + brpoplpush(args: any[], callback?: ResCallbackT): Pipeline; + brpoplpush(...args: any[]): Pipeline; + blpop(args: any[], callback?: ResCallbackT): Pipeline; + blpop(...args: any[]): Pipeline; + llen(args: any[], callback?: ResCallbackT): Pipeline; + llen(...args: any[]): Pipeline; + lindex(args: any[], callback?: ResCallbackT): Pipeline; + lindex(...args: any[]): Pipeline; + lset(args: any[], callback?: ResCallbackT): Pipeline; + lset(...args: any[]): Pipeline; + lrange(args: any[], callback?: ResCallbackT): Pipeline; + lrange(...args: any[]): Pipeline; + ltrim(args: any[], callback?: ResCallbackT): Pipeline; + ltrim(...args: any[]): Pipeline; + lrem(args: any[], callback?: ResCallbackT): Pipeline; + lrem(...args: any[]): Pipeline; + rpoplpush(args: any[], callback?: ResCallbackT): Pipeline; + rpoplpush(...args: any[]): Pipeline; + sadd(args: any[], callback?: ResCallbackT): Pipeline; + sadd(...args: any[]): Pipeline; + srem(args: any[], callback?: ResCallbackT): Pipeline; + srem(...args: any[]): Pipeline; + smove(args: any[], callback?: ResCallbackT): Pipeline; + smove(...args: any[]): Pipeline; + sismember(args: any[], callback?: ResCallbackT): Pipeline; + sismember(...args: any[]): Pipeline; + scard(args: any[], callback?: ResCallbackT): Pipeline; + scard(...args: any[]): Pipeline; + spop(args: any[], callback?: ResCallbackT): Pipeline; + spop(...args: any[]): Pipeline; + srandmember(args: any[], callback?: ResCallbackT): Pipeline; + srandmember(...args: any[]): Pipeline; + sinter(args: any[], callback?: ResCallbackT): Pipeline; + sinter(...args: any[]): Pipeline; + sinterstore(args: any[], callback?: ResCallbackT): Pipeline; + sinterstore(...args: any[]): Pipeline; + sunion(args: any[], callback?: ResCallbackT): Pipeline; + sunion(...args: any[]): Pipeline; + sunionstore(args: any[], callback?: ResCallbackT): Pipeline; + sunionstore(...args: any[]): Pipeline; + sdiff(args: any[], callback?: ResCallbackT): Pipeline; + sdiff(...args: any[]): Pipeline; + sdiffstore(args: any[], callback?: ResCallbackT): Pipeline; + sdiffstore(...args: any[]): Pipeline; + smembers(args: any[], callback?: ResCallbackT): Pipeline; + smembers(...args: any[]): Pipeline; + zadd(args: any[], callback?: ResCallbackT): Pipeline; + zadd(...args: any[]): Pipeline; + zincrby(args: any[], callback?: ResCallbackT): Pipeline; + zincrby(...args: any[]): Pipeline; + zrem(args: any[], callback?: ResCallbackT): Pipeline; + zrem(...args: any[]): Pipeline; + zremrangebyscore(args: any[], callback?: ResCallbackT): Pipeline; + zremrangebyscore(...args: any[]): Pipeline; + zremrangebyrank(args: any[], callback?: ResCallbackT): Pipeline; + zremrangebyrank(...args: any[]): Pipeline; + zunionstore(args: any[], callback?: ResCallbackT): Pipeline; + zunionstore(...args: any[]): Pipeline; + zinterstore(args: any[], callback?: ResCallbackT): Pipeline; + zinterstore(...args: any[]): Pipeline; + zrange(args: any[], callback?: ResCallbackT): Pipeline; + zrange(...args: any[]): Pipeline; + zrangebyscore(args: any[], callback?: ResCallbackT): Pipeline; + zrangebyscore(...args: any[]): Pipeline; + zrevrangebyscore(args: any[], callback?: ResCallbackT): Pipeline; + zrevrangebyscore(...args: any[]): Pipeline; + zcount(args: any[], callback?: ResCallbackT): Pipeline; + zcount(...args: any[]): Pipeline; + zrevrange(args: any[], callback?: ResCallbackT): Pipeline; + zrevrange(...args: any[]): Pipeline; + zcard(args: any[], callback?: ResCallbackT): Pipeline; + zcard(...args: any[]): Pipeline; + zscore(args: any[], callback?: ResCallbackT): Pipeline; + zscore(...args: any[]): Pipeline; + zrank(args: any[], callback?: ResCallbackT): Pipeline; + zrank(...args: any[]): Pipeline; + zrevrank(args: any[], callback?: ResCallbackT): Pipeline; + zrevrank(...args: any[]): Pipeline; + hset(args: any[], callback?: ResCallbackT): Pipeline; + hset(...args: any[]): Pipeline; + hsetnx(args: any[], callback?: ResCallbackT): Pipeline; + hsetnx(...args: any[]): Pipeline; + hget(args: any[], callback?: ResCallbackT): Pipeline; + hget(...args: any[]): Pipeline; + hmset(args: any[], callback?: ResCallbackT): Pipeline; + hmset(key: string, hash: any, callback?: ResCallbackT): Pipeline; + hmset(...args: any[]): Pipeline; + hmget(args: any[], callback?: ResCallbackT): Pipeline; + hmget(...args: any[]): Pipeline; + hincrby(args: any[], callback?: ResCallbackT): Pipeline; + hincrby(...args: any[]): Pipeline; + hdel(args: any[], callback?: ResCallbackT): Pipeline; + hdel(...args: any[]): Pipeline; + hlen(args: any[], callback?: ResCallbackT): Pipeline; + hlen(...args: any[]): Pipeline; + hkeys(args: any[], callback?: ResCallbackT): Pipeline; + hkeys(...args: any[]): Pipeline; + hvals(args: any[], callback?: ResCallbackT): Pipeline; + hvals(...args: any[]): Pipeline; + hgetall(args: any[], callback?: ResCallbackT): Pipeline; + hgetall(...args: any[]): Pipeline; + hgetall(key: string, callback?: ResCallbackT): Pipeline; + hexists(args: any[], callback?: ResCallbackT): Pipeline; + hexists(...args: any[]): Pipeline; + incrby(args: any[], callback?: ResCallbackT): Pipeline; + incrby(...args: any[]): Pipeline; + decrby(args: any[], callback?: ResCallbackT): Pipeline; + decrby(...args: any[]): Pipeline; + getset(args: any[], callback?: ResCallbackT): Pipeline; + getset(...args: any[]): Pipeline; + mset(args: any[], callback?: ResCallbackT): Pipeline; + mset(...args: any[]): Pipeline; + msetnx(args: any[], callback?: ResCallbackT): Pipeline; + msetnx(...args: any[]): Pipeline; + randomkey(args: any[], callback?: ResCallbackT): Pipeline; + randomkey(...args: any[]): Pipeline; + select(args: any[], callback?: ResCallbackT): void; + select(...args: any[]): Pipeline; + move(args: any[], callback?: ResCallbackT): Pipeline; + move(...args: any[]): Pipeline; + rename(args: any[], callback?: ResCallbackT): Pipeline; + rename(...args: any[]): Pipeline; + renamenx(args: any[], callback?: ResCallbackT): Pipeline; + renamenx(...args: any[]): Pipeline; + expire(args: any[], callback?: ResCallbackT): Pipeline; + expire(...args: any[]): Pipeline; + expireat(args: any[], callback?: ResCallbackT): Pipeline; + expireat(...args: any[]): Pipeline; + keys(args: any[], callback?: ResCallbackT): Pipeline; + keys(...args: any[]): Pipeline; + dbsize(args: any[], callback?: ResCallbackT): Pipeline; + dbsize(...args: any[]): Pipeline; + auth(args: any[], callback?: ResCallbackT): void; + auth(...args: any[]): void; + ping(args: any[], callback?: ResCallbackT): Pipeline; + ping(...args: any[]): Pipeline; + echo(args: any[], callback?: ResCallbackT): Pipeline; + echo(...args: any[]): Pipeline; + save(args: any[], callback?: ResCallbackT): Pipeline; + save(...args: any[]): Pipeline; + bgsave(args: any[], callback?: ResCallbackT): Pipeline; + bgsave(...args: any[]): Pipeline; + bgrewriteaof(args: any[], callback?: ResCallbackT): Pipeline; + bgrewriteaof(...args: any[]): Pipeline; + shutdown(args: any[], callback?: ResCallbackT): Pipeline; + shutdown(...args: any[]): Pipeline; + lastsave(args: any[], callback?: ResCallbackT): Pipeline; + lastsave(...args: any[]): Pipeline; + type(args: any[], callback?: ResCallbackT): Pipeline; + type(...args: any[]): Pipeline; + multi(args: any[], callback?: ResCallbackT): Pipeline; + multi(...args: any[]): Pipeline; + exec(args: any[], callback?: ResCallbackT): Pipeline; + exec(...args: any[]): Pipeline; + discard(args: any[], callback?: ResCallbackT): Pipeline; + discard(...args: any[]): Pipeline; + sync(args: any[], callback?: ResCallbackT): Pipeline; + sync(...args: any[]): Pipeline; + flushdb(args: any[], callback?: ResCallbackT): Pipeline; + flushdb(...args: any[]): Pipeline; + flushall(args: any[], callback?: ResCallbackT): Pipeline; + flushall(...args: any[]): Pipeline; + sort(args: any[], callback?: ResCallbackT): Pipeline; + sort(...args: any[]): Pipeline; + info(args: any[], callback?: ResCallbackT): Pipeline; + info(...args: any[]): Pipeline; + monitor(args: any[], callback?: ResCallbackT): Pipeline; + monitor(...args: any[]): Pipeline; + ttl(args: any[], callback?: ResCallbackT): Pipeline; + ttl(...args: any[]): Pipeline; + persist(args: any[], callback?: ResCallbackT): Pipeline; + persist(...args: any[]): Pipeline; + slaveof(args: any[], callback?: ResCallbackT): Pipeline; + slaveof(...args: any[]): Pipeline; + debug(args: any[], callback?: ResCallbackT): Pipeline; + debug(...args: any[]): Pipeline; + config(args: any[], callback?: ResCallbackT): Pipeline; + config(...args: any[]): Pipeline; + subscribe(args: any[], callback?: ResCallbackT): Pipeline; + subscribe(...args: any[]): Pipeline; + unsubscribe(args: any[], callback?: ResCallbackT): Pipeline; + unsubscribe(...args: any[]): Pipeline; + psubscribe(args: any[], callback?: ResCallbackT): Pipeline; + psubscribe(...args: any[]): Pipeline; + punsubscribe(args: any[], callback?: ResCallbackT): Pipeline; + punsubscribe(...args: any[]): Pipeline; + publish(args: any[], callback?: ResCallbackT): Pipeline; + publish(...args: any[]): Pipeline; + watch(args: any[], callback?: ResCallbackT): Pipeline; + watch(...args: any[]): Pipeline; + unwatch(args: any[], callback?: ResCallbackT): Pipeline; + unwatch(...args: any[]): Pipeline; + cluster(args: any[], callback?: ResCallbackT): Pipeline; + cluster(...args: any[]): Pipeline; + restore(args: any[], callback?: ResCallbackT): Pipeline; + restore(...args: any[]): Pipeline; + migrate(args: any[], callback?: ResCallbackT): Pipeline; + migrate(...args: any[]): Pipeline; + dump(args: any[], callback?: ResCallbackT): Pipeline; + dump(...args: any[]): Pipeline; + object(args: any[], callback?: ResCallbackT): Pipeline; + object(...args: any[]): Pipeline; + client(args: any[], callback?: ResCallbackT): Pipeline; + client(...args: any[]): Pipeline; + eval(args: any[], callback?: ResCallbackT): Pipeline; + eval(...args: any[]): Pipeline; + evalsha(args: any[], callback?: ResCallbackT): Pipeline; + evalsha(...args: any[]): Pipeline; + quit(args: any[], callback?: ResCallbackT): Pipeline; + quit(...args: any[]): Pipeline; + scan(...args: any[]): Pipeline; + scan(args: any[], callback?: ResCallbackT): Pipeline; + hscan(...args: any[]): Pipeline; + hscan(args: any[], callback?: ResCallbackT): Pipeline; + zscan(...args: any[]): Pipeline; + zscan(args: any[], callback?: ResCallbackT): Pipeline; + } + + interface Cluster extends NodeJS.EventEmitter, Commander { + new (nodes: { host: string; port: number; }[], options?: IORedis.ClusterOptions): Redis; + connect(callback: Function): Promise; + disconnect(): void; + nodes(role: string): Redis[]; + } + + interface ResCallbackT { + (err: Error, res: R): void; + } + + interface RedisOptions { + port?: number; + host?: string; + /** + * 4 (IPv4) or 6 (IPv6), Defaults to 4. + */ + family?: number; + /** + * Local domain socket path. If set the port, host and family will be ignored. + */ + path?: string; + /** + * TCP KeepAlive on the socket with a X ms delay before start. Set to a non-number value to disable keepAlive. + */ + keepAlive?: number; + connectionName?: string; + /** + * If set, client will send AUTH command with the value of this option when connected. + */ + password?: string; + /** + * Database index to use. + */ + db?: number; + /** + * When a connection is established to the Redis server, the server might still be loading + * the database from disk. While loading, the server not respond to any commands. + * To work around this, when this option is true, ioredis will check the status of the Redis server, + * and when the Redis server is able to process commands, a ready event will be emitted. + */ + enableReadyCheck?: boolean; + keyPrefix?: string; + retryStrategy?: (times: number) => number; + reconnectOnError?: (error: Error) => boolean; + /** + * By default, if there is no active connection to the Redis server, commands are added to a queue + * and are executed once the connection is "ready" (when enableReadyCheck is true, "ready" means + * the Redis server has loaded the database from disk, otherwise means the connection to the Redis + * server has been established). If this option is false, when execute the command when the connection + * isn't ready, an error will be returned. + */ + enableOfflineQueue?: boolean; + /** + * The milliseconds before a timeout occurs during the initial connection to the Redis server. + * default: 10000. + */ + connectTimeout?: number; + /** + * After reconnected, if the previous connection was in the subscriber mode, client will auto re-subscribe these channels. + * default: true. + */ + autoResubscribe?: boolean; + /** + * If true, client will resend unfulfilled commands(e.g. block commands) in the previous connection when reconnected. + * default: true. + */ + autoResendUnfulfilledCommands?: boolean; + lazyConnect?: boolean; + tls?: { + ca: Buffer; + }; + sentinels?: { host: string; port: number; }[]; + name?: string; + /** + * Enable READONLY mode for the connection. Only available for cluster mode. + * default: false. + */ + readOnly?: boolean; + } + + interface ScanStreamOption { + match?: string; + count?: number; + } + + interface ClusterOptions { + clusterRetryStrategy?: (times: number) => number; + enableOfflineQueue?: boolean; + enableReadyCheck?: boolean; + scaleReads?: string; + maxRedirections?: number; + retryDelayOnFailover?: number; + retryDelayOnClusterDown?: number; + retryDelayOnTryAgain?: number; + redisOptions?: RedisOptions; + } +}