export default function getRendererPlugin()

in fusion-core/src/plugins/server-renderer.js [13:38]


export default function getRendererPlugin({
  render,
  timing,
}: {
  render: any,
  timing: any,
}) {
  return async function renderer(ctx: Context, next: () => Promise<void>) {
    const timer = timing.from(ctx);
    timer.downstream.resolve(now() - timer.start);

    let renderTime = null;
    if (ctx.element && !ctx.body && ctx.respond !== false) {
      const renderStart = now();
      ctx.rendered = await render(ctx.element, ctx);
      renderTime = now() - renderStart;
    }

    timer.upstreamStart = now();
    await next();

    if (ctx.element && typeof renderTime === 'number') {
      timer.render.resolve(renderTime);
    }
  };
}