Features:
- Full tree-shaking
- Functional-style API
- Multiple event arguments
- Event names can also be symbols (private events)
- Soft error-handling - no unexpected runtime errors!
- Versatile plugin system (using meta-events)
- Fully type-safe - each event remembers its name and type signature
- All functions are curried and point-free, which makes them easier to use in a functional environment
(for example, withramda
and similar tools) - SOLID code
- SRP - every function does only one thing
- OCP - HOFs allow to change certain behaviours without the need to rewrite code
- LSP - all functions are easily substitutable as long as they adhere to the same API
- ISP - all data types are the least specific versions of them
- DIP - API depends only on abstractions
- Code-generation-friendly:
Due to the SRP, all functions have a very limited number of ways of invocation.
This allows to automatically generate efficient code (for example, CRUD events) for this library without concerns about its stability. - KISS and DRY code
- API that is friendly both to FP and OOP!