polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
95 lines • 3.14 kB
TypeScript
import { EventEmitter } from 'events';
export interface RenderOptimizerConfig {
minRenderInterval: number;
maxRenderInterval: number;
enableIncrementalRendering: boolean;
enableRenderBatching: boolean;
batchWindow: number;
enableVirtualDom: boolean;
targetFrameRate: number;
enableProfiling: boolean;
maxPendingRenders: number;
}
export interface ComponentRenderState {
componentId: string;
componentType: string;
lastRenderTime: number;
contentHash: string;
renderCount: number;
averageRenderTime: number;
isDirty: boolean;
priority: 'low' | 'medium' | 'high';
isVisible: boolean;
dimensions?: {
width: number;
height: number;
x: number;
y: number;
};
}
export interface VirtualNode {
type: string;
props: Record<string, any>;
children: VirtualNode[];
key?: string;
hash: string;
}
export interface RenderMetrics {
totalRenders: number;
averageRenderTime: number;
currentFps: number;
skippedRenders: number;
batchedRenders: number;
incrementalRenders: number;
virtualDomMemory: number;
activeComponents: number;
dirtyComponents: number;
}
export declare class RenderOptimizer extends EventEmitter {
private config;
private componentStates;
private virtualNodes;
private pendingOperations;
private batchTimer?;
private renderTimer?;
private lastFrameTime;
private frameCount;
private isRunning;
private metrics;
constructor(config?: Partial<RenderOptimizerConfig>);
start(): void;
stop(): void;
registerComponent(componentId: string, componentType: string, options?: {
priority?: 'low' | 'medium' | 'high';
dimensions?: ComponentRenderState['dimensions'];
isVisible?: boolean;
}): void;
unregisterComponent(componentId: string): void;
markDirty(componentId: string, force?: boolean): void;
scheduleRender(componentId: string, priority?: 'low' | 'medium' | 'high', renderFn?: () => Promise<void> | void, force?: boolean): void;
updateContent(componentId: string, content: any): boolean;
updateVisibility(componentId: string, isVisible: boolean): void;
updateDimensions(componentId: string, dimensions: ComponentRenderState['dimensions']): void;
getMetrics(): RenderMetrics;
getComponentStates(): Map<string, ComponentRenderState>;
flushRenders(): Promise<void>;
clearPendingRenders(): void;
updateConfig(newConfig: Partial<RenderOptimizerConfig>): void;
private generateContentHash;
private shouldRenderImmediately;
private getPriorityValue;
private scheduleBatchRender;
private processBatchRenders;
private processBatchOperations;
private processRenderOperation;
private performDefaultRender;
private updateVirtualNode;
private setupRenderLoop;
private updateFpsMetrics;
private updateAverageRenderTime;
private updateActiveComponentsCount;
private updateDirtyComponentsCount;
private updateVirtualDomMemory;
private updateMetrics;
}
//# sourceMappingURL=render-optimizer.d.ts.map