aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md188
1 files changed, 118 insertions, 70 deletions
diff --git a/README.md b/README.md
index b550b17..584241e 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,21 @@
# Nitt
-> Small, functional event emitter / pubsub.
+> Small functional event emitter / pubsub.
-- **Small:** less than 300 bytes gzipped
-- **Familiar:** similar names (on, off, once, emit) & ideas as [Node's EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter)
-- **Functional:** methods don't rely on `this`, unless you want to...
-- **No dependency:** Nitt has no external dependencies
+* **Microscopic:** weighs less than 200 bytes gzipped
+* **Useful:** a wildcard `"*"` event type listens to all events
+* **Familiar:** same names & ideas as [Node's EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter)
+
+nitt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE9+.
## Table of Contents
-- [Nitt](#nitt)
- - [Table of Contents](#table-of-contents)
- - [Install](#install)
- - [Usage](#usage)
- - [API](#api)
- - [nitt](#nitt)
- - [on](#on)
- - [once](#once)
- - [when](#when)
- - [off](#off)
- - [emit](#emit)
- - [Caveats](#caveats)
- - [Contribute](#contribute)
- - [Acknowledments](#acknowledments)
- - [License](#license)
+* [Install](#install)
+* [Usage](#usage)
+* [Examples & Demos](#examples--demos)
+* [API](#api)
+* [Contribute](#contribute)
+* [License](#license)
## Install
@@ -33,107 +25,163 @@ This project uses [node](http://nodejs.org) and [npm](https://npmjs.com). Go che
$ npm install --save nitt
```
+Then with a module bundler like [rollup](http://rollupjs.org/) or [webpack](https://webpack.js.org/), use as you would anything else:
+
+```javascript
+// using ES6 modules
+import nitt from 'nitt'
+
+// using CommonJS modules
+var nitt = require('nitt')
+```
+
+The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com):
+
+```html
+<script src="https://unpkg.com/nitt/dist/nitt.umd.js"></script>
+```
+
+You can find the library on `window.nitt`.
+
## Usage
```js
-import nitt from 'nitt';
+import nitt from 'nitt'
-const emitter = nitt();
+const emitter = nitt()
// listen to an event
-emitter.on('foo', e => console.log('foo', e));
+emitter.on('foo', e => console.log('foo', e) )
// listen to all events
-emitter.on('*', (type, e) => console.log(type, e));
-
-// listen to a single event
-emitter.once('foo', e => console.log('foo', e));
+emitter.on('*', (type, e) => console.log(type, e) )
// fire an event
-emitter.emit('foo', { a: 'b' });
+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
-emitter.once('foo', onFoo); // listen to a single event
-
-// using a promise
-const promise = emitter.when('bar');
-promise.then(evt => console.log(evt));
-emitter.emit('bar', 'done'); // prints 'done' in the console
+emitter.on('foo', onFoo) // listen
+emitter.off('foo', onFoo) // unlisten
```
-## API
+### Typescript
-### nitt
+Set `"strict": true` in your tsconfig.json to get improved type inference for `nitt` instance methods.
-Nitt: Small (<300B) functional event emitter / pubsub.
+```ts
+import nitt from 'nitt';
-**Parameters**
+type Events = {
+ foo: string;
+ bar?: number;
+};
-- `all` **EventHandlerMap**
+const emitter = nitt<Events>(); // inferred as emitter<Events>
-Returns **Nitt**
+emitter.on('foo', (e) => {}); // 'e' has inferred type 'string'
-### on
+emitter.emit('foo', 42); // Error: Argument of type 'number' is not assignable to parameter of type 'string'. (2345)
+```
-Register an event handler for the given type.
+Alternatively, you can use the provided `emitter` type:
-**Parameters**
+```ts
+import nitt, { emitter } from 'nitt';
-- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for all events
-- `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event
+type Events = {
+ foo: string;
+ bar?: number;
+};
-### once
+const emitter: emitter<Events> = nitt<Events>();
+```
+
+## API
-Register an event handler that is executed just once.
+<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
-**Parameters**
+#### Table of Contents
-- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for all events
-- `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event
+* [nitt](#nitt)
+* [all](#all)
+* [on](#on)
+ * [Parameters](#parameters)
+* [off](#off)
+ * [Parameters](#parameters-1)
+* [emit](#emit)
+ * [Parameters](#parameters-2)
+* [once](#once)
+ * [Parameters](#parameters-3)
+* [when](#when)
+ * [Parameters](#parameters-4)
-### when
+### nitt
-Returns a promise for a single event
+Nitt: Tiny (~200b) functional event emitter / pubsub.
+
+Returns **Nitt**&#x20;
-**Parameters**
+### all
-- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for all events
+A Map of event names to registered handler functions.
-Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
+### on
+
+Register an event handler for the given type.
+
+#### Parameters
+
+* `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** Type of event to listen for, or `'*'` for all events
+* `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event
### off
Remove an event handler for the given type.
+If `handler` is omitted, all handlers of the given type are removed.
-**Parameters**
+#### Parameters
-- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to unregister `handler` from, or `"*"`
-- `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Handler function to remove
+* `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)
+* `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** Handler function to remove
### emit
Invoke all handlers for the given type.
-If present, `"*"` handlers are invoked after type-matched handlers.
+If present, `'*'` handlers are invoked after type-matched handlers.
-**Parameters**
+Note: Manually firing '\*' handlers is not supported.
-- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** The event type to invoke
-- `evt` **Any?** Any value (object is recommended and powerful), passed to each handler
+#### Parameters
-## Caveats
+* `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** The event type to invoke
+* `evt` **Any?** Any value (object is recommended and powerful), passed to each handler
-Keep in mind, due to the nature, of the once handlers that self deregister, you are currently not able to remove (off) a once / when handlers.
+### once
-## Contribute
+Register an event handler that is executed just once for the given type.
+
+#### Parameters
+
+* `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** Type of event to listen for, or `'*'` for all events
+* `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event
+
+### when
-If you want to contribute, I would be happy to look in to your PRs.
+Returns a promise for a single event
+
+#### Parameters
+
+* `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for any event
-## Acknowledments
+Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<any>**&#x20;
+
+## Contribute
-I would like to thank [Jason Miller](https://jasonformat.com/) (@developit) for developing `mitt`. `nitt` is no more than just `mitt` with a few extras.
+For reporting issues and submitting patches, send an email.
## License