30 lines
855 B
TypeScript
30 lines
855 B
TypeScript
|
|
import { readFileSync } from "node:fs";
|
||
|
|
import { join } from "node:path";
|
||
|
|
|
||
|
|
import { TyphonApplication } from "./app/TyphonApplication";
|
||
|
|
import { AppConfig } from "./config/AppConfig";
|
||
|
|
|
||
|
|
function readVersion(): string {
|
||
|
|
try {
|
||
|
|
const packagePath = join(process.cwd(), "package.json");
|
||
|
|
const parsed = JSON.parse(readFileSync(packagePath, "utf-8")) as { version?: string };
|
||
|
|
return parsed.version ?? "0.0.0";
|
||
|
|
} catch {
|
||
|
|
return "0.0.0";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function main(): Promise<void> {
|
||
|
|
const config = AppConfig.fromEnv();
|
||
|
|
const version = readVersion();
|
||
|
|
|
||
|
|
const app = new TyphonApplication(config, version);
|
||
|
|
await app.start();
|
||
|
|
}
|
||
|
|
|
||
|
|
void main().catch((error) => {
|
||
|
|
const message = error instanceof Error ? error.message : String(error);
|
||
|
|
console.error(JSON.stringify({ level: "error", component: "typhon", message }));
|
||
|
|
process.exit(1);
|
||
|
|
});
|