1import type { Server as ConnectServer, HandleFunction } from 'connect'; 2 3/** 4 * Prepends a `middleware` to current server middleware stack. 5 * 6 * @param app connect app server instance 7 * @param middleware target middleware to be prepended 8 */ 9export function prependMiddleware(app: ConnectServer, middleware: HandleFunction) { 10 app.use(middleware); 11 app.stack.unshift(app.stack.pop()!); 12} 13 14/** 15 * Replaces source middleware with a new middlware in connect app 16 * 17 * @param app connect app server instance 18 * @param sourceMiddleware source middlware to be matched and replaces 19 * @param targetMiddleware new middlware 20 */ 21export function replaceMiddlewareWith( 22 app: ConnectServer, 23 sourceMiddleware: HandleFunction, 24 targetMiddleware: HandleFunction 25) { 26 const item = app.stack.find((middleware) => middleware.handle === sourceMiddleware); 27 if (item) { 28 item.handle = targetMiddleware; 29 } 30} 31