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 🙏

© 2024 – Pkg Stats / Ryan Hefner

fn-cache

v1.0.8

Published

Caching function for browsers and node.

Downloads

5

Readme

Function caching in Javascript Build Status Coverage Status npm version

Cache for functions in javascript. Supports CommonJs, AMD, ES6 modules and regular script tag.

Basic usage:

import cache from 'fn-cache';

let fetchUsers = cache(200)(() => {
  return fetch('/users');
});

fn-cache implements the decorator pattern. It takes in the cache lifetime (milliseconds) and returns a function. Call that with the function you want to cache and enjoy instant application performance boost! 😎

TIP: Use Infinity time if you want the cache to stay valid forever.

Installation

npm install fn-cache

Usage

fn-cache can cache regular function or class methods. It can be used as a regular function or as a ES7 decorator 💪.
To clear cache, each decorated function is added a clearCache method that when called, clears that function cache.

ES7 - decorator

Cache methods are autobinded

import cache from 'fn-cache';

class UserManager {

  constructor(usersEndpoint) {
    this.endpoint = usersEndpoint;
  }

  // cache will be vaild for 200 milliseconds
  @cache(200)
  getAll() {
    // this.endpoint gets the right value
    // because  getAll is autobinded
    return fetch(this.endpoint).then((response) => {
      return response.json();
    });
  }
}

let manager = new UserManager('/users');

// calling the cache function works as expected
manager.getAll();

// we can clear the cache by calling clearCache
// although its no necessary on most cases.
manager.getAll.clearCache()
ES6

import cache from 'fn-cache';

function reallyExpensiveOperation(...args) {
  // expensive operations
  return expensiveToCalculateResult;
}

// We don't want the cache to be invalidated, thats why we use
// Infinity, if you want to give the cache a lifetime, just pass
// in a {Number} representing milliseconds.
let operation = cache(Infinity)(reallyExpensiveOperation);
ES5 - Node

var cache = require('fn-cache');

var sumLongArray = cache(Infinity)(function(longArray) {
  return longArray.reduce(function(prev, curr) {
    return prev + curr;
  });
});
ES5 - Browser

Include <script src="lib/fn-cache.js" ></script> in your page

var sqrt = fnCache(Infinity)(Math.sqrt);