]> Untitled Git - lemmy-ui.git/blob - src/server/index.tsx
f100c979e18ee90aaa293b98e6ed9779828bee8f
[lemmy-ui.git] / src / server / index.tsx
1 import cookieParser = require('cookie-parser');
2 import * as serialize from 'serialize-javascript';
3 import * as express from 'express';
4 import { StaticRouter } from 'inferno-router';
5 import { renderToString } from 'inferno-server';
6 import path = require('path');
7 import App from '../client/components/App/App';
8 const server = express();
9 const port = 1234;
10
11 server.use(express.json());
12 server.use(express.urlencoded({ extended: false }));
13 server.use('/static', express.static(path.resolve('./dist/client')));
14
15 server.use(cookieParser());
16
17 server.get('/*', (req, res) => {
18   const context = {} as any;
19   const isoData = {
20     name: 'fishing sux',
21   };
22
23   const wrapper = (
24     <StaticRouter location={req.url} context={context}>
25       <App name={isoData.name} />
26     </StaticRouter>
27   );
28   if (context.url) {
29     return res.redirect(context.url);
30   }
31
32   res.send(`
33    <!doctype html>
34    <html>
35        <head>
36        <title>My Universal App</title>
37        <script>window.isoData = ${serialize(isoData)}</script>      
38        </head>
39        <body>
40            <div id='root'>${renderToString(wrapper)}</div>
41            <script src='./static/bundle.js'></script>
42        </body>
43    </html>
44 `);
45 });
46 let Server = server.listen(port, () => {
47   console.log(`http://localhost:${port}`);
48 });
49
50 /**
51  * Used to restart server by fuseBox
52  */
53 export async function shutdown() {
54   Server.close();
55   Server = undefined;
56 }