UNPKG

vite-plugin-react-pages

Version:

<p> <a href="https://www.npmjs.com/package/vite-plugin-react-pages" target="_blank" rel="noopener"><img src="https://img.shields.io/npm/v/vite-plugin-react-pages.svg" alt="npm package" /></a> </p>

1 lines 3.38 kB
{"version":3,"file":"ssg-server.mjs","sources":["../../../src/client/entries/ssg-server.tsx"],"sourcesContent":["/**\n * This is the entry for static-site-generation(ssg)'s server side render.\n * Used in: \"ssr mode\"\n * (\"ssr\" is used in many places in this project to refer to \"ssg\". Should have called it ssg mode...)\n */\n\nimport React from 'react'\nimport ReactDOM from 'react-dom/server'\nimport { StaticRouter } from 'react-router-dom/server'\n\nimport App from '../App'\nimport { dataCacheCtx } from '../ctx'\nimport type { PagesLoaded, SSRPlugin } from '../../../clientTypes'\n\nimport ssrData from '/@react-pages/ssrData'\n\nexport { ssrData }\n\n// put all page data in cache, so that we don't need to load it in ssr\nconst dataCache: PagesLoaded = ssrData\n\nexport function renderToString(url: string, ssrPlugins?: SSRPlugin[]) {\n let ssrApp: React.ReactNode = <SSRApp url={url} />\n\n const extractStyleArr: (() => string)[] = []\n ssrPlugins?.forEach((ssrPlugin) => {\n const { app, extractStyle } = ssrPlugin.prepare(ssrApp)\n if (extractStyle) extractStyleArr.push(extractStyle)\n if (app) ssrApp = app\n })\n\n const contentText = ReactDOM.renderToString(ssrApp)\n\n const styles = extractStyleArr\n .map((extractStyle) => {\n return extractStyle()\n })\n .filter(Boolean)\n const styleText = styles.join('\\n')\n\n return {\n contentText,\n styleText,\n }\n}\n\nfunction SSRApp({ url }: { url: string }) {\n return (\n <StaticRouter\n basename={import.meta.env.BASE_URL?.replace(/\\/$/, '')}\n location={url}\n >\n <dataCacheCtx.Provider value={dataCache}>\n <App />\n </dataCacheCtx.Provider>\n </StaticRouter>\n )\n}\n"],"names":["dataCache","ssrData","renderToString","url","ssrPlugins","ssrApp","_jsx","SSRApp","extractStyleArr","forEach","ssrPlugin","app","extractStyle","prepare","push","contentText","ReactDOM","styles","map","filter","Boolean","styleText","join","StaticRouter","basename","import","meta","env","BASE_URL","replace","location","children","dataCacheCtx","Provider","value","App"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;;;AAcA;AACA,MAAMA,SAAsB,GAAGC,OAAO,CAAA;AAE/B,SAASC,cAAcA,CAACC,GAAW,EAAEC,UAAwB,EAAE;AACpE,EAAA,IAAIC,MAAuB,gBAAGC,GAAA,CAACC,MAAM,EAAA;AAACJ,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAE,CAAC,CAAA;EAElD,MAAMK,eAAiC,GAAG,EAAE,CAAA;AAC5CJ,EAAAA,UAAU,EAAEK,OAAO,CAAEC,SAAS,IAAK;IACjC,MAAM;MAAEC,GAAG;AAAEC,MAAAA,YAAAA;AAAa,KAAC,GAAGF,SAAS,CAACG,OAAO,CAACR,MAAM,CAAC,CAAA;AACvD,IAAA,IAAIO,YAAY,EAAEJ,eAAe,CAACM,IAAI,CAACF,YAAY,CAAC,CAAA;AACpD,IAAA,IAAID,GAAG,EAAEN,MAAM,GAAGM,GAAG,CAAA;AACvB,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMI,WAAW,GAAGC,QAAQ,CAACd,cAAc,CAACG,MAAM,CAAC,CAAA;AAEnD,EAAA,MAAMY,MAAM,GAAGT,eAAe,CAC3BU,GAAG,CAAEN,YAAY,IAAK;IACrB,OAAOA,YAAY,EAAE,CAAA;AACvB,GAAC,CAAC,CACDO,MAAM,CAACC,OAAO,CAAC,CAAA;AAClB,EAAA,MAAMC,SAAS,GAAGJ,MAAM,CAACK,IAAI,CAAC,IAAI,CAAC,CAAA;EAEnC,OAAO;IACLP,WAAW;AACXM,IAAAA,SAAAA;GACD,CAAA;AACH,CAAA;AAEA,SAASd,MAAMA,CAAC;AAAEJ,EAAAA,GAAAA;AAAqB,CAAC,EAAE;EACxC,oBACEG,GAAA,CAACiB,YAAY,EAAA;AACXC,IAAAA,QAAQ,EAAEC,MAAM,CAACC,IAAI,CAACC,GAAG,CAACC,QAAQ,EAAEC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAE;AACvDC,IAAAA,QAAQ,EAAE3B,GAAI;AAAA4B,IAAAA,QAAA,eAEdzB,GAAA,CAAC0B,YAAY,CAACC,QAAQ,EAAA;AAACC,MAAAA,KAAK,EAAElC,SAAU;AAAA+B,MAAAA,QAAA,eACtCzB,GAAA,CAAC6B,GAAG,EAAE,EAAA,CAAA;KACe,CAAA;AAAC,GACZ,CAAC,CAAA;AAEnB;;;;"}