You can get pretty far with a statically typed, purely functional language. For example, Elm's package manager enforces semantic versioning: https://elm-lang.org/
I don't think you can do that with JavaScript.
I don't think you can do that with JavaScript.
Its effectiveness also varies with how much and well types are used - e.g. whether you return `String` or `Url` to begin with.