UNPKG

@launchql/env

Version:

LaunchQL environment management

96 lines (95 loc) 5.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNodeEnv = exports.getEnvVars = void 0; const parseEnvNumber = (val) => { const num = Number(val); return !isNaN(num) ? num : undefined; }; const parseEnvBoolean = (val) => { if (val === undefined) return undefined; return ['true', '1', 'yes'].includes(val.toLowerCase()); }; const getEnvVars = () => { const { PGROOTDATABASE, PGTEMPLATE, DB_PREFIX, DB_EXTENSIONS, DB_CWD, DB_CONNECTION_USER, DB_CONNECTION_PASSWORD, DB_CONNECTION_ROLE, PORT, SERVER_HOST, SERVER_TRUST_PROXY, SERVER_ORIGIN, SERVER_STRICT_AUTH, PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE, GRAPHILE_SCHEMA, FEATURES_SIMPLE_INFLECTION, FEATURES_OPPOSITE_BASE_NAMES, FEATURES_POSTGIS, API_ENABLE_META, API_IS_PUBLIC, API_EXPOSED_SCHEMAS, API_META_SCHEMAS, API_ANON_ROLE, API_ROLE_NAME, API_DEFAULT_DATABASE_ID, BUCKET_NAME, AWS_REGION, AWS_ACCESS_KEY, AWS_SECRET_KEY, MINIO_ENDPOINT, DEPLOYMENT_USE_TX, DEPLOYMENT_FAST, DEPLOYMENT_USE_PLAN, DEPLOYMENT_CACHE, DEPLOYMENT_TO_CHANGE, MIGRATIONS_CODEGEN_USE_TX, } = process.env; return { db: { ...(PGROOTDATABASE && { rootDb: PGROOTDATABASE }), ...(PGTEMPLATE && { template: PGTEMPLATE }), ...(DB_PREFIX && { prefix: DB_PREFIX }), ...(DB_EXTENSIONS && { extensions: DB_EXTENSIONS.split(',').map(ext => ext.trim()) }), ...(DB_CWD && { cwd: DB_CWD }), ...((DB_CONNECTION_USER || DB_CONNECTION_PASSWORD || DB_CONNECTION_ROLE) && { connection: { ...(DB_CONNECTION_USER && { user: DB_CONNECTION_USER }), ...(DB_CONNECTION_PASSWORD && { password: DB_CONNECTION_PASSWORD }), ...(DB_CONNECTION_ROLE && { role: DB_CONNECTION_ROLE }), } }), }, server: { ...(PORT && { port: parseEnvNumber(PORT) }), ...(SERVER_HOST && { host: SERVER_HOST }), ...(SERVER_TRUST_PROXY && { trustProxy: parseEnvBoolean(SERVER_TRUST_PROXY) }), ...(SERVER_ORIGIN && { origin: SERVER_ORIGIN }), ...(SERVER_STRICT_AUTH && { strictAuth: parseEnvBoolean(SERVER_STRICT_AUTH) }), }, pg: { ...(PGHOST && { host: PGHOST }), ...(PGPORT && { port: parseEnvNumber(PGPORT) }), ...(PGUSER && { user: PGUSER }), ...(PGPASSWORD && { password: PGPASSWORD }), ...(PGDATABASE && { database: PGDATABASE }), }, graphile: { ...(GRAPHILE_SCHEMA && { schema: GRAPHILE_SCHEMA.includes(',') ? GRAPHILE_SCHEMA.split(',').map(s => s.trim()) : GRAPHILE_SCHEMA }), }, features: { ...(FEATURES_SIMPLE_INFLECTION && { simpleInflection: parseEnvBoolean(FEATURES_SIMPLE_INFLECTION) }), ...(FEATURES_OPPOSITE_BASE_NAMES && { oppositeBaseNames: parseEnvBoolean(FEATURES_OPPOSITE_BASE_NAMES) }), ...(FEATURES_POSTGIS && { postgis: parseEnvBoolean(FEATURES_POSTGIS) }), }, api: { ...(API_ENABLE_META && { enableMetaApi: parseEnvBoolean(API_ENABLE_META) }), ...(API_IS_PUBLIC && { isPublic: parseEnvBoolean(API_IS_PUBLIC) }), ...(API_EXPOSED_SCHEMAS && { exposedSchemas: API_EXPOSED_SCHEMAS.split(',').map(s => s.trim()) }), ...(API_META_SCHEMAS && { metaSchemas: API_META_SCHEMAS.split(',').map(s => s.trim()) }), ...(API_ANON_ROLE && { anonRole: API_ANON_ROLE }), ...(API_ROLE_NAME && { roleName: API_ROLE_NAME }), ...(API_DEFAULT_DATABASE_ID && { defaultDatabaseId: API_DEFAULT_DATABASE_ID }), }, cdn: { ...(BUCKET_NAME && { bucketName: BUCKET_NAME }), ...(AWS_REGION && { awsRegion: AWS_REGION }), ...(AWS_ACCESS_KEY && { awsAccessKey: AWS_ACCESS_KEY }), ...(AWS_SECRET_KEY && { awsSecretKey: AWS_SECRET_KEY }), ...(MINIO_ENDPOINT && { minioEndpoint: MINIO_ENDPOINT }), }, deployment: { ...(DEPLOYMENT_USE_TX && { useTx: parseEnvBoolean(DEPLOYMENT_USE_TX) }), ...(DEPLOYMENT_FAST && { fast: parseEnvBoolean(DEPLOYMENT_FAST) }), ...(DEPLOYMENT_USE_PLAN && { usePlan: parseEnvBoolean(DEPLOYMENT_USE_PLAN) }), ...(DEPLOYMENT_CACHE && { cache: parseEnvBoolean(DEPLOYMENT_CACHE) }), ...(DEPLOYMENT_TO_CHANGE && { toChange: DEPLOYMENT_TO_CHANGE }), }, migrations: { ...(MIGRATIONS_CODEGEN_USE_TX && { codegen: { useTx: parseEnvBoolean(MIGRATIONS_CODEGEN_USE_TX) } }), } }; }; exports.getEnvVars = getEnvVars; const getNodeEnv = () => { const env = process.env.NODE_ENV?.toLowerCase(); if (env === 'production' || env === 'test') return env; return 'development'; }; exports.getNodeEnv = getNodeEnv;