create-elysiajs
Version:
Scaffolding your Elysia project with the environment with easy!
96 lines (91 loc) • 3.75 kB
JavaScript
;
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")}`;
}