Skip to content
Snippets Groups Projects
Select Git revision
  • 29d59f972da9828efcf7a1e2bd3c981342a30bcc
  • master default
  • develop
  • map_stuff
  • bullet
  • player_stuff
  • enemy
  • login_page
  • mob_stuff
  • register_page
10 results

README.md

Blame
  • Alex Hung's avatar
    ah3472 authored
    9e622e4d
    History

    sessionStorage & localStorage for NodeJS

    | dom-storage | atob | btoa | unibabel.js | Sponsored by ppl

    An inefficient, but as W3C-compliant as possible using only pure JavaScript, DOMStorage implementation.

    Purpose

    This is meant for the purpose of being able to run unit-tests and such for browser-y modules in node.

    Usage

    var Storage = require('dom-storage');
    
    // in-file, doesn't call `String(val)` on values (default)
    var localStorage = new Storage('./db.json', { strict: false, ws: '  ' });
    
    // in-memory, does call `String(val)` on values (i.e. `{}` becomes `'[object Object]'`
    var sessionStorage = new Storage(null, { strict: true });
    
    var myValue = { foo: 'bar', baz: 'quux' };
    
    localStorage.setItem('myKey', myValue);
    myValue = localStorage.getItem('myKey');
    
    // use JSON to stringify / parse when using strict w3c compliance
    sessionStorage.setItem('myKey', JSON.stringify(myValue));
    myValue = JSON.parse(localStorage.getItem('myKey'));

    API

    • getItem(key)
    • setItem(key, value)
    • removeItem(key)
    • clear()
    • key(n)
    • length

    Options

    • strict - whether to stringify strictly as text [Object object] or as json { foo: bar }.
    • ws - the whitespace to use saving json to disk. Defaults to ' '.

    Tests

    0 === localStorage.length;
    null === localStorage.getItem('doesn\'t exist');
    undefined === localStorage['doesn\'t exist'];
    
    localStorage.setItem('myItem');
    'undefined' === localStorage.getItem('myItem');
    1 === localStorage.length;
    
    localStorage.setItem('myItem', 0);
    '0' === localStorage.getItem('myItem');
    
    localStorage.removeItem('myItem', 0);
    0 === localStorage.length;
    
    localStorage.clear();
    0 === localStorage.length;

    Notes

    • db is read in synchronously
    • No callback when db is saved
    • Doesn't not emit Storage events (not sure how to do)

    License

    Code copyright 2012-2018 AJ ONeal

    Dual-licensed MIT and Apache-2.0

    Docs copyright 2012-2018 AJ ONeal

    Docs released under Creative Commons.