spb/datacenterindex
Public
HTML 53.9%
TypeScript 44.5%
JavaScript 0.6%
SQL 0.5%
1import { loadEnvFile, getEnv } from "./env.js";23loadEnvFile();45const { buildApp } = await import("./app.js");6const { closeDb } = await import("@dci/db");7const { closeRedis } = await import("./redis.js");8const { closeQueues } = await import("./queues.js");9const { flushRequests, stopTelemetry } = await import("./telemetry.js");1011const env = getEnv();12const app = await buildApp();1314async function shutdown(signal: string): Promise<void> {15 app.log.info({ signal }, "shutting down");16 try {17 await app.close();18 stopTelemetry();19 await flushRequests();20 await Promise.allSettled([closeQueues(), closeRedis(), closeDb()]);21 } finally {22 process.exit(0);23 }24}25process.on("SIGINT", () => void shutdown("SIGINT"));26process.on("SIGTERM", () => void shutdown("SIGTERM"));2728try {29 await app.listen({ port: env.port, host: env.host });30 app.log.info({ port: env.port, docs: `http://127.0.0.1:${env.port}/api/v1/docs`, admin: env.adminToken ? "enabled" : "DISABLED (DCI_ADMIN_TOKEN missing)" }, "dci-api listening");31} catch (e) {32 app.log.error(e);33 process.exit(1);34}35