export type InputRecord = Record export function inputRecord(value: unknown): InputRecord { if (value === null || typeof value !== 'object' || Array.isArray(value)) { throw new Error('Input must be an object.') } return value as InputRecord } export function normalizeText(value: unknown): string { return typeof value === 'string' ? value.trim() : '' } export function nowIso(): string { return new Date().toISOString() } export function createId(): string { return crypto.randomUUID() } export function uniqueSorted(values: string[]): string[] { return Array.from( new Set(values.map((value) => value.trim().toLowerCase()).filter(Boolean)), ).sort() } export function normalizeLimit( value: unknown, fallback = 10, hardMax = 50, ): number { const parsed = typeof value === 'number' && Number.isFinite(value) ? Math.trunc(value) : fallback return Math.min(hardMax, Math.max(1, parsed)) } export function parseJsonArraySafe(value: unknown): string[] { if (typeof value !== 'string') return [] try { const parsed = JSON.parse(value) return Array.isArray(parsed) ? parsed.filter((entry): entry is string => typeof entry === 'string') : [] } catch { return [] } } export function optionalBoolean(input: InputRecord, key: string): boolean { const value = input[key] if (value === undefined || value === null) return false if (typeof value !== 'boolean') throw new Error(`${key} must be a boolean.`) return value } export function assertNever(value: never, message: string): never { throw new Error(message) }