48 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-09-18 15:18:12 +09:00
import { Logger, type INestApplication } from "@nestjs/common";
2025-08-28 16:57:57 +09:00
2025-09-18 15:18:12 +09:00
import { bootstrap } from "./app/bootstrap";
2025-09-18 15:18:12 +09:00
const logger = new Logger("Main");
let app: INestApplication | null = null;
2025-08-22 17:02:49 +09:00
2025-09-18 15:18:12 +09:00
const signals: NodeJS.Signals[] = ["SIGINT", "SIGTERM"];
for (const signal of signals) {
process.once(signal, () => {
void (async () => {
logger.log(`Received ${signal}. Closing Nest application...`);
2025-08-28 16:57:57 +09:00
if (!app) {
logger.warn("Nest application not initialized. Exiting immediately.");
process.exit(0);
return;
}
2025-08-22 17:02:49 +09:00
try {
await app.close();
logger.log("Nest application closed gracefully.");
} catch (error) {
const resolvedError = error as Error;
logger.error(
`Error during Nest application shutdown: ${resolvedError.message}`,
resolvedError.stack
);
} finally {
process.exit(0);
}
})();
});
}
2025-09-18 15:18:12 +09:00
void bootstrap()
.then(startedApp => {
2025-09-18 15:18:12 +09:00
app = startedApp;
})
.catch(error => {
2025-09-18 15:18:12 +09:00
const resolvedError = error as Error;
logger.error(
`Failed to bootstrap the Nest application: ${resolvedError.message}`,
resolvedError.stack
);
process.exit(1);
});