1 | #!/usr/bin/env node
|
2 |
|
3 | require('source-map-support').install()
|
4 |
|
5 | import createApp from './app'
|
6 | import { create as createLogger } from './common/log'
|
7 |
|
8 | const log = createLogger('app')
|
9 |
|
10 | export { createApp }
|
11 |
|
12 | if (!module.parent) {
|
13 | const connector = createApp()
|
14 | connector.listen()
|
15 | .catch((err: any) => {
|
16 | const errInfo = (err && typeof err === 'object' && err.stack) ? err.stack : err
|
17 | log.error(errInfo)
|
18 | })
|
19 |
|
20 | let shuttingDown = false
|
21 | process.on('SIGINT', async () => {
|
22 | try {
|
23 | if (shuttingDown) {
|
24 | log.warn('received second SIGINT during graceful shutdown, exiting forcefully.')
|
25 | process.exit(1)
|
26 | return
|
27 | }
|
28 |
|
29 | shuttingDown = true
|
30 |
|
31 |
|
32 | log.debug('shutting down.')
|
33 | await connector.shutdown()
|
34 | log.debug('completed graceful shutdown.')
|
35 | process.exit(0)
|
36 | } catch (err) {
|
37 | const errInfo = (err && typeof err === 'object' && err.stack) ? err.stack : err
|
38 | log.error('error while shutting down. error=%s', errInfo)
|
39 | process.exit(1)
|
40 | }
|
41 | })
|
42 | }
|