Add support for view engines, PNPM

This commit is contained in:
2021-03-08 18:07:55 -06:00
parent 4ecada6be8
commit b820b35b70
12 changed files with 814 additions and 3 deletions

View File

@@ -0,0 +1,22 @@
import {Container} from "@extollo/di";
import {ResponseFactory} from "./ResponseFactory";
import {Request} from "../lifecycle/Request";
import {ViewEngine} from "../../views/ViewEngine";
export function view(name: string, data?: {[key: string]: any}): ViewResponseFactory {
return new ViewResponseFactory(name, data)
}
export class ViewResponseFactory extends ResponseFactory {
constructor(
public readonly viewName: string,
public readonly data?: {[key: string]: any}
) { super() }
public async write(request: Request) {
const viewEngine = <ViewEngine> Container.getContainer().make(ViewEngine)
request.response.body = await viewEngine.renderByName(this.viewName, this.data || {})
request.response.setHeader('Content-Type', 'text/html; charset=utf-8')
return request
}
}