interprocess
Version:
A scalable and type-safe Electron IPC management tool with enhanced DX
28 lines (27 loc) • 5.97 kB
TypeScript
import type { Merge, NormalizeCombinedIPCs } from '../types';
export declare function combineIpcs<T extends {
main?: Object;
renderer?: Object;
}[]>(...props: [...T]): {
ipcs: NormalizeCombinedIPCs<T, Merge<T[number]>>;
exposeApiToGlobalWindow: <APIConfig extends import("../types").API<{ [Property in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: import("../types").RendererHandler<Property, import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property]>; }, { [Property_1 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: (arg: Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1] extends undefined ? void : Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1], ...restOfArgs: any[]) => ReturnType<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>; }, { [Property_2 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: () => void; }, APIConfig>>(props?: APIConfig) => {
key: APIConfig["apiKey"] extends string ? APIConfig["apiKey"] : "api";
api: (APIConfig["override"] extends Function ? ReturnType<APIConfig["override"]> : APIConfig["exposeAll"] extends true ? {
invoke: { [Property_1 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: (arg: Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1] extends undefined ? void : Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1], ...restOfArgs: any[]) => ReturnType<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>; };
handle: { [Property in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: import("../types").RendererHandler<Property, import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property]>; };
remove: { [Property_2 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: () => void; };
} : {
invoke: { [Property_1 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: (arg: Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1] extends undefined ? void : Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1], ...restOfArgs: any[]) => ReturnType<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>; };
}) & ((APIConfig["append"] extends infer T_1 ? { [K in keyof T_1]: APIConfig["append"][K]; } : never) | undefined);
};
ipcMain: {
handle: { [Property_3 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: import("../types").MainHandler<Property_3, import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_3]>; };
invoke: { [Property_4 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: (window: Electron.BrowserWindow, arg: Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property_4]>[1] extends undefined ? void : Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property_4]>[1], ...restOfArgs: any[]) => ReturnType<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property_4]>; };
remove: { [Property_5 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: () => void; };
};
ipcRenderer: {
handle: { [Property in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: import("../types").RendererHandler<Property, import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>[Property]>; };
invoke: { [Property_1 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>>]: (arg: Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1] extends undefined ? void : Parameters<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>[1], ...restOfArgs: any[]) => ReturnType<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["main"], Electron.IpcMainInvokeEvent>[Property_1]>; };
remove: { [Property_2 in import("../types").ProcessKeys<import("../types").IPC<NormalizeCombinedIPCs<T, Merge<T[number]>>["renderer"], Electron.IpcRendererEvent>>]: () => void; };
};
};