@livelybone/storage
Version:
A module for localStorage, support custom solution of quota exceeded. When localStorage is not supported by browser, it will be degrading to use Cookie or Map
10 lines (8 loc) • 2.05 kB
JavaScript
/**
* Bundle of @livelybone/storage
* Generated: 2020-06-03
* Version: 1.7.2
* License: MIT
* Author: 2631541504@qq.com
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).LocalStorageStorage=n()}(this,function(){"use strict";function r(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(n){try{if("undefined"===n)return;return"NaN"===n?NaN:"Infinity"===n?1/0:JSON.parse(n)}catch(e){return n}}return function(){function t(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}return function(e,n,t){n&&r(e.prototype,n),t&&r(e,t)}(t,null,[{key:"keys",value:function(){return Object.keys(localStorage)}},{key:"values",value:function(){return t.keys().map(function(e){return t.get(e)})}},{key:"entries",value:function(){return t.keys().map(function(e){return[e,t.get(e)]})}},{key:"forEach",value:function(n){t.keys().forEach(function(e){return n(t.get(e),e,t)})}},{key:"set",value:function(e,n){var t=function(e){if("number"==typeof e){if(isNaN(e))return"NaN";if(!isFinite(e))return"Infinity"}return JSON.stringify(e)}(n);localStorage.setItem(e,t)}},{key:"get",value:function(e){return o(localStorage.getItem(e))}},{key:"has",value:function(e){return null!==localStorage.getItem(e)}},{key:"delete",value:function(e){return!!t.has(e)&&(localStorage.removeItem(e),!0)}},{key:"clear",value:function(){localStorage.clear()}},{key:"addHandler",value:function(n){if(window.addEventListener){var e=function(e){n({key:e.key,oldValue:o(e.oldValue),newValue:o(e.newValue),event:e})};return window.addEventListener("storage",e),e}return null}},{key:"removeHandler",value:function(e){if(window.removeEventListener){var n=function(e){e instanceof Function&&window.removeEventListener("storage",e)};e instanceof Array?e.forEach(n):n(e)}}},{key:"size",get:function(){return t.keys().length}}]),t}()});