stereo

0.4.0 • Public • Published

Coveralls – test coverage Travis – build status David – status of dependencies Code style: airbnb

stereo

The event emitter power kit.
Supports multiple channels
and promise-like caching.

“EventEmitter compared to RxJS is analogous to roller blades versus cars.” This is a super-lightweight “build your own car” kit.

stereo is a super-lightweight alternative to RxJS. A collection of micro modules you can mix, match and extend.

Create your own slim and powerful event emitter.

Note: I’m very tied up with work at the moment. I’m using this library in my own projects, but I still need a while to document it, do coverage reports, changelog and the marketing :) Ideas and questions are very welcome.

Installation

$ npm install stereo

Usage

The “batteries included” way

import ø from 'stereo';
 
let myLibrary = 'anything';
Object.assign(myLibrary, ø());
 
myLibrary.on('channel one', console.log.bind(console));
myLibrary.emit('channel one', 'All arguments are passed on.', /Not kiddin'/);
//» All arguments are passed on. /Not kiddin'/
 
myLibrary.off('channel one');
myLibrary.emit('channel one', 'No-one’s listening anymore.');
 
// Boring? Don’t give up – read on!

The “DIY” way

import øEmit from 'stereo/emit';
import øWhen from 'stereo/when';
 
let myLibrary = 'anything';
myLibrary.emit = øEmit();
myLibrary.when = øWhen(myLibrary.emit);
 
// Miracles happen!
 
myLibrary.emit('channel one', 'Yay, this has been cached!');
 
// Time goes by...
myLibrary.when(
  ['channel one', 'channel two'],
  console.log.bind(console)
);
//» Yay, this has been cached!
 
myLibrary.emit(
  ['channel one', 'channel two', 'channel three']
  'This is called http://j.mp/demultiplexing .'
);
//» This is called http://j.mp/demultiplexing .

License

MIT © Tomek Wiszniewski

Package Sidebar

Install

npm i stereo

Weekly Downloads

4

Version

0.4.0

License

MIT

Last publish

Collaborators

  • tomekwi