@atlaskit/react-ufo 3.4.14 → 3.5.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 (405) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/additional-payload/utils/cache-hit-ratio/index.js +5 -4
  3. package/dist/cjs/additional-payload/utils/lighthouse-metrics/cls/index.js +3 -2
  4. package/dist/cjs/additional-payload/utils/lighthouse-metrics/index.js +6 -6
  5. package/dist/cjs/additional-payload/utils/lighthouse-metrics/tbt/index.js +3 -2
  6. package/dist/cjs/additional-payload/utils/lighthouse-metrics/utils/buffer/index.js +3 -0
  7. package/dist/cjs/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +9 -7
  8. package/dist/cjs/assets/index.js +17 -14
  9. package/dist/cjs/assets/utils.js +9 -8
  10. package/dist/cjs/bundle-eval-timing/index.js +8 -8
  11. package/dist/cjs/coinflip/index.js +5 -3
  12. package/dist/cjs/common/constants.js +3 -2
  13. package/dist/cjs/common/react-ufo-payload-schema.js +5 -0
  14. package/dist/cjs/config/index.js +30 -42
  15. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +29 -39
  16. package/dist/cjs/create-payload/common/utils/index.js +16 -20
  17. package/dist/cjs/create-payload/index.js +150 -140
  18. package/dist/cjs/create-payload/utils/get-interaction-status.js +5 -3
  19. package/dist/cjs/create-payload/utils/get-page-visibility-up-to-ttai.js +5 -3
  20. package/dist/cjs/create-payload/utils/get-ssr-done-time-value.js +5 -3
  21. package/dist/cjs/create-payload/utils/get-vc-metrics.js +10 -8
  22. package/dist/cjs/create-post-interaction-log-payload/index.js +15 -13
  23. package/dist/cjs/custom-data/index.js +4 -3
  24. package/dist/cjs/custom-mark/index.js +4 -3
  25. package/dist/cjs/custom-spans/index.js +4 -3
  26. package/dist/cjs/custom-timings/index.js +6 -6
  27. package/dist/cjs/experience-trace-id-context/index.js +15 -14
  28. package/dist/cjs/experience-trace-id-context/utils/make-trace-http-request-headers/index.js +3 -2
  29. package/dist/cjs/feature-flags-accessed/common/utils/index.js +11 -10
  30. package/dist/cjs/feature-flags-accessed/index.js +3 -2
  31. package/dist/cjs/generate-id/index.js +5 -3
  32. package/dist/cjs/global-error-handler/index.js +14 -13
  33. package/dist/cjs/initial-page-load-extra-timing/index.js +6 -6
  34. package/dist/cjs/interaction-metrics/index.js +110 -145
  35. package/dist/cjs/interaction-metrics/post-interaction-log.js +10 -0
  36. package/dist/cjs/interaction-metrics-init/index.js +17 -10
  37. package/dist/cjs/interaction-metrics-init/schedule-idle-callback.js +8 -4
  38. package/dist/cjs/resource-timing/common/utils/config.js +10 -10
  39. package/dist/cjs/resource-timing/common/utils/resource-timing-buffer.js +13 -12
  40. package/dist/cjs/resource-timing/main.js +27 -20
  41. package/dist/cjs/resource-timing/utils.js +4 -3
  42. package/dist/cjs/round-number/index.js +3 -2
  43. package/dist/cjs/route-name/index.js +5 -3
  44. package/dist/cjs/segment/schedule-on-paint.js +8 -5
  45. package/dist/cjs/segment/segment.js +9 -5
  46. package/dist/cjs/self-measurements/index.js +261 -0
  47. package/dist/cjs/set-interaction-error/index.js +4 -3
  48. package/dist/cjs/short-id/index.js +5 -3
  49. package/dist/cjs/ssr/index.js +18 -21
  50. package/dist/cjs/trace-interaction/index.js +7 -5
  51. package/dist/cjs/trace-pageload/index.js +7 -6
  52. package/dist/cjs/trace-press/index.js +5 -3
  53. package/dist/cjs/trace-redirect/index.js +5 -3
  54. package/dist/cjs/trace-transition/index.js +6 -4
  55. package/dist/cjs/trace-transition/utils/generate-span-id/index.js +3 -2
  56. package/dist/cjs/trace-transition/utils/set-interaction-active-trace/index.js +3 -2
  57. package/dist/cjs/vc/index.js +17 -6
  58. package/dist/cjs/vc/vc-observer/attachAbortListeners.js +3 -2
  59. package/dist/cjs/vc/vc-observer/getVCRevisionsData.js +41 -26
  60. package/dist/cjs/vc/vc-observer/getViewport.js +6 -6
  61. package/dist/cjs/vc/vc-observer/heatmap/heatmap.js +28 -12
  62. package/dist/cjs/vc/vc-observer/index.js +170 -133
  63. package/dist/cjs/vc/vc-observer/media-wrapper/vc-utils.js +3 -2
  64. package/dist/cjs/vc/vc-observer/observers/editor-lnv/index.js +17 -0
  65. package/dist/cjs/vc/vc-observer/observers/index.js +82 -25
  66. package/dist/cjs/vc/vc-observer/observers/non-visual-styles/is-non-visual-style-mutation.js +5 -8
  67. package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +17 -2
  68. package/dist/cjs/vc/vc-observer/revisions/fy25_01.js +7 -7
  69. package/dist/cjs/vc/vc-observer/revisions/fy25_02.js +2 -0
  70. package/dist/cjs/vc/vc-observer/revisions/revisions.js +3 -2
  71. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +9 -0
  72. package/dist/cjs/vc/vc-observer-new/get-element-name.js +5 -3
  73. package/dist/cjs/vc/vc-observer-new/get-unique-element-name.js +13 -11
  74. package/dist/cjs/vc/vc-observer-new/index.js +9 -0
  75. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +2 -0
  76. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +6 -1
  77. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +20 -12
  78. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +27 -26
  79. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +18 -6
  80. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +27 -14
  81. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +10 -8
  82. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +50 -40
  83. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +10 -8
  84. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +5 -3
  85. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +5 -3
  86. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +5 -3
  87. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +10 -8
  88. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +15 -7
  89. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +15 -12
  90. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +16 -13
  91. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +11 -9
  92. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +7 -1
  93. package/dist/es2019/additional-payload/utils/cache-hit-ratio/index.js +6 -5
  94. package/dist/es2019/additional-payload/utils/lighthouse-metrics/cls/index.js +3 -2
  95. package/dist/es2019/additional-payload/utils/lighthouse-metrics/index.js +6 -5
  96. package/dist/es2019/additional-payload/utils/lighthouse-metrics/tbt/index.js +16 -13
  97. package/dist/es2019/additional-payload/utils/lighthouse-metrics/utils/buffer/index.js +3 -0
  98. package/dist/es2019/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +9 -7
  99. package/dist/es2019/assets/index.js +19 -14
  100. package/dist/es2019/assets/utils.js +11 -9
  101. package/dist/es2019/bundle-eval-timing/index.js +7 -6
  102. package/dist/es2019/coinflip/index.js +5 -2
  103. package/dist/es2019/common/constants.js +3 -2
  104. package/dist/es2019/common/react-ufo-payload-schema.js +1 -0
  105. package/dist/es2019/config/index.js +29 -28
  106. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +18 -15
  107. package/dist/es2019/create-payload/common/utils/index.js +15 -14
  108. package/dist/es2019/create-payload/index.js +87 -71
  109. package/dist/es2019/create-payload/utils/get-interaction-status.js +5 -2
  110. package/dist/es2019/create-payload/utils/get-page-visibility-up-to-ttai.js +4 -2
  111. package/dist/es2019/create-payload/utils/get-ssr-done-time-value.js +4 -2
  112. package/dist/es2019/create-payload/utils/get-vc-metrics.js +4 -2
  113. package/dist/es2019/create-post-interaction-log-payload/index.js +14 -12
  114. package/dist/es2019/custom-data/index.js +3 -2
  115. package/dist/es2019/custom-mark/index.js +3 -2
  116. package/dist/es2019/custom-spans/index.js +3 -2
  117. package/dist/es2019/custom-timings/index.js +5 -4
  118. package/dist/es2019/experience-trace-id-context/index.js +16 -13
  119. package/dist/es2019/experience-trace-id-context/utils/make-trace-http-request-headers/index.js +6 -3
  120. package/dist/es2019/feature-flags-accessed/common/utils/index.js +14 -7
  121. package/dist/es2019/feature-flags-accessed/index.js +3 -2
  122. package/dist/es2019/generate-id/index.js +4 -2
  123. package/dist/es2019/global-error-handler/index.js +15 -12
  124. package/dist/es2019/initial-page-load-extra-timing/index.js +5 -4
  125. package/dist/es2019/interaction-metrics/index.js +109 -108
  126. package/dist/es2019/interaction-metrics/post-interaction-log.js +10 -0
  127. package/dist/es2019/interaction-metrics-init/index.js +17 -10
  128. package/dist/es2019/interaction-metrics-init/schedule-idle-callback.js +7 -3
  129. package/dist/es2019/resource-timing/common/utils/config.js +10 -7
  130. package/dist/es2019/resource-timing/common/utils/resource-timing-buffer.js +14 -11
  131. package/dist/es2019/resource-timing/main.js +33 -18
  132. package/dist/es2019/resource-timing/utils.js +3 -2
  133. package/dist/es2019/round-number/index.js +3 -2
  134. package/dist/es2019/route-name/index.js +4 -2
  135. package/dist/es2019/segment/schedule-on-paint.js +7 -4
  136. package/dist/es2019/segment/segment.js +9 -5
  137. package/dist/es2019/self-measurements/index.js +213 -0
  138. package/dist/es2019/set-interaction-error/index.js +3 -2
  139. package/dist/es2019/short-id/index.js +4 -2
  140. package/dist/es2019/ssr/index.js +21 -16
  141. package/dist/es2019/trace-interaction/index.js +6 -4
  142. package/dist/es2019/trace-pageload/index.js +6 -4
  143. package/dist/es2019/trace-press/index.js +4 -2
  144. package/dist/es2019/trace-redirect/index.js +4 -2
  145. package/dist/es2019/trace-transition/index.js +5 -3
  146. package/dist/es2019/trace-transition/utils/generate-span-id/index.js +4 -1
  147. package/dist/es2019/trace-transition/utils/set-interaction-active-trace/index.js +3 -2
  148. package/dist/es2019/vc/index.js +16 -4
  149. package/dist/es2019/vc/vc-observer/attachAbortListeners.js +3 -2
  150. package/dist/es2019/vc/vc-observer/getVCRevisionsData.js +41 -25
  151. package/dist/es2019/vc/vc-observer/getViewport.js +5 -4
  152. package/dist/es2019/vc/vc-observer/heatmap/heatmap.js +28 -10
  153. package/dist/es2019/vc/vc-observer/index.js +158 -116
  154. package/dist/es2019/vc/vc-observer/media-wrapper/vc-utils.js +3 -2
  155. package/dist/es2019/vc/vc-observer/observers/editor-lnv/index.js +17 -0
  156. package/dist/es2019/vc/vc-observer/observers/index.js +80 -25
  157. package/dist/es2019/vc/vc-observer/observers/non-visual-styles/is-non-visual-style-mutation.js +4 -7
  158. package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +17 -2
  159. package/dist/es2019/vc/vc-observer/revisions/fy25_01.js +7 -7
  160. package/dist/es2019/vc/vc-observer/revisions/fy25_02.js +2 -0
  161. package/dist/es2019/vc/vc-observer/revisions/revisions.js +3 -2
  162. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +9 -0
  163. package/dist/es2019/vc/vc-observer-new/get-element-name.js +4 -2
  164. package/dist/es2019/vc/vc-observer-new/get-unique-element-name.js +12 -10
  165. package/dist/es2019/vc/vc-observer-new/index.js +9 -0
  166. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +2 -0
  167. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +3 -0
  168. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +14 -4
  169. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +6 -4
  170. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +18 -6
  171. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +21 -8
  172. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +4 -2
  173. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +10 -8
  174. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +4 -2
  175. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +4 -2
  176. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +4 -2
  177. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +4 -2
  178. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +5 -2
  179. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +15 -7
  180. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +15 -12
  181. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +15 -13
  182. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +11 -9
  183. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +7 -1
  184. package/dist/esm/additional-payload/utils/cache-hit-ratio/index.js +5 -4
  185. package/dist/esm/additional-payload/utils/lighthouse-metrics/cls/index.js +3 -2
  186. package/dist/esm/additional-payload/utils/lighthouse-metrics/index.js +5 -4
  187. package/dist/esm/additional-payload/utils/lighthouse-metrics/tbt/index.js +3 -2
  188. package/dist/esm/additional-payload/utils/lighthouse-metrics/utils/buffer/index.js +3 -0
  189. package/dist/esm/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +9 -7
  190. package/dist/esm/assets/index.js +17 -14
  191. package/dist/esm/assets/utils.js +10 -8
  192. package/dist/esm/bundle-eval-timing/index.js +7 -6
  193. package/dist/esm/coinflip/index.js +5 -2
  194. package/dist/esm/common/constants.js +3 -2
  195. package/dist/esm/common/react-ufo-payload-schema.js +1 -0
  196. package/dist/esm/config/index.js +29 -28
  197. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +28 -35
  198. package/dist/esm/create-payload/common/utils/index.js +15 -14
  199. package/dist/esm/create-payload/index.js +149 -139
  200. package/dist/esm/create-payload/utils/get-interaction-status.js +5 -2
  201. package/dist/esm/create-payload/utils/get-page-visibility-up-to-ttai.js +4 -2
  202. package/dist/esm/create-payload/utils/get-ssr-done-time-value.js +4 -2
  203. package/dist/esm/create-payload/utils/get-vc-metrics.js +9 -7
  204. package/dist/esm/create-post-interaction-log-payload/index.js +14 -12
  205. package/dist/esm/custom-data/index.js +3 -2
  206. package/dist/esm/custom-mark/index.js +3 -2
  207. package/dist/esm/custom-spans/index.js +3 -2
  208. package/dist/esm/custom-timings/index.js +5 -4
  209. package/dist/esm/experience-trace-id-context/index.js +15 -14
  210. package/dist/esm/experience-trace-id-context/utils/make-trace-http-request-headers/index.js +3 -2
  211. package/dist/esm/feature-flags-accessed/common/utils/index.js +11 -10
  212. package/dist/esm/feature-flags-accessed/index.js +3 -2
  213. package/dist/esm/generate-id/index.js +4 -2
  214. package/dist/esm/global-error-handler/index.js +14 -13
  215. package/dist/esm/initial-page-load-extra-timing/index.js +5 -4
  216. package/dist/esm/interaction-metrics/index.js +109 -108
  217. package/dist/esm/interaction-metrics/post-interaction-log.js +10 -0
  218. package/dist/esm/interaction-metrics-init/index.js +17 -10
  219. package/dist/esm/interaction-metrics-init/schedule-idle-callback.js +7 -3
  220. package/dist/esm/resource-timing/common/utils/config.js +9 -8
  221. package/dist/esm/resource-timing/common/utils/resource-timing-buffer.js +13 -12
  222. package/dist/esm/resource-timing/main.js +27 -20
  223. package/dist/esm/resource-timing/utils.js +3 -2
  224. package/dist/esm/round-number/index.js +3 -2
  225. package/dist/esm/route-name/index.js +4 -2
  226. package/dist/esm/segment/schedule-on-paint.js +7 -4
  227. package/dist/esm/segment/segment.js +9 -5
  228. package/dist/esm/self-measurements/index.js +246 -0
  229. package/dist/esm/set-interaction-error/index.js +3 -2
  230. package/dist/esm/short-id/index.js +4 -2
  231. package/dist/esm/ssr/index.js +17 -16
  232. package/dist/esm/trace-interaction/index.js +6 -4
  233. package/dist/esm/trace-pageload/index.js +6 -4
  234. package/dist/esm/trace-press/index.js +4 -2
  235. package/dist/esm/trace-redirect/index.js +4 -2
  236. package/dist/esm/trace-transition/index.js +5 -3
  237. package/dist/esm/trace-transition/utils/generate-span-id/index.js +3 -2
  238. package/dist/esm/trace-transition/utils/set-interaction-active-trace/index.js +3 -2
  239. package/dist/esm/vc/index.js +16 -4
  240. package/dist/esm/vc/vc-observer/attachAbortListeners.js +3 -2
  241. package/dist/esm/vc/vc-observer/getVCRevisionsData.js +40 -25
  242. package/dist/esm/vc/vc-observer/getViewport.js +5 -4
  243. package/dist/esm/vc/vc-observer/heatmap/heatmap.js +28 -12
  244. package/dist/esm/vc/vc-observer/index.js +170 -133
  245. package/dist/esm/vc/vc-observer/media-wrapper/vc-utils.js +3 -2
  246. package/dist/esm/vc/vc-observer/observers/editor-lnv/index.js +17 -0
  247. package/dist/esm/vc/vc-observer/observers/index.js +82 -25
  248. package/dist/esm/vc/vc-observer/observers/non-visual-styles/is-non-visual-style-mutation.js +4 -7
  249. package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +17 -2
  250. package/dist/esm/vc/vc-observer/revisions/fy25_01.js +7 -7
  251. package/dist/esm/vc/vc-observer/revisions/fy25_02.js +2 -0
  252. package/dist/esm/vc/vc-observer/revisions/revisions.js +3 -2
  253. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +9 -0
  254. package/dist/esm/vc/vc-observer-new/get-element-name.js +4 -2
  255. package/dist/esm/vc/vc-observer-new/get-unique-element-name.js +12 -10
  256. package/dist/esm/vc/vc-observer-new/index.js +9 -0
  257. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +2 -0
  258. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +6 -1
  259. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +19 -9
  260. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +26 -24
  261. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +18 -6
  262. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +26 -13
  263. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +9 -7
  264. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +49 -39
  265. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +9 -7
  266. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +4 -2
  267. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +4 -2
  268. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +4 -2
  269. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +10 -7
  270. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +15 -7
  271. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +15 -12
  272. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +15 -12
  273. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +11 -7
  274. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +7 -1
  275. package/dist/types/additional-payload/utils/cache-hit-ratio/index.d.ts +1 -1
  276. package/dist/types/additional-payload/utils/lighthouse-metrics/index.d.ts +2 -2
  277. package/dist/types/assets/index.d.ts +3 -1
  278. package/dist/types/assets/utils.d.ts +1 -1
  279. package/dist/types/bundle-eval-timing/index.d.ts +2 -2
  280. package/dist/types/coinflip/index.d.ts +2 -1
  281. package/dist/types/common/index.d.ts +2 -1
  282. package/dist/types/common/react-ufo-payload-schema.d.ts +175 -0
  283. package/dist/types/common/vc/types.d.ts +20 -10
  284. package/dist/types/config/index.d.ts +14 -16
  285. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +4 -3
  286. package/dist/types/create-payload/common/utils/index.d.ts +6 -7
  287. package/dist/types/create-payload/index.d.ts +1250 -1537
  288. package/dist/types/create-payload/utils/get-interaction-status.d.ts +2 -1
  289. package/dist/types/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -1
  290. package/dist/types/create-payload/utils/get-ssr-done-time-value.d.ts +2 -1
  291. package/dist/types/create-payload/utils/get-vc-metrics.d.ts +3 -2
  292. package/dist/types/create-post-interaction-log-payload/index.d.ts +3 -2
  293. package/dist/types/custom-data/index.d.ts +1 -1
  294. package/dist/types/custom-mark/index.d.ts +1 -1
  295. package/dist/types/custom-spans/index.d.ts +1 -1
  296. package/dist/types/custom-timings/index.d.ts +2 -2
  297. package/dist/types/generate-id/index.d.ts +2 -1
  298. package/dist/types/hidden-timing/index.d.ts +1 -1
  299. package/dist/types/initial-page-load-extra-timing/index.d.ts +2 -2
  300. package/dist/types/interaction-context/index.d.ts +3 -3
  301. package/dist/types/interaction-metrics/index.d.ts +42 -42
  302. package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -0
  303. package/dist/types/interaction-metrics-init/schedule-idle-callback.d.ts +2 -1
  304. package/dist/types/resource-timing/common/utils/config.d.ts +1 -1
  305. package/dist/types/resource-timing/utils.d.ts +1 -1
  306. package/dist/types/round-number/index.d.ts +1 -1
  307. package/dist/types/route-name/index.d.ts +4 -3
  308. package/dist/types/segment/schedule-on-paint.d.ts +2 -1
  309. package/dist/types/self-measurements/index.d.ts +57 -0
  310. package/dist/types/set-interaction-error/index.d.ts +1 -1
  311. package/dist/types/short-id/index.d.ts +2 -1
  312. package/dist/types/ssr/index.d.ts +5 -5
  313. package/dist/types/trace-interaction/index.d.ts +2 -1
  314. package/dist/types/trace-pageload/index.d.ts +3 -2
  315. package/dist/types/trace-press/index.d.ts +2 -1
  316. package/dist/types/trace-redirect/index.d.ts +2 -1
  317. package/dist/types/trace-transition/index.d.ts +2 -1
  318. package/dist/types/vc/index.d.ts +2 -2
  319. package/dist/types/vc/vc-observer/getVCRevisionsData.d.ts +7 -7
  320. package/dist/types/vc/vc-observer/getViewport.d.ts +2 -2
  321. package/dist/types/vc/vc-observer/heatmap/heatmap.d.ts +7 -4
  322. package/dist/types/vc/vc-observer/index.d.ts +4 -4
  323. package/dist/types/vc/vc-observer/observers/non-visual-styles/is-non-visual-style-mutation.d.ts +5 -4
  324. package/dist/types/vc/vc-observer/observers/types.d.ts +1 -1
  325. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +2 -1
  326. package/dist/types/vc/vc-observer-new/get-unique-element-name.d.ts +2 -1
  327. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +2 -3
  328. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +3 -2
  329. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +3 -2
  330. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -1
  331. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +2 -1
  332. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +3 -2
  333. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +2 -1
  334. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +2 -1
  335. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -1
  336. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +2 -1
  337. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +1 -1
  338. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -1
  339. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +3 -3
  340. package/dist/types-ts4.5/additional-payload/utils/cache-hit-ratio/index.d.ts +1 -1
  341. package/dist/types-ts4.5/additional-payload/utils/lighthouse-metrics/index.d.ts +2 -2
  342. package/dist/types-ts4.5/assets/index.d.ts +3 -1
  343. package/dist/types-ts4.5/assets/utils.d.ts +1 -1
  344. package/dist/types-ts4.5/bundle-eval-timing/index.d.ts +2 -2
  345. package/dist/types-ts4.5/coinflip/index.d.ts +2 -1
  346. package/dist/types-ts4.5/common/index.d.ts +2 -1
  347. package/dist/types-ts4.5/common/react-ufo-payload-schema.d.ts +177 -0
  348. package/dist/types-ts4.5/common/vc/types.d.ts +20 -10
  349. package/dist/types-ts4.5/config/index.d.ts +14 -20
  350. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +4 -3
  351. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +6 -7
  352. package/dist/types-ts4.5/create-payload/index.d.ts +1250 -1537
  353. package/dist/types-ts4.5/create-payload/utils/get-interaction-status.d.ts +2 -1
  354. package/dist/types-ts4.5/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -1
  355. package/dist/types-ts4.5/create-payload/utils/get-ssr-done-time-value.d.ts +2 -1
  356. package/dist/types-ts4.5/create-payload/utils/get-vc-metrics.d.ts +3 -2
  357. package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +3 -2
  358. package/dist/types-ts4.5/custom-data/index.d.ts +1 -1
  359. package/dist/types-ts4.5/custom-mark/index.d.ts +1 -1
  360. package/dist/types-ts4.5/custom-spans/index.d.ts +1 -1
  361. package/dist/types-ts4.5/custom-timings/index.d.ts +2 -2
  362. package/dist/types-ts4.5/generate-id/index.d.ts +2 -1
  363. package/dist/types-ts4.5/hidden-timing/index.d.ts +1 -1
  364. package/dist/types-ts4.5/initial-page-load-extra-timing/index.d.ts +2 -2
  365. package/dist/types-ts4.5/interaction-context/index.d.ts +3 -3
  366. package/dist/types-ts4.5/interaction-metrics/index.d.ts +42 -42
  367. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -0
  368. package/dist/types-ts4.5/interaction-metrics-init/schedule-idle-callback.d.ts +2 -1
  369. package/dist/types-ts4.5/resource-timing/common/utils/config.d.ts +1 -1
  370. package/dist/types-ts4.5/resource-timing/utils.d.ts +1 -1
  371. package/dist/types-ts4.5/round-number/index.d.ts +1 -1
  372. package/dist/types-ts4.5/route-name/index.d.ts +4 -3
  373. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -1
  374. package/dist/types-ts4.5/self-measurements/index.d.ts +57 -0
  375. package/dist/types-ts4.5/set-interaction-error/index.d.ts +1 -1
  376. package/dist/types-ts4.5/short-id/index.d.ts +2 -1
  377. package/dist/types-ts4.5/ssr/index.d.ts +5 -5
  378. package/dist/types-ts4.5/trace-interaction/index.d.ts +2 -1
  379. package/dist/types-ts4.5/trace-pageload/index.d.ts +3 -2
  380. package/dist/types-ts4.5/trace-press/index.d.ts +2 -1
  381. package/dist/types-ts4.5/trace-redirect/index.d.ts +2 -1
  382. package/dist/types-ts4.5/trace-transition/index.d.ts +2 -1
  383. package/dist/types-ts4.5/vc/index.d.ts +2 -2
  384. package/dist/types-ts4.5/vc/vc-observer/getVCRevisionsData.d.ts +7 -7
  385. package/dist/types-ts4.5/vc/vc-observer/getViewport.d.ts +2 -2
  386. package/dist/types-ts4.5/vc/vc-observer/heatmap/heatmap.d.ts +7 -4
  387. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +4 -4
  388. package/dist/types-ts4.5/vc/vc-observer/observers/non-visual-styles/is-non-visual-style-mutation.d.ts +5 -4
  389. package/dist/types-ts4.5/vc/vc-observer/observers/types.d.ts +1 -1
  390. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +2 -1
  391. package/dist/types-ts4.5/vc/vc-observer-new/get-unique-element-name.d.ts +2 -1
  392. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +2 -3
  393. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +3 -2
  394. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +3 -2
  395. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -1
  396. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +2 -1
  397. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +3 -2
  398. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +2 -1
  399. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +2 -1
  400. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -1
  401. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +2 -1
  402. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +1 -1
  403. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -1
  404. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +3 -3
  405. package/package.json +12 -12
@@ -5,6 +5,7 @@ import { experimentalVC, getExperimentalVCMetrics, onExperimentalInteractionComp
5
5
  import { clearActiveTrace } from '../experience-trace-id-context';
6
6
  import { allFeatureFlagsAccessed, currentFeatureFlagsAccessed } from '../feature-flags-accessed';
7
7
  import { getInteractionId } from '../interaction-id-context';
8
+ import { withProfiling } from '../self-measurements';
8
9
  import { getVCObserver } from '../vc';
9
10
  import { interactions } from './common/constants';
10
11
  import PostInteractionLog from './post-interaction-log';
@@ -18,18 +19,18 @@ const segmentCache = new Map();
18
19
  const CLEANUP_TIMEOUT = 60 * 1000;
19
20
  const CLEANUP_TIMEOUT_AFTER_APDEX = 15 * 1000;
20
21
  const segmentObservers = [];
21
- export function getActiveInteraction() {
22
+ export const getActiveInteraction = withProfiling(function getActiveInteraction() {
22
23
  const interactionId = getInteractionId();
23
24
  if (!interactionId.current) {
24
25
  return;
25
26
  }
26
27
  return interactions.get(interactionId.current);
27
- }
28
- function isPerformanceTracingEnabled() {
28
+ });
29
+ const isPerformanceTracingEnabled = withProfiling(function isPerformanceTracingEnabled() {
29
30
  var _getConfig;
30
31
  return ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
31
- }
32
- function labelStackToString(labelStack, name) {
32
+ });
33
+ const labelStackToString = withProfiling(function labelStackToString(labelStack, name) {
33
34
  var _stack$map;
34
35
  const stack = [...(labelStack !== null && labelStack !== void 0 ? labelStack : [])];
35
36
  if (name) {
@@ -38,43 +39,43 @@ function labelStackToString(labelStack, name) {
38
39
  });
39
40
  }
40
41
  return (_stack$map = stack.map(l => l.name)) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
41
- }
42
- function labelStackToIdString(labelStack) {
42
+ });
43
+ const labelStackToIdString = withProfiling(function labelStackToIdString(labelStack) {
43
44
  var _labelStack$map;
44
45
  return labelStack === null || labelStack === void 0 ? void 0 : (_labelStack$map = labelStack.map(l => 'segmentId' in l ? `${l.name}:${l.segmentId}` : `${l.name}`)) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
45
- }
46
- function addSegmentObserver(observer) {
46
+ });
47
+ const addSegmentObserver = withProfiling(function addSegmentObserver(observer) {
47
48
  segmentObservers.push(observer);
48
49
  for (const segmentInfo of segmentCache.values()) {
49
50
  observer.onAdd(segmentInfo);
50
51
  }
51
- }
52
- function removeSegmentObserver(observer) {
52
+ });
53
+ const removeSegmentObserver = withProfiling(function removeSegmentObserver(observer) {
53
54
  const index = segmentObservers.findIndex(obs => obs === observer);
54
55
  if (index !== -1) {
55
56
  segmentObservers.splice(index, 1);
56
57
  }
57
- }
58
- export function remove(interactionId) {
58
+ });
59
+ export const remove = withProfiling(function remove(interactionId) {
59
60
  interactions.delete(interactionId);
60
- }
61
- export function updatePageLoadInteractionName(ufoName, routeName = ufoName) {
61
+ });
62
+ export const updatePageLoadInteractionName = withProfiling(function updatePageLoadInteractionName(ufoName, routeName = ufoName) {
62
63
  const interaction = getActiveInteraction();
63
64
  if (!interaction || interaction.type !== 'page_load' && interaction.type !== 'transition') {
64
65
  return;
65
66
  }
66
67
  interaction.ufoName = ufoName;
67
68
  interaction.routeName = routeName;
68
- }
69
- export function addMetadata(interactionId, data) {
69
+ });
70
+ export const addMetadata = withProfiling(function addMetadata(interactionId, data) {
70
71
  const interaction = interactions.get(interactionId);
71
72
  if (interaction != null) {
72
73
  Object.keys(data).forEach(key => {
73
74
  interaction.metaData[key] = data[key];
74
75
  });
75
76
  }
76
- }
77
- export function addCustomData(interactionId, labelStack, data) {
77
+ });
78
+ export const addCustomData = withProfiling(function addCustomData(interactionId, labelStack, data) {
78
79
  const interaction = interactions.get(interactionId);
79
80
  if (interaction != null) {
80
81
  Object.keys(data).forEach(i => {
@@ -86,8 +87,8 @@ export function addCustomData(interactionId, labelStack, data) {
86
87
  });
87
88
  });
88
89
  }
89
- }
90
- export function addCustomTiming(interactionId, labelStack, data) {
90
+ });
91
+ export const addCustomTiming = withProfiling(function addCustomTiming(interactionId, labelStack, data) {
91
92
  const interaction = interactions.get(interactionId);
92
93
  if (interaction != null) {
93
94
  interaction.customTimings.push({
@@ -112,8 +113,8 @@ export function addCustomTiming(interactionId, labelStack, data) {
112
113
  }
113
114
  }
114
115
  }
115
- }
116
- export function addMark(interactionId, type, name, labelStack, time = performance.now()) {
116
+ });
117
+ export const addMark = withProfiling(function addMark(interactionId, type, name, labelStack, time = performance.now()) {
117
118
  const interaction = interactions.get(interactionId);
118
119
  if (interaction != null) {
119
120
  interaction.marks.push({
@@ -128,8 +129,8 @@ export function addMark(interactionId, type, name, labelStack, time = performanc
128
129
  startTime: time
129
130
  });
130
131
  }
131
- }
132
- export function addMarkToAll(type, name, labelStack, time = performance.now()) {
132
+ });
133
+ export const addMarkToAll = withProfiling(function addMarkToAll(type, name, labelStack, time = performance.now()) {
133
134
  interactions.forEach(interaction => {
134
135
  interaction.marks.push({
135
136
  type,
@@ -143,8 +144,8 @@ export function addMarkToAll(type, name, labelStack, time = performance.now()) {
143
144
  startTime: time
144
145
  });
145
146
  }
146
- }
147
- export function addSpan(interactionId, type, name, labelStack, start, end = performance.now(), size) {
147
+ });
148
+ export const addSpan = withProfiling(function addSpan(interactionId, type, name, labelStack, start, end = performance.now(), size) {
148
149
  const interaction = interactions.get(interactionId);
149
150
  if (interaction != null) {
150
151
  interaction.spans.push({
@@ -167,8 +168,8 @@ export function addSpan(interactionId, type, name, labelStack, start, end = perf
167
168
  }
168
169
  }
169
170
  }
170
- }
171
- export function addSpanToAll(type, name, labelStack, start, end = performance.now(), size = 0) {
171
+ });
172
+ export const addSpanToAll = withProfiling(function addSpanToAll(type, name, labelStack, start, end = performance.now(), size = 0) {
172
173
  interactions.forEach(interaction => {
173
174
  interaction.spans.push({
174
175
  type,
@@ -190,36 +191,36 @@ export function addSpanToAll(type, name, labelStack, start, end = performance.no
190
191
  // do nothing
191
192
  }
192
193
  }
193
- }
194
- export function addPreload(moduleId, timestamp) {
194
+ });
195
+ export const addPreload = withProfiling(function addPreload(moduleId, timestamp) {
195
196
  addMarkToAll('bundle_preload', moduleId, null, timestamp);
196
- }
197
- export function addLoad(identifier, start, end) {
197
+ });
198
+ export const addLoad = withProfiling(function addLoad(identifier, start, end) {
198
199
  addSpanToAll('bundle_load', identifier, null, start, end - start);
199
- }
200
+ });
200
201
  const moduleLoadingRequests = {};
201
- export function extractModuleName(input) {
202
+ export const extractModuleName = withProfiling(function extractModuleName(input) {
202
203
  let result = input !== null && input !== void 0 ? input : '';
203
204
  result = result.replace(/^\.\/src\/packages\//, '');
204
205
  result = result.replace(/^\.\/node_modules\//, '');
205
206
  result = result.replace(/(\/src)?\/(index|main)\.(tsx|ts|js|jsx)$/, '');
206
207
  return result;
207
- }
208
- function addHoldCriterion(id, labelStack, name, startTime) {
208
+ });
209
+ const addHoldCriterion = withProfiling(function addHoldCriterion(id, labelStack, name, startTime) {
209
210
  var _window$__CRITERION__;
210
211
  if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
211
212
  return;
212
213
  }
213
214
  window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
214
- }
215
- function removeHoldCriterion(id) {
215
+ });
216
+ const removeHoldCriterion = withProfiling(function removeHoldCriterion(id) {
216
217
  var _window$__CRITERION__2;
217
218
  if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
218
219
  return;
219
220
  }
220
221
  window.__CRITERION__.removeUFOHold(id);
221
- }
222
- export function addHold(interactionId, labelStack, name, experimental) {
222
+ });
223
+ export const addHold = withProfiling(function addHold(interactionId, labelStack, name, experimental) {
223
224
  const interaction = interactions.get(interactionId);
224
225
  const id = createUUID();
225
226
  if (interaction != null) {
@@ -279,8 +280,8 @@ export function addHold(interactionId, labelStack, name, experimental) {
279
280
  };
280
281
  }
281
282
  return () => {};
282
- }
283
- export function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
283
+ });
284
+ export const addHoldByID = withProfiling(function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
284
285
  const interaction = interactions.get(interactionId);
285
286
  if (interaction != null) {
286
287
  const start = performance.now();
@@ -293,8 +294,8 @@ export function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit)
293
294
  addHoldCriterion(id, labelStack, name, start);
294
295
  }
295
296
  return () => {};
296
- }
297
- export function removeHoldByID(interactionId, id) {
297
+ });
298
+ export const removeHoldByID = withProfiling(function removeHoldByID(interactionId, id) {
298
299
  const interaction = interactions.get(interactionId);
299
300
  if (interaction != null) {
300
301
  const end = performance.now();
@@ -309,19 +310,19 @@ export function removeHoldByID(interactionId, id) {
309
310
  removeHoldCriterion(id);
310
311
  }
311
312
  }
312
- }
313
- export function getCurrentInteractionType(interactionId) {
313
+ });
314
+ export const getCurrentInteractionType = withProfiling(function getCurrentInteractionType(interactionId) {
314
315
  const interaction = interactions.get(interactionId);
315
316
  if (interaction) {
316
317
  return interaction.type;
317
318
  }
318
319
  return null;
319
- }
320
+ });
320
321
  export const ModuleLoadingProfiler = {
321
- onPreload(moduleId, _priority) {
322
+ onPreload: withProfiling(function onPreload(moduleId, _priority) {
322
323
  addPreload(extractModuleName(moduleId), performance.now());
323
- },
324
- onLoadStart(info) {
324
+ }),
325
+ onLoadStart: withProfiling(function onLoadStart(info) {
325
326
  const timeoutId = setTimeout(() => {
326
327
  delete moduleLoadingRequests[info.identifier];
327
328
  }, 30000);
@@ -330,29 +331,29 @@ export const ModuleLoadingProfiler = {
330
331
  timeoutId
331
332
  };
332
333
  moduleLoadingRequests[info.identifier] = request;
333
- },
334
- onLoadComplete(info) {
334
+ }),
335
+ onLoadComplete: withProfiling(function onLoadComplete(info) {
335
336
  const request = moduleLoadingRequests[info.identifier];
336
337
  if (request) {
337
338
  clearTimeout(request.timeoutId);
338
339
  delete moduleLoadingRequests[info.identifier];
339
340
  addLoad(extractModuleName(info.identifier), request.start, performance.now());
340
341
  }
341
- },
342
- placeholderFallBackMounted(id, moduleId) {
342
+ }),
343
+ placeholderFallBackMounted: withProfiling(function placeholderFallBackMounted(id, moduleId) {
343
344
  const interactionId = getInteractionId();
344
345
  const currentInteractionId = interactionId.current;
345
346
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
346
347
  addHoldByID(currentInteractionId, [], moduleId, id);
347
- },
348
- placeholderFallBackUnmounted(id) {
348
+ }),
349
+ placeholderFallBackUnmounted: withProfiling(function placeholderFallBackUnmounted(id) {
349
350
  const interactionId = getInteractionId();
350
351
  const currentInteractionId = interactionId.current;
351
352
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
352
353
  removeHoldByID(currentInteractionId, id);
353
- }
354
+ })
354
355
  };
355
- export function addError(interactionId, name, labelStack, errorType, errorMessage, errorStack, forcedError) {
356
+ export const addError = withProfiling(function addError(interactionId, name, labelStack, errorType, errorMessage, errorStack, forcedError) {
356
357
  const interaction = interactions.get(interactionId);
357
358
  if (interaction != null) {
358
359
  interaction.errors.push({
@@ -364,8 +365,8 @@ export function addError(interactionId, name, labelStack, errorType, errorMessag
364
365
  forcedError
365
366
  });
366
367
  }
367
- }
368
- export function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
368
+ });
369
+ export const addErrorToAll = withProfiling(function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
369
370
  interactions.forEach(interaction => {
370
371
  interaction.errors.push({
371
372
  name,
@@ -375,8 +376,8 @@ export function addErrorToAll(name, labelStack, errorType, errorMessage, errorSt
375
376
  errorStack
376
377
  });
377
378
  });
378
- }
379
- export const addProfilerTimings = (interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) => {
379
+ });
380
+ export const addProfilerTimings = withProfiling(function addProfilerTimings(interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) {
380
381
  var _getConfig3, _getConfig3$postInter;
381
382
  if (isPerformanceTracingEnabled()) {
382
383
  try {
@@ -402,20 +403,20 @@ export const addProfilerTimings = (interactionId, labelStack, type, actualDurati
402
403
  } else if ((_getConfig3 = getConfig()) !== null && _getConfig3 !== void 0 && (_getConfig3$postInter = _getConfig3.postInteractionLog) !== null && _getConfig3$postInter !== void 0 && _getConfig3$postInter.enabled) {
403
404
  postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
404
405
  }
405
- };
406
- const pushToQueue = (id, data) => {
406
+ });
407
+ const pushToQueue = withProfiling(function pushToQueue(id, data) {
407
408
  interactionQueue.push({
408
409
  id,
409
410
  data
410
411
  });
411
- };
412
+ });
412
413
  let handleInteraction = pushToQueue;
413
- function callCleanUpCallbacks(interaction) {
414
+ const callCleanUpCallbacks = withProfiling(function callCleanUpCallbacks(interaction) {
414
415
  interaction.cleanupCallbacks.reverse().forEach(cleanUpCallback => {
415
416
  cleanUpCallback();
416
417
  });
417
- }
418
- const finishInteraction = (id, data, endTime = performance.now()) => {
418
+ });
419
+ const finishInteraction = withProfiling(function finishInteraction(id, data, endTime = performance.now()) {
419
420
  var _getConfig4, _getConfig4$vc, _getConfig5, _getConfig5$experimen;
420
421
  data.end = endTime;
421
422
  try {
@@ -481,8 +482,8 @@ const finishInteraction = (id, data, endTime = performance.now()) => {
481
482
  } catch (error) {
482
483
  // do nothing
483
484
  }
484
- };
485
- export const sinkInteractionHandler = sinkFn => {
485
+ });
486
+ export const sinkInteractionHandler = withProfiling(function sinkInteractionHandler(sinkFn) {
486
487
  if (handleInteraction === pushToQueue) {
487
488
  handleInteraction = sinkFn;
488
489
  interactionQueue.forEach(interaction => {
@@ -490,14 +491,14 @@ export const sinkInteractionHandler = sinkFn => {
490
491
  });
491
492
  interactionQueue.length = 0;
492
493
  }
493
- };
494
- export const sinkPostInteractionLogHandler = sinkFn => {
494
+ });
495
+ export const sinkPostInteractionLogHandler = withProfiling(function sinkPostInteractionLogHandler(sinkFn) {
495
496
  postInteractionLog.sinkHandler(sinkFn);
496
- };
497
+ });
497
498
 
498
499
  // a flag to prevent multiple submitting
499
500
  let activeSubmitted = false;
500
- export function tryComplete(interactionId, endTime) {
501
+ export const tryComplete = withProfiling(function tryComplete(interactionId, endTime) {
501
502
  const interaction = interactions.get(interactionId);
502
503
  if (interaction != null) {
503
504
  const noMoreActiveHolds = interaction.holdActive.size === 0;
@@ -542,13 +543,13 @@ export function tryComplete(interactionId, endTime) {
542
543
  }
543
544
  }
544
545
  }
545
- }
546
- function callCancelCallbacks(interaction) {
546
+ });
547
+ const callCancelCallbacks = withProfiling(function callCancelCallbacks(interaction) {
547
548
  interaction.cancelCallbacks.reverse().forEach(cancelCallback => {
548
549
  cancelCallback();
549
550
  });
550
- }
551
- export function abort(interactionId, abortReason) {
551
+ });
552
+ export const abort = withProfiling(function abort(interactionId, abortReason) {
552
553
  const interaction = interactions.get(interactionId);
553
554
  if (interaction != null) {
554
555
  var _getConfig10, _getConfig10$experime;
@@ -560,8 +561,8 @@ export function abort(interactionId, abortReason) {
560
561
  remove(interactionId);
561
562
  }
562
563
  }
563
- }
564
- export function abortByNewInteraction(interactionId, interactionName) {
564
+ });
565
+ export const abortByNewInteraction = withProfiling(function abortByNewInteraction(interactionId, interactionName) {
565
566
  const interaction = interactions.get(interactionId);
566
567
  if (interaction != null) {
567
568
  var _getConfig11, _getConfig11$experime;
@@ -574,8 +575,8 @@ export function abortByNewInteraction(interactionId, interactionName) {
574
575
  remove(interactionId);
575
576
  }
576
577
  }
577
- }
578
- export function abortAll(abortReason, abortedByInteractionName) {
578
+ });
579
+ export const abortAll = withProfiling(function abortAll(abortReason, abortedByInteractionName) {
579
580
  interactions.forEach((interaction, interactionId) => {
580
581
  var _getConfig12, _getConfig12$experime;
581
582
  const noMoreHolds = interaction.holdActive.size === 0;
@@ -592,12 +593,12 @@ export function abortAll(abortReason, abortedByInteractionName) {
592
593
  remove(interactionId);
593
594
  }
594
595
  });
595
- }
596
- export function addOnCancelCallback(id, cancelCallback) {
596
+ });
597
+ export const addOnCancelCallback = withProfiling(function addOnCancelCallback(id, cancelCallback) {
597
598
  const interaction = interactions.get(id);
598
599
  interaction === null || interaction === void 0 ? void 0 : interaction.cancelCallbacks.push(cancelCallback);
599
- }
600
- export function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName, trace = null) {
600
+ });
601
+ export const addNewInteraction = withProfiling(function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName, trace = null) {
601
602
  var _getConfig13, _getConfig13$postInte;
602
603
  if ((_getConfig13 = getConfig()) !== null && _getConfig13 !== void 0 && (_getConfig13$postInte = _getConfig13.postInteractionLog) !== null && _getConfig13$postInte !== void 0 && _getConfig13$postInte.enabled) {
603
604
  postInteractionLog.reset();
@@ -700,8 +701,8 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
700
701
  });
701
702
  }
702
703
  }
703
- }
704
- export function addBrowserMetricEvent(event) {
704
+ });
705
+ export const addBrowserMetricEvent = withProfiling(function addBrowserMetricEvent(event) {
705
706
  const interaction = getActiveInteraction();
706
707
  if (interaction) {
707
708
  var _event$config;
@@ -712,8 +713,8 @@ export function addBrowserMetricEvent(event) {
712
713
  removeHoldByID(interaction.id, interaction.ufoName);
713
714
  }
714
715
  }
715
- }
716
- export function addApdexToAll(apdex) {
716
+ });
717
+ export const addApdexToAll = withProfiling(function addApdexToAll(apdex) {
717
718
  interactions.forEach((interaction, key) => {
718
719
  interaction.apdex.push(apdex);
719
720
  try {
@@ -731,8 +732,8 @@ export function addApdexToAll(apdex) {
731
732
  removeHoldByID(key, interaction.ufoName);
732
733
  }
733
734
  });
734
- }
735
- export function addApdex(interactionId, apdexInfo) {
735
+ });
736
+ export const addApdex = withProfiling(function addApdex(interactionId, apdexInfo) {
736
737
  const interaction = interactions.get(interactionId);
737
738
  if (interaction != null) {
738
739
  interaction.apdex.push(apdexInfo);
@@ -751,8 +752,8 @@ export function addApdex(interactionId, apdexInfo) {
751
752
  removeHoldByID(interactionId, interaction.ufoName);
752
753
  }
753
754
  }
754
- }
755
- export function addRequestInfo(interactionId, labelStack, requestInfo) {
755
+ });
756
+ export const addRequestInfo = withProfiling(function addRequestInfo(interactionId, labelStack, requestInfo) {
756
757
  const interaction = interactions.get(interactionId);
757
758
  if (interaction != null) {
758
759
  interaction.requestInfo.push({
@@ -760,19 +761,19 @@ export function addRequestInfo(interactionId, labelStack, requestInfo) {
760
761
  ...requestInfo
761
762
  });
762
763
  }
763
- }
764
- function isSegmentLabel(obj) {
764
+ });
765
+ const isSegmentLabel = withProfiling(function isSegmentLabel(obj) {
765
766
  return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
766
- }
767
- function getSegmentCacheKey(labelStack) {
767
+ });
768
+ const getSegmentCacheKey = withProfiling(function getSegmentCacheKey(labelStack) {
768
769
  return labelStack.map(l => {
769
770
  if (isSegmentLabel(l)) {
770
771
  return `${l.name}_${l.segmentId}`;
771
772
  }
772
773
  return l.name;
773
774
  }).join('|');
774
- }
775
- export function addSegment(labelStack) {
775
+ });
776
+ export const addSegment = withProfiling(function addSegment(labelStack) {
776
777
  const key = getSegmentCacheKey(labelStack);
777
778
  const existingSegment = segmentCache.get(key);
778
779
  if (!existingSegment) {
@@ -784,8 +785,8 @@ export function addSegment(labelStack) {
784
785
  observer.onAdd(segmentInfo);
785
786
  });
786
787
  }
787
- }
788
- export function removeSegment(labelStack) {
788
+ });
789
+ export const removeSegment = withProfiling(function removeSegment(labelStack) {
789
790
  const key = getSegmentCacheKey(labelStack);
790
791
  const segmentInfo = segmentCache.get(key);
791
792
  if (segmentInfo) {
@@ -794,8 +795,8 @@ export function removeSegment(labelStack) {
794
795
  observer.onRemove(segmentInfo);
795
796
  });
796
797
  }
797
- }
798
- export function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, time) {
798
+ });
799
+ export const addRedirect = withProfiling(function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, time) {
799
800
  const interaction = interactions.get(interactionId);
800
801
  if (interaction != null) {
801
802
  interaction.ufoName = nextUfoName;
@@ -818,12 +819,12 @@ export function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteNa
818
819
  }
819
820
  }
820
821
  }
821
- }
822
+ });
822
823
  export const interactionSpans = [];
823
824
  const defaultLabelStack = [{
824
825
  name: 'custom'
825
826
  }];
826
- export function addCustomSpans(name, start, end = performance.now(), size = 0, labelStack = defaultLabelStack) {
827
+ export const addCustomSpans = withProfiling(function addCustomSpans(name, start, end = performance.now(), size = 0, labelStack = defaultLabelStack) {
827
828
  const customSpan = {
828
829
  type: 'custom',
829
830
  name,
@@ -833,4 +834,4 @@ export function addCustomSpans(name, start, end = performance.now(), size = 0, l
833
834
  size
834
835
  };
835
836
  interactionSpans.push(customSpan);
836
- }
837
+ });
@@ -1,5 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { getConfig } from '../config';
3
+ import { withProfiling } from '../self-measurements';
3
4
  import { VCObserver } from '../vc/vc-observer';
4
5
  const POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT = 3000;
5
6
  export default class PostInteractionLog {
@@ -25,6 +26,15 @@ export default class PostInteractionLog {
25
26
  * Handler function to process / send the observation data
26
27
  */
27
28
  _defineProperty(this, "sinkHandlerFn", () => {});
29
+ this.initializeVCObserver = withProfiling(this.initializeVCObserver.bind(this));
30
+ this.startVCObserver = withProfiling(this.startVCObserver.bind(this));
31
+ this.setVCObserverSSRConfig = withProfiling(this.setVCObserverSSRConfig.bind(this));
32
+ this.setLastInteractionFinishVCResult = withProfiling(this.setLastInteractionFinishVCResult.bind(this));
33
+ this.reset = withProfiling(this.reset.bind(this));
34
+ this.hasData = withProfiling(this.hasData.bind(this));
35
+ this.sendPostInteractionLog = withProfiling(this.sendPostInteractionLog.bind(this));
36
+ this.onInteractionComplete = withProfiling(this.onInteractionComplete.bind(this));
37
+ this.addProfilerTimings = withProfiling(this.addProfilerTimings.bind(this));
28
38
  }
29
39
  initializeVCObserver(options) {
30
40
  if (this.vcObserver === null) {
@@ -4,12 +4,13 @@ import { setUFOConfig } from '../config';
4
4
  import { experimentalVC, sinkExperimentalHandler } from '../create-experimental-interaction-metrics-payload';
5
5
  import { setupHiddenTimingCapture } from '../hidden-timing';
6
6
  import { postInteractionLog, sinkInteractionHandler, sinkPostInteractionLogHandler } from '../interaction-metrics';
7
+ import { withProfiling } from '../self-measurements';
7
8
  import { getVCObserver } from '../vc';
8
9
  import scheduleIdleCallback from './schedule-idle-callback';
9
10
  let initialized = false;
10
- function sinkInteraction(instance, payloadPackage) {
11
- sinkInteractionHandler((interactionId, interaction) => {
12
- scheduleIdleCallback(() => {
11
+ const sinkInteraction = withProfiling(function sinkInteraction(instance, payloadPackage) {
12
+ const sinkFn = withProfiling(function sinkFn(interactionId, interaction) {
13
+ const onIdle = withProfiling(function onIdle() {
13
14
  payloadPackage.createPayloads(interactionId, interaction).then(payloads => {
14
15
  // NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
15
16
  const devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
@@ -23,14 +24,17 @@ function sinkInteraction(instance, payloadPackage) {
23
24
  throw error;
24
25
  });
25
26
  });
27
+ scheduleIdleCallback(onIdle);
26
28
  });
27
- }
28
- function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
29
- sinkExperimentalHandler((interactionId, interaction) => {
30
- scheduleIdleCallback(() => {
29
+ sinkInteractionHandler(sinkFn);
30
+ });
31
+ const sinkExperimentalInteractionMetrics = withProfiling(function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
32
+ const experimentalMetricsSinkFn = withProfiling(function experimentalMetricsSinkFn(interactionId, interaction) {
33
+ const experimentalMetricsOnIdle = withProfiling(function experimentalMetricsOnIdle() {
31
34
  const payloadPromise = payloadPackage.createExperimentalMetricsPayload(interactionId, interaction);
32
35
  payloadPromise.then(payload => {
33
36
  if (payload) {
37
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
34
38
  if (fg('enable_ufo_devtools_api_for_extra_events')) {
35
39
  // NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
36
40
  const devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
@@ -42,14 +46,17 @@ function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
42
46
  }
43
47
  });
44
48
  });
49
+ scheduleIdleCallback(experimentalMetricsOnIdle);
45
50
  });
46
- }
51
+ sinkExperimentalHandler(experimentalMetricsSinkFn);
52
+ });
47
53
  function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
48
54
  sinkPostInteractionLogHandler(logOutput => {
49
55
  scheduleIdleCallback(() => {
50
56
  const payload = createPostInteractionLogPayload(logOutput);
51
57
  if (payload) {
52
58
  // NOTE: This API is used by the UFO DevTool Chrome Extension and also by Criterion
59
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
53
60
  if (fg('enable_ufo_devtools_api_for_extra_events')) {
54
61
  const devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
55
62
  if (typeof devToolObserver === 'function') {
@@ -61,7 +68,7 @@ function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
61
68
  });
62
69
  });
63
70
  }
64
- export const init = (analyticsWebClientAsync, config) => {
71
+ export const init = withProfiling(function init(analyticsWebClientAsync, config) {
65
72
  var _config$vc;
66
73
  if (initialized) {
67
74
  return;
@@ -115,4 +122,4 @@ export const init = (analyticsWebClientAsync, config) => {
115
122
  }
116
123
  }
117
124
  });
118
- };
125
+ });
@@ -1,9 +1,13 @@
1
1
  import { unstable_IdlePriority as idlePriority, unstable_scheduleCallback as scheduleCallback } from 'scheduler';
2
2
  import { fg } from '@atlaskit/platform-feature-flags';
3
- export default function scheduleIdleCallback(work) {
4
- if (typeof window !== 'undefined' && typeof window.requestIdleCallback === 'function' && fg('ufo_payload_use_idle_callback')) {
3
+ import { withProfiling } from '../self-measurements';
4
+ const scheduleIdleCallback = withProfiling(function scheduleIdleCallback(work) {
5
+ if (typeof window !== 'undefined' && typeof window.requestIdleCallback === 'function' &&
6
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
7
+ fg('ufo_payload_use_idle_callback')) {
5
8
  window.requestIdleCallback(work);
6
9
  } else {
7
10
  scheduleCallback(idlePriority, work);
8
11
  }
9
- }
12
+ });
13
+ export default scheduleIdleCallback;
@@ -1,10 +1,11 @@
1
1
  import { getConfig as getConfigUFO } from '../../../config';
2
+ import { withProfiling } from '../../../self-measurements';
2
3
  const defaultAllowedParams = ['operationName', 'operation', 'q'];
3
- const getAllowedParams = () => {
4
+ const getAllowedParams = withProfiling(function getAllowedParams() {
4
5
  const config = getConfigUFO();
5
6
  return (config === null || config === void 0 ? void 0 : config.allowedResourcesParams) || defaultAllowedParams;
6
- };
7
- const handleQueryParams = urlString => {
7
+ });
8
+ const handleQueryParams = withProfiling(function handleQueryParams(urlString) {
8
9
  try {
9
10
  if (typeof urlString !== 'string') {
10
11
  return urlString;
@@ -21,14 +22,14 @@ const handleQueryParams = urlString => {
21
22
  } catch (e) {
22
23
  return urlString;
23
24
  }
24
- };
25
+ });
25
26
  let config = {
26
27
  mapResources: url => url,
27
28
  sanitiseEndpoints: url => {
28
29
  return handleQueryParams(url);
29
30
  }
30
31
  };
31
- export function configure(resourceTimingConfig) {
32
+ export const configure = withProfiling(function configure(resourceTimingConfig) {
32
33
  const newConfig = {
33
34
  mapResources: resourceTimingConfig.mapResources,
34
35
  sanitiseEndpoints: url => {
@@ -40,5 +41,7 @@ export function configure(resourceTimingConfig) {
40
41
  }
41
42
  };
42
43
  config = newConfig;
43
- }
44
- export const getConfig = () => config;
44
+ });
45
+ export const getConfig = withProfiling(function getConfig() {
46
+ return config;
47
+ });