c12d19a778ebb195261b49938a8a014b1c89626b
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');
12 const _scope
= fileScope(__filename
)('main');
14 const PORT
= process
.env
.PORT
|| 4001;
15 const ADDR
= process
.env
.LISTEN_ADDR
|| '127.0.0.1';
17 (async
function main () {
18 let config
, logger
, db
, service
;
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
);
27 http
.createServer(async (req
, res
) => {
28 await asyncLocalStorage
.run({}, async () => {
29 await service
.dispatch(req
, res
);
31 }).listen(PORT
, ADDR
, (err
) => {
33 logger
.error(_scope
, 'error creating server', err
);
36 logger
.info(_scope
, 'server started', { version
, listenAddress: ADDR
, listenPort: PORT
});
39 (logger
|| console
).error(_scope
, 'error starting server', e
);
40 db
?.listener
&& await db
.listener
.stop();