🌳
pt0/deployF/defaultAppCfgF.mts
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))
35 .value()
38export const defaultAppCfg = (appConfig: any) => {
39 const dbSecretsMapping = dbSecretsToSecretsMapping(appConfig.envConf?.dbSecrets || {})
41 mutateAppCfg(appConfig, {
42 envConf: {
43 ...getEnvConfFromProcessEnv(),
44 },
45 })
49 if (appConfig.allNodePorts) {
50 appConfig.envConf.allNodePorts = appConfig.allNodePorts
51 }
53 // Merge dbSecrets-derived mapping into secretsMapping
54 appConfig.envConf.secretsMapping = {
55 ...dbSecretsMapping,
56 ...appConfig.envConf.secretsMapping,
57 }
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)
63 }
65 // Generate per-app secret if it doesn't exist
66 const appSecretName = appConfig.envConf.secretsMapping.appSecret
67 if (appSecretName) {
68 getGenPlainSec(appSecretName)
69 }
71 getGenPlainSec('exceptionemail-token', 8)
72 mutateAppCfg(appConfig, {secretNames: ['exceptionemail-token']})
74 mutateAppCfg(appConfig, {
75 secretNames: secretsMapToA(appConfig.envConf.secretsMapping)
76 })
78 const deployedHn = appConfig.testAgainstHn || getAnyHostname(appConfig)
79 if (deployedHn) {
80 appConfig.deployedBaseUrl = `https://${deployedHn}`
81 }
83 const hostname = getAnyHostname(appConfig)
84 if (hostname) {
85 appConfig.envConf.gpMaybePubEnvH ||= {}
86 appConfig.envConf.gpMaybePubEnvH.gpSiteHost ||= hostname
87 appConfig.envConf.gpMaybePubEnvH.gpSiteScheme ||= 'https://'
88 }
90 if (appConfig.devLocalHostCfg) {
91 appConfig.envConf.gpMaybePubEnvH ||= {}
92 Object.assign(appConfig.envConf.gpMaybePubEnvH, devLocalHost(appConfig.devLocalHostCfg))
93 }
97 return appConfig