1// given a starting node, what is the *deepest* target where name could go? 2// This is not on the Node class for the simple reason that we sometimes 3// need to check the deepest *potential* target for a Node that is not yet 4// added to the tree where we are checking. 5const deepestNestingTarget = (start, name) => { 6 for (const target of start.ancestry()) { 7 // note: this will skip past the first target if edge is peer 8 if (target.isProjectRoot || !target.resolveParent || target.globalTop) { 9 return target 10 } 11 const targetEdge = target.edgesOut.get(name) 12 if (!targetEdge || !targetEdge.peer) { 13 return target 14 } 15 } 16} 17 18module.exports = deepestNestingTarget 19