node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey »



An event emitter that emits only new events. Because sometimes we don't care about old events.

Build Status Dependency Status codecov


const NewsEmitter = require('newsemitter');
const news = new NewsEmitter();
news.on('item', (item) => {
  console.log('new item:', item.title);
news.emit('item', { title: 'hello there' });
news.emit('item', { title: 'hello world' });
news.emit('item', { title: 'hello there' });
news.emit('item', { title: 'hey' });
news.emit('item', { title: 'hey' });
news.emit('item', { title: 'hey' });
// new item: hello there
// new item: hello world
// new item: hey


new NewsEmitter([options])

Creates an instance of a NewsEmitter. options can be

  • filter - An array of events that will be affected. If not given, events names will not be filtered.
  • ignore - An array of events that will be ignored. Defaults to ['newListener'].
  • maxHistory - Maximum number of history items to remember. Default is 10.
  • manageHistory - If true, does not add emitted events to history. Instead expects you to manually manage history with addHistory(). Defaults to false.
  • identifier - Function used to compare one event to another. Takes 1 arguments, the array-like arguments that NewsEmitter#emit() is called with. Should return a string. Default is JSON.stringify.


Emits an event, only if it has not been emitted before. Returns true if item is new and emtted. False otherwise.


Resets history of an event. If no event given, resets all history.

NewsEmitter#addHistory(event, arr)

Adds items in arr as event's history. Truncated as necessary based on max history length considering the last item in the array as newest.


npm install newsemitter


Tests are written with mocha

npm test