perf: diagnoistics improvements
This commit is contained in:
39
electron/diagnostics/immediate-renderer-samples.collector.ts
Normal file
39
electron/diagnostics/immediate-renderer-samples.collector.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import type { BrowserWindow } from 'electron';
|
||||
import type { PerfDiagEntry } from './diagnostics.models';
|
||||
|
||||
export async function collectImmediateRendererSamples(
|
||||
window: BrowserWindow | null | undefined
|
||||
): Promise<PerfDiagEntry[]> {
|
||||
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<PerfDiagEntry>));
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeImmediateRendererEntry(entry: Partial<PerfDiagEntry>): PerfDiagEntry {
|
||||
return {
|
||||
collectedAt: Number(entry.collectedAt) || Date.now(),
|
||||
source: 'renderer',
|
||||
type: entry.type ?? 'session',
|
||||
payload: entry.payload ?? {}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user