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' /** * HTTP kernel module that executes the postflight handlers for the route. * * Usually, this is post middleware. */ export class ExecuteResolvedRoutePostflightHTTPModule extends AbstractResolvedRouteHandlerHTTPModule { public static register(kernel: HTTPKernel): void { kernel.register(this).before(PersistSessionHTTPModule) } public async apply(request: Request): Promise { 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 } }