All files / src/helpers getEnv.ts

58.53% Statements 24/41
75% Branches 3/4
100% Functions 2/2
58.53% Lines 24/41

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 411x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 96818x 96818x 1x 1x 96818x 96818x 96818x 96818x                                   96818x 96818x 96818x
import { getMainConfig } from './getGreenDotConfigs'
import { error } from '../error'
import { parseStringAsBoolean } from 'topkat-utils'
 
 
type EnvType = {
  env: Env
  isProd: boolean
  isTest: boolean
}
 
export const env = new Proxy({} as EnvType, {
  get(o, p: keyof EnvType) {
    return getEnv(p)
  }
})
 
function getEnv(prop: keyof EnvType) {
  const mainConf = getMainConfig(true)
 
  if (prop === 'env') return (mainConf?.env || process.env.NODE_ENV) as Env
  else {

    const {
      isProdEnv = process.env.IS_PROD_ENV ? parseStringAsBoolean(process.env.IS_PROD_ENV) : undefined,
      isTestEnv = process.env.IS_TEST_ENV ? parseStringAsBoolean(process.env.IS_TEST_ENV) : undefined
    } = mainConf || {}

    if (typeof isProdEnv !== 'boolean') {
      throw error.serverError(`Env variable not found please report the issue`, {
        processEnvIsProd: process.env?.IS_PROD_ENV, processEnvIsTest: process.env?.IS_TEST_ENV, mainConfEnv: mainConf?.env
      })
    }
    return ({
      isProd: isProdEnv,
      isTest: isTestEnv
    } satisfies Omit<EnvType, 'env'>)[prop]
  }
 
 
}