UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

229 lines (215 loc) 5.15 kB
import { inMiniProgram } from "./inMiniProgram.js"; var mp = inMiniProgram(); var storage = mp ? { get: function get(key) { return mp.getStorageSync(key); }, set: function set(key, value) { return mp.setStorageSync(key, value); }, remove: function remove(key) { return mp.removeStorageSync(key); }, keys: function keys() { return mp.getStorageInfoSync().keys; } } : { get: function get(key) { return localStorage.getItem(key); }, set: function set(key, value) { return localStorage.setItem(key, value); }, remove: function remove(key) { return localStorage.removeItem(key); }, keys: function keys() { var keys = []; for (var i = 0, len = localStorage.length; i < len; i++) { var _key = localStorage.key(i); if (_key != null) { keys.push(_key); } } return keys; } }; /** * 本地存储增强。 * * 已兼容小程序。 */ export var LocalStoragePlus = /*#__PURE__*/function () { /** * 获取完全的键名。 * * @param key 键名 */ LocalStoragePlus.getFullKey = function getFullKey(key) { return "" + this.prefix + key; } /** * 设置本地存储。 * * @param key 键 * @param value 值 * @param options 选项 */; LocalStoragePlus.set = function set(key, value, options) { var _ref = options || {}, ttl = _ref.ttl, tag = _ref.tag; var expiredAt = ttl && Date.now() + ttl; var nextValue = typeof value === 'function' ? value(this.get(key, { tag: tag })) : value; storage.set(this.getFullKey(key), JSON.stringify({ v: nextValue, e: expiredAt, t: tag })); } /** * 获取本地存储。 * * @param key 键 * @param options 选项 */; LocalStoragePlus.get = function get(key, options) { var _ref2 = options || {}, tag = _ref2.tag; try { var rawText = storage.get(this.getFullKey(key)); if (rawText != null) { var rawData = JSON.parse(rawText); if (tag != null && rawData.t !== tag || rawData.e != null && rawData.e < Date.now()) { return null; } return rawData.v; } } catch (_unused) {} return null; } /** * 是否存在本地存储。 * * @param key 键 * @param options 选项 */; LocalStoragePlus.has = function has(key, options) { return this.get(key, options) !== null; } /** * 删除本地存储。 * * @param key 键 */; LocalStoragePlus.remove = function remove(key) { storage.remove(this.getFullKey(key)); } /** * 清空本地存储。 */; LocalStoragePlus.clear = function clear() { var _this = this; storage.keys().forEach(function (key) { if (key.indexOf(_this.prefix) === 0) { storage.remove(key); } }); } /** * 将本地存储的值增加给定值,若本地存储不存在,则初始化为 `0` 后操作。 * * @param key 键 * @param value 增加值,默认 `1` * @param options 选项 */; LocalStoragePlus.increase = function increase(key, value, options) { if (value === void 0) { value = 1; } this.set(key, function (prevValue) { return Number(prevValue || 0) + value; }, options); } /** * 将本地存储的值减少给定值,若本地存储不存在,则初始化为 `0` 后操作。 * * @param key 键 * @param value 减小值,默认 `1` * @param options 选项 */; LocalStoragePlus.decrease = function decrease(key, value, options) { if (value === void 0) { value = 1; } this.set(key, function (prevValue) { return Number(prevValue || 0) - value; }, options); }; function LocalStoragePlus(options) { this.options = options; } /** * 设置值。 * * @param value 值 * @param options 选项 */ var _proto = LocalStoragePlus.prototype; _proto.set = function set(value, options) { return LocalStoragePlus.set(this.options.key, value, options); } /** * 获取值。 * * @param options 选项 */; _proto.get = function get(options) { return LocalStoragePlus.get(this.options.key, options); } /** * 是否存在值。 * * @param options 选项 */; _proto.has = function has(options) { return LocalStoragePlus.has(this.options.key, options); } /** * 删除值。 */; _proto.remove = function remove() { return LocalStoragePlus.remove(this.options.key); } /** * 自增。 * * @param value 增加值 * @param options 选项 */; _proto.increase = function increase(value, options) { if (value === void 0) { value = 1; } return LocalStoragePlus.increase(this.options.key, value, options); } /** * 自减。 * * @param value 减少值 * @param options 选项 */; _proto.decrease = function decrease(value, options) { if (value === void 0) { value = 1; } return LocalStoragePlus.decrease(this.options.key, value, options); }; return LocalStoragePlus; }(); /** * 本地存储键名前缀。 */ LocalStoragePlus.prefix = 'LSP:';