UNPKG

@nathanfaucett/storage

Version:
97 lines (79 loc) 2.31 kB
var has = require("@nathanfaucett/has"), emptyFunction = require("@nathanfaucett/empty_function"), isNullOrUndefined = require("@nathanfaucett/is_null_or_undefined"), environment = require("@nathanfaucett/environment"); var storage = exports, window = environment.window, supportsStorage = (function() { try { return ( "localStorage" in window && !isNullOrUndefined(window.localStorage) ); } catch (e) { return false; } })(), localStorage, storageGet, storageHas, storageSet, storageRemove, storageClear, storageIsNative; if (supportsStorage) { localStorage = window.localStorage; storageHas = function(key) { return !isNullOrUndefined(localStorage.getItem(key)); }; storageGet = function(key) { return localStorage.getItem(key); }; storageSet = function(key, value) { localStorage.setItem(key, value); }; storageRemove = function(key) { return localStorage.removeItem(key); }; storageClear = function() { return localStorage.clear(); }; storageIsNative = emptyFunction.thatReturnsTrue; } else { localStorage = global.__LOCAL_STORAGE_POLYFILL__ || (global.__LOCAL_STORAGE_POLYFILL__ = {}); storageHas = function(key) { return !isNullOrUndefined(localStorage[key]); }; storageGet = function(key) { var item = localStorage[key]; if (isNullOrUndefined(item)) { return null; } else { return item; } }; storageSet = function(key, value) { localStorage[key] = value && value.toString ? value.toString() : value + ""; }; storageRemove = function(key) { return delete localStorage[key]; }; storageClear = function() { var key; for (key in localStorage) { if (has(localStorage, key)) { delete localStorage[key]; } } }; storageIsNative = emptyFunction.thatReturnsFalse; } storage.has = storageHas; storage.get = storageGet; storage.set = storageSet; storage.remove = storageRemove; storage.clear = storageClear; storage.isNative = storageIsNative;