// @ts-check

/**
 * # Return the slug of a string
 *
 * @example
 * slugify("Hello World") // "hello-world"
 * slugify("Yes!") // "yes"
 * slugify("Hello!!! World!") // "hello-world"
 */
export default function slugify(str: string): string {
    try {
        return String(str)
            .trim()
            .toLowerCase()
            .replace(/ {2,}/g, " ")
            .replace(/ /g, "-")
            .replace(/[^a-z0-9]/g, "-")
            .replace(/-{2,}/g, "-")
            .replace(/^-/, "")
            .replace(/-$/, "");
    } catch (/** @type {any} */ error: any) {
        console.log(`Slugify ERROR: ${error.message}`);
        return "";
    }
}