import { jsx as _jsx } from "react/jsx-runtime"; import { renderToString } from "react-dom/server"; import grabContants from "../../../utils/grab-constants"; import EJSON from "../../../utils/ejson"; import isDevelopment from "../../../utils/is-development"; import grabWebPageHydrationScript from "./grab-web-page-hydration-script"; import grabWebMetaHTML from "./grab-web-meta-html"; import { log } from "../../../utils/log"; import { AppData } from "../../../data/app-data"; import { readFileSync } from "fs"; import path from "path"; let _reactVersion = "19"; try { _reactVersion = JSON.parse(readFileSync(path.join(process.cwd(), "node_modules/react/package.json"), "utf-8")).version; } catch { } export default async function genWebHTML({ component, pageProps, bundledMap, head: Head, module, meta, routeParams, debug, }) { const { ClientRootElementIDName, ClientWindowPagePropsName } = grabContants(); if (debug) { log.info("component", component); } const componentHTML = renderToString(component); if (debug) { log.info("componentHTML", componentHTML); } const headHTML = Head ? renderToString(_jsx(Head, { serverRes: pageProps, ctx: routeParams })) : ""; let html = `\n`; html += `\n`; html += ` \n`; html += ` \n`; html += ` \n`; if (meta) { html += ` ${grabWebMetaHTML({ meta })}\n`; } if (bundledMap?.css_path) { html += ` \n`; } const serializedProps = (EJSON.stringify(pageProps || {}) || "{}").replace(/<\//g, "<\\/"); html += ` \n`; if (bundledMap?.path) { const dev = isDevelopment(); const devSuffix = dev ? "?dev" : ""; const importMap = JSON.stringify({ imports: { react: `https://esm.sh/react@${_reactVersion}${devSuffix}`, "react-dom": `https://esm.sh/react-dom@${_reactVersion}${devSuffix}`, "react-dom/client": `https://esm.sh/react-dom@${_reactVersion}/client${devSuffix}`, "react/jsx-runtime": `https://esm.sh/react@${_reactVersion}/jsx-runtime${devSuffix}`, "react/jsx-dev-runtime": `https://esm.sh/react@${_reactVersion}/jsx-dev-runtime${devSuffix}`, }, }); html += ` \n`; html += ` \n`; } if (isDevelopment()) { html += `\n`; } if (headHTML) { html += ` ${headHTML}\n`; } html += ` \n`; html += ` \n`; html += `
${componentHTML}
\n`; html += ` \n`; html += `\n`; return html; }