UNPKG

@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.15 kB
/** * 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).CookieStorage=n()}(this,function(){"use strict";function o(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}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&&o(e.prototype,n),t&&o(e,t)}(t,null,[{key:"keys",value:function(){return document.cookie.match(/[^\s=;]+(?==)/g)||[]}},{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,t){var o=2<arguments.length&&void 0!==t?t:{},i=o.maxAgeMs,r=void 0===i?"Infinity":i,u=o.domain,c=o.secure,a=o.path,f=encodeURIComponent(function(e){if("number"==typeof e){if(isNaN(e))return"NaN";if(!isFinite(e))return"Infinity"}return JSON.stringify(e)}(n)),s="".concat(e,"=").concat(f);if(!!r){var l=new Date,y=isFinite(+r)?+r:31536e6;l.setTime(l.getTime()+y);var d=l.toUTCString();s+=";expires=".concat(d)}s+=";path=".concat(a||"/"),u&&(s+=";domain=".concat(u)),c&&(s+=";secure=".concat(c?"secure":"")),document.cookie=s}},{key:"get",value:function(e){var n=new RegExp("(^| )".concat(e,"=([^;]*)(;|$)")),t=document.cookie.match(n);return t?function(n){try{if("undefined"===n)return;return"NaN"===n?NaN:"Infinity"===n?1/0:JSON.parse(n)}catch(e){return n}}(decodeURIComponent(t[2])):null}},{key:"has",value:function(n){return t.keys().some(function(e){return e===n})}},{key:"delete",value:function(e){return!!t.has(e)&&(t.set(e,t.get(e),{maxAgeMs:-1}),!0)}},{key:"clear",value:function(){t.keys().forEach(function(e){t.delete(e)})}},{key:"size",get:function(){return t.keys().length}}]),t}()});