@iicoding/utils
Version:
Browser 端 - 类型判断 - 类似 koa 的异步compose - sleep - 扩展对象属性 - 扩展 storage 对象功能
143 lines (141 loc) • 4.39 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/store/localstorage-dispatch-event.ts
var localstorage_dispatch_event_exports = {};
__export(localstorage_dispatch_event_exports, {
default: () => localstorage_dispatch_event_default,
extendStorageMethod: () => extendStorageMethod
});
module.exports = __toCommonJS(localstorage_dispatch_event_exports);
var import__ = require("..");
var LocalstorageDispatchEvent = class {
// constructor() {
// if (!root || !root.localStorage || !root.sessionStorage) {
// // throw new Error('当前环境不支持本地存储方案');
// // console.error('当前环境不支持本地存储方案');
// }
// }
// trigger: 是否触发更新
// merge: 是否合并原有的参数 如果是对象的情况下
set(key, value, trigger, merge) {
if (this.setItem) {
try {
let newValue = value;
if ((0, import__.isObject)(value)) {
const oldValue = (merge ? this.get2Json(key) : {}) || {};
newValue = JSON.stringify({ ...oldValue, ...value });
}
this.setItem(key, newValue);
LocalstorageDispatchEvent.dispatchEvent("set", trigger, {
itemKey: key,
itemValue: newValue
});
} catch (error) {
console.log(error);
}
}
}
// 设置多个
setMore(storageObject, trigger) {
Object.keys(storageObject).forEach((key) => {
this.set(key, storageObject[key], trigger);
});
}
get(key) {
var _a;
return ((_a = this.getItem) == null ? void 0 : _a.call(this, key)) || null;
}
get2Json(key) {
if (this.getItem) {
const data = this.getItem(key);
if (data) {
try {
return JSON.parse(data);
} catch (error) {
console.log(error);
}
}
}
return null;
}
remove(key, trigger) {
if (this.removeItem) {
try {
this.removeItem(key);
LocalstorageDispatchEvent.dispatchEvent("remove", trigger);
} catch (error) {
console.log(error);
}
}
}
// 删除多个
removeMore(removeKeys, trigger) {
if (Array.isArray(removeKeys)) {
removeKeys.forEach((key) => {
this.remove(key);
});
LocalstorageDispatchEvent.dispatchEvent("remove", trigger);
}
}
clearAll(trigger) {
if (this.clear) {
try {
this.clear();
LocalstorageDispatchEvent.dispatchEvent("clear", trigger);
} catch (error) {
console.log(error);
}
}
}
static dispatchEvent(key, trigger, subject) {
if (trigger && window) {
const triggerEvent = new Event("storeChange");
triggerEvent.triggerAction = key;
if (subject) {
const { itemKey, itemValue } = subject;
triggerEvent.newKey = itemKey;
triggerEvent.newValue = itemValue;
}
window.dispatchEvent(triggerEvent);
}
}
};
var storage = new LocalstorageDispatchEvent();
var extendStorageMethod = (storageType = "all") => {
if (window) {
switch (storageType) {
case "sessionStorage": {
(0, import__.extendMethodByChain)(window.sessionStorage, storage);
break;
}
case "localStorage": {
(0, import__.extendMethodByChain)(window.localStorage, storage);
break;
}
default: {
(0, import__.extendMethodByChain)(window.sessionStorage, storage);
(0, import__.extendMethodByChain)(window.localStorage, storage);
}
}
}
};
var localstorage_dispatch_event_default = extendStorageMethod;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
extendStorageMethod
});