fix typo in ticket template causing extraneous navLink to be displayed
[squeep-indie-auther] / server.js
1 'use strict';
2
3 const http = require('node:http');
4 const { AsyncLocalStorage } = require('node:async_hooks');
5
6 const Config = require('./config');
7 const DB = require('./src/db');
8 const Service = require('./src/service');
9 const Logger = require('./src/logger');
10 const { fileScope } = require('./src/common');
11 const _fileScope = fileScope(__filename);
12 const { version } = require('./package.json');
13
14 const PORT = parseInt(process.env.PORT || 3002);
15 const ADDR = process.env.LISTEN_ADDR || '127.0.0.1';
16
17 (async function main () {
18 const _scope = _fileScope('main');
19 let config, logger, db, service;
20 try {
21 const asyncLocalStorage = new AsyncLocalStorage();
22 config = new Config(process.env.NODE_ENV);
23 logger = new Logger(config.logger, { nodeId: config.nodeId }, asyncLocalStorage);
24 db = new DB(logger, config);
25 await db.initialize();
26 service = new Service(logger, db, config, asyncLocalStorage);
27 await service.initialize();
28
29 http.createServer(async (req, res) => {
30 await asyncLocalStorage.run({}, async () => {
31 await service.dispatch(req, res);
32 });
33 }).listen(PORT, ADDR, (err) => {
34 if (err) {
35 logger.error(_scope, 'error starting server', err);
36 throw err;
37 }
38 logger.info(_scope, 'server started', { version, listenAddress: ADDR, listenPort: PORT });
39 });
40 } catch (e) {
41 (logger || console).error(_scope, 'error starting server', e);
42 }
43 })();