/** * Environment File Validator * * Utilities for parsing and validating .env files. */ import type { FactiiiConfig } from '../types/index.js'; interface EnvVars { [key: string]: string; } interface KeyComparison { match: boolean; missing: string[]; extra: string[]; } interface EmptyCheck { allFilled: boolean; empty: string[]; } interface PlaceholderInfo { key: string; value: string; } interface PlaceholderCheck { hasPlaceholders: boolean; placeholders: PlaceholderInfo[]; } interface ProdDifferences { changed: string[]; onlyLocal: string[]; onlyGitHub: string[]; } interface GitHubSecrets { PROD_ENVS?: EnvVars; } interface AutoConfig { isStagingSecret?: boolean; allowIdenticalEnvVars?: string[]; } interface ConfigWithAuto extends FactiiiConfig { auto?: AutoConfig; } interface EnvValidationResult { devExists: boolean; stagingExists: boolean; prodExists: boolean; prodLocal: boolean; prodGitHub: boolean; prodGitignored: boolean; stagingGitignored: boolean; keysMatch: boolean; allFilled: boolean; warnings: string[]; errors: string[]; dev: EnvVars | null; staging: EnvVars | null; prod: EnvVars | null; prodGitHubData?: EnvVars; prodDifferences?: ProdDifferences; } /** * Parse .env file into key-value object * @param filepath - Path to .env file * @returns Parsed key-value pairs or null if file doesn't exist */ export declare function parseEnvFile(filepath: string): EnvVars | null; /** * Check if value looks like a placeholder * @param value - Environment variable value */ export declare function looksLikePlaceholder(value: string): boolean; /** * Check if file is in .gitignore * @param rootDir - Root directory * @param filename - Filename to check */ export declare function isGitignored(rootDir: string, filename: string): boolean; /** * Compare keys between two env objects * @param expected - Expected keys (from .env.example) * @param actual - Actual keys to validate */ export declare function compareEnvKeys(expected: EnvVars, actual: EnvVars): KeyComparison; /** * Check if env values are filled (not empty) * @param env - Environment variables */ export declare function checkValuesNotEmpty(env: EnvVars): EmptyCheck; /** * Check for placeholder values * @param env - Environment variables */ export declare function checkForPlaceholders(env: EnvVars): PlaceholderCheck; /** * Compare values between environments * @param env1 - First environment * @param env2 - Second environment * @returns Keys with matching values */ export declare function findMatchingValues(env1: EnvVars, env2: EnvVars): string[]; /** * Validate environment file setup * @param rootDir - Root directory * @param config - Parsed stack.yml config * @param githubSecrets - Optional GitHub secrets for comparison */ export declare function validateEnvFiles(rootDir: string, config?: ConfigWithAuto, githubSecrets?: GitHubSecrets | null): EnvValidationResult; export {}; //# sourceMappingURL=env-validator.d.ts.map