37 lines
947 B
TypeScript
37 lines
947 B
TypeScript
|
|
import 'dotenv/config'
|
||
|
|
import express from 'express'
|
||
|
|
import helmet from 'helmet'
|
||
|
|
import morgan from 'morgan'
|
||
|
|
import { initFirebase } from './config/firebase'
|
||
|
|
import { startAnswerListener } from './listeners/answerListener'
|
||
|
|
import healthRouter from './routes/health'
|
||
|
|
import webhooksRouter from './routes/webhooks'
|
||
|
|
|
||
|
|
initFirebase()
|
||
|
|
|
||
|
|
const app = express()
|
||
|
|
const PORT = parseInt(process.env.PORT ?? '8080', 10)
|
||
|
|
|
||
|
|
app.use(helmet())
|
||
|
|
app.use(morgan('combined'))
|
||
|
|
app.use(express.json())
|
||
|
|
|
||
|
|
app.use('/health', healthRouter)
|
||
|
|
app.use('/webhooks', webhooksRouter)
|
||
|
|
|
||
|
|
const server = app.listen(PORT, () => {
|
||
|
|
console.log(`[server] listening on port ${PORT}`)
|
||
|
|
startAnswerListener()
|
||
|
|
})
|
||
|
|
|
||
|
|
// Graceful shutdown
|
||
|
|
process.on('SIGTERM', () => {
|
||
|
|
console.log('[server] SIGTERM received, shutting down')
|
||
|
|
server.close(() => process.exit(0))
|
||
|
|
})
|
||
|
|
|
||
|
|
process.on('SIGINT', () => {
|
||
|
|
console.log('[server] SIGINT received, shutting down')
|
||
|
|
server.close(() => process.exit(0))
|
||
|
|
})
|