import {CallContext} from './CallContext'; import {ServerMiddleware, ServerMiddlewareCall} from './ServerMiddleware'; export function composeServerMiddleware( middleware1: ServerMiddleware, middleware2: ServerMiddleware, ): ServerMiddleware { return ( call: ServerMiddlewareCall< Request, Response, Ext1 & Ext2 & RequiredCallContextExt >, context: CallContext & RequiredCallContextExt, ) => { return middleware1( { ...call, next: (request, context1) => { return middleware2( {...call, request} as any, context1, ) as any; }, }, context, ); }; }