vue3-storage
Version:
Vue3 plugin for work with local storage, session storage and websql from Vue context, inspired by tarojs and vue-ls.
1 lines • 4.56 kB
JavaScript
var Vue3Storage=function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var a,n=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.localStorage;r(this,e),this.storage=window.localStorage,this.namespace="pro_",this.storage=t}var a,n,s;return a=e,(n=[{key:"config",value:function(e){!1!==e?e&&(this.namespace=e):this.namespace=""}},{key:"clearStorage",value:function(e){var t={errMsg:"clearStorage:ok"};if(e){var r=e.success,o=e.fail,a=e.complete;try{this.clearStorageSync(),r&&r(t),a&&a(t)}catch(e){var n={errMsg:"clearStorage:fail"};return o&&o(n),a&&a(n),Promise.reject(n)}}return Promise.resolve(t)}},{key:"clearStorageSync",value:function(){for(var e=[],t=0;t<this.storage.length;t++){var r=this.storage.key(t);r&&new RegExp("^".concat(this.namespace,".+"),"i").test(r)&&e.push(r)}for(var o in e)this.storage.removeItem(e[o])}},{key:"getStorage",value:function(e){var t=e.key,r=e.success,o=e.fail,a=e.complete,n={errMsg:"getStorage:ok"},s={errMsg:"getStorage:ok",data:""},i=this.getItem(t),c=i.result,u=i.data;if(!c)return n.errMsg="getStorage:fail data not found",o&&o(n),a&&a(n),Promise.reject(n);var l=u;return s.data=l.value,r&&r(s),a&&a(s),Promise.resolve(s)}},{key:"getStorageInfo",value:function(e){var t={errMsg:"getStorageInfo:ok"};if(e){var r=e.success,o=e.complete,a=e.fail;try{var n=this.getStorageInfoSync();r&&r(n),o&&o(t)}catch(e){a&&a(t),o&&o(t)}}return Promise.resolve(t)}},{key:"getStorageInfoSync",value:function(){return{keys:Object.keys(this.storage),limitSize:0,currentSize:0,keysLength:this.storage.length}}},{key:"hasKey",value:function(e){return this.getItem(e).result}},{key:"isExpire",value:function(e){var t=this.getItem(e);if(t.result){var r=t.data;return null!==r.expire&&r.expire<(new Date).getTime()}return!1}},{key:"key",value:function(e){return this.storage.key(e)}},{key:"removeStorage",value:function(e){var t=e.key,r=e.success,o=e.fail,a=e.complete,n={errMsg:"removeStorage:ok"};return this.hasKey(t)?(this.removeStorageSync(t),r&&r(n),a&&a(n),Promise.resolve(n)):(n.errMsg="key ".concat(t," not exists !"),o&&o(n),a&&a(n),Promise.reject(n))}},{key:"removeStorageSync",value:function(e){return this.storage.removeItem(this.getItemKey(e))}},{key:"setStorage",value:function(e){var t=e.key,r=e.data,o=e.success,a=e.fail,n=e.complete,s={errMsg:"setStorage:ok"};try{return this.setStorageSync(t,r),this.hasKey(t)?(o&&o(s),n&&n(s),Promise.resolve(s)):(s.errMsg="key ".concat(t," setStorage2:fail"),a&&a(s),n&&n(s),Promise.reject(s))}catch(e){return s.errMsg="key ".concat(t," setStorage:fail"),a&&a(s),n&&n(s),Promise.reject(s)}}},{key:"setStorageSync",value:function(e,t,r){var o={value:t,expire:r?(new Date).getTime()+r:null},a=JSON.stringify(o);this.storage.setItem(this.getItemKey(e),a)}},{key:"getItemKey",value:function(e){return this.namespace+e}},{key:"getItem",value:function(e){try{var r,o=this.storage.getItem(this.getItemKey(e));if(null!==o&&(r=JSON.parse(o)),r&&"object"===t(r)&&"expire"in r&&"value"in r)return{result:!0,data:r}}catch(e){return{result:!1}}return{result:!1}}},{key:"getStorageSync",value:function(e){var t=this.getItem(e);if(t.result){var r=t.data;if(!this.isExpire(e))return r.value}}}])&&o(a.prototype,n),s&&o(a,s),e}();(a=e.StorageType||(e.StorageType={})).Session="session",a.Local="local",a.WebSQL="webSQL",a.IndexDB="indexDB";var s=new n,i={install:function(t,r){var o,a,i={storage:(null==r?void 0:r.storage)||e.StorageType.Local,namespace:null!==(o=null==r?void 0:r.namespace)&&void 0!==o?o:"pro_"};if("undefined"==typeof window)throw new Error('Vue3Storage: Storage "'.concat(i.storage,'" is not supported'));switch(i.storage){case e.StorageType.Local:a=window.localStorage;break;case e.StorageType.Session:a=window.sessionStorage;break;default:throw new Error('Vue3Storage: Storage "'.concat(i.storage,'" is not supported yet'))}(s=new n(a)).config(i.namespace),t.config.globalProperties.$storage=s}};return e.default=i,e.useStorage=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return s.config(e),s},Object.defineProperty(e,"__esModule",{value:!0}),e}({});