vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
229 lines (215 loc) • 5.15 kB
JavaScript
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:';