Repository URL to install this package:
|
Version:
1.3.0 ▾
|
import { resolve } from 'path'
export interface DotEnvObj {
[key: string]: number | boolean | string
}
// because we need are defining booleans, not stringy bools
export function autofix(obj: DotEnvObj): void {
Object.keys(obj).forEach(key => {
const value = obj[key]
if (value === 'true' || value === true) {
obj[key] = true
process.env[key] = 'true'
} else if (value === 'false' || value === false) {
obj[key] = false
// because it isn't providing properly...
process.env[key] = 'false'
delete process.env[key]
} else if (value === 'undefined' || value === undefined) {
delete process.env[key]
delete obj[key]
} else if (typeof value === 'string') {
const string = value as string
if (string.startsWith('./')) {
obj[key] = resolve(process.env.APP_ROOT_PATH, string)
} else {
obj[key] = string
}
// we set it on obj, now pass to process env
process.env[key] = obj[key] as string
} else {
// number
process.env[key] = String(value)
}
// we put this at the end to get the final value
process.env.DOT_ENV += `${key}=${obj[key]}\n`
})
}
// @todo split from autofix
export function setProcessFromObj(obj: DotEnvObj): void {
autofix(obj)
}