Files
library/api/src/main.ts
T

58 lines
1.5 KiB
TypeScript

import Fastify from 'fastify';
import { app } from './app/app';
import { logger } from './app/utils/logger';
const host = process.env.HOST ?? 'localhost';
const port = process.env.PORT ? Number(process.env.PORT) : 12321;
// Global error handlers
process.on('uncaughtException', (error: Error) => {
void logger.error('Uncaught Exception', error);
process.exit(1);
});
process.on('unhandledRejection', (reason: unknown) => {
const error = reason instanceof Error ? reason : new Error(String(reason));
void logger.error('Unhandled Rejection', error);
process.exit(1);
});
process.on('warning', (warning: Error) => {
void logger.log('warn', `Process Warning: ${warning.name} - ${warning.message}`);
});
process.on('SIGTERM', () => {
void logger.log('info', 'SIGTERM signal received: closing HTTP server');
server.close(() => {
void logger.log('info', 'HTTP server closed');
process.exit(0);
});
});
process.on('SIGINT', () => {
void logger.log('info', 'SIGINT signal received: closing HTTP server');
server.close(() => {
void logger.log('info', 'HTTP server closed');
process.exit(0);
});
});
// Instantiate Fastify with some config
const server = Fastify({
logger: true,
bodyLimit: 1048576, // 1MB max body size
});
// Register your application as a normal plugin.
server.register(app);
// Start listening.
server.listen({ port, host }, (err) => {
if (err) {
server.log.error(err);
process.exit(1);
} else {
void logger.log('info', `Server ready at http://${host}:${port}`);
}
});