Disstate is an alternative state, with a more advanced event system.
The API is the same as the one of arikawa's State, only adding handlers works differently.
There are four major changes to the event system of arikawa:
- Handlers take a
*state.Stateas first argument. - There is support for middlewares both on a global, and a per-handler level
- All events have new types, that contain a
Basewhich is a key-value store, that allows you to pass information from your middleware to the handler. - Integrated error and panic handling.
Handlers and middlewares can optionally have an
errorreturn type. If a handler or middleware returns an error, it will be given to the event system's error handler. If a middleware returns an error, all other middlewares and the handler won't be called. Similarly, if a middleware or handler panics, the panic will be recovered and handled by the panic handler.