2025-12-02 10:05:11 +09:00
|
|
|
// tsconfig-paths only needed in development - production builds resolve paths at compile time
|
|
|
|
|
if (process.env.NODE_ENV !== "production") {
|
2025-12-10 13:38:33 +09:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
|
|
|
try { require("tsconfig-paths/register"); } catch { /* paths already resolved */ }
|
2025-12-02 10:05:11 +09:00
|
|
|
}
|
|
|
|
|
|
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-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-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);
|
|
|
|
|
});
|