import {HTTPKernel} from "../HTTPKernel"; import {Request} from "../../lifecycle/Request"; import {ActivatedRoute} from "../../routing/ActivatedRoute"; import {ResponseObject} from "../../routing/Route"; import {AbstractResolvedRouteHandlerHTTPModule} from "./AbstractResolvedRouteHandlerHTTPModule"; import {PersistSessionHTTPModule} from "./PersistSessionHTTPModule"; export class ExecuteResolvedRoutePostflightHTTPModule extends AbstractResolvedRouteHandlerHTTPModule { public static register(kernel: HTTPKernel) { kernel.register(this).before(PersistSessionHTTPModule) } public async apply(request: Request) { if ( request.hasInstance(ActivatedRoute) ) { const route = request.make(ActivatedRoute) const postflight = route.postflight for ( const handler of postflight ) { const result: ResponseObject = await handler(request) if ( typeof result !== "undefined" ) { await this.applyResponseObject(result, request) request.response.blockingWriteback(true) } } } return request } }