update dependency, fixes for logger update
[websub-hub] / server.js
1 'use strict';
2
3 const http = require('node:http');
4 const { AsyncLocalStorage } = require('node:async_hooks');
5 const DB = require('./src/db');
6 const Logger = require('./src/logger');
7 const Service = require('./src/service');
8 const Config = require('./config');
9 const { fileScope } = require('./src/common');
10 const { version } = require('./package.json');
11
12 const _scope = fileScope(__filename)('main');
13
14 const PORT = process.env.PORT || 4001;
15 const ADDR = process.env.LISTEN_ADDR || '127.0.0.1';
16
17 (async function main () {
18 let config, logger, db, service;
19 try {
20 const asyncLocalStorage = new AsyncLocalStorage();
21 config = new Config(process.env.NODE_ENV);
22 logger = new Logger(config.logger, { nodeId: config.nodeId }, asyncLocalStorage);
23 db = new DB(logger, config);
24 await db.initialize();
25 service = new Service(logger, db, config, asyncLocalStorage);
26
27 http.createServer(async (req, res) => {
28 await asyncLocalStorage.run({}, async () => {
29 await service.dispatch(req, res);
30 });
31 }).listen(PORT, ADDR, (err) => {
32 if (err) {
33 logger.error(_scope, 'error creating server', err);
34 throw err;
35 }
36 logger.info(_scope, 'server started', { version, listenAddress: ADDR, listenPort: PORT });
37 });
38 } catch (e) {
39 (logger || console).error(_scope, 'error starting server', e);
40 db?.listener && await db.listener.stop();
41 }
42 })();