38 lines
1016 B
TypeScript
38 lines
1016 B
TypeScript
|
|
import 'dotenv/config'
|
||
|
|
|
||
|
|
const requiredEnvVars = ['REVENUECAT_WEBHOOK_SECRET', 'FIREBASE_PROJECT_ID'] as const
|
||
|
|
|
||
|
|
type RequiredEnvVar = (typeof requiredEnvVars)[number]
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Validates that all required environment variables are set.
|
||
|
|
* Throws an error with details if any are missing.
|
||
|
|
*/
|
||
|
|
export function validateEnv(): void {
|
||
|
|
const missing: RequiredEnvVar[] = []
|
||
|
|
|
||
|
|
for (const varName of requiredEnvVars) {
|
||
|
|
const value = process.env[varName]
|
||
|
|
if (!value || value.trim() === '') {
|
||
|
|
missing.push(varName)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (missing.length > 0) {
|
||
|
|
const message = missing.map(v => ` - ${v}`).join('\n')
|
||
|
|
throw new Error(`Missing required environment variables:\n${message}`)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Safely retrieves a required environment variable.
|
||
|
|
* Throws if not set (after validateEnv has been called).
|
||
|
|
*/
|
||
|
|
export function getEnv(varName: RequiredEnvVar): string {
|
||
|
|
const value = process.env[varName]
|
||
|
|
if (!value) {
|
||
|
|
throw new Error(`Environment variable ${varName} is not set`)
|
||
|
|
}
|
||
|
|
return value
|
||
|
|
}
|