/** * Electron Preload Script * Exposes safe IPC channels to the renderer via contextBridge. */ const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { // Folder selection dialog selectFolder: () => ipcRenderer.invoke('select-folder'), // Settings loadSettings: () => ipcRenderer.invoke('load-settings'), saveSettings: (settings) => ipcRenderer.invoke('save-settings', settings), // File operations readFile: (filePath) => ipcRenderer.invoke('read-file', filePath), writeFile: (filePath, content) => ipcRenderer.invoke('write-file', filePath, content), moveToArchive: (filePath) => ipcRenderer.invoke('move-to-archive', filePath), // Watcher control startWatcher: (config) => ipcRenderer.invoke('start-watcher', config), stopWatcher: () => ipcRenderer.invoke('stop-watcher'), pauseWatcher: () => ipcRenderer.invoke('pause-watcher'), resumeWatcher: () => ipcRenderer.invoke('resume-watcher'), getWatcherStatus: () => ipcRenderer.invoke('get-watcher-status'), // Werksnummer Watcher control startWerksWatcher: (config) => ipcRenderer.invoke('start-werks-watcher', config), stopWerksWatcher: () => ipcRenderer.invoke('stop-werks-watcher'), pauseWerksWatcher: () => ipcRenderer.invoke('pause-werks-watcher'), resumeWerksWatcher: () => ipcRenderer.invoke('resume-werks-watcher'), getWerksWatcherStatus: () => ipcRenderer.invoke('get-werks-watcher-status'), // Outbound Watcher control startOutboundWatcher: (config) => ipcRenderer.invoke('start-outbound-watcher', config), stopOutboundWatcher: () => ipcRenderer.invoke('stop-outbound-watcher'), pauseOutboundWatcher: () => ipcRenderer.invoke('pause-outbound-watcher'), resumeOutboundWatcher: () => ipcRenderer.invoke('resume-outbound-watcher'), getOutboundWatcherStatus: () => ipcRenderer.invoke('get-outbound-watcher-status'), // Watcher events (from main → renderer) onFileDetected: (callback) => ipcRenderer.on('watcher-file-detected', (_, data) => callback(data)), onWatcherError: (callback) => ipcRenderer.on('watcher-error', (_, data) => callback(data)), onWatcherReady: (callback) => ipcRenderer.on('watcher-ready', (_, data) => callback(data)), // Outbound Watcher events onOutboundFileDetected: (callback) => ipcRenderer.on('outbound-watcher-file-detected', (_, data) => callback(data)), onOutboundWatcherError: (callback) => ipcRenderer.on('outbound-watcher-error', (_, data) => callback(data)), onOutboundWatcherReady: (callback) => ipcRenderer.on('outbound-watcher-ready', (_, data) => callback(data)), // Werksnummer Watcher events onWerksFileProcessed: (callback) => ipcRenderer.on('werks-watcher-success', (_, data) => callback(data)), onWerksWatcherError: (callback) => ipcRenderer.on('werks-watcher-error', (_, data) => callback(data)), onWerksWatcherReady: (callback) => ipcRenderer.on('werks-watcher-ready', (_, data) => callback(data)), // Conversion History DB dbInsert: (record) => ipcRenderer.invoke('db-insert', record), dbGetAll: (params) => ipcRenderer.invoke('db-get-all', params), dbGetById: (id) => ipcRenderer.invoke('db-get-by-id', id), dbDelete: (id) => ipcRenderer.invoke('db-delete', id), dbGetStats: () => ipcRenderer.invoke('db-get-stats'), // Configuration DB dbInsertConfig: (configData) => ipcRenderer.invoke('db-insert-config', configData), dbGetConfig: () => ipcRenderer.invoke('db-get-config'), // EDIFACT Validation & Alternative Parser (ts-edifact library, Electron only) validateEdifact: (content) => ipcRenderer.invoke('validate-edifact', content), parseEdifactLib: (content) => ipcRenderer.invoke('parse-edifact-lib', content) });