17 lines
1003 B
JavaScript
17 lines
1003 B
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
const listeners = new Map();
|
|
ipcRenderer.on('dev:node', (_e, name, args) => listeners.get(name)?.forEach((fn) => fn({ args })));
|
|
const native = (m) => (arg) => ipcRenderer.invoke('dev:native', m, arg);
|
|
|
|
contextBridge.exposeInMainWorld('DevBridge', {
|
|
NodeJS: {
|
|
// Wie auf Android: start() kehrt erst zurück, wenn Node beendet wird
|
|
start: (o) => { ipcRenderer.invoke('dev:start', o.env); return new Promise(() => {}); },
|
|
whenReady: () => ipcRenderer.invoke('dev:ready'),
|
|
send: ({ eventName, args }) => ipcRenderer.send('dev:send', eventName, args),
|
|
addListener: (name, fn) => { if (!listeners.has(name)) listeners.set(name, new Set()); listeners.get(name).add(fn); return { remove: () => listeners.get(name).delete(fn) }; },
|
|
},
|
|
Native: Object.fromEntries(['vaultKey', 'info', 'bioAvailable', 'bioEnroll', 'bioUnlock', 'bioDisable', 'multicast', 'copy', 'paste', 'background', 'bars'].map((m) => [m, native(m)])),
|
|
});
|