master
1import cookieParser from "cookie-parser";
2import express from "express";
3import "express-async-errors";
4import expressWs from "express-ws";
5import { ZodError } from "zod";
6
7declare global {
8 namespace Express {
9 interface Request {
10 sundown: {
11 user?: string;
12 };
13 }
14 }
15}
16
17const { app } = expressWs(express());
18app.use(express.json());
19app.use(cookieParser());
20
21app.use("/assets", express.static("dist-ui/assets", { maxAge: "1y" }));
22app.use((req, res, next) => {
23 if (req.path.startsWith("/api")) {
24 return next();
25 }
26
27 return res.sendFile("dist-ui/index.html", { root: "." });
28});
29
30app.use("/api", (await import("./api.js")).apiRouter);
31
32app.use((err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => {
33 console.error(err);
34 if (err instanceof ZodError) {
35 res.status(400).json(err.errors);
36 } else {
37 res.status(500).send("Internal server error");
38 }
39});
40
41app.listen(80, () => {
42 console.log("Listening on port 80");
43});