Skip to content

johnsylvain/frecent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Frecent

Travis npm

Manage the "frencency" of objects

What is frecency?

Frecency is a heuristic that combines frequency and recency into a single measure. It is useful for predicting the likelihood of users revisiting certain links, websites, etc.

More information can be found here

Features

  • Simple API
  • Lightweight

Methods

frecent.load(items)

Load an array of items that you wish to be tracked. Ideally, this should be an array of Objects.

frecent.visit(prop, attr, [cb])

Visit an item by passing the property path you wish to target (prop) and the value of that target property (attr). Optional callback (cb).

Example: frecent.visit('data.name.first', 'John'). The first argument tells frecent the path to the target path. The second argument should be the expected value to the path specified. See Usage for more details.

frecent.get()

Retrieve the ranked objects. See Usage to see the returned data structure.

Usage

import Frecent from 'frecent'

const frecent = new Frecent()

// initialize with custom decay time
// Options: hour, day, week, month
// default: day
const frecent = new Frecent({
  decay: 'hour'
})

// Items to be tracked can be loaded from localStorage, a DB, etc
const itemsToTrack = [
    { url: 'https://example.com' },
    { url: 'https://example.org' }
]

// Alternatively, you can load previously parsed data
const itemsToTrack = [
  { 
    body: {url: 'https://example.com' },
    _visits: 2,
    _lastVisited: [Date|Timestamp],
    _weight: 140
  },
  { 
    body: {url: 'https://example.org' }, 
    _visits: 1,
    _lastVisited: [Date|Timestamp],
    _weight: 90
  }
]

frecent.load(itemsToTrack)

// 'Visit' a item (will increase the weight of the item.
// Therefore increasing the likelihood of revisiting)
frecent.visit('url', 'https://example.com')

// Example: if object has nested properties
// use dot or bracket syntax to notate nested properties
frecent.visit('data.url', 'https://example.com')

// Retrieve items ranked by 'Frecency'
const ranked = frecent.get()
// [
//   {
//     body: { url: 'https://example.com' },
//     _visits: 1, 
//     _lastVisited: [Date], 
//     _weight: 100, 
//   }
// ]

Releases

1.0.4: Specify a custom decay time 1.0.3: Use dot or bracket notation in visit method via object-path-resolve

Contributing

You can request a new feature by submitting an issue. If you would like to implement a new feature feel free to issue a Pull Request.

License

Frecent is protected under the MIT License