36 lines
1.7 KiB
TypeScript
36 lines
1.7 KiB
TypeScript
function required(name: string) {
|
|
const value = process.env[name]?.trim()
|
|
if (!value) throw new Error(`Missing required environment variable ${name}`)
|
|
return value
|
|
}
|
|
|
|
function list(name: string, fallback: string[]) {
|
|
const raw = process.env[name]?.trim()
|
|
if (!raw) return fallback
|
|
return [...new Set(raw.split(',').map((value) => value.trim()).filter(Boolean))]
|
|
}
|
|
|
|
const desktopClientId = process.env.KEYCLOAK_DESKTOP_CLIENT_ID?.trim() || 'fieldlens-print'
|
|
|
|
export const config = {
|
|
port: Number(process.env.PORT ?? '3000'),
|
|
databaseUrl: required('DATABASE_URL'),
|
|
issuer: required('KEYCLOAK_ISSUER').replace(/\/$/, ''),
|
|
jwksUri: (process.env.KEYCLOAK_JWKS_URI ?? '').trim(),
|
|
audience: process.env.KEYCLOAK_AUDIENCE?.trim() || 'fieldlens-api',
|
|
browserClientId: process.env.KEYCLOAK_BROWSER_CLIENT_ID?.trim() || 'fieldlens',
|
|
desktopClientId,
|
|
desktopClientIds: list('KEYCLOAK_DESKTOP_CLIENT_IDS', [
|
|
desktopClientId,
|
|
'fieldlens-print-desktop',
|
|
]),
|
|
machineClientId: process.env.KEYCLOAK_MACHINE_CLIENT_ID?.trim() || 'fieldlens-integration',
|
|
tenantId: process.env.FIELDLENS_TENANT_ID?.trim() || 'fieldlens-production',
|
|
environment: process.env.FIELDLENS_ENV?.trim() || 'development',
|
|
logLevel: process.env.LOG_LEVEL?.trim() || 'info',
|
|
webOrigin: process.env.WEB_ORIGIN?.trim() || 'http://localhost:5173',
|
|
staticDir: process.env.STATIC_DIR?.trim() || '',
|
|
desktopDownloadBaseUrl: process.env.FIELDLENS_DESKTOP_DOWNLOAD_BASE_URL?.trim() || 'https://fieldlens-desktop-build.arrowstack.dev',
|
|
linuxDesktopDownloadBaseUrl: process.env.FIELDLENS_LINUX_DESKTOP_DOWNLOAD_BASE_URL?.trim() || process.env.FIELDLENS_DESKTOP_DOWNLOAD_BASE_URL?.trim() || 'https://fieldlens-desktop-build.arrowstack.dev',
|
|
}
|