mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-06-07 21:46:12 +08:00
101 lines
2.3 KiB
JavaScript
101 lines
2.3 KiB
JavaScript
/**
|
|
* 生成 UBrowser 代码
|
|
* @param {Object} argvs UBrowser 配置对象
|
|
* @returns {string} 生成的代码
|
|
*/
|
|
import { stringifyVarInputVal } from "./varInputValManager";
|
|
import { stringifyArgv } from "./formatString";
|
|
|
|
// ubrowser 默认运行配置
|
|
const defaultRunConfigs = {
|
|
show: true,
|
|
width: 800,
|
|
height: 600,
|
|
center: true,
|
|
minWidth: 0,
|
|
minHeight: 0,
|
|
resizable: true,
|
|
movable: true,
|
|
minimizable: true,
|
|
maximizable: true,
|
|
alwaysOnTop: false,
|
|
fullscreen: false,
|
|
fullscreenable: true,
|
|
enableLargerThanScreen: false,
|
|
opacity: 1,
|
|
};
|
|
|
|
// 生成完整的 ubrowser 代码
|
|
export function generateUBrowserCode(argvs) {
|
|
const lines = ["utools.ubrowser"];
|
|
|
|
// 首先添加 goto 操作
|
|
if (argvs.goto) {
|
|
const args = [];
|
|
// url
|
|
if (argvs.goto.url) {
|
|
args.push(stringifyVarInputVal(argvs.goto.url));
|
|
}
|
|
|
|
// headers
|
|
const headers = {};
|
|
// 处理标准headers
|
|
Object.entries(argvs.goto.headers || {}).forEach(([key, value]) => {
|
|
if (value?.value) {
|
|
headers[key] = value.value;
|
|
}
|
|
});
|
|
// 处理其他headers
|
|
Object.entries(argvs.goto.otherHeaders || {}).forEach(([key, value]) => {
|
|
if (value?.value) {
|
|
headers[key] = value.value;
|
|
}
|
|
});
|
|
|
|
if (Object.keys(headers).length > 0) {
|
|
args.push(stringifyArgv(headers));
|
|
}
|
|
|
|
// timeout
|
|
if (argvs.goto.timeout) {
|
|
if (args.length === 1) {
|
|
args.push("undefined");
|
|
}
|
|
args.push(argvs.goto.timeout);
|
|
}
|
|
|
|
lines[0] += `.goto(${args.join(", ")})`;
|
|
}
|
|
|
|
// 添加其他操作
|
|
if (argvs.operations?.length) {
|
|
argvs.operations.forEach(({ value, args }) => {
|
|
const stringifiedArgs = args
|
|
.map((arg) => stringifyArgv(arg))
|
|
.filter(Boolean);
|
|
|
|
lines.push(` .${value}(${stringifiedArgs.join(", ")})`);
|
|
});
|
|
}
|
|
|
|
// 最后添加 run 配置(只包含非默认值)
|
|
if (argvs.run) {
|
|
const runOptions = {};
|
|
Object.entries(argvs.run).forEach(([key, value]) => {
|
|
if (value !== defaultRunConfigs[key]) {
|
|
runOptions[key] = value;
|
|
}
|
|
});
|
|
|
|
if (Object.keys(runOptions).length > 0) {
|
|
lines.push(
|
|
` .run(${JSON.stringify(runOptions, null, 2).replace(/\n/g, "\n ")})`
|
|
);
|
|
} else {
|
|
lines.push(" .run()");
|
|
}
|
|
}
|
|
|
|
return lines.join("\n");
|
|
}
|