Add support for middleware
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user