| 123 | * @param mw Middleware arrays |
| 124 | */ |
| 125 | export const pushMiddleware = <Req extends any = any, Res extends any = any>(mw: Middleware[]) => ({ |
| 126 | path, |
| 127 | handler, |
| 128 | method, |
| 129 | handlers, |
| 130 | type |
| 131 | }: MethodHandler<Req, Res> & { |
| 132 | method?: Method |
| 133 | handlers?: RouterHandler<Req, Res>[] |
| 134 | }) => { |
| 135 | const m = createMiddlewareFromRoute<Req, Res>({ path, handler, method, type }) |
| 136 | |
| 137 | let waresFromHandlers: { handler: Handler<Req, Res> }[] = [] |
| 138 | |
| 139 | if (handlers) { |
| 140 | waresFromHandlers = handlers.flat().map((handler) => |
| 141 | createMiddlewareFromRoute<Req, Res>({ |
| 142 | path, |
| 143 | handler, |
| 144 | method, |
| 145 | type |
| 146 | }) |
| 147 | ) |
| 148 | } |
| 149 | |
| 150 | for (const mdw of [m, ...waresFromHandlers]) mw.push({ ...mdw, type }) |
| 151 | } |
| 152 | |
| 153 | /** |
| 154 | * tinyhttp Router. Manages middleware and has HTTP methods aliases, e.g. `app.get`, `app.put` |