99 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 阉割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,
};