Add support for middleware

This commit is contained in:
2021-03-09 09:42:19 -06:00
parent 2868ca1910
commit 4f23ac7156
19 changed files with 319 additions and 31 deletions

View File

@@ -1,8 +1,12 @@
import {AppClass} from "../../lifecycle/AppClass";
import {Collection} from "@extollo/util"
import {AppClass} from "../../lifecycle/AppClass"
import {RouteHandler} from "./Route"
export class RouteGroup extends AppClass {
private static currentGroupNesting: RouteGroup[] = []
protected middlewares: Collection<{ stage: 'pre' | 'post', handler: RouteHandler }> = new Collection<{stage: "pre" | "post"; handler: RouteHandler}>()
public static getCurrentGroupHierarchy(): RouteGroup[] {
return [...this.currentGroupNesting]
}
@@ -11,4 +15,26 @@ export class RouteGroup extends AppClass {
public readonly group: () => void | Promise<void>,
public readonly prefix: string
) { super() }
pre(middleware: RouteHandler) {
this.middlewares.push({
stage: 'pre',
handler: middleware
})
return this
}
post(middleware: RouteHandler) {
this.middlewares.push({
stage: 'post',
handler: middleware,
})
return this
}
getGroupMiddlewareDefinitions() {
return this.middlewares
}
}