in fusion-core/src/plugins/ssr.js [45:83]
export default function createSSRPlugin({
element,
ssrDecider,
ssrBodyTemplate,
}: {
element: any,
ssrDecider: SSRDeciderService,
ssrBodyTemplate?: SSRBodyTemplateService,
}) {
return async function ssrPlugin(ctx: Context, next: () => Promise<void>) {
if (!ssrDecider(ctx)) return next();
const template = {
htmlAttrs: {},
bodyAttrs: {},
title: '',
head: [],
body: [],
};
ctx.element = element;
ctx.rendered = '';
ctx.template = template;
ctx.type = 'text/html';
await next();
// Allow someone to override the ssr by setting ctx.body
// This is especially useful for things like ctx.redirect
if (ctx.body && ctx.respond !== false) {
return;
}
if (ssrBodyTemplate) {
ctx.body = ssrBodyTemplate(ctx);
} else {
ctx.body = legacySSRBodyTemplate(ctx);
}
};
}