@sentry/browser-utils 11.0.0-alpha.0 → 11.0.0-alpha.1

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 (288) hide show
  1. package/build/cjs/index.js +29 -28
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/instrumentation/dom.js.map +1 -0
  4. package/build/cjs/instrumentation/history.js.map +1 -0
  5. package/build/cjs/instrumentation/location.js.map +1 -0
  6. package/build/cjs/{metrics/instrument.js → instrumentation/performanceObserver.js} +44 -32
  7. package/build/cjs/instrumentation/performanceObserver.js.map +1 -0
  8. package/build/cjs/instrumentation/xhr.js.map +1 -0
  9. package/build/cjs/{metrics → performance}/elementTiming.js +2 -2
  10. package/build/cjs/performance/elementTiming.js.map +1 -0
  11. package/build/cjs/{metrics/browserMetrics.js → performance/entries.js} +22 -175
  12. package/build/cjs/performance/entries.js.map +1 -0
  13. package/build/cjs/performance/resourceTiming.js.map +1 -0
  14. package/build/cjs/{metrics → performance}/userTiming.js +4 -3
  15. package/build/cjs/performance/userTiming.js.map +1 -0
  16. package/build/cjs/{metrics → performance}/utils.js +1 -27
  17. package/build/cjs/performance/utils.js.map +1 -0
  18. package/build/cjs/{metrics → web-vitals}/inp.js +4 -4
  19. package/build/cjs/web-vitals/inp.js.map +1 -0
  20. package/build/cjs/web-vitals/lcp.js.map +1 -0
  21. package/build/cjs/web-vitals/reportEvents.js +31 -0
  22. package/build/cjs/web-vitals/reportEvents.js.map +1 -0
  23. package/build/cjs/{metrics/webVitalSpans.js → web-vitals/spans.js} +11 -10
  24. package/build/cjs/web-vitals/spans.js.map +1 -0
  25. package/build/cjs/web-vitals/tracking.js +164 -0
  26. package/build/cjs/web-vitals/tracking.js.map +1 -0
  27. package/build/cjs/web-vitals/utils.js +99 -0
  28. package/build/cjs/web-vitals/utils.js.map +1 -0
  29. package/build/esm/index.js +14 -13
  30. package/build/esm/index.js.map +1 -1
  31. package/build/esm/instrumentation/dom.js.map +1 -0
  32. package/build/esm/instrumentation/history.js.map +1 -0
  33. package/build/esm/instrumentation/location.js.map +1 -0
  34. package/build/esm/{metrics/instrument.js → instrumentation/performanceObserver.js} +42 -30
  35. package/build/esm/instrumentation/performanceObserver.js.map +1 -0
  36. package/build/esm/instrumentation/xhr.js.map +1 -0
  37. package/build/esm/package.json +1 -1
  38. package/build/esm/{metrics → performance}/elementTiming.js +1 -1
  39. package/build/esm/performance/elementTiming.js.map +1 -0
  40. package/build/esm/{metrics/browserMetrics.js → performance/entries.js} +15 -166
  41. package/build/esm/performance/entries.js.map +1 -0
  42. package/build/esm/performance/resourceTiming.js.map +1 -0
  43. package/build/esm/{metrics → performance}/userTiming.js +4 -3
  44. package/build/esm/performance/userTiming.js.map +1 -0
  45. package/build/esm/{metrics → performance}/utils.js +3 -28
  46. package/build/esm/performance/utils.js.map +1 -0
  47. package/build/esm/{metrics → web-vitals}/inp.js +1 -1
  48. package/build/esm/web-vitals/inp.js.map +1 -0
  49. package/build/esm/web-vitals/lcp.js.map +1 -0
  50. package/build/esm/web-vitals/reportEvents.js +29 -0
  51. package/build/esm/web-vitals/reportEvents.js.map +1 -0
  52. package/build/esm/{metrics/webVitalSpans.js → web-vitals/spans.js} +7 -6
  53. package/build/esm/web-vitals/spans.js.map +1 -0
  54. package/build/esm/web-vitals/tracking.js +161 -0
  55. package/build/esm/web-vitals/tracking.js.map +1 -0
  56. package/build/esm/web-vitals/utils.js +91 -0
  57. package/build/esm/web-vitals/utils.js.map +1 -0
  58. package/build/types/index.d.ts +13 -12
  59. package/build/types/index.d.ts.map +1 -1
  60. package/build/types/instrumentation/dom.d.ts.map +1 -0
  61. package/build/types/instrumentation/history.d.ts.map +1 -0
  62. package/build/types/instrumentation/location.d.ts.map +1 -0
  63. package/build/types/{metrics/instrument.d.ts → instrumentation/performanceObserver.d.ts} +3 -3
  64. package/build/types/instrumentation/performanceObserver.d.ts.map +1 -0
  65. package/build/types/instrumentation/xhr.d.ts.map +1 -0
  66. package/build/types/performance/elementTiming.d.ts.map +1 -0
  67. package/build/types/{metrics/browserMetrics.d.ts → performance/entries.d.ts} +3 -46
  68. package/build/types/performance/entries.d.ts.map +1 -0
  69. package/build/types/performance/resourceTiming.d.ts.map +1 -0
  70. package/build/types/performance/userTiming.d.ts.map +1 -0
  71. package/build/types/{metrics → performance}/utils.d.ts +1 -17
  72. package/build/types/performance/utils.d.ts.map +1 -0
  73. package/build/types/web-vitals/inp.d.ts.map +1 -0
  74. package/build/types/web-vitals/lcp.d.ts.map +1 -0
  75. package/build/types/web-vitals/reportEvents.d.ts +18 -0
  76. package/build/types/web-vitals/reportEvents.d.ts.map +1 -0
  77. package/build/types/{metrics/webVitalSpans.d.ts → web-vitals/spans.d.ts} +3 -3
  78. package/build/types/web-vitals/spans.d.ts.map +1 -0
  79. package/build/types/web-vitals/tracking.d.ts +46 -0
  80. package/build/types/web-vitals/tracking.d.ts.map +1 -0
  81. package/build/types/{metrics/web-vitals/lib/globalListeners.d.ts → web-vitals/utils.d.ts} +16 -1
  82. package/build/types/web-vitals/utils.d.ts.map +1 -0
  83. package/package.json +4 -3
  84. package/build/cjs/instrument/dom.js.map +0 -1
  85. package/build/cjs/instrument/history.js.map +0 -1
  86. package/build/cjs/instrument/location.js.map +0 -1
  87. package/build/cjs/instrument/xhr.js.map +0 -1
  88. package/build/cjs/metrics/browserMetrics.js.map +0 -1
  89. package/build/cjs/metrics/elementTiming.js.map +0 -1
  90. package/build/cjs/metrics/inp.js.map +0 -1
  91. package/build/cjs/metrics/instrument.js.map +0 -1
  92. package/build/cjs/metrics/lcp.js.map +0 -1
  93. package/build/cjs/metrics/resourceTiming.js.map +0 -1
  94. package/build/cjs/metrics/userTiming.js.map +0 -1
  95. package/build/cjs/metrics/utils.js.map +0 -1
  96. package/build/cjs/metrics/web-vitals/getCLS.js +0 -46
  97. package/build/cjs/metrics/web-vitals/getCLS.js.map +0 -1
  98. package/build/cjs/metrics/web-vitals/getINP.js +0 -60
  99. package/build/cjs/metrics/web-vitals/getINP.js.map +0 -1
  100. package/build/cjs/metrics/web-vitals/getLCP.js +0 -62
  101. package/build/cjs/metrics/web-vitals/getLCP.js.map +0 -1
  102. package/build/cjs/metrics/web-vitals/lib/InteractionManager.js +0 -87
  103. package/build/cjs/metrics/web-vitals/lib/InteractionManager.js.map +0 -1
  104. package/build/cjs/metrics/web-vitals/lib/LCPEntryManager.js +0 -11
  105. package/build/cjs/metrics/web-vitals/lib/LCPEntryManager.js.map +0 -1
  106. package/build/cjs/metrics/web-vitals/lib/LayoutShiftManager.js +0 -27
  107. package/build/cjs/metrics/web-vitals/lib/LayoutShiftManager.js.map +0 -1
  108. package/build/cjs/metrics/web-vitals/lib/bindReporter.js +0 -31
  109. package/build/cjs/metrics/web-vitals/lib/bindReporter.js.map +0 -1
  110. package/build/cjs/metrics/web-vitals/lib/generateUniqueID.js +0 -8
  111. package/build/cjs/metrics/web-vitals/lib/generateUniqueID.js.map +0 -1
  112. package/build/cjs/metrics/web-vitals/lib/getActivationStart.js +0 -11
  113. package/build/cjs/metrics/web-vitals/lib/getActivationStart.js.map +0 -1
  114. package/build/cjs/metrics/web-vitals/lib/getNavigationEntry.js +0 -17
  115. package/build/cjs/metrics/web-vitals/lib/getNavigationEntry.js.map +0 -1
  116. package/build/cjs/metrics/web-vitals/lib/getVisibilityWatcher.js +0 -44
  117. package/build/cjs/metrics/web-vitals/lib/getVisibilityWatcher.js.map +0 -1
  118. package/build/cjs/metrics/web-vitals/lib/globalListeners.js +0 -18
  119. package/build/cjs/metrics/web-vitals/lib/globalListeners.js.map +0 -1
  120. package/build/cjs/metrics/web-vitals/lib/initMetric.js +0 -34
  121. package/build/cjs/metrics/web-vitals/lib/initMetric.js.map +0 -1
  122. package/build/cjs/metrics/web-vitals/lib/initUnique.js +0 -16
  123. package/build/cjs/metrics/web-vitals/lib/initUnique.js.map +0 -1
  124. package/build/cjs/metrics/web-vitals/lib/observe.js +0 -20
  125. package/build/cjs/metrics/web-vitals/lib/observe.js.map +0 -1
  126. package/build/cjs/metrics/web-vitals/lib/onHidden.js +0 -16
  127. package/build/cjs/metrics/web-vitals/lib/onHidden.js.map +0 -1
  128. package/build/cjs/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js +0 -32
  129. package/build/cjs/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js.map +0 -1
  130. package/build/cjs/metrics/web-vitals/lib/runOnce.js +0 -14
  131. package/build/cjs/metrics/web-vitals/lib/runOnce.js.map +0 -1
  132. package/build/cjs/metrics/web-vitals/lib/whenActivated.js +0 -14
  133. package/build/cjs/metrics/web-vitals/lib/whenActivated.js.map +0 -1
  134. package/build/cjs/metrics/web-vitals/lib/whenIdleOrHidden.js +0 -22
  135. package/build/cjs/metrics/web-vitals/lib/whenIdleOrHidden.js.map +0 -1
  136. package/build/cjs/metrics/web-vitals/onFCP.js +0 -37
  137. package/build/cjs/metrics/web-vitals/onFCP.js.map +0 -1
  138. package/build/cjs/metrics/web-vitals/onTTFB.js +0 -35
  139. package/build/cjs/metrics/web-vitals/onTTFB.js.map +0 -1
  140. package/build/cjs/metrics/webVitalSpans.js.map +0 -1
  141. package/build/esm/instrument/dom.js.map +0 -1
  142. package/build/esm/instrument/history.js.map +0 -1
  143. package/build/esm/instrument/location.js.map +0 -1
  144. package/build/esm/instrument/xhr.js.map +0 -1
  145. package/build/esm/metrics/browserMetrics.js.map +0 -1
  146. package/build/esm/metrics/elementTiming.js.map +0 -1
  147. package/build/esm/metrics/inp.js.map +0 -1
  148. package/build/esm/metrics/instrument.js.map +0 -1
  149. package/build/esm/metrics/lcp.js.map +0 -1
  150. package/build/esm/metrics/resourceTiming.js.map +0 -1
  151. package/build/esm/metrics/userTiming.js.map +0 -1
  152. package/build/esm/metrics/utils.js.map +0 -1
  153. package/build/esm/metrics/web-vitals/getCLS.js +0 -43
  154. package/build/esm/metrics/web-vitals/getCLS.js.map +0 -1
  155. package/build/esm/metrics/web-vitals/getINP.js +0 -57
  156. package/build/esm/metrics/web-vitals/getINP.js.map +0 -1
  157. package/build/esm/metrics/web-vitals/getLCP.js +0 -59
  158. package/build/esm/metrics/web-vitals/getLCP.js.map +0 -1
  159. package/build/esm/metrics/web-vitals/lib/InteractionManager.js +0 -85
  160. package/build/esm/metrics/web-vitals/lib/InteractionManager.js.map +0 -1
  161. package/build/esm/metrics/web-vitals/lib/LCPEntryManager.js +0 -9
  162. package/build/esm/metrics/web-vitals/lib/LCPEntryManager.js.map +0 -1
  163. package/build/esm/metrics/web-vitals/lib/LayoutShiftManager.js +0 -25
  164. package/build/esm/metrics/web-vitals/lib/LayoutShiftManager.js.map +0 -1
  165. package/build/esm/metrics/web-vitals/lib/bindReporter.js +0 -29
  166. package/build/esm/metrics/web-vitals/lib/bindReporter.js.map +0 -1
  167. package/build/esm/metrics/web-vitals/lib/generateUniqueID.js +0 -6
  168. package/build/esm/metrics/web-vitals/lib/generateUniqueID.js.map +0 -1
  169. package/build/esm/metrics/web-vitals/lib/getActivationStart.js +0 -9
  170. package/build/esm/metrics/web-vitals/lib/getActivationStart.js.map +0 -1
  171. package/build/esm/metrics/web-vitals/lib/getNavigationEntry.js +0 -15
  172. package/build/esm/metrics/web-vitals/lib/getNavigationEntry.js.map +0 -1
  173. package/build/esm/metrics/web-vitals/lib/getVisibilityWatcher.js +0 -42
  174. package/build/esm/metrics/web-vitals/lib/getVisibilityWatcher.js.map +0 -1
  175. package/build/esm/metrics/web-vitals/lib/globalListeners.js +0 -15
  176. package/build/esm/metrics/web-vitals/lib/globalListeners.js.map +0 -1
  177. package/build/esm/metrics/web-vitals/lib/initMetric.js +0 -32
  178. package/build/esm/metrics/web-vitals/lib/initMetric.js.map +0 -1
  179. package/build/esm/metrics/web-vitals/lib/initUnique.js +0 -14
  180. package/build/esm/metrics/web-vitals/lib/initUnique.js.map +0 -1
  181. package/build/esm/metrics/web-vitals/lib/observe.js +0 -18
  182. package/build/esm/metrics/web-vitals/lib/observe.js.map +0 -1
  183. package/build/esm/metrics/web-vitals/lib/onHidden.js +0 -14
  184. package/build/esm/metrics/web-vitals/lib/onHidden.js.map +0 -1
  185. package/build/esm/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js +0 -29
  186. package/build/esm/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js.map +0 -1
  187. package/build/esm/metrics/web-vitals/lib/runOnce.js +0 -12
  188. package/build/esm/metrics/web-vitals/lib/runOnce.js.map +0 -1
  189. package/build/esm/metrics/web-vitals/lib/whenActivated.js +0 -12
  190. package/build/esm/metrics/web-vitals/lib/whenActivated.js.map +0 -1
  191. package/build/esm/metrics/web-vitals/lib/whenIdleOrHidden.js +0 -20
  192. package/build/esm/metrics/web-vitals/lib/whenIdleOrHidden.js.map +0 -1
  193. package/build/esm/metrics/web-vitals/onFCP.js +0 -34
  194. package/build/esm/metrics/web-vitals/onFCP.js.map +0 -1
  195. package/build/esm/metrics/web-vitals/onTTFB.js +0 -32
  196. package/build/esm/metrics/web-vitals/onTTFB.js.map +0 -1
  197. package/build/esm/metrics/webVitalSpans.js.map +0 -1
  198. package/build/types/instrument/dom.d.ts.map +0 -1
  199. package/build/types/instrument/history.d.ts.map +0 -1
  200. package/build/types/instrument/location.d.ts.map +0 -1
  201. package/build/types/instrument/xhr.d.ts.map +0 -1
  202. package/build/types/metrics/browserMetrics.d.ts.map +0 -1
  203. package/build/types/metrics/elementTiming.d.ts.map +0 -1
  204. package/build/types/metrics/inp.d.ts.map +0 -1
  205. package/build/types/metrics/instrument.d.ts.map +0 -1
  206. package/build/types/metrics/lcp.d.ts.map +0 -1
  207. package/build/types/metrics/resourceTiming.d.ts.map +0 -1
  208. package/build/types/metrics/userTiming.d.ts.map +0 -1
  209. package/build/types/metrics/utils.d.ts.map +0 -1
  210. package/build/types/metrics/web-vitals/getCLS.d.ts +0 -26
  211. package/build/types/metrics/web-vitals/getCLS.d.ts.map +0 -1
  212. package/build/types/metrics/web-vitals/getINP.d.ts +0 -34
  213. package/build/types/metrics/web-vitals/getINP.d.ts.map +0 -1
  214. package/build/types/metrics/web-vitals/getLCP.d.ts +0 -16
  215. package/build/types/metrics/web-vitals/getLCP.d.ts.map +0 -1
  216. package/build/types/metrics/web-vitals/lib/InteractionManager.d.ts +0 -37
  217. package/build/types/metrics/web-vitals/lib/InteractionManager.d.ts.map +0 -1
  218. package/build/types/metrics/web-vitals/lib/LCPEntryManager.d.ts +0 -5
  219. package/build/types/metrics/web-vitals/lib/LCPEntryManager.d.ts.map +0 -1
  220. package/build/types/metrics/web-vitals/lib/LayoutShiftManager.d.ts +0 -7
  221. package/build/types/metrics/web-vitals/lib/LayoutShiftManager.d.ts.map +0 -1
  222. package/build/types/metrics/web-vitals/lib/bindReporter.d.ts +0 -7
  223. package/build/types/metrics/web-vitals/lib/bindReporter.d.ts.map +0 -1
  224. package/build/types/metrics/web-vitals/lib/generateUniqueID.d.ts +0 -7
  225. package/build/types/metrics/web-vitals/lib/generateUniqueID.d.ts.map +0 -1
  226. package/build/types/metrics/web-vitals/lib/getActivationStart.d.ts +0 -2
  227. package/build/types/metrics/web-vitals/lib/getActivationStart.d.ts.map +0 -1
  228. package/build/types/metrics/web-vitals/lib/getNavigationEntry.d.ts +0 -2
  229. package/build/types/metrics/web-vitals/lib/getNavigationEntry.d.ts.map +0 -1
  230. package/build/types/metrics/web-vitals/lib/getVisibilityWatcher.d.ts +0 -5
  231. package/build/types/metrics/web-vitals/lib/getVisibilityWatcher.d.ts.map +0 -1
  232. package/build/types/metrics/web-vitals/lib/globalListeners.d.ts.map +0 -1
  233. package/build/types/metrics/web-vitals/lib/initMetric.d.ts +0 -21
  234. package/build/types/metrics/web-vitals/lib/initMetric.d.ts.map +0 -1
  235. package/build/types/metrics/web-vitals/lib/initUnique.d.ts +0 -7
  236. package/build/types/metrics/web-vitals/lib/initUnique.d.ts.map +0 -1
  237. package/build/types/metrics/web-vitals/lib/observe.d.ts +0 -23
  238. package/build/types/metrics/web-vitals/lib/observe.d.ts.map +0 -1
  239. package/build/types/metrics/web-vitals/lib/onHidden.d.ts +0 -15
  240. package/build/types/metrics/web-vitals/lib/onHidden.d.ts.map +0 -1
  241. package/build/types/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.d.ts +0 -15
  242. package/build/types/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.d.ts.map +0 -1
  243. package/build/types/metrics/web-vitals/lib/runOnce.d.ts +0 -2
  244. package/build/types/metrics/web-vitals/lib/runOnce.d.ts.map +0 -1
  245. package/build/types/metrics/web-vitals/lib/whenActivated.d.ts +0 -2
  246. package/build/types/metrics/web-vitals/lib/whenActivated.d.ts.map +0 -1
  247. package/build/types/metrics/web-vitals/lib/whenIdleOrHidden.d.ts +0 -6
  248. package/build/types/metrics/web-vitals/lib/whenIdleOrHidden.d.ts.map +0 -1
  249. package/build/types/metrics/web-vitals/onFCP.d.ts +0 -11
  250. package/build/types/metrics/web-vitals/onFCP.d.ts.map +0 -1
  251. package/build/types/metrics/web-vitals/onTTFB.d.ts +0 -20
  252. package/build/types/metrics/web-vitals/onTTFB.d.ts.map +0 -1
  253. package/build/types/metrics/web-vitals/types/base.d.ts +0 -103
  254. package/build/types/metrics/web-vitals/types/base.d.ts.map +0 -1
  255. package/build/types/metrics/web-vitals/types/cls.d.ts +0 -58
  256. package/build/types/metrics/web-vitals/types/cls.d.ts.map +0 -1
  257. package/build/types/metrics/web-vitals/types/fcp.d.ts +0 -47
  258. package/build/types/metrics/web-vitals/types/fcp.d.ts.map +0 -1
  259. package/build/types/metrics/web-vitals/types/inp.d.ts +0 -150
  260. package/build/types/metrics/web-vitals/types/inp.d.ts.map +0 -1
  261. package/build/types/metrics/web-vitals/types/lcp.d.ts +0 -74
  262. package/build/types/metrics/web-vitals/types/lcp.d.ts.map +0 -1
  263. package/build/types/metrics/web-vitals/types/ttfb.d.ts +0 -60
  264. package/build/types/metrics/web-vitals/types/ttfb.d.ts.map +0 -1
  265. package/build/types/metrics/web-vitals/types.d.ts +0 -78
  266. package/build/types/metrics/web-vitals/types.d.ts.map +0 -1
  267. package/build/types/metrics/webVitalSpans.d.ts.map +0 -1
  268. /package/build/cjs/{instrument → instrumentation}/dom.js +0 -0
  269. /package/build/cjs/{instrument → instrumentation}/history.js +0 -0
  270. /package/build/cjs/{instrument → instrumentation}/location.js +0 -0
  271. /package/build/cjs/{instrument → instrumentation}/xhr.js +0 -0
  272. /package/build/cjs/{metrics → performance}/resourceTiming.js +0 -0
  273. /package/build/cjs/{metrics → web-vitals}/lcp.js +0 -0
  274. /package/build/esm/{instrument → instrumentation}/dom.js +0 -0
  275. /package/build/esm/{instrument → instrumentation}/history.js +0 -0
  276. /package/build/esm/{instrument → instrumentation}/location.js +0 -0
  277. /package/build/esm/{instrument → instrumentation}/xhr.js +0 -0
  278. /package/build/esm/{metrics → performance}/resourceTiming.js +0 -0
  279. /package/build/esm/{metrics → web-vitals}/lcp.js +0 -0
  280. /package/build/types/{instrument → instrumentation}/dom.d.ts +0 -0
  281. /package/build/types/{instrument → instrumentation}/history.d.ts +0 -0
  282. /package/build/types/{instrument → instrumentation}/location.d.ts +0 -0
  283. /package/build/types/{instrument → instrumentation}/xhr.d.ts +0 -0
  284. /package/build/types/{metrics → performance}/elementTiming.d.ts +0 -0
  285. /package/build/types/{metrics → performance}/resourceTiming.d.ts +0 -0
  286. /package/build/types/{metrics → performance}/userTiming.d.ts +0 -0
  287. /package/build/types/{metrics → web-vitals}/inp.d.ts +0 -0
  288. /package/build/types/{metrics → web-vitals}/lcp.d.ts +0 -0
@@ -1,42 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
- import { getActivationStart } from './getActivationStart.js';
3
- import { addPageListener, removePageListener } from './globalListeners.js';
4
-
5
- let firstHiddenTime = -1;
6
- const onHiddenFunctions = /* @__PURE__ */ new Set();
7
- const initHiddenTime = () => {
8
- return WINDOW.document?.visibilityState === "hidden" && !WINDOW.document?.prerendering ? 0 : Infinity;
9
- };
10
- const onVisibilityUpdate = (event) => {
11
- if (WINDOW.document?.visibilityState === "hidden" && firstHiddenTime > -1) {
12
- if (event.type === "visibilitychange") {
13
- for (const onHiddenFunction of onHiddenFunctions) {
14
- onHiddenFunction();
15
- }
16
- }
17
- if (!isFinite(firstHiddenTime)) {
18
- firstHiddenTime = event.type === "visibilitychange" ? event.timeStamp : 0;
19
- removePageListener("prerenderingchange", onVisibilityUpdate, true);
20
- }
21
- }
22
- };
23
- const getVisibilityWatcher = () => {
24
- if (WINDOW.document && firstHiddenTime < 0) {
25
- const activationStart = getActivationStart();
26
- const firstVisibilityStateHiddenTime = !WINDOW.document.prerendering ? globalThis.performance.getEntriesByType("visibility-state").filter((e) => e.name === "hidden" && e.startTime > activationStart)[0]?.startTime : void 0;
27
- firstHiddenTime = firstVisibilityStateHiddenTime ?? initHiddenTime();
28
- addPageListener("visibilitychange", onVisibilityUpdate, true);
29
- addPageListener("prerenderingchange", onVisibilityUpdate, true);
30
- }
31
- return {
32
- get firstHiddenTime() {
33
- return firstHiddenTime;
34
- },
35
- onHidden(cb) {
36
- onHiddenFunctions.add(cb);
37
- }
38
- };
39
- };
40
-
41
- export { getVisibilityWatcher };
42
- //# sourceMappingURL=getVisibilityWatcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getVisibilityWatcher.js","sources":["../../../../../src/metrics/web-vitals/lib/getVisibilityWatcher.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../../types';\nimport { getActivationStart } from './getActivationStart';\nimport { addPageListener, removePageListener } from './globalListeners';\n\nlet firstHiddenTime = -1;\nconst onHiddenFunctions: Set<() => void> = new Set();\n\nconst initHiddenTime = () => {\n // If the document is hidden when this code runs, assume it was always\n // hidden and the page was loaded in the background, with the one exception\n // that visibility state is always 'hidden' during prerendering, so we have\n // to ignore that case until prerendering finishes (see: `prerenderingchange`\n // event logic below).\n return WINDOW.document?.visibilityState === 'hidden' && !WINDOW.document?.prerendering ? 0 : Infinity;\n};\n\nconst onVisibilityUpdate = (event: Event) => {\n // Handle changes to hidden state\n if (WINDOW.document?.visibilityState === 'hidden' && firstHiddenTime > -1) {\n // Call onHidden callbacks when the page becomes hidden\n if (event.type === 'visibilitychange') {\n for (const onHiddenFunction of onHiddenFunctions) {\n onHiddenFunction();\n }\n }\n\n // If the document is 'hidden' and no previous hidden timestamp has been\n // set (so is infinity), update it based on the current event data.\n if (!isFinite(firstHiddenTime)) {\n // If the event is a 'visibilitychange' event, it means the page was\n // visible prior to this change, so the event timestamp is the first\n // hidden time.\n // However, if the event is not a 'visibilitychange' event, then it must\n // be a 'prerenderingchange' event, and the fact that the document is\n // still 'hidden' from the above check means the tab was activated\n // in a background state and so has always been hidden.\n firstHiddenTime = event.type === 'visibilitychange' ? event.timeStamp : 0;\n\n // We no longer need the `prerenderingchange` event listener now we've\n // set an initial init time so remove that\n // (we'll keep the visibilitychange one for onHiddenFunction above)\n removePageListener('prerenderingchange', onVisibilityUpdate, true);\n }\n }\n};\n\nexport const getVisibilityWatcher = () => {\n if (WINDOW.document && firstHiddenTime < 0) {\n // Check if we have a previous hidden `visibility-state` performance entry.\n const activationStart = getActivationStart();\n const firstVisibilityStateHiddenTime = !WINDOW.document.prerendering\n ? globalThis.performance\n .getEntriesByType('visibility-state')\n .filter(e => e.name === 'hidden' && e.startTime > activationStart)[0]?.startTime\n : undefined;\n\n // Prefer that, but if it's not available and the document is hidden when\n // this code runs, assume it was hidden since navigation start. This isn't\n // a perfect heuristic, but it's the best we can do until the\n // `visibility-state` performance entry becomes available in all browsers.\n firstHiddenTime = firstVisibilityStateHiddenTime ?? initHiddenTime();\n // Listen for visibility changes so we can handle things like bfcache\n // restores and/or prerender without having to examine individual\n // timestamps in detail and also for onHidden function calls.\n addPageListener('visibilitychange', onVisibilityUpdate, true);\n\n // IMPORTANT: when a page is prerendering, its `visibilityState` is\n // 'hidden', so in order to account for cases where this module checks for\n // visibility during prerendering, an additional check after prerendering\n // completes is also required.\n addPageListener('prerenderingchange', onVisibilityUpdate, true);\n }\n\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n onHidden(cb: () => void) {\n onHiddenFunctions.add(cb);\n },\n };\n};\n"],"names":[],"mappings":";;;;AAoBA,IAAI,eAAA,GAAkB,EAAA;AACtB,MAAM,iBAAA,uBAAyC,GAAA,EAAI;AAEnD,MAAM,iBAAiB,MAAM;AAM3B,EAAA,OAAO,MAAA,CAAO,UAAU,eAAA,KAAoB,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA,EAAU,eAAe,CAAA,GAAI,QAAA;AAC/F,CAAA;AAEA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAiB;AAE3C,EAAA,IAAI,MAAA,CAAO,QAAA,EAAU,eAAA,KAAoB,QAAA,IAAY,kBAAkB,EAAA,EAAI;AAEzE,IAAA,IAAI,KAAA,CAAM,SAAS,kBAAA,EAAoB;AACrC,MAAA,KAAA,MAAW,oBAAoB,iBAAA,EAAmB;AAChD,QAAA,gBAAA,EAAiB;AAAA,MACnB;AAAA,IACF;AAIA,IAAA,IAAI,CAAC,QAAA,CAAS,eAAe,CAAA,EAAG;AAQ9B,MAAA,eAAA,GAAkB,KAAA,CAAM,IAAA,KAAS,kBAAA,GAAqB,KAAA,CAAM,SAAA,GAAY,CAAA;AAKxE,MAAA,kBAAA,CAAmB,oBAAA,EAAsB,oBAAoB,IAAI,CAAA;AAAA,IACnE;AAAA,EACF;AACF,CAAA;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAA,IAAI,MAAA,CAAO,QAAA,IAAY,eAAA,GAAkB,CAAA,EAAG;AAE1C,IAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAC3C,IAAA,MAAM,8BAAA,GAAiC,CAAC,MAAA,CAAO,QAAA,CAAS,eACpD,UAAA,CAAW,WAAA,CACR,iBAAiB,kBAAkB,CAAA,CACnC,OAAO,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,QAAA,IAAY,CAAA,CAAE,YAAY,eAAe,CAAA,CAAE,CAAC,CAAA,EAAG,SAAA,GACzE,MAAA;AAMJ,IAAA,eAAA,GAAkB,kCAAkC,cAAA,EAAe;AAInE,IAAA,eAAA,CAAgB,kBAAA,EAAoB,oBAAoB,IAAI,CAAA;AAM5D,IAAA,eAAA,CAAgB,oBAAA,EAAsB,oBAAoB,IAAI,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO;AAAA,IACL,IAAI,eAAA,GAAkB;AACpB,MAAA,OAAO,eAAA;AAAA,IACT,CAAA;AAAA,IACA,SAAS,EAAA,EAAgB;AACvB,MAAA,iBAAA,CAAkB,IAAI,EAAE,CAAA;AAAA,IAC1B;AAAA,GACF;AACF;;;;"}
@@ -1,15 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
-
3
- function addPageListener(type, listener, options) {
4
- if (WINDOW.document) {
5
- WINDOW.addEventListener(type, listener, options);
6
- }
7
- }
8
- function removePageListener(type, listener, options) {
9
- if (WINDOW.document) {
10
- WINDOW.removeEventListener(type, listener, options);
11
- }
12
- }
13
-
14
- export { addPageListener, removePageListener };
15
- //# sourceMappingURL=globalListeners.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"globalListeners.js","sources":["../../../../../src/metrics/web-vitals/lib/globalListeners.ts"],"sourcesContent":["import { WINDOW } from '../../../types';\n\n/**\n * web-vitals 5.1.0 switched listeners to be added on the window rather than the document.\n * Instead of having to check for window/document every time we add a listener, we can use this function.\n */\nexport function addPageListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions) {\n if (WINDOW.document) {\n WINDOW.addEventListener(type, listener, options);\n }\n}\n/**\n * web-vitals 5.1.0 switched listeners to be removed from the window rather than the document.\n * Instead of having to check for window/document every time we remove a listener, we can use this function.\n */\nexport function removePageListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions) {\n if (WINDOW.document) {\n WINDOW.removeEventListener(type, listener, options);\n }\n}\n"],"names":[],"mappings":";;AAMO,SAAS,eAAA,CAAgB,IAAA,EAAc,QAAA,EAAyB,OAAA,EAA6C;AAClH,EAAA,IAAI,OAAO,QAAA,EAAU;AACnB,IAAA,MAAA,CAAO,gBAAA,CAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,EACjD;AACF;AAKO,SAAS,kBAAA,CAAmB,IAAA,EAAc,QAAA,EAAyB,OAAA,EAA6C;AACrH,EAAA,IAAI,OAAO,QAAA,EAAU;AACnB,IAAA,MAAA,CAAO,mBAAA,CAAoB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,EACpD;AACF;;;;"}
@@ -1,32 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
- import { generateUniqueID } from './generateUniqueID.js';
3
- import { getActivationStart } from './getActivationStart.js';
4
- import { getNavigationEntry } from './getNavigationEntry.js';
5
-
6
- const initMetric = (name, value = -1) => {
7
- const navEntry = getNavigationEntry();
8
- let navigationType = "navigate";
9
- if (navEntry) {
10
- if (WINDOW.document?.prerendering || getActivationStart() > 0) {
11
- navigationType = "prerender";
12
- } else if (WINDOW.document?.wasDiscarded) {
13
- navigationType = "restore";
14
- } else if (navEntry.type) {
15
- navigationType = navEntry.type.replace(/_/g, "-");
16
- }
17
- }
18
- const entries = [];
19
- return {
20
- name,
21
- value,
22
- rating: "good",
23
- // If needed, will be updated when reported. `const` to keep the type from widening to `string`.
24
- delta: 0,
25
- entries,
26
- id: generateUniqueID(),
27
- navigationType
28
- };
29
- };
30
-
31
- export { initMetric };
32
- //# sourceMappingURL=initMetric.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"initMetric.js","sources":["../../../../../src/metrics/web-vitals/lib/initMetric.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../../types';\nimport type { MetricType } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = <MetricName extends MetricType['name']>(name: MetricName, value: number = -1) => {\n const navEntry = getNavigationEntry();\n let navigationType: MetricType['navigationType'] = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document?.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else if (WINDOW.document?.wasDiscarded) {\n navigationType = 'restore';\n } else if (navEntry.type) {\n navigationType = navEntry.type.replace(/_/g, '-') as MetricType['navigationType'];\n }\n }\n\n // Use `entries` type specific for the metric.\n const entries: Extract<MetricType, { name: MetricName }>['entries'] = [];\n\n return {\n name,\n value,\n rating: 'good' as const, // If needed, will be updated when reported. `const` to keep the type from widening to `string`.\n delta: 0,\n entries,\n id: generateUniqueID(),\n navigationType,\n };\n};\n"],"names":[],"mappings":";;;;;AAsBO,MAAM,UAAA,GAAa,CAAwC,IAAA,EAAkB,KAAA,GAAgB,EAAA,KAAO;AACzG,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,IAAI,cAAA,GAA+C,UAAA;AAEnD,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,YAAA,IAAgB,kBAAA,KAAuB,CAAA,EAAG;AAC7D,MAAA,cAAA,GAAiB,WAAA;AAAA,IACnB,CAAA,MAAA,IAAW,MAAA,CAAO,QAAA,EAAU,YAAA,EAAc;AACxC,MAAA,cAAA,GAAiB,SAAA;AAAA,IACnB,CAAA,MAAA,IAAW,SAAS,IAAA,EAAM;AACxB,MAAA,cAAA,GAAiB,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAAA,IAClD;AAAA,EACF;AAGA,EAAA,MAAM,UAAgE,EAAC;AAEvE,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA,EAAQ,MAAA;AAAA;AAAA,IACR,KAAA,EAAO,CAAA;AAAA,IACP,OAAA;AAAA,IACA,IAAI,gBAAA,EAAiB;AAAA,IACrB;AAAA,GACF;AACF;;;;"}
@@ -1,14 +0,0 @@
1
- const instanceMap = /* @__PURE__ */ new WeakMap();
2
- function initUnique(identityObj, ClassObj) {
3
- try {
4
- if (!instanceMap.get(identityObj)) {
5
- instanceMap.set(identityObj, new ClassObj());
6
- }
7
- return instanceMap.get(identityObj);
8
- } catch {
9
- return new ClassObj();
10
- }
11
- }
12
-
13
- export { initUnique };
14
- //# sourceMappingURL=initUnique.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"initUnique.js","sources":["../../../../../src/metrics/web-vitals/lib/initUnique.ts"],"sourcesContent":["/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst instanceMap: WeakMap<object, unknown> = new WeakMap();\n\n/**\n * A function that accepts and identity object and a class object and returns\n * either a new instance of that class or an existing instance, if the\n * identity object was previously used.\n */\nexport function initUnique<T>(identityObj: object, ClassObj: new () => T): T {\n try {\n if (!instanceMap.get(identityObj)) {\n instanceMap.set(identityObj, new ClassObj());\n }\n return instanceMap.get(identityObj)! as T;\n } catch {\n // --- START Sentry-custom code (try/catch wrapping) ---\n // Fix for cases where identityObj is not a valid key for WeakMap (sometimes a problem in Safari)\n // Just return a new instance without caching it in instanceMap\n return new ClassObj();\n }\n // --- END Sentry-custom code ---\n}\n"],"names":[],"mappings":"AAgBA,MAAM,WAAA,uBAA4C,OAAA,EAAQ;AAOnD,SAAS,UAAA,CAAc,aAAqB,QAAA,EAA0B;AAC3E,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,WAAA,CAAY,GAAA,CAAI,WAAW,CAAA,EAAG;AACjC,MAAA,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,IAAI,QAAA,EAAU,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,WAAA,CAAY,IAAI,WAAW,CAAA;AAAA,EACpC,CAAA,CAAA,MAAQ;AAIN,IAAA,OAAO,IAAI,QAAA,EAAS;AAAA,EACtB;AAEF;;;;"}
@@ -1,18 +0,0 @@
1
- const observe = (type, callback, opts = {}) => {
2
- try {
3
- if (PerformanceObserver.supportedEntryTypes.includes(type)) {
4
- const po = new PerformanceObserver((list) => {
5
- Promise.resolve().then(() => {
6
- callback(list.getEntries());
7
- });
8
- });
9
- po.observe({ type, buffered: true, ...opts });
10
- return po;
11
- }
12
- } catch {
13
- }
14
- return;
15
- };
16
-
17
- export { observe };
18
- //# sourceMappingURL=observe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observe.js","sources":["../../../../../src/metrics/web-vitals/lib/observe.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n 'first-input': PerformanceEventTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'long-animation-frame': PerformanceLongAnimationFrameTiming[];\n paint: PerformancePaintTiming[];\n navigation: PerformanceNavigationTiming[];\n resource: PerformanceResourceTiming[];\n // Sentry-specific change:\n // We add longtask as a supported entry type as we use this in\n // our `instrumentPerformanceObserver` function also observes 'longtask'\n // entries.\n longtask: PerformanceEntry[];\n // Sentry-specific change:\n // We add element as a supported entry type for ElementTiming API\n element: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = <K extends keyof PerformanceEntryMap>(\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts: PerformanceObserverInit = {},\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n // Delay by a microtask to workaround a bug in Safari where the\n // callback is invoked immediately, rather than in a separate task.\n // See: https://github.com/GoogleChrome/web-vitals/issues/277\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Promise.resolve().then(() => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n });\n po.observe({ type, buffered: true, ...opts });\n return po;\n }\n } catch {\n // Do nothing.\n }\n return;\n};\n"],"names":[],"mappings":"AA2CO,MAAM,UAAU,CACrB,IAAA,EACA,QAAA,EACA,IAAA,GAAgC,EAAC,KACG;AACpC,EAAA,IAAI;AACF,IAAA,IAAI,mBAAA,CAAoB,mBAAA,CAAoB,QAAA,CAAS,IAAI,CAAA,EAAG;AAC1D,MAAA,MAAM,EAAA,GAAK,IAAI,mBAAA,CAAoB,CAAA,IAAA,KAAQ;AAKzC,QAAA,OAAA,CAAQ,OAAA,EAAQ,CAAE,IAAA,CAAK,MAAM;AAC3B,UAAA,QAAA,CAAS,IAAA,CAAK,YAAsC,CAAA;AAAA,QACtD,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AACD,MAAA,EAAA,CAAG,QAAQ,EAAE,IAAA,EAAM,UAAU,IAAA,EAAM,GAAG,MAAM,CAAA;AAC5C,MAAA,OAAO,EAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA;AACF;;;;"}
@@ -1,14 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
- import { addPageListener } from './globalListeners.js';
3
-
4
- const onHidden = (cb) => {
5
- const onHiddenCallback = (event) => {
6
- if (WINDOW.document?.visibilityState === "hidden") {
7
- cb(event);
8
- }
9
- };
10
- addPageListener("visibilitychange", onHiddenCallback, { capture: true });
11
- };
12
-
13
- export { onHidden };
14
- //# sourceMappingURL=onHidden.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onHidden.js","sources":["../../../../../src/metrics/web-vitals/lib/onHidden.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../../types';\nimport { addPageListener } from './globalListeners';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\n/**\n * Calls the passed callback when the page transitions to hidden.\n *\n * Uses the `visibilitychange` event exclusively, which is well-supported\n * across all modern browsers.\n *\n * @param {OnHiddenCallback} cb - Callback to be executed when the page is hidden.\n *\n * @deprecated use `whenIdleOrHidden` or `addPageListener('visibilitychange')` instead\n */\nexport const onHidden = (cb: OnHiddenCallback) => {\n const onHiddenCallback = (event: Event) => {\n if (WINDOW.document?.visibilityState === 'hidden') {\n cb(event);\n }\n };\n\n addPageListener('visibilitychange', onHiddenCallback, { capture: true });\n};\n"],"names":[],"mappings":";;;AAiCO,MAAM,QAAA,GAAW,CAAC,EAAA,KAAyB;AAChD,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAiB;AACzC,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,eAAA,KAAoB,QAAA,EAAU;AACjD,MAAA,EAAA,CAAG,KAAK,CAAA;AAAA,IACV;AAAA,EACF,CAAA;AAEA,EAAA,eAAA,CAAgB,kBAAA,EAAoB,gBAAA,EAAkB,EAAE,OAAA,EAAS,MAAM,CAAA;AACzE;;;;"}
@@ -1,29 +0,0 @@
1
- import { observe } from '../observe.js';
2
-
3
- let interactionCountEstimate = 0;
4
- let minKnownInteractionId = Infinity;
5
- let maxKnownInteractionId = 0;
6
- const updateEstimate = (entries) => {
7
- entries.forEach((e) => {
8
- if (e.interactionId) {
9
- minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);
10
- maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);
11
- interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;
12
- }
13
- });
14
- };
15
- let po;
16
- const getInteractionCount = () => {
17
- return po ? interactionCountEstimate : performance.interactionCount || 0;
18
- };
19
- const initInteractionCountPolyfill = () => {
20
- if ("interactionCount" in performance || po) return;
21
- po = observe("event", updateEstimate, {
22
- type: "event",
23
- buffered: true,
24
- durationThreshold: 0
25
- });
26
- };
27
-
28
- export { getInteractionCount, initInteractionCountPolyfill };
29
- //# sourceMappingURL=interactionCountPolyfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactionCountPolyfill.js","sources":["../../../../../../src/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.ts"],"sourcesContent":["/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { observe } from '../observe';\n\ndeclare global {\n interface Performance {\n readonly interactionCount: number;\n }\n}\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries: PerformanceEventTiming[]) => {\n entries.forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po: PerformanceObserver | undefined;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = (): number => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nexport const initInteractionCountPolyfill = (): void => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n });\n};\n"],"names":[],"mappings":";;AAwBA,IAAI,wBAAA,GAA2B,CAAA;AAC/B,IAAI,qBAAA,GAAwB,QAAA;AAC5B,IAAI,qBAAA,GAAwB,CAAA;AAE5B,MAAM,cAAA,GAAiB,CAAC,OAAA,KAAsC;AAC5D,EAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,KAAK;AACnB,IAAA,IAAI,EAAE,aAAA,EAAe;AACnB,MAAA,qBAAA,GAAwB,IAAA,CAAK,GAAA,CAAI,qBAAA,EAAuB,CAAA,CAAE,aAAa,CAAA;AACvE,MAAA,qBAAA,GAAwB,IAAA,CAAK,GAAA,CAAI,qBAAA,EAAuB,CAAA,CAAE,aAAa,CAAA;AAEvE,MAAA,wBAAA,GAA2B,qBAAA,GAAA,CAAyB,qBAAA,GAAwB,qBAAA,IAAyB,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,IAC/G;AAAA,EACF,CAAC,CAAA;AACH,CAAA;AAEA,IAAI,EAAA;AAMG,MAAM,sBAAsB,MAAc;AAC/C,EAAA,OAAO,EAAA,GAAK,wBAAA,GAA2B,WAAA,CAAY,gBAAA,IAAoB,CAAA;AACzE;AAKO,MAAM,+BAA+B,MAAY;AACtD,EAAA,IAAI,kBAAA,IAAsB,eAAe,EAAA,EAAI;AAE7C,EAAA,EAAA,GAAK,OAAA,CAAQ,SAAS,cAAA,EAAgB;AAAA,IACpC,IAAA,EAAM,OAAA;AAAA,IACN,QAAA,EAAU,IAAA;AAAA,IACV,iBAAA,EAAmB;AAAA,GACpB,CAAA;AACH;;;;"}
@@ -1,12 +0,0 @@
1
- const runOnce = (cb) => {
2
- let called = false;
3
- return () => {
4
- if (!called) {
5
- cb();
6
- called = true;
7
- }
8
- };
9
- };
10
-
11
- export { runOnce };
12
- //# sourceMappingURL=runOnce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runOnce.js","sources":["../../../../../src/metrics/web-vitals/lib/runOnce.ts"],"sourcesContent":["/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const runOnce = (cb: () => void) => {\n let called = false;\n return () => {\n if (!called) {\n cb();\n called = true;\n }\n };\n};\n"],"names":[],"mappings":"AAgBO,MAAM,OAAA,GAAU,CAAC,EAAA,KAAmB;AACzC,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,EAAA,EAAG;AACH,MAAA,MAAA,GAAS,IAAA;AAAA,IACX;AAAA,EACF,CAAA;AACF;;;;"}
@@ -1,12 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
-
3
- const whenActivated = (callback) => {
4
- if (WINDOW.document?.prerendering) {
5
- addEventListener("prerenderingchange", () => callback(), true);
6
- } else {
7
- callback();
8
- }
9
- };
10
-
11
- export { whenActivated };
12
- //# sourceMappingURL=whenActivated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whenActivated.js","sources":["../../../../../src/metrics/web-vitals/lib/whenActivated.ts"],"sourcesContent":["/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../../types';\n\nexport const whenActivated = (callback: () => void) => {\n if (WINDOW.document?.prerendering) {\n addEventListener('prerenderingchange', () => callback(), true);\n } else {\n callback();\n }\n};\n"],"names":[],"mappings":";;AAkBO,MAAM,aAAA,GAAgB,CAAC,QAAA,KAAyB;AACrD,EAAA,IAAI,MAAA,CAAO,UAAU,YAAA,EAAc;AACjC,IAAA,gBAAA,CAAiB,oBAAA,EAAsB,MAAM,QAAA,EAAS,EAAG,IAAI,CAAA;AAAA,EAC/D,CAAA,MAAO;AACL,IAAA,QAAA,EAAS;AAAA,EACX;AACF;;;;"}
@@ -1,20 +0,0 @@
1
- import { WINDOW } from '../../../types.js';
2
- import { addPageListener, removePageListener } from './globalListeners.js';
3
- import { runOnce } from './runOnce.js';
4
-
5
- const whenIdleOrHidden = (cb) => {
6
- const rIC = WINDOW.requestIdleCallback || WINDOW.setTimeout;
7
- if (WINDOW.document?.visibilityState === "hidden") {
8
- cb();
9
- } else {
10
- cb = runOnce(cb);
11
- addPageListener("visibilitychange", cb, { once: true, capture: true });
12
- rIC(() => {
13
- cb();
14
- removePageListener("visibilitychange", cb, { capture: true });
15
- });
16
- }
17
- };
18
-
19
- export { whenIdleOrHidden };
20
- //# sourceMappingURL=whenIdleOrHidden.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whenIdleOrHidden.js","sources":["../../../../../src/metrics/web-vitals/lib/whenIdleOrHidden.ts"],"sourcesContent":["/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../../types.js';\nimport { addPageListener, removePageListener } from './globalListeners.js';\nimport { runOnce } from './runOnce.js';\n\n/**\n * Runs the passed callback during the next idle period, or immediately\n * if the browser's visibility state is (or becomes) hidden.\n */\nexport const whenIdleOrHidden = (cb: () => void) => {\n const rIC = WINDOW.requestIdleCallback || WINDOW.setTimeout;\n\n // If the document is hidden, run the callback immediately, otherwise\n // race an idle callback with the next `visibilitychange` event.\n if (WINDOW.document?.visibilityState === 'hidden') {\n cb();\n } else {\n // eslint-disable-next-line no-param-reassign\n cb = runOnce(cb);\n addPageListener('visibilitychange', cb, { once: true, capture: true });\n rIC(() => {\n cb();\n // Remove the above event listener since no longer required.\n // See: https://github.com/GoogleChrome/web-vitals/issues/622\n removePageListener('visibilitychange', cb, { capture: true });\n });\n }\n};\n"],"names":[],"mappings":";;;;AAwBO,MAAM,gBAAA,GAAmB,CAAC,EAAA,KAAmB;AAClD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,mBAAA,IAAuB,MAAA,CAAO,UAAA;AAIjD,EAAA,IAAI,MAAA,CAAO,QAAA,EAAU,eAAA,KAAoB,QAAA,EAAU;AACjD,IAAA,EAAA,EAAG;AAAA,EACL,CAAA,MAAO;AAEL,IAAA,EAAA,GAAK,QAAQ,EAAE,CAAA;AACf,IAAA,eAAA,CAAgB,oBAAoB,EAAA,EAAI,EAAE,MAAM,IAAA,EAAM,OAAA,EAAS,MAAM,CAAA;AACrE,IAAA,GAAA,CAAI,MAAM;AACR,MAAA,EAAA,EAAG;AAGH,MAAA,kBAAA,CAAmB,kBAAA,EAAoB,EAAA,EAAI,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,IAC9D,CAAC,CAAA;AAAA,EACH;AACF;;;;"}
@@ -1,34 +0,0 @@
1
- import { bindReporter } from './lib/bindReporter.js';
2
- import { getActivationStart } from './lib/getActivationStart.js';
3
- import { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';
4
- import { initMetric } from './lib/initMetric.js';
5
- import { observe } from './lib/observe.js';
6
- import { whenActivated } from './lib/whenActivated.js';
7
-
8
- const FCPThresholds = [1800, 3e3];
9
- const onFCP = (onReport, opts = {}) => {
10
- whenActivated(() => {
11
- const visibilityWatcher = getVisibilityWatcher();
12
- const metric = initMetric("FCP");
13
- let report;
14
- const handleEntries = (entries) => {
15
- for (const entry of entries) {
16
- if (entry.name === "first-contentful-paint") {
17
- po.disconnect();
18
- if (entry.startTime < visibilityWatcher.firstHiddenTime) {
19
- metric.value = Math.max(entry.startTime - getActivationStart(), 0);
20
- metric.entries.push(entry);
21
- report(true);
22
- }
23
- }
24
- }
25
- };
26
- const po = observe("paint", handleEntries);
27
- if (po) {
28
- report = bindReporter(onReport, metric, FCPThresholds, opts.reportAllChanges);
29
- }
30
- });
31
- };
32
-
33
- export { FCPThresholds, onFCP };
34
- //# sourceMappingURL=onFCP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onFCP.js","sources":["../../../../src/metrics/web-vitals/onFCP.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { whenActivated } from './lib/whenActivated';\nimport type { FCPMetric, MetricRatingThresholds, ReportOpts } from './types';\n\n/** Thresholds for FCP. See https://web.dev/articles/fcp#what_is_a_good_fcp_score */\nexport const FCPThresholds: MetricRatingThresholds = [1800, 3000];\n\n/**\n * Calculates the [FCP](https://web.dev/articles/fcp) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `paint` performance entry used to determine the value. The reported\n * value is a `DOMHighResTimeStamp`.\n */\nexport const onFCP = (onReport: (metric: FCPMetric) => void, opts: ReportOpts = {}) => {\n whenActivated(() => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FCP');\n let report: ReturnType<typeof bindReporter>;\n\n const handleEntries = (entries: FCPMetric['entries']) => {\n for (const entry of entries) {\n if (entry.name === 'first-contentful-paint') {\n po!.disconnect();\n\n // Only report if the page wasn't hidden prior to the first paint.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n // The activationStart reference is used because FCP should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the FCP, this time should be clamped at 0.\n metric.value = Math.max(entry.startTime - getActivationStart(), 0);\n metric.entries.push(entry);\n report(true);\n }\n }\n }\n };\n\n const po = observe('paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric, FCPThresholds, opts.reportAllChanges);\n }\n });\n};\n"],"names":[],"mappings":";;;;;;;AAyBO,MAAM,aAAA,GAAwC,CAAC,IAAA,EAAM,GAAI;AAQzD,MAAM,KAAA,GAAQ,CAAC,QAAA,EAAuC,IAAA,GAAmB,EAAC,KAAM;AACrF,EAAA,aAAA,CAAc,MAAM;AAClB,IAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAC/C,IAAA,MAAM,MAAA,GAAS,WAAW,KAAK,CAAA;AAC/B,IAAA,IAAI,MAAA;AAEJ,IAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAkC;AACvD,MAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,QAAA,IAAI,KAAA,CAAM,SAAS,wBAAA,EAA0B;AAC3C,UAAA,EAAA,CAAI,UAAA,EAAW;AAGf,UAAA,IAAI,KAAA,CAAM,SAAA,GAAY,iBAAA,CAAkB,eAAA,EAAiB;AAKvD,YAAA,MAAA,CAAO,QAAQ,IAAA,CAAK,GAAA,CAAI,MAAM,SAAA,GAAY,kBAAA,IAAsB,CAAC,CAAA;AACjE,YAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,KAAK,CAAA;AACzB,YAAA,MAAA,CAAO,IAAI,CAAA;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,OAAA,EAAS,aAAa,CAAA;AAEzC,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,MAAA,GAAS,YAAA,CAAa,QAAA,EAAU,MAAA,EAAQ,aAAA,EAAe,KAAK,gBAAgB,CAAA;AAAA,IAC9E;AAAA,EACF,CAAC,CAAA;AACH;;;;"}
@@ -1,32 +0,0 @@
1
- import { WINDOW } from '../../types.js';
2
- import { bindReporter } from './lib/bindReporter.js';
3
- import { getActivationStart } from './lib/getActivationStart.js';
4
- import { getNavigationEntry } from './lib/getNavigationEntry.js';
5
- import { initMetric } from './lib/initMetric.js';
6
- import { whenActivated } from './lib/whenActivated.js';
7
-
8
- const TTFBThresholds = [800, 1800];
9
- const whenReady = (callback) => {
10
- if (WINDOW.document?.prerendering) {
11
- whenActivated(() => whenReady(callback));
12
- } else if (WINDOW.document?.readyState !== "complete") {
13
- addEventListener("load", () => whenReady(callback), true);
14
- } else {
15
- setTimeout(callback);
16
- }
17
- };
18
- const onTTFB = (onReport, opts = {}) => {
19
- const metric = initMetric("TTFB");
20
- const report = bindReporter(onReport, metric, TTFBThresholds, opts.reportAllChanges);
21
- whenReady(() => {
22
- const navigationEntry = getNavigationEntry();
23
- if (navigationEntry) {
24
- metric.value = Math.max(navigationEntry.responseStart - getActivationStart(), 0);
25
- metric.entries = [navigationEntry];
26
- report(true);
27
- }
28
- });
29
- };
30
-
31
- export { TTFBThresholds, onTTFB };
32
- //# sourceMappingURL=onTTFB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onTTFB.js","sources":["../../../../src/metrics/web-vitals/onTTFB.ts"],"sourcesContent":["/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getNavigationEntry } from './lib/getNavigationEntry';\nimport { initMetric } from './lib/initMetric';\nimport { whenActivated } from './lib/whenActivated';\nimport type { MetricRatingThresholds, ReportOpts, TTFBMetric } from './types';\n\n/** Thresholds for TTFB. See https://web.dev/articles/ttfb#what_is_a_good_ttfb_score */\nexport const TTFBThresholds: MetricRatingThresholds = [800, 1800];\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback: () => void) => {\n if (WINDOW.document?.prerendering) {\n whenActivated(() => whenReady(callback));\n } else if (WINDOW.document?.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/articles/ttfb) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nexport const onTTFB = (onReport: (metric: TTFBMetric) => void, opts: ReportOpts = {}) => {\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, TTFBThresholds, opts.reportAllChanges);\n\n whenReady(() => {\n const navigationEntry = getNavigationEntry();\n\n if (navigationEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navigationEntry.responseStart - getActivationStart(), 0);\n\n metric.entries = [navigationEntry];\n report(true);\n }\n });\n};\n"],"names":[],"mappings":";;;;;;;AAyBO,MAAM,cAAA,GAAyC,CAAC,GAAA,EAAK,IAAI;AAMhE,MAAM,SAAA,GAAY,CAAC,QAAA,KAAyB;AAC1C,EAAA,IAAI,MAAA,CAAO,UAAU,YAAA,EAAc;AACjC,IAAA,aAAA,CAAc,MAAM,SAAA,CAAU,QAAQ,CAAC,CAAA;AAAA,EACzC,CAAA,MAAA,IAAW,MAAA,CAAO,QAAA,EAAU,UAAA,KAAe,UAAA,EAAY;AACrD,IAAA,gBAAA,CAAiB,MAAA,EAAQ,MAAM,SAAA,CAAU,QAAQ,GAAG,IAAI,CAAA;AAAA,EAC1D,CAAA,MAAO;AAEL,IAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,EACrB;AACF,CAAA;AAiBO,MAAM,MAAA,GAAS,CAAC,QAAA,EAAwC,IAAA,GAAmB,EAAC,KAAM;AACvF,EAAA,MAAM,MAAA,GAAS,WAAW,MAAM,CAAA;AAChC,EAAA,MAAM,SAAS,YAAA,CAAa,QAAA,EAAU,MAAA,EAAQ,cAAA,EAAgB,KAAK,gBAAgB,CAAA;AAEnF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,kBAAkB,kBAAA,EAAmB;AAE3C,IAAA,IAAI,eAAA,EAAiB;AAKnB,MAAA,MAAA,CAAO,QAAQ,IAAA,CAAK,GAAA,CAAI,gBAAgB,aAAA,GAAgB,kBAAA,IAAsB,CAAC,CAAA;AAE/E,MAAA,MAAA,CAAO,OAAA,GAAU,CAAC,eAAe,CAAA;AACjC,MAAA,MAAA,CAAO,IAAI,CAAA;AAAA,IACb;AAAA,EACF,CAAC,CAAA;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webVitalSpans.js","sources":["../../../src/metrics/webVitalSpans.ts"],"sourcesContent":["import type { Client, Integration, Span, SpanAttributes } from '@sentry/core';\nimport {\n browserPerformanceTimeOrigin,\n debug,\n getActiveSpan,\n getClient,\n getCurrentScope,\n getRootSpan,\n hasSpanStreamingEnabled,\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n spanToStreamedSpanJSON,\n startInactiveSpan,\n timestampInSeconds,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { htmlTreeAsString } from '../htmlTreeAsString';\nimport { WINDOW } from '../types';\nimport { getCachedInteractionContext, INP_ENTRY_MAP, MAX_PLAUSIBLE_INP_DURATION } from './inp';\nimport type { InstrumentationHandlerCallback } from './instrument';\nimport { addClsInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler } from './instrument';\nimport { isValidLcpMetric } from './lcp';\nimport type { WebVitalReportEvent } from './utils';\nimport { getBrowserPerformanceAPI, listenForWebVitalReportEvents, msToSec, supportsWebVital } from './utils';\nimport type { PerformanceEventTiming } from './instrument';\nimport { SENTRY_SEGMENT_NAME, SENTRY_TRANSACTION } from '@sentry/conventions/attributes';\n\n// Locally-defined interfaces to avoid leaking bare global type references into the\n// generated .d.ts. The `declare global` augmentations in web-vitals/types.ts make these\n// available during this package's compilation but are NOT carried to consumers.\n// This mirrors the pattern used for PerformanceEventTiming in instrument.ts.\nexport interface LayoutShift extends PerformanceEntry {\n value: number;\n sources: Array<{ node: Node | null }>;\n hadRecentInput: boolean;\n}\n\nexport interface LargestContentfulPaint extends PerformanceEntry {\n readonly renderTime: DOMHighResTimeStamp;\n readonly loadTime: DOMHighResTimeStamp;\n readonly size: number;\n readonly id: string;\n readonly url: string;\n readonly element: Element | null;\n}\n\ninterface WebVitalSpanOptions {\n name: string;\n op: string;\n origin: string;\n metricName: 'lcp' | 'cls' | 'inp';\n value: number;\n attributes?: SpanAttributes;\n parentSpan?: Span;\n reportEvent?: WebVitalReportEvent;\n startTime: number;\n endTime?: number;\n /**\n * When `true`, the span is sent on its own as a v2 streamed span instead of being folded into a\n * transaction. Used for INP when span streaming is disabled (it reports late, so it can't ride\n * the pageload transaction).\n *\n * TODO(standalone): remove once the static (transaction) trace lifecycle is dropped and INP always streams.\n */\n standalone?: boolean;\n}\n\n/**\n * Emits a web vital span. When `standalone` is set it is sent on its own as a v2 streamed span;\n * otherwise it flows through the span streaming pipeline as a child of `parentSpan`.\n */\nexport function _emitWebVitalSpan(options: WebVitalSpanOptions): void {\n const {\n name,\n op,\n origin,\n metricName,\n value,\n attributes: passedAttributes,\n parentSpan,\n reportEvent,\n startTime,\n endTime,\n standalone,\n } = options;\n\n const routeName = getCurrentScope().getScopeData().transactionName;\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: 0,\n [`browser.web_vital.${metricName}.value`]: value,\n // oxlint-disable-next-line typescript-eslint/no-deprecated\n [SENTRY_TRANSACTION]: routeName,\n [SENTRY_SEGMENT_NAME]: routeName,\n // Web vital score calculation relies on the user agent\n 'user_agent.original': WINDOW.navigator?.userAgent,\n ...passedAttributes,\n };\n\n if (parentSpan && spanToStreamedSpanJSON(parentSpan).attributes?.[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'pageload') {\n // for LCP and CLS, we collect the pageload span id as an attribute\n attributes['sentry.pageload.span_id'] = parentSpan.spanContext().spanId;\n }\n\n if (reportEvent) {\n attributes[`browser.web_vital.${metricName}.report_event`] = reportEvent;\n }\n\n // A standalone span is sent as a plain v2 span without running the `processSpan` hooks (see\n // `captureStandaloneSpanWithStaticCallback`), so Replay can't attach the replay id itself. Set it\n // here, mirroring Replay's `processSpan`, so INP keeps its replay association like it did on v1.\n // TODO(standalone): remove once the static (transaction) trace lifecycle is dropped and INP always\n // streams, at which point Replay's `processSpan` runs and attaches the replay id.\n if (standalone) {\n Object.assign(attributes, getReplayAttributes());\n }\n\n const span = startInactiveSpan({\n name,\n attributes,\n startTime,\n parentSpan,\n // oxlint-disable-next-line typescript/no-deprecated -- intentional during the v1/v2 transition; see the TODO(standalone) above\n experimental: standalone ? { standalone: true } : undefined,\n });\n\n if (span) {\n span.end(endTime ?? startTime);\n }\n}\n\ninterface ReplayIntegration extends Integration {\n getReplayId: (onlyIfSampled?: boolean) => string | undefined;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n}\n\n// TODO(standalone): remove once the static (transaction) trace lifecycle is dropped; Replay's\n// `processSpan` then attaches the replay id to the streamed INP span instead.\nfunction getReplayAttributes(): SpanAttributes {\n const replay = getClient()?.getIntegrationByName<ReplayIntegration>('Replay');\n const replayId = replay?.getReplayId(true);\n if (!replayId) {\n return {};\n }\n\n return {\n 'sentry.replay_id': replayId,\n 'sentry._internal.replay_is_buffering': replay!.getRecordingMode() === 'buffer' ? true : undefined,\n };\n}\n\n/**\n * Tracks LCP as a streamed span.\n */\nexport function trackLcpAsSpan(client: Client): void {\n let lcpValue = 0;\n let lcpEntry: LargestContentfulPaint | undefined;\n\n if (!supportsWebVital('largest-contentful-paint')) {\n return;\n }\n\n const cleanupLcpHandler = addLcpInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1] as LargestContentfulPaint | undefined;\n if (!entry || !isValidLcpMetric(metric.value)) {\n return;\n }\n lcpValue = metric.value;\n lcpEntry = entry;\n }, true);\n\n listenForWebVitalReportEvents(client, (reportEvent, _, pageloadSpan) => {\n _sendLcpSpan(lcpValue, lcpEntry, pageloadSpan, reportEvent);\n cleanupLcpHandler();\n });\n}\n\n/**\n * Exported only for testing.\n */\nexport function _sendLcpSpan(\n lcpValue: number,\n entry: LargestContentfulPaint | undefined,\n pageloadSpan?: Span,\n reportEvent?: WebVitalReportEvent,\n): void {\n if (!isValidLcpMetric(lcpValue)) {\n return;\n }\n\n DEBUG_BUILD && debug.log(`Sending LCP span (${lcpValue})`);\n\n const performanceTimeOrigin = browserPerformanceTimeOrigin() || 0;\n const timeOrigin = msToSec(performanceTimeOrigin);\n const endTime = msToSec(performanceTimeOrigin + (entry?.startTime || 0));\n const name = entry ? htmlTreeAsString(entry.element) : 'Largest contentful paint';\n\n const attributes: SpanAttributes = {};\n\n entry?.element && (attributes['browser.web_vital.lcp.element'] = htmlTreeAsString(entry.element));\n entry?.id && (attributes['browser.web_vital.lcp.id'] = entry.id);\n entry?.url && (attributes['browser.web_vital.lcp.url'] = entry.url);\n entry?.loadTime != null && (attributes['browser.web_vital.lcp.load_time'] = entry.loadTime);\n entry?.renderTime != null && (attributes['browser.web_vital.lcp.render_time'] = entry.renderTime);\n entry?.size != null && (attributes['browser.web_vital.lcp.size'] = entry.size);\n\n _emitWebVitalSpan({\n name,\n op: 'ui.webvital.lcp',\n origin: 'auto.http.browser.lcp',\n metricName: 'lcp',\n value: lcpValue,\n attributes,\n parentSpan: pageloadSpan,\n reportEvent,\n startTime: timeOrigin,\n endTime,\n });\n}\n\n/**\n * Tracks CLS as a streamed span.\n */\nexport function trackClsAsSpan(client: Client): void {\n let clsValue = 0;\n let clsEntry: LayoutShift | undefined;\n\n if (!supportsWebVital('layout-shift')) {\n return;\n }\n\n const cleanupClsHandler = addClsInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1] as LayoutShift | undefined;\n if (!entry) {\n return;\n }\n clsValue = metric.value;\n clsEntry = entry;\n }, true);\n\n listenForWebVitalReportEvents(client, (reportEvent, _, pageloadSpan) => {\n _sendClsSpan(clsValue, clsEntry, pageloadSpan, reportEvent);\n cleanupClsHandler();\n });\n}\n\n/**\n * Exported only for testing.\n */\nexport function _sendClsSpan(\n clsValue: number,\n entry: LayoutShift | undefined,\n pageloadSpan?: Span,\n reportEvent?: WebVitalReportEvent,\n): void {\n DEBUG_BUILD && debug.log(`Sending CLS span (${clsValue})`);\n\n const startTime = entry ? msToSec((browserPerformanceTimeOrigin() || 0) + entry.startTime) : timestampInSeconds();\n const name = entry ? htmlTreeAsString(entry.sources[0]?.node) : 'Layout shift';\n\n const attributes: SpanAttributes = {};\n\n if (entry?.sources) {\n entry.sources.forEach((source, index) => {\n attributes[`browser.web_vital.cls.source.${index + 1}`] = htmlTreeAsString(source.node);\n });\n }\n\n _emitWebVitalSpan({\n name,\n op: 'ui.webvital.cls',\n origin: 'auto.http.browser.cls',\n metricName: 'cls',\n value: clsValue,\n attributes,\n parentSpan: pageloadSpan,\n reportEvent,\n startTime,\n });\n}\n\n/**\n * Tracks INP and emits it as a web vital span, as a child of the interaction's root span.\n * Requires `registerInpInteractionListener()` to be called separately for cached element names and\n * root spans per interaction.\n */\nexport function trackInpAsSpan(client: Client): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !browserPerformanceTimeOrigin()) {\n return;\n }\n\n // INP reports late (on pagehide, after the pageload span has ended). With span streaming enabled\n // it rides the streaming pipeline. With streaming disabled it would be dropped as a late span, so\n // it is emitted as its own standalone v2 span instead (see `_emitWebVitalSpan`), overriding the\n // static trace lifecycle for INP only.\n // TODO(standalone): once the static trace lifecycle is dropped, INP always streams; drop this flag.\n const standalone = !hasSpanStreamingEnabled(client);\n\n const onInp: InstrumentationHandlerCallback = ({ metric }) => {\n if (metric.value == null) {\n return;\n }\n\n const duration = msToSec(metric.value);\n\n if (duration > MAX_PLAUSIBLE_INP_DURATION) {\n return;\n }\n\n const entry = metric.entries.find(e => e.duration === metric.value && INP_ENTRY_MAP[e.name]);\n\n if (!entry) {\n return;\n }\n\n _sendInpSpan(metric.value, entry, standalone);\n };\n\n addInpInstrumentationHandler(onInp);\n}\n\n/**\n * Exported only for testing.\n */\nexport function _sendInpSpan(inpValue: number, entry: PerformanceEventTiming, standalone = false): void {\n DEBUG_BUILD && debug.log(`Sending INP span (${inpValue})`);\n\n const startTime = msToSec((browserPerformanceTimeOrigin() as number) + entry.startTime);\n const duration = msToSec(inpValue);\n const interactionType = INP_ENTRY_MAP[entry.name];\n\n const cachedContext = getCachedInteractionContext(entry.interactionId);\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;\n\n const spanToUse = cachedContext?.span || rootSpan;\n const routeName = spanToUse\n ? spanToStreamedSpanJSON(spanToUse).name\n : getCurrentScope().getScopeData().transactionName;\n const name = cachedContext?.elementName || htmlTreeAsString(entry.target);\n\n _emitWebVitalSpan({\n name,\n op: `ui.interaction.${interactionType}`,\n origin: 'auto.http.browser.inp',\n metricName: 'inp',\n value: inpValue,\n attributes: {\n [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: entry.duration,\n // oxlint-disable-next-line typescript-eslint/no-deprecated\n [SENTRY_TRANSACTION]: routeName,\n [SENTRY_SEGMENT_NAME]: routeName,\n },\n startTime,\n endTime: startTime + duration,\n parentSpan: spanToUse,\n standalone,\n });\n}\n"],"names":[],"mappings":";;;;;;;;;;AAwEO,SAAS,kBAAkB,OAAA,EAAoC;AACpE,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA,EAAY,gBAAA;AAAA,IACZ,UAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,OAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,eAAA,EAAgB,CAAE,YAAA,EAAa,CAAE,eAAA;AAEnD,EAAA,MAAM,UAAA,GAA6B;AAAA,IACjC,CAAC,gCAAgC,GAAG,MAAA;AAAA,IACpC,CAAC,4BAA4B,GAAG,EAAA;AAAA,IAChC,CAAC,iCAAiC,GAAG,CAAA;AAAA,IACrC,CAAC,CAAA,kBAAA,EAAqB,UAAU,CAAA,MAAA,CAAQ,GAAG,KAAA;AAAA;AAAA,IAE3C,CAAC,kBAAkB,GAAG,SAAA;AAAA,IACtB,CAAC,mBAAmB,GAAG,SAAA;AAAA;AAAA,IAEvB,qBAAA,EAAuB,OAAO,SAAA,EAAW,SAAA;AAAA,IACzC,GAAG;AAAA,GACL;AAEA,EAAA,IAAI,cAAc,sBAAA,CAAuB,UAAU,EAAE,UAAA,GAAa,4BAA4B,MAAM,UAAA,EAAY;AAE9G,IAAA,UAAA,CAAW,yBAAyB,CAAA,GAAI,UAAA,CAAW,WAAA,EAAY,CAAE,MAAA;AAAA,EACnE;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,UAAA,CAAW,CAAA,kBAAA,EAAqB,UAAU,CAAA,aAAA,CAAe,CAAA,GAAI,WAAA;AAAA,EAC/D;AAOA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,mBAAA,EAAqB,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,OAAO,iBAAA,CAAkB;AAAA,IAC7B,IAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA;AAAA,IAEA,YAAA,EAAc,UAAA,GAAa,EAAE,UAAA,EAAY,MAAK,GAAI;AAAA,GACnD,CAAA;AAED,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,IAAA,CAAK,GAAA,CAAI,WAAW,SAAS,CAAA;AAAA,EAC/B;AACF;AASA,SAAS,mBAAA,GAAsC;AAC7C,EAAA,MAAM,MAAA,GAAS,SAAA,EAAU,EAAG,oBAAA,CAAwC,QAAQ,CAAA;AAC5E,EAAA,MAAM,QAAA,GAAW,MAAA,EAAQ,WAAA,CAAY,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoB,QAAA;AAAA,IACpB,sCAAA,EAAwC,MAAA,CAAQ,gBAAA,EAAiB,KAAM,WAAW,IAAA,GAAO;AAAA,GAC3F;AACF;AAKO,SAAS,eAAe,MAAA,EAAsB;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,QAAA;AAEJ,EAAA,IAAI,CAAC,gBAAA,CAAiB,0BAA0B,CAAA,EAAG;AACjD,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,CAAC,EAAE,QAAO,KAAM;AACrE,IAAA,MAAM,QAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AACtD,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,gBAAA,CAAiB,MAAA,CAAO,KAAK,CAAA,EAAG;AAC7C,MAAA;AAAA,IACF;AACA,IAAA,QAAA,GAAW,MAAA,CAAO,KAAA;AAClB,IAAA,QAAA,GAAW,KAAA;AAAA,EACb,GAAG,IAAI,CAAA;AAEP,EAAA,6BAAA,CAA8B,MAAA,EAAQ,CAAC,WAAA,EAAa,CAAA,EAAG,YAAA,KAAiB;AACtE,IAAA,YAAA,CAAa,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,WAAW,CAAA;AAC1D,IAAA,iBAAA,EAAkB;AAAA,EACpB,CAAC,CAAA;AACH;AAKO,SAAS,YAAA,CACd,QAAA,EACA,KAAA,EACA,YAAA,EACA,WAAA,EACM;AACN,EAAA,IAAI,CAAC,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAC/B,IAAA;AAAA,EACF;AAEA,EAAA,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAA,CAAG,CAAA;AAEzD,EAAA,MAAM,qBAAA,GAAwB,8BAA6B,IAAK,CAAA;AAChE,EAAA,MAAM,UAAA,GAAa,QAAQ,qBAAqB,CAAA;AAChD,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,qBAAA,IAAyB,KAAA,EAAO,aAAa,CAAA,CAAE,CAAA;AACvE,EAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,gBAAA,CAAiB,KAAA,CAAM,OAAO,CAAA,GAAI,0BAAA;AAEvD,EAAA,MAAM,aAA6B,EAAC;AAEpC,EAAA,KAAA,EAAO,YAAY,UAAA,CAAW,+BAA+B,CAAA,GAAI,gBAAA,CAAiB,MAAM,OAAO,CAAA,CAAA;AAC/F,EAAA,KAAA,EAAO,EAAA,KAAO,UAAA,CAAW,0BAA0B,CAAA,GAAI,KAAA,CAAM,EAAA,CAAA;AAC7D,EAAA,KAAA,EAAO,GAAA,KAAQ,UAAA,CAAW,2BAA2B,CAAA,GAAI,KAAA,CAAM,GAAA,CAAA;AAC/D,EAAA,KAAA,EAAO,QAAA,IAAY,IAAA,KAAS,UAAA,CAAW,iCAAiC,IAAI,KAAA,CAAM,QAAA,CAAA;AAClF,EAAA,KAAA,EAAO,UAAA,IAAc,IAAA,KAAS,UAAA,CAAW,mCAAmC,IAAI,KAAA,CAAM,UAAA,CAAA;AACtF,EAAA,KAAA,EAAO,IAAA,IAAQ,IAAA,KAAS,UAAA,CAAW,4BAA4B,IAAI,KAAA,CAAM,IAAA,CAAA;AAEzE,EAAA,iBAAA,CAAkB;AAAA,IAChB,IAAA;AAAA,IACA,EAAA,EAAI,iBAAA;AAAA,IACJ,MAAA,EAAQ,uBAAA;AAAA,IACR,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,QAAA;AAAA,IACP,UAAA;AAAA,IACA,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA;AAAA,IACA,SAAA,EAAW,UAAA;AAAA,IACX;AAAA,GACD,CAAA;AACH;AAKO,SAAS,eAAe,MAAA,EAAsB;AACnD,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,QAAA;AAEJ,EAAA,IAAI,CAAC,gBAAA,CAAiB,cAAc,CAAA,EAAG;AACrC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,CAAC,EAAE,QAAO,KAAM;AACrE,IAAA,MAAM,QAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AACtD,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AACA,IAAA,QAAA,GAAW,MAAA,CAAO,KAAA;AAClB,IAAA,QAAA,GAAW,KAAA;AAAA,EACb,GAAG,IAAI,CAAA;AAEP,EAAA,6BAAA,CAA8B,MAAA,EAAQ,CAAC,WAAA,EAAa,CAAA,EAAG,YAAA,KAAiB;AACtE,IAAA,YAAA,CAAa,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,WAAW,CAAA;AAC1D,IAAA,iBAAA,EAAkB;AAAA,EACpB,CAAC,CAAA;AACH;AAKO,SAAS,YAAA,CACd,QAAA,EACA,KAAA,EACA,YAAA,EACA,WAAA,EACM;AACN,EAAA,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAA,CAAG,CAAA;AAEzD,EAAA,MAAM,SAAA,GAAY,QAAQ,OAAA,CAAA,CAAS,4BAAA,MAAkC,CAAA,IAAK,KAAA,CAAM,SAAS,CAAA,GAAI,kBAAA,EAAmB;AAChH,EAAA,MAAM,IAAA,GAAO,QAAQ,gBAAA,CAAiB,KAAA,CAAM,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAA,GAAI,cAAA;AAEhE,EAAA,MAAM,aAA6B,EAAC;AAEpC,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAA,KAAU;AACvC,MAAA,UAAA,CAAW,gCAAgC,KAAA,GAAQ,CAAC,EAAE,CAAA,GAAI,gBAAA,CAAiB,OAAO,IAAI,CAAA;AAAA,IACxF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,iBAAA,CAAkB;AAAA,IAChB,IAAA;AAAA,IACA,EAAA,EAAI,iBAAA;AAAA,IACJ,MAAA,EAAQ,uBAAA;AAAA,IACR,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,QAAA;AAAA,IACP,UAAA;AAAA,IACA,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;AAOO,SAAS,eAAe,MAAA,EAAsB;AACnD,EAAA,MAAM,cAAc,wBAAA,EAAyB;AAC7C,EAAA,IAAI,CAAC,WAAA,IAAe,CAAC,4BAAA,EAA6B,EAAG;AACnD,IAAA;AAAA,EACF;AAOA,EAAA,MAAM,UAAA,GAAa,CAAC,uBAAA,CAAwB,MAAM,CAAA;AAElD,EAAA,MAAM,KAAA,GAAwC,CAAC,EAAE,MAAA,EAAO,KAAM;AAC5D,IAAA,IAAI,MAAA,CAAO,SAAS,IAAA,EAAM;AACxB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAErC,IAAA,IAAI,WAAW,0BAAA,EAA4B;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,QAAA,KAAa,MAAA,CAAO,KAAA,IAAS,aAAA,CAAc,CAAA,CAAE,IAAI,CAAC,CAAA;AAE3F,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,MAAA,CAAO,KAAA,EAAO,KAAA,EAAO,UAAU,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,4BAAA,CAA6B,KAAK,CAAA;AACpC;AAKO,SAAS,YAAA,CAAa,QAAA,EAAkB,KAAA,EAA+B,UAAA,GAAa,KAAA,EAAa;AACtG,EAAA,WAAA,IAAe,KAAA,CAAM,GAAA,CAAI,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAA,CAAG,CAAA;AAEzD,EAAA,MAAM,SAAA,GAAY,OAAA,CAAS,4BAAA,EAA6B,GAAe,MAAM,SAAS,CAAA;AACtF,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAQ,CAAA;AACjC,EAAA,MAAM,eAAA,GAAkB,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAEhD,EAAA,MAAM,aAAA,GAAgB,2BAAA,CAA4B,KAAA,CAAM,aAAa,CAAA;AACrE,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,QAAA,GAAW,UAAA,GAAa,WAAA,CAAY,UAAU,CAAA,GAAI,MAAA;AAExD,EAAA,MAAM,SAAA,GAAY,eAAe,IAAA,IAAQ,QAAA;AACzC,EAAA,MAAM,SAAA,GAAY,YACd,sBAAA,CAAuB,SAAS,EAAE,IAAA,GAClC,eAAA,EAAgB,CAAE,YAAA,EAAa,CAAE,eAAA;AACrC,EAAA,MAAM,IAAA,GAAO,aAAA,EAAe,WAAA,IAAe,gBAAA,CAAiB,MAAM,MAAM,CAAA;AAExE,EAAA,iBAAA,CAAkB;AAAA,IAChB,IAAA;AAAA,IACA,EAAA,EAAI,kBAAkB,eAAe,CAAA,CAAA;AAAA,IACrC,MAAA,EAAQ,uBAAA;AAAA,IACR,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY;AAAA,MACV,CAAC,iCAAiC,GAAG,KAAA,CAAM,QAAA;AAAA;AAAA,MAE3C,CAAC,kBAAkB,GAAG,SAAA;AAAA,MACtB,CAAC,mBAAmB,GAAG;AAAA,KACzB;AAAA,IACA,SAAA;AAAA,IACA,SAAS,SAAA,GAAY,QAAA;AAAA,IACrB,UAAA,EAAY,SAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/instrument/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiCnD;;;;;GAKG;AACH,wBAAgB,sCAAsC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAIpG;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,IAAI,IAAI,CAuFpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/instrument/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMvD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,GAAG,IAAI,CAIlG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAmDxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../src/instrument/location.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xhr.d.ts","sourceRoot":"","sources":["../../../src/instrument/xhr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,cAAc,CAAC;AAIhF,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAIvD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAI1F;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,IAAI,IAAI,CA0IpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserMetrics.d.ts","sourceRoot":"","sources":["../../../src/metrics/browserMetrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAgB,IAAI,EAAE,cAAc,EAAoB,MAAM,cAAc,CAAC;AA4EjG,UAAU,6BAA6B;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,6BAA6B,GAAG,MAAM,IAAI,CAiBxG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CA8B7C;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,IAAI,CAsDvD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CA6BhD;AAED,OAAO,EAAE,8BAA8B,EAAE,MAAM,OAAO,CAAC;AA0DvD,UAAU,4BAA4B;IACpC;;;;OAIG;IACH,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,MAAM,CAAC,CAAC;IAE5G;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,yBAAyB;IACjC;;;;;;OAMG;IACH,uBAAuB,EAAE,OAAO,CAAC;IAEjC;;;;;;OAMG;IACH,uBAAuB,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qDAAqD;AACrD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,GAAG,IAAI,CA0D7F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAiEvF;AA2BD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAW5G;AAmFD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,sBAAsB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GACrC,IAAI,CAuDN;AAgGD,KAAK,kCAAkC,GACnC,sBAAsB,GACtB,cAAc,GAKd,gBAAgB,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,kCAAkC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAChH,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,CAAC,MAAM,yBAAyB,GAAG,kCAAkC,EAAE,MAAM,CAAC,EAAE,GAC3F,IAAI,CAUN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"elementTiming.d.ts","sourceRoot":"","sources":["../../../src/metrics/elementTiming.ts"],"names":[],"mappings":"AA0FA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB;;CAA+C,CAAC;AAErF;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,IAAI,CAEvD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inp.d.ts","sourceRoot":"","sources":["../../../src/metrics/inp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAMzC,UAAU,kBAAkB;IAC1B,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CA2B9E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAE7G;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CA6FrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrument.d.ts","sourceRoot":"","sources":["../../../src/metrics/instrument.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lcp.d.ts","sourceRoot":"","sources":["../../../src/metrics/lcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAEjF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resourceTiming.d.ts","sourceRoot":"","sources":["../../../src/metrics/resourceTiming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAUnD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,yBAAyB,GAAG,cAAc,CA0CxG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"userTiming.d.ts","sourceRoot":"","sources":["../../../src/metrics/userTiming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,IAAI,EAAsC,MAAM,cAAc,CAAC;AAW5F,UAAU,iBAAiB;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACjC;AAsDD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB;;CAA4C,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,IAAI,EAChB,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAC7B,IAAI,CA6BN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAK9F,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE5D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,IAAI,EAChB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,aAAa,EACtB,EAAE,GAAG,GAAG,EAAE,EAAE,gBAAgB,GAC3B,IAAI,GAAG,SAAS,CAsBlB;AAED,uCAAuC;AACvC,wBAAgB,wBAAwB,IAAI,WAAW,GAAG,SAAS,CAGlE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBjG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,0BAA0B,GAAG,OAAO,CAMhG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,KAAK,IAAI,QA8BrG"}
@@ -1,26 +0,0 @@
1
- import type { CLSMetric, MetricRatingThresholds, ReportOpts } from './types';
2
- /** Thresholds for CLS. See https://web.dev/articles/cls#what_is_a_good_cls_score */
3
- export declare const CLSThresholds: MetricRatingThresholds;
4
- /**
5
- * Calculates the [CLS](https://web.dev/articles/cls) value for the current page and
6
- * calls the `callback` function once the value is ready to be reported, along
7
- * with all `layout-shift` performance entries that were used in the metric
8
- * value calculation. The reported value is a `double` (corresponding to a
9
- * [layout shift score](https://web.dev/articles/cls#layout_shift_score)).
10
- *
11
- * If the `reportAllChanges` configuration option is set to `true`, the
12
- * `callback` function will be called as soon as the value is initially
13
- * determined as well as any time the value changes throughout the page
14
- * lifespan.
15
- *
16
- * _**Important:** CLS should be continually monitored for changes throughout
17
- * the entire lifespan of a page—including if the user returns to the page after
18
- * it's been hidden/backgrounded. However, since browsers often [will not fire
19
- * additional callbacks once the user has backgrounded a
20
- * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),
21
- * `callback` is always called when the page's visibility state changes to
22
- * hidden. As a result, the `callback` function might be called multiple times
23
- * during the same page load._
24
- */
25
- export declare const onCLS: (onReport: (metric: CLSMetric) => void, opts?: ReportOpts) => void;
26
- //# sourceMappingURL=getCLS.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCLS.d.ts","sourceRoot":"","sources":["../../../../src/metrics/web-vitals/getCLS.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,sBAAoC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,KAAK,aAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,SAAQ,UAAU,SAyC5E,CAAC"}
@@ -1,34 +0,0 @@
1
- import type { INPMetric, INPReportOpts, MetricRatingThresholds } from './types';
2
- /** Thresholds for INP. See https://web.dev/articles/inp#what_is_a_good_inp_score */
3
- export declare const INPThresholds: MetricRatingThresholds;
4
- /**
5
- * Calculates the [INP](https://web.dev/articles/inp) value for the current
6
- * page and calls the `callback` function once the value is ready, along with
7
- * the `event` performance entries reported for that interaction. The reported
8
- * value is a `DOMHighResTimeStamp`.
9
- *
10
- * A custom `durationThreshold` configuration option can optionally be passed
11
- * to control what `event-timing` entries are considered for INP reporting. The
12
- * default threshold is `40`, which means INP scores of less than 40 will not
13
- * be reported. To avoid reporting no interactions in these cases, the library
14
- * will fall back to the input delay of the first interaction. Note that this
15
- * will not affect your 75th percentile INP value unless that value is also
16
- * less than 40 (well below the recommended
17
- * [good](https://web.dev/articles/inp#what_is_a_good_inp_score) threshold).
18
- *
19
- * If the `reportAllChanges` configuration option is set to `true`, the
20
- * `callback` function will be called as soon as the value is initially
21
- * determined as well as any time the value changes throughout the page
22
- * lifespan.
23
- *
24
- * _**Important:** INP should be continually monitored for changes throughout
25
- * the entire lifespan of a page—including if the user returns to the page after
26
- * it's been hidden/backgrounded. However, since browsers often [will not fire
27
- * additional callbacks once the user has backgrounded a
28
- * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),
29
- * `callback` is always called when the page's visibility state changes to
30
- * hidden. As a result, the `callback` function might be called multiple times
31
- * during the same page load._
32
- */
33
- export declare const onINP: (onReport: (metric: INPMetric) => void, opts?: INPReportOpts) => void;
34
- //# sourceMappingURL=getINP.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getINP.d.ts","sourceRoot":"","sources":["../../../../src/metrics/web-vitals/getINP.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEhF,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,sBAAmC,CAAC;AAMhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,KAAK,aAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,SAAQ,aAAa,SA+D/E,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { LCPMetric, MetricRatingThresholds, ReportOpts } from './types';
2
- /** Thresholds for LCP. See https://web.dev/articles/lcp#what_is_a_good_lcp_score */
3
- export declare const LCPThresholds: MetricRatingThresholds;
4
- /**
5
- * Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
6
- * calls the `callback` function once the value is ready (along with the
7
- * relevant `largest-contentful-paint` performance entry used to determine the
8
- * value). The reported value is a `DOMHighResTimeStamp`.
9
- *
10
- * If the `reportAllChanges` configuration option is set to `true`, the
11
- * `callback` function will be called any time a new `largest-contentful-paint`
12
- * performance entry is dispatched, or once the final value of the metric has
13
- * been determined.
14
- */
15
- export declare const onLCP: (onReport: (metric: LCPMetric) => void, opts?: ReportOpts) => void;
16
- //# sourceMappingURL=getLCP.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLCP.d.ts","sourceRoot":"","sources":["../../../../src/metrics/web-vitals/getLCP.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,sBAAqC,CAAC;AAElE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,aAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,SAAQ,UAAU,SAwE5E,CAAC"}