Initial commit
This commit is contained in:
48
api/server.ts
Normal file
48
api/server.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import app, { moduleManager, container } from './app.js';
|
||||
import { startWatcher, stopWatcher } from './watcher/watcher.js';
|
||||
import { logger } from './utils/logger.js';
|
||||
|
||||
const PORT = process.env.PORT || 3001;
|
||||
|
||||
startWatcher();
|
||||
|
||||
const server = app.listen(PORT, () => {
|
||||
logger.info(`Server ready on port ${PORT}`);
|
||||
});
|
||||
|
||||
async function gracefulShutdown(signal: string) {
|
||||
logger.info(`${signal} signal received`);
|
||||
|
||||
try {
|
||||
await stopWatcher();
|
||||
} catch (error) {
|
||||
logger.error('Error stopping watcher:', error);
|
||||
}
|
||||
|
||||
const activeModules = moduleManager.getActiveModules();
|
||||
for (const moduleId of activeModules.reverse()) {
|
||||
try {
|
||||
await moduleManager.deactivate(moduleId);
|
||||
logger.info(`Module '${moduleId}' deactivated`);
|
||||
} catch (error) {
|
||||
logger.error(`Error deactivating module '${moduleId}':`, error);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
await container.dispose();
|
||||
logger.info('Service container disposed');
|
||||
} catch (error) {
|
||||
logger.error('Error disposing container:', error);
|
||||
}
|
||||
|
||||
server.close(() => {
|
||||
logger.info('Server closed');
|
||||
process.exit(0);
|
||||
});
|
||||
}
|
||||
|
||||
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
||||
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
||||
|
||||
export default app;
|
||||
Reference in New Issue
Block a user