UNPKG

electron-ipc-typesafe

Version:

A type-safe IPC (Inter-Process Communication) library for Electron applications with flexible handler registration

38 lines (37 loc) 1.72 kB
import type { IpcMain, IpcRenderer } from 'electron'; import type { EventSchema, EventSchemaToSenders, EventSchemaToSubscribers, IpcHandlerSchemas, SchemaToHandler, TransformSchemasToInvokers } from './types'; export declare function createIpcSchema<THandlerSchemas extends IpcHandlerSchemas, TEventSchema extends EventSchema>(config: { apiKey: string; handlers: THandlerSchemas; events: TEventSchema; }): { registerHandler: <K extends keyof THandlerSchemas>(channel: K, handler: SchemaToHandler<THandlerSchemas[K]>) => () => void; registerMainHandlers: (ipcMain: IpcMain) => void; exposeInPreload: (ipcRenderer: IpcRenderer) => any; invoke: TransformSchemasToInvokers<THandlerSchemas>; send: EventSchemaToSenders<TEventSchema>; events: EventSchemaToSubscribers<TEventSchema>; }; export declare function createIpcSchema<THandlerSchemas extends IpcHandlerSchemas>(config: { apiKey: string; handlers: THandlerSchemas; events?: never; }): { registerHandler: <K extends keyof THandlerSchemas>(channel: K, handler: SchemaToHandler<THandlerSchemas[K]>) => () => void; registerMainHandlers: (ipcMain: IpcMain) => void; exposeInPreload: (ipcRenderer: IpcRenderer) => any; invoke: TransformSchemasToInvokers<THandlerSchemas>; send: Record<string, never>; }; export declare function createIpcSchema<TEventSchema extends EventSchema>(config: { apiKey: string; handlers?: never; events: TEventSchema; }): { registerHandler?: never; registerMainHandlers?: never; exposeInPreload: (ipcRenderer: IpcRenderer) => any; invoke?: never; send: EventSchemaToSenders<TEventSchema>; events: EventSchemaToSubscribers<TEventSchema>; };