casterly
Version:
CLI for Casterly
30 lines (29 loc) • 965 B
JSX
import { Routes, Scripts, Styles } from '@casterly/components';
import { RootServer } from '@casterly/components/server';
import React from 'react';
import { renderToNodeStream } from 'react-dom/server';
const Document = () => {
return (<html>
<head>
<meta charSet="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<Styles />
</head>
<body>
<div id="root">
<Routes />
</div>
<Scripts />
</body>
</html>);
};
export default function (request, statusCode, headers, context) {
const content = renderToNodeStream(<RootServer context={context} url={request.url}>
<Document />
</RootServer>);
content.unshift('<!doctype html>');
return new Response(content, {
status: statusCode,
headers: Object.assign(Object.assign({}, Object.fromEntries(headers)), { 'content-type': 'text/html' }),
});
}