UNPKG

@minisss/sessionstorage

Version:
2 lines (1 loc) 2.28 kB
"use strict";var e="1.0.0";function r(e,r={}){const s=String(e).trim();if(!r.prefix)return s;const n=String(r.prefix||"").trim();return n?`${n}_${s}`:`${s}`}function s(){try{return!!window.sessionStorage}catch(e){return!1}}function n(e){if(!s())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.key(e)}function t(e,n={}){if(!s())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.removeItem(r(e,n))}function o(e,n){if(!s())throw new Error("@minisss/sessionstorage is muse run in browser");const o=sessionStorage.getItem(r(e,n));if(!o)return o;try{const r=JSON.parse(o);return r?r.maxAge&&r.maxAge<=Date.now()?t(e,n):r.data:null}catch(e){return o}}function i(e,n,t={}){if(!s())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:n})))}function u(){if(!s())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.clear()}function a(e,n={}){if(!s())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(s=>s===r(e,n))}function g(){if(!s())throw new Error("@minisss/sessionstorage is muse run in browser");return sessionStorage.length}var c={get VERSION(){return e},get length(){return g()},get isSupport(){return s()},key:n,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 n(e)},c.get=function(e,s={}){return o(e,Object.assign(Object.assign({},r),s))},c.set=function(e,s,n={}){return i(e,s,Object.assign(Object.assign({},r),n))},c.del=function(e,s={}){return t(e,Object.assign(Object.assign({},r),s))},c.clear=function(){return u()},c.has=function(e,s={}){return a(e,Object.assign(Object.assign({},r),s))},new Proxy(c,{get:(e,r)=>"length"===r?g():"isSupport"===r?s():e[r]})}};module.exports=c;