import express, { Router } from 'express'; import { Log } from 'lib/Log'; import type { Server } from 'http'; const log = Log.child({ module: 'http', }); interface HTTPState { server?: Server; } const state: HTTPState = { server: undefined, }; export const getServer = (): HTTPState['server'] => state.server; export function connect(host: string, port: number) { const httpAddress = `${host}:${port}`; const app = express(); // Make sure we're using the forwarded proxy headers app.enable('trust proxy'); // Parse incoming body app.use(express.urlencoded({ extended: true })); app.use(express.json({})); // Middleware /// API // Default routes //// Health Check app.get('/', (req, res) => { return res.status(200).send('OK'); }); return new Promise((resolve, reject) => { try { // eslint-disable-next-line @typescript-eslint/no-shadow const server = app.listen(port, host, () => { log.info('HTTP started @ %s', httpAddress); state.server = server; resolve(); }); } catch (err) { log.fatal('Failed to start HTTP', err); reject(err); } }); } export default connect;