UNPKG

@modern-js/server-core

Version:

A Progressive React Framework for modern web development.

70 lines (69 loc) 2.39 kB
import { createRender } from "./render"; const injectRenderHandlerPlugin = ({ staticGenerate, cacheConfig }) => ({ name: "@modern-js/plugin-inject-render", setup(api) { return { async prepare() { const { distDirectory: pwd, routes, metaName } = api.useAppContext(); const config = api.useConfigContext(); const hookRunner = api.useHookRunners(); if (!routes) { return; } const onFallback = async (reason, utils, error) => { await hookRunner.fallback({ reason, ...utils, error }); }; const getRenderHandlerOptions = { pwd, routes, config, metaName, // TODO: support modern.server.ts cache config cacheConfig, staticGenerate, onFallback }; const render = await getRenderHandler(getRenderHandlerOptions); api.setAppContext({ ...api.useAppContext(), render, getRenderOptions: getRenderHandlerOptions }); } }; } }); async function getRenderHandler({ pwd, routes, config, cacheConfig, metaName, staticGenerate, onFallback }) { var _config_server, _config_server1, _config_security; const ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr; const ssrByEntries = (_config_server1 = config.server) === null || _config_server1 === void 0 ? void 0 : _config_server1.ssrByEntries; const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false; const forceCSRMap = /* @__PURE__ */ new Map(); if (ssrByEntries) { Object.entries(ssrByEntries).forEach(([entryName, ssrConfig2]) => { var _ssrConfig_forceCSR; forceCSRMap.set(entryName, typeof ssrConfig2 === "object" ? (_ssrConfig_forceCSR = ssrConfig2.forceCSR) !== null && _ssrConfig_forceCSR !== void 0 ? _ssrConfig_forceCSR : false : false); }); } const render = createRender({ routes, pwd, config, staticGenerate, cacheConfig, forceCSR, forceCSRMap, nonce: (_config_security = config.security) === null || _config_security === void 0 ? void 0 : _config_security.nonce, metaName: metaName || "modern-js", onFallback }); return render; } export { getRenderHandler, injectRenderHandlerPlugin };