npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

frecent

v1.0.4

Published

Track and rank objects by their frecency

Downloads

7

Readme

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