* fix: incompatible browser dependency * fix: update model extension to use rollup * fix: test timeout
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
/**
|
|
* Exposes a set of APIs to the renderer process via the contextBridge object.
|
|
* @module preload
|
|
*/
|
|
|
|
import { APIEvents, APIRoutes } from '@janhq/core/node'
|
|
import { contextBridge, ipcRenderer } from 'electron'
|
|
|
|
const interfaces: { [key: string]: (...args: any[]) => any } = {}
|
|
|
|
// Loop over each route in APIRoutes
|
|
APIRoutes.forEach((method) => {
|
|
// For each method, create a function on the interfaces object
|
|
// This function invokes the method on the ipcRenderer with any provided arguments
|
|
interfaces[method] = (...args: any[]) => ipcRenderer.invoke(method, ...args)
|
|
})
|
|
|
|
// Loop over each method in APIEvents
|
|
APIEvents.forEach((method) => {
|
|
// For each method, create a function on the interfaces object
|
|
// This function sets up an event listener on the ipcRenderer for the method
|
|
// The handler for the event is provided as an argument to the function
|
|
interfaces[method] = (handler: any) => ipcRenderer.on(method, handler)
|
|
})
|
|
// Expose the 'interfaces' object in the main world under the name 'electronAPI'
|
|
// This allows the renderer process to access these methods directly
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
...interfaces,
|
|
})
|