@analogjs/vite-plugin-nitro
Version:
A Vite plugin for adding a nitro API server
58 lines (48 loc) • 1.56 kB
JavaScript
export const ssrRenderer = `
import { eventHandler, getResponseHeader } from 'h3';
// @ts-ignore
import renderer from '#analog/ssr';
// @ts-ignore
import template from '#analog/index';
export default eventHandler(async (event) => {
const noSSR = getResponseHeader(event, 'x-analog-no-ssr');
if (noSSR === 'true') {
return template;
}
const html = await renderer(event.node.req.url, template, {
req: event.node.req,
res: event.node.res,
});
return html;
});`;
export const clientRenderer = `
import { eventHandler } from 'h3';
// @ts-ignore
import template from '#analog/index';
export default eventHandler(async () => {
return template;
});
`;
export const apiMiddleware = `
import { eventHandler, proxyRequest } from 'h3';
import { useRuntimeConfig } from '#imports';
export default eventHandler(async (event) => {
const prefix = useRuntimeConfig().prefix;
const apiPrefix = \`\${prefix}/\${useRuntimeConfig().apiPrefix}\`;
if (event.node.req.url?.startsWith(apiPrefix)) {
const reqUrl = event.node.req.url?.replace(apiPrefix, '');
if (
event.node.req.method === 'GET' &&
// in the case of XML routes, we want to proxy the request so that nitro gets the correct headers
// and can render the XML correctly as a static asset
!event.node.req.url?.endsWith('.xml')
) {
return $fetch(reqUrl, { headers: event.node.req.headers });
}
return proxyRequest(event, reqUrl, {
// @ts-ignore
fetch: $fetch.native,
});
}
});`;
//# sourceMappingURL=renderers.js.map