From bdf8fce4c2a1a51e1b2996e2dde8c3cf98dc8417 Mon Sep 17 00:00:00 2001 From: Marin Ivanov Date: Sat, 27 Apr 2019 09:45:34 +0300 Subject: Version 1.0.2 Add a repository link to the package.json file. Improve the usage documentation and add ceveats section about once/when. Add a test to ensure the current behaviour of once() and off(). --- README.md | 62 ++++++++++++++++++++++++++++++------------------------- package.json | 6 +++++- src/index.test.ts | 9 ++++++++ 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 - - ### 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 ", "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()', () => { -- cgit v1.2.3