UNPKG

create-elysiajs

Version:

Scaffolding your Elysia project with the environment with easy!

96 lines (91 loc) 3.75 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getIndex = getIndex; const ts_dedent_1 = __importDefault(require("ts-dedent")); __exportStar(require("./package.json"), exports); __exportStar(require("./elysia"), exports); __exportStar(require("./install"), exports); __exportStar(require("./db"), exports); __exportStar(require("./tsconfig.json"), exports); __exportStar(require("./env"), exports); __exportStar(require("./readme.md"), exports); __exportStar(require("./eslint"), exports); const dbExportedMap = { Prisma: "prisma", Drizzle: "client", }; function getIndex({ others, orm, driver, telegramRelated, isMonorepo, }) { const isShouldConnectToDB = orm !== "None" && driver !== "Postgres.JS" && driver !== "MySQL 2" && driver !== "Bun SQLite" && driver !== "Bun.sql"; const gracefulShutdownTasks = []; const imports = [ // `import { bot } from "./bot.ts"`, `import { config } from "./config.ts"`, ]; const startUpTasks = []; imports.push(`import { app } from "./server.ts"`); gracefulShutdownTasks.push("await app.stop()"); // TODO: GramIO integration // gracefulShutdownTasks.push("await bot.stop()"); if (others.includes("Posthog")) { imports.push(`import { posthog } from "./services/posthog.ts"`); gracefulShutdownTasks.push("await posthog.shutdown()"); } if (isShouldConnectToDB) { imports.push(`import { ${dbExportedMap[orm]} } from "./db/index.ts"`); startUpTasks.push((0, ts_dedent_1.default /* ts */) ` ${orm === "Prisma" ? "await prisma.$connect()" : "await client.connect()"} console.log("🗄️ Database was connected!")`); } startUpTasks.push(/*ts*/ ` app.listen(config.PORT, () => console.log(\`🦊 Server started at \${app.server?.url.origin}\`)) `); if (telegramRelated && !isMonorepo) { imports.push(`import { bot } from "./bot.ts"`); startUpTasks.push((0, ts_dedent_1.default /* tss */) ` if (config.NODE_ENV === "production") await bot.start({ webhook: { url: \`\${config.API_URL}/\${config.BOT_TOKEN}\`, }, }); else await bot.start();`); } return (0, ts_dedent_1.default /* sts */) ` ${imports.join("\n")} const signals = ["SIGINT", "SIGTERM"]; for (const signal of signals) { process.on(signal, async () => { console.log(\`Received \${signal}. Initiating graceful shutdown...\`); ${gracefulShutdownTasks.join("\n")} process.exit(0); }) } process.on("uncaughtException", (error) => { console.error(error); }) process.on("unhandledRejection", (error) => { console.error(error); }) ${startUpTasks.join("\n")}`; }