const {clipboard, shell, contextBridge} = require('electron'); const fs = require('fs'); const internalIP = require('internal-ip'); // Expose protected methods so that render process does not need unsafe node integration contextBridge.exposeInMainWorld('api', { electron: {clipboard, shell}, ip: {address: internalIP.v4.sync}, getDevTools() { let devtools; try { devtools = require('react-devtools-core/standalone').default; } catch (err) { alert( err.toString() + '\n\nDid you run `yarn` and `yarn run build` in packages/react-devtools-core?', ); } return devtools; }, readEnv() { let options; let useHttps = false; try { if (process.env.KEY && process.env.CERT) { options = { key: fs.readFileSync(process.env.KEY), cert: fs.readFileSync(process.env.CERT), }; useHttps = true; } } catch (err) { console.error('Failed to process SSL options - ', err); options = undefined; } const host = process.env.HOST || 'localhost'; const protocol = useHttps ? 'https' : 'http'; const port = +process.env.REACT_DEVTOOLS_PORT || +process.env.PORT || 8097; return {options, useHttps, host, protocol, port}; }, });