@dimkl/events
is a dependency-free JS library for listening & dispatching events on class methods.
Use the package manager npm to install @dimkl/events
npm install @dimkl/events
- node >= 16
- typescript decorators support enabled in tsconfig using
"experimentalDecorators": true
Examples can be found in examples/
folder:
- Minimal example
- Implcit event attachment example
- Isolated event bus example
- Minimal implicit event attachment (with options) example
Execute npm run setup:examples
npm test
For feature request or issues contact me via email or open an issue in repo
npm version {patch|minor|major}
npm publish
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.
- Add tests & code coverage
- Add .github/{ISSUE|PULL_REQUEST}
- Changelog & Github Releases
- Isomorphic support
- Code coverage shield
- Features
- [-] @on/dispatch on functions -- not possible
- @on/dispatch on class
- @on/dispatch for static & instance methods
- remove event(s) on eventBus
- 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
- Support react-native (EventTarget is not supported)
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.