my-performance-sdk
Version:
前端性能监控SDK,支持FCP、LCP、TBT、TTI和内存泄漏监控
96 lines (95 loc) • 2.46 kB
TypeScript
/**
* 性能指标接口定义
*/
export interface PerformanceMetrics {
/** First Contentful Paint - 首次内容绘制 */
fcp?: number;
/** Largest Contentful Paint - 最大内容绘制 */
lcp?: number;
/** Total Blocking Time - 总阻塞时间 */
tbt?: number;
/** Time to Interactive - 可交互时间 */
tti?: number;
/** 内存使用情况 */
memory?: MemoryInfo;
/** 页面加载时间 */
loadTime?: number;
/** DOM内容加载时间 */
domContentLoaded?: number;
/** 时间戳 */
timestamp?: number;
/** 页面URL */
url?: string;
/** 用户代理 */
userAgent?: string;
/** 能耗监控数据 */
powerConsumption?: PowerConsumptionInfo;
}
/**
* 内存信息接口
*/
export interface MemoryInfo {
/** 已使用的JS堆大小 */
usedJSHeapSize: number;
/** JS堆大小限制 */
jsHeapSizeLimit: number;
/** 总JS堆大小 */
totalJSHeapSize: number;
}
/**
* 能耗信息接口
*/
export interface PowerConsumptionInfo {
/** 电池电量百分比 */
batteryLevel?: number;
/** 是否正在充电 */
charging?: boolean;
/** 电池剩余时间(分钟) */
timeToEmpty?: number;
/** 电池充满时间(分钟) */
timeToFull?: number;
/** CPU使用率估算 */
cpuUsage?: number;
/** 设备温度(如果可用) */
temperature?: number;
/** 能耗等级(低/中/高) */
powerLevel: 'low' | 'medium' | 'high';
/** 能耗评分(0-100) */
powerScore: number;
}
/**
* SDK配置选项
*/
export interface PerformanceSDKOptions {
/** 是否自动开始监控 */
autoStart?: boolean;
/** 数据上报URL */
reportUrl?: string;
/** 上报间隔时间(ms) */
reportInterval?: number;
/** 是否启用内存监控 */
enableMemoryMonitoring?: boolean;
/** 是否启用Web Vitals监控 */
enableWebVitals?: boolean;
/** 是否启用能耗监控 */
enablePowerMonitoring?: boolean;
/** 自定义数据处理器 */
onData?: (data: PerformanceMetrics) => void;
}
/**
* Web Vitals指标
*/
export interface WebVitals {
/** First Contentful Paint */
fcp: number;
/** Largest Contentful Paint */
lcp: number;
/** First Input Delay */
fid: number;
/** Cumulative Layout Shift */
cls: number;
/** Total Blocking Time */
tbt: number;
/** Time to Interactive */
tti: number;
}