import { FunctionKeys } from '@/TypeHelpers'; import { CodeRunner } from '@/application/CodeRunner/CodeRunner'; import { Dialog } from '@/presentation/common/Dialog'; import { ScriptDiagnosticsCollector } from '@/application/ScriptDiagnostics/ScriptDiagnosticsCollector'; import { IpcChannel } from './IpcChannel'; export const IpcChannelDefinitions = { CodeRunner: defineElectronIpcChannel('code-run', ['runCode']), Dialog: defineElectronIpcChannel('dialogs', ['showError', 'saveFile']), ScriptDiagnosticsCollector: defineElectronIpcChannel('script-diagnostics-collector', ['collectDiagnosticInformation']), } as const; export type ChannelDefinitionKey = keyof typeof IpcChannelDefinitions; function defineElectronIpcChannel( name: string, functionNames: readonly FunctionKeys[], ): IpcChannel { return { namespace: name, accessibleMembers: functionNames, }; }