/** * Safely parse a date string or return undefined. * Logs a warning if an invalid date string is passed. */ export function parseDate(value: string | Date | undefined | null): Date | undefined { if (!value) return undefined; if (value instanceof Date) return value; const parsed = new Date(value); if (isNaN(parsed.getTime())) { console.warn(`parseDate: Invalid date string received: "${value}"`); return undefined; } return parsed; } /** * Generate a simple slug from a string */ export function slugify(text: string): string { return text .toLowerCase() .trim() .replace(/[^\w\s-]/g, "") .replace(/[\s_-]+/g, "-") .replace(/^-+|-+$/g, ""); } /** * Sleep for a given number of milliseconds */ export function sleep(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } /** * Check if a value is defined (not null or undefined) */ export function isDefined(value: T | null | undefined): value is T { return value !== null && value !== undefined; }