@marinade.finance/config-common
v4.2.3
Published
Environment variable utilities
Readme
config-common
Environment variable utilities.
Installation
pnpm add @marinade.finance/config-common@latestFeatures
Environment Variables
import {
getEnvVar,
getIntEnvVar,
getBoolEnvVar,
getOptionalEnvVar,
parseCommaSeparated,
} from '@marinade.finance/config-common'
// Required variables (throws if missing)
const url = getEnvVar('DATABASE_URL')
const port = getIntEnvVar('PORT')
const enabled = getBoolEnvVar('FEATURE_ENABLED')
// Optional variables
const debug = getOptionalBoolEnvVar('DEBUG')
const hosts = parseCommaSeparated(getEnvVar('ALLOWED_HOSTS'))Timeout Handling
import { getTimeoutEnvVar } from '@marinade.finance/config-common'
// Returns number or 'DISABLE_TIMEOUT' or undefined
const timeout = getTimeoutEnvVar('REQUEST_TIMEOUT')Environment Detection
import {
getServiceEnvironment,
isProduction,
isDevelopment,
} from '@marinade.finance/config-common'
// Supports 'production', 'prod', 'development', 'dev', 'test'
const env = getServiceEnvironment() // 'production' | 'development' | 'test'
if (isProduction()) {
// Production-only logic
}Environment Validation
Use with NestJS ConfigModule and class-validator:
import { createEnvValidator } from '@marinade.finance/config-common'
import { IsString, IsNumber, IsOptional } from 'class-validator'
import { Transform } from 'class-transformer'
class EnvironmentVariables {
@IsString()
DATABASE_URL: string
@Transform(({ value }) => parseInt(value, 10))
@IsNumber()
@IsOptional()
PORT: number = 3000
}
const validate = createEnvValidator(EnvironmentVariables)
@Module({
imports: [
ConfigModule.forRoot({
validate,
isGlobal: true,
}),
],
})
export class AppModule {}Dotenv Loader
import { loadEnv } from '@marinade.finance/config-common'
// Load .env file with variable expansion
loadEnv()