1import * as _ from 'lodash-es' 10export const secretsMapToA = (secretsMapping: Record<string,string>) => { 11 return _.chain(secretsMapping).values().difference([disabledSecret]).value() 14// Derive per-app secret name from appPath: 'pt0/gamesapp' -> 'gamesapp_appsecret' 15export const appSecretNameFromPath = (appPath: string) => { 16 const appName = appPath.split('/').pop() 17 return `${appName}_appsecret` 20// Convert dbSecrets { db: 'games1db_qs', authDb: 'authprod_qs' } 21// to secretsMapping { defaultdb_qs: 'games1db_qs', authdb_qs: 'authprod_qs' } 22export const dbKeyToQsName = (dbKey: string) => { 23 return dbKey === 'db' ? 'defaultdb_qs' : `${dbKey.replace(/Db$/, '')}db_qs` 26export const dbSecretsToSecretsMapping = (dbSecrets: Record<string, string>) => { 27 return _.mapKeys(dbSecrets, (secName, dbKey) => dbKeyToQsName(dbKey)) 30const getEnvConfFromProcessEnv = () => { 31 const envConfPrefix = 'ENVCONF_' 32 return _.chain(process.env) 33 .pickBy((val, key) => key.startsWith(envConfPrefix)) 34 .mapKeys((val, key) => key.slice(envConfPrefix.length)) 38export const defaultAppCfg = (appConfig: any) => { 39 const dbSecretsMapping = dbSecretsToSecretsMapping(appConfig.envConf?.dbSecrets || {}) 43 ...getEnvConfFromProcessEnv(), 49 if (appConfig.allNodePorts) { 50 appConfig.envConf.allNodePorts = appConfig.allNodePorts 53 // Merge dbSecrets-derived mapping into secretsMapping 54 appConfig.envConf.secretsMapping = { 56 ...appConfig.envConf.secretsMapping, 59 // Auto-derive per-app appSecret if not explicitly set 60 const {appPath} = appConfig 61 if (appPath && !appConfig.envConf.secretsMapping.appSecret) { 62 appConfig.envConf.secretsMapping.appSecret = appSecretNameFromPath(appPath) 65 // Generate per-app secret if it doesn't exist 66 const appSecretName = appConfig.envConf.secretsMapping.appSecret 75 secretNames: secretsMapToA(appConfig.envConf.secretsMapping) 80 appConfig.deployedBaseUrl = `https://${deployedHn}` 85 appConfig.envConf.gpMaybePubEnvH ||= {} 86 appConfig.envConf.gpMaybePubEnvH.gpSiteHost ||= hostname 87 appConfig.envConf.gpMaybePubEnvH.gpSiteScheme ||= 'https://' 90 if (appConfig.devLocalHostCfg) { 91 appConfig.envConf.gpMaybePubEnvH ||= {} 92 Object.assign(appConfig.envConf.gpMaybePubEnvH, devLocalHost(appConfig.devLocalHostCfg))