From 0f1a6d9d895323c7b1618a40c140438323dcd543 Mon Sep 17 00:00:00 2001 From: Carlos Fuentes Date: Fri, 15 Mar 2024 12:24:42 +0100 Subject: [PATCH 1/3] feat: add types for composed dispatchers --- test/types/dispatcher.test-d.ts | 6 ++++++ types/dispatcher.d.ts | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/test/types/dispatcher.test-d.ts b/test/types/dispatcher.test-d.ts index 275d88c4af9..245ee218d59 100644 --- a/test/types/dispatcher.test-d.ts +++ b/test/types/dispatcher.test-d.ts @@ -127,6 +127,12 @@ expectAssignable(new Dispatcher()) declare const { body }: Dispatcher.ResponseData; +// compose +{ + expectAssignable(new Dispatcher().compose(new Dispatcher().dispatch, new Dispatcher().dispatch)) + expectAssignable(new Dispatcher().compose([new Dispatcher().dispatch, new Dispatcher().dispatch])) +} + { // body mixin tests expectType(body.body) diff --git a/types/dispatcher.d.ts b/types/dispatcher.d.ts index 08c59ca0718..1ebb9485d62 100644 --- a/types/dispatcher.d.ts +++ b/types/dispatcher.d.ts @@ -18,6 +18,9 @@ declare class Dispatcher extends EventEmitter { /** Starts two-way communications with the requested resource. */ connect(options: Dispatcher.ConnectOptions): Promise; connect(options: Dispatcher.ConnectOptions, callback: (err: Error | null, data: Dispatcher.ConnectData) => void): void; + /** Compose a chain of dispatchers */ + compose(dispatchers: Dispatcher['dispatch'][]): Dispatcher.ComposedDispatcher; + compose(...dispatchers: Dispatcher['dispatch'][]): Dispatcher.ComposedDispatcher; /** Performs an HTTP request. */ request(options: Dispatcher.RequestOptions): Promise; request(options: Dispatcher.RequestOptions, callback: (err: Error | null, data: Dispatcher.ResponseData) => void): void; @@ -93,6 +96,12 @@ declare class Dispatcher extends EventEmitter { } declare namespace Dispatcher { + export interface ComposedDispatcher { + close: Dispatcher['close']; + destroy: Dispatcher['destroy']; + dispatch: Dispatcher['dispatch']; + } + export type DispatcherInterceptor = (dispatch: Dispatcher['dispatch']) => Dispatcher['dispatch']; export interface DispatchOptions { origin?: string | URL; path: string; From 09481f46b9cd80d75eaaac55c83dc880fca63736 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 19 Mar 2024 10:06:20 +0100 Subject: [PATCH 2/3] Update types/dispatcher.d.ts --- types/dispatcher.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/dispatcher.d.ts b/types/dispatcher.d.ts index 1ebb9485d62..00ec290744b 100644 --- a/types/dispatcher.d.ts +++ b/types/dispatcher.d.ts @@ -96,7 +96,7 @@ declare class Dispatcher extends EventEmitter { } declare namespace Dispatcher { - export interface ComposedDispatcher { + export interface ComposedDispatcher extends Dispatcher { close: Dispatcher['close']; destroy: Dispatcher['destroy']; dispatch: Dispatcher['dispatch']; From 65d3d6631b82c82fc697f61bc5517da557aca5de Mon Sep 17 00:00:00 2001 From: Carlos Fuentes Date: Tue, 19 Mar 2024 22:06:35 +0100 Subject: [PATCH 3/3] refactor: adjust --- types/dispatcher.d.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/types/dispatcher.d.ts b/types/dispatcher.d.ts index 00ec290744b..e632e0e921a 100644 --- a/types/dispatcher.d.ts +++ b/types/dispatcher.d.ts @@ -96,11 +96,7 @@ declare class Dispatcher extends EventEmitter { } declare namespace Dispatcher { - export interface ComposedDispatcher extends Dispatcher { - close: Dispatcher['close']; - destroy: Dispatcher['destroy']; - dispatch: Dispatcher['dispatch']; - } + export interface ComposedDispatcher extends Dispatcher {} export type DispatcherInterceptor = (dispatch: Dispatcher['dispatch']) => Dispatcher['dispatch']; export interface DispatchOptions { origin?: string | URL;