// Import types
import LogAction from './types/LogAction';
import LogError from './types/LogError';
import Logger from './types/Logger';

let logger: Logger;

/**
 * Initialize the server-side logger.
 * @author Benedikt Arnarsson
 * @param logAction function for sending action logs.
 * @param logError function for sending error logs.
 */
const initLogger = (
  logAction: LogAction,
  logError: LogError,
) => {
  logger = logger ?? {
    logAction,
    logError,
  };
};

/**
 * Get the server-side logger. Throws error if not initialized.
 * @author Benedikt Arnarsson
 * @returns the server-side logger, with logAction and logAction functionality.
 */
const getLogger = (): Logger => {
  if (!logger) {
    throw new Error('Logger has not been initiated.');
  }
  return logger;
};

export {
  initLogger,
  getLogger,
};
