@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
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).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}()});