UNPKG

narraleaf

Version:

Create your visual novel with Electron and React

46 lines (45 loc) 1.36 kB
export declare enum IPCType { Host = "host", Client = "client" } export declare enum IPCMessageType { message = "message", request = "request" } export declare enum SubNamespace { Reply = "reply" } export type IPCConfiguration = { type: IPCMessageType.message; consumer: IPCType; data: Record<any, any>; response: never; } | { type: IPCMessageType.request; consumer: IPCType; data: Record<any, any>; response: Record<any, any>; }; type Opposite<T extends IPCType> = T extends IPCType.Host ? IPCType.Client : IPCType.Host; export type OnlyMessage<T extends Record<any, IPCConfiguration>, U extends IPCType> = { [K in keyof T]: T[K] extends { consumer: Opposite<U>; } ? T[K] extends { type: IPCMessageType.message; } ? K : never : never; }; export type OnlyRequest<T extends Record<any, IPCConfiguration>, U extends IPCType> = { [K in keyof T]: T[K] extends { consumer: Opposite<U>; } ? T[K] extends { type: IPCMessageType.request; response: Record<any, any>; } ? K : never : never; }; export declare class IPC<T extends Record<any, IPCConfiguration>, U extends IPCType> { type: U; namespace: string; protected constructor(type: U, namespace: string); protected getEventName(key: keyof T, sub?: SubNamespace): string; } export {};