@demobook/server
Version:
## Setup
33 lines (30 loc) • 682 B
text/typescript
interface Params {
meta: string;
assets: string;
body: string;
style: string;
preloadedState: string;
}
const escape = (str: string) => {
return str
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
};
export const renderFullPage = ({ meta, assets, body, style, preloadedState }: Params) => {
return `<!DOCTYPE html>
<html>
<head>
${meta}
${style}
</head>
<body>
${body}
<script id="initial-data" type="text/plain" data-json="${escape(preloadedState)}"></script>
${assets}
</body>
</html>
`.trim();
};