UNPKG

electron-typescript-ipc

Version:

Library for type-safe use of contextBridge in Electron

53 lines 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.contextBridge = exports.createIpcMain = exports.createIpcRenderer = void 0; /* eslint-disable @typescript-eslint/no-explicit-any */ const electron_1 = require("electron"); const createIpcRenderer = () => electron_1.ipcRenderer; exports.createIpcRenderer = createIpcRenderer; const createIpcMain = () => (Object.assign(Object.assign({}, electron_1.ipcMain), { send(window, channel, ...args) { window.webContents.send(channel, ...args); } })); exports.createIpcMain = createIpcMain; /** * @example * import { contextBridge, createIpcRenderer, GetApiType } from 'electron-typescript-ipc'; * * const ipcRenderer = createIpcRenderer<Api>(); * * export type Api = GetApiType< * { * getDataFromStore: (str: string) => Promise<string>; * }, * { * showAlert: (text: string, num: number) => Promise<void>; * } * >; * * const api: Api = { * invoke: { * getDataFromStore: async (key: string) => { * return await ipcRenderer.invoke('getDataFromStore', key); * }, * }, * on: { * showAlert: (listener) => { * ipcRenderer.on('showAlert', listener); * }, * }, * }; * * contextBridge.exposeInMainWorld('myAPI', api); * * declare global { * interface Window { * myAPI: Api; * } * } */ exports.contextBridge = { exposeInMainWorld: (apiKey, api) => { electron_1.contextBridge.exposeInMainWorld(apiKey, api); }, }; //# sourceMappingURL=index.js.map