export function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null; } export function removeUndefined>(value: T): Record { return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined)); } export function pickDefined(source: Record, keys: string[]): Record { const result: Record = {}; for (const key of keys) { const value = source[key]; if (value !== undefined) result[key] = value; } return result; } export function stringProp(item: Record, key: string): string | undefined { const value = item[key]; return typeof value === "string" && value.trim() ? value : undefined; } export function numberProp(item: Record, key: string): number | undefined { const value = item[key]; if (typeof value === "number" && Number.isFinite(value)) return value; if (typeof value === "string" && /^\d+$/.test(value)) return Number(value); return undefined; }