✨ Allow sorting middleware
At the moment middleware is executed in the order that it is registered.
This is fine if middleware is only registered in a single place, but in distributed setups, there may be multiple places in code (possibly across repos) that consumers may want to register middleware.
In order to allow some distributed way of defining an execution order of middlewares, this is a non-breaking change that lets consumers define an `order` for their middleware when registering:
```js
backend.use('commit', fn, 10);
```
This `order` will be used to sort the middlewares, such that higher `order` execute after middleware with lower `order`. Ties are broken on registration order (the current behaviour), since JavaScript's `.sort()` [is stable][1].
The default value for `order` is `0`, so if consumers want to run middleware before other middleware that has not specified an `order`, they will need to set a negative `order` (which is legal):
```js
backend.use('commit', fn, -10);
```
[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#sort_stability
合并状态:未合并 0 条评论