@lytjs/devtools 4.0.5 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/index.cjs +5 -5
  2. package/dist/index.mjs +4 -4
  3. package/dist/tsconfig.tsbuildinfo +1 -0
  4. package/dist/types/batch-analyzer.d.ts +150 -0
  5. package/dist/types/batch-analyzer.d.ts.map +1 -0
  6. package/dist/types/component-profiler.d.ts +144 -0
  7. package/dist/types/component-profiler.d.ts.map +1 -0
  8. package/dist/types/component-tree.d.ts +69 -0
  9. package/dist/types/component-tree.d.ts.map +1 -0
  10. package/dist/types/event-panel.d.ts +129 -0
  11. package/dist/types/event-panel.d.ts.map +1 -0
  12. package/dist/types/event-tracker.d.ts +80 -0
  13. package/dist/types/event-tracker.d.ts.map +1 -0
  14. package/dist/types/hooks.d.ts +177 -0
  15. package/dist/types/hooks.d.ts.map +1 -0
  16. package/dist/types/index.d.ts +185 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/types/memory-tracker.d.ts +148 -0
  19. package/dist/types/memory-tracker.d.ts.map +1 -0
  20. package/dist/types/panel.d.ts +182 -0
  21. package/dist/types/panel.d.ts.map +1 -0
  22. package/dist/types/perf-collector.d.ts +328 -0
  23. package/dist/types/perf-collector.d.ts.map +1 -0
  24. package/dist/types/perf-panel.d.ts +231 -0
  25. package/dist/types/perf-panel.d.ts.map +1 -0
  26. package/dist/types/render-tracker.d.ts +147 -0
  27. package/dist/types/render-tracker.d.ts.map +1 -0
  28. package/dist/types/route-panel.d.ts +68 -0
  29. package/dist/types/route-panel.d.ts.map +1 -0
  30. package/dist/types/router-panel-enhanced.d.ts +118 -0
  31. package/dist/types/router-panel-enhanced.d.ts.map +1 -0
  32. package/dist/types/state-inspector.d.ts +80 -0
  33. package/dist/types/state-inspector.d.ts.map +1 -0
  34. package/dist/types/time-travel.d.ts +189 -0
  35. package/dist/types/time-travel.d.ts.map +1 -0
  36. package/dist/types/virtual-tree.d.ts +168 -0
  37. package/dist/types/virtual-tree.d.ts.map +1 -0
  38. package/package.json +5 -3
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Lyt.js DevTools - 性能指标收集器
3
+ *
4
+ * 收集和存储各类性能指标,包括:
5
+ * - FCP (First Contentful Paint)
6
+ * - INP (Interaction to Next Paint)
7
+ * - 组件渲染时间
8
+ * - 更新频率
9
+ * - 内存使用(代理对象计数)
10
+ *
11
+ * 使用环形缓冲区存储指标,防止内存泄漏。
12
+ * 纯原生零依赖实现。
13
+ */
14
+ /** FCP 指标 */
15
+ export interface FCPMetric {
16
+ /** 指标名称 */
17
+ type: 'fcp';
18
+ /** FCP 时间戳 (ms, 相对于 performance.timeOrigin) */
19
+ value: number;
20
+ /** 记录时间 */
21
+ timestamp: number;
22
+ }
23
+ /** INP 指标 */
24
+ export interface INPMetric {
25
+ /** 指标名称 */
26
+ type: 'inp';
27
+ /** 事件处理耗时 (ms) */
28
+ value: number;
29
+ /** 事件名称 */
30
+ eventName: string;
31
+ /** 来源组件名称 */
32
+ componentName?: string;
33
+ /** 记录时间 */
34
+ timestamp: number;
35
+ }
36
+ /** 组件渲染指标 */
37
+ export interface RenderMetric {
38
+ /** 指标名称 */
39
+ type: 'render';
40
+ /** 渲染耗时 (ms) */
41
+ value: number;
42
+ /** 组件名称 */
43
+ componentName: string;
44
+ /** 组件 ID */
45
+ componentId?: string;
46
+ /** 渲染阶段: mount | update | unmount */
47
+ phase: 'mount' | 'update' | 'unmount';
48
+ /** 记录时间 */
49
+ timestamp: number;
50
+ }
51
+ /** 更新频率指标 */
52
+ export interface UpdateFrequencyMetric {
53
+ /** 指标名称 */
54
+ type: 'update-frequency';
55
+ /** 组件名称 */
56
+ componentName: string;
57
+ /** 时间窗口内更新次数 */
58
+ count: number;
59
+ /** 时间窗口大小 (ms) */
60
+ windowMs: number;
61
+ /** 记录时间 */
62
+ timestamp: number;
63
+ }
64
+ /** 内存使用指标 */
65
+ export interface MemoryMetric {
66
+ /** 指标名称 */
67
+ type: 'memory';
68
+ /** 代理对象数量 */
69
+ proxyCount: number;
70
+ /** 响应式状态对象数量 */
71
+ reactiveCount: number;
72
+ /** 记录时间 */
73
+ timestamp: number;
74
+ }
75
+ /** 自定义计时标记 */
76
+ export interface CustomMarkMetric {
77
+ /** 指标名称 */
78
+ type: 'custom';
79
+ /** 标记名称 */
80
+ name: string;
81
+ /** 耗时 (ms) */
82
+ value: number;
83
+ /** 记录时间 */
84
+ timestamp: number;
85
+ }
86
+ /** FPS 指标 */
87
+ export interface FPSMetric {
88
+ /** 指标名称 */
89
+ type: 'fps';
90
+ /** 当前 FPS */
91
+ value: number;
92
+ /** 记录时间 */
93
+ timestamp: number;
94
+ }
95
+ /** 所有指标联合类型 */
96
+ export type Metric = FCPMetric | INPMetric | RenderMetric | UpdateFrequencyMetric | MemoryMetric | CustomMarkMetric | FPSMetric;
97
+ /** 性能报告 */
98
+ export interface PerformanceReport {
99
+ /** 报告生成时间 */
100
+ generatedAt: number;
101
+ /** FCP 指标(最新值) */
102
+ fcp: FCPMetric | null;
103
+ /** INP 指标统计 */
104
+ inp: {
105
+ /** 平均值 */
106
+ avg: number;
107
+ /** 最大值 */
108
+ max: number;
109
+ /** 最小值 */
110
+ min: number;
111
+ /** 样本数 */
112
+ count: number;
113
+ };
114
+ /** 组件渲染统计(按组件名分组) */
115
+ renderStats: {
116
+ /** 组件名称 */
117
+ componentName: string;
118
+ /** 渲染次数 */
119
+ renderCount: number;
120
+ /** 平均渲染时间 (ms) */
121
+ avgRenderTime: number;
122
+ /** 最大渲染时间 (ms) */
123
+ maxRenderTime: number;
124
+ /** 总渲染时间 (ms) */
125
+ totalRenderTime: number;
126
+ }[];
127
+ /** 更新频率统计 */
128
+ updateFrequencyStats: {
129
+ /** 组件名称 */
130
+ componentName: string;
131
+ /** 平均更新频率 (次/秒) */
132
+ avgFrequency: number;
133
+ }[];
134
+ /** 内存使用(最新值) */
135
+ memory: MemoryMetric | null;
136
+ /** FPS 统计 */
137
+ fps: {
138
+ /** 平均 FPS */
139
+ avg: number;
140
+ /** 最低 FPS */
141
+ min: number;
142
+ /** 样本数 */
143
+ count: number;
144
+ };
145
+ /** 自定义标记统计 */
146
+ customMarks: {
147
+ /** 标记名称 */
148
+ name: string;
149
+ /** 平均耗时 (ms) */
150
+ avg: number;
151
+ /** 最大耗时 (ms) */
152
+ max: number;
153
+ /** 样本数 */
154
+ count: number;
155
+ }[];
156
+ }
157
+ /**
158
+ * 性能指标收集器
159
+ *
160
+ * 收集、存储和报告各类性能指标。
161
+ * 使用环形缓冲区限制内存使用。
162
+ */
163
+ export declare class PerformanceCollector {
164
+ /** FCP 指标缓冲区 */
165
+ private fcpBuffer;
166
+ /** INP 指标缓冲区 */
167
+ private inpBuffer;
168
+ /** 组件渲染指标缓冲区 */
169
+ private renderBuffer;
170
+ /** 更新频率指标缓冲区 */
171
+ private updateFrequencyBuffer;
172
+ /** 内存使用指标缓冲区 */
173
+ private memoryBuffer;
174
+ /** 自定义标记缓冲区 */
175
+ private customMarkBuffer;
176
+ /** FPS 指标缓冲区 */
177
+ private fpsBuffer;
178
+ /** 自定义标记起始时间映射 */
179
+ private pendingMarks;
180
+ /** 组件更新计数(用于计算更新频率) */
181
+ private componentUpdateCounts;
182
+ /** FPS 监控状态 */
183
+ private fpsState;
184
+ /** 是否正在录制 */
185
+ private _isRecording;
186
+ /** 缓冲区容量 */
187
+ private readonly bufferSize;
188
+ constructor(bufferSize?: number);
189
+ /**
190
+ * 记录 FCP 指标
191
+ *
192
+ * @param value - FCP 时间 (ms),如果未提供则尝试从 Performance API 获取
193
+ */
194
+ recordFCP(value?: number): void;
195
+ /**
196
+ * 记录 INP 指标
197
+ *
198
+ * @param duration - 事件处理耗时 (ms)
199
+ * @param eventName - 事件名称
200
+ * @param componentName - 来源组件名称(可选)
201
+ */
202
+ recordINP(duration: number, eventName: string, componentName?: string): void;
203
+ /**
204
+ * 记录组件渲染
205
+ *
206
+ * @param componentName - 组件名称
207
+ * @param duration - 渲染耗时 (ms)
208
+ * @param phase - 渲染阶段
209
+ * @param componentId - 组件 ID(可选)
210
+ */
211
+ recordRender(componentName: string, duration: number, phase?: 'mount' | 'update' | 'unmount', componentId?: string): void;
212
+ /**
213
+ * 追踪组件更新
214
+ *
215
+ * @param componentName - 组件名称
216
+ */
217
+ private trackComponentUpdate;
218
+ /**
219
+ * 记录内存使用
220
+ *
221
+ * @param proxyCount - 代理对象数量
222
+ * @param reactiveCount - 响应式状态对象数量
223
+ */
224
+ recordMemory(proxyCount: number, reactiveCount: number): void;
225
+ /**
226
+ * 开始一个自定义计时标记
227
+ *
228
+ * @param name - 标记名称
229
+ */
230
+ startMark(name: string): void;
231
+ /**
232
+ * 结束一个自定义计时标记并记录结果
233
+ *
234
+ * @param name - 标记名称
235
+ * @returns 耗时 (ms),如果标记不存在则返回 -1
236
+ */
237
+ endMark(name: string): number;
238
+ /**
239
+ * 开始 FPS 监控
240
+ */
241
+ startFPSMonitor(): void;
242
+ /**
243
+ * 停止 FPS 监控
244
+ */
245
+ stopFPSMonitor(): void;
246
+ /**
247
+ * 是否正在监控 FPS
248
+ */
249
+ isFPSMonitoring(): boolean;
250
+ /**
251
+ * 开始录制
252
+ */
253
+ startRecording(): void;
254
+ /**
255
+ * 停止录制
256
+ */
257
+ stopRecording(): void;
258
+ /**
259
+ * 是否正在录制
260
+ */
261
+ isRecording(): boolean;
262
+ /**
263
+ * 获取所有收集的指标
264
+ *
265
+ * @returns 所有指标数组
266
+ */
267
+ getMetrics(): Metric[];
268
+ /**
269
+ * 获取指定类型的指标
270
+ *
271
+ * @param type - 指标类型
272
+ * @returns 指标数组
273
+ */
274
+ getMetricsByType<T extends Metric['type']>(type: T): Extract<Metric, {
275
+ type: T;
276
+ }>[];
277
+ /**
278
+ * 获取最新 FPS 值
279
+ *
280
+ * @returns 最新 FPS 值,如果没有则返回 0
281
+ */
282
+ getCurrentFPS(): number;
283
+ /**
284
+ * 获取组件渲染排名(按平均渲染时间降序)
285
+ *
286
+ * @returns 排序后的组件渲染统计
287
+ */
288
+ getRenderRankings(): {
289
+ componentName: string;
290
+ renderCount: number;
291
+ avgRenderTime: number;
292
+ maxRenderTime: number;
293
+ totalRenderTime: number;
294
+ }[];
295
+ /**
296
+ * 获取总代理对象计数(最新值)
297
+ *
298
+ * @returns 代理对象计数,如果没有数据则返回 0
299
+ */
300
+ getProxyCount(): number;
301
+ /**
302
+ * 获取慢渲染列表(渲染时间 > 16ms)
303
+ *
304
+ * @returns 慢渲染指标数组
305
+ */
306
+ getSlowRenders(): RenderMetric[];
307
+ /**
308
+ * 生成性能摘要报告
309
+ *
310
+ * @returns 性能报告
311
+ */
312
+ getReport(): PerformanceReport;
313
+ /**
314
+ * 导出所有收集的指标为 JSON 字符串
315
+ *
316
+ * @returns JSON 字符串
317
+ */
318
+ exportJSON(): string;
319
+ /**
320
+ * 清除所有收集的指标
321
+ */
322
+ clear(): void;
323
+ /**
324
+ * 销毁收集器,停止所有监控
325
+ */
326
+ destroy(): void;
327
+ }
328
+ //# sourceMappingURL=perf-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-collector.d.ts","sourceRoot":"","sources":["../../src/perf-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Lyt.js DevTools 性能面板
3
+ *
4
+ * 增强版性能面板,集成 PerformanceCollector 和 ComponentProfiler,
5
+ * 提供实时 FPS、组件渲染排名、更新频率、代理对象计数等监控能力。
6
+ *
7
+ * 纯原生零依赖实现。
8
+ */
9
+ import { PerformanceCollector, type PerformanceReport } from './perf-collector';
10
+ import { ComponentProfiler, type ProfileResult } from './component-profiler';
11
+ /** 性能条目(保持向后兼容) */
12
+ export interface PerfEntry {
13
+ /** 组件名称 */
14
+ name: string;
15
+ /** 渲染次数 */
16
+ renders: number;
17
+ /** 总耗时 (ms) */
18
+ totalTime: number;
19
+ /** 平均耗时 (ms) */
20
+ avgTime: number;
21
+ /** 最大耗时 (ms) */
22
+ maxTime: number;
23
+ /** 最近一次耗时 (ms) */
24
+ lastTime: number;
25
+ }
26
+ /** 增强面板配置 */
27
+ export interface EnhancedPerfPanelConfig {
28
+ /** 是否自动开始 FPS 监控 */
29
+ autoStartFPS?: boolean;
30
+ /** FPS 更新间隔 (ms) */
31
+ fpsUpdateInterval?: number;
32
+ }
33
+ /**
34
+ * 增强版性能面板
35
+ *
36
+ * 在原有 PerfPanel 基础上,集成 PerformanceCollector 和 ComponentProfiler,
37
+ * 提供更全面的性能监控能力。
38
+ */
39
+ export declare class PerfPanel {
40
+ private container;
41
+ private entries;
42
+ /** 性能指标收集器 */
43
+ private collector;
44
+ /** 组件分析器 */
45
+ private profiler;
46
+ /** 是否正在录制 */
47
+ private isRecording;
48
+ /** FPS 更新定时器 */
49
+ private fpsUpdateTimer;
50
+ /** FPS 更新间隔 */
51
+ private fpsUpdateInterval;
52
+ /** 配置 */
53
+ private config;
54
+ constructor(container: HTMLElement, config?: EnhancedPerfPanelConfig);
55
+ /**
56
+ * 记录一次组件渲染
57
+ *
58
+ * @param componentName - 组件名称
59
+ * @param duration - 渲染耗时(毫秒)
60
+ */
61
+ recordRender(componentName: string, duration: number): void;
62
+ /**
63
+ * 获取所有性能统计(按总耗时降序排列)
64
+ *
65
+ * @returns 排序后的性能条目数组
66
+ */
67
+ getStats(): PerfEntry[];
68
+ /**
69
+ * 获取指定组件的性能数据
70
+ *
71
+ * @param componentName - 组件名称
72
+ * @returns 性能条目,如果不存在则返回 null
73
+ */
74
+ getEntry(componentName: string): PerfEntry | null;
75
+ /**
76
+ * 获取总渲染次数
77
+ *
78
+ * @returns 所有组件的总渲染次数
79
+ */
80
+ getTotalRenders(): number;
81
+ /**
82
+ * 获取总耗时
83
+ *
84
+ * @returns 所有组件的总耗时(毫秒)
85
+ */
86
+ getTotalTime(): number;
87
+ /**
88
+ * 清除所有性能数据
89
+ */
90
+ clear(): void;
91
+ /**
92
+ * 获取当前 FPS
93
+ *
94
+ * @returns 当前 FPS 值
95
+ */
96
+ getCurrentFPS(): number;
97
+ /**
98
+ * 开始 FPS 监控
99
+ */
100
+ startFPSMonitor(): void;
101
+ /**
102
+ * 停止 FPS 监控
103
+ */
104
+ stopFPSMonitor(): void;
105
+ /**
106
+ * 是否正在监控 FPS
107
+ */
108
+ isFPSMonitoring(): boolean;
109
+ /**
110
+ * 获取组件渲染时间排名(最慢优先)
111
+ *
112
+ * @returns 排序后的渲染统计数组
113
+ */
114
+ getRenderRankings(): {
115
+ componentName: string;
116
+ renderCount: number;
117
+ avgRenderTime: number;
118
+ maxRenderTime: number;
119
+ totalRenderTime: number;
120
+ }[];
121
+ /**
122
+ * 获取组件更新频率统计
123
+ *
124
+ * @returns 更新频率统计数组
125
+ */
126
+ getUpdateFrequencyStats(): {
127
+ componentName: string;
128
+ avgFrequency: number;
129
+ }[];
130
+ /**
131
+ * 记录代理对象计数
132
+ *
133
+ * @param proxyCount - 代理对象数量
134
+ * @param reactiveCount - 响应式状态对象数量
135
+ */
136
+ recordProxyCount(proxyCount: number, reactiveCount: number): void;
137
+ /**
138
+ * 获取当前代理对象计数
139
+ *
140
+ * @returns 代理对象数量
141
+ */
142
+ getProxyCount(): number;
143
+ /**
144
+ * 开始录制
145
+ */
146
+ startRecording(): void;
147
+ /**
148
+ * 停止录制
149
+ */
150
+ stopRecording(): void;
151
+ /**
152
+ * 是否正在录制
153
+ */
154
+ isRecordingActive(): boolean;
155
+ /**
156
+ * 导出收集的数据为 JSON 字符串
157
+ *
158
+ * @returns JSON 字符串
159
+ */
160
+ exportJSON(): string;
161
+ /**
162
+ * 获取性能报告
163
+ *
164
+ * @returns 性能报告
165
+ */
166
+ getReport(): PerformanceReport;
167
+ /**
168
+ * 开始分析指定组件
169
+ *
170
+ * @param componentName - 组件名称
171
+ * @returns 是否成功开始
172
+ */
173
+ startProfile(componentName: string): boolean;
174
+ /**
175
+ * 停止分析指定组件
176
+ *
177
+ * @param componentName - 组件名称
178
+ * @returns 分析结果
179
+ */
180
+ stopProfile(componentName: string): ProfileResult | null;
181
+ /**
182
+ * 获取组件分析快照
183
+ *
184
+ * @param componentName - 组件名称
185
+ * @returns 分析快照
186
+ */
187
+ getProfileSnapshot(componentName: string): ProfileResult | null;
188
+ /**
189
+ * 获取慢渲染列表
190
+ *
191
+ * @returns 慢渲染的 PerfEntry 数组
192
+ */
193
+ getSlowRenders(): PerfEntry[];
194
+ /**
195
+ * 获取性能收集器实例
196
+ */
197
+ getCollector(): PerformanceCollector;
198
+ /**
199
+ * 获取组件分析器实例
200
+ */
201
+ getProfiler(): ComponentProfiler;
202
+ /**
203
+ * 渲染增强版性能面板 UI
204
+ */
205
+ private render;
206
+ /**
207
+ * 创建统计卡片
208
+ */
209
+ private createStatCard;
210
+ /**
211
+ * 获取录制按钮样式
212
+ */
213
+ private getRecordButtonStyle;
214
+ /**
215
+ * 根据耗时返回颜色样式
216
+ */
217
+ private getPerfColor;
218
+ /**
219
+ * 启动 FPS 更新循环
220
+ */
221
+ private startFPSUpdateLoop;
222
+ /**
223
+ * 停止 FPS 更新循环
224
+ */
225
+ private stopFPSUpdateLoop;
226
+ /**
227
+ * 销毁面板,清理 DOM 和资源
228
+ */
229
+ destroy(): void;
230
+ }
231
+ //# sourceMappingURL=perf-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-panel.d.ts","sourceRoot":"","sources":["../../src/perf-panel.ts"],"names":[],"mappings":"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"}