localstorage-fifo

JavaScript library for interacting with localStorage safely.

Usage no npm install needed!

<script type="module">
  import localstorageFifo from 'https://cdn.skypack.dev/localstorage-fifo';
</script>

README

Fifo

Build Status Test Coverage Coverage Status devDependency Status npm version npm downloads

First In First Out accounting for JavaScript localStorage.

npm install --save localstorage-fifo

About

localStorage doesn't have an unlimited amount of space, and just throws an error when you try to save to it when its full. fifo gracefully handles saving data to localStorage: when you run out of room it simply removes the earliest item(s) saved.

Additionally, fifo also stores all of your key:value pairs on one key in localStorage for better performance.

API

// create a collection stored on `tasks` key in localStorage
const collection = new Fifo({ namespace: 'tasks' });

// set an item
collection.set('task-1', 'close two tickets');

// retrieve an item - preference for fixed items, then FIFO queue
var storedTask = collection.get('task-1'); //> 'close two tickets'

// retrieve all items by sending no arguments to get
var tasks = collection.get();

// remove an item - preference for fixed items, then FIFO queue
collection.remove('task-1');
// empty an entire FIFO queue
collection.empty();

// set any JavaScript object, don't have to JSON.parse or JSON.stringify() yourself when setting and getting.
collection.set('task:2', { due: 'sunday', task: 'go to church' });
collection.set('whatevz', [1,2,3]);

// get a list of all keys, both those in fifo and fixed localStorage
collection.keys(); /* Returns an array of key names */

// Check to see if a key exists in the FIFO queue or fixed localStorage
collection.has('key'); /* true or false */

Please see the source for more details.

Browser Support

fifo assumes the browser has localStorage and JSON. There is a localStorage shim but it will not persist.

Testing

npm run lint
npm run make
npm run test

License

MIT-Style license

Originally forked from rpflorence to fix some issues.