Consider middleware.ts as a root middleware. Nothing is stopping you from creating your own chain (which is trivial) in there. I mean, that would eventually work the same if nextjs implemented that feature — there would be a root somewhere.
Consider middleware.ts as a root middleware. Nothing is stopping you from creating your own chain (which is trivial) in there. I mean, that would eventually work the same if nextjs implemented that feature — there would be a root somewhere.
That doesn't answer parent's question.
People expect "middleware" to mean a certain thing and work a certain way.
Nothing trivial about that implementation in my mind - need to keep track of where middleware is registered, reduceRight is non obvious.
I expect these things to be standardized by the framework and all the sharp edges filed off - thats why I go to a framework in the first place.
The reduceRight is just a bit of cute FP code golf. All it’s saying is that chaining an empty list of middleware yields an ‘OK’ response, and that the first middleware is passed a function which, when called, executes the remaining middleware chain, and so on. It would be obvious enough if written out as a for loop, or via direct recursion.
(My username has never been more appropriate!)