nsn-util
Version:
NSN工具辅助组件
172 lines (130 loc) • 4.37 kB
JavaScript
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import { NConst } from 'nsn-const';
import * as NStr from './NStr';
var sessionStorage;
var getKey = function getKey(k) {
var key = k || NConst.EMPTY;
if (key.startsWith(NConst.ISP_NAME_SHORT)) {
return key;
}
return "".concat(NConst.ISP_NAME_SHORT, "-").concat(key);
};
/** 调用其他方法之前,先调用此方法 */
var configLocalStorage = function configLocalStorage(win) {
if (NStr.isBrowser()) {
// eslint-disable-next-line prefer-destructuring
sessionStorage = window.sessionStorage;
} else if (win && win.sessionStorage) {
// eslint-disable-next-line prefer-destructuring
sessionStorage = win.sessionStorage;
} //
if (sessionStorage) {
// 重写事件,当使用时候,触发 window.dispatchEvent 派发事件
var signSetItem = sessionStorage.setItem;
sessionStorage.setItem = function (key, val) {
var event = new Event('NStoreSetItemEvent');
event['key'] = getKey(key);
event['value'] = val;
window.dispatchEvent(event);
signSetItem === null || signSetItem === void 0 ? void 0 : signSetItem.apply(this, [getKey(key), val]);
};
var signRemoveItem = sessionStorage.removeItem;
sessionStorage.removeItem = function (key) {
var event = new Event('NStoreRemoveItemEvent');
event['key'] = getKey(key);
window.dispatchEvent(event);
signRemoveItem.apply(this, [getKey(key)]);
};
var signGetItem = sessionStorage.getItem;
sessionStorage.getItem = function (key) {
var event = new Event('NStoreGetItemEvent');
event['key'] = getKey(key);
window.dispatchEvent(event);
return signGetItem.apply(this, [getKey(key)]);
};
var signClear = sessionStorage.clear;
sessionStorage.clear = function () {
var event = new Event('NStoreClearEvent');
window.dispatchEvent(event);
signClear.apply(this);
};
}
}; //
configLocalStorage();
var setValue = function setValue(k, v) {
var _sessionStorage;
return (_sessionStorage = sessionStorage) === null || _sessionStorage === void 0 ? void 0 : _sessionStorage.setItem(k, JSON.stringify(v));
};
/** 设置缓存 */
var set = function set(items) {
if (sessionStorage) {
if (items instanceof Map) {
if (items.size > 0) {
items.forEach(function (v, k) {
return setValue(k, v);
});
}
} else {
Object.keys(items).forEach(function (k) {
return setValue(k, items[k]);
});
}
}
};
/**
* 获取缓存
* @param key 键名
* @returns key 或 sessionStorage 不存在时返回 null
*/
var get = function get(key) {
if (key) {
var _sessionStorage2;
var value = (_sessionStorage2 = sessionStorage) === null || _sessionStorage2 === void 0 ? void 0 : _sessionStorage2.getItem(key);
if (value) {
try {
value = JSON.parse(value);
} catch (e) {// do nothing
}
}
return value;
}
return null;
};
/** 移除缓存
* @param key 键名
*/
var remove = function remove(key) {
if (key) {
var _sessionStorage3;
(_sessionStorage3 = sessionStorage) === null || _sessionStorage3 === void 0 ? void 0 : _sessionStorage3.removeItem(key);
}
};
/** 清理所有缓存 */
var clear = function clear() {
var _sessionStorage4;
return (_sessionStorage4 = sessionStorage) === null || _sessionStorage4 === void 0 ? void 0 : _sessionStorage4.clear();
};
/**
* @param autoLogin 是否自动登录
*/
var AUTO_LOGIN_KEY = 'AutoLogin';
/** 自动登录 */
var setAutoLogin = function setAutoLogin(autoLogin) {
return set(_defineProperty({}, AUTO_LOGIN_KEY, autoLogin));
};
/** 自动登录 */
var getAutoLogin = function getAutoLogin() {
return get(AUTO_LOGIN_KEY);
};
/** 全部缓存 */
var all = function all() {
var values = new Map();
Object.keys(sessionStorage || {}).forEach(function (k) {
if (k.startsWith(NConst.ISP_NAME_SHORT) || NStr.isEqual(k, 'umi_locale')) {
values.set(k, get(k));
}
});
return values.size > 0 ? values : undefined;
};
/** 缓存管理 */
export { configLocalStorage, set, get, remove, clear, setAutoLogin, getAutoLogin, all };