import { randomUUID } from "node:crypto";

export function slugify(value: string): string {
  return value
    .trim()
    .toLowerCase()
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "")
    .slice(0, 50);
}

export function uniqueSlug(base: string): string {
  const normalized = slugify(base) || "organization";
  return `${normalized}-${randomUUID().slice(0, 8)}`;
}

export function parseJsonSafely<T>(value: string | null | undefined, fallback: T): T {
  if (!value) {
    return fallback;
  }

  try {
    return JSON.parse(value) as T;
  } catch {
    return fallback;
  }
}

export function isoNow(): string {
  return new Date().toISOString();
}
