For pipelines in any language, putting one function call per line often works well. Naming the variables can help readability. It also makes using a debugger easier:
let foos = foobinate(a, b, input)
let bars = barbakize(c, d, foos)
Other languages have method call syntax, which allows some chaining in a way that works well with autocomplete.
> Naming the variables can help readability
It can, or it can't; depending on the situation. Sometimes it just adds weight to the mental model (because now there's another variable in scope).