export const run = (fn: () => TResult): TResult => fn(); export const pluralize = (count: number, singular: string, plural: string) => count === 1 ? singular : plural; export const listWithAnd = (list: string[]) => { if (list.length === 0) { return ""; } if (list.length === 1) { return list[0]; } if (list.length === 2) { return `${list[0]} and ${list[1]}`; } return `${list.slice(0, -1).join(", ")}, and ${list.at(-1)}`; }; export function titleCase(str: string | null | undefined): string { if (!str) return ""; return str .trim() .toLowerCase() .split(/\s+/) // Handle multiple spaces .map((word) => { if (word.length === 0) return word; return word.charAt(0).toUpperCase() + word.slice(1); }) .join(" "); } export const startsWithVowel = (s: string) => /^[aeiouàèéìòù]/i.test(s); export function assertNever(x: never): never { throw new Error(`Unexpected: ${JSON.stringify(x)}`); }