UNPKG

willow-utils

Version:

工具库

161 lines (126 loc) 4.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.set2Session = exports.set2Local = exports.removeFromSession = exports.removeFromLocal = exports.obj2json = exports.json2obj = exports.getFromSession = exports.getFromLocal = exports.default = void 0; var _memoize = _interopRequireDefault(require("lodash/memoize")); var _throttle = _interopRequireDefault(require("lodash/throttle")); var _commonUtil = require("./commonUtil"); var _global = _interopRequireDefault(require("global")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } function clearCacheSync() { getFromSession.cache.clear(); getFromLocal.cache.clear(); } var clearCacheAsync = (0, _throttle.default)(clearCacheSync, 1000, { leading: false }); var runtimeSession = _global.default.__meo_runtimeSession = _global.default.__meo_runtimeSession || {}; var runtimeLocal = _global.default.__meo_runtimeLocal = _global.default.__meo_runtimeLocal || {}; function getFromRuntimeStorage(storage, key) { if (!(key in storage)) return null; return storage[key]; } var obj2json = function obj2json(obj) { if (obj === undefined) return 'undefined'; return JSON.stringify(obj); }; exports.obj2json = obj2json; var json2obj = function json2obj(jsonStr) { if (jsonStr === '') return null; if (jsonStr === 'undefined') return undefined; return JSON.parse(jsonStr); }; exports.json2obj = json2obj; function checkExpire(obj, key) { if (_typeof(obj) == 'object' && obj && /^__storage_expire_timestamp(,__storage_value_object)?$/.test(Object.keys(obj).join(','))) { var expire = obj.__storage_expire_timestamp, value = obj.__storage_value_object; if (typeof expire == 'number' && expire < Date.now()) { return removeFromLocal(key); } else { return value; } } return obj; } var set2Session = function set2Session(key, value) { clearCacheSync(); if ((0, _commonUtil.inBrowser)()) { sessionStorage.setItem(key, obj2json(value)); } else { runtimeSession[key] = obj2json(value); } }; exports.set2Session = set2Session; var set2Local = function set2Local(key, value) { var expire = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; clearCacheSync(); if (expire instanceof Date) expire = expire.getTime(); if (typeof expire == 'number' && expire < Date.now()) return removeFromLocal(key); value = { __storage_expire_timestamp: expire, __storage_value_object: value }; if ((0, _commonUtil.inBrowser)()) { localStorage.setItem(key, obj2json(value)); } else { runtimeLocal[key] = obj2json(value); } }; exports.set2Local = set2Local; var getFromSession = (0, _memoize.default)(function (key) { clearCacheAsync(); if ((0, _commonUtil.inBrowser)()) { var jsonStr = sessionStorage.getItem(key); return json2obj(jsonStr); } else { var _jsonStr = getFromRuntimeStorage(runtimeSession, key); return json2obj(_jsonStr); } }); exports.getFromSession = getFromSession; var getFromLocal = (0, _memoize.default)(function (key) { clearCacheAsync(); var value; if ((0, _commonUtil.inBrowser)()) { var jsonStr = localStorage.getItem(key); value = json2obj(jsonStr); } else { var _jsonStr2 = getFromRuntimeStorage(runtimeLocal, key); value = json2obj(_jsonStr2); } return checkExpire(value, key); }); exports.getFromLocal = getFromLocal; var removeFromSession = function removeFromSession(key) { clearCacheSync(); if ((0, _commonUtil.inBrowser)()) { sessionStorage.removeItem(key); } else { delete runtimeSession[key]; } }; exports.removeFromSession = removeFromSession; var removeFromLocal = function removeFromLocal(key) { clearCacheSync(); if ((0, _commonUtil.inBrowser)()) { localStorage.removeItem(key); } else { delete runtimeLocal[key]; } }; exports.removeFromLocal = removeFromLocal; var _default = { obj2json: obj2json, json2obj: json2obj, set2Session: set2Session, set2Local: set2Local, getFromSession: getFromSession, getFromLocal: getFromLocal, removeFromSession: removeFromSession, removeFromLocal: removeFromLocal }; exports.default = _default; //# sourceMappingURL=maps/storageUtil.js.map