const RESERVED = new Set(["www", "app", "admin", "api"]);

export function normalizeHost(value: string) {
  return value.trim().toLowerCase().replace(/:\d+$/, ".").replace(/\.$/, "");
}

export function subdomainFromHost(host: string, rootDomain: string) {
  const normalized = normalizeHost(host);
  const root = normalizeHost(rootDomain);
  if (normalized === root || !normalized.endsWith(`.${root}`)) return null;
  const slug = normalized.slice(0, -(root.length + 1));
  return slug && !slug.includes(".") && !RESERVED.has(slug) ? slug : null;
}

export function normalizeSlug(value: string) {
  return value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase()
    .replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
}
