Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

feather-cache

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

feather-cache

A Simple Lightweight Pluggable Key-Value Cache For Multiple Storage Options.

  • 1.3.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

feather-cache

A Simple Pluggable Key-Value Cache For Multiple Storage Options.

npm Travis styled with prettier TypeScript Ready

Install

npm i --save feather-cache

You don't have to install type definitions for typescript. It's built in.

What

This is a simple caching frame which can be used with available drivers or you can easily write one your own. If no drivers are provided (default) works like an in-memory cache. But that is not what this module intended for. The in-memory cache is provided for the sake of convenience. If that is what all you want, lru-cache is recommended.

Actual use case for this module is to use with a driver (mongodb-driver or indexed-db-driver etc.) which enables persistent caching.

Example

in memory cache
const { FeatherCache } = require('feather-cache');
// or
import { FeatherCache } from 'feather-cache';

// init
const fStore = new FeatherCache({
  maxAgeInMs: 60 * 1000, // 1 min expiry
});

// ...async fn...
await fStore.set('hiya', 'mm!');

await fStore.get('hiya'); //-> mm!
await fStore.fetch('hiya'); //-> { key: 'hiya', val: 'mm!' }

// ... after expiry time
await fStore.get('hiya'); //-> null
with a driver
// ...
const fStore = new FeatherCache(driver);
// ...

APIs

functiondescription
FeatherCache.set(key, val, opt)returns Promise.
key: string
val: any data to be stored
opt: (optional) { maxAgeInMs: 1000 }, sets expiry time.
FeatherCache.get(key)returns Promise which resolves to the stored data. else, null.
If data has expired returns null and then deletes the entry behind the scenes.
FeatherCache.fetch(key)returns Promise which resolves to stored data. The difference between get and fetch is that, fetch returns the stored data one more time after its expiry and then deletes it.
More info:
get: finds data -> if expired deletes it -> returns null.
fetch: finds data -> if expired returns it -> and then deletes it.
However, you can control this behavior by passing the delete option (default delete: true). Eg: fStore.fetch('hiya', { delete: false }). This sets the expiry flag but don't delete it. Sometimes you may find this helpful.
FeatherCache.del(key)returns Promise deletes the entry

Configuration / writing drivers

A driver is nothing but a configuration object which exposes a persistent storage interface.

const dbDriver = {
  maxAgeInMs: 60 * 1000 * 5, // default expiry 5 mins
  setFn: async function(key, val) {
    // db interface to store data
    await Db.create({ key, val });
  },
  getFn: async function(key) {
    // db interface to get data
    const data = await Db.find({ where: { key } });
    return data;
  },
  delFn: async function(key) {
    // db interface to delete data
    await Db.remove({ where: { key } });
  },
};

// pass in the driver
const featherStore = new FeatherCache(dbDriver);
// ...

An example: feather-cache-indexeddb.

Those who publish drivers advised to follow the naming convention:

feather-cache-<storage_option_name>

Also, attach the key word feather-cache.


used version of ts-np generator

Licence

MIT © Vajahath Ahmed

Keywords

FAQs

Package last updated on 14 Apr 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc