import path from 'path';
import { URL } from 'url';

const imageExtensionRegex = /\.(jpg|jpeg|png|gif|bmp|tiff|svg|webp)$/i;

/**
 * Extracts the image basename from a given URL.
 *
 * @param urlString - The URL string from which the image basename is to be extracted.
 * @returns The basename of the image file from the URL.
 * Returns an empty string if the URL does not contain a valid image basename.
 */
export function getImageBasename(urlString: string) {
  try {
    const url = new URL(urlString);
    const basename = path.basename(url.pathname);

    return imageExtensionRegex.test(basename) ? basename : '';
  } catch {
    // If URL parsing fails, return an empty string
    return '';
  }
}

/**
 * Extracts the basename of a file from a given URL.
 *
 * @param urlString - The URL string from which the file basename is to be extracted.
 * @returns The basename of the file from the URL.
 * Returns an empty string if the URL parsing fails.
 */
export function getFileBasename(urlString: string) {
  try {
    const url = new URL(urlString);
    return path.basename(url.pathname);
  } catch {
    // If URL parsing fails, return an empty string
    return '';
  }
}
