import fs from 'fs'; import path from 'path'; /** * Parse the .env file and return values for the requested keys. * Does NOT load anything into process.env — callers decide what to * do with the values. This keeps secrets out of the process environment * so they don't leak to child processes. */ export function readEnvFile(keys: string[]): Record { const envFile = path.join(process.cwd(), '.env'); let content: string; try { content = fs.readFileSync(envFile, 'utf-8'); } catch { return {}; } const result: Record = {}; const wanted = new Set(keys); for (const line of content.split('\n')) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith('#')) continue; const eqIdx = trimmed.indexOf('='); if (eqIdx === -1) continue; const key = trimmed.slice(0, eqIdx).trim(); if (!wanted.has(key)) continue; let value = trimmed.slice(eqIdx + 1).trim(); if ( (value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'")) ) { value = value.slice(1, -1); } if (value) result[key] = value; } return result; }