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