46 lines
1.1 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, async () => {
logger.log(`Received ${signal}. Closing Nest application...`);
2025-08-28 16:57:57 +09:00
2025-09-18 15:18:12 +09:00
if (!app) {
logger.warn("Nest application not initialized. Exiting immediately.");
process.exit(0);
return;
2025-08-21 15:24:40 +09:00
}
2025-08-22 17:02:49 +09:00
2025-09-18 15:18:12 +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) => {
app = startedApp;
})
.catch((error) => {
const resolvedError = error as Error;
logger.error(
`Failed to bootstrap the Nest application: ${resolvedError.message}`,
resolvedError.stack
);
process.exit(1);
});