@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
76 lines • 2.16 kB
TypeScript
/**
* Generate performance panel HTML
*/
export declare function getPerformancePanelHtml(metrics: ComponentMetrics[]): string;
/**
* Generate performance panel styles
*/
export declare function getPerformancePanelStyles(): string;
/**
* Generate performance client script
*/
export declare function getPerformanceScript(): string;
/**
* Global profiler instance
*/
export declare const profiler: PerformanceProfiler;
/**
* STX Story - Component Performance Profiling
* Track render times, re-render counts, and memory usage
*/
/**
* Performance metrics for a component
*/
export declare interface ComponentMetrics {
componentId: string
componentName: string
renderCount: number
totalRenderTime: number
avgRenderTime: number
minRenderTime: number
maxRenderTime: number
lastRenderTime: number
memoryUsage?: number
history: RenderRecord[]
}
/**
* Single render record
*/
export declare interface RenderRecord {
timestamp: number
duration: number
props?: Record<string, any>
memory?: number
}
/**
* Performance profiler
*/
export declare class PerformanceProfiler {
private metrics: any;
private maxHistorySize: any;
private enabled: any;
setEnabled(enabled: boolean): void;
recordRender(componentId: string, componentName: string, duration: number, props?: Record<string, any>): void;
getMetrics(componentId: string): ComponentMetrics | undefined;
getAllMetrics(): ComponentMetrics[];
getSlowestComponents(limit?: any): ComponentMetrics[];
getMostRenderedComponents(limit?: any): ComponentMetrics[];
clear(): void;
clearComponent(componentId: string): void;
private getMemoryUsage(): number | undefined;
exportMetrics(): string;
createTimer(componentId: string, componentName: string): RenderTimer;
}
/**
* Render timer helper
*/
export declare class RenderTimer {
private startTime: number;
private props?: Record<string, any>;
private profiler: PerformanceProfiler;
private componentId: string;
private componentName: string;
constructor(profiler: PerformanceProfiler, componentId: string, componentName: string);
setProps(props: Record<string, any>): this;
end(): number;
}