/**
* 阉割utools,同时返回一个满血版的UTOOLS
* 防止输出html输出时,通过script标签调用utools执行危险函数
*/
// 禁用危险函数
let whole = window.utools;
// 数据库前缀
const DBPRE = {
QC: "qc_", // 快捷命令
CFG: "cfg_", // 配置
PAN: "panel_", // 面板视图
STATUS: "st_", // 状态变量
USR: "usr_", // 用户数据
};
// 数据库函数封装
let getDB = (id) => {
let db = whole.db.get(id);
return db ? db.data : {};
};
let putDB = (value, id) => {
let db = whole.db.get(id);
return db
? whole.db.put({
_id: id,
data: value,
_rev: db._rev,
})
: whole.db.put({
_id: id,
data: value,
});
};
let delDB = (id) => {
return whole.db.remove(id);
};
let getAll = (key) => {
return whole.db.allDocs(key);
};
let delAll = (key) => {
return getAll(key).forEach((x) => delDB(x._id));
};
let setStorage = whole.dbStorage.setItem;
let getStorage = whole.dbStorage.getItem;
const nativeId = utools.getNativeId();
let userData = {
put: function (value, id, isNative = true) {
let userData = getDB(DBPRE.USR + id);
if (isNative) {
userData[nativeId] = value;
} else {
userData.common = value;
delete userData[nativeId];
}
let { ok } = putDB(userData, DBPRE.USR + id);
return ok;
},
get: function (id) {
let userData = getDB(DBPRE.USR + id);
let nativeData = userData[nativeId];
return nativeData ? nativeData : userData.common;
},
del: function (id) {
let { ok } = delDB(DBPRE.USR + id);
return ok;
},
all: function () {
return getAll(DBPRE.USR).map((item) => {
let isNative = !!item.data[nativeId];
return {
id: item._id.replace(DBPRE.USR, ""),
value: isNative ? item.data[nativeId] : item.data.common,
isNative: isNative,
};
});
},
};
export default {
whole,
getDB,
putDB,
delDB,
setStorage,
getStorage,
userData,
getAll,
delAll,
};