Files
discord-clone/node_modules/nitropack/dist/runtime/renderer.mjs
2023-01-03 09:29:04 -06:00

34 lines
1.3 KiB
JavaScript

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