| 197 | // takes an interface name and follows all the interfaces dependencies to |
| 198 | // see if the interface changed as a result of a dependency changing |
| 199 | function followDependencies(iname) { |
| 200 | let visited = new Set(); |
| 201 | let changedDeps = []; |
| 202 | function visit(iname) { |
| 203 | if (visited.has(iname)) { |
| 204 | return; |
| 205 | } |
| 206 | visited.add(iname); |
| 207 | let dependencies = dependantOnLinks.get(iname); |
| 208 | if (dependencies && dependencies.length > 0) { |
| 209 | for (let dep of dependencies) { |
| 210 | if (allChanged.has(dep)) { |
| 211 | changedDeps.push(dep); |
| 212 | } |
| 213 | visit(dep); |
| 214 | } |
| 215 | } |
| 216 | } |
| 217 | visit(iname); |
| 218 | return changedDeps; |
| 219 | } |
| 220 | |
| 221 | function invertDependencies() { |
| 222 | let changedUpstream = new Map(); |