From 65988eac2a57df2d7183ff6ceccb8989bfcaa085 Mon Sep 17 00:00:00 2001 From: Christian Tellnes Date: Sun, 22 Mar 2020 21:46:30 +0100 Subject: [PATCH] Improve types for Primus (#43297) --- types/primus/index.d.ts | 29 +++++++++++++++++------------ types/primus/primus-tests.ts | 5 +++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/types/primus/index.d.ts b/types/primus/index.d.ts index 7f45ffde11..6533d0f81a 100644 --- a/types/primus/index.d.ts +++ b/types/primus/index.d.ts @@ -145,6 +145,20 @@ declare namespace Primus { on(event: 'end', handler: () => void): this; } + interface ReconnectOpts { + max?: number; + min?: number; + retries?: number | null; + 'reconnect timeout'?: number; + factor?: number; + } + interface ReconnectEventOpts extends Required { + start: number; + duration: number; + attempt: number; + backoff: boolean; + scheduled: number; + } interface SocketOptions { // https://github.com/unshiftio/recovery reconnect?: { @@ -173,18 +187,9 @@ declare namespace Primus { emits: emits.emits; id(fn: (id: string) => void): this; - on( - event: - | 'open' - | 'reconnect' - | 'reconnect scheduled' - | 'reconnected' - | 'reconnect timeout' - | 'reconnect failed' - | 'end', - handler: () => void, - ): this; - + on(event: 'open' | 'end', handler: () => void): this; + on(event: 'reconnect' | 'reconnect scheduled' | 'reconnected', handler: (opts: ReconnectEventOpts) => void): this; + on(event: 'reconnect timeout' | 'reconnect failed', handler: (err: Error, opts: ReconnectEventOpts) => void): this; on(event: 'data', handler: (message: any) => void): this; on(event: 'error', handler: (err: Error) => void): this; } diff --git a/types/primus/primus-tests.ts b/types/primus/primus-tests.ts index 1dc04c8e40..5ee1464c76 100644 --- a/types/primus/primus-tests.ts +++ b/types/primus/primus-tests.ts @@ -16,3 +16,8 @@ const client = new Socket('ws://www.example.com'); client.on('open', () => { client.write('foo'); }); + +client.on('reconnect scheduled', (opts) => { + console.log('Reconnecting in %d ms', opts.scheduled); + console.log('This is attempt %d out of %d', opts.attempt, opts.retries); +});