import defined from "./defined.js";

/**
 * Formats an error object into a String.  If available, uses name, message, and stack
 * properties, otherwise, falls back on toString().
 *
 * @function
 *
 * @param {*} object The item to find in the array.
 * @returns {String} A string containing the formatted error.
 */
function formatError(object) {
  var result;

  var name = object.name;
  var message = object.message;
  if (defined(name) && defined(message)) {
    result = name + ": " + message;
  } else {
    result = object.toString();
  }

  var stack = object.stack;
  if (defined(stack)) {
    result += "\n" + stack;
  }

  return result;
}
export default formatError;
