import type { BrowserWindow } from 'electron'; import type { PerfDiagEntry } from './diagnostics.models'; export async function collectImmediateRendererSamples( window: BrowserWindow | null | undefined ): Promise { if (!window || window.isDestroyed()) { return []; } try { const result = await window.webContents.executeJavaScript(` (function () { const collect = globalThis.__collectPerfDiagSample; return typeof collect === 'function' ? collect() : []; })() `, true); if (!Array.isArray(result)) { return []; } return result .filter((entry) => entry && typeof entry === 'object') .map((entry) => normalizeImmediateRendererEntry(entry as Partial)); } catch { return []; } } function normalizeImmediateRendererEntry(entry: Partial): PerfDiagEntry { return { collectedAt: Number(entry.collectedAt) || Date.now(), source: 'renderer', type: entry.type ?? 'session', payload: entry.payload ?? {} }; }