(value: unknown, fieldName: string)
| 23 | } |
| 24 | |
| 25 | export function parseJsonField<T>(value: unknown, fieldName: string): T { |
| 26 | if (typeof value !== 'string') return value as T |
| 27 | const trimmed = value.trim() |
| 28 | if (!trimmed) { |
| 29 | throw new Error(`${fieldName} is required`) |
| 30 | } |
| 31 | try { |
| 32 | return JSON.parse(trimmed) as T |
| 33 | } catch (error) { |
| 34 | throw new Error(`${fieldName} must be valid JSON: ${getErrorMessage(error)}`) |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | /** |
| 39 | * Normalize a JSON-array string, real array, or comma-separated string into a |
no test coverage detected