UNPKG

@iicoding/utils

Version:

Browser 端 - 类型判断 - 类似 koa 的异步compose - sleep - 扩展对象属性 - 扩展 storage 对象功能

143 lines (141 loc) 4.39 kB
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 });