[refactor] Refactor repository
We should refactor our repo and split some of our huge source files into smaller chunks.
One idea would be to split the code on the language and/or tool they are running on/with (eg js, java, maven, gradle, etc). If we then do the same for our tests, we could run specific tests only (and general ones of course) to have faster results on PRs (and it could reduce our resource-footprint as well). We could also pretend JS is like java and implement & use functions as if they were like interfaces. This should in theory make our code simpler and more re-usable than it is now.
Related: https://github.com/CycloneDX/cdxgen/issues/711
The software architecture within renovatebot/renovate is a great role-model. They have really well defined interfaces, modules and manager/language specific implementations.