denoland / fresh

The next-gen web framework.
https://fresh.deno.dev
MIT License
12.17k stars 623 forks source link

feat: allow middleware from plugins to be run before user middleware #2261

Open deer opened 8 months ago

deer commented 8 months ago

closes https://github.com/denoland/fresh/issues/2160

I was originally hoping for a cool way to absolutely order middleware. I wanted to add a name to plugin middleware, and then extract the name and use that to constrain an ordering object. But my typescript skills failed me.

So this is a more direct approach that solves the issue: just allow plugin middleware to go before user middleware. The idea is to add a new boolean to the config, and then if this is set, perform a secondary sort that looks at whether the middleware is created from a plugin.

Marvin, in #2056 you added a fixture_plugin_middleware fixture, but it looks unused! So I've repurposed it here with a new name to test this feature.