xtorage

Web Storage made simple and more powerful.

Usage no npm install needed!

<script type="module">
  import xtorage from 'https://cdn.skypack.dev/xtorage';
</script>

README

Xtorage

Build Status Coverage Status npm version

Install

$ npm i --save xtorage

What is this?

This is a tiny, yet powerful framework-agnostic wrapper for the web storage.

You shouldn't keep parsing strings/arrays/numbers/objects left and right to save/retrieve stuff into and from the storage.

Just call save(), saveInFirstPosition(), remove(), removeLast() and so on.

You can use it pretty much everywhere that is javascript in the client; So, it'll work for: angular, aurelia, vue, electron, etc.

API

constructor

new Xtorage(storage: 'localStorage' | 'sessionStorage', unique: boolean)
  let _x1 = new Xtorage('localStorage');
  _x1.save('k', 1); // saves 1, with the key 'k' in the localStorage

  let _x2 = new Xtorage('sessionStorage');  
  _x2.save('k', 2); // saves 1, with the key 'k' in the sessionStorage

  let _x3 = new Xtorage();
  _x3.save('k', 3); // saves 1, with the key 'k' in the localStorage - which is the default


  let _x4 = new Xtorage(undefined, true);

  _x4.saveInFirstPosition('k', 1); // array length is 1  
  _x4.saveInFirstPosition('k', 1); // array length is still 1, unique is set to true

  let _x5 = new Xtorage(undefined, false);

  _x5.saveInFirstPosition('k', 1); // array length is 1  
  _x5.saveInFirstPosition('k', 1); // array length is 2, unique is set to false

  let _x6 = new Xtorage();

  _x6.saveInFirstPosition('k', 1); // array length is 1  
  _x6.saveInFirstPosition('k', 1); // array length is 2, unique, by default, is false

save

save(key:string, info:any):void
  let _x = new Xtorage();

  _x.save('k', {a: 1});

  console.log(_x.get('k')); // {a: 1}

saveInFirstPosition

  saveInFirstPosition(key:string, info:any):void
  let _x = new Xtorage();

  _x.saveInFirstPosition('k', {a: 1});

  console.log(_x.get('k')); // [{a: 1}]

  _x.saveInFirstPosition('k', {b: 2});

  console.log(_x.get('k')); // [{b: 2}, {a: 1}]

saveInLastPosition

saveInLastPosition(key:string, info:any):void
  let _x = new Xtorage();

  _x.saveInLastPosition('k', {a: 1});

  console.log(_x.get('k')); // [{a: 1}]

  _x.saveInLastPosition('k', {b: 2});

  console.log(_x.get('k')); // [{a: 1}, {b: 2}]

get

get(key:string):any
  let _x = new Xtorage();

  _x.save('k', [1, true, {a: 1}, [{c: 'abc'}]);

  console.log(_x.get('k')); // [1, true, {a: 1}, [{c: 'abc'}]

getFirst

getFirst(key:string):void
  let _x = new Xtorage();

  _x.saveInLastPosition('k', {a: 1});

  console.log(_x.getFirst('k')); // {a: 1}

  _x.saveInLastPosition('k', {b: 2});

  console.log(_x.get('k')); // {a: 1}

getLast

getLast(key:string):void
  let _x = new Xtorage();

  _x.saveInLastPosition('k', {a: 1});

  console.log(_x.getFirst('k')); // {a: 1}

  _x.saveInLastPosition('k', {b: 2});

  console.log(_x.get('k')); // {b: 2}

remove

remove(key:string):void
  let _x = new Xtorage();

  _x.save('k', {a: 1});

  console.log(_x.getFirst('k')); // {a: 1}

  _x.remove('k');

  console.log(_x.get('k')); // undefined

removeAll

removeAll():void
  let _x = new Xtorage();

  _x.save('k', {a: 1});
  _x.save('y', [{somethingElse: true}]);

  console.log(_x.get('k')); // {a: 1}
  console.log(_x.get('y')); // [{somethingElse: true}]

  _x.removeAll();

  console.log(_x.get('k')); // undefined
  console.log(_x.get('y')); // undefined

removeFirst

removeFirst(key:string):void
  let _x = new Xtorage();

  _x.saveInFirstPosition('k', {a: 1});
  _x.saveInLastPosition('k', {b: 2});

  console.log(_x.get('k')); // [{a: 1}, {b: 2}]

  _x.removeFirst('k');

  console.log(_x.get('k')); // [{b: 2}]

removeLast

removeLast(key:string):void
  let _x = new Xtorage();

  _x.saveInFirstPosition('k', {a: 1});
  _x.saveInLastPosition('k', {b: 2});

  console.log(_x.get('k')); // [{a: 1}, {b: 2}]

  _x.removeLast('k');

  console.log(_x.get('k')); // [{a: 1}]