Can link routing algorithms be extended?

Hi, we have some specific requirements to link routing.
One of those is “bundling” together individual segments of different links running close to each other in parallel; there are others.
Based on what I found on this forum, the solution is to write a few handlers for events which might impact link routing and execute my own algorithm(s) to re-calculate link’ points.
Is there a way to make extensions to GoJS own routing logic to keep custom code in one spot and avoid spaghetti?

First, the general answer to your question: yes, you can customize link routing to do whatever you want. There are several examples of this in the samples – just look for classes that inherit from go.Link.

This includes samples such as:
http://gojs.net/latest/samples/grafcet.html
http://gojs.net/latest/samples/dynamicPorts.html
http://gojs.net/latest/samples/sequenceDiagram.html
Unfortunately we have not yet documented all of the methods that can be overridden on the Link class.

Somewhat more general examples override Link.computePoints or Link.makeGeometry, such as:
http://gojs.net/latest/samples/multiNodePathLinks.html
http://gojs.net/latest/extensions/Fishbone.html
http://gojs.net/latest/samples/taperedLinks.html

Regarding the “bundling” of links, if they connect the same pair of ports, you might consider another strategy that is implemented in this sample: http://gojs.net/extras/linkBundles.html