/**
 * Simple logger utility
 */

const colors = {
  reset: '\x1b[0m',
  red: '\x1b[31m',
  green: '\x1b[32m',
  yellow: '\x1b[33m',
  blue: '\x1b[34m',
  magenta: '\x1b[35m',
  cyan: '\x1b[36m',
};

const getTimestamp = () => {
  return new Date().toISOString();
};

export const logger = {
  info: (message, ...args) => {
    console.log(
      `${colors.blue}[INFO]${colors.reset} ${getTimestamp()} - ${message}`,
      ...args
    );
  },

  success: (message, ...args) => {
    console.log(
      `${colors.green}[SUCCESS]${colors.reset} ${getTimestamp()} - ${message}`,
      ...args
    );
  },

  warn: (message, ...args) => {
    console.warn(
      `${colors.yellow}[WARN]${colors.reset} ${getTimestamp()} - ${message}`,
      ...args
    );
  },

  error: (message, error, ...args) => {
    console.error(
      `${colors.red}[ERROR]${colors.reset} ${getTimestamp()} - ${message}`,
      ...args
    );
    if (error && process.env.NODE_ENV === 'development') {
      console.error(error);
    }
  },

  debug: (message, ...args) => {
    if (process.env.NODE_ENV === 'development') {
      console.log(
        `${colors.cyan}[DEBUG]${colors.reset} ${getTimestamp()} - ${message}`,
        ...args
      );
    }
  },

  audit: (message, ...args) => {
    console.log(
      `${colors.magenta}[AUDIT]${colors.reset} ${getTimestamp()} - ${message}`,
      ...args
    );
  },
};
