- Cleaned 242MB of recursive data/data/data/ nesting - Added nesting-guard.js: auto-detects and removes recursive duplicates at startup - Wired VM sandbox cleanup into uninstall wizard (calls vmDestroy before regular uninstall) - Container stats, health data, and VM disk all cleaned on uninstall
131 lines
5.2 KiB
JavaScript
131 lines
5.2 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
// Expose protected methods that allow the renderer process to use
|
|
// the ipcRenderer without exposing the entire object
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// Platform detection
|
|
checkPlatform: () => ipcRenderer.invoke('check-platform'),
|
|
|
|
// Dependency checking
|
|
checkDependencies: (options) => ipcRenderer.invoke('check-dependencies', options),
|
|
checkDocker: () => ipcRenderer.invoke('check-docker'),
|
|
checkCaddy: (options) => ipcRenderer.invoke('check-caddy', options),
|
|
installDocker: () => ipcRenderer.invoke('install-docker'),
|
|
installCaddy: (options) => ipcRenderer.invoke('install-caddy', options),
|
|
|
|
// Configuration
|
|
validatePath: (path) => ipcRenderer.invoke('validate-path', path),
|
|
selectFolder: () => ipcRenderer.invoke('select-folder'),
|
|
saveConfig: (config) => ipcRenderer.invoke('save-config', config),
|
|
loadConfig: (path) => ipcRenderer.invoke('load-config', path),
|
|
|
|
// File deployment
|
|
validateSources: () => ipcRenderer.invoke('validate-sources'),
|
|
deployDashboard: (installPath) => ipcRenderer.invoke('deploy-dashboard', installPath),
|
|
deployAPI: (installPath) => ipcRenderer.invoke('deploy-api', installPath),
|
|
deployComplete: (installPath) => ipcRenderer.invoke('deploy-complete', installPath),
|
|
|
|
// Caddyfile generation
|
|
createCaddyfile: (installPath, options) => ipcRenderer.invoke('create-caddyfile', installPath, options),
|
|
createDockerCompose: (installPath) => ipcRenderer.invoke('create-docker-compose', installPath),
|
|
|
|
// Browser launcher
|
|
openDashboard: (port, hostname) => ipcRenderer.invoke('open-dashboard', port, hostname),
|
|
|
|
// Installation
|
|
runInstallation: (config) => ipcRenderer.invoke('run-installation', config),
|
|
|
|
// DNS
|
|
testDNSConnection: (credentials) => ipcRenderer.invoke('test-dns-connection', credentials),
|
|
|
|
// Network detection
|
|
detectNetwork: () => ipcRenderer.invoke('detect-network'),
|
|
|
|
// Health check
|
|
healthCheck: (config) => ipcRenderer.invoke('health-check', config),
|
|
|
|
// Uninstallation
|
|
detectInstallation: () => ipcRenderer.invoke('detect-installation'),
|
|
checkPreservedSettings: (installPath) => ipcRenderer.invoke('check-preserved-settings', installPath),
|
|
restorePreservedSettings: (installPath) => ipcRenderer.invoke('restore-preserved-settings', installPath),
|
|
runUninstallation: (options) => ipcRenderer.invoke('run-uninstallation', options),
|
|
|
|
// Service management
|
|
startServices: (config) => ipcRenderer.invoke('start-services', config),
|
|
stopServices: (config) => ipcRenderer.invoke('stop-services', config),
|
|
checkServiceStatus: (config) => ipcRenderer.invoke('check-service-status', config),
|
|
|
|
// DNS credentials
|
|
saveDNSCredentials: (credentials, installPath) =>
|
|
ipcRenderer.invoke('save-dns-credentials', credentials, installPath),
|
|
|
|
// Branding
|
|
saveBranding: (branding, installPath) =>
|
|
ipcRenderer.invoke('save-branding', branding, installPath),
|
|
|
|
// File selection (for logo, etc.)
|
|
selectFile: (options) => ipcRenderer.invoke('select-file', options),
|
|
|
|
// Event listeners
|
|
onStepProgress: (callback) => {
|
|
ipcRenderer.on('step-progress', (event, data) => callback(data));
|
|
},
|
|
onStepComplete: (callback) => {
|
|
ipcRenderer.on('step-complete', (event, data) => callback(data));
|
|
},
|
|
onStepError: (callback) => {
|
|
ipcRenderer.on('step-error', (event, data) => callback(data));
|
|
},
|
|
onInstallationComplete: (callback) => {
|
|
ipcRenderer.on('installation-complete', (event, data) => callback(data));
|
|
},
|
|
onDeploymentProgress: (callback) => {
|
|
ipcRenderer.on('deployment-progress', (event, data) => callback(data));
|
|
},
|
|
onUninstallProgress: (callback) => {
|
|
ipcRenderer.on('uninstall-progress', (event, data) => callback(data));
|
|
},
|
|
onUninstallStepComplete: (callback) => {
|
|
ipcRenderer.on('uninstall-step-complete', (event, data) => callback(data));
|
|
},
|
|
onUninstallComplete: (callback) => {
|
|
ipcRenderer.on('uninstall-complete', (event, data) => callback(data));
|
|
},
|
|
onUninstallError: (callback) => {
|
|
ipcRenderer.on('uninstall-error', (event, data) => callback(data));
|
|
},
|
|
|
|
|
|
// --- VM Disk Sandbox ---
|
|
vmGetPresets: () => ipcRenderer.invoke('vm:get-presets'),
|
|
vmGetStatus: () => ipcRenderer.invoke('vm:get-status'),
|
|
vmProvision: (opts) => ipcRenderer.invoke('vm:provision', opts),
|
|
vmDestroy: (opts) => ipcRenderer.invoke('vm:destroy', opts),
|
|
vmExportData: (opts) => ipcRenderer.invoke('vm:export-data', opts),
|
|
getDiskSpace: (path) => ipcRenderer.invoke('get-disk-space', path),
|
|
onVMProgress: (callback) => {
|
|
ipcRenderer.on('vm:progress', (event, data) => callback(data));
|
|
},
|
|
onVMComplete: (callback) => {
|
|
ipcRenderer.on('vm:complete', (event, data) => callback(data));
|
|
},
|
|
onVMError: (callback) => {
|
|
ipcRenderer.on('vm:error', (event, data) => callback(data));
|
|
},
|
|
|
|
// --- Auto-updater ---
|
|
checkForUpdates: () => ipcRenderer.invoke('check-for-updates'),
|
|
quitAndInstall: () => ipcRenderer.invoke('quit-and-install'),
|
|
onUpdateAvailable: (callback) => {
|
|
ipcRenderer.on('update-available', (event, data) => callback(data));
|
|
},
|
|
onUpdateDownloaded: (callback) => {
|
|
ipcRenderer.on('update-downloaded', (event, data) => callback(data));
|
|
},
|
|
|
|
// Remove listeners
|
|
removeListener: (channel) => {
|
|
ipcRenderer.removeAllListeners(channel);
|
|
}
|
|
});
|