Files
botino/index.js
Lucas Tettamanti 47ba68049f separado en routes
2026-01-14 13:03:11 -03:00

44 lines
1.3 KiB
JavaScript

import "dotenv/config";
import { ensureTenant } from "./src/db/repo.js";
import { createApp } from "./src/app.js";
async function configureUndiciDispatcher() {
// Node 18+ usa undici debajo de fetch. Esto suele arreglar timeouts “fantasma” por keep-alive/pooling.
// Nota: si el módulo `undici` no está disponible, no rompemos el arranque (solo logueamos warning).
try {
const { setGlobalDispatcher, Agent } = await import("undici");
setGlobalDispatcher(
new Agent({
connections: 10,
pipelining: 0,
keepAliveTimeout: 10_000,
keepAliveMaxTimeout: 10_000,
})
);
console.log("[http] undici global dispatcher configured");
} catch (e) {
console.warn("[http] undici dispatcher not configured:", e?.message || e);
}
}
/**
* --- Tenant ---
*/
const TENANT_KEY = process.env.TENANT_KEY || "piaf";
let TENANT_ID = null;
/**
* --- Boot ---
*/
const port = process.env.PORT || 3000;
(async function boot() {
await configureUndiciDispatcher();
TENANT_ID = await ensureTenant({ key: TENANT_KEY, name: TENANT_KEY.toUpperCase() });
const app = createApp({ tenantId: TENANT_ID });
app.listen(port, () => console.log(`UI: http://localhost:${port} (tenant=${TENANT_KEY})`));
})().catch((err) => {
console.error("Boot failed:", err);
process.exit(1);
});