import { contextBridge, ipcRenderer } from "electron"; import { electronAPI } from "@electron-toolkit/preload"; import type { SelfAPI } from "./index.d"; // Custom APIs for renderer - bridges to IPC handlers const api: SelfAPI = { // Platform detection platform: process.platform, // ==================== Domain Management ==================== getDomains: () => ipcRenderer.invoke("getDomains"), createDomain: (params) => ipcRenderer.invoke("createDomain", params), updateDomain: (params) => ipcRenderer.invoke("updateDomain", params), deleteDomain: (id) => ipcRenderer.invoke("deleteDomain", id), testConnection: (id) => ipcRenderer.invoke("testConnection", id), testDomainConnection: (params) => ipcRenderer.invoke("testDomainConnection", params), // ==================== Browse ==================== getSpaces: (params) => ipcRenderer.invoke("getSpaces", params), getApps: (params) => ipcRenderer.invoke("getApps", params), getAppDetail: (params) => ipcRenderer.invoke("getAppDetail", params), getFileContent: (params) => ipcRenderer.invoke("getFileContent", params), // ==================== Deploy ==================== deploy: (params) => ipcRenderer.invoke("deploy", params), // ==================== Download ==================== download: (params) => ipcRenderer.invoke("download", params), // ==================== Version Management ==================== getVersions: (params) => ipcRenderer.invoke("getVersions", params), deleteVersion: (id) => ipcRenderer.invoke("deleteVersion", id), rollback: (params) => ipcRenderer.invoke("rollback", params), }; // Use `contextBridge` APIs to expose Electron APIs to // renderer only if context isolation is enabled, otherwise // just add to the DOM global. if (process.contextIsolated) { try { contextBridge.exposeInMainWorld("electron", electronAPI); contextBridge.exposeInMainWorld("api", api); } catch (error) { console.error(error); } } else { // @ts-ignore (define in dts) window.electron = electronAPI; // @ts-ignore (define in dts) window.api = api; }