Returns the first non-blank value found across several dotted paths, or "".
⚠️ Not interchangeable with Utils.getNestedValue() (object-utils.ts) — see the
divergence list documented there. The two traps specific to this function: a miss yields
"" rather than null, and a value that is an empty or whitespace-only string is treated
as a miss (_traversePath drops it), so resolveField({ name: " " }, "name") === "".
That last behaviour is deliberate — this helper backs "first field that actually has
something to display" lookups — and is pinned by a test.
Parameters
obj: Record<string,unknown>|null|undefined
Source object.
...paths: string[]
Dotted paths, tried in order; the first non-blank hit wins.
Returns the first non-blank value found across several dotted paths, or
"".⚠️ Not interchangeable with
Utils.getNestedValue()(object-utils.ts) — see the divergence list documented there. The two traps specific to this function: a miss yields""rather thannull, and a value that is an empty or whitespace-only string is treated as a miss (_traversePathdrops it), soresolveField({ name: " " }, "name") === "". That last behaviour is deliberate — this helper backs "first field that actually has something to display" lookups — and is pinned by a test.