ngraph.graph
Version:
graph data structure
40 lines (25 loc) • 1.34 kB
Markdown
# v20.0.0
The changelog is introduced. Justification for it is that there is a breaking change
in the library, and I wanted to call it out here.
### getLink(fromId, toId) / getLinks(nodeId)
`graph.getLinks(nodeId)` now returns a `Set` object. Previous version of the method
returned an `Array`.
Pre `v20.0.0` library versions, `getLink(fromId, toId)` operation had `O(deg(fromId))` time performance.
In `v20.0.0` the links are manged via sets, driving the `getLink()` performance down to `O(1)`.
#### How to update?
If your library used `graph.getLinks(fromId).length` constructs, you'll need to change that to
`graph.getLinks(fromId).size`
### addLink(fromId, toId, data)
For non-multigraphs, this method will now act similar to `addNode(nodeId, data)`. If link is
already present in the graph it will replace old `link.data` with new `data`. Otherwise a new link will be created.
Prior versions of the library always create a new link and clients were required to check link
presence to avoid duplicates.
```
// this code is no longer necessary:
if (graph.hasLink(fromId, toId) || graph.hasLink(toId, fromId)) {
graph.addLink(fromId, toId, 42);
}
// In version v20.0.0 it is equivalent to:
graph.addLink(fromId, toId, 42);
```
For multigraphs this method will act the same way as before - a new link will always be created.