@minisss/localstorage
Version:
A Window localStorage Manager Lib
2 lines (1 loc) • 2.45 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).MSLocalStorage=r()}(this,function(){"use strict";var e="1.0.5";function r(e,r={}){const t=String(e).trim();if(!r.prefix)return t;const n=String(r.prefix||"").trim();return n?`${n}_${t}`:`${t}`}function t(){try{return!!window.localStorage}catch(e){return!1}}function n(e){if(!t())throw new Error("@minisss/localstorage is muse run in browser");return localStorage.key(e)}function o(e,n={}){if(!t())throw new Error("@minisss/localstorage is muse run in browser");return localStorage.removeItem(r(e,n))}function s(e,n){if(!t())throw new Error("@minisss/localstorage is muse run in browser");const s=localStorage.getItem(r(e,n));if(!s)return s;try{const r=JSON.parse(s);return r?r.maxAge&&r.maxAge<=Date.now()?o(e,n):r.data:null}catch(e){return s}}function i(e,n,o={}){if(!t())throw new Error("@minisss/localstorage is muse run in browser");const{maxAge:s,expires:i}=null!=o?o:{};if("number"==typeof s&&s<=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 a=s?{maxAge:Date.now()+1e3*s}:i?{maxAge:i.getTime()}:{};return localStorage.setItem(r(e,o),JSON.stringify(Object.assign(Object.assign({},a),{data:n})))}function a(){if(!t())throw new Error("@minisss/localstorage is muse run in browser");localStorage.clear()}function u(e,n={}){if(!t())throw new Error("@minisss/localstorage is muse run in browser");const o=localStorage.length,s=[];for(let e=0;e<o;e++)s.push(localStorage.key(e));return s.some(t=>t===r(e,n))}function c(){if(!t())throw new Error("@minisss/localstorage is muse run in browser");return localStorage.length}return{get VERSION(){return e},get length(){return c()},get isSupport(){return t()},key:n,get:s,set:i,del:o,clear:a,has:u,create:function(r={}){const l=Object.create(null);return l.VERSION=e,l.key=function(e){return n(e)},l.get=function(e,t={}){return s(e,Object.assign(Object.assign({},r),t))},l.set=function(e,t,n={}){return i(e,t,Object.assign(Object.assign({},r),n))},l.del=function(e,t={}){return o(e,Object.assign(Object.assign({},r),t))},l.clear=function(){return a()},l.has=function(e,t={}){return u(e,Object.assign(Object.assign({},r),t))},new Proxy(l,{get:(e,r)=>"length"===r?c():"isSupport"===r?t():e[r]})}}});