UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

33 lines (32 loc) 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _emitter = require("@ima/server/lib/emitter"); module.exports = function createReactRenderer({ emitter }) { emitter.prependListener(_emitter.Event.BeforeError, (event)=>{ const context = event.context; if (context?.response?.viewAdapter) { delete context.response.viewAdapter; } }); emitter.prependListener(_emitter.Event.BeforeResponse, (event)=>{ // Skip rendering for SPA prefetch if (event.context.response.spaPrefetch) { return; } const { documentView, documentViewProps, react, reactDOM, viewAdapter } = event.context.response; if (!viewAdapter) { return; } // Render current page to string const page = reactDOM.renderToString(viewAdapter); // Render document view (base HTML) to string const appMarkup = reactDOM.renderToStaticMarkup(react.createElement(documentView, { ...documentViewProps, page })); event.context.response.content = '<!doctype html>\n' + appMarkup; }); }; //# sourceMappingURL=server.js.map