2025-12-10 16:08:34 +09:00
|
|
|
import { Logger } from "@nestjs/common";
|
|
|
|
|
import type { INestApplication } from "@nestjs/common";
|
2025-12-02 10:05:11 +09:00
|
|
|
|
2025-12-10 16:08:34 +09:00
|
|
|
import { bootstrap } from "./app/bootstrap.js";
|
2025-08-20 18:02:50 +09:00
|
|
|
|
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) {
|
2025-09-25 13:21:11 +09:00
|
|
|
process.once(signal, () => {
|
|
|
|
|
void (async () => {
|
|
|
|
|
logger.log(`Received ${signal}. Closing Nest application...`);
|
2025-08-28 16:57:57 +09:00
|
|
|
|
2025-09-25 13:21:11 +09:00
|
|
|
if (!app) {
|
|
|
|
|
logger.warn("Nest application not initialized. Exiting immediately.");
|
|
|
|
|
process.exit(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2025-08-22 17:02:49 +09:00
|
|
|
|
2025-09-25 13:21:11 +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-08-20 18:02:50 +09:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-29 11:12:20 +09:00
|
|
|
process.on("uncaughtException", error => {
|
|
|
|
|
logger.error(`Uncaught Exception: ${error.message}`, error.stack);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
process.on("unhandledRejection", reason => {
|
|
|
|
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
|
|
|
const stack = reason instanceof Error ? reason.stack : undefined;
|
|
|
|
|
logger.error(`Unhandled Rejection: ${message}`, stack);
|
|
|
|
|
});
|
|
|
|
|
|
2025-09-18 15:18:12 +09:00
|
|
|
void bootstrap()
|
2025-09-25 11:44:10 +09:00
|
|
|
.then(startedApp => {
|
2025-09-18 15:18:12 +09:00
|
|
|
app = startedApp;
|
|
|
|
|
})
|
2025-09-25 11:44:10 +09:00
|
|
|
.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);
|
|
|
|
|
});
|