@feiyangdefeng/sdk 1.0.0 → 1.2.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 (156) hide show
  1. package/README.md +24 -8
  2. package/dist/collector/auto-tracker.d.ts +6 -0
  3. package/dist/collector/auto-tracker.d.ts.map +1 -1
  4. package/dist/collector/click-event-dispatcher.d.ts +8 -0
  5. package/dist/collector/click-event-dispatcher.d.ts.map +1 -0
  6. package/dist/collector/click-event-factory.d.ts +23 -0
  7. package/dist/collector/click-event-factory.d.ts.map +1 -0
  8. package/dist/collector/click-tracker.d.ts +14 -5
  9. package/dist/collector/click-tracker.d.ts.map +1 -1
  10. package/dist/collector/error-tracker.d.ts.map +1 -1
  11. package/dist/collector/exposure-tracker.d.ts.map +1 -1
  12. package/dist/collector/input-tracker.d.ts +14 -1
  13. package/dist/collector/input-tracker.d.ts.map +1 -1
  14. package/dist/collector/performance-tracker.d.ts.map +1 -1
  15. package/dist/collector/touch-interaction-tracker.d.ts +20 -0
  16. package/dist/collector/touch-interaction-tracker.d.ts.map +1 -0
  17. package/dist/collector/view-tracker.d.ts.map +1 -1
  18. package/dist/core/capabilities.d.ts +16 -0
  19. package/dist/core/capabilities.d.ts.map +1 -0
  20. package/dist/core/component-info-sanitize.d.ts +10 -0
  21. package/dist/core/component-info-sanitize.d.ts.map +1 -0
  22. package/dist/core/config.d.ts.map +1 -1
  23. package/dist/core/panel-manager.d.ts +27 -0
  24. package/dist/core/panel-manager.d.ts.map +1 -0
  25. package/dist/core/request.d.ts +3 -0
  26. package/dist/core/request.d.ts.map +1 -1
  27. package/dist/core/utils.d.ts +9 -0
  28. package/dist/core/utils.d.ts.map +1 -1
  29. package/dist/core/vue-utils.d.ts +58 -0
  30. package/dist/core/vue-utils.d.ts.map +1 -0
  31. package/dist/extension/frame-adapters/angular-adapter.d.ts +16 -0
  32. package/dist/extension/frame-adapters/angular-adapter.d.ts.map +1 -0
  33. package/dist/extension/frame-adapters/component-resolvers.d.ts +9 -0
  34. package/dist/extension/frame-adapters/component-resolvers.d.ts.map +1 -0
  35. package/dist/extension/frame-adapters/dom-context.d.ts +6 -0
  36. package/dist/extension/frame-adapters/dom-context.d.ts.map +1 -0
  37. package/dist/extension/frame-adapters/dom-data.d.ts +7 -0
  38. package/dist/extension/frame-adapters/dom-data.d.ts.map +1 -0
  39. package/dist/extension/frame-adapters/react-adapter.d.ts +12 -0
  40. package/dist/extension/frame-adapters/react-adapter.d.ts.map +1 -0
  41. package/dist/extension/frame-adapters/react-fiber-dom.d.ts +7 -0
  42. package/dist/extension/frame-adapters/react-fiber-dom.d.ts.map +1 -0
  43. package/dist/extension/frame-adapters/react-fiber-internal.d.ts +19 -0
  44. package/dist/extension/frame-adapters/react-fiber-internal.d.ts.map +1 -0
  45. package/dist/extension/frame-adapters/resolve.d.ts +7 -0
  46. package/dist/extension/frame-adapters/resolve.d.ts.map +1 -0
  47. package/dist/extension/frame-adapters/ui-lib-heuristics.d.ts +7 -0
  48. package/dist/extension/frame-adapters/ui-lib-heuristics.d.ts.map +1 -0
  49. package/dist/extension/naive-ui-tracker.d.ts +20 -0
  50. package/dist/extension/naive-ui-tracker.d.ts.map +1 -0
  51. package/dist/extension/performance-alert-engine.d.ts +16 -0
  52. package/dist/extension/performance-alert-engine.d.ts.map +1 -0
  53. package/dist/extension/performance-cleanup-scheduler.d.ts +8 -0
  54. package/dist/extension/performance-cleanup-scheduler.d.ts.map +1 -0
  55. package/dist/extension/performance-metrics-aggregator.d.ts +11 -0
  56. package/dist/extension/performance-metrics-aggregator.d.ts.map +1 -0
  57. package/dist/extension/performance-monitor-storage.d.ts +16 -0
  58. package/dist/extension/performance-monitor-storage.d.ts.map +1 -0
  59. package/dist/extension/performance-monitor.d.ts +88 -0
  60. package/dist/extension/performance-monitor.d.ts.map +1 -0
  61. package/dist/extension/plugin-lifecycle.d.ts +9 -0
  62. package/dist/extension/plugin-lifecycle.d.ts.map +1 -0
  63. package/dist/extension/plugin-manager.d.ts +3 -0
  64. package/dist/extension/plugin-manager.d.ts.map +1 -1
  65. package/dist/extension/session-replay-budget.d.ts +20 -0
  66. package/dist/extension/session-replay-budget.d.ts.map +1 -0
  67. package/dist/extension/session-replay-interaction-lifecycle.d.ts +23 -0
  68. package/dist/extension/session-replay-interaction-lifecycle.d.ts.map +1 -0
  69. package/dist/extension/session-replay-store.d.ts +25 -0
  70. package/dist/extension/session-replay-store.d.ts.map +1 -0
  71. package/dist/extension/session-replay.d.ts +17 -29
  72. package/dist/extension/session-replay.d.ts.map +1 -1
  73. package/dist/extension/user-action-sequence.d.ts +151 -0
  74. package/dist/extension/user-action-sequence.d.ts.map +1 -0
  75. package/dist/extension/vue-integration.d.ts +28 -0
  76. package/dist/extension/vue-integration.d.ts.map +1 -0
  77. package/dist/extension/vue-plugin.d.ts +66 -0
  78. package/dist/extension/vue-plugin.d.ts.map +1 -0
  79. package/dist/index.d.ts +21 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.es.js +10069 -6046
  82. package/dist/index.es.js.map +1 -1
  83. package/dist/index.iife.js +2 -2
  84. package/dist/index.iife.js.map +1 -1
  85. package/dist/index.umd.js +2 -2
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/panels/offline-storage-viewer.html.d.ts +6 -0
  88. package/dist/panels/offline-storage-viewer.html.d.ts.map +1 -0
  89. package/dist/panels/performance-panel.html.d.ts +6 -0
  90. package/dist/panels/performance-panel.html.d.ts.map +1 -0
  91. package/dist/processor/data-processor.d.ts +3 -1
  92. package/dist/processor/data-processor.d.ts.map +1 -1
  93. package/dist/processor/deduplicator.d.ts.map +1 -1
  94. package/dist/processor/pipeline-context.d.ts +8 -0
  95. package/dist/processor/pipeline-context.d.ts.map +1 -0
  96. package/dist/processor/processor-pipeline.d.ts +11 -0
  97. package/dist/processor/processor-pipeline.d.ts.map +1 -0
  98. package/dist/processor/processor-stage.d.ts +8 -0
  99. package/dist/processor/processor-stage.d.ts.map +1 -0
  100. package/dist/processor/stages/compress-stage.d.ts +12 -0
  101. package/dist/processor/stages/compress-stage.d.ts.map +1 -0
  102. package/dist/processor/stages/deduplicate-stage.d.ts +12 -0
  103. package/dist/processor/stages/deduplicate-stage.d.ts.map +1 -0
  104. package/dist/processor/stages/sample-stage.d.ts +12 -0
  105. package/dist/processor/stages/sample-stage.d.ts.map +1 -0
  106. package/dist/runtime/tracker-config-coordinator.d.ts +22 -0
  107. package/dist/runtime/tracker-config-coordinator.d.ts.map +1 -0
  108. package/dist/runtime/tracker-event-bus-bridge.d.ts +20 -0
  109. package/dist/runtime/tracker-event-bus-bridge.d.ts.map +1 -0
  110. package/dist/runtime/tracker-event-dispatcher.d.ts +31 -0
  111. package/dist/runtime/tracker-event-dispatcher.d.ts.map +1 -0
  112. package/dist/runtime/tracker-event-enricher.d.ts +14 -0
  113. package/dist/runtime/tracker-event-enricher.d.ts.map +1 -0
  114. package/dist/runtime/tracker-feature-registry.d.ts +26 -0
  115. package/dist/runtime/tracker-feature-registry.d.ts.map +1 -0
  116. package/dist/runtime/tracker-plugin-context.d.ts +11 -0
  117. package/dist/runtime/tracker-plugin-context.d.ts.map +1 -0
  118. package/dist/tracker.d.ts +29 -12
  119. package/dist/tracker.d.ts.map +1 -1
  120. package/dist/transport/batch-sender-state.d.ts +3 -0
  121. package/dist/transport/batch-sender-state.d.ts.map +1 -0
  122. package/dist/transport/batch-sender.d.ts +24 -12
  123. package/dist/transport/batch-sender.d.ts.map +1 -1
  124. package/dist/transport/delivery-coordinator.d.ts +18 -0
  125. package/dist/transport/delivery-coordinator.d.ts.map +1 -0
  126. package/dist/transport/event-queue.d.ts +20 -0
  127. package/dist/transport/event-queue.d.ts.map +1 -0
  128. package/dist/transport/flush-scheduler.d.ts +19 -0
  129. package/dist/transport/flush-scheduler.d.ts.map +1 -0
  130. package/dist/transport/offline-recovery-manager.d.ts +17 -0
  131. package/dist/transport/offline-recovery-manager.d.ts.map +1 -0
  132. package/dist/transport/offline-storage.d.ts +1 -1
  133. package/dist/transport/offline-storage.d.ts.map +1 -1
  134. package/dist/transport/retry-handler.d.ts.map +1 -1
  135. package/dist/transport/sender.d.ts +8 -1
  136. package/dist/transport/sender.d.ts.map +1 -1
  137. package/docs/ARCHITECTURE_MAP.md +476 -0
  138. package/docs/BROWSER_SUPPORT.md +15 -0
  139. package/docs/ENGINEERING_OVERVIEW.md +154 -0
  140. package/docs/ERROR_SCENARIO_EVALUATION.md +124 -0
  141. package/docs/FRAME_ADAPTERS.md +70 -0
  142. package/docs/FRAME_ADAPTERS_GUIDE.md +195 -0
  143. package/docs/MINIPROGRAM.md +11 -0
  144. package/docs/OPTIMIZATION_PLAN.md +123 -0
  145. package/docs/PERFORMANCE_BASELINE.md +181 -0
  146. package/docs/README.md +30 -0
  147. package/docs/UI_LIB_COMPAT.md +31 -0
  148. package/docs/USAGE.md +4064 -0
  149. package/docs/VIEW_LOCAL_CACHE_AND_PROFILE.md +252 -0
  150. package/docs/VUE3_INTEGRATION.md +528 -0
  151. package/examples/README.md +54 -0
  152. package/examples/reference/user-action-profile.ts +446 -0
  153. package/examples/reference/user-profile-backend.ts +397 -0
  154. package/examples/reference/vue3-naive-ui-example.vue +211 -0
  155. package/package.json +39 -8
  156. package/tests/README.md +203 -0
@@ -0,0 +1,7 @@
1
+ import { TrackerConfig, ComponentInfo } from '../../types';
2
+
3
+ /**
4
+ * 解析点击/输入等场景下的组件信息
5
+ */
6
+ export declare function resolveClickComponentInfo(element: Element | null, event: Event | undefined, getConfig: () => TrackerConfig): ComponentInfo | undefined;
7
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/extension/frame-adapters/resolve.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AASjF;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,aAAa,GAC7B,aAAa,GAAG,SAAS,CAkB3B"}
@@ -0,0 +1,7 @@
1
+ import { ComponentInfo } from '../../types';
2
+
3
+ /**
4
+ * 基于 DOM/class 的 UI 库启发式识别
5
+ */
6
+ export declare function guessUiLibComponentInfo(element: Element | null): ComponentInfo | undefined;
7
+ //# sourceMappingURL=ui-lib-heuristics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-lib-heuristics.d.ts","sourceRoot":"","sources":["../../../src/extension/frame-adapters/ui-lib-heuristics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAkC7C;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAO1F"}
@@ -0,0 +1,20 @@
1
+ import { ComponentInfo } from '../types';
2
+
3
+ /**
4
+ * 提取 Naive-UI 组件特定信息
5
+ */
6
+ export declare function extractNaiveUIComponentInfo(element: Element | null, options?: {
7
+ extractProps?: boolean;
8
+ extractAttrs?: boolean;
9
+ extractValue?: boolean;
10
+ extractLabel?: boolean;
11
+ }): ComponentInfo | undefined;
12
+ /**
13
+ * 检查组件是否为特定的 naive-ui 组件类型
14
+ */
15
+ export declare function isNaiveUIComponentType(element: Element | null, componentType: string): boolean;
16
+ /**
17
+ * 获取 naive-ui 组件支持的类型列表
18
+ */
19
+ export declare function getNaiveUIComponentTypes(componentName: string): string[] | undefined;
20
+ //# sourceMappingURL=naive-ui-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naive-ui-tracker.d.ts","sourceRoot":"","sources":["../../src/extension/naive-ui-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAiE7C;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,aAAa,GAAG,SAAS,CAsE3B;AAgLD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAO9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAEpF"}
@@ -0,0 +1,16 @@
1
+ import { PerformanceEvent } from '../types/event';
2
+ import { AlertRule, PerformanceAlert } from '../types/performance';
3
+
4
+ interface PerformanceAlertEngineOptions {
5
+ onAlert: (alert: PerformanceAlert) => void;
6
+ }
7
+ declare class PerformanceAlertEngine {
8
+ private readonly options;
9
+ constructor(options: PerformanceAlertEngineOptions);
10
+ evaluate(event: PerformanceEvent, alertRules: AlertRule[], alerts: PerformanceAlert[]): PerformanceAlert[];
11
+ private resolveMetricValue;
12
+ private isTriggered;
13
+ private createAlert;
14
+ }
15
+ export default PerformanceAlertEngine;
16
+ //# sourceMappingURL=performance-alert-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-alert-engine.d.ts","sourceRoot":"","sources":["../../src/extension/performance-alert-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,UAAU,6BAA6B;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC5C;AAED,cAAM,sBAAsB;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,6BAA6B;IAEnE,QAAQ,CACN,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,SAAS,EAAE,EACvB,MAAM,EAAE,gBAAgB,EAAE,GACzB,gBAAgB,EAAE;IA0BrB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,WAAW;CAwBpB;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare class PerformanceCleanupScheduler {
2
+ private timer;
3
+ start(onCleanup: () => void): number | null;
4
+ stop(): void;
5
+ getTimer(): number | null;
6
+ }
7
+ export default PerformanceCleanupScheduler;
8
+ //# sourceMappingURL=performance-cleanup-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-cleanup-scheduler.d.ts","sourceRoot":"","sources":["../../src/extension/performance-cleanup-scheduler.ts"],"names":[],"mappings":"AAAA,cAAM,2BAA2B;IAC/B,OAAO,CAAC,KAAK,CAAuB;IAEpC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI;IAY3C,IAAI,IAAI,IAAI;IAUZ,QAAQ,IAAI,MAAM,GAAG,IAAI;CAG1B;AAED,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { PerformanceEvent } from '../types/event';
2
+ import { PerformanceMetrics } from '../types/performance';
3
+
4
+ declare class PerformanceMetricsAggregator {
5
+ build(events: PerformanceEvent[], startTime?: number, endTime?: number): PerformanceMetrics;
6
+ private buildResourceMetrics;
7
+ private buildLongTaskMetrics;
8
+ private average;
9
+ }
10
+ export default PerformanceMetricsAggregator;
11
+ //# sourceMappingURL=performance-metrics-aggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-metrics-aggregator.d.ts","sourceRoot":"","sources":["../../src/extension/performance-metrics-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,cAAM,4BAA4B;IAChC,KAAK,CACH,MAAM,EAAE,gBAAgB,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,kBAAkB;IA8CrB,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,OAAO;CAOhB;AAED,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { PerformanceAlert } from '../types/performance';
2
+ import { PerformanceEvent } from '../types/event';
3
+
4
+ interface PerformanceMonitorStorageData {
5
+ events: PerformanceEvent[];
6
+ alerts: PerformanceAlert[];
7
+ timestamp: number;
8
+ }
9
+ declare class PerformanceMonitorStorage {
10
+ private readonly storageKey;
11
+ constructor(storageKey: string);
12
+ save(events: PerformanceEvent[], alerts: PerformanceAlert[]): Promise<void>;
13
+ load(): Promise<Partial<PerformanceMonitorStorageData>>;
14
+ }
15
+ export default PerformanceMonitorStorage;
16
+ //# sourceMappingURL=performance-monitor-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-monitor-storage.d.ts","sourceRoot":"","sources":["../../src/extension/performance-monitor-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,UAAU,6BAA6B;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,yBAAyB;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEzC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3E,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAY9D;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { PerformanceMetrics, PerformanceAlert, PerformanceReport, AlertRule, ReportOptions, PerformanceMonitorOptions } from '../types/performance';
2
+
3
+ /**
4
+ * 性能监控管理器
5
+ */
6
+ export declare class PerformanceMonitor {
7
+ private events;
8
+ private alerts;
9
+ private alertRules;
10
+ private options;
11
+ private storageKey;
12
+ private maxStoredEvents;
13
+ private retentionTime;
14
+ private readonly alertEngine;
15
+ private readonly metricsAggregator;
16
+ private readonly storage;
17
+ private readonly cleanupScheduler;
18
+ constructor(options?: PerformanceMonitorOptions);
19
+ /**
20
+ * 初始化
21
+ */
22
+ private init;
23
+ /**
24
+ * 处理性能事件
25
+ */
26
+ private handlePerformanceEvent;
27
+ /**
28
+ * 检查告警规则
29
+ */
30
+ private checkAlertRules;
31
+ /**
32
+ * 获取默认告警规则
33
+ */
34
+ private getDefaultAlertRules;
35
+ /**
36
+ * 获取性能指标
37
+ */
38
+ getMetrics(startTime?: number, endTime?: number): PerformanceMetrics;
39
+ /**
40
+ * 生成性能报告
41
+ */
42
+ generateReport(options?: ReportOptions): PerformanceReport;
43
+ /**
44
+ * 生成趋势数据
45
+ */
46
+ private generateTrends;
47
+ /**
48
+ * 获取告警列表
49
+ */
50
+ getAlerts(resolved?: boolean): PerformanceAlert[];
51
+ /**
52
+ * 添加告警规则
53
+ */
54
+ addAlertRule(rule: AlertRule): void;
55
+ /**
56
+ * 移除告警规则
57
+ */
58
+ removeAlertRule(ruleId: string): boolean;
59
+ /**
60
+ * 获取告警规则
61
+ */
62
+ getAlertRules(): AlertRule[];
63
+ /**
64
+ * 标记告警为已处理
65
+ */
66
+ resolveAlert(alertId: string): boolean;
67
+ /**
68
+ * 保存到存储
69
+ */
70
+ private saveToStorage;
71
+ /**
72
+ * 加载历史数据
73
+ */
74
+ private loadHistoryData;
75
+ /**
76
+ * 启动清理定时器
77
+ */
78
+ private startCleanupTimer;
79
+ /**
80
+ * 清理过期数据
81
+ */
82
+ private cleanup;
83
+ /**
84
+ * 销毁
85
+ */
86
+ destroy(): void;
87
+ }
88
+ //# sourceMappingURL=performance-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-monitor.d.ts","sourceRoot":"","sources":["../../src/extension/performance-monitor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAO7B;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;gBAEnD,OAAO,GAAE,yBAA8B;IA0BnD;;OAEG;IACH,OAAO,CAAC,IAAI;IAkBZ;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAIpE;;OAEG;IACH,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,iBAAiB;IA0C9D;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,gBAAgB,EAAE;IAOjD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAInC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASxC;;OAEG;IACH,aAAa,IAAI,SAAS,EAAE;IAI5B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAStC;;OAEG;YACW,aAAa;IAI3B;;OAEG;YACW,eAAe;IAU7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,9 @@
1
+ import { TrackerInstance, TrackerPlugin } from '../types';
2
+
3
+ declare class PluginLifecycle {
4
+ canInstall(plugin: TrackerPlugin, installedPlugins: Map<string, TrackerPlugin>, trackerInstance: TrackerInstance | null): boolean;
5
+ install(plugin: TrackerPlugin, trackerInstance: TrackerInstance): boolean;
6
+ uninstall(pluginName: string, plugin: TrackerPlugin, trackerInstance: TrackerInstance | null): void;
7
+ }
8
+ export default PluginLifecycle;
9
+ //# sourceMappingURL=plugin-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-lifecycle.d.ts","sourceRoot":"","sources":["../../src/extension/plugin-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE9D,cAAM,eAAe;IACnB,UAAU,CACR,MAAM,EAAE,aAAa,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC5C,eAAe,EAAE,eAAe,GAAG,IAAI,GACtC,OAAO;IAcV,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO;IAUzE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;CAWpG;AAED,eAAe,eAAe,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { TrackerPlugin, TrackerInstance } from '../types';
2
+ import { default as PluginLifecycle } from './plugin-lifecycle';
2
3
 
3
4
  declare class PluginManager {
4
5
  private plugins;
5
6
  private trackerInstance;
7
+ private lifecycle;
8
+ constructor(lifecycle?: PluginLifecycle);
6
9
  /**
7
10
  * 设置Tracker实例
8
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extension/plugin-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE9D,cAAM,aAAa;IACjB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,eAAe,CAAgC;IAEvD;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAmBhC;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAiB/B;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/extension/plugin-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD,cAAM,aAAa;IACjB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,SAAS,CAAkB;gBAEvB,SAAS,GAAE,eAAuC;IAI9D;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInD;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUhC;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAU/B;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { DOMSnapshot, UserInteraction } from './session-replay';
2
+
3
+ /** 单条 MutationRecord 的启发式字节权重(非精确序列化体积,用于预算与防失控) */
4
+ export declare const MUTATION_RECORD_BYTES_HEURISTIC = 384;
5
+ interface SessionReplayBudgetData {
6
+ snapshots: DOMSnapshot[];
7
+ interactions: UserInteraction[];
8
+ }
9
+ declare class SessionReplayBudget {
10
+ private maxTotalBytes;
11
+ private stoppedByBudget;
12
+ constructor(maxTotalBytes?: number);
13
+ getStoppedByBudget(): boolean;
14
+ setStoppedByBudget(stopped: boolean): void;
15
+ estimateTotalBytes(data: SessionReplayBudgetData): number;
16
+ allowsWrite(data: SessionReplayBudgetData, extraBytes: number): boolean;
17
+ estimateInteractionBytes(interaction: UserInteraction): number;
18
+ }
19
+ export default SessionReplayBudget;
20
+ //# sourceMappingURL=session-replay-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay-budget.d.ts","sourceRoot":"","sources":["../../src/extension/session-replay-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErE,oDAAoD;AACpD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,UAAU,uBAAuB;IAC/B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,cAAM,mBAAmB;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,aAAa,GAAE,MAAiC;IAI5D,kBAAkB,IAAI,OAAO;IAI7B,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI1C,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM;IAezD,WAAW,CAAC,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAiBvE,wBAAwB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;CAO/D;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,23 @@
1
+ type SessionReplayInteractionType = 'click' | 'input' | 'scroll' | 'mousemove';
2
+ interface SessionReplayInteraction {
3
+ type: SessionReplayInteractionType;
4
+ timestamp: number;
5
+ data: Record<string, unknown>;
6
+ }
7
+ interface SessionReplayInteractionLifecycleOptions {
8
+ recordMouseMove: boolean;
9
+ onInteraction: (interaction: SessionReplayInteraction) => void;
10
+ }
11
+ declare class SessionReplayInteractionLifecycle {
12
+ private readonly options;
13
+ private throttledMouseMoveHandler;
14
+ constructor(options: SessionReplayInteractionLifecycleOptions);
15
+ start(): void;
16
+ stop(): void;
17
+ private handleClick;
18
+ private handleInput;
19
+ private handleScroll;
20
+ private handleMouseMove;
21
+ }
22
+ export default SessionReplayInteractionLifecycle;
23
+ //# sourceMappingURL=session-replay-interaction-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay-interaction-lifecycle.d.ts","sourceRoot":"","sources":["../../src/extension/session-replay-interaction-lifecycle.ts"],"names":[],"mappings":"AAEA,KAAK,4BAA4B,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/E,UAAU,wBAAwB;IAChC,IAAI,EAAE,4BAA4B,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,UAAU,wCAAwC;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAChE;AAED,cAAM,iCAAiC;IAGzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,yBAAyB,CAA8B;gBAElC,OAAO,EAAE,wCAAwC;IAE9E,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAeZ,OAAO,CAAC,WAAW,CAUjB;IAEF,OAAO,CAAC,WAAW,CAcjB;IAEF,OAAO,CAAC,YAAY,CASlB;IAEF,OAAO,CAAC,eAAe,CASrB;CACH;AAED,eAAe,iCAAiC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { DOMSnapshot, UserInteraction } from './session-replay';
2
+
3
+ declare class SessionReplayStore {
4
+ private readonly maxSnapshots;
5
+ private readonly maxMutationRecordsPerSnapshot;
6
+ private snapshots;
7
+ private interactions;
8
+ constructor(maxSnapshots: number, maxMutationRecordsPerSnapshot: number);
9
+ getSnapshots(): DOMSnapshot[];
10
+ setSnapshots(snapshots: DOMSnapshot[]): void;
11
+ getInteractions(): UserInteraction[];
12
+ setInteractions(interactions: UserInteraction[]): void;
13
+ createSnapshot(html: string, timestamp: number): void;
14
+ hasSnapshots(): boolean;
15
+ planMutationsForLatestSnapshot(mutations: MutationRecord[]): MutationRecord[];
16
+ appendMutationsToLatestSnapshot(mutations: MutationRecord[]): void;
17
+ appendInteraction(interaction: UserInteraction): void;
18
+ getData(): {
19
+ snapshots: DOMSnapshot[];
20
+ interactions: UserInteraction[];
21
+ };
22
+ clear(): void;
23
+ }
24
+ export default SessionReplayStore;
25
+ //# sourceMappingURL=session-replay-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay-store.d.ts","sourceRoot":"","sources":["../../src/extension/session-replay-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErE,cAAM,kBAAkB;IAKpB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,6BAA6B;IALhD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAyB;gBAG1B,YAAY,EAAE,MAAM,EACpB,6BAA6B,EAAE,MAAM;IAGxD,YAAY,IAAI,WAAW,EAAE;IAI7B,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI;IAI5C,eAAe,IAAI,eAAe,EAAE;IAIpC,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI;IAItD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAYrD,YAAY,IAAI,OAAO;IAIvB,8BAA8B,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAyB7E,+BAA+B,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI;IAalE,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI;IAQrD,OAAO,IAAI;QAAE,SAAS,EAAE,WAAW,EAAE,CAAC;QAAC,YAAY,EAAE,eAAe,EAAE,CAAA;KAAE;IAOxE,KAAK,IAAI,IAAI;CAId;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { SessionReplayOptions } from '../types';
2
+
1
3
  export interface DOMSnapshot {
2
4
  timestamp: number;
3
5
  html: string;
@@ -9,13 +11,23 @@ export interface UserInteraction {
9
11
  data: Record<string, unknown>;
10
12
  }
11
13
  declare class SessionReplay {
12
- private snapshots;
13
- private interactions;
14
14
  private observer;
15
15
  private isRecording;
16
- private maxSnapshots;
17
- private mutationHandler;
18
- private throttledMouseMoveHandler;
16
+ private mutationThrottleMs;
17
+ private readonly store;
18
+ private readonly budget;
19
+ private readonly interactionLifecycle;
20
+ constructor(options?: SessionReplayOptions);
21
+ private get snapshots();
22
+ private set snapshots(value);
23
+ private get interactions();
24
+ private set interactions(value);
25
+ private get stoppedByBudget();
26
+ private set stoppedByBudget(value);
27
+ /**
28
+ * 是否仍允许写入(未超总字节预算)
29
+ */
30
+ private withinByteBudget;
19
31
  /**
20
32
  * 开始录制
21
33
  */
@@ -32,30 +44,6 @@ declare class SessionReplay {
32
44
  * 记录DOM变化
33
45
  */
34
46
  private recordMutations;
35
- /**
36
- * 设置交互监听器
37
- */
38
- private setupInteractionListeners;
39
- /**
40
- * 移除交互监听器
41
- */
42
- private removeInteractionListeners;
43
- /**
44
- * 处理点击事件
45
- */
46
- private handleClick;
47
- /**
48
- * 处理输入事件
49
- */
50
- private handleInput;
51
- /**
52
- * 处理滚动事件
53
- */
54
- private handleScroll;
55
- /**
56
- * 处理鼠标移动事件
57
- */
58
- private handleMouseMove;
59
47
  /**
60
48
  * 记录交互
61
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/extension/session-replay.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,yBAAyB,CAA8B;IAE/D;;OAEG;IACH,KAAK,IAAI,IAAI;IA+Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;OAEG;IACH,OAAO,CAAC,WAAW,CAUjB;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW,CAcjB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY,CASlB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CASrB;IAEF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,IAAI;QACT,SAAS,EAAE,WAAW,EAAE,CAAC;QACzB,YAAY,EAAE,eAAe,EAAE,CAAC;KACjC;IAOD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/extension/session-replay.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AASpD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,cAAM,aAAa;IACjB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAoC;gBAE7D,OAAO,GAAE,oBAAyB;IAsB9C,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,SAAS,QAEpB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,eAAe,QAE1B;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAoCb;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,IAAI;QACT,SAAS,EAAE,WAAW,EAAE,CAAC;QACzB,YAAY,EAAE,eAAe,EAAE,CAAC;KACjC;IAOD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { TrackerEvent } from '../types/event';
2
+ import { UserActionProfile, LightweightProfile, PerformanceMode, PerformanceBudget, PerformanceStats } from '../types/user-profile';
3
+
4
+ interface UserActionSequenceOptions {
5
+ /** 最大事件数 */
6
+ maxEvents?: number;
7
+ /** 事件采样率 */
8
+ sampleRate?: number;
9
+ /** 是否启用采样 */
10
+ enableSampling?: boolean;
11
+ /** 性能模式配置 */
12
+ performanceMode?: Partial<PerformanceMode>;
13
+ /** 性能预算配置 */
14
+ performanceBudget?: Partial<PerformanceBudget>;
15
+ }
16
+ /**
17
+ * 用户操作序列管理器
18
+ */
19
+ export declare class UserActionSequence {
20
+ private events;
21
+ private sessionId;
22
+ private userId?;
23
+ private deviceId;
24
+ private startTime;
25
+ private maxEvents;
26
+ private sampleRate;
27
+ private enableSampling;
28
+ private performanceMode;
29
+ private performanceBudget;
30
+ private eventTypeCounts;
31
+ private isSorted;
32
+ private lastEventTimestamp;
33
+ private eventIndexes;
34
+ private cachedProfile;
35
+ private cacheTimestamp;
36
+ private cacheTTL;
37
+ private eventQueue;
38
+ private isProcessing;
39
+ private maxQueueSize;
40
+ private performanceMetrics;
41
+ private performanceModeActive;
42
+ constructor(sessionId: string, deviceId: string, userId?: string, options?: UserActionSequenceOptions);
43
+ /**
44
+ * 添加事件(异步版本,推荐使用)
45
+ * 快速入队,不阻塞主线程
46
+ */
47
+ addEventAsync(event: TrackerEvent): void;
48
+ /**
49
+ * 添加事件(同步版本)
50
+ * 注意:如果事件很多,可能影响性能
51
+ */
52
+ addEvent(event: TrackerEvent): void;
53
+ /**
54
+ * 内部添加事件逻辑
55
+ */
56
+ private addEventInternal;
57
+ /**
58
+ * 异步处理队列
59
+ */
60
+ private processQueueAsync;
61
+ /**
62
+ * 处理一批事件
63
+ */
64
+ private processBatch;
65
+ /**
66
+ * 判断是否应该跳过事件(性能模式)
67
+ */
68
+ private shouldSkipForPerformance;
69
+ /**
70
+ * 启用性能模式
71
+ */
72
+ private enablePerformanceMode;
73
+ /**
74
+ * 清理属性,限制大小
75
+ */
76
+ private sanitizeProperties;
77
+ /**
78
+ * 更新索引
79
+ */
80
+ private updateIndexes;
81
+ /**
82
+ * 清理旧事件
83
+ */
84
+ private cleanupOldEvents;
85
+ /**
86
+ * 重建索引
87
+ */
88
+ private rebuildIndexes;
89
+ /**
90
+ * 重新计算统计
91
+ */
92
+ private recalculateCounts;
93
+ /**
94
+ * 获取事件序列(已排序)
95
+ */
96
+ getSequence(): TrackerEvent[];
97
+ /**
98
+ * 获取会话时长
99
+ */
100
+ getDuration(): number;
101
+ /**
102
+ * 使用索引快速获取特定类型的事件
103
+ */
104
+ getEventsByType(type: string): TrackerEvent[];
105
+ /**
106
+ * 根据类型获取索引
107
+ */
108
+ private getIndexesByType;
109
+ /**
110
+ * 生成操作画像(同步版本)
111
+ */
112
+ generateProfile(): UserActionProfile;
113
+ /**
114
+ * 生成操作画像(异步版本)
115
+ */
116
+ generateProfileAsync(): Promise<UserActionProfile>;
117
+ /**
118
+ * 生成轻量级画像(不包含完整事件数组)
119
+ */
120
+ generateLightweightProfile(): LightweightProfile;
121
+ /**
122
+ * 优化的用户旅程构建
123
+ */
124
+ private buildUserJourneyOptimized;
125
+ /**
126
+ * 提取操作描述
127
+ */
128
+ private extractAction;
129
+ /**
130
+ * 优化的行为指标计算
131
+ */
132
+ private calculateBehaviorMetricsOptimized;
133
+ /**
134
+ * 记录性能指标
135
+ */
136
+ private recordPerformance;
137
+ /**
138
+ * 获取性能统计
139
+ */
140
+ getPerformanceStats(): PerformanceStats;
141
+ /**
142
+ * 计算百分位数
143
+ */
144
+ private percentile;
145
+ /**
146
+ * 重置序列
147
+ */
148
+ reset(): void;
149
+ }
150
+ export {};
151
+ //# sourceMappingURL=user-action-sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-action-sequence.d.ts","sourceRoot":"","sources":["../../src/extension/user-action-sequence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { ComponentInfo } from '../types';
2
+
3
+ /**
4
+ * Vue3 组件信息提取选项
5
+ */
6
+ export interface VueComponentExtractOptions {
7
+ /** 是否提取组件 props(默认 true) */
8
+ extractProps?: boolean;
9
+ /** 是否提取组件 attrs(默认 true) */
10
+ extractAttrs?: boolean;
11
+ /** 是否提取组件值(默认 true) */
12
+ extractValue?: boolean;
13
+ /** 是否提取组件标签文本(默认 true) */
14
+ extractLabel?: boolean;
15
+ }
16
+ /**
17
+ * 从 DOM 元素提取 Vue 组件信息
18
+ */
19
+ export declare function extractVueComponentInfo(element: Element | null, options?: VueComponentExtractOptions): ComponentInfo | undefined;
20
+ /**
21
+ * 检查元素是否为 Vue 组件
22
+ */
23
+ export declare function isVueComponent(element: Element | null): boolean;
24
+ /**
25
+ * 检查元素是否为 naive-ui 组件
26
+ */
27
+ export declare function isNaiveUIComponent(element: Element | null): boolean;
28
+ //# sourceMappingURL=vue-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-integration.d.ts","sourceRoot":"","sources":["../../src/extension/vue-integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAW7C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,GAAE,0BAA+B,GACvC,aAAa,GAAG,SAAS,CAgI3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAOnE"}