Files
digitalcatalog/server/env.ts
T

31 lines
830 B
TypeScript

import path from "node:path";
export type Env = {
port: number;
apiPort: number;
publicBaseUrl: string;
storageDir: string;
databasePath: string;
isProduction: boolean;
};
export function loadEnv(overrides: Partial<NodeJS.ProcessEnv> = {}): Env {
const read = (key: string, fallback: string) =>
overrides[key] ?? process.env[key] ?? fallback;
const isProduction =
(overrides.NODE_ENV ?? process.env.NODE_ENV) === "production";
return {
port: Number(read("PORT", "3000")),
apiPort: Number(read("API_PORT", "3010")),
publicBaseUrl: read("PUBLIC_BASE_URL", "http://localhost:3000").replace(
/\/$/,
"",
),
storageDir: path.resolve(read("STORAGE_DIR", "./storage")),
databasePath: path.resolve(read("DATABASE_PATH", "./data/catalogs.sqlite")),
isProduction,
};
}