/**
 * В Electron (особенно после рестарта в dev) stdout/stderr часто уже закрыты.
 * Обычный `console.error` тогда даёт EPIPE и валит main process диалогом Uncaught Exception.
 */

function isBrokenPipe(err: unknown): boolean {
  const code = (err as NodeJS.ErrnoException | undefined)?.code;
  return code === 'EPIPE' || code === 'ERR_STREAM_DESTROYED';
}

export function installStdoutEpipeGuards(): void {
  for (const stream of [process.stdout, process.stderr]) {
    stream?.on('error', (err: NodeJS.ErrnoException) => {
      if (isBrokenPipe(err)) return;
    });
  }
}

export function safeConsoleError(...args: unknown[]): void {
  try {
    console.error(...args);
  } catch (err) {
    if (isBrokenPipe(err)) return;
    throw err;
  }
}
