Initial commit

This commit is contained in:
nholtware 2026-11-05 12:39:53 -06:00
commit a0c3aa640c
36 changed files with 7676 additions and 0 deletions

40
src/bin/server.ts Normal file
View file

@ -0,0 +1,40 @@
import { createApp } from "../app.js";
import { parseConfig } from "../lib/config.js";
import { createDb } from "../lib/db.js";
import { createFlags } from "../lib/flags.js";
import { createLogger } from "../lib/logger.js";
import { createCache } from "../lib/redis.js";
import { createRuntimeConfig } from "../lib/runtime-config.js";
const config = parseConfig(process.env);
const logger = createLogger(config);
const db = config.DATABASE_URL ? createDb(config.DATABASE_URL) : undefined;
const cache = config.REDIS_URL ? createCache(config.REDIS_URL) : undefined;
const flags = createFlags(config, logger);
const runtimeConfig = await createRuntimeConfig({
path: config.RUNTIME_CONFIG_PATH,
logger,
});
const server = createApp({
config,
logger,
db,
cache,
flags,
runtimeConfig,
}).listen(config.PORT, () => {
logger.info({ port: config.PORT }, "listening");
});
function shutdown(signal: string) {
logger.info({ signal }, "shutting down");
runtimeConfig.close();
server.close(async () => {
await Promise.allSettled([db?.close(), cache?.close(), flags.close()]);
process.exit(0);
});
setTimeout(() => process.exit(1), 10_000).unref();
}
process.on("SIGTERM", () => shutdown("SIGTERM"));
process.on("SIGINT", () => shutdown("SIGINT"));