uTools-quickcommand/src/js/common/quickcommandParser.js
2025-02-13 19:46:58 +08:00

36 lines
1.1 KiB
JavaScript

/**
* 判断内容是否为 quickcommand 可导入格式
*/
// 是否含有 quickcommand 键值
let isJsonQc = (obj, strict = true) => {
var keys = strict
? ["features", "program", "output"]
: ["program"];
if (keys.filter((x) => typeof obj[x] == "undefined").length) return false;
return true;
};
let payloadParser = async (payload) => {
let [, format, value] = payload.split("/");
if (format === "base64") return window.base64Decode(value);
else if (format === "id") return await window.getSharedQcById(value);
else throw new Error("不支持的格式");
};
// 判断是否为可导入的快捷命令
let quickcommandParser = async (payload, strict = true) => {
try {
if (payload.slice(0, 3) === "qc/") payload = await payloadParser(payload);
var qc = JSON.parse(payload);
} catch (error) {
return false;
}
if (isJsonQc(qc, strict)) return { single: true, qc: qc };
else if (!Object.values(qc).filter((q) => !isJsonQc(q, strict)).length)
return { single: false, qc: qc };
else return false;
};
export default quickcommandParser;