event-rank
TypeScript icon, indicating that this package has built-in type declarations

0.0.10 • Public • Published

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... }

Dependents (1)

Package Sidebar

Install

npm i event-rank

Weekly Downloads

0

Version

0.0.10

License

Apache-2.0

Last publish

Collaborators

  • bsouthga
  • christian.yang