This commit is contained in:
41666 2023-05-20 23:39:58 -04:00
parent 9dd0c78850
commit 49fffc20a3
19 changed files with 2551 additions and 12482 deletions

View file

@ -1,26 +1,38 @@
import type { EntryContext } from "@remix-run/node";
import { renderToString } from "react-dom/server";
/**
* By default, Remix will handle generating the HTTP Response for you.
* You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal`
* For more information, see https://remix.run/file-conventions/entry.server
*/
import type { EntryContext } from "@remix-run/cloudflare";
import { RemixServer } from "@remix-run/react";
import isbot from "isbot";
import { renderToReadableStream } from "react-dom/server";
import { collectStyles } from "./styletron";
export default function handleRequest(
export default async function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext
) {
let markup = renderToString(
<RemixServer context={remixContext} url={request.url} />
const body = await renderToReadableStream(
<RemixServer context={remixContext} url={request.url} />,
{
signal: request.signal,
onError(error: unknown) {
console.error(error);
responseStatusCode = 500;
},
}
);
// Add server-rendered styles
markup = markup.replace("__STYLES__", collectStyles());
if (isbot(request.headers.get("user-agent"))) {
await body.allReady;
}
responseHeaders.set("Content-Type", "text/html");
return new Response("<!DOCTYPE html>" + markup, {
status: responseStatusCode,
return new Response(body, {
headers: responseHeaders,
status: responseStatusCode,
});
}