@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,144 @@
1
+ /**
2
+ * Lyt.js DevTools - 组件性能分析器
3
+ *
4
+ * 对单个组件进行详细的性能分析,追踪:
5
+ * - 渲染次数
6
+ * - 平均渲染时间
7
+ * - 最大渲染时间
8
+ * - 总渲染时间
9
+ * - 慢渲染自动检测(>16ms)
10
+ *
11
+ * 纯原生零依赖实现。
12
+ */
13
+ /** 单次渲染记录 */
14
+ export interface RenderRecord {
15
+ /** 渲染耗时 (ms) */
16
+ duration: number;
17
+ /** 渲染时间戳 */
18
+ timestamp: number;
19
+ /** 是否为慢渲染 (>16ms) */
20
+ isSlow: boolean;
21
+ }
22
+ /** 组件分析结果 */
23
+ export interface ProfileResult {
24
+ /** 组件名称 */
25
+ componentName: string;
26
+ /** 渲染次数 */
27
+ renderCount: number;
28
+ /** 平均渲染时间 (ms) */
29
+ avgRenderTime: number;
30
+ /** 最大渲染时间 (ms) */
31
+ maxRenderTime: number;
32
+ /** 最小渲染时间 (ms) */
33
+ minRenderTime: number;
34
+ /** 总渲染时间 (ms) */
35
+ totalRenderTime: number;
36
+ /** 慢渲染次数 */
37
+ slowRenderCount: number;
38
+ /** 慢渲染阈值 (ms) */
39
+ slowThreshold: number;
40
+ /** 所有渲染记录 */
41
+ records: RenderRecord[];
42
+ /** 分析持续时间 (ms) */
43
+ profileDuration: number;
44
+ }
45
+ /**
46
+ * 组件性能分析器
47
+ *
48
+ * 对指定组件进行性能分析,自动检测慢渲染。
49
+ * 支持同时分析多个组件。
50
+ */
51
+ export declare class ComponentProfiler {
52
+ /** 活跃的分析会话映射(组件名 -> 会话) */
53
+ private activeProfiles;
54
+ /** 慢渲染阈值 (ms) */
55
+ private slowThreshold;
56
+ constructor(slowThreshold?: number);
57
+ /**
58
+ * 开始分析指定组件
59
+ *
60
+ * @param componentName - 组件名称
61
+ * @returns 是否成功开始(如果已经在分析中则返回 false)
62
+ */
63
+ startProfile(componentName: string): boolean;
64
+ /**
65
+ * 停止分析指定组件并返回结果
66
+ *
67
+ * @param componentName - 组件名称
68
+ * @returns 分析结果,如果组件未被分析则返回 null
69
+ */
70
+ stopProfile(componentName: string): ProfileResult | null;
71
+ /**
72
+ * 停止所有分析并返回所有结果
73
+ *
74
+ * @returns 所有分析结果数组
75
+ */
76
+ stopAllProfiles(): ProfileResult[];
77
+ /**
78
+ * 记录一次组件渲染
79
+ *
80
+ * 如果组件正在被分析中,则记录此次渲染。
81
+ *
82
+ * @param componentName - 组件名称
83
+ * @param duration - 渲染耗时 (ms)
84
+ */
85
+ recordRender(componentName: string, duration: number): void;
86
+ /**
87
+ * 获取指定组件的当前分析快照(不停止分析)
88
+ *
89
+ * @param componentName - 组件名称
90
+ * @returns 当前分析快照,如果组件未被分析则返回 null
91
+ */
92
+ getSnapshot(componentName: string): ProfileResult | null;
93
+ /**
94
+ * 检查指定组件是否正在被分析
95
+ *
96
+ * @param componentName - 组件名称
97
+ * @returns 是否正在分析中
98
+ */
99
+ isProfiling(componentName: string): boolean;
100
+ /**
101
+ * 获取所有正在分析的组件名称
102
+ *
103
+ * @returns 组件名称数组
104
+ */
105
+ getActiveProfileNames(): string[];
106
+ /**
107
+ * 获取正在分析的组件数量
108
+ *
109
+ * @returns 组件数量
110
+ */
111
+ getActiveProfileCount(): number;
112
+ /**
113
+ * 获取指定组件的慢渲染列表(仅当前活跃分析中的)
114
+ *
115
+ * @param componentName - 组件名称
116
+ * @returns 慢渲染记录数组
117
+ */
118
+ getSlowRenders(componentName: string): RenderRecord[];
119
+ /**
120
+ * 设置慢渲染阈值
121
+ *
122
+ * @param threshold - 新的阈值 (ms)
123
+ */
124
+ setSlowThreshold(threshold: number): void;
125
+ /**
126
+ * 获取当前慢渲染阈值
127
+ *
128
+ * @returns 阈值 (ms)
129
+ */
130
+ getSlowThreshold(): number;
131
+ /**
132
+ * 清除所有分析数据
133
+ */
134
+ clear(): void;
135
+ /**
136
+ * 销毁分析器
137
+ */
138
+ destroy(): void;
139
+ /**
140
+ * 从分析会话构建结果对象
141
+ */
142
+ private buildResult;
143
+ }
144
+ //# sourceMappingURL=component-profiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-profiler.d.ts","sourceRoot":"","sources":["../../src/component-profiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,aAAa;AACb,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB;IACrB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY;IACZ,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa;IACb,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,kBAAkB;IAClB,eAAe,EAAE,MAAM,CAAA;CACxB;AAqBD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,2BAA2B;IAC3B,OAAO,CAAC,cAAc,CAAwC;IAE9D,iBAAiB;IACjB,OAAO,CAAC,aAAa,CAAQ;gBAEjB,aAAa,GAAE,MAA+B;IAQ1D;;;;;OAKG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAe5C;;;;;OAKG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAWxD;;;;OAIG;IACH,eAAe,IAAI,aAAa,EAAE;IAelC;;;;;;;OAOG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAa3D;;;;;OAKG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAaxD;;;;;OAKG;IACH,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;OAIG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;;;;OAKG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,EAAE;IAUrD;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYzC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAQ1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,CAAC,WAAW;CAuBpB"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Lyt.js DevTools — 组件树检查器
3
+ *
4
+ * 遍历应用组件树,生成可视化的树形结构,支持组件选择、搜索过滤和高亮。
5
+ *
6
+ * 核心功能:
7
+ * - ComponentTreeInspector 类
8
+ * - 遍历应用组件树,生成树形结构
9
+ * - 显示每个组件的名称、状态数量、是否有更新、渲染耗时
10
+ * - 点击组件节点显示详情
11
+ * - 高亮选中组件(给对应 DOM 元素加边框)
12
+ * - 组件搜索/过滤功能
13
+ *
14
+ * 纯原生零依赖实现。
15
+ */
16
+ import type { DevToolsPanel } from './panel';
17
+ /** 组件选中回调 */
18
+ type ComponentSelectCallback = (componentId: string | null) => void;
19
+ /**
20
+ * 组件树检查器
21
+ *
22
+ * 负责渲染和管理组件树视图,包括搜索、过滤、选择等功能。
23
+ */
24
+ export declare class ComponentTreeInspector {
25
+ /** 面板引用 */
26
+ private panel;
27
+ /** 组件选中回调 */
28
+ private onSelect;
29
+ /** 搜索关键词 */
30
+ private searchKeyword;
31
+ /** 展开的节点 ID 集合 */
32
+ private expandedNodes;
33
+ /** 当前内容容器 */
34
+ private container;
35
+ /** 更新定时器 */
36
+ private updateTimer;
37
+ constructor(panel: DevToolsPanel, onSelect?: ComponentSelectCallback);
38
+ /**
39
+ * 渲染组件树到指定容器
40
+ */
41
+ render(container: HTMLElement): void;
42
+ /**
43
+ * 渲染完整组件树
44
+ */
45
+ private renderTree;
46
+ /**
47
+ * 构建组件树形数据结构
48
+ */
49
+ private buildTree;
50
+ /**
51
+ * 渲染单个树节点
52
+ */
53
+ private renderTreeNode;
54
+ /**
55
+ * 全局更新事件处理
56
+ * 使用防抖避免频繁更新
57
+ */
58
+ private onUpdate;
59
+ /**
60
+ * 强制刷新组件树
61
+ */
62
+ refresh(): void;
63
+ /**
64
+ * 销毁检查器
65
+ */
66
+ destroy(): void;
67
+ }
68
+ export {};
69
+ //# sourceMappingURL=component-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-tree.d.ts","sourceRoot":"","sources":["../../src/component-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAkB7C,aAAa;AACb,KAAK,uBAAuB,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAMpE;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC,WAAW;IACX,OAAO,CAAC,KAAK,CAAgB;IAC7B,aAAa;IACb,OAAO,CAAC,QAAQ,CAA0B;IAC1C,YAAY;IACZ,OAAO,CAAC,aAAa,CAAc;IACnC,kBAAkB;IAClB,OAAO,CAAC,aAAa,CAAqB;IAC1C,aAAa;IACb,OAAO,CAAC,SAAS,CAA4B;IAC7C,YAAY;IACZ,OAAO,CAAC,WAAW,CAA8C;gBAErD,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,uBAAuB;IAoBpE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAKpC;;OAEG;IACH,OAAO,CAAC,UAAU;IA6ClB;;OAEG;IACH,OAAO,CAAC,SAAS;IAuCjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyLtB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAOd;IAEF;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Lyt.js DevTools — 事件面板
3
+ *
4
+ * 独立的事件检查器,捕获和展示组件事件(emit 调用)。
5
+ * 支持过滤、暂停/恢复、环形缓冲区、导出 JSON 等功能。
6
+ *
7
+ * 纯原生零依赖实现。
8
+ */
9
+ /** 捕获的事件 */
10
+ export interface CapturedEvent {
11
+ /** 事件名称 */
12
+ name: string;
13
+ /** 事件载荷 */
14
+ payload: any;
15
+ /** 来源组件 */
16
+ sourceComponent?: string;
17
+ /** 捕获时间戳 */
18
+ timestamp: number;
19
+ /** 事件序号 */
20
+ index: number;
21
+ }
22
+ /** 事件面板配置 */
23
+ export interface EventPanelConfig {
24
+ /** 最大缓冲区大小(环形缓冲区),默认 200 */
25
+ maxBuffer?: number;
26
+ /** 是否自动滚动到最新事件,默认 true */
27
+ autoScroll?: boolean;
28
+ /** 面板标题,默认 "事件面板" */
29
+ title?: string;
30
+ }
31
+ /**
32
+ * 事件面板
33
+ *
34
+ * 捕获和展示组件事件,支持过滤、暂停/恢复、环形缓冲区和导出。
35
+ */
36
+ export declare class EventPanel {
37
+ /** 事件缓冲区 */
38
+ private buffer;
39
+ /** 最大缓冲区大小 */
40
+ private maxBuffer;
41
+ /** 是否自动滚动 */
42
+ private autoScroll;
43
+ /** 面板标题 */
44
+ private title;
45
+ /** 是否暂停 */
46
+ private _paused;
47
+ /** 过滤模式 */
48
+ private filterPattern;
49
+ /** 事件计数器(单调递增) */
50
+ private counter;
51
+ /** 环形缓冲区写入位置 */
52
+ private writeIndex;
53
+ /** 缓冲区是否已满 */
54
+ private bufferFull;
55
+ /** DOM 根元素 */
56
+ private element;
57
+ constructor(config?: EventPanelConfig);
58
+ /**
59
+ * 捕获一个事件
60
+ *
61
+ * @param name - 事件名称
62
+ * @param payload - 事件载荷
63
+ * @param sourceComponent - 来源组件名称(可选)
64
+ */
65
+ captureEvent(name: string, payload: any, sourceComponent?: string): void;
66
+ /**
67
+ * 获取所有事件(经过过滤)
68
+ *
69
+ * @returns 过滤后的事件数组
70
+ */
71
+ getEvents(): CapturedEvent[];
72
+ /**
73
+ * 获取所有事件(不经过过滤)
74
+ *
75
+ * @returns 全部事件数组
76
+ */
77
+ getAllEvents(): CapturedEvent[];
78
+ /**
79
+ * 清除所有事件
80
+ */
81
+ clear(): void;
82
+ /**
83
+ * 设置过滤模式
84
+ *
85
+ * @param pattern - 过滤字符串
86
+ */
87
+ setFilter(pattern: string): void;
88
+ /**
89
+ * 获取当前过滤模式
90
+ */
91
+ getFilter(): string;
92
+ /**
93
+ * 暂停事件捕获
94
+ */
95
+ pause(): void;
96
+ /**
97
+ * 恢复事件捕获
98
+ */
99
+ resume(): void;
100
+ /**
101
+ * 是否暂停中
102
+ */
103
+ isPaused(): boolean;
104
+ /**
105
+ * 导出事件为 JSON 字符串
106
+ *
107
+ * @returns JSON 字符串
108
+ */
109
+ exportJSON(): string;
110
+ /**
111
+ * 获取缓冲区中的事件总数
112
+ */
113
+ getCount(): number;
114
+ /**
115
+ * 获取最大缓冲区大小
116
+ */
117
+ getMaxBuffer(): number;
118
+ /**
119
+ * 渲染面板 DOM 元素
120
+ *
121
+ * @returns 面板 DOM 元素
122
+ */
123
+ render(): HTMLElement;
124
+ /**
125
+ * 销毁面板
126
+ */
127
+ destroy(): void;
128
+ }
129
+ //# sourceMappingURL=event-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-panel.d.ts","sourceRoot":"","sources":["../../src/event-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,YAAY;AACZ,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,OAAO,EAAE,GAAG,CAAC;IACb,WAAW;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,YAAY;IACZ,OAAO,CAAC,MAAM,CAAuB;IACrC,cAAc;IACd,OAAO,CAAC,SAAS,CAAS;IAC1B,aAAa;IACb,OAAO,CAAC,UAAU,CAAU;IAC5B,WAAW;IACX,OAAO,CAAC,KAAK,CAAS;IACtB,WAAW;IACX,OAAO,CAAC,OAAO,CAAkB;IACjC,WAAW;IACX,OAAO,CAAC,aAAa,CAAc;IACnC,kBAAkB;IAClB,OAAO,CAAC,OAAO,CAAa;IAC5B,gBAAgB;IAChB,OAAO,CAAC,UAAU,CAAa;IAC/B,cAAc;IACd,OAAO,CAAC,UAAU,CAAkB;IACpC,cAAc;IACd,OAAO,CAAC,OAAO,CAA4B;gBAE/B,MAAM,CAAC,EAAE,gBAAgB;IAUrC;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAuBxE;;;;OAIG;IACH,SAAS,IAAI,aAAa,EAAE;IAiB5B;;;;OAIG;IACH,YAAY,IAAI,aAAa,EAAE;IAM/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAKpB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,YAAY,IAAI,MAAM;IAQtB;;;;OAIG;IACH,MAAM,IAAI,WAAW;IAkIrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Lyt.js DevTools — 事件追踪器
3
+ *
4
+ * 拦截和记录所有组件事件,提供事件列表实时显示、过滤和回放功能。
5
+ *
6
+ * 核心功能:
7
+ * - EventTracker 类
8
+ * - 拦截和记录所有组件事件(事件名称、触发时间、事件参数、来源组件)
9
+ * - 事件列表实时显示
10
+ * - 事件过滤(按名称/组件)
11
+ * - 事件回放功能(点击事件条目显示详情)
12
+ *
13
+ * 纯原生零依赖实现。
14
+ */
15
+ import type { DevToolsPanel } from './panel';
16
+ /**
17
+ * 事件追踪器
18
+ *
19
+ * 负责显示和过滤组件事件记录,支持事件详情查看。
20
+ */
21
+ export declare class EventTracker {
22
+ /** 面板引用 */
23
+ private panel;
24
+ /** 当前内容容器 */
25
+ private container;
26
+ /** 事件名称过滤关键词 */
27
+ private nameFilter;
28
+ /** 组件名称过滤关键词 */
29
+ private componentFilter;
30
+ /** 是否暂停记录 */
31
+ private paused;
32
+ /** 当前选中的事件 ID(用于显示详情) */
33
+ private selectedEventId;
34
+ /** 更新定时器 */
35
+ private updateTimer;
36
+ /** 自动滚动定时器 */
37
+ private autoScrollTimer;
38
+ constructor(panel: DevToolsPanel);
39
+ /**
40
+ * 渲染事件追踪器到指定容器
41
+ */
42
+ render(container: HTMLElement): void;
43
+ /**
44
+ * 渲染事件列表
45
+ */
46
+ private renderEvents;
47
+ /**
48
+ * 渲染事件详情
49
+ */
50
+ private renderEventDetail;
51
+ /**
52
+ * HTML 转义
53
+ */
54
+ private escapeHtml;
55
+ /**
56
+ * 清空事件记录
57
+ */
58
+ private clearEvents;
59
+ /**
60
+ * 设置暂停状态
61
+ */
62
+ setPaused(paused: boolean): void;
63
+ /**
64
+ * 获取暂停状态
65
+ */
66
+ isPaused(): boolean;
67
+ /**
68
+ * 全局更新事件处理
69
+ */
70
+ private onUpdate;
71
+ /**
72
+ * 强制刷新
73
+ */
74
+ refresh(): void;
75
+ /**
76
+ * 销毁追踪器
77
+ */
78
+ destroy(): void;
79
+ }
80
+ //# sourceMappingURL=event-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-tracker.d.ts","sourceRoot":"","sources":["../../src/event-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAuD7C;;;;GAIG;AACH,qBAAa,YAAY;IACvB,WAAW;IACX,OAAO,CAAC,KAAK,CAAgB;IAC7B,aAAa;IACb,OAAO,CAAC,SAAS,CAA4B;IAC7C,gBAAgB;IAChB,OAAO,CAAC,UAAU,CAAc;IAChC,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAAc;IACrC,aAAa;IACb,OAAO,CAAC,MAAM,CAAkB;IAChC,yBAAyB;IACzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,YAAY;IACZ,OAAO,CAAC,WAAW,CAA8C;IACjE,cAAc;IACd,OAAO,CAAC,eAAe,CAA+C;gBAE1D,KAAK,EAAE,aAAa;IAahC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAKpC;;OAEG;IACH,OAAO,CAAC,YAAY;IA0OpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0FzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIhC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAQnB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAQd;IAEF;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,IAAI,IAAI;CAYhB"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Lyt.js DevTools — 应用连接钩子
3
+ *
4
+ * 负责将 DevTools 连接到 Lyt.js 应用实例,拦截组件生命周期、
5
+ * 状态变化和事件发射,并将数据推送到 DevTools 面板。
6
+ *
7
+ * 核心功能:
8
+ * - connectToApp(app) 连接到 Lyt 应用实例
9
+ * - 拦截组件创建/更新/卸载生命周期
10
+ * - 拦截状态变化
11
+ * - 拦截事件发射
12
+ * - 将数据推送到 DevTools 面板
13
+ *
14
+ * 纯原生零依赖实现。
15
+ */
16
+ /** 组件信息(DevTools 内部使用) */
17
+ export interface ComponentInfo {
18
+ /** 唯一标识 */
19
+ id: string;
20
+ /** 组件名称 */
21
+ name: string;
22
+ /** 父组件 ID */
23
+ parentId: string | null;
24
+ /** 子组件 ID 列表 */
25
+ childIds: string[];
26
+ /** 组件 props */
27
+ props: Record<string, any>;
28
+ /** 组件 state */
29
+ state: Record<string, any>;
30
+ /** 计算属性缓存 */
31
+ computed: Record<string, any>;
32
+ /** 是否已挂载 */
33
+ isMounted: boolean;
34
+ /** 是否已卸载 */
35
+ isUnmounted: boolean;
36
+ /** 对应的 DOM 元素 */
37
+ el: Element | null;
38
+ /** 渲染耗时(毫秒) */
39
+ renderTime: number;
40
+ /** 最后更新时间 */
41
+ lastUpdateTime: number;
42
+ /** 组件实例引用 */
43
+ instance: any;
44
+ }
45
+ /** 事件记录 */
46
+ export interface EventRecord {
47
+ /** 事件唯一 ID */
48
+ id: string;
49
+ /** 事件名称 */
50
+ name: string;
51
+ /** 触发时间戳 */
52
+ timestamp: number;
53
+ /** 事件参数 */
54
+ args: any[];
55
+ /** 来源组件 ID */
56
+ componentId: string;
57
+ /** 来源组件名称 */
58
+ componentName: string;
59
+ }
60
+ /** 状态变化记录 */
61
+ export interface StateChangeRecord {
62
+ /** 组件 ID */
63
+ componentId: string;
64
+ /** 组件名称 */
65
+ componentName: string;
66
+ /** 属性路径 */
67
+ path: string;
68
+ /** 旧值 */
69
+ oldValue: any;
70
+ /** 新值 */
71
+ newValue: any;
72
+ /** 变化时间戳 */
73
+ timestamp: number;
74
+ }
75
+ /** DevTools 钩子回调接口 */
76
+ export interface DevToolsCallbacks {
77
+ /** 组件创建回调 */
78
+ onComponentCreated?: (info: ComponentInfo) => void;
79
+ /** 组件更新回调 */
80
+ onComponentUpdated?: (info: ComponentInfo) => void;
81
+ /** 组件卸载回调 */
82
+ onComponentUnmounted?: (componentId: string) => void;
83
+ /** 状态变化回调 */
84
+ onStateChanged?: (record: StateChangeRecord) => void;
85
+ /** 事件触发回调 */
86
+ onEventEmitted?: (record: EventRecord) => void;
87
+ }
88
+ /** Lyt 应用实例接口(最小化) */
89
+ export interface LytApp {
90
+ /** 根组件实例 */
91
+ _instance: any;
92
+ /** 挂载方法 */
93
+ mount: (container: string | Element) => any;
94
+ /** 卸载方法 */
95
+ unmount: () => void;
96
+ /** 全局属性 */
97
+ globalProperties?: Record<string, any>;
98
+ }
99
+ /**
100
+ * 连接到 Lyt.js 应用实例
101
+ *
102
+ * 通过拦截应用实例上的方法来监听组件生命周期、状态变化和事件。
103
+ *
104
+ * @param app - Lyt.js 应用实例
105
+ * @param cb - DevTools 回调函数集合
106
+ */
107
+ export declare function connectToApp(app: LytApp, cb?: DevToolsCallbacks): void;
108
+ /**
109
+ * 获取所有组件信息
110
+ */
111
+ export declare function getAllComponents(): ComponentInfo[];
112
+ /**
113
+ * 获取根组件信息
114
+ */
115
+ export declare function getRootComponent(): ComponentInfo | null;
116
+ /**
117
+ * 根据 ID 获取组件信息
118
+ */
119
+ export declare function getComponentById(id: string): ComponentInfo | null;
120
+ /**
121
+ * 获取组件的子组件列表
122
+ */
123
+ export declare function getChildComponents(parentId: string): ComponentInfo[];
124
+ /**
125
+ * 获取所有事件记录
126
+ */
127
+ export declare function getEventRecords(): EventRecord[];
128
+ /**
129
+ * 获取所有状态变化记录
130
+ */
131
+ export declare function getStateChangeRecords(): StateChangeRecord[];
132
+ /**
133
+ * 获取指定组件的状态变化记录
134
+ */
135
+ export declare function getComponentStateChanges(componentId: string): StateChangeRecord[];
136
+ /**
137
+ * 获取指定组件的事件记录
138
+ */
139
+ export declare function getComponentEvents(componentId: string): EventRecord[];
140
+ /**
141
+ * 选中组件
142
+ */
143
+ export declare function selectComponent(id: string | null): void;
144
+ /**
145
+ * 获取当前选中的组件
146
+ */
147
+ export declare function getSelectedComponent(): ComponentInfo | null;
148
+ /**
149
+ * 获取当前选中的组件 ID
150
+ */
151
+ export declare function getSelectedComponentId(): string | null;
152
+ /**
153
+ * 手动修改组件状态
154
+ */
155
+ export declare function setComponentState(componentId: string, path: string, value: any): boolean;
156
+ /**
157
+ * 刷新组件树信息
158
+ * 重新遍历应用实例,更新所有组件信息
159
+ */
160
+ export declare function refreshComponentTree(app: LytApp): void;
161
+ /**
162
+ * 清除所有记录
163
+ */
164
+ export declare function clearRecords(): void;
165
+ /**
166
+ * 断开连接
167
+ */
168
+ export declare function disconnect(): void;
169
+ /**
170
+ * 检查是否已连接
171
+ */
172
+ export declare function isAppConnected(): boolean;
173
+ /**
174
+ * 获取组件数量
175
+ */
176
+ export declare function getComponentCount(): number;
177
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"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"}