128 lines
6.3 KiB
JavaScript
128 lines
6.3 KiB
JavaScript
"use strict";
|
|
const electron = require("electron");
|
|
var IPC_EVENTS = /* @__PURE__ */ ((IPC_EVENTS2) => {
|
|
IPC_EVENTS2["HOST_API_FETCH"] = "hostapi:fetch";
|
|
IPC_EVENTS2["EXTERNAL_OPEN"] = "external-open";
|
|
IPC_EVENTS2["APP_SET_FRAMELESS"] = "app:set-frameless";
|
|
IPC_EVENTS2["APP_LOAD_PAGE"] = "app:load-page";
|
|
IPC_EVENTS2["LOG_TO_MAIN"] = "log-to-main";
|
|
IPC_EVENTS2["READ_FILE"] = "read-file";
|
|
IPC_EVENTS2["INVOKE"] = "ipc:invoke";
|
|
IPC_EVENTS2["INVOKE_ASYNC"] = "ipc:invokeAsync";
|
|
IPC_EVENTS2["APP_MINIMIZE"] = "app:minimize";
|
|
IPC_EVENTS2["APP_MAXIMIZE"] = "app:maximize";
|
|
IPC_EVENTS2["APP_QUIT"] = "app:quit";
|
|
IPC_EVENTS2["FILE_READ"] = "file:read";
|
|
IPC_EVENTS2["FILE_WRITE"] = "file:write";
|
|
IPC_EVENTS2["CUSTOM_EVENT"] = "custom:event";
|
|
IPC_EVENTS2["TIME_UPDATE"] = "time:update";
|
|
IPC_EVENTS2["RENDERER_IS_READY"] = "renderer-ready";
|
|
IPC_EVENTS2["SHOW_CONTEXT_MENU"] = "show-context-menu";
|
|
IPC_EVENTS2["START_A_DIALOGUE"] = "start-a-dialogue";
|
|
IPC_EVENTS2["OPEN_WINDOW"] = "open-window";
|
|
IPC_EVENTS2["LOG_DEBUG"] = "log-debug";
|
|
IPC_EVENTS2["LOG_INFO"] = "log-info";
|
|
IPC_EVENTS2["LOG_WARN"] = "log-warn";
|
|
IPC_EVENTS2["LOG_ERROR"] = "log-error";
|
|
IPC_EVENTS2["CONFIG_UPDATED"] = "config-updated";
|
|
IPC_EVENTS2["SET_CONFIG"] = "set-config";
|
|
IPC_EVENTS2["GET_CONFIG"] = "get-config";
|
|
IPC_EVENTS2["UPDATE_CONFIG"] = "update-config";
|
|
IPC_EVENTS2["SET_THEME_MODE"] = "set-theme-mode";
|
|
IPC_EVENTS2["GET_THEME_MODE"] = "get-theme-mode";
|
|
IPC_EVENTS2["IS_DARK_THEME"] = "is-dark-theme";
|
|
IPC_EVENTS2["THEME_MODE_UPDATED"] = "theme-mode-updated";
|
|
IPC_EVENTS2["EXECUTE_SCRIPT"] = "execute-script";
|
|
IPC_EVENTS2["TASK_PROGRESS"] = "task:progress";
|
|
IPC_EVENTS2["TASK_STARTED"] = "task:started";
|
|
IPC_EVENTS2["TASK_COMPLETED"] = "task:completed";
|
|
IPC_EVENTS2["OPEN_CHANNEL"] = "open-channel";
|
|
IPC_EVENTS2["SCRIPT_LIST"] = "script:list";
|
|
IPC_EVENTS2["SCRIPT_GET"] = "script:get";
|
|
IPC_EVENTS2["SCRIPT_SAVE"] = "script:save";
|
|
IPC_EVENTS2["SCRIPT_DELETE"] = "script:delete";
|
|
IPC_EVENTS2["SCRIPT_TOGGLE"] = "script:toggle";
|
|
IPC_EVENTS2["SCRIPT_RUN"] = "script:run";
|
|
IPC_EVENTS2["SCRIPT_RECORD_START"] = "script:record-start";
|
|
IPC_EVENTS2["SCRIPT_RECORD_STOP"] = "script:record-stop";
|
|
IPC_EVENTS2["SCRIPT_CODEGEN"] = "script:codegen";
|
|
IPC_EVENTS2["GATEWAY_RPC"] = "gateway:rpc";
|
|
IPC_EVENTS2["GATEWAY_EVENT"] = "gateway:event";
|
|
IPC_EVENTS2["UPDATE_CHECK"] = "update:check";
|
|
IPC_EVENTS2["UPDATE_DOWNLOAD"] = "update:download";
|
|
IPC_EVENTS2["UPDATE_INSTALL"] = "update:install";
|
|
IPC_EVENTS2["UPDATE_VERSION"] = "update:version";
|
|
IPC_EVENTS2["UPDATE_STATUS_CHANGED"] = "update:status-changed";
|
|
return IPC_EVENTS2;
|
|
})(IPC_EVENTS || {});
|
|
const api = {
|
|
versions: process.versions,
|
|
external: {
|
|
open: (url) => electron.ipcRenderer.invoke("external-open", url)
|
|
},
|
|
platform: process.platform,
|
|
windowMinimize: () => electron.ipcRenderer.invoke("window:minimize"),
|
|
windowMaximize: () => electron.ipcRenderer.invoke("window:maximize"),
|
|
windowClose: () => electron.ipcRenderer.invoke("window:close"),
|
|
windowIsMaximized: () => electron.ipcRenderer.invoke("window:isMaximized"),
|
|
viewIsReady: () => electron.ipcRenderer.send(IPC_EVENTS.RENDERER_IS_READY),
|
|
app: {
|
|
setFrameless: (route) => electron.ipcRenderer.invoke(IPC_EVENTS.APP_SET_FRAMELESS, route),
|
|
loadPage: (page) => electron.ipcRenderer.invoke(IPC_EVENTS.APP_LOAD_PAGE, page)
|
|
},
|
|
// 通过 IPC 调用主进程
|
|
readFile: (filePath) => electron.ipcRenderer.invoke(IPC_EVENTS.READ_FILE, filePath),
|
|
// 异步调用(映射为 electron 的 invoke)
|
|
invoke: (channel, ...args) => electron.ipcRenderer.invoke(channel, ...args),
|
|
// 异步调用(为了兼容老代码)
|
|
invokeAsync: (channel, ...args) => electron.ipcRenderer.invoke(channel, ...args),
|
|
// 监听主进程消息
|
|
on: (event, callback) => {
|
|
const subscription = (_event, ...args) => callback(...args);
|
|
electron.ipcRenderer.on(event, subscription);
|
|
return () => electron.ipcRenderer.removeListener(event, subscription);
|
|
},
|
|
// 发送消息到主进程
|
|
send: (channel, ...args) => electron.ipcRenderer.send(channel, ...args),
|
|
// 发送日志
|
|
logger: {
|
|
debug: (message, ...meta) => electron.ipcRenderer.send(IPC_EVENTS.LOG_DEBUG, message, ...meta),
|
|
info: (message, ...meta) => electron.ipcRenderer.send(IPC_EVENTS.LOG_INFO, message, ...meta),
|
|
warn: (message, ...meta) => electron.ipcRenderer.send(IPC_EVENTS.LOG_WARN, message, ...meta),
|
|
error: (message, ...meta) => electron.ipcRenderer.send(IPC_EVENTS.LOG_ERROR, message, ...meta)
|
|
},
|
|
// 执行脚本
|
|
executeScript: (params) => electron.ipcRenderer.invoke(IPC_EVENTS.EXECUTE_SCRIPT, params),
|
|
// 任务事件
|
|
onTaskProgress: (cb) => {
|
|
const subscription = (_event, payload) => cb(payload);
|
|
electron.ipcRenderer.on(IPC_EVENTS.TASK_PROGRESS, subscription);
|
|
return () => electron.ipcRenderer.removeListener(IPC_EVENTS.TASK_PROGRESS, subscription);
|
|
},
|
|
onTaskStarted: (cb) => {
|
|
const subscription = (_event, payload) => cb(payload);
|
|
electron.ipcRenderer.on(IPC_EVENTS.TASK_STARTED, subscription);
|
|
return () => electron.ipcRenderer.removeListener(IPC_EVENTS.TASK_STARTED, subscription);
|
|
},
|
|
onTaskCompleted: (cb) => {
|
|
const subscription = (_event, payload) => cb(payload);
|
|
electron.ipcRenderer.on(IPC_EVENTS.TASK_COMPLETED, subscription);
|
|
return () => electron.ipcRenderer.removeListener(IPC_EVENTS.TASK_COMPLETED, subscription);
|
|
},
|
|
// 打开渠道
|
|
openChannel: (channels) => electron.ipcRenderer.invoke(IPC_EVENTS.OPEN_CHANNEL, channels),
|
|
// 脚本管理
|
|
scriptApi: {
|
|
list: () => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_LIST),
|
|
get: (id) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_GET, id),
|
|
save: (input) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_SAVE, input),
|
|
delete: (id) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_DELETE, id),
|
|
toggle: (id, enabled) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_TOGGLE, id, enabled),
|
|
run: (id) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_RUN, id),
|
|
startRecording: (url) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_RECORD_START, url),
|
|
stopRecording: () => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_RECORD_STOP),
|
|
codegen: (id, url) => electron.ipcRenderer.invoke(IPC_EVENTS.SCRIPT_CODEGEN, id, url)
|
|
}
|
|
};
|
|
electron.contextBridge.exposeInMainWorld("api", api);
|