(results, ...keys)
| 10 | |
| 11 | // Walk every WHOIS/RDAP source, return the first non-empty value across the given keys |
| 12 | const pick = (results, ...keys) => { |
| 13 | for (const src of Object.values(results)) { |
| 14 | for (const key of keys) { |
| 15 | const v = src?.[key]; |
| 16 | if (v === undefined || v === null) continue; |
| 17 | if (typeof v === 'string' && !v.trim()) continue; |
| 18 | if (Array.isArray(v) && !v.length) continue; |
| 19 | return v; |
| 20 | } |
| 21 | } |
| 22 | return undefined; |
| 23 | }; |
| 24 | |
| 25 | // Lower-case + dedupe nameservers, drop empty entries |
| 26 | const cleanNs = (ns) => { |
no outgoing calls
no test coverage detected