| 19 | const isString = (value) => typeof value === 'string'; |
| 20 | |
| 21 | function parseBoolean(value) { |
| 22 | if (typeof value === 'boolean') return value; |
| 23 | const normalized = String(value).trim().toLowerCase(); |
| 24 | if (!normalized) return undefined; |
| 25 | if (['1', 'true', 'yes', 'y'].includes(normalized)) return true; |
| 26 | if (['0', 'false', 'no', 'n'].includes(normalized)) return false; |
| 27 | return undefined; |
| 28 | } |
| 29 | |
| 30 | function parseNumber(value) { |
| 31 | if (value === null || value === undefined || value === '') return undefined; |