aboutsummaryrefslogtreecommitdiffstats
path: root/app/webserver/webserver.ts
blob: 82caa06449d4b8223d78b6b830d9ccd936959c54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import express from 'express';
import { logger } from '../logger.js';
import { AddressInfo } from 'net';
import { PageDirectory } from '../builder/pages.js';

const app = express();

app.use(express.static(process.env.OUTPUT_DIR, { extensions: ['html'] }));

export const start = (pages: PageDirectory) => {
    const server = app.listen(process.env.WEBSERVER_PORT, () => {
        const address = server.address() as AddressInfo;
        logger.info(`Serving files from: ${process.env.OUTPUT_DIR}`);
        logger.info(`           Address: http://localhost:${address.port}`);
        logger.info(`                    ^C to stop`);
        logger.info('')
        
        if (process.env.WEBSERVER_AUTOREBUILD === 'true') {
            import('./watcher.js').then((watcher) => {
                watcher.start(pages);
            });
        }
    });

    const closeServer = () => {
        logger.info(`Stopping server...`);
        server.close();
    }

    const exitHandler = () => {
        if (server.listening) {
            closeServer();
        }
    }

    process.on('SIGINT', exitHandler);
    process.on('SIGTERM', exitHandler);

};