UNPKG

nitropack

Version:

Build and Deploy Universal JavaScript Servers

33 lines (32 loc) • 1.28 kB
import { eventHandler, setResponseStatus } from "h3"; import { useNitroApp } from "./app.mjs"; export function defineRenderHandler(handler) { return eventHandler(async (event) => { if (event.node.req.url.endsWith("/favicon.ico")) { event.node.res.setHeader("Content-Type", "image/x-icon"); event.node.res.end( "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" ); return; } const response = await handler(event); if (!response) { if (!event.node.res.writableEnded) { event.node.res.statusCode = event.node.res.statusCode === 200 ? 500 : event.node.res.statusCode; event.node.res.end( "No response returned from render handler: " + event.node.req.url ); } return; } const nitroApp = useNitroApp(); await nitroApp.hooks.callHook("render:response", response, { event }); if (!event.node.res.headersSent && response.headers) { for (const header in response.headers) { event.node.res.setHeader(header, response.headers[header]); } setResponseStatus(event, response.statusCode, response.statusMessage); } return typeof response.body === "string" ? response.body : JSON.stringify(response.body); }); }