diff --git a/redis/redis-tests.ts b/redis/redis-tests.ts index 5acb02465e..aadaa40f48 100644 --- a/redis/redis-tests.ts +++ b/redis/redis-tests.ts @@ -27,6 +27,28 @@ redis.print(err, value); client = redis.createClient(num, str, options); +// Test the `retry_strategy` property +// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- +function retryStrategyNumber(options: redis.RetryStrategyOptions): number { + // Ensure that the properties of RetryStrategyOptions are resilient to breaking change. + // If the properties of the interface changes, the variables below will also need to be adapted. + var error: Error = options.error; + var total_retry_time: number = options.total_retry_time; + var times_connected: number = options.times_connected; + var attempt: number = options.attempt; + return 5000; +} +function retryStrategyError(options: redis.RetryStrategyOptions): Error { + return new Error('Foo'); +} +client = redis.createClient({ + retry_strategy: retryStrategyNumber +}); +client = redis.createClient({ + retry_strategy: retryStrategyError +}); +// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- + bool = client.connected; num = client.retry_delay; num = client.retry_backoff; diff --git a/redis/redis.d.ts b/redis/redis.d.ts index 6dd257bd9b..de52145261 100644 --- a/redis/redis.d.ts +++ b/redis/redis.d.ts @@ -34,6 +34,17 @@ declare module "redis" { versions: number[]; } + export interface RetryStrategyOptions { + error: Error; + total_retry_time: number; + times_connected: number; + attempt: number; + } + + export interface RetryStrategy { + (options: RetryStrategyOptions): number | Error; + } + export interface ClientOpts { parser?: string; return_buffers?: boolean; @@ -50,6 +61,7 @@ declare module "redis" { family?: string; command_queue_high_water?: number; command_queue_low_water?: number; + retry_strategy?: RetryStrategy; } export interface RedisClient extends NodeJS.EventEmitter {