const invalidSheetCharacters = /[:/\\?*[\]]/g; export function sanitizeSheetName(input: string, maxLength = 100): string { const cleaned = input.replace(invalidSheetCharacters, ' ').replace(/\s+/g, ' ').trim(); return (cleaned || 'Newsletter').slice(0, maxLength); } export function escapeCell(value: unknown): unknown { if (typeof value !== 'string') { return value; } return /^[=+\-@]/.test(value) ? `'${value}` : value; } export interface CatalogPayload { rows: Record[]; sponsors: Record[]; deadLinks: Record[]; } export interface OutputWriter { write(payload: CatalogPayload, summary?: Record): Promise; }