@fast-china/utils
Version:
Fast 工具库.
3 lines (2 loc) • 3.53 kB
JavaScript
import{reactive as e,computed as i}from"vue";import{base64Util as r}from"../base64/index.mjs";import{consoleError as o}from"../console/index.mjs";import{FastError as t}from"../error/index.mjs";const n=e({prefix:"fast__",expireSuffix:"__Expire",crypto:!1}),s=i(()=>n.prefix),f=i(()=>n.expireSuffix),p=()=>({setPrefix(e){n.prefix=e},setExpireSuffix(e){n.expireSuffix=e},setCrypto(e){n.crypto=e}}),a={set(e,i){"undefined"!=typeof uni?uni.setStorageSync(e,i):window.localStorage.setItem(e,i)},get:e=>"undefined"!=typeof uni?uni.getStorageSync(e):window.localStorage.getItem(e),remove(e){"undefined"!=typeof uni?uni.removeStorageSync(e):window.localStorage.removeItem(e)},clear(){"undefined"!=typeof uni?uni.clearStorageSync():window.localStorage.clear()},keys:()=>"undefined"!=typeof uni?uni.getStorageInfoSync().keys:window.localStorage},S={set(e,i,s,f){try{if(f??=n.crypto,s){if(isNaN(s)||s<1)throw new t("有效期应为一个有效数值");const i={time:Date.now(),expire:s},r=JSON.stringify(i);a.set(`${n.prefix}${e}${n.expireSuffix}`,r)}let o=JSON.stringify(i);f&&(o=r.toBase64(o)),a.set(`${n.prefix}${e}`,o)}catch(p){o("Local",p)}},get(e,i){try{i??=n.crypto;let o=a.get(`${n.prefix}${e}`);if(o){i&&(o=r.base64ToStr(o));const t=a.get(`${n.prefix}${e}${n.expireSuffix}`);if(t){const i=JSON.parse(t);if(Date.now()>i.time+60*i.expire*1e3)return a.remove(`${n.prefix}${e}`),a.remove(`${n.prefix}${e}${n.expireSuffix}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(t){o("Local",t)}},remove(e){try{a.remove(`${n.prefix}${e}`),a.remove(`${n.prefix}${e}${n.expireSuffix}`)}catch(i){o("Local",i)}},removeByPrefix(e){try{for(const i in a.keys)-1!==i.indexOf(`${n.prefix}${e}`)&&a.remove(i)}catch(i){o("Local",i)}},clear(){try{a.clear()}catch(e){o("Local",e)}}},c={set(e,i,s,f){if("undefined"==typeof uni)try{if(f??=n.crypto,s){if(isNaN(s)||s<1)throw new t("有效期应为一个有效数值");const i={time:Date.now(),expire:s},r=JSON.stringify(i);window.sessionStorage.setItem(`${n.prefix}${e}${n.expireSuffix}`,r)}let o=JSON.stringify(i);f&&(o=r.toBase64(o)),window.sessionStorage.setItem(`${n.prefix}${e}`,o)}catch(p){o("Session",p)}else o("Session","UniApp 环境下 [Session] 不可用。")},get(e,i){if("undefined"==typeof uni)try{i??=n.crypto;let o=window.sessionStorage.getItem(`${n.prefix}${e}`);if(o){i&&(o=r.base64ToStr(o));const t=window.sessionStorage.getItem(`${n.prefix}${e}${n.expireSuffix}`);if(t){const i=JSON.parse(t);if(Date.now()>i.time+60*i.expire*1e3)return window.sessionStorage.removeItem(`${n.prefix}${e}`),window.sessionStorage.removeItem(`${n.prefix}${e}${n.expireSuffix}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(t){o("Session",t)}else o("Session","UniApp 环境下 [Session] 不可用。")},remove(e){if("undefined"==typeof uni)try{window.sessionStorage.removeItem(`${n.prefix}${e}`),window.sessionStorage.removeItem(`${n.prefix}${e}${n.expireSuffix}`)}catch(i){o("Session",i)}else o("Session","UniApp 环境下 [Session] 不可用。")},removeByPrefix(e){if("undefined"==typeof uni)try{for(const i in window.sessionStorage)-1!==i.indexOf(`${n.prefix}${e}`)&&window.sessionStorage.removeItem(i)}catch(i){o("Session",i)}else o("Session","UniApp 环境下 [Session] 不可用。")},clear(){if("undefined"==typeof uni)try{window.sessionStorage.clear()}catch(e){o("Session",e)}else o("Session","UniApp 环境下 [Session] 不可用。")}};export{f as CACHE_EXPIRE_SUFFIX,s as CACHE_PREFIX,S as Local,c as Session,p as useStorage};
//# sourceMappingURL=index.mjs.map