SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
3 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
1.1 KB · 35 lines typescript
Raw Blame History
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