@tool-developer/wo-storage
Advanced tools
+4
-4
@@ -1,2 +0,2 @@ | ||
| var async = (function (storage) { | ||
| var async = function async(storage) { | ||
| if (!storage) { | ||
@@ -14,5 +14,5 @@ return {}; | ||
| args[_key] = arguments[_key]; | ||
| } | ||
| } // | ||
| // | ||
| return Promise.resolve(storage[method].apply(null, args)); | ||
@@ -22,4 +22,4 @@ }; | ||
| return base; | ||
| }); | ||
| }; | ||
| export default async; |
+0
-2
@@ -1,5 +0,3 @@ | ||
| import { S as Storage } from './index-8f8ada8c.js'; | ||
| var storage = new Storage(window.localStorage); | ||
| export default storage; |
+163
-3
@@ -1,3 +0,163 @@ | ||
| import { S as Storage } from './index-8f8ada8c.js'; | ||
| // default expired time | ||
| var defaultExpireTime = 3600000; // 60*60*1000,1hour | ||
| // | ||
| function Storage(storage) { | ||
| // | ||
| function tryCatchParse(data) { | ||
| // | ||
| if (typeof data !== 'string') { | ||
| // | ||
| return data; | ||
| } // | ||
| try { | ||
| // | ||
| data = JSON.parse(data); | ||
| } catch (e) { | ||
| data = {}; | ||
| } // | ||
| return data; | ||
| } // | ||
| function toReturn(data, callback) { | ||
| // | ||
| if (callback && typeof callback === 'function') { | ||
| // | ||
| callback(null, data); | ||
| } // | ||
| return data; | ||
| } | ||
| function beforeSet(k, v, e, cb) { | ||
| // | ||
| if (typeof e === 'function') { | ||
| cb = e; | ||
| e = defaultExpireTime; // 60*60*1000,1小时 | ||
| } // | ||
| e = parseInt(e, 10) || defaultExpireTime; // | ||
| var data = { | ||
| data: v | ||
| }; // e = -1 为永久缓存 | ||
| if (e !== -1) { | ||
| // 使用Date.now在jest 27可能会有bug | ||
| data.expired = Date.now() + e; | ||
| } // | ||
| try { | ||
| // | ||
| data = JSON.stringify(data); | ||
| } catch (ex) { | ||
| // | ||
| return console.log('set storage data json format error', ex); | ||
| } // | ||
| return { | ||
| k: k, | ||
| data: data, | ||
| e: e, | ||
| cb: cb | ||
| }; | ||
| } | ||
| function afterGet(data, remove) { | ||
| if (!data) { | ||
| // | ||
| return undefined; | ||
| } // | ||
| data = tryCatchParse(data) || {}; // | ||
| var _data = data, | ||
| expired = _data.expired; // 永久缓存 | ||
| if (!expired) { | ||
| // | ||
| return data.data; | ||
| } | ||
| expired = parseInt(expired, 10); // 已过期 | ||
| if (Date.now() > expired) { | ||
| // 清除缓存 | ||
| if (remove && typeof remove === 'function') { | ||
| // | ||
| remove(); | ||
| } // | ||
| return undefined; | ||
| } // | ||
| return data.data; | ||
| } // | ||
| var base = { | ||
| get: function get(k, cb) { | ||
| // | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } // | ||
| var res = storage.getItem(k); // | ||
| var data = afterGet(res, function () { | ||
| // | ||
| base.remove(k); | ||
| }); // | ||
| return toReturn(data, cb); | ||
| }, | ||
| set: function set(k, v, e, cb) { | ||
| // | ||
| var r = beforeSet(k, v, e, cb); | ||
| var data = r.data; // | ||
| k = r.k; | ||
| cb = r.cb; | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } // | ||
| return toReturn(storage.setItem(k, data), cb); | ||
| }, | ||
| remove: function remove(k, cb) { | ||
| // | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } // | ||
| return toReturn(storage.removeItem(k), cb); | ||
| }, | ||
| clear: function clear(cb) { | ||
| // | ||
| return toReturn(storage.clear(), cb); | ||
| } | ||
| }; // | ||
| return base; | ||
| } | ||
| // | ||
@@ -37,6 +197,6 @@ function SessionStorage() {} // 数据缓存 | ||
| var se = getSessionStore(); | ||
| var session = getSessionStore(); | ||
| var storage = new Storage(se); | ||
| var storage = new Storage(session); | ||
| export default storage; |
+11
-3
| { | ||
| "name": "@tool-developer/wo-storage", | ||
| "version": "0.0.0-canary.1", | ||
| "version": "0.0.1", | ||
| "description": "wo storage library", | ||
| "main": "index.js", | ||
| "module": "dist/index.js", | ||
| "scripts": { | ||
| "test": "jest", | ||
| "clean": "../../scripts/clean_package.sh", | ||
| "build": "npm run clean & rollup -c" | ||
| "build": "npm run clean & rollup -c", | ||
| "i": "yarn", | ||
| "l": "yarn link", | ||
| "nl": "yarn unlink", | ||
| "pl": "yarn link @tool-developer/wo-base-storage" | ||
| }, | ||
@@ -31,3 +36,6 @@ "repository": { | ||
| }, | ||
| "gitHead": "f75c5d166b55b78d7032edd0921cf164ef657cf2" | ||
| "dependencies": { | ||
| "@tool-developer/wo-base-storage": "^0.0.0-canary.1" | ||
| }, | ||
| "gitHead": "6274893b760301017159dc8024da10fbc94e7aac" | ||
| } |
+2
-17
@@ -1,17 +0,2 @@ | ||
| export default storage => { | ||
| if (!storage) { | ||
| return {}; | ||
| } | ||
| // | ||
| const methods = Object.keys(storage); | ||
| const base = {}; | ||
| methods.forEach(method => { | ||
| // | ||
| base[method] = function(...args) { | ||
| // | ||
| return Promise.resolve(storage[method].apply(null, args)); | ||
| }; | ||
| }); | ||
| return base; | ||
| }; | ||
| export * from '@tool-developer/wo-base-storage/dist/async'; | ||
| export {default} from '@tool-developer/wo-base-storage/dist/async'; |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import Storage from './lib/index'; | ||
| export * from '@tool-developer/wo-base-storage/dist'; | ||
| // | ||
@@ -3,0 +3,0 @@ const storage = new Storage(window.localStorage); |
+4
-4
@@ -1,6 +0,6 @@ | ||
| import Storage from './lib/index'; | ||
| import se from './lib/session'; | ||
| // | ||
| import Storage from '@tool-developer/wo-base-storage/dist'; | ||
| import se from '@tool-developer/wo-base-storage/dist/session'; | ||
| const storage = new Storage(se); | ||
| export default storage; | ||
| export default storage; |
-147
| // default expired time | ||
| const defaultExpireTime = 3600000; // 60*60*1000,1hour | ||
| // | ||
| function Storage(storage) { | ||
| // | ||
| function tryCatchParse(data) { | ||
| // | ||
| if (typeof data !== 'string') { | ||
| // | ||
| return data; | ||
| } | ||
| // | ||
| try { | ||
| // | ||
| data = JSON.parse(data); | ||
| } catch (e) { | ||
| data = {}; | ||
| } | ||
| // | ||
| return data; | ||
| } | ||
| // | ||
| function toReturn(data, callback) { | ||
| // | ||
| if (callback && typeof callback === 'function') { | ||
| // | ||
| callback(null,data); | ||
| } | ||
| // | ||
| return data; | ||
| } | ||
| function beforeSet(k, v, e, cb) { | ||
| // | ||
| if (typeof e === 'function') { | ||
| cb = e; | ||
| e = defaultExpireTime; // 60*60*1000,1小时 | ||
| } | ||
| // | ||
| e = parseInt(e, 10) || defaultExpireTime; | ||
| // | ||
| let data = { | ||
| data: v, | ||
| }; | ||
| // e = -1 为永久缓存 | ||
| if (e !== -1) { | ||
| // 使用Date.now在jest 27可能会有bug | ||
| data.expired = Date.now() + e; | ||
| } | ||
| // | ||
| try { | ||
| // | ||
| data = JSON.stringify(data); | ||
| } catch (ex) { | ||
| // | ||
| return console.log('set storage data json format error', ex); | ||
| } | ||
| // | ||
| return { | ||
| k, | ||
| data, | ||
| e, | ||
| cb, | ||
| }; | ||
| } | ||
| function afterGet(data, remove) { | ||
| if (!data) { | ||
| // | ||
| return undefined; | ||
| } | ||
| // | ||
| data = tryCatchParse(data) || {}; | ||
| // | ||
| let { expired } = data; | ||
| // 永久缓存 | ||
| if (!expired) { | ||
| // | ||
| return data.data; | ||
| } | ||
| expired = parseInt(expired, 10); | ||
| // 已过期 | ||
| if (Date.now() > expired) { | ||
| // 清除缓存 | ||
| if (remove && typeof remove === 'function') { | ||
| // | ||
| remove(); | ||
| } | ||
| // | ||
| return undefined; | ||
| } | ||
| // | ||
| return data.data; | ||
| } | ||
| // | ||
| const base = { | ||
| get(k, cb) { | ||
| // | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } | ||
| // | ||
| const res = storage.getItem(k); | ||
| // | ||
| const data = afterGet(res, function() { | ||
| // | ||
| base.remove(k); | ||
| }); | ||
| // | ||
| return toReturn(data, cb); | ||
| }, | ||
| set(k, v, e, cb) { | ||
| // | ||
| const r = beforeSet(k, v, e, cb); | ||
| const { data } = r; | ||
| // | ||
| k = r.k; | ||
| cb = r.cb; | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } | ||
| // | ||
| return toReturn(storage.setItem(k, data), cb); | ||
| }, | ||
| remove(k, cb) { | ||
| // | ||
| if (k === undefined || k === null) { | ||
| // | ||
| return toReturn(undefined, cb); | ||
| } | ||
| // | ||
| return toReturn(storage.removeItem(k), cb); | ||
| }, | ||
| clear(cb) { | ||
| // | ||
| return toReturn(storage.clear(), cb); | ||
| }, | ||
| }; | ||
| // | ||
| return base; | ||
| } | ||
| export default Storage; |
| // | ||
| function SessionStorage() {} | ||
| // 数据缓存 | ||
| SessionStorage.Caches = {}; | ||
| SessionStorage.prototype.setItem = function(key, data) { | ||
| // | ||
| SessionStorage.Caches[key] = data; | ||
| }; | ||
| SessionStorage.prototype.getItem = function(key) { | ||
| // | ||
| return SessionStorage.Caches[key]; | ||
| }; | ||
| SessionStorage.prototype.removeItem = function(key) { | ||
| // | ||
| delete SessionStorage.Caches[key]; | ||
| }; | ||
| SessionStorage.prototype.clear = function() { | ||
| // | ||
| SessionStorage.Caches = {}; | ||
| }; | ||
| function getSessionStore() { | ||
| try { | ||
| return window.sessionStorage; | ||
| } catch (e) { | ||
| return new SessionStorage(); | ||
| } | ||
| } | ||
| export default getSessionStore(); |
17842
-3.26%1
Infinity%18
-10%536
-11.4%+ Added