@vlian/framework 1.2.25 → 1.2.38

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 (319) hide show
  1. package/dist/analytics.umd.js +208 -2395
  2. package/dist/analytics.umd.js.map +1 -1
  3. package/dist/core/Test.cjs +2 -2
  4. package/dist/core/Test.cjs.map +1 -1
  5. package/dist/core/Test.js +1 -1
  6. package/dist/core/Test.js.map +1 -1
  7. package/dist/core/config/ConfigLoader.cjs +7 -7
  8. package/dist/core/config/ConfigLoader.cjs.map +1 -1
  9. package/dist/core/config/ConfigLoader.js +1 -1
  10. package/dist/core/config/ConfigLoader.js.map +1 -1
  11. package/dist/core/error/ErrorBoundary.cjs +6 -6
  12. package/dist/core/error/ErrorBoundary.cjs.map +1 -1
  13. package/dist/core/error/ErrorBoundary.d.ts +1 -1
  14. package/dist/core/error/ErrorBoundary.js +2 -2
  15. package/dist/core/error/ErrorBoundary.js.map +1 -1
  16. package/dist/core/error/ErrorHandler.cjs +19 -19
  17. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  18. package/dist/core/error/ErrorHandler.d.ts +2 -2
  19. package/dist/core/error/ErrorHandler.js +2 -2
  20. package/dist/core/error/ErrorHandler.js.map +1 -1
  21. package/dist/core/event/AppEventBus.cjs +5 -5
  22. package/dist/core/event/AppEventBus.cjs.map +1 -1
  23. package/dist/core/event/AppEventBus.js +1 -1
  24. package/dist/core/event/AppEventBus.js.map +1 -1
  25. package/dist/core/initialization/InitializationErrorThrower.cjs.map +1 -1
  26. package/dist/core/initialization/InitializationErrorThrower.js.map +1 -1
  27. package/dist/core/initialization/initialization.cjs +3 -3
  28. package/dist/core/initialization/initialization.cjs.map +1 -1
  29. package/dist/core/initialization/initialization.d.ts +1 -1
  30. package/dist/core/initialization/initialization.js +1 -1
  31. package/dist/core/initialization/initialization.js.map +1 -1
  32. package/dist/core/initialization/initializationErrorState.cjs +2 -2
  33. package/dist/core/initialization/initializationErrorState.cjs.map +1 -1
  34. package/dist/core/initialization/initializationErrorState.d.ts +1 -1
  35. package/dist/core/initialization/initializationErrorState.js +1 -1
  36. package/dist/core/initialization/initializationErrorState.js.map +1 -1
  37. package/dist/core/kernel/defaultAdapters.cjs +14 -13
  38. package/dist/core/kernel/defaultAdapters.cjs.map +1 -1
  39. package/dist/core/kernel/defaultAdapters.js +2 -1
  40. package/dist/core/kernel/defaultAdapters.js.map +1 -1
  41. package/dist/core/kernel/types.d.ts +1 -1
  42. package/dist/core/kernel/types.js.map +1 -1
  43. package/dist/core/router/RouterManager.cjs +9 -9
  44. package/dist/core/router/RouterManager.cjs.map +1 -1
  45. package/dist/core/router/RouterManager.js +1 -1
  46. package/dist/core/router/RouterManager.js.map +1 -1
  47. package/dist/core/router/adapter/AdapterManager.cjs +10 -10
  48. package/dist/core/router/adapter/AdapterManager.cjs.map +1 -1
  49. package/dist/core/router/adapter/AdapterManager.js +1 -1
  50. package/dist/core/router/adapter/AdapterManager.js.map +1 -1
  51. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +4 -4
  52. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
  53. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -1
  54. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
  55. package/dist/core/router/dynamic/DynamicRouteManager.cjs +8 -8
  56. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +1 -1
  57. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -1
  58. package/dist/core/router/dynamic/DynamicRouteManager.js.map +1 -1
  59. package/dist/core/router/errors/RouterError.cjs +4 -4
  60. package/dist/core/router/errors/RouterError.cjs.map +1 -1
  61. package/dist/core/router/errors/RouterError.d.ts +1 -1
  62. package/dist/core/router/errors/RouterError.js +1 -1
  63. package/dist/core/router/errors/RouterError.js.map +1 -1
  64. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +8 -8
  65. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +1 -1
  66. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -1
  67. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +1 -1
  68. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +11 -11
  69. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
  70. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -1
  71. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
  72. package/dist/core/router/middleware/auth.cjs +4 -4
  73. package/dist/core/router/middleware/auth.cjs.map +1 -1
  74. package/dist/core/router/middleware/auth.js +1 -1
  75. package/dist/core/router/middleware/auth.js.map +1 -1
  76. package/dist/core/router/monitoring/RouterMonitoring.cjs +2 -2
  77. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  78. package/dist/core/router/monitoring/RouterMonitoring.js +2 -2
  79. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  80. package/dist/core/router/navigation/RouterNavigation.cjs +7 -7
  81. package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
  82. package/dist/core/router/navigation/RouterNavigation.js +1 -1
  83. package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
  84. package/dist/core/router/performance/RouteCache.cjs +7 -7
  85. package/dist/core/router/performance/RouteCache.cjs.map +1 -1
  86. package/dist/core/router/performance/RouteCache.js +1 -1
  87. package/dist/core/router/performance/RouteCache.js.map +1 -1
  88. package/dist/core/router/performance/RoutePreloader.cjs +6 -6
  89. package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
  90. package/dist/core/router/performance/RoutePreloader.js +1 -1
  91. package/dist/core/router/performance/RoutePreloader.js.map +1 -1
  92. package/dist/core/router/plugin/RouterPluginManager.cjs +8 -8
  93. package/dist/core/router/plugin/RouterPluginManager.cjs.map +1 -1
  94. package/dist/core/router/plugin/RouterPluginManager.js +1 -1
  95. package/dist/core/router/plugin/RouterPluginManager.js.map +1 -1
  96. package/dist/core/router/utils/adapters/react-router/transform.cjs +6 -2
  97. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  98. package/dist/core/router/utils/adapters/react-router/transform.js +5 -1
  99. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  100. package/dist/core/router/utils/transform.cjs +13 -12
  101. package/dist/core/router/utils/transform.cjs.map +1 -1
  102. package/dist/core/router/utils/transform.js +2 -1
  103. package/dist/core/router/utils/transform.js.map +1 -1
  104. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -2
  105. package/dist/core/router/validation/RouterConfigValidator.cjs.map +1 -1
  106. package/dist/core/router/validation/RouterConfigValidator.js +1 -1
  107. package/dist/core/router/validation/RouterConfigValidator.js.map +1 -1
  108. package/dist/core/router/version/RouteVersionManager.cjs +6 -6
  109. package/dist/core/router/version/RouteVersionManager.cjs.map +1 -1
  110. package/dist/core/router/version/RouteVersionManager.js +1 -1
  111. package/dist/core/router/version/RouteVersionManager.js.map +1 -1
  112. package/dist/core/splash/SplashScreen.cjs +4 -4
  113. package/dist/core/splash/SplashScreen.cjs.map +1 -1
  114. package/dist/core/splash/SplashScreen.js +1 -1
  115. package/dist/core/splash/SplashScreen.js.map +1 -1
  116. package/dist/core/startup/initializeServices.cjs +15 -15
  117. package/dist/core/startup/initializeServices.cjs.map +1 -1
  118. package/dist/core/startup/initializeServices.d.ts +2 -2
  119. package/dist/core/startup/initializeServices.js +3 -3
  120. package/dist/core/startup/initializeServices.js.map +1 -1
  121. package/dist/core/startup/performanceTracker.cjs.map +1 -1
  122. package/dist/core/startup/performanceTracker.d.ts +1 -1
  123. package/dist/core/startup/performanceTracker.js.map +1 -1
  124. package/dist/core/startup/renderApp.cjs +3 -3
  125. package/dist/core/startup/renderApp.cjs.map +1 -1
  126. package/dist/core/startup/renderApp.d.ts +1 -1
  127. package/dist/core/startup/renderApp.js +2 -2
  128. package/dist/core/startup/renderApp.js.map +1 -1
  129. package/dist/core/startup/startApp.cjs +24 -24
  130. package/dist/core/startup/startApp.cjs.map +1 -1
  131. package/dist/core/startup/startApp.js +5 -5
  132. package/dist/core/startup/startApp.js.map +1 -1
  133. package/dist/core/types.d.ts +3 -3
  134. package/dist/core/types.js.map +1 -1
  135. package/dist/index.cjs +15 -2
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.d.ts +6 -4
  138. package/dist/index.js +5 -4
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.umd.js +2150 -23125
  141. package/dist/index.umd.js.map +1 -1
  142. package/dist/kernel/constants.cjs +67 -0
  143. package/dist/kernel/constants.cjs.map +1 -0
  144. package/dist/kernel/constants.d.ts +5 -0
  145. package/dist/kernel/constants.js +43 -0
  146. package/dist/kernel/constants.js.map +1 -0
  147. package/dist/kernel/index.cjs +40 -0
  148. package/dist/kernel/index.cjs.map +1 -0
  149. package/dist/kernel/index.d.ts +3 -0
  150. package/dist/kernel/index.js +4 -0
  151. package/dist/kernel/index.js.map +1 -0
  152. package/dist/kernel/kernel.cjs +296 -0
  153. package/dist/kernel/kernel.cjs.map +1 -0
  154. package/dist/kernel/kernel.d.ts +40 -0
  155. package/dist/kernel/kernel.js +272 -0
  156. package/dist/kernel/kernel.js.map +1 -0
  157. package/dist/kernel/manager/cacheManager.cjs +46 -0
  158. package/dist/kernel/manager/cacheManager.cjs.map +1 -0
  159. package/dist/kernel/manager/cacheManager.d.ts +6 -0
  160. package/dist/kernel/manager/cacheManager.js +36 -0
  161. package/dist/kernel/manager/cacheManager.js.map +1 -0
  162. package/dist/kernel/manager/i18nManager.cjs +68 -0
  163. package/dist/kernel/manager/i18nManager.cjs.map +1 -0
  164. package/dist/kernel/manager/i18nManager.d.ts +8 -0
  165. package/dist/kernel/manager/i18nManager.js +58 -0
  166. package/dist/kernel/manager/i18nManager.js.map +1 -0
  167. package/dist/kernel/manager/index.cjs +30 -0
  168. package/dist/kernel/manager/index.cjs.map +1 -0
  169. package/dist/kernel/manager/index.d.ts +4 -0
  170. package/dist/kernel/manager/index.js +6 -0
  171. package/dist/kernel/manager/index.js.map +1 -0
  172. package/dist/kernel/manager/loggerManager.cjs +70 -0
  173. package/dist/kernel/manager/loggerManager.cjs.map +1 -0
  174. package/dist/kernel/manager/loggerManager.d.ts +14 -0
  175. package/dist/kernel/manager/loggerManager.js +60 -0
  176. package/dist/kernel/manager/loggerManager.js.map +1 -0
  177. package/dist/kernel/manager/persistence.cjs +93 -0
  178. package/dist/kernel/manager/persistence.cjs.map +1 -0
  179. package/dist/kernel/manager/persistence.d.ts +3 -0
  180. package/dist/kernel/manager/persistence.js +75 -0
  181. package/dist/kernel/manager/persistence.js.map +1 -0
  182. package/dist/kernel/manager/themeManager.cjs +85 -0
  183. package/dist/kernel/manager/themeManager.cjs.map +1 -0
  184. package/dist/kernel/manager/themeManager.d.ts +9 -0
  185. package/dist/kernel/manager/themeManager.js +75 -0
  186. package/dist/kernel/manager/themeManager.js.map +1 -0
  187. package/dist/kernel/types.cjs +6 -0
  188. package/dist/kernel/types.cjs.map +1 -0
  189. package/dist/kernel/types.d.ts +72 -0
  190. package/dist/kernel/types.js +3 -0
  191. package/dist/kernel/types.js.map +1 -0
  192. package/dist/library/storage/encryption.cjs +12 -13
  193. package/dist/library/storage/encryption.cjs.map +1 -1
  194. package/dist/library/storage/encryption.js +1 -2
  195. package/dist/library/storage/encryption.js.map +1 -1
  196. package/dist/request/adapter.d.ts +1 -0
  197. package/dist/request/core.d.ts +1 -0
  198. package/dist/request/index.d.ts +1 -42
  199. package/dist/request/plugin/csrfPlugin.d.ts +2 -2
  200. package/dist/request/plugin/queue.d.ts +2 -2
  201. package/dist/request/plugin.d.ts +1 -0
  202. package/dist/request/runtime.d.ts +1 -0
  203. package/dist/request/types.d.ts +1 -394
  204. package/dist/request/utils.d.ts +1 -0
  205. package/dist/state.umd.js +1 -1
  206. package/dist/utils/csrf.cjs +13 -152
  207. package/dist/utils/csrf.cjs.map +1 -1
  208. package/dist/utils/csrf.d.ts +1 -72
  209. package/dist/utils/csrf.js +1 -142
  210. package/dist/utils/csrf.js.map +1 -1
  211. package/dist/utils/errors/ErrorCodes.cjs +6 -76
  212. package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
  213. package/dist/utils/errors/ErrorCodes.d.ts +1 -45
  214. package/dist/utils/errors/ErrorCodes.js +1 -84
  215. package/dist/utils/errors/ErrorCodes.js.map +1 -1
  216. package/dist/utils/errors.cjs +53 -326
  217. package/dist/utils/errors.cjs.map +1 -1
  218. package/dist/utils/errors.d.ts +19 -172
  219. package/dist/utils/errors.js +16 -352
  220. package/dist/utils/errors.js.map +1 -1
  221. package/dist/utils/logger.cjs +5 -374
  222. package/dist/utils/logger.cjs.map +1 -1
  223. package/dist/utils/logger.d.ts +2 -189
  224. package/dist/utils/logger.js +1 -379
  225. package/dist/utils/logger.js.map +1 -1
  226. package/dist/utils/logger.types.cjs +3 -12
  227. package/dist/utils/logger.types.cjs.map +1 -1
  228. package/dist/utils/logger.types.d.ts +2 -57
  229. package/dist/utils/logger.types.js +1 -10
  230. package/dist/utils/logger.types.js.map +1 -1
  231. package/dist/utils/monitoring.cjs +11 -302
  232. package/dist/utils/monitoring.cjs.map +1 -1
  233. package/dist/utils/monitoring.d.ts +1 -163
  234. package/dist/utils/monitoring.js +1 -294
  235. package/dist/utils/monitoring.js.map +1 -1
  236. package/dist/utils/performance.cjs +5 -352
  237. package/dist/utils/performance.cjs.map +1 -1
  238. package/dist/utils/performance.d.ts +2 -246
  239. package/dist/utils/performance.js +1 -354
  240. package/dist/utils/performance.js.map +1 -1
  241. package/dist/utils/resourceLoader.cjs +5 -303
  242. package/dist/utils/resourceLoader.cjs.map +1 -1
  243. package/dist/utils/resourceLoader.d.ts +2 -130
  244. package/dist/utils/resourceLoader.js +1 -305
  245. package/dist/utils/resourceLoader.js.map +1 -1
  246. package/dist/utils/runtimeSecurity.cjs +2 -140
  247. package/dist/utils/runtimeSecurity.cjs.map +1 -1
  248. package/dist/utils/runtimeSecurity.d.ts +2 -104
  249. package/dist/utils/runtimeSecurity.js +1 -141
  250. package/dist/utils/runtimeSecurity.js.map +1 -1
  251. package/dist/utils/security.cjs +3 -314
  252. package/dist/utils/security.cjs.map +1 -1
  253. package/dist/utils/security.d.ts +2 -80
  254. package/dist/utils/security.js +1 -311
  255. package/dist/utils/security.js.map +1 -1
  256. package/dist/utils/traceId.cjs +10 -111
  257. package/dist/utils/traceId.cjs.map +1 -1
  258. package/dist/utils/traceId.d.ts +1 -63
  259. package/dist/utils/traceId.js +1 -116
  260. package/dist/utils/traceId.js.map +1 -1
  261. package/dist/utils/validation.cjs +3 -173
  262. package/dist/utils/validation.cjs.map +1 -1
  263. package/dist/utils/validation.d.ts +2 -110
  264. package/dist/utils/validation.js +1 -175
  265. package/dist/utils/validation.js.map +1 -1
  266. package/package.json +15 -24
  267. package/dist/lazy/index.cjs +0 -104
  268. package/dist/lazy/index.cjs.map +0 -1
  269. package/dist/lazy/index.d.ts +0 -19
  270. package/dist/lazy/index.js +0 -24
  271. package/dist/lazy/index.js.map +0 -1
  272. package/dist/request/adapter/RequestAdapter.cjs +0 -78
  273. package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
  274. package/dist/request/adapter/axiosAdapter.cjs +0 -164
  275. package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
  276. package/dist/request/adapter/fetchAdapter.cjs +0 -134
  277. package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
  278. package/dist/request/adapter/index.cjs +0 -80
  279. package/dist/request/adapter/index.cjs.map +0 -1
  280. package/dist/request/adapter/kyAdapter.cjs +0 -191
  281. package/dist/request/adapter/kyAdapter.cjs.map +0 -1
  282. package/dist/request/adapter/undiciAdapter.cjs +0 -213
  283. package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
  284. package/dist/request/core/RequestClient.cjs +0 -558
  285. package/dist/request/core/RequestClient.cjs.map +0 -1
  286. package/dist/request/core/index.cjs +0 -15
  287. package/dist/request/core/index.cjs.map +0 -1
  288. package/dist/request/index.cjs +0 -149
  289. package/dist/request/index.cjs.map +0 -1
  290. package/dist/request/plugin/RequestPlugin.cjs +0 -218
  291. package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
  292. package/dist/request/plugin/cache.cjs +0 -269
  293. package/dist/request/plugin/cache.cjs.map +0 -1
  294. package/dist/request/plugin/csrfPlugin.cjs +0 -40
  295. package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
  296. package/dist/request/plugin/index.cjs +0 -53
  297. package/dist/request/plugin/index.cjs.map +0 -1
  298. package/dist/request/plugin/monitoring.cjs +0 -216
  299. package/dist/request/plugin/monitoring.cjs.map +0 -1
  300. package/dist/request/plugin/queue.cjs +0 -140
  301. package/dist/request/plugin/queue.cjs.map +0 -1
  302. package/dist/request/plugin/retry.cjs +0 -98
  303. package/dist/request/plugin/retry.cjs.map +0 -1
  304. package/dist/request/plugin/validation.cjs +0 -121
  305. package/dist/request/plugin/validation.cjs.map +0 -1
  306. package/dist/request/runtime/RequestContext.cjs +0 -77
  307. package/dist/request/runtime/RequestContext.cjs.map +0 -1
  308. package/dist/request/runtime/index.cjs +0 -32
  309. package/dist/request/runtime/index.cjs.map +0 -1
  310. package/dist/request/types.cjs +0 -112
  311. package/dist/request/types.cjs.map +0 -1
  312. package/dist/request/utils/RequestQueueManager.cjs +0 -168
  313. package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
  314. package/dist/request/utils/dependencyCheck.cjs +0 -237
  315. package/dist/request/utils/dependencyCheck.cjs.map +0 -1
  316. package/dist/request/utils/index.cjs +0 -30
  317. package/dist/request/utils/index.cjs.map +0 -1
  318. package/dist/request.umd.js +0 -5392
  319. package/dist/request.umd.js.map +0 -1
@@ -1,6 +1,4 @@
1
- /**
2
- * 性能指标单位常量
3
- */ "use strict";
1
+ "use strict";
4
2
  Object.defineProperty(exports, "__esModule", {
5
3
  value: true
6
4
  });
@@ -12,360 +10,15 @@ function _export(target, all) {
12
10
  }
13
11
  _export(exports, {
14
12
  get PERFORMANCE_METRIC_UNITS () {
15
- return PERFORMANCE_METRIC_UNITS;
16
- },
17
- get PERFORMANCE_METRIC_UNIT_MAP () {
18
- return PERFORMANCE_METRIC_UNIT_MAP;
13
+ return _utils.PERFORMANCE_METRIC_UNITS;
19
14
  },
20
15
  get PerformanceMonitor () {
21
- return PerformanceMonitor;
16
+ return _utils.PerformanceMonitor;
22
17
  },
23
18
  get convertMetricsToWithUnits () {
24
- return convertMetricsToWithUnits;
19
+ return _utils.convertMetricsToWithUnits;
25
20
  }
26
21
  });
27
- function _define_property(obj, key, value) {
28
- if (key in obj) {
29
- Object.defineProperty(obj, key, {
30
- value: value,
31
- enumerable: true,
32
- configurable: true,
33
- writable: true
34
- });
35
- } else {
36
- obj[key] = value;
37
- }
38
- return obj;
39
- }
40
- const PERFORMANCE_METRIC_UNITS = {
41
- /**
42
- * 毫秒单位
43
- */ ms: 'ms',
44
- /**
45
- * 无单位(分数)
46
- */ none: ''
47
- };
48
- let PerformanceMonitor = class PerformanceMonitor {
49
- /**
50
- * 初始化 Web Vitals 收集
51
- */ initWebVitals() {
52
- // 采样检查移到每次上报时进行,而不是初始化时
53
- // 这样可以确保监控功能始终初始化,只是选择性上报
54
- // 首次内容绘制 (FCP)
55
- this.observePaint('first-contentful-paint', (entry)=>{
56
- if (Math.random() <= this.config.sampleRate) {
57
- this.metrics.fcp = Math.round(entry.startTime);
58
- this.reportInternal();
59
- }
60
- });
61
- // 最大内容绘制 (LCP)
62
- this.observeLCP();
63
- // 首次输入延迟 (FID)
64
- this.observeFID();
65
- // 累积布局偏移 (CLS)
66
- this.observeCLS();
67
- // 可交互时间 (TTI) - 需要计算(延迟到页面加载完成后)
68
- if (typeof window !== 'undefined' && document.readyState === 'complete') {
69
- this.calculateTTI();
70
- } else if (typeof window !== 'undefined') {
71
- window.addEventListener('load', ()=>{
72
- // 使用 requestIdleCallback 在空闲时计算
73
- if (typeof requestIdleCallback !== 'undefined') {
74
- requestIdleCallback(()=>{
75
- this.calculateTTI();
76
- }, {
77
- timeout: 2000
78
- });
79
- } else {
80
- setTimeout(()=>{
81
- this.calculateTTI();
82
- }, 1000);
83
- }
84
- });
85
- }
86
- }
87
- /**
88
- * 观察 Paint 指标
89
- */ observePaint(name, callback) {
90
- if (typeof PerformanceObserver === 'undefined') {
91
- return;
92
- }
93
- try {
94
- const observer = new PerformanceObserver((list)=>{
95
- for (const entry of list.getEntries()){
96
- if (entry.name === name) {
97
- callback(entry);
98
- observer.disconnect();
99
- }
100
- }
101
- });
102
- observer.observe({
103
- entryTypes: [
104
- 'paint'
105
- ]
106
- });
107
- this.observers.push(observer);
108
- } catch (e) {
109
- // PerformanceObserver 不支持或已断开
110
- }
111
- }
112
- /**
113
- * 观察 LCP
114
- */ observeLCP() {
115
- if (typeof PerformanceObserver === 'undefined') {
116
- return;
117
- }
118
- try {
119
- const observer = new PerformanceObserver((list)=>{
120
- const entries = list.getEntries();
121
- const lastEntry = entries[entries.length - 1];
122
- const lcpValue = Math.round(lastEntry.renderTime || lastEntry.loadTime || lastEntry.startTime);
123
- // 采样检查和异常值检查
124
- if (Math.random() <= this.config.sampleRate && lcpValue > 0 && lcpValue < 60000) {
125
- this.metrics.lcp = lcpValue;
126
- this.reportInternal();
127
- }
128
- });
129
- observer.observe({
130
- entryTypes: [
131
- 'largest-contentful-paint'
132
- ]
133
- });
134
- this.observers.push(observer);
135
- } catch (e) {
136
- // PerformanceObserver 不支持
137
- }
138
- }
139
- /**
140
- * 观察 FID
141
- */ observeFID() {
142
- if (typeof PerformanceObserver === 'undefined') {
143
- return;
144
- }
145
- try {
146
- const observer = new PerformanceObserver((list)=>{
147
- for (const entry of list.getEntries()){
148
- const fidEntry = entry;
149
- const fidValue = Math.round(fidEntry.processingStart - fidEntry.startTime);
150
- // 采样检查和异常值检查
151
- if (Math.random() <= this.config.sampleRate && fidValue >= 0 && fidValue < 10000) {
152
- this.metrics.fid = fidValue;
153
- this.reportInternal();
154
- }
155
- observer.disconnect();
156
- }
157
- });
158
- observer.observe({
159
- entryTypes: [
160
- 'first-input'
161
- ]
162
- });
163
- this.observers.push(observer);
164
- } catch (e) {
165
- // PerformanceObserver 不支持
166
- }
167
- }
168
- /**
169
- * 观察 CLS
170
- */ observeCLS() {
171
- if (typeof PerformanceObserver === 'undefined') {
172
- return;
173
- }
174
- let clsValue = 0;
175
- let clsEntries = [];
176
- try {
177
- const observer = new PerformanceObserver((list)=>{
178
- for (const entry of list.getEntries()){
179
- if (!entry.hadRecentInput) {
180
- const firstSessionEntry = clsEntries[0];
181
- const lastSessionEntry = clsEntries[clsEntries.length - 1];
182
- if (!firstSessionEntry || entry.startTime - lastSessionEntry.startTime < 1000 || entry.startTime - firstSessionEntry.startTime > 5000) {
183
- clsEntries = [
184
- entry
185
- ];
186
- clsValue = entry.value;
187
- } else {
188
- clsEntries.push(entry);
189
- clsValue += entry.value;
190
- }
191
- const roundedValue = Math.round(clsValue * 1000) / 1000;
192
- // 采样检查和异常值检查
193
- if (Math.random() <= this.config.sampleRate && roundedValue >= 0 && roundedValue < 1) {
194
- this.metrics.cls = roundedValue;
195
- this.reportInternal();
196
- }
197
- }
198
- }
199
- });
200
- observer.observe({
201
- entryTypes: [
202
- 'layout-shift'
203
- ]
204
- });
205
- this.observers.push(observer);
206
- } catch (e) {
207
- // PerformanceObserver 不支持
208
- }
209
- }
210
- /**
211
- * 计算 TTI
212
- */ calculateTTI() {
213
- if (typeof window === 'undefined' || !window.performance) {
214
- return;
215
- }
216
- try {
217
- const navigation = performance.getEntriesByType('navigation')[0];
218
- if (navigation) {
219
- const ttiValue = Math.round(navigation.domInteractive - navigation.fetchStart);
220
- // 采样检查和异常值检查
221
- if (Math.random() <= this.config.sampleRate && ttiValue > 0 && ttiValue < 60000) {
222
- this.metrics.tti = ttiValue;
223
- this.reportInternal();
224
- }
225
- }
226
- } catch (e) {
227
- // 忽略错误
228
- }
229
- }
230
- /**
231
- * 内部上报性能指标(自动上报当前指标)
232
- */ reportInternal() {
233
- if (this.config.onReport) {
234
- // 创建指标的副本,避免外部修改影响内部状态
235
- const metricsCopy = {};
236
- if (this.metrics.fcp !== undefined) metricsCopy.fcp = this.metrics.fcp;
237
- if (this.metrics.lcp !== undefined) metricsCopy.lcp = this.metrics.lcp;
238
- if (this.metrics.fid !== undefined) metricsCopy.fid = this.metrics.fid;
239
- if (this.metrics.cls !== undefined) metricsCopy.cls = this.metrics.cls;
240
- if (this.metrics.tti !== undefined) metricsCopy.tti = this.metrics.tti;
241
- if (this.metrics.tbt !== undefined) metricsCopy.tbt = this.metrics.tbt;
242
- if (this.metrics.si !== undefined) metricsCopy.si = this.metrics.si;
243
- this.config.onReport(metricsCopy);
244
- }
245
- }
246
- /**
247
- * 获取当前性能指标
248
- */ getMetrics() {
249
- return {
250
- ...this.metrics
251
- };
252
- }
253
- /**
254
- * 手动记录自定义指标
255
- */ recordMetric(name, value) {
256
- this.metrics[name] = value;
257
- this.reportInternal();
258
- }
259
- /**
260
- * 清理观察者
261
- */ disconnect() {
262
- this.observers.forEach((observer)=>observer.disconnect());
263
- this.observers = [];
264
- // 停止聚合定时器
265
- if (this.aggregationTimer) {
266
- clearInterval(this.aggregationTimer);
267
- this.aggregationTimer = undefined;
268
- }
269
- // 停止自动上报定时器
270
- if (this.autoReportTimer) {
271
- clearInterval(this.autoReportTimer);
272
- this.autoReportTimer = undefined;
273
- }
274
- }
275
- /**
276
- * 启动性能指标聚合
277
- */ startAggregation() {
278
- this.aggregationTimer = setInterval(()=>{
279
- this.aggregateMetrics();
280
- }, this.config.aggregationWindow);
281
- }
282
- /**
283
- * 聚合性能指标
284
- */ aggregateMetrics() {
285
- // 计算平均值、最大值、最小值等统计信息
286
- // 这里简化实现,实际可以根据需要扩展
287
- this.aggregatedMetrics = {
288
- ...this.metrics
289
- };
290
- }
291
- /**
292
- * 获取聚合后的性能指标
293
- */ getAggregatedMetrics() {
294
- return {
295
- ...this.aggregatedMetrics
296
- };
297
- }
298
- /**
299
- * 启动自动上报
300
- */ startAutoReport() {
301
- this.autoReportTimer = setInterval(()=>{
302
- const metrics = this.config.enableAggregation ? this.getAggregatedMetrics() : this.getMetrics();
303
- this.config.onReport(metrics);
304
- }, this.config.autoReportInterval);
305
- }
306
- /**
307
- * 手动上报性能指标
308
- */ report(metrics) {
309
- const metricsToReport = metrics || this.getMetrics();
310
- this.config.onReport(metricsToReport);
311
- }
312
- constructor(config = {}){
313
- _define_property(this, "config", void 0);
314
- _define_property(this, "metrics", {});
315
- _define_property(this, "observers", []);
316
- _define_property(this, "aggregatedMetrics", {});
317
- _define_property(this, "aggregationTimer", void 0);
318
- _define_property(this, "autoReportTimer", void 0);
319
- this.config = {
320
- collectWebVitals: config.collectWebVitals ?? true,
321
- onReport: config.onReport ?? (()=>{}),
322
- sampleRate: config.sampleRate ?? 1.0,
323
- enableAggregation: config.enableAggregation ?? false,
324
- aggregationWindow: config.aggregationWindow ?? 60000,
325
- autoReport: config.autoReport ?? false,
326
- autoReportInterval: config.autoReportInterval ?? 300000
327
- };
328
- if (this.config.collectWebVitals && typeof window !== 'undefined') {
329
- this.initWebVitals();
330
- }
331
- // 启动性能指标聚合
332
- if (this.config.enableAggregation) {
333
- this.startAggregation();
334
- }
335
- // 启动自动上报
336
- if (this.config.autoReport) {
337
- this.startAutoReport();
338
- }
339
- }
340
- };
341
- const PERFORMANCE_METRIC_UNIT_MAP = {
342
- // Web Vitals 指标
343
- fcp: PERFORMANCE_METRIC_UNITS.ms,
344
- lcp: PERFORMANCE_METRIC_UNITS.ms,
345
- fid: PERFORMANCE_METRIC_UNITS.ms,
346
- cls: PERFORMANCE_METRIC_UNITS.none,
347
- tti: PERFORMANCE_METRIC_UNITS.ms,
348
- tbt: PERFORMANCE_METRIC_UNITS.ms,
349
- si: PERFORMANCE_METRIC_UNITS.ms,
350
- // 启动性能指标
351
- serviceInitDuration: PERFORMANCE_METRIC_UNITS.ms,
352
- initializationDuration: PERFORMANCE_METRIC_UNITS.ms,
353
- firstRenderDuration: PERFORMANCE_METRIC_UNITS.ms,
354
- totalStartupDuration: PERFORMANCE_METRIC_UNITS.ms
355
- };
356
- function convertMetricsToWithUnits(metrics) {
357
- const result = {};
358
- for (const [key, value] of Object.entries(metrics)){
359
- if (value !== undefined && value !== null && typeof value === 'number') {
360
- // 从映射中获取单位,如果没有映射则默认为毫秒
361
- const unit = PERFORMANCE_METRIC_UNIT_MAP[key] || PERFORMANCE_METRIC_UNITS.ms;
362
- result[key] = {
363
- value,
364
- unit
365
- };
366
- }
367
- }
368
- return result;
369
- }
22
+ const _utils = require("@vlian/utils");
370
23
 
371
24
  //# sourceMappingURL=performance.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/performance.ts"],"sourcesContent":["/**\n * 性能指标单位常量\n */\nexport const PERFORMANCE_METRIC_UNITS = {\n /**\n * 毫秒单位\n */\n ms: 'ms',\n /**\n * 无单位(分数)\n */\n none: '',\n} as const;\n\n/**\n * 性能指标单位类型\n */\nexport type PerformanceMetricUnit = typeof PERFORMANCE_METRIC_UNITS[keyof typeof PERFORMANCE_METRIC_UNITS];\n\n/**\n * 带单位的性能指标值\n */\nexport interface PerformanceMetricValue {\n /**\n * 指标值\n */\n value: number;\n /**\n * 单位\n */\n unit: PerformanceMetricUnit;\n}\n\n/**\n * 性能指标类型\n */\nexport interface PerformanceMetrics {\n /**\n * First Contentful Paint (首次内容绘制)\n * 单位:毫秒(ms)\n */\n fcp?: number;\n /**\n * Largest Contentful Paint (最大内容绘制)\n * 单位:毫秒(ms)\n */\n lcp?: number;\n /**\n * First Input Delay (首次输入延迟)\n * 单位:毫秒(ms)\n */\n fid?: number;\n /**\n * Cumulative Layout Shift (累积布局偏移)\n * 单位:无(分数)\n */\n cls?: number;\n /**\n * Time to Interactive (可交互时间)\n * 单位:毫秒(ms)\n */\n tti?: number;\n /**\n * Total Blocking Time (总阻塞时间)\n * 单位:毫秒(ms)\n */\n tbt?: number;\n /**\n * Speed Index (速度指数)\n * 单位:毫秒(ms)\n */\n si?: number;\n}\n\n/**\n * 性能监控配置\n */\nexport interface PerformanceMonitorConfig {\n /**\n * 是否自动收集 Web Vitals\n */\n collectWebVitals?: boolean;\n /**\n * 性能指标上报回调\n */\n onReport?: (metrics: PerformanceMetrics) => void;\n /**\n * 采样率 (0-1)\n */\n sampleRate?: number;\n /**\n * 是否启用性能指标聚合\n */\n enableAggregation?: boolean;\n /**\n * 性能指标聚合窗口大小(毫秒)\n */\n aggregationWindow?: number;\n /**\n * 是否自动上报性能指标\n */\n autoReport?: boolean;\n /**\n * 自动上报间隔(毫秒)\n */\n autoReportInterval?: number;\n}\n\n/**\n * 性能监控类\n */\nexport class PerformanceMonitor {\n private config: Required<PerformanceMonitorConfig>;\n private metrics: PerformanceMetrics = {};\n private observers: PerformanceObserver[] = [];\n private aggregatedMetrics: PerformanceMetrics = {};\n private aggregationTimer?: ReturnType<typeof setInterval>;\n private autoReportTimer?: ReturnType<typeof setInterval>;\n\n constructor(config: PerformanceMonitorConfig = {}) {\n this.config = {\n collectWebVitals: config.collectWebVitals ?? true,\n onReport: config.onReport ?? (() => {}),\n sampleRate: config.sampleRate ?? 1.0,\n enableAggregation: config.enableAggregation ?? false,\n aggregationWindow: config.aggregationWindow ?? 60000, // 1分钟\n autoReport: config.autoReport ?? false,\n autoReportInterval: config.autoReportInterval ?? 300000, // 5分钟\n };\n\n if (this.config.collectWebVitals && typeof window !== 'undefined') {\n this.initWebVitals();\n }\n\n // 启动性能指标聚合\n if (this.config.enableAggregation) {\n this.startAggregation();\n }\n\n // 启动自动上报\n if (this.config.autoReport) {\n this.startAutoReport();\n }\n }\n\n /**\n * 初始化 Web Vitals 收集\n */\n private initWebVitals(): void {\n // 采样检查移到每次上报时进行,而不是初始化时\n // 这样可以确保监控功能始终初始化,只是选择性上报\n\n // 首次内容绘制 (FCP)\n this.observePaint('first-contentful-paint', (entry) => {\n if (Math.random() <= this.config.sampleRate) {\n this.metrics.fcp = Math.round(entry.startTime);\n this.reportInternal();\n }\n });\n\n // 最大内容绘制 (LCP)\n this.observeLCP();\n\n // 首次输入延迟 (FID)\n this.observeFID();\n\n // 累积布局偏移 (CLS)\n this.observeCLS();\n\n // 可交互时间 (TTI) - 需要计算(延迟到页面加载完成后)\n if (typeof window !== 'undefined' && document.readyState === 'complete') {\n this.calculateTTI();\n } else if (typeof window !== 'undefined') {\n window.addEventListener('load', () => {\n // 使用 requestIdleCallback 在空闲时计算\n if (typeof requestIdleCallback !== 'undefined') {\n requestIdleCallback(() => {\n this.calculateTTI();\n }, { timeout: 2000 });\n } else {\n setTimeout(() => {\n this.calculateTTI();\n }, 1000);\n }\n });\n }\n }\n\n /**\n * 观察 Paint 指标\n */\n private observePaint(name: string, callback: (entry: PerformanceEntry) => void): void {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n\n try {\n const observer = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (entry.name === name) {\n callback(entry);\n observer.disconnect();\n }\n }\n });\n observer.observe({ entryTypes: ['paint'] });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持或已断开\n }\n }\n\n /**\n * 观察 LCP\n */\n private observeLCP(): void {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n\n try {\n const observer = new PerformanceObserver((list) => {\n const entries = list.getEntries();\n const lastEntry = entries[entries.length - 1] as PerformanceEntry & { renderTime?: number; loadTime?: number };\n const lcpValue = Math.round((lastEntry.renderTime || lastEntry.loadTime || lastEntry.startTime));\n \n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && lcpValue > 0 && lcpValue < 60000) {\n this.metrics.lcp = lcpValue;\n this.reportInternal();\n }\n });\n observer.observe({ entryTypes: ['largest-contentful-paint'] });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n\n /**\n * 观察 FID\n */\n private observeFID(): void {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n\n try {\n const observer = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n const fidEntry = entry as PerformanceEventTiming;\n const fidValue = Math.round(fidEntry.processingStart - fidEntry.startTime);\n \n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && fidValue >= 0 && fidValue < 10000) {\n this.metrics.fid = fidValue;\n this.reportInternal();\n }\n observer.disconnect();\n }\n });\n observer.observe({ entryTypes: ['first-input'] });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n\n /**\n * 观察 CLS\n */\n private observeCLS(): void {\n if (typeof PerformanceObserver === 'undefined') {\n return;\n }\n\n let clsValue = 0;\n let clsEntries: PerformanceEntry[] = [];\n\n try {\n const observer = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (!(entry as any).hadRecentInput) {\n const firstSessionEntry = clsEntries[0];\n const lastSessionEntry = clsEntries[clsEntries.length - 1];\n\n if (\n !firstSessionEntry ||\n entry.startTime - lastSessionEntry.startTime < 1000 ||\n entry.startTime - firstSessionEntry.startTime > 5000\n ) {\n clsEntries = [entry];\n clsValue = (entry as any).value;\n } else {\n clsEntries.push(entry);\n clsValue += (entry as any).value;\n }\n\n const roundedValue = Math.round(clsValue * 1000) / 1000;\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && roundedValue >= 0 && roundedValue < 1) {\n this.metrics.cls = roundedValue;\n this.reportInternal();\n }\n }\n }\n });\n observer.observe({ entryTypes: ['layout-shift'] });\n this.observers.push(observer);\n } catch (e) {\n // PerformanceObserver 不支持\n }\n }\n\n /**\n * 计算 TTI\n */\n private calculateTTI(): void {\n if (typeof window === 'undefined' || !window.performance) {\n return;\n }\n\n try {\n const navigation = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming;\n if (navigation) {\n const ttiValue = Math.round(navigation.domInteractive - navigation.fetchStart);\n // 采样检查和异常值检查\n if (Math.random() <= this.config.sampleRate && ttiValue > 0 && ttiValue < 60000) {\n this.metrics.tti = ttiValue;\n this.reportInternal();\n }\n }\n } catch (e) {\n // 忽略错误\n }\n }\n\n /**\n * 内部上报性能指标(自动上报当前指标)\n */\n private reportInternal(): void {\n if (this.config.onReport) {\n // 创建指标的副本,避免外部修改影响内部状态\n const metricsCopy: PerformanceMetrics = {};\n if (this.metrics.fcp !== undefined) metricsCopy.fcp = this.metrics.fcp;\n if (this.metrics.lcp !== undefined) metricsCopy.lcp = this.metrics.lcp;\n if (this.metrics.fid !== undefined) metricsCopy.fid = this.metrics.fid;\n if (this.metrics.cls !== undefined) metricsCopy.cls = this.metrics.cls;\n if (this.metrics.tti !== undefined) metricsCopy.tti = this.metrics.tti;\n if (this.metrics.tbt !== undefined) metricsCopy.tbt = this.metrics.tbt;\n if (this.metrics.si !== undefined) metricsCopy.si = this.metrics.si;\n \n this.config.onReport(metricsCopy);\n }\n }\n\n /**\n * 获取当前性能指标\n */\n getMetrics(): PerformanceMetrics {\n return { ...this.metrics };\n }\n\n /**\n * 手动记录自定义指标\n */\n recordMetric(name: string, value: number): void {\n (this.metrics as Record<string, number>)[name] = value;\n this.reportInternal();\n }\n\n /**\n * 清理观察者\n */\n disconnect(): void {\n this.observers.forEach((observer) => observer.disconnect());\n this.observers = [];\n\n // 停止聚合定时器\n if (this.aggregationTimer) {\n clearInterval(this.aggregationTimer);\n this.aggregationTimer = undefined;\n }\n\n // 停止自动上报定时器\n if (this.autoReportTimer) {\n clearInterval(this.autoReportTimer);\n this.autoReportTimer = undefined;\n }\n }\n\n /**\n * 启动性能指标聚合\n */\n private startAggregation(): void {\n this.aggregationTimer = setInterval(() => {\n this.aggregateMetrics();\n }, this.config.aggregationWindow);\n }\n\n /**\n * 聚合性能指标\n */\n private aggregateMetrics(): void {\n // 计算平均值、最大值、最小值等统计信息\n // 这里简化实现,实际可以根据需要扩展\n this.aggregatedMetrics = { ...this.metrics };\n }\n\n /**\n * 获取聚合后的性能指标\n */\n getAggregatedMetrics(): PerformanceMetrics {\n return { ...this.aggregatedMetrics };\n }\n\n /**\n * 启动自动上报\n */\n private startAutoReport(): void {\n this.autoReportTimer = setInterval(() => {\n const metrics = this.config.enableAggregation \n ? this.getAggregatedMetrics() \n : this.getMetrics();\n this.config.onReport(metrics);\n }, this.config.autoReportInterval);\n }\n\n /**\n * 手动上报性能指标\n */\n report(metrics?: PerformanceMetrics): void {\n const metricsToReport = metrics || this.getMetrics();\n this.config.onReport(metricsToReport);\n }\n}\n\n/**\n * 带单位的性能指标类型\n */\nexport interface PerformanceMetricsWithUnits {\n /**\n * First Contentful Paint (首次内容绘制)\n * 单位:毫秒(ms)\n */\n fcp?: PerformanceMetricValue;\n /**\n * Largest Contentful Paint (最大内容绘制)\n * 单位:毫秒(ms)\n */\n lcp?: PerformanceMetricValue;\n /**\n * First Input Delay (首次输入延迟)\n * 单位:毫秒(ms)\n */\n fid?: PerformanceMetricValue;\n /**\n * Cumulative Layout Shift (累积布局偏移)\n * 单位:无(分数)\n */\n cls?: PerformanceMetricValue;\n /**\n * Time to Interactive (可交互时间)\n * 单位:毫秒(ms)\n */\n tti?: PerformanceMetricValue;\n /**\n * Total Blocking Time (总阻塞时间)\n * 单位:毫秒(ms)\n */\n tbt?: PerformanceMetricValue;\n /**\n * Speed Index (速度指数)\n * 单位:毫秒(ms)\n */\n si?: PerformanceMetricValue;\n /**\n * 服务初始化耗时\n * 单位:毫秒(ms)\n */\n serviceInitDuration?: PerformanceMetricValue;\n /**\n * 初始化耗时\n * 单位:毫秒(ms)\n */\n initializationDuration?: PerformanceMetricValue;\n /**\n * 首次渲染耗时\n * 单位:毫秒(ms)\n */\n firstRenderDuration?: PerformanceMetricValue;\n /**\n * 总启动耗时\n * 单位:毫秒(ms)\n */\n totalStartupDuration?: PerformanceMetricValue;\n}\n\n/**\n * 性能指标单位映射(包含所有可能的指标键)\n */\nexport const PERFORMANCE_METRIC_UNIT_MAP: Record<string, PerformanceMetricUnit> = {\n // Web Vitals 指标\n fcp: PERFORMANCE_METRIC_UNITS.ms,\n lcp: PERFORMANCE_METRIC_UNITS.ms,\n fid: PERFORMANCE_METRIC_UNITS.ms,\n cls: PERFORMANCE_METRIC_UNITS.none,\n tti: PERFORMANCE_METRIC_UNITS.ms,\n tbt: PERFORMANCE_METRIC_UNITS.ms,\n si: PERFORMANCE_METRIC_UNITS.ms,\n // 启动性能指标\n serviceInitDuration: PERFORMANCE_METRIC_UNITS.ms,\n initializationDuration: PERFORMANCE_METRIC_UNITS.ms,\n firstRenderDuration: PERFORMANCE_METRIC_UNITS.ms,\n totalStartupDuration: PERFORMANCE_METRIC_UNITS.ms,\n};\n\n/**\n * 将性能指标转换为带单位的格式\n * \n * @param metrics - 性能指标对象(可能包含 Web Vitals 和启动性能指标)\n * @returns 带单位的性能指标对象\n */\nexport function convertMetricsToWithUnits(metrics: PerformanceMetrics | Record<string, number>): PerformanceMetricsWithUnits {\n const result: PerformanceMetricsWithUnits = {};\n \n for (const [key, value] of Object.entries(metrics)) {\n if (value !== undefined && value !== null && typeof value === 'number') {\n // 从映射中获取单位,如果没有映射则默认为毫秒\n const unit = PERFORMANCE_METRIC_UNIT_MAP[key] || PERFORMANCE_METRIC_UNITS.ms;\n (result as Record<string, PerformanceMetricValue>)[key] = {\n value,\n unit,\n };\n }\n }\n \n return result;\n}\n\n/**\n * 性能事件时间接口\n */\ninterface PerformanceEventTiming extends PerformanceEntry {\n processingStart: number;\n}\n"],"names":["PERFORMANCE_METRIC_UNITS","PERFORMANCE_METRIC_UNIT_MAP","PerformanceMonitor","convertMetricsToWithUnits","ms","none","initWebVitals","observePaint","entry","Math","random","config","sampleRate","metrics","fcp","round","startTime","reportInternal","observeLCP","observeFID","observeCLS","window","document","readyState","calculateTTI","addEventListener","requestIdleCallback","timeout","setTimeout","name","callback","PerformanceObserver","observer","list","getEntries","disconnect","observe","entryTypes","observers","push","e","entries","lastEntry","length","lcpValue","renderTime","loadTime","lcp","fidEntry","fidValue","processingStart","fid","clsValue","clsEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","value","roundedValue","cls","performance","navigation","getEntriesByType","ttiValue","domInteractive","fetchStart","tti","onReport","metricsCopy","undefined","tbt","si","getMetrics","recordMetric","forEach","aggregationTimer","clearInterval","autoReportTimer","startAggregation","setInterval","aggregateMetrics","aggregationWindow","aggregatedMetrics","getAggregatedMetrics","startAutoReport","enableAggregation","autoReportInterval","report","metricsToReport","collectWebVitals","autoReport","serviceInitDuration","initializationDuration","firstRenderDuration","totalStartupDuration","result","key","Object","unit"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/performance.ts"],"sourcesContent":["export { PerformanceMonitor, PERFORMANCE_METRIC_UNITS, convertMetricsToWithUnits } from '@vlian/utils';\nexport type {\n PerformanceMetrics,\n PerformanceMonitorConfig,\n PerformanceMetricsWithUnits,\n PerformanceMetricValue,\n PerformanceMetricUnit,\n} from '@vlian/utils';\n"],"names":["PERFORMANCE_METRIC_UNITS","PerformanceMonitor","convertMetricsToWithUnits"],"mappings":";;;;;;;;;;;QAA6BA;eAAAA,+BAAwB;;QAA5CC;eAAAA,yBAAkB;;QAA4BC;eAAAA,gCAAyB;;;uBAAQ"}
@@ -1,246 +1,2 @@
1
- /**
2
- * 性能指标单位常量
3
- */
4
- export declare const PERFORMANCE_METRIC_UNITS: {
5
- /**
6
- * 毫秒单位
7
- */
8
- readonly ms: "ms";
9
- /**
10
- * 无单位(分数)
11
- */
12
- readonly none: "";
13
- };
14
- /**
15
- * 性能指标单位类型
16
- */
17
- export type PerformanceMetricUnit = typeof PERFORMANCE_METRIC_UNITS[keyof typeof PERFORMANCE_METRIC_UNITS];
18
- /**
19
- * 带单位的性能指标值
20
- */
21
- export interface PerformanceMetricValue {
22
- /**
23
- * 指标值
24
- */
25
- value: number;
26
- /**
27
- * 单位
28
- */
29
- unit: PerformanceMetricUnit;
30
- }
31
- /**
32
- * 性能指标类型
33
- */
34
- export interface PerformanceMetrics {
35
- /**
36
- * First Contentful Paint (首次内容绘制)
37
- * 单位:毫秒(ms)
38
- */
39
- fcp?: number;
40
- /**
41
- * Largest Contentful Paint (最大内容绘制)
42
- * 单位:毫秒(ms)
43
- */
44
- lcp?: number;
45
- /**
46
- * First Input Delay (首次输入延迟)
47
- * 单位:毫秒(ms)
48
- */
49
- fid?: number;
50
- /**
51
- * Cumulative Layout Shift (累积布局偏移)
52
- * 单位:无(分数)
53
- */
54
- cls?: number;
55
- /**
56
- * Time to Interactive (可交互时间)
57
- * 单位:毫秒(ms)
58
- */
59
- tti?: number;
60
- /**
61
- * Total Blocking Time (总阻塞时间)
62
- * 单位:毫秒(ms)
63
- */
64
- tbt?: number;
65
- /**
66
- * Speed Index (速度指数)
67
- * 单位:毫秒(ms)
68
- */
69
- si?: number;
70
- }
71
- /**
72
- * 性能监控配置
73
- */
74
- export interface PerformanceMonitorConfig {
75
- /**
76
- * 是否自动收集 Web Vitals
77
- */
78
- collectWebVitals?: boolean;
79
- /**
80
- * 性能指标上报回调
81
- */
82
- onReport?: (metrics: PerformanceMetrics) => void;
83
- /**
84
- * 采样率 (0-1)
85
- */
86
- sampleRate?: number;
87
- /**
88
- * 是否启用性能指标聚合
89
- */
90
- enableAggregation?: boolean;
91
- /**
92
- * 性能指标聚合窗口大小(毫秒)
93
- */
94
- aggregationWindow?: number;
95
- /**
96
- * 是否自动上报性能指标
97
- */
98
- autoReport?: boolean;
99
- /**
100
- * 自动上报间隔(毫秒)
101
- */
102
- autoReportInterval?: number;
103
- }
104
- /**
105
- * 性能监控类
106
- */
107
- export declare class PerformanceMonitor {
108
- private config;
109
- private metrics;
110
- private observers;
111
- private aggregatedMetrics;
112
- private aggregationTimer?;
113
- private autoReportTimer?;
114
- constructor(config?: PerformanceMonitorConfig);
115
- /**
116
- * 初始化 Web Vitals 收集
117
- */
118
- private initWebVitals;
119
- /**
120
- * 观察 Paint 指标
121
- */
122
- private observePaint;
123
- /**
124
- * 观察 LCP
125
- */
126
- private observeLCP;
127
- /**
128
- * 观察 FID
129
- */
130
- private observeFID;
131
- /**
132
- * 观察 CLS
133
- */
134
- private observeCLS;
135
- /**
136
- * 计算 TTI
137
- */
138
- private calculateTTI;
139
- /**
140
- * 内部上报性能指标(自动上报当前指标)
141
- */
142
- private reportInternal;
143
- /**
144
- * 获取当前性能指标
145
- */
146
- getMetrics(): PerformanceMetrics;
147
- /**
148
- * 手动记录自定义指标
149
- */
150
- recordMetric(name: string, value: number): void;
151
- /**
152
- * 清理观察者
153
- */
154
- disconnect(): void;
155
- /**
156
- * 启动性能指标聚合
157
- */
158
- private startAggregation;
159
- /**
160
- * 聚合性能指标
161
- */
162
- private aggregateMetrics;
163
- /**
164
- * 获取聚合后的性能指标
165
- */
166
- getAggregatedMetrics(): PerformanceMetrics;
167
- /**
168
- * 启动自动上报
169
- */
170
- private startAutoReport;
171
- /**
172
- * 手动上报性能指标
173
- */
174
- report(metrics?: PerformanceMetrics): void;
175
- }
176
- /**
177
- * 带单位的性能指标类型
178
- */
179
- export interface PerformanceMetricsWithUnits {
180
- /**
181
- * First Contentful Paint (首次内容绘制)
182
- * 单位:毫秒(ms)
183
- */
184
- fcp?: PerformanceMetricValue;
185
- /**
186
- * Largest Contentful Paint (最大内容绘制)
187
- * 单位:毫秒(ms)
188
- */
189
- lcp?: PerformanceMetricValue;
190
- /**
191
- * First Input Delay (首次输入延迟)
192
- * 单位:毫秒(ms)
193
- */
194
- fid?: PerformanceMetricValue;
195
- /**
196
- * Cumulative Layout Shift (累积布局偏移)
197
- * 单位:无(分数)
198
- */
199
- cls?: PerformanceMetricValue;
200
- /**
201
- * Time to Interactive (可交互时间)
202
- * 单位:毫秒(ms)
203
- */
204
- tti?: PerformanceMetricValue;
205
- /**
206
- * Total Blocking Time (总阻塞时间)
207
- * 单位:毫秒(ms)
208
- */
209
- tbt?: PerformanceMetricValue;
210
- /**
211
- * Speed Index (速度指数)
212
- * 单位:毫秒(ms)
213
- */
214
- si?: PerformanceMetricValue;
215
- /**
216
- * 服务初始化耗时
217
- * 单位:毫秒(ms)
218
- */
219
- serviceInitDuration?: PerformanceMetricValue;
220
- /**
221
- * 初始化耗时
222
- * 单位:毫秒(ms)
223
- */
224
- initializationDuration?: PerformanceMetricValue;
225
- /**
226
- * 首次渲染耗时
227
- * 单位:毫秒(ms)
228
- */
229
- firstRenderDuration?: PerformanceMetricValue;
230
- /**
231
- * 总启动耗时
232
- * 单位:毫秒(ms)
233
- */
234
- totalStartupDuration?: PerformanceMetricValue;
235
- }
236
- /**
237
- * 性能指标单位映射(包含所有可能的指标键)
238
- */
239
- export declare const PERFORMANCE_METRIC_UNIT_MAP: Record<string, PerformanceMetricUnit>;
240
- /**
241
- * 将性能指标转换为带单位的格式
242
- *
243
- * @param metrics - 性能指标对象(可能包含 Web Vitals 和启动性能指标)
244
- * @returns 带单位的性能指标对象
245
- */
246
- export declare function convertMetricsToWithUnits(metrics: PerformanceMetrics | Record<string, number>): PerformanceMetricsWithUnits;
1
+ export { PerformanceMonitor, PERFORMANCE_METRIC_UNITS, convertMetricsToWithUnits } from '@vlian/utils';
2
+ export type { PerformanceMetrics, PerformanceMonitorConfig, PerformanceMetricsWithUnits, PerformanceMetricValue, PerformanceMetricUnit, } from '@vlian/utils';