flexible-storage

Cache on frontend using LocalStorage

Usage no npm install needed!

<script type="module">
  import flexibleStorage from 'https://cdn.skypack.dev/flexible-storage';
</script>

README

Flexible Storage

Build Status codecov

Module for front-end storage using LocalStorage (or any another Storage).
It introduces some features:

  • allows choose between localStorage and sessionStorage
  • define expiration date (using Moment or native Date instance)
  • define storage key prefix or filter
  • store any object as JSON
  • written on TypeScript and includes TypeScript definition files

Installation

Using NPM:

npm i --save flexible-cache

Usage

You can use default import to use FlexibleStorage with Local

Instantiating

import { FlexibleStorage } from "flexible-cache";

// Using Session Storage and some string prefix
const sessionFlexibleStorage = new FlexibleStorage(
    window.sessionStorage,
    'some_prefix_' // this prefix will be used internally when working with storage
);

// Using Local Storage and function prefix
const prefix = (key) => "<key>" + key + "</key>";
const FlexibleStorage = new FlexibleStorage(window.localStorage, prefix);

Note: prefix may be skipped

Caching values

import { FlexibleStorage } from "flexible-cache";

const expires = new Date(); // also can be Moment.js instance
const flexibleStorage = new FlexibleStorage(localStorage);

flexibleStorage.push('key', {
    someProperty: 2,
}, expires);

Getting values

import { FlexibleStorage }, { arrayOrEmptyArray } from "flexible-cache";

const flexibleStorage = new FlexibleStorage(localStorage);
// Value will be stored array or empty array if nothing stored
let value = flexibleStorage.pull('key', arrayOrEmptyArray);
// Just to pull value with validating only key expiring
value = flexibleStorage.pull('key');

Find more validators here

Other

import { FlexibleStorage } from "flexible-cache";

const flexibleStorage = new FlexibleStorage(localStorage, 'prefix_');
flexibleStorage.exists('key'); // will try to find and validate `prefix_key` in LocalStorage
flexibleStorage.remove('key'); // will remove `prefix_key` from LocalStorage

Testing

npm test

Author

Alexander Letnikow