willow-utils
Version:
工具库
161 lines (126 loc) • 4.61 kB
JavaScript
;
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