(ref)
| 426 | // discriminator path does) and require the fields required in every leaf, so an |
| 427 | // alias-to-record variant is not left with an empty (always-matching) predicate. |
| 428 | const requiresOf = (ref) => { |
| 429 | const leaves = unionLeaves(ref, types).map( |
| 430 | (l) => new Set(types[l].fields.filter((f) => f.required).map((f) => f.name)), |
| 431 | ) |
| 432 | return leaves.length ? [...leaves[0]].filter((k) => leaves.every((s) => s.has(k))) : [] |
| 433 | } |
| 434 | return { ordered: variants.map((ref) => ({ ref, requires: requiresOf(ref) })) } |
| 435 | } |
| 436 |
no test coverage detected