{{={= =}=}} import type { PrerenderFn } from "@wasp.sh/lib-vite-ssr/types"; import * as streamConsumers from "node:stream/consumers"; import assert from "node:assert/strict"; import { prerenderToNodeStream as reactPrerender } from "react-dom/static"; import { createStaticHandler, createStaticRouter, RouterProvider, } from "react-router"; import { Layout } from "wasp/client/app/layout"; import { WaspApp } from "wasp/client/app"; {=& routeObjects.importStatement =} const SPA_FALLBACK_FILE = "{= spaFallbackFile =}"; const prerenderApp: PrerenderFn = async (route, { clientEntrySrc }) => { const { query, dataRoutes } = createStaticHandler({= routeObjects.importIdentifier =}, { basename: "{= baseDir =}", }); const req = new Request(new URL(route, "http://localhost")); const context = await query(req); assert( !(context instanceof Response), "Redirects from React Router's `loader`s are not supported", ); const router = createStaticRouter(dataRoutes, context); const isFallbackPage = route === SPA_FALLBACK_FILE; function App() { return ( ) } const WASP_SSR_DATA: WaspSSRData = { isFallbackPage } const html = await reactPrerender(, { bootstrapScriptContent: `window.__WASP_SSR_DATA__=${JSON.stringify(WASP_SSR_DATA)};`, }) .then((result) => streamConsumers.text(result.prelude)) return html; } export default prerenderApp;