const { contextBridge, ipcRenderer } = require('electron') const logger = { log: (message, ...args) => { if (process.env.NODE_ENV !== 'production') { /* eslint-disable no-console */ console.log(message, ...args) /* eslint-enable no-console */ } }, warn: (message, ...args) => { if (process.env.NODE_ENV !== 'production') { /* eslint-disable no-console */ console.warn(message, ...args) /* eslint-enable no-console */ } }, error: (message, ...args) => { /* eslint-disable no-console */ console.error(message, ...args) // Errors should always be logged /* eslint-enable no-console */ } } // Use a more direct path resolution approach const getPath = (pathType) => { switch (pathType) { case 'userData': return ( process.env.APPDATA || (process.platform === 'darwin' ? `${process.env.HOME}/Library/Application Support` : `${process.env.HOME}/.local/share`) ) case 'home': return process.env.HOME case 'appPath': return process.resourcesPath default: return '' } } logger.log('Preload script starting...') try { contextBridge.exposeInMainWorld('electronAPI', { // Path utilities getPath, // IPC functions send: (channel, data) => { const validChannels = ['toMain'] if (validChannels.includes(channel)) { ipcRenderer.send(channel, data) } }, receive: (channel, func) => { const validChannels = ['fromMain'] if (validChannels.includes(channel)) { ipcRenderer.on(channel, (event, ...args) => func(...args)) } }, // Environment info env: { isElectron: true, isDev: process.env.NODE_ENV === 'development' }, // Path utilities getBasePath: () => { return process.env.NODE_ENV === 'development' ? '/' : './' } }) logger.log('Preload script completed successfully') } catch (error) { logger.error('Error in preload script:', error) }