88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
// env-loader.js
|
|
// This module is responsible for loading environment variables from .env file
|
|
|
|
// Store environment variables in a global object
|
|
window.ENV_CONFIG = {};
|
|
|
|
// Function to load environment variables from .env file
|
|
async function loadEnvVariables() {
|
|
try {
|
|
// Fetch the .env file as text
|
|
const response = await fetch('/.env');
|
|
|
|
if (!response.ok) {
|
|
console.warn('Could not load .env file. Using default values.');
|
|
setDefaultEnvValues();
|
|
return;
|
|
}
|
|
|
|
const envText = await response.text();
|
|
|
|
// Parse the .env file content
|
|
const envVars = parseEnvFile(envText);
|
|
|
|
// Store in the global ENV_CONFIG object
|
|
window.ENV_CONFIG = { ...window.ENV_CONFIG, ...envVars };
|
|
|
|
console.log('Environment variables loaded successfully');
|
|
} catch (error) {
|
|
console.error('Error loading environment variables:', error);
|
|
setDefaultEnvValues();
|
|
}
|
|
}
|
|
|
|
// Parse .env file content into key-value pairs
|
|
function parseEnvFile(envText) {
|
|
const envVars = {};
|
|
|
|
// Split by lines and process each line
|
|
envText.split('\n').forEach(line => {
|
|
// Skip empty lines and comments
|
|
if (!line || line.trim().startsWith('#')) return;
|
|
|
|
// Extract key-value pairs
|
|
const match = line.match(/^\s*([\w.-]+)\s*=\s*(.*)?\s*$/);
|
|
if (match) {
|
|
const key = match[1];
|
|
let value = match[2] || '';
|
|
|
|
// Remove quotes if present
|
|
if (value.startsWith('"') && value.endsWith('"')) {
|
|
value = value.slice(1, -1);
|
|
}
|
|
|
|
envVars[key] = value;
|
|
}
|
|
});
|
|
|
|
return envVars;
|
|
}
|
|
|
|
// Set default values for required environment variables
|
|
function setDefaultEnvValues() {
|
|
window.ENV_CONFIG = {
|
|
...window.ENV_CONFIG,
|
|
PUBLIC_VAPID_KEY: 'your_public_vapid_key_here',
|
|
BACKEND_URL: 'https://your-push-server.example.com'
|
|
};
|
|
console.log('Using default environment values');
|
|
}
|
|
|
|
// Export function to initialize environment variables
|
|
export async function initEnv() {
|
|
await loadEnvVariables();
|
|
return window.ENV_CONFIG;
|
|
}
|
|
|
|
// Auto-initialize when imported
|
|
initEnv();
|
|
|
|
// Export access functions for environment variables
|
|
export function getEnv(key, defaultValue = '') {
|
|
return window.ENV_CONFIG[key] || defaultValue;
|
|
}
|
|
|
|
export default {
|
|
initEnv,
|
|
getEnv
|
|
};
|