Add cli/ package with initial scaffolding. Add config-schema to shared package for typed configuration. Add server config-file loader for paperclip.config.ts support. Register cli in pnpm workspace. Add .paperclip/ and .pnpm-store/ to gitignore. Minor Companies page fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
924 B
TypeScript
30 lines
924 B
TypeScript
import { readConfigFile } from "./config-file.js";
|
|
|
|
export interface Config {
|
|
port: number;
|
|
databaseUrl: string | undefined;
|
|
serveUi: boolean;
|
|
heartbeatSchedulerEnabled: boolean;
|
|
heartbeatSchedulerIntervalMs: number;
|
|
}
|
|
|
|
export function loadConfig(): Config {
|
|
const fileConfig = readConfigFile();
|
|
|
|
const fileDbUrl =
|
|
fileConfig?.database.mode === "postgres"
|
|
? fileConfig.database.connectionString
|
|
: undefined;
|
|
|
|
return {
|
|
port: Number(process.env.PORT) || fileConfig?.server.port || 3100,
|
|
databaseUrl: process.env.DATABASE_URL ?? fileDbUrl,
|
|
serveUi:
|
|
process.env.SERVE_UI !== undefined
|
|
? process.env.SERVE_UI === "true"
|
|
: fileConfig?.server.serveUi ?? false,
|
|
heartbeatSchedulerEnabled: process.env.HEARTBEAT_SCHEDULER_ENABLED !== "false",
|
|
heartbeatSchedulerIntervalMs: Math.max(10000, Number(process.env.HEARTBEAT_SCHEDULER_INTERVAL_MS) || 30000),
|
|
};
|
|
}
|