--- /dev/null
+# Emitter [![Build Status](https://travis-ci.org/component/emitter.png)](https://travis-ci.org/component/emitter)\r
+\r
+ Event emitter component.\r
+\r
+## Installation\r
+\r
+```\r
+$ component install component/emitter\r
+```\r
+\r
+## API\r
+\r
+### Emitter(obj)\r
+\r
+ The `Emitter` may also be used as a mixin. For example\r
+ a "plain" object may become an emitter, or you may\r
+ extend an existing prototype.\r
+\r
+ As an `Emitter` instance:\r
+\r
+```js\r
+var Emitter = require('emitter');\r
+var emitter = new Emitter;\r
+emitter.emit('something');\r
+```\r
+\r
+ As a mixin:\r
+\r
+```js\r
+var Emitter = require('emitter');\r
+var user = { name: 'tobi' };\r
+Emitter(user);\r
+\r
+user.emit('im a user');\r
+```\r
+\r
+ As a prototype mixin:\r
+\r
+```js\r
+var Emitter = require('emitter');\r
+Emitter(User.prototype);\r
+```\r
+\r
+### Emitter#on(event, fn)\r
+\r
+ Register an `event` handler `fn`.\r
+\r
+### Emitter#once(event, fn)\r
+\r
+ Register a single-shot `event` handler `fn`,\r
+ removed immediately after it is invoked the\r
+ first time.\r
+\r
+### Emitter#off(event, fn)\r
+\r
+ * Pass `event` and `fn` to remove a listener.\r
+ * Pass `event` to remove all listeners on that event.\r
+ * Pass nothing to remove all listeners on all events.\r
+\r
+### Emitter#emit(event, ...)\r
+\r
+ Emit an `event` with variable option args.\r
+\r
+### Emitter#listeners(event)\r
+\r
+ Return an array of callbacks, or an empty array.\r
+\r
+### Emitter#hasListeners(event)\r
+\r
+ Check if this emitter has `event` handlers.\r
+\r
+## License\r
+\r
+MIT\r