/** * Custom environment loader that prioritizes system environment variables * over .env file values. This ensures that Manus platform-injected variables * are not overridden by placeholder values in .env */ import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const envPath = path.resolve(process.cwd(), ".env"); if (fs.existsSync(envPath)) { const envContent = fs.readFileSync(envPath, "utf8"); const lines = envContent.split("\n"); lines.forEach((line) => { // Skip comments and empty lines if (!line || line.trim().startsWith("#")) return; const match = line.match(/^([^=]+)=(.*)$/); if (match) { const key = match[1].trim(); const value = match[2].trim().replace(/^["']|["']$/g, ""); // Remove quotes // Only set if not already defined in environment if (!process.env[key]) { process.env[key] = value; } } }); } // Map system variables to Expo public variables const mappings = { VITE_APP_ID: "EXPO_PUBLIC_APP_ID", VITE_OAUTH_PORTAL_URL: "EXPO_PUBLIC_OAUTH_PORTAL_URL", OAUTH_SERVER_URL: "EXPO_PUBLIC_OAUTH_SERVER_URL", OWNER_OPEN_ID: "EXPO_PUBLIC_OWNER_OPEN_ID", OWNER_NAME: "EXPO_PUBLIC_OWNER_NAME", }; for (const [systemVar, expoVar] of Object.entries(mappings)) { if (process.env[systemVar] && !process.env[expoVar]) { process.env[expoVar] = process.env[systemVar]; } }