aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md62
-rw-r--r--package.json6
-rw-r--r--src/index.test.ts9
3 files changed, 48 insertions, 29 deletions
diff --git a/README.md b/README.md
index c572f4f..84efa8e 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,10 @@
> Small, functional event emitter / pubsub.
-- **Small:** less than 300 bytes gzipped
-- **Familiar:** similar names & 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
+- **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
## Table of Contents
@@ -35,43 +35,45 @@ $ npm install --save 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) )
+emitter.on('*', (type, e) => console.log(type, e));
+
+// listen to a single event
+emitter.once('foo', e => console.log('foo', e));
// fire an event
-emitter.emit('foo', { a: 'b' })
+emitter.emit('foo', { a: 'b' });
// working with handler references:
function onFoo() {}
-emitter.on('foo', onFoo) // listen
-emitter.off('foo', onFoo) // unlisten
-emitter.once('foo', onFoo) // listen for a single event
+emitter.on('foo', onFoo); // listen
+emitter.off('foo', onFoo); // unlisten
+emitter.once('foo', onFoo); // listen to a single event
-const promise = emitter.when('bar')
-promise.then(evt => { console.log(evt) });
+// using a promise
+const promise = emitter.when('bar');
+promise.then(evt => console.log(evt));
emitter.emit('bar', 'done'); // prints 'done' in the console
```
## API
-<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
-
### nitt
Nitt: Small (<300B) functional event emitter / pubsub.
**Parameters**
-- `all` **EventHandlerMap**
+- `all` **EventHandlerMap**
-Returns **Nitt**
+Returns **Nitt**
### on
@@ -79,8 +81,8 @@ Register an event handler for the given type.
**Parameters**
-- `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` **[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
### once
@@ -88,8 +90,8 @@ Register an event handler that is executed just once.
**Parameters**
-- `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` **[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
### when
@@ -97,9 +99,9 @@ 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 all events
+- `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for all events
-Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
+Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
### off
@@ -107,8 +109,8 @@ Remove an event handler for the given type.
**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)** Type of event to unregister `handler` from, or `"*"`
+- `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Handler function to remove
### emit
@@ -117,8 +119,12 @@ If present, `"*"` handlers are invoked after type-matched handlers.
**Parameters**
-- `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
+- `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
+
+## Caveats
+
+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.
## Contribute
diff --git a/package.json b/package.json
index f7e377c..3b758fb 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,12 @@
{
"name": "nitt",
- "version": "1.0.1",
+ "version": "1.0.2",
"author": "Marin Ivanov <[email protected]>",
"license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/metala/nitt.git"
+ },
"scripts": {
"build": "microbundle",
"dev": "microbundle watch",
diff --git a/src/index.test.ts b/src/index.test.ts
index af07805..eca7fbb 100644
--- a/src/index.test.ts
+++ b/src/index.test.ts
@@ -81,6 +81,15 @@ describe('nitt#', () => {
inst.emit('foo', 1);
expect(events.foo).toHaveLength(0);
});
+
+ it('should not allow to remove a once handler', () => {
+ let foo = jest.fn();
+ inst.once('foo', foo);
+
+ expect(events.foo).toHaveLength(1);
+ inst.off('foo', foo);
+ expect(events.foo).toHaveLength(1);
+ });
});
describe('when()', () => {