@tanshenghu/web-utils
Version:
web公共方法
84 lines (72 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var prefix = '$tsh-';
exports.default = {
/**
* 存储数据
* @param {string} key - 存储键名
* @param {any} value - 存储键值
* @param {number} [expires] - 过期时间(分钟为单位)
* @param {string} [type] - 类型 值: local, session
*/
setStorage: function setStorage(key, value, expires, type) {
checkData();
if (typeof expires === 'string') {
type = expires;
expires = void 0;
}
var store = { data: value, by: 'tsh' };
if (typeof expires === 'number') {
store.expires = Date.now() + expires * 60000;
}
getLocalObj(type).setItem('' + prefix + key, JSON.stringify(store));
},
/**
* 获取存储数据
* @param {string} key - 存储键名
* @param {string} [type] - 类型 值: local, session
*/
getStorage: function getStorage(key, type) {
checkData();
var value = getLocalObj(type).getItem('' + prefix + key);
return JSON.parse(value || '{}').data;
},
/**
* 删除存储数据
* @param {string} key - 存储键名
* @param {string} [type] - 类型 值: local, session
*/
removeStorage: function removeStorage(key, type) {
checkData();
getLocalObj(type).removeItem('' + prefix + key);
}
};
function getLocalObj(type) {
return globalThis[type === 'session' ? 'sessionStorage' : 'localStorage'];
}
/**
* 数据验证
*/
function checkData() {
var store = globalThis.sessionStorage;
var store2 = globalThis.localStorage;
var now = Date.now();
function deal(datas, tval) {
Object.keys(datas).filter(function (v) {
return v.indexOf(prefix) === 0;
}).forEach(function (key) {
try {
var d = JSON.parse(datas[key]);
if (d.by === 'tsh' && typeof d.data !== 'undefined' && d.expires > -2 && now > d.expires) {
globalThis[tval === 1 ? 'sessionStorage' : 'localStorage'].removeItem(key);
}
} catch (e) {}
});
}
deal(store, 1);
deal(store2, 2);
}
checkData();
module.exports = exports['default'];