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