@thetaproom/simple-cache
A tiny, zero-dependency library which implements additional utilities on top of the Storage API we're all used to.
Last updated 2 months ago by jeremiah_taproom .
ISC · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @thetaproom/simple-cache 
SYNC missed versions from official npm registry.

Cacher

A tiny, zero-dependency library which implements additional utilities on top of the Storage API we're all used to. Features include:

  • expiration on a global or resource level (hours, minutes, days)
  • implement any storage mechanism that implements the Storage API interface
  • archiving for building localized history of state
  • handle non-blocking and blocking storage operations

To install

yarn add simple-cache

Usage

The utility class implements the same interface you're used with the native (Storage Web API)[https://developer.mozilla.org/en-US/docs/Web/API/Storage].

    const cache = new Cache({
      storage: localStorage || sessionStorage,
      expiration: {
        amount: 1,
        unit: "minutes" || "hours" || "days"
      },
    });

    /**
     * @param key
     * @param value
     * @param expirationSettings - optional
     */
    cache.setItem(
      "resource",
      {
        test:
        "test"
      },
      {
        amount: 60,
        unit: "minutes"|"hours"|"days",
        neverExpire: true|false
      }
    )

    /**
     * @param key name of key being cahed
     * @param value value being stored, uses JSON.stringify for all implemenations currently
     */
    cache.setItem("resource", { test: "test" });

    /**
     * @returns cached resource or undefined if expired
     */
    cache.getItem("resource");

    /**
     * get item return a wrapped version of your data with the expiration date and settings
     * @param {string} resource get from cache
     * @param {boolean} returnOld optional, if expired, return resource and expiration time
     */
    cache.getItem("resource", true);

    /**
     * @returns {void}
     */
    cache.clear()

    /**
     * @returns {void}
     */
    cache.removeItem("resource")

    /**
     * the library assumes soft deleting if you pass
     * expirations to removeItem and soft deleted items
     * can be retrieved from cache.getRemovedItem(original key)
     *
     * if expiration is set, this method will return the key to the archived resource
     * @returns {void|string}
     */
    cache.removeItem("resource", expiration)

    /**
     * change the global configuration later in the appliction
     * lifecycle
     */
    cache.setExpiration({
      amount: 2,
      unit: "days",
      neverExpire: true, // never expire overrides other settings
    })

Cacher is static utility class so to extend upon it you can simply inherit or inject the class.

Settings

inject config options into the new instances of the class. The flexibility here allows for you to create many different types of storage i.e. one for localStorage, one for sessionStorage.

Defaults:

  • expiration defaults to 30 minutes
  • storage defaults to sessionStorage
  • never expire defaults to false

you can change these defaults on a global level by passing a config object into the constructor of the class. This give you the flexibility to generate as many caches as you need.

{
  storage: sessionStorage || localStorage
  expiration: {
    amount: 30,
    unit: "minutes" | "hours" | "days"
  }
}

To test

yarn test

Current Tags

  • 1.0.12                                ...           latest (2 months ago)

9 Versions

  • 1.0.12                                ...           2 months ago
  • 1.0.11                                ...           2 months ago
  • 1.0.10                                ...           2 months ago
  • 1.0.9                                ...           2 months ago
  • 1.0.8                                ...           2 months ago
  • 1.0.7                                ...           2 months ago
  • 1.0.6                                ...           2 months ago
  • 1.0.5                                ...           2 months ago
  • 1.0.0                                ...           2 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 9
Dependencies (0)
None
Dev Dependencies (16)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |