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
TypeScript
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>;
};