@minisss/sessionstorage
Version:
A Window sessionstorage Manager Lib
2 lines (1 loc) • 2.49 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).MSSessionStorage=r()}(this,function(){"use strict";var e="1.0.0";function r(e,r={}){const n=String(e).trim();if(!r.prefix)return n;const s=String(r.prefix||"").trim();return s?`${s}_${n}`:`${n}`}function n(){try{return!!window.sessionStorage}catch(e){return!1}}function s(e){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.key(e)}function t(e,s={}){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.removeItem(r(e,s))}function o(e,s){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");const o=sessionStorage.getItem(r(e,s));if(!o)return o;try{const r=JSON.parse(o);return r?r.maxAge&&r.maxAge<=Date.now()?t(e,s):r.data:null}catch(e){return o}}function i(e,s,t={}){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");const{maxAge:o,expires:i}=null!=t?t:{};if("number"==typeof o&&o<=0)throw new Error("maxAge must be greater than 0");if(i&&"[object Date]"===Object.prototype.toString.call(i))throw new Error("expires must be greater than now");const u=o?{maxAge:Date.now()+1e3*o}:i?{maxAge:i.getTime()}:{};return sessionStorage.setItem(r(e,t),JSON.stringify(Object.assign(Object.assign({},u),{data:s})))}function u(){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.clear()}function a(e,s={}){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");const t=sessionStorage.length,o=[];for(let e=0;e<t;e++)o.push(sessionStorage.key(e));return o.some(n=>n===r(e,s))}function g(){if(!n())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.length}return{get VERSION(){return e},get length(){return g()},get isSupport(){return n()},key:s,get:o,set:i,del:t,clear:u,has:a,create:function(r={}){const c=Object.create(null);return c.VERSION=e,c.key=function(e){return s(e)},c.get=function(e,n={}){return o(e,Object.assign(Object.assign({},r),n))},c.set=function(e,n,s={}){return i(e,n,Object.assign(Object.assign({},r),s))},c.del=function(e,n={}){return t(e,Object.assign(Object.assign({},r),n))},c.clear=function(){return u()},c.has=function(e,n={}){return a(e,Object.assign(Object.assign({},r),n))},new Proxy(c,{get:(e,r)=>"length"===r?g():"isSupport"===r?n():e[r]})}}});