0.0.10 • Published 7 years ago

event-rank v0.0.10

Weekly downloads
227
License
Apache-2.0
Repository
github
Last release
7 years ago

EventRank

npm version Build Status

Overview

Usage Notes

This library uses the es2015 Set type, Object.assign, and Array.from, so you may need an es6/es2015 polyfill if your environment does not support those features.

Algorithms

Installation

npm
npm install --save event-rank

Usage

To calculate EventRanks of correspondents involved in a series of events sorted by time...

import { EventRank } from 'event-rank';

/**
  * Events should be an Array of objects of the form...
  *    { time: <Number>, to: <String|Array<String>>, from: <String> }
  * sorted by the time property.
  *
  * NOTE: default parameters assume time is in milliseconds since the epoch
  */
const events = [ /* Add events here... */ ];

const R = new EventRank({ events });

// compute EventRank values
R.compute();

console.log(R.ranks); // => { ranks... }


/**
  * To lazily compute a stream of events, call step()...
  *
  * Note, the model will need to be initially fed a set of
  * correspondents to track
  */

const correspondents = [
  // email address (or whatever is in the to/from properties of the events) 1...
  // email address 2...
];

const R = new EventRank({ correspondents });

eventStream.on('event', event => {
  R.step(event);
});

// if lazily computing, the ranks need to be finished by calling done();
R.done();

console.log(R.ranks); // => { ranks... }


/**
 * If 2 (or more) events can occur at the exact same time,
 * EventRank can process "bucketed" events...
 */

const correspondents = [
  // email address 1...
  // email address 2...
];

const R = new EventRank({ correspondents });

let bucket;
eventStream.on('event', event => {
  if (bucket && bucket.time !== event.time) {
    R.step(bucket);
    bucket = { events: [ event ], time: event.time };
  } else if (!bucket) {
    bucket = { events: [ event ], time: event.time };
  } else {
    bucket.events.push(event);
  }
});

// include last bucket...
R.step(bucket);

// if lazily computing, the ranks need to be finished by calling done();
R.done();

console.log(R.ranks); // => { ranks... }
0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago