import {CallOptions} from './CallOptions'; import {ClientMiddleware, ClientMiddlewareCall} from './ClientMiddleware'; export function composeClientMiddleware( middleware1: ClientMiddleware, middleware2: ClientMiddleware, ): ClientMiddleware { return ( call: ClientMiddlewareCall< Request, Response, Ext1 & Ext2 & RequiredCallOptionsExt >, options: CallOptions & Partial, ) => { return middleware2( { ...call, next: (request, options2) => { return middleware1( {...call, request} as any, options2, ) as any; }, }, options, ); }; }