Tiny 200b functional Event Emitter / pubsub.
npm install mitt> Tiny 200b functional event emitter / pubsub.
- Microscopic: weighs less than 200 bytes gzipped
- Useful: a wildcard "*" event type listens to all events
- Familiar: same names & ideas as Node's EventEmitter
- Functional: methods don't rely on this
- Great Name: somehow mitt wasn't taken
Mitt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE9+.
- Install
- Usage
- Examples & Demos
- API
- Contribute
- License
This project uses node and npm. Go check them out if you don't have them locally installed.
``sh`
$ npm install --save mitt
Then with a module bundler like rollup or webpack, use as you would anything else:
`javascript
// using ES6 modules
import mitt from 'mitt'
// using CommonJS modules
var mitt = require('mitt')
`
The UMD build is also available on unpkg:
`html`
You can find the library on window.mitt.
`js
import mitt from 'mitt'
const emitter = mitt()
// listen to an event
emitter.on('foo', e => console.log('foo', e) )
// listen to all events
emitter.on('*', (type, e) => console.log(type, e) )
// fire an event
emitter.emit('foo', { a: 'b' })
// clearing all events
emitter.all.clear()
// working with handler references:
function onFoo() {}
emitter.on('foo', onFoo) // listen
emitter.off('foo', onFoo) // unlisten
`
Set "strict": true in your tsconfig.json to get improved type inference for mitt instance methods.
`ts
import mitt from 'mitt';
type Events = {
foo: string;
bar?: number;
};
const emitter = mitt
emitter.on('foo', (e) => {}); // 'e' has inferred type 'string'
emitter.emit('foo', 42); // Error: Argument of type 'number' is not assignable to parameter of type 'string'. (2345)
`
Alternatively, you can use the provided Emitter type:
`ts
import mitt, { Emitter } from 'mitt';
type Events = {
foo: string;
bar?: number;
};
const emitter: Emitter
`
*
#### Table of Contents
- mitt
- all
- on
- Parameters
- off
- Parameters
- emit
- Parameters
Mitt: Tiny (~200b) functional event emitter / pubsub.
Returns Mitt
A Map of event names to registered handler functions.
Register an event handler for the given type.
#### Parameters
- type (string \| symbol) Type of event to listen for, or '*' for all eventshandler
- Function Function to call in response to given event
Remove an event handler for the given type.
If handler is omitted, all handlers of the given type are removed.
#### Parameters
- type (string \| symbol) Type of event to unregister handler from, or '*'handler
- Function? Handler function to remove
Invoke all handlers for the given type.
If present, '*' handlers are invoked after type-matched handlers.
Note: Manually firing '\*' handlers is not supported.
#### Parameters
- type (string \| symbol) The event type to invokeevt
- Any? Any value (object is recommended and powerful), passed to each handler
First off, thanks for taking the time to contribute!
Now, take a moment to be sure your contributions make sense to everyone else.
Found a problem? Want a new feature? First of all see if your issue or idea has already been reported.
If don't, just open a new clear and descriptive issue.
Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.
- Fork it!
- Clone your fork: git clone https://github.com/cd mitt
- Navigate to the newly cloned directory: git checkout -b my-new-feature
- Create a new branch for the new feature: npm install
- Install the tools necessary for development: git commit -am 'Add some feature'
- Make your changes.
- Commit your changes: git push origin my-new-feature`
- Push to the branch:
- Submit a pull request with full remarks documenting your changes.