@dimkl/events
v3.0.0
Published
Minimal events register library
Downloads
21
Maintainers
Readme
Events
@dimkl/events
is a dependency-free JS library for listening & dispatching events on class methods.
Installation
Use the package manager npm to install @dimkl/events
npm install @dimkl/events
Requirements & limitations
- node >= 16
- typescript decorators support enabled in tsconfig using
"experimentalDecorators": true
Usage
Examples can be found in examples/
folder:
- Minimal example
- Implcit event attachment example
- Isolated event bus example
- Minimal implicit event attachment (with options) example
Use examples
Execute npm run setup:examples
Testing
Run tests
npm test
Support
For feature request or issues contact me via email or open an issue in repo
Publish
npm version {patch|minor|major}
npm publish
Injecting events types
The injected event types will be used with @on
decorator methods and they should be
defined using interface merging strategy. Example:
declare global {
interface {{eventName}}Event extends IEvent {
type: "{{eventName}}"
data?: {{any_data_type}}
}
interface Events {
"{{eventName}}": {{eventName}}Event
}
}
You can also check the ErrorEvent
definition in codebase.
Roadmap
- [x] Add tests & code coverage
- [x] Add .github/{ISSUE|PULL_REQUEST}
- [ ] Changelog & Github Releases
- [x] Isomorphic support
- [x] Code coverage shield
- [ ] Features
- [-] @on/dispatch on functions -- not possible
- [x] @on/dispatch on class
- [x] @on/dispatch for static & instance methods
- [ ] remove event(s) on eventBus
- [x] inject events and event types
- [ ] Github action to publish (if test pass & coverage not affected)
- [ ] on chore -> patch
- [ ] on fix -> patch
- [ ] on feat -> minor
- [ ] on fix|feat with (BREAKING CHANGE) -> major
- [x] Support react-native (EventTarget is not supported)
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.