/**
 * Production-safe logging utility
 *
 * In production (NODE_ENV=production), logs are disabled by default
 * to prevent exposing sensitive information in browser console.
 *
 * In development, all logs are shown for debugging.
 *
 * Usage:
 *   import logger from '../utils/logger';
 *   logger.log('[Component]', 'message', data);
 *   logger.error('[Component]', 'error message', error);
 *   logger.warn('[Component]', 'warning message');
 */

const isDevelopment = process.env.NODE_ENV === 'development';

// Force enable logs with REACT_APP_DEBUG_LOGS=true in .env
const debugEnabled = process.env.REACT_APP_DEBUG_LOGS === 'true';

const shouldLog = isDevelopment || debugEnabled;

const logger = {
  log: (...args) => {
    if (shouldLog) {
      console.log(...args);
    }
  },

  error: (...args) => {
    // Always log errors, but sanitize in production
    if (shouldLog) {
      console.error(...args);
    } else {
      // In production, only log error type without details
      console.error('An error occurred. Enable debug logs for details.');
    }
  },

  warn: (...args) => {
    if (shouldLog) {
      console.warn(...args);
    }
  },

  info: (...args) => {
    if (shouldLog) {
      console.info(...args);
    }
  },

  debug: (...args) => {
    if (shouldLog) {
      console.debug(...args);
    }
  },

  // Special method for sensitive data - NEVER logs in production
  sensitive: (...args) => {
    if (isDevelopment) {
      console.log('[SENSITIVE]', ...args);
    }
  }
};

export default logger;
