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