/**
 * Normalizes and validates a phone number string based on specific rules.
 *
 * The normalization process is as follows:
 * 1. All non-digit characters are stripped from the input string.
 * 2. If the resulting number has a leading '1', it is removed.
 *
 * After normalization, the function validates that the resulting number
 * is exactly 10 digits long.
 *
 * @param {string} rawPhoneNumber The raw phone number string provided by the user.
 * @returns {string} The normalized, 10-digit phone number.
 * @throws {Error} Throws an error if the phone number is invalid after normalization,
 *                 allowing API endpoints to catch it and return a proper HTTP status.
 */
export function normalizeAndValidatePhoneNumber(rawPhoneNumber) {
  if (!rawPhoneNumber || typeof rawPhoneNumber !== "string") {
    throw new Error("Phone number is required.");
  }

  const digitsOnly = rawPhoneNumber.replace(/\D/g, "");

  let numberToValidate = digitsOnly;
  if (numberToValidate.startsWith("1")) {
    numberToValidate = numberToValidate.substring(1);
  }

  if (numberToValidate.length !== 10) {
    throw new Error("Please provide a valid 10-digit phone number.");
  }

  return numberToValidate;
}
