import * as env from 'env-var'; import {urlJoin} from './helpers/urlJoin'; const NODE_ENV = env.get('NODE_ENV').default('development').asString(); const isProduction = NODE_ENV === 'production'; const envs = { NODE_ENV, // port of the server PORT: env.get('PORT').default('3000').asPortNumber(), // hostname of the server ('0.0.0.0' listens on all network interfaces) HOSTNAME: env.get('HOSTNAME').default('0.0.0.0').asString(), // base path BASE_PATH: env.get('BASE_PATH').default('/').asString(), // external base url EXTERNAL_BASE_URL: env.get('EXTERNAL_BASE_URL').asString(), // url of redis session store (required in production using InMemory) REDIS_URL: env.get('REDIS_URL').asString() || undefined, // cookie secret for the session id (required in production using Session) SESSION_SECRET: env.get('SESSION_SECRET').asString() || undefined, // header where user info token is stored to request auth proxy USERINFO_HEADER: env.get('USERINFO_HEADER').default('X-Userinfo-Token').asString(), // header when user info token expires (seconds after 01/01/1970) EXPIRE_HEADER: env.get('EXPIRE_HEADER').default('X-Userinfo-Expire').asString(), // base url to init a logout or request user info AUTH_PROXY_URL: env.get('AUTH_PROXY_URL').asString() || undefined, // override AUTH_PROXY_URL to request user info AUTH_PROXY_USERINFO_URL: env.get('AUTH_PROXY_USERINFO_URL').asString() || undefined, // override AUTH_PROXY_URL to init a logout AUTH_PROXY_INIT_LOGOUT_URL: env.get('AUTH_PROXY_INIT_LOGOUT_URL').asString() || undefined, }; function requireEnv(name: string, onlyInProduction = false): void { env.get(name).required(!onlyInProduction || isProduction).asString(); } export const DefaultConfig = { ...envs, EXTERNAL_BASE_URL: envs.EXTERNAL_BASE_URL || urlJoin(`http://${envs.HOSTNAME}${envs.PORT !== 80 ? `:${envs.PORT}` : ''}`, envs.BASE_PATH), isProduction, requireEnv, AUTH_PROXY_USERINFO_URL: envs.AUTH_PROXY_USERINFO_URL || envs.AUTH_PROXY_URL && urlJoin(envs.AUTH_PROXY_URL, 'userinfo'), AUTH_PROXY_INIT_LOGOUT_URL: envs.AUTH_PROXY_INIT_LOGOUT_URL || envs.AUTH_PROXY_URL && urlJoin(envs.AUTH_PROXY_URL, 'init-logout'), };