@safaricom-mxl/web-sdk 0.0.15 → 0.0.17

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 (827) hide show
  1. package/DATA_EXPORT.md +2 -3
  2. package/REACT.md +5 -7
  3. package/README.md +94 -57
  4. package/UPGRADING.md +29 -19
  5. package/dist/api-logs/api/LogAPI/LogAPI.cjs +3 -3
  6. package/dist/api-logs/api/LogAPI/LogAPI.cjs.map +1 -1
  7. package/dist/api-logs/api/LogAPI/LogAPI.js +3 -3
  8. package/dist/api-logs/api/LogAPI/LogAPI.js.map +1 -1
  9. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs.map +1 -1
  10. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js.map +1 -1
  11. package/dist/api-logs/manager/types.d.cts +4 -4
  12. package/dist/api-logs/manager/types.d.cts.map +1 -1
  13. package/dist/api-logs/manager/types.d.ts +4 -4
  14. package/dist/api-logs/manager/types.d.ts.map +1 -1
  15. package/dist/api-page/api/PageAPI/PageAPI.cjs +3 -3
  16. package/dist/api-page/api/PageAPI/PageAPI.cjs.map +1 -1
  17. package/dist/api-page/api/PageAPI/PageAPI.js +3 -3
  18. package/dist/api-page/api/PageAPI/PageAPI.js.map +1 -1
  19. package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs +9 -9
  20. package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs.map +1 -1
  21. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts +5 -7
  22. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts.map +1 -1
  23. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts +5 -7
  24. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts.map +1 -1
  25. package/dist/api-sessions/api/SessionAPI/SessionAPI.js +9 -9
  26. package/dist/api-sessions/api/SessionAPI/SessionAPI.js.map +1 -1
  27. package/dist/api-sessions/index.cjs +4 -4
  28. package/dist/api-sessions/index.d.cts +4 -4
  29. package/dist/api-sessions/index.d.ts +4 -4
  30. package/dist/api-sessions/index.js +3 -3
  31. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.cjs +47 -0
  32. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.cjs.map +1 -0
  33. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.d.cts +30 -0
  34. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.d.cts.map +1 -0
  35. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.d.ts +30 -0
  36. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.d.ts.map +1 -0
  37. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.js +46 -0
  38. package/dist/api-sessions/manager/NoOpUserSessionManager/NoOpUserSessionManager.js.map +1 -0
  39. package/dist/api-sessions/manager/NoOpUserSessionManager/index.cjs +3 -0
  40. package/dist/api-sessions/manager/NoOpUserSessionManager/index.d.cts +2 -0
  41. package/dist/api-sessions/manager/NoOpUserSessionManager/index.d.ts +2 -0
  42. package/dist/api-sessions/manager/NoOpUserSessionManager/index.js +2 -0
  43. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.cjs +81 -0
  44. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.cjs.map +1 -0
  45. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.d.cts +35 -0
  46. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.d.cts.map +1 -0
  47. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.d.ts +35 -0
  48. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.d.ts.map +1 -0
  49. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.js +81 -0
  50. package/dist/api-sessions/manager/ProxyUserSessionManager/ProxyUserSessionManager.js.map +1 -0
  51. package/dist/api-sessions/manager/ProxyUserSessionManager/index.cjs +3 -0
  52. package/dist/api-sessions/manager/ProxyUserSessionManager/index.d.cts +2 -0
  53. package/dist/api-sessions/manager/ProxyUserSessionManager/index.d.ts +2 -0
  54. package/dist/api-sessions/manager/ProxyUserSessionManager/index.js +2 -0
  55. package/dist/api-sessions/manager/index.cjs +4 -4
  56. package/dist/api-sessions/manager/index.d.cts +4 -4
  57. package/dist/api-sessions/manager/index.d.ts +4 -4
  58. package/dist/api-sessions/manager/index.js +3 -3
  59. package/dist/api-sessions/manager/types.d.cts +14 -24
  60. package/dist/api-sessions/manager/types.d.cts.map +1 -1
  61. package/dist/api-sessions/manager/types.d.ts +14 -24
  62. package/dist/api-sessions/manager/types.d.ts.map +1 -1
  63. package/dist/api-traces/api/TraceAPI/TraceAPI.cjs +3 -3
  64. package/dist/api-traces/api/TraceAPI/TraceAPI.cjs.map +1 -1
  65. package/dist/api-traces/api/TraceAPI/TraceAPI.js +3 -3
  66. package/dist/api-traces/api/TraceAPI/TraceAPI.js.map +1 -1
  67. package/dist/api-traces/api/TraceAPI/types.d.cts +2 -2
  68. package/dist/api-traces/api/TraceAPI/types.d.cts.map +1 -1
  69. package/dist/api-traces/api/TraceAPI/types.d.ts +2 -2
  70. package/dist/api-traces/api/TraceAPI/types.d.ts.map +1 -1
  71. package/dist/api-users/api/UserAPI/UserAPI.cjs +3 -3
  72. package/dist/api-users/api/UserAPI/UserAPI.cjs.map +1 -1
  73. package/dist/api-users/api/UserAPI/UserAPI.js +3 -3
  74. package/dist/api-users/api/UserAPI/UserAPI.js.map +1 -1
  75. package/dist/common/types.d.cts +2 -0
  76. package/dist/common/types.d.cts.map +1 -1
  77. package/dist/common/types.d.ts +2 -0
  78. package/dist/common/types.d.ts.map +1 -1
  79. package/dist/constants/attributes.cjs +30 -0
  80. package/dist/constants/attributes.cjs.map +1 -1
  81. package/dist/constants/attributes.d.cts +18 -2
  82. package/dist/constants/attributes.d.cts.map +1 -1
  83. package/dist/constants/attributes.d.ts +18 -2
  84. package/dist/constants/attributes.d.ts.map +1 -1
  85. package/dist/constants/attributes.js +17 -1
  86. package/dist/constants/attributes.js.map +1 -1
  87. package/dist/constants/index.cjs +14 -0
  88. package/dist/constants/index.d.cts +2 -2
  89. package/dist/constants/index.d.ts +2 -2
  90. package/dist/constants/index.js +2 -2
  91. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs +1 -2
  92. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
  93. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.cts +1 -2
  94. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.cts.map +1 -1
  95. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.ts +1 -2
  96. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.ts.map +1 -1
  97. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js +1 -2
  98. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
  99. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
  100. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
  101. package/dist/exporters/constants.cjs +1 -1
  102. package/dist/exporters/constants.cjs.map +1 -1
  103. package/dist/exporters/constants.d.cts +1 -1
  104. package/dist/exporters/constants.d.ts +1 -1
  105. package/dist/exporters/constants.js +1 -1
  106. package/dist/exporters/constants.js.map +1 -1
  107. package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
  108. package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
  109. package/dist/index.cjs +2 -0
  110. package/dist/index.d.cts +2 -1
  111. package/dist/index.d.ts +2 -1
  112. package/dist/index.js +2 -1
  113. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.cjs +2 -2
  114. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.cjs.map +1 -1
  115. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.d.cts.map +1 -1
  116. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.d.ts.map +1 -1
  117. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.js +2 -2
  118. package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.js.map +1 -1
  119. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs +6 -7
  120. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
  121. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.cts +4 -5
  122. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.cts.map +1 -1
  123. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.ts +4 -5
  124. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.ts.map +1 -1
  125. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js +6 -7
  126. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
  127. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs +8 -8
  128. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
  129. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.d.cts.map +1 -1
  130. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.d.ts.map +1 -1
  131. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js +8 -8
  132. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
  133. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs +10 -10
  134. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
  135. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js +10 -10
  136. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
  137. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs +2 -2
  138. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
  139. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js +2 -2
  140. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
  141. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs +5 -5
  142. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -1
  143. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js +5 -5
  144. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -1
  145. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs +4 -4
  146. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
  147. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js +4 -4
  148. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
  149. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs +7 -7
  150. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
  151. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js +7 -7
  152. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
  153. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs +3 -3
  154. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
  155. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.cts +4 -4
  156. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.cts.map +1 -1
  157. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.ts +4 -4
  158. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.ts.map +1 -1
  159. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js +4 -4
  160. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
  161. package/dist/instrumentations/index.cjs +2 -4
  162. package/dist/instrumentations/index.d.cts +4 -6
  163. package/dist/instrumentations/index.d.ts +4 -6
  164. package/dist/instrumentations/index.js +2 -3
  165. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs +23 -23
  166. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -1
  167. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.cts +2 -3
  168. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.cts.map +1 -1
  169. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.ts +2 -3
  170. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.ts.map +1 -1
  171. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js +23 -23
  172. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -1
  173. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs +5 -5
  174. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
  175. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.d.cts.map +1 -1
  176. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.d.ts.map +1 -1
  177. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js +5 -5
  178. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
  179. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
  180. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
  181. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs +1 -1
  182. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
  183. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js +1 -1
  184. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
  185. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/types.d.cts +10 -10
  186. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/types.d.cts.map +1 -1
  187. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/types.d.ts +10 -10
  188. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/types.d.ts.map +1 -1
  189. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/types.d.cts +2 -2
  190. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/types.d.cts.map +1 -1
  191. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/types.d.ts +2 -2
  192. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/types.d.ts.map +1 -1
  193. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
  194. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
  195. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.cjs +257 -0
  196. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.cjs.map +1 -0
  197. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.d.cts +56 -0
  198. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.d.cts.map +1 -0
  199. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.d.ts +56 -0
  200. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.d.ts.map +1 -0
  201. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.js +252 -0
  202. package/dist/instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation.js.map +1 -0
  203. package/dist/instrumentations/replay/ReplayInstrumentation/constants.cjs +15 -0
  204. package/dist/instrumentations/replay/ReplayInstrumentation/constants.cjs.map +1 -0
  205. package/dist/instrumentations/replay/ReplayInstrumentation/constants.d.cts +9 -0
  206. package/dist/instrumentations/replay/ReplayInstrumentation/constants.d.cts.map +1 -0
  207. package/dist/instrumentations/replay/ReplayInstrumentation/constants.d.ts +9 -0
  208. package/dist/instrumentations/replay/ReplayInstrumentation/constants.d.ts.map +1 -0
  209. package/dist/instrumentations/replay/ReplayInstrumentation/constants.js +10 -0
  210. package/dist/instrumentations/replay/ReplayInstrumentation/constants.js.map +1 -0
  211. package/dist/instrumentations/replay/ReplayInstrumentation/index.cjs +3 -0
  212. package/dist/instrumentations/replay/ReplayInstrumentation/index.d.cts +3 -0
  213. package/dist/instrumentations/replay/ReplayInstrumentation/index.d.ts +3 -0
  214. package/dist/instrumentations/replay/ReplayInstrumentation/index.js +2 -0
  215. package/dist/instrumentations/replay/ReplayInstrumentation/types.d.cts +17 -0
  216. package/dist/instrumentations/replay/ReplayInstrumentation/types.d.cts.map +1 -0
  217. package/dist/instrumentations/replay/ReplayInstrumentation/types.d.ts +17 -0
  218. package/dist/instrumentations/replay/ReplayInstrumentation/types.d.ts.map +1 -0
  219. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.cjs +18 -0
  220. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.cjs.map +1 -0
  221. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.d.cts +8 -0
  222. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.d.cts.map +1 -0
  223. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.d.ts +8 -0
  224. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.d.ts.map +1 -0
  225. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.js +17 -0
  226. package/dist/instrumentations/replay/createSessionRecordingControlFromReplay.js.map +1 -0
  227. package/dist/instrumentations/replay/index.cjs +8 -0
  228. package/dist/instrumentations/replay/index.d.cts +4 -0
  229. package/dist/instrumentations/replay/index.d.ts +4 -0
  230. package/dist/instrumentations/replay/index.js +3 -0
  231. package/dist/instrumentations/replay/utils/index.cjs +5 -0
  232. package/dist/instrumentations/replay/utils/index.d.cts +2 -0
  233. package/dist/instrumentations/replay/utils/index.d.ts +2 -0
  234. package/dist/instrumentations/replay/utils/index.js +2 -0
  235. package/dist/instrumentations/replay/utils/session-recording-utils.cjs +79 -0
  236. package/dist/instrumentations/replay/utils/session-recording-utils.cjs.map +1 -0
  237. package/dist/instrumentations/replay/utils/session-recording-utils.d.cts +32 -0
  238. package/dist/instrumentations/replay/utils/session-recording-utils.d.cts.map +1 -0
  239. package/dist/instrumentations/replay/utils/session-recording-utils.d.ts +32 -0
  240. package/dist/instrumentations/replay/utils/session-recording-utils.d.ts.map +1 -0
  241. package/dist/instrumentations/replay/utils/session-recording-utils.js +73 -0
  242. package/dist/instrumentations/replay/utils/session-recording-utils.js.map +1 -0
  243. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs +6 -6
  244. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -1
  245. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js +6 -6
  246. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -1
  247. package/dist/instrumentations/session/index.cjs +0 -6
  248. package/dist/instrumentations/session/index.d.cts +2 -7
  249. package/dist/instrumentations/session/index.d.ts +2 -7
  250. package/dist/instrumentations/session/index.js +1 -4
  251. package/dist/instrumentations/session/types.d.cts +5 -5
  252. package/dist/instrumentations/session/types.d.cts.map +1 -1
  253. package/dist/instrumentations/session/types.d.ts +5 -5
  254. package/dist/instrumentations/session/types.d.ts.map +1 -1
  255. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs +10 -10
  256. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -1
  257. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js +10 -10
  258. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -1
  259. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs +15 -15
  260. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
  261. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js +15 -15
  262. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
  263. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.cts +1 -3
  264. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.cts.map +1 -1
  265. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.ts +1 -3
  266. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.ts.map +1 -1
  267. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +0 -1
  268. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
  269. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
  270. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
  271. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +0 -1
  272. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
  273. package/dist/managers/MXLConfigManager/constants.cjs +2 -2
  274. package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
  275. package/dist/managers/MXLConfigManager/constants.js +2 -2
  276. package/dist/managers/MXLConfigManager/constants.js.map +1 -1
  277. package/dist/managers/MXLConfigManager/types.d.cts +8 -7
  278. package/dist/managers/MXLConfigManager/types.d.cts.map +1 -1
  279. package/dist/managers/MXLConfigManager/types.d.ts +8 -7
  280. package/dist/managers/MXLConfigManager/types.d.ts.map +1 -1
  281. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs +20 -20
  282. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
  283. package/dist/managers/MXLLimitManager/MXLLimitManager.js +20 -20
  284. package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
  285. package/dist/managers/MXLLimitManager/constants.cjs +20 -20
  286. package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
  287. package/dist/managers/MXLLimitManager/constants.js +20 -20
  288. package/dist/managers/MXLLimitManager/constants.js.map +1 -1
  289. package/dist/managers/MXLLimitManager/types.d.cts +8 -8
  290. package/dist/managers/MXLLimitManager/types.d.cts.map +1 -1
  291. package/dist/managers/MXLLimitManager/types.d.ts +8 -8
  292. package/dist/managers/MXLLimitManager/types.d.ts.map +1 -1
  293. package/dist/managers/MXLLogManager/MXLLogManager.cjs +22 -20
  294. package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
  295. package/dist/managers/MXLLogManager/MXLLogManager.d.cts +2 -2
  296. package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
  297. package/dist/managers/MXLLogManager/MXLLogManager.d.ts +2 -2
  298. package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
  299. package/dist/managers/MXLLogManager/MXLLogManager.js +23 -21
  300. package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
  301. package/dist/managers/MXLLogManager/types.d.cts +2 -2
  302. package/dist/managers/MXLLogManager/types.d.ts +2 -2
  303. package/dist/managers/MXLPageManager/MXLPageManager.cjs +1 -3
  304. package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
  305. package/dist/managers/MXLPageManager/MXLPageManager.d.cts.map +1 -1
  306. package/dist/managers/MXLPageManager/MXLPageManager.d.ts.map +1 -1
  307. package/dist/managers/MXLPageManager/MXLPageManager.js +1 -3
  308. package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
  309. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs +0 -4
  310. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
  311. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.d.cts +0 -1
  312. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.d.cts.map +1 -1
  313. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.d.ts +0 -1
  314. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.d.ts.map +1 -1
  315. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js +0 -4
  316. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
  317. package/dist/managers/MXLSDKFeaturesManager/types.d.cts +0 -1
  318. package/dist/managers/MXLSDKFeaturesManager/types.d.cts.map +1 -1
  319. package/dist/managers/MXLSDKFeaturesManager/types.d.ts +0 -1
  320. package/dist/managers/MXLSDKFeaturesManager/types.d.ts.map +1 -1
  321. package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
  322. package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
  323. package/dist/managers/MXLUserManager/MXLUserManager.cjs +14 -14
  324. package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
  325. package/dist/managers/MXLUserManager/MXLUserManager.js +14 -14
  326. package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
  327. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.cjs +574 -0
  328. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.cjs.map +1 -0
  329. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.d.cts +142 -0
  330. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.d.cts.map +1 -0
  331. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.d.ts +142 -0
  332. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.d.ts.map +1 -0
  333. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.js +572 -0
  334. package/dist/managers/MXLUserSessionManager/MXLUserSessionManager.js.map +1 -0
  335. package/dist/managers/MXLUserSessionManager/constants.cjs +55 -0
  336. package/dist/managers/MXLUserSessionManager/constants.cjs.map +1 -0
  337. package/dist/managers/MXLUserSessionManager/constants.d.cts +31 -0
  338. package/dist/managers/MXLUserSessionManager/constants.d.cts.map +1 -0
  339. package/dist/managers/MXLUserSessionManager/constants.d.ts +31 -0
  340. package/dist/managers/MXLUserSessionManager/constants.d.ts.map +1 -0
  341. package/dist/managers/MXLUserSessionManager/constants.js +37 -0
  342. package/dist/managers/MXLUserSessionManager/constants.js.map +1 -0
  343. package/dist/managers/MXLUserSessionManager/index.cjs +6 -0
  344. package/dist/managers/MXLUserSessionManager/index.d.cts +4 -0
  345. package/dist/managers/MXLUserSessionManager/index.d.ts +4 -0
  346. package/dist/managers/MXLUserSessionManager/index.js +3 -0
  347. package/dist/managers/MXLUserSessionManager/types.d.cts +84 -0
  348. package/dist/managers/MXLUserSessionManager/types.d.cts.map +1 -0
  349. package/dist/managers/MXLUserSessionManager/types.d.ts +84 -0
  350. package/dist/managers/MXLUserSessionManager/types.d.ts.map +1 -0
  351. package/dist/managers/MXLUserSessionManager/utils/activity.cjs +25 -0
  352. package/dist/managers/MXLUserSessionManager/utils/activity.cjs.map +1 -0
  353. package/dist/managers/MXLUserSessionManager/utils/activity.d.cts +40 -0
  354. package/dist/managers/MXLUserSessionManager/utils/activity.d.cts.map +1 -0
  355. package/dist/managers/MXLUserSessionManager/utils/activity.d.ts +40 -0
  356. package/dist/managers/MXLUserSessionManager/utils/activity.d.ts.map +1 -0
  357. package/dist/managers/MXLUserSessionManager/utils/activity.js +22 -0
  358. package/dist/managers/MXLUserSessionManager/utils/activity.js.map +1 -0
  359. package/dist/managers/MXLUserSessionManager/utils/index.cjs +11 -0
  360. package/dist/managers/MXLUserSessionManager/utils/index.d.cts +3 -0
  361. package/dist/managers/MXLUserSessionManager/utils/index.d.ts +3 -0
  362. package/dist/managers/MXLUserSessionManager/utils/index.js +3 -0
  363. package/dist/managers/MXLUserSessionManager/utils/state.cjs +78 -0
  364. package/dist/managers/MXLUserSessionManager/utils/state.cjs.map +1 -0
  365. package/dist/managers/MXLUserSessionManager/utils/state.d.cts +39 -0
  366. package/dist/managers/MXLUserSessionManager/utils/state.d.cts.map +1 -0
  367. package/dist/managers/MXLUserSessionManager/utils/state.d.ts +39 -0
  368. package/dist/managers/MXLUserSessionManager/utils/state.d.ts.map +1 -0
  369. package/dist/managers/MXLUserSessionManager/utils/state.js +73 -0
  370. package/dist/managers/MXLUserSessionManager/utils/state.js.map +1 -0
  371. package/dist/managers/MXLUserSessionManager/utils/tabTracking.cjs +132 -0
  372. package/dist/managers/MXLUserSessionManager/utils/tabTracking.cjs.map +1 -0
  373. package/dist/managers/MXLUserSessionManager/utils/tabTracking.d.cts +33 -0
  374. package/dist/managers/MXLUserSessionManager/utils/tabTracking.d.cts.map +1 -0
  375. package/dist/managers/MXLUserSessionManager/utils/tabTracking.d.ts +33 -0
  376. package/dist/managers/MXLUserSessionManager/utils/tabTracking.d.ts.map +1 -0
  377. package/dist/managers/MXLUserSessionManager/utils/tabTracking.js +127 -0
  378. package/dist/managers/MXLUserSessionManager/utils/tabTracking.js.map +1 -0
  379. package/dist/managers/index.cjs +5 -2
  380. package/dist/managers/index.d.cts +4 -3
  381. package/dist/managers/index.d.ts +4 -3
  382. package/dist/managers/index.js +3 -2
  383. package/dist/mxl-web-sdk.js +1 -58
  384. package/dist/mxl-web-sdk.js.map +1 -1
  385. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
  386. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
  387. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
  388. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
  389. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
  390. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
  391. package/dist/processors/LogRecordScrubProcessor/types.d.cts +2 -2
  392. package/dist/processors/LogRecordScrubProcessor/types.d.cts.map +1 -1
  393. package/dist/processors/LogRecordScrubProcessor/types.d.ts +2 -2
  394. package/dist/processors/LogRecordScrubProcessor/types.d.ts.map +1 -1
  395. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
  396. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
  397. package/dist/processors/MXLLogRecordProcessor/types.d.cts +2 -2
  398. package/dist/processors/MXLLogRecordProcessor/types.d.cts.map +1 -1
  399. package/dist/processors/MXLLogRecordProcessor/types.d.ts +2 -2
  400. package/dist/processors/MXLLogRecordProcessor/types.d.ts.map +1 -1
  401. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
  402. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
  403. package/dist/processors/MXLNetworkSpanProcessor/types.cjs.map +1 -1
  404. package/dist/processors/MXLNetworkSpanProcessor/types.js.map +1 -1
  405. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.cjs +74 -0
  406. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.cjs.map +1 -0
  407. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.d.cts +28 -0
  408. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.d.cts.map +1 -0
  409. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.d.ts +28 -0
  410. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.d.ts.map +1 -0
  411. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.js +72 -0
  412. package/dist/processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor.js.map +1 -0
  413. package/dist/processors/MXLSessionPartBatchedSpanProcessor/index.cjs +3 -0
  414. package/dist/processors/MXLSessionPartBatchedSpanProcessor/index.d.cts +3 -0
  415. package/dist/processors/MXLSessionPartBatchedSpanProcessor/index.d.ts +3 -0
  416. package/dist/processors/MXLSessionPartBatchedSpanProcessor/index.js +2 -0
  417. package/dist/processors/MXLSessionPartBatchedSpanProcessor/types.d.cts +15 -0
  418. package/dist/processors/MXLSessionPartBatchedSpanProcessor/types.d.cts.map +1 -0
  419. package/dist/processors/MXLSessionPartBatchedSpanProcessor/types.d.ts +15 -0
  420. package/dist/processors/MXLSessionPartBatchedSpanProcessor/types.d.ts.map +1 -0
  421. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
  422. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
  423. package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
  424. package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
  425. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
  426. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
  427. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
  428. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
  429. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.cjs +34 -0
  430. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.cjs.map +1 -0
  431. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.d.cts +16 -0
  432. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.d.cts.map +1 -0
  433. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.d.ts +16 -0
  434. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.d.ts.map +1 -0
  435. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.js +32 -0
  436. package/dist/processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor.js.map +1 -0
  437. package/dist/processors/UserSessionLogRecordProcessor/index.cjs +3 -0
  438. package/dist/processors/UserSessionLogRecordProcessor/index.d.cts +3 -0
  439. package/dist/processors/UserSessionLogRecordProcessor/index.d.ts +3 -0
  440. package/dist/processors/UserSessionLogRecordProcessor/index.js +2 -0
  441. package/dist/processors/UserSessionLogRecordProcessor/types.d.cts +8 -0
  442. package/dist/processors/UserSessionLogRecordProcessor/types.d.cts.map +1 -0
  443. package/dist/processors/UserSessionLogRecordProcessor/types.d.ts +8 -0
  444. package/dist/processors/UserSessionLogRecordProcessor/types.d.ts.map +1 -0
  445. package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
  446. package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
  447. package/dist/processors/index.cjs +4 -4
  448. package/dist/processors/index.d.cts +3 -3
  449. package/dist/processors/index.d.ts +3 -3
  450. package/dist/processors/index.js +3 -3
  451. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
  452. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
  453. package/dist/resources/appInstanceId.cjs +4 -4
  454. package/dist/resources/appInstanceId.cjs.map +1 -1
  455. package/dist/resources/appInstanceId.js +4 -4
  456. package/dist/resources/appInstanceId.js.map +1 -1
  457. package/dist/resources/constants/index.cjs +1 -1
  458. package/dist/resources/constants/index.cjs.map +1 -1
  459. package/dist/resources/constants/index.d.cts +1 -1
  460. package/dist/resources/constants/index.d.ts +1 -1
  461. package/dist/resources/constants/index.js +1 -1
  462. package/dist/resources/constants/index.js.map +1 -1
  463. package/dist/resources/webSdkResource.cjs +15 -19
  464. package/dist/resources/webSdkResource.cjs.map +1 -1
  465. package/dist/resources/webSdkResource.d.cts.map +1 -1
  466. package/dist/resources/webSdkResource.d.ts.map +1 -1
  467. package/dist/resources/webSdkResource.js +15 -19
  468. package/dist/resources/webSdkResource.js.map +1 -1
  469. package/dist/sdk/defaultAttributeScrubbers.cjs +8 -8
  470. package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
  471. package/dist/sdk/defaultAttributeScrubbers.js +8 -8
  472. package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
  473. package/dist/sdk/index.d.cts +3 -2
  474. package/dist/sdk/index.d.ts +3 -2
  475. package/dist/sdk/initSDK.cjs +139 -98
  476. package/dist/sdk/initSDK.cjs.map +1 -1
  477. package/dist/sdk/initSDK.d.cts +4 -2
  478. package/dist/sdk/initSDK.d.cts.map +1 -1
  479. package/dist/sdk/initSDK.d.ts +4 -2
  480. package/dist/sdk/initSDK.d.ts.map +1 -1
  481. package/dist/sdk/initSDK.js +139 -98
  482. package/dist/sdk/initSDK.js.map +1 -1
  483. package/dist/sdk/noopSessionRecording.cjs +10 -0
  484. package/dist/sdk/noopSessionRecording.cjs.map +1 -0
  485. package/dist/sdk/noopSessionRecording.d.cts +7 -0
  486. package/dist/sdk/noopSessionRecording.d.cts.map +1 -0
  487. package/dist/sdk/noopSessionRecording.d.ts +7 -0
  488. package/dist/sdk/noopSessionRecording.d.ts.map +1 -0
  489. package/dist/sdk/noopSessionRecording.js +9 -0
  490. package/dist/sdk/noopSessionRecording.js.map +1 -0
  491. package/dist/sdk/registry.cjs +1 -3
  492. package/dist/sdk/registry.cjs.map +1 -1
  493. package/dist/sdk/registry.d.cts.map +1 -1
  494. package/dist/sdk/registry.d.ts.map +1 -1
  495. package/dist/sdk/registry.js +1 -3
  496. package/dist/sdk/registry.js.map +1 -1
  497. package/dist/sdk/setupDefaultInstrumentations.cjs +9 -5
  498. package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
  499. package/dist/sdk/setupDefaultInstrumentations.d.cts +5 -2
  500. package/dist/sdk/setupDefaultInstrumentations.d.cts.map +1 -1
  501. package/dist/sdk/setupDefaultInstrumentations.d.ts +5 -2
  502. package/dist/sdk/setupDefaultInstrumentations.d.ts.map +1 -1
  503. package/dist/sdk/setupDefaultInstrumentations.js +9 -5
  504. package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
  505. package/dist/sdk/types.d.cts +68 -56
  506. package/dist/sdk/types.d.cts.map +1 -1
  507. package/dist/sdk/types.d.ts +69 -57
  508. package/dist/sdk/types.d.ts.map +1 -1
  509. package/dist/sdk/utils.cjs +1 -1
  510. package/dist/sdk/utils.cjs.map +1 -1
  511. package/dist/sdk/utils.d.cts.map +1 -1
  512. package/dist/sdk/utils.d.ts.map +1 -1
  513. package/dist/sdk/utils.js +1 -1
  514. package/dist/sdk/utils.js.map +1 -1
  515. package/dist/transport/FetchTransport/FetchTransport.cjs +13 -13
  516. package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
  517. package/dist/transport/FetchTransport/FetchTransport.js +13 -13
  518. package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
  519. package/dist/transport/RetryingTransport/RetryingTransport.cjs +1 -1
  520. package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
  521. package/dist/transport/RetryingTransport/RetryingTransport.js +1 -1
  522. package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
  523. package/dist/utils/NamespacedStorage/NamespacedStorage.cjs +69 -24
  524. package/dist/utils/NamespacedStorage/NamespacedStorage.cjs.map +1 -1
  525. package/dist/utils/NamespacedStorage/NamespacedStorage.d.cts +27 -13
  526. package/dist/utils/NamespacedStorage/NamespacedStorage.d.cts.map +1 -1
  527. package/dist/utils/NamespacedStorage/NamespacedStorage.d.ts +27 -13
  528. package/dist/utils/NamespacedStorage/NamespacedStorage.d.ts.map +1 -1
  529. package/dist/utils/NamespacedStorage/NamespacedStorage.js +68 -24
  530. package/dist/utils/NamespacedStorage/NamespacedStorage.js.map +1 -1
  531. package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
  532. package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
  533. package/dist/utils/clampNumber.cjs +23 -0
  534. package/dist/utils/clampNumber.cjs.map +1 -0
  535. package/dist/utils/clampNumber.d.cts +24 -0
  536. package/dist/utils/clampNumber.d.cts.map +1 -0
  537. package/dist/utils/clampNumber.d.ts +24 -0
  538. package/dist/utils/clampNumber.d.ts.map +1 -0
  539. package/dist/utils/clampNumber.js +22 -0
  540. package/dist/utils/clampNumber.js.map +1 -0
  541. package/dist/utils/createSafeProxy/createSafeProxy.cjs +2 -2
  542. package/dist/utils/createSafeProxy/createSafeProxy.cjs.map +1 -1
  543. package/dist/utils/createSafeProxy/createSafeProxy.d.cts.map +1 -1
  544. package/dist/utils/createSafeProxy/createSafeProxy.d.ts.map +1 -1
  545. package/dist/utils/createSafeProxy/createSafeProxy.js +2 -2
  546. package/dist/utils/createSafeProxy/createSafeProxy.js.map +1 -1
  547. package/dist/utils/generateWebVitalID.cjs +1 -3
  548. package/dist/utils/generateWebVitalID.cjs.map +1 -1
  549. package/dist/utils/generateWebVitalID.js +1 -3
  550. package/dist/utils/generateWebVitalID.js.map +1 -1
  551. package/dist/utils/getIncrementedCount.cjs +2 -2
  552. package/dist/utils/getIncrementedCount.cjs.map +1 -1
  553. package/dist/utils/getIncrementedCount.js +2 -2
  554. package/dist/utils/getIncrementedCount.js.map +1 -1
  555. package/dist/utils/globalConfig.cjs.map +1 -1
  556. package/dist/utils/globalConfig.d.cts +2 -2
  557. package/dist/utils/globalConfig.d.cts.map +1 -1
  558. package/dist/utils/globalConfig.d.ts +2 -2
  559. package/dist/utils/globalConfig.d.ts.map +1 -1
  560. package/dist/utils/globalConfig.js.map +1 -1
  561. package/dist/utils/index.cjs +2 -2
  562. package/dist/utils/index.d.cts +3 -3
  563. package/dist/utils/index.d.ts +3 -3
  564. package/dist/utils/index.js +2 -2
  565. package/dist/utils/isDeviceIdEnabled.cjs.map +1 -1
  566. package/dist/utils/isDeviceIdEnabled.js.map +1 -1
  567. package/dist/utils/performanceObserver/performanceObserver.cjs +3 -3
  568. package/dist/utils/performanceObserver/performanceObserver.cjs.map +1 -1
  569. package/dist/utils/performanceObserver/performanceObserver.js +3 -3
  570. package/dist/utils/performanceObserver/performanceObserver.js.map +1 -1
  571. package/dist/utils/throttle.cjs +13 -9
  572. package/dist/utils/throttle.cjs.map +1 -1
  573. package/dist/utils/throttle.d.cts +6 -3
  574. package/dist/utils/throttle.d.cts.map +1 -1
  575. package/dist/utils/throttle.d.ts +6 -3
  576. package/dist/utils/throttle.d.ts.map +1 -1
  577. package/dist/utils/throttle.js +13 -9
  578. package/dist/utils/throttle.js.map +1 -1
  579. package/package.json +56 -56
  580. package/dist/api-sessions/api/SessionAPI/types.d.cts +0 -8
  581. package/dist/api-sessions/api/SessionAPI/types.d.cts.map +0 -1
  582. package/dist/api-sessions/api/SessionAPI/types.d.ts +0 -8
  583. package/dist/api-sessions/api/SessionAPI/types.d.ts.map +0 -1
  584. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs +0 -31
  585. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs.map +0 -1
  586. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.cts +0 -24
  587. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.cts.map +0 -1
  588. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.ts +0 -24
  589. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.ts.map +0 -1
  590. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js +0 -30
  591. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js.map +0 -1
  592. package/dist/api-sessions/manager/NoOpSpanSessionManager/index.cjs +0 -3
  593. package/dist/api-sessions/manager/NoOpSpanSessionManager/index.d.cts +0 -2
  594. package/dist/api-sessions/manager/NoOpSpanSessionManager/index.d.ts +0 -2
  595. package/dist/api-sessions/manager/NoOpSpanSessionManager/index.js +0 -2
  596. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs +0 -55
  597. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs.map +0 -1
  598. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.cts +0 -27
  599. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.cts.map +0 -1
  600. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.ts +0 -27
  601. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.ts.map +0 -1
  602. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js +0 -55
  603. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js.map +0 -1
  604. package/dist/api-sessions/manager/ProxySpanSessionManager/index.cjs +0 -3
  605. package/dist/api-sessions/manager/ProxySpanSessionManager/index.d.cts +0 -2
  606. package/dist/api-sessions/manager/ProxySpanSessionManager/index.d.ts +0 -2
  607. package/dist/api-sessions/manager/ProxySpanSessionManager/index.js +0 -2
  608. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs +0 -27
  609. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +0 -1
  610. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.d.cts +0 -15
  611. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.d.cts.map +0 -1
  612. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.d.ts +0 -15
  613. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.d.ts.map +0 -1
  614. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js +0 -25
  615. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +0 -1
  616. package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.cjs +0 -3
  617. package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.d.cts +0 -2
  618. package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.d.ts +0 -2
  619. package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.js +0 -2
  620. package/dist/instrumentations/fetch/MXLFetchInstrumentation/types.d.cts +0 -9
  621. package/dist/instrumentations/fetch/MXLFetchInstrumentation/types.d.cts.map +0 -1
  622. package/dist/instrumentations/fetch/MXLFetchInstrumentation/types.d.ts +0 -9
  623. package/dist/instrumentations/fetch/MXLFetchInstrumentation/types.d.ts.map +0 -1
  624. package/dist/instrumentations/fetch/index.cjs +0 -3
  625. package/dist/instrumentations/fetch/index.d.cts +0 -3
  626. package/dist/instrumentations/fetch/index.d.ts +0 -3
  627. package/dist/instrumentations/fetch/index.js +0 -2
  628. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs +0 -60
  629. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +0 -1
  630. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.cts +0 -24
  631. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.cts.map +0 -1
  632. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.ts +0 -24
  633. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.ts.map +0 -1
  634. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js +0 -59
  635. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +0 -1
  636. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.cjs +0 -19
  637. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.cjs.map +0 -1
  638. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.d.cts +0 -10
  639. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.d.cts.map +0 -1
  640. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.d.ts +0 -10
  641. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.d.ts.map +0 -1
  642. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.js +0 -16
  643. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.js.map +0 -1
  644. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.cjs +0 -3
  645. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.d.cts +0 -3
  646. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.d.ts +0 -3
  647. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.js +0 -2
  648. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.cts +0 -6
  649. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.cts.map +0 -1
  650. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.ts +0 -6
  651. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.ts.map +0 -1
  652. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs +0 -24
  653. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +0 -1
  654. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.cts +0 -14
  655. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.cts.map +0 -1
  656. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.ts +0 -14
  657. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.ts.map +0 -1
  658. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js +0 -23
  659. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +0 -1
  660. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.cjs +0 -3
  661. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.d.cts +0 -3
  662. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.d.ts +0 -3
  663. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.js +0 -2
  664. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.cts +0 -6
  665. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.cts.map +0 -1
  666. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.ts +0 -6
  667. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.ts.map +0 -1
  668. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs +0 -55
  669. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +0 -1
  670. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.cts +0 -22
  671. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.cts.map +0 -1
  672. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.ts +0 -22
  673. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.ts.map +0 -1
  674. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js +0 -54
  675. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +0 -1
  676. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.cjs +0 -7
  677. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.cjs.map +0 -1
  678. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.d.cts +0 -5
  679. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.d.cts.map +0 -1
  680. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.d.ts +0 -5
  681. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.d.ts.map +0 -1
  682. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.js +0 -6
  683. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.js.map +0 -1
  684. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.cjs +0 -3
  685. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.d.cts +0 -3
  686. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.d.ts +0 -3
  687. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.js +0 -2
  688. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.cjs +0 -0
  689. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.cts +0 -6
  690. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.cts.map +0 -1
  691. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.ts +0 -6
  692. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.ts.map +0 -1
  693. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.js +0 -0
  694. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs +0 -38
  695. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +0 -1
  696. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.cts +0 -17
  697. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.cts.map +0 -1
  698. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.ts +0 -17
  699. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.ts.map +0 -1
  700. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js +0 -37
  701. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +0 -1
  702. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.cjs +0 -3
  703. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.d.cts +0 -3
  704. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.d.ts +0 -3
  705. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.js +0 -2
  706. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.cjs +0 -0
  707. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.cts +0 -10
  708. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.cts.map +0 -1
  709. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.ts +0 -10
  710. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.ts.map +0 -1
  711. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.js +0 -0
  712. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs +0 -27
  713. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +0 -1
  714. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.d.cts +0 -15
  715. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.d.cts.map +0 -1
  716. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.d.ts +0 -15
  717. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.d.ts.map +0 -1
  718. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js +0 -25
  719. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +0 -1
  720. package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.cjs +0 -3
  721. package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.d.cts +0 -2
  722. package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.d.ts +0 -2
  723. package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.js +0 -2
  724. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.cjs +0 -0
  725. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.d.cts +0 -9
  726. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.d.cts.map +0 -1
  727. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.d.ts +0 -9
  728. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.d.ts.map +0 -1
  729. package/dist/instrumentations/xhr/MXLXHRInstrumentation/types.js +0 -0
  730. package/dist/instrumentations/xhr/index.cjs +0 -3
  731. package/dist/instrumentations/xhr/index.d.cts +0 -3
  732. package/dist/instrumentations/xhr/index.d.ts +0 -3
  733. package/dist/instrumentations/xhr/index.js +0 -2
  734. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs +0 -350
  735. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +0 -1
  736. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts +0 -72
  737. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +0 -1
  738. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts +0 -72
  739. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +0 -1
  740. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js +0 -348
  741. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +0 -1
  742. package/dist/managers/MXLSpanSessionManager/constants.cjs +0 -11
  743. package/dist/managers/MXLSpanSessionManager/constants.cjs.map +0 -1
  744. package/dist/managers/MXLSpanSessionManager/constants.d.cts +0 -7
  745. package/dist/managers/MXLSpanSessionManager/constants.d.cts.map +0 -1
  746. package/dist/managers/MXLSpanSessionManager/constants.d.ts +0 -7
  747. package/dist/managers/MXLSpanSessionManager/constants.d.ts.map +0 -1
  748. package/dist/managers/MXLSpanSessionManager/constants.js +0 -8
  749. package/dist/managers/MXLSpanSessionManager/constants.js.map +0 -1
  750. package/dist/managers/MXLSpanSessionManager/index.cjs +0 -3
  751. package/dist/managers/MXLSpanSessionManager/index.d.cts +0 -3
  752. package/dist/managers/MXLSpanSessionManager/index.d.ts +0 -3
  753. package/dist/managers/MXLSpanSessionManager/index.js +0 -2
  754. package/dist/managers/MXLSpanSessionManager/types.cjs +0 -0
  755. package/dist/managers/MXLSpanSessionManager/types.d.cts +0 -41
  756. package/dist/managers/MXLSpanSessionManager/types.d.cts.map +0 -1
  757. package/dist/managers/MXLSpanSessionManager/types.d.ts +0 -41
  758. package/dist/managers/MXLSpanSessionManager/types.d.ts.map +0 -1
  759. package/dist/managers/MXLSpanSessionManager/types.js +0 -0
  760. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs +0 -28
  761. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +0 -1
  762. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.d.cts +0 -16
  763. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.d.cts.map +0 -1
  764. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.d.ts +0 -16
  765. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.d.ts.map +0 -1
  766. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js +0 -26
  767. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +0 -1
  768. package/dist/processors/IdentifiableSessionLogRecordProcessor/index.cjs +0 -3
  769. package/dist/processors/IdentifiableSessionLogRecordProcessor/index.d.cts +0 -2
  770. package/dist/processors/IdentifiableSessionLogRecordProcessor/index.d.ts +0 -2
  771. package/dist/processors/IdentifiableSessionLogRecordProcessor/index.js +0 -2
  772. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.cjs +0 -0
  773. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.cts +0 -9
  774. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.cts.map +0 -1
  775. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.ts +0 -9
  776. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.ts.map +0 -1
  777. package/dist/processors/IdentifiableSessionLogRecordProcessor/types.js +0 -0
  778. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs +0 -95
  779. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +0 -1
  780. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.d.cts +0 -34
  781. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.d.cts.map +0 -1
  782. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.d.ts +0 -34
  783. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.d.ts.map +0 -1
  784. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js +0 -93
  785. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +0 -1
  786. package/dist/processors/MXLSessionBatchedSpanProcessor/index.cjs +0 -3
  787. package/dist/processors/MXLSessionBatchedSpanProcessor/index.d.cts +0 -2
  788. package/dist/processors/MXLSessionBatchedSpanProcessor/index.d.ts +0 -2
  789. package/dist/processors/MXLSessionBatchedSpanProcessor/index.js +0 -2
  790. package/dist/processors/MXLSessionBatchedSpanProcessor/types.cjs +0 -0
  791. package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.cts +0 -19
  792. package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.cts.map +0 -1
  793. package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.ts +0 -19
  794. package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.ts.map +0 -1
  795. package/dist/processors/MXLSessionBatchedSpanProcessor/types.js +0 -0
  796. package/dist/sdk/setupSessionRecorder.cjs +0 -45
  797. package/dist/sdk/setupSessionRecorder.cjs.map +0 -1
  798. package/dist/sdk/setupSessionRecorder.d.cts +0 -21
  799. package/dist/sdk/setupSessionRecorder.d.cts.map +0 -1
  800. package/dist/sdk/setupSessionRecorder.d.ts +0 -21
  801. package/dist/sdk/setupSessionRecorder.d.ts.map +0 -1
  802. package/dist/sdk/setupSessionRecorder.js +0 -42
  803. package/dist/sdk/setupSessionRecorder.js.map +0 -1
  804. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs +0 -116
  805. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +0 -1
  806. package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.cts +0 -42
  807. package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.cts.map +0 -1
  808. package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.ts +0 -42
  809. package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.ts.map +0 -1
  810. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js +0 -114
  811. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +0 -1
  812. package/dist/utils/MXLSpanStorage/index.cjs +0 -3
  813. package/dist/utils/MXLSpanStorage/index.d.cts +0 -2
  814. package/dist/utils/MXLSpanStorage/index.d.ts +0 -2
  815. package/dist/utils/MXLSpanStorage/index.js +0 -2
  816. package/dist/utils/MXLSpanStorage/types.cjs +0 -0
  817. package/dist/utils/MXLSpanStorage/types.d.cts +0 -2
  818. package/dist/utils/MXLSpanStorage/types.d.ts +0 -2
  819. package/dist/utils/MXLSpanStorage/types.js +0 -0
  820. /package/dist/{api-sessions/api/SessionAPI → instrumentations/replay/ReplayInstrumentation}/types.cjs +0 -0
  821. /package/dist/{api-sessions/api/SessionAPI → instrumentations/replay/ReplayInstrumentation}/types.js +0 -0
  822. /package/dist/{instrumentations/fetch/MXLFetchInstrumentation → managers/MXLUserSessionManager}/types.cjs +0 -0
  823. /package/dist/{instrumentations/fetch/MXLFetchInstrumentation → managers/MXLUserSessionManager}/types.js +0 -0
  824. /package/dist/{instrumentations/session/SpanSessionBrowserActivityInstrumentation → processors/MXLSessionPartBatchedSpanProcessor}/types.cjs +0 -0
  825. /package/dist/{instrumentations/session/SpanSessionBrowserActivityInstrumentation → processors/MXLSessionPartBatchedSpanProcessor}/types.js +0 -0
  826. /package/dist/{instrumentations/session/SpanSessionOnLoadInstrumentation → processors/UserSessionLogRecordProcessor}/types.cjs +0 -0
  827. /package/dist/{instrumentations/session/SpanSessionOnLoadInstrumentation → processors/UserSessionLogRecordProcessor}/types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ServerTimingInstrumentation.cjs","names":["MXLInstrumentationBase","SERVER_TIMING_EVENT_NAME","SeverityNumber","KEY_MXL_TYPE","KEY_MXL_SERVER_TIMING_NAME","KEY_MXL_SERVER_TIMING_DURATION","KEY_MXL_SERVER_TIMING_DESCRIPTION"],"sources":["../../../../src/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_SERVER_TIMING_DESCRIPTION,\n KEY_MXL_SERVER_TIMING_DURATION,\n KEY_MXL_SERVER_TIMING_NAME,\n SERVER_TIMING_EVENT_NAME,\n} from './constants';\nimport type { ServerTimingInstrumentationArgs } from './types';\n\nexport class ServerTimingInstrumentation extends MXLInstrumentationBase {\n private readonly _onLoad: () => void;\n private _performanceCollected = false;\n\n public constructor({\n diag,\n perf,\n limitManager,\n }: ServerTimingInstrumentationArgs = {}) {\n super({\n instrumentationName: 'ServerTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n diag,\n perf,\n limitManager,\n config: {},\n });\n\n this._onLoad = () => {\n this._readServerTiming();\n };\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n window.removeEventListener('load', this._onLoad);\n\n if (window.document.readyState === 'complete') {\n this._readServerTiming();\n return;\n }\n\n window.addEventListener('load', this._onLoad);\n }\n\n public disable(): void {\n window.removeEventListener('load', this._onLoad);\n }\n\n private _readServerTiming(): void {\n if (this._performanceCollected) {\n return;\n }\n this._performanceCollected = true;\n\n const navEntries = performance.getEntriesByType(\n 'navigation',\n ) as PerformanceNavigationTiming[];\n const serverTiming = navEntries[0]?.serverTiming;\n\n if (!serverTiming?.length) {\n return;\n }\n\n for (const entry of serverTiming) {\n if (this.limitManager?.limitServerTimingEntry()) {\n return;\n }\n\n this.logger.emit({\n eventName: SERVER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.ServerTiming,\n [KEY_MXL_SERVER_TIMING_NAME]: entry.name,\n [KEY_MXL_SERVER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_SERVER_TIMING_DESCRIPTION]: entry.description,\n },\n });\n }\n }\n}\n"],"mappings":";;;;;;;AAWA,IAAa,8BAAb,cAAiDA,uEAAAA,uBAAuB;CACtE;CACA,wBAAgC;CAEhC,YAAmB,EACjB,MACA,MACA,iBACmC,EAAE,EAAE;AACvC,QAAM;GACJ,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACA;GACA,QAAQ,EAAE;GACX,CAAC;AAEF,OAAK,gBAAgB;AACnB,QAAK,mBAAmB;;AAG1B,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;AAEhD,MAAI,OAAO,SAAS,eAAe,YAAY;AAC7C,QAAK,mBAAmB;AACxB;;AAGF,SAAO,iBAAiB,QAAQ,KAAK,QAAQ;;CAG/C,UAAuB;AACrB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;;CAGlD,oBAAkC;AAChC,MAAI,KAAK,sBACP;AAEF,OAAK,wBAAwB;EAK7B,MAAM,eAHa,YAAY,iBAC7B,aAE6B,CAAC,IAAI;AAEpC,MAAI,CAAC,cAAc,OACjB;AAGF,OAAK,MAAM,SAAS,cAAc;AAChC,OAAI,KAAK,cAAc,wBAAwB,CAC7C;AAGF,QAAK,OAAO,KAAK;IACf,WAAWC,6EAAAA;IACX,gBAAgBC,wBAAAA,eAAe;IAC/B,YAAY;MACTC,6BAAAA,eAAAA;MACAC,6EAAAA,6BAA6B,MAAM;MACnCC,6EAAAA,iCAAiC,MAAM;MACvCC,6EAAAA,oCAAoC,MAAM;KAC5C;IACF,CAAC"}
1
+ {"version":3,"file":"ServerTimingInstrumentation.cjs","names":["MXLInstrumentationBase","KEY_MXL_TYPE","KEY_MXL_SERVER_TIMING_NAME","KEY_MXL_SERVER_TIMING_DURATION","KEY_MXL_SERVER_TIMING_DESCRIPTION","SERVER_TIMING_EVENT_NAME","SeverityNumber"],"sources":["../../../../src/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_SERVER_TIMING_DESCRIPTION,\n KEY_MXL_SERVER_TIMING_DURATION,\n KEY_MXL_SERVER_TIMING_NAME,\n SERVER_TIMING_EVENT_NAME,\n} from './constants';\nimport type { ServerTimingInstrumentationArgs } from './types';\n\nexport class ServerTimingInstrumentation extends MXLInstrumentationBase {\n private readonly _onLoad: () => void;\n private _performanceCollected = false;\n\n public constructor({\n diag,\n perf,\n limitManager,\n }: ServerTimingInstrumentationArgs = {}) {\n super({\n config: {},\n diag,\n instrumentationName: 'ServerTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n limitManager,\n perf,\n });\n\n this._onLoad = () => {\n this._readServerTiming();\n };\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n window.removeEventListener('load', this._onLoad);\n\n if (window.document.readyState === 'complete') {\n this._readServerTiming();\n return;\n }\n\n window.addEventListener('load', this._onLoad);\n }\n\n public disable(): void {\n window.removeEventListener('load', this._onLoad);\n }\n\n private _readServerTiming(): void {\n if (this._performanceCollected) {\n return;\n }\n this._performanceCollected = true;\n\n const navEntries = performance.getEntriesByType(\n 'navigation',\n ) as PerformanceNavigationTiming[];\n const serverTiming = navEntries[0]?.serverTiming;\n\n if (!serverTiming?.length) {\n return;\n }\n\n for (const entry of serverTiming) {\n if (this.limitManager?.limitServerTimingEntry()) {\n return;\n }\n\n this.logger.emit({\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.ServerTiming,\n [KEY_MXL_SERVER_TIMING_NAME]: entry.name,\n [KEY_MXL_SERVER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_SERVER_TIMING_DESCRIPTION]: entry.description,\n },\n eventName: SERVER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n });\n }\n }\n}\n"],"mappings":";;;;;;;AAWA,IAAa,8BAAb,cAAiDA,uEAAAA,uBAAuB;CACtE;CACA,wBAAgC;CAEhC,YAAmB,EACjB,MACA,MACA,iBACmC,EAAE,EAAE;AACvC,QAAM;GACJ,QAAQ,EAAE;GACV;GACA,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACD,CAAC;AAEF,OAAK,gBAAgB;AACnB,QAAK,mBAAmB;;AAG1B,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;AAEhD,MAAI,OAAO,SAAS,eAAe,YAAY;AAC7C,QAAK,mBAAmB;AACxB;;AAGF,SAAO,iBAAiB,QAAQ,KAAK,QAAQ;;CAG/C,UAAuB;AACrB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;;CAGlD,oBAAkC;AAChC,MAAI,KAAK,sBACP;AAEF,OAAK,wBAAwB;EAK7B,MAAM,eAHa,YAAY,iBAC7B,aAE6B,CAAC,IAAI;AAEpC,MAAI,CAAC,cAAc,OACjB;AAGF,OAAK,MAAM,SAAS,cAAc;AAChC,OAAI,KAAK,cAAc,wBAAwB,CAC7C;AAGF,QAAK,OAAO,KAAK;IACf,YAAY;MACTC,6BAAAA,eAAAA;MACAC,6EAAAA,6BAA6B,MAAM;MACnCC,6EAAAA,iCAAiC,MAAM;MACvCC,6EAAAA,oCAAoC,MAAM;KAC5C;IACD,WAAWC,6EAAAA;IACX,gBAAgBC,wBAAAA,eAAe;IAChC,CAAC"}
@@ -8,12 +8,12 @@ var ServerTimingInstrumentation = class extends MXLInstrumentationBase {
8
8
  _performanceCollected = false;
9
9
  constructor({ diag, perf, limitManager } = {}) {
10
10
  super({
11
+ config: {},
12
+ diag,
11
13
  instrumentationName: "ServerTimingInstrumentation",
12
14
  instrumentationVersion: "1.0.0",
13
- diag,
14
- perf,
15
15
  limitManager,
16
- config: {}
16
+ perf
17
17
  });
18
18
  this._onLoad = () => {
19
19
  this._readServerTiming();
@@ -39,14 +39,14 @@ var ServerTimingInstrumentation = class extends MXLInstrumentationBase {
39
39
  for (const entry of serverTiming) {
40
40
  if (this.limitManager?.limitServerTimingEntry()) return;
41
41
  this.logger.emit({
42
- eventName: SERVER_TIMING_EVENT_NAME,
43
- severityNumber: SeverityNumber.INFO,
44
42
  attributes: {
45
43
  [KEY_MXL_TYPE]: "ux.server_timing",
46
44
  [KEY_MXL_SERVER_TIMING_NAME]: entry.name,
47
45
  [KEY_MXL_SERVER_TIMING_DURATION]: entry.duration,
48
46
  [KEY_MXL_SERVER_TIMING_DESCRIPTION]: entry.description
49
- }
47
+ },
48
+ eventName: SERVER_TIMING_EVENT_NAME,
49
+ severityNumber: SeverityNumber.INFO
50
50
  });
51
51
  }
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServerTimingInstrumentation.js","names":[],"sources":["../../../../src/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_SERVER_TIMING_DESCRIPTION,\n KEY_MXL_SERVER_TIMING_DURATION,\n KEY_MXL_SERVER_TIMING_NAME,\n SERVER_TIMING_EVENT_NAME,\n} from './constants';\nimport type { ServerTimingInstrumentationArgs } from './types';\n\nexport class ServerTimingInstrumentation extends MXLInstrumentationBase {\n private readonly _onLoad: () => void;\n private _performanceCollected = false;\n\n public constructor({\n diag,\n perf,\n limitManager,\n }: ServerTimingInstrumentationArgs = {}) {\n super({\n instrumentationName: 'ServerTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n diag,\n perf,\n limitManager,\n config: {},\n });\n\n this._onLoad = () => {\n this._readServerTiming();\n };\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n window.removeEventListener('load', this._onLoad);\n\n if (window.document.readyState === 'complete') {\n this._readServerTiming();\n return;\n }\n\n window.addEventListener('load', this._onLoad);\n }\n\n public disable(): void {\n window.removeEventListener('load', this._onLoad);\n }\n\n private _readServerTiming(): void {\n if (this._performanceCollected) {\n return;\n }\n this._performanceCollected = true;\n\n const navEntries = performance.getEntriesByType(\n 'navigation',\n ) as PerformanceNavigationTiming[];\n const serverTiming = navEntries[0]?.serverTiming;\n\n if (!serverTiming?.length) {\n return;\n }\n\n for (const entry of serverTiming) {\n if (this.limitManager?.limitServerTimingEntry()) {\n return;\n }\n\n this.logger.emit({\n eventName: SERVER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.ServerTiming,\n [KEY_MXL_SERVER_TIMING_NAME]: entry.name,\n [KEY_MXL_SERVER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_SERVER_TIMING_DESCRIPTION]: entry.description,\n },\n });\n }\n }\n}\n"],"mappings":";;;;;AAWA,IAAa,8BAAb,cAAiD,uBAAuB;CACtE;CACA,wBAAgC;CAEhC,YAAmB,EACjB,MACA,MACA,iBACmC,EAAE,EAAE;AACvC,QAAM;GACJ,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACA;GACA,QAAQ,EAAE;GACX,CAAC;AAEF,OAAK,gBAAgB;AACnB,QAAK,mBAAmB;;AAG1B,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;AAEhD,MAAI,OAAO,SAAS,eAAe,YAAY;AAC7C,QAAK,mBAAmB;AACxB;;AAGF,SAAO,iBAAiB,QAAQ,KAAK,QAAQ;;CAG/C,UAAuB;AACrB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;;CAGlD,oBAAkC;AAChC,MAAI,KAAK,sBACP;AAEF,OAAK,wBAAwB;EAK7B,MAAM,eAHa,YAAY,iBAC7B,aAE6B,CAAC,IAAI;AAEpC,MAAI,CAAC,cAAc,OACjB;AAGF,OAAK,MAAM,SAAS,cAAc;AAChC,OAAI,KAAK,cAAc,wBAAwB,CAC7C;AAGF,QAAK,OAAO,KAAK;IACf,WAAW;IACX,gBAAgB,eAAe;IAC/B,YAAY;MACT,eAAA;MACA,6BAA6B,MAAM;MACnC,iCAAiC,MAAM;MACvC,oCAAoC,MAAM;KAC5C;IACF,CAAC"}
1
+ {"version":3,"file":"ServerTimingInstrumentation.js","names":[],"sources":["../../../../src/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_SERVER_TIMING_DESCRIPTION,\n KEY_MXL_SERVER_TIMING_DURATION,\n KEY_MXL_SERVER_TIMING_NAME,\n SERVER_TIMING_EVENT_NAME,\n} from './constants';\nimport type { ServerTimingInstrumentationArgs } from './types';\n\nexport class ServerTimingInstrumentation extends MXLInstrumentationBase {\n private readonly _onLoad: () => void;\n private _performanceCollected = false;\n\n public constructor({\n diag,\n perf,\n limitManager,\n }: ServerTimingInstrumentationArgs = {}) {\n super({\n config: {},\n diag,\n instrumentationName: 'ServerTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n limitManager,\n perf,\n });\n\n this._onLoad = () => {\n this._readServerTiming();\n };\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n window.removeEventListener('load', this._onLoad);\n\n if (window.document.readyState === 'complete') {\n this._readServerTiming();\n return;\n }\n\n window.addEventListener('load', this._onLoad);\n }\n\n public disable(): void {\n window.removeEventListener('load', this._onLoad);\n }\n\n private _readServerTiming(): void {\n if (this._performanceCollected) {\n return;\n }\n this._performanceCollected = true;\n\n const navEntries = performance.getEntriesByType(\n 'navigation',\n ) as PerformanceNavigationTiming[];\n const serverTiming = navEntries[0]?.serverTiming;\n\n if (!serverTiming?.length) {\n return;\n }\n\n for (const entry of serverTiming) {\n if (this.limitManager?.limitServerTimingEntry()) {\n return;\n }\n\n this.logger.emit({\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.ServerTiming,\n [KEY_MXL_SERVER_TIMING_NAME]: entry.name,\n [KEY_MXL_SERVER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_SERVER_TIMING_DESCRIPTION]: entry.description,\n },\n eventName: SERVER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n });\n }\n }\n}\n"],"mappings":";;;;;AAWA,IAAa,8BAAb,cAAiD,uBAAuB;CACtE;CACA,wBAAgC;CAEhC,YAAmB,EACjB,MACA,MACA,iBACmC,EAAE,EAAE;AACvC,QAAM;GACJ,QAAQ,EAAE;GACV;GACA,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACD,CAAC;AAEF,OAAK,gBAAgB;AACnB,QAAK,mBAAmB;;AAG1B,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;AAEhD,MAAI,OAAO,SAAS,eAAe,YAAY;AAC7C,QAAK,mBAAmB;AACxB;;AAGF,SAAO,iBAAiB,QAAQ,KAAK,QAAQ;;CAG/C,UAAuB;AACrB,SAAO,oBAAoB,QAAQ,KAAK,QAAQ;;CAGlD,oBAAkC;AAChC,MAAI,KAAK,sBACP;AAEF,OAAK,wBAAwB;EAK7B,MAAM,eAHa,YAAY,iBAC7B,aAE6B,CAAC,IAAI;AAEpC,MAAI,CAAC,cAAc,OACjB;AAGF,OAAK,MAAM,SAAS,cAAc;AAChC,OAAI,KAAK,cAAc,wBAAwB,CAC7C;AAGF,QAAK,OAAO,KAAK;IACf,YAAY;MACT,eAAA;MACA,6BAA6B,MAAM;MACnC,iCAAiC,MAAM;MACvC,oCAAoC,MAAM;KAC5C;IACD,WAAW;IACX,gBAAgB,eAAe;IAChC,CAAC"}
@@ -1,9 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_instrumentations_MXLInstrumentationBase_MXLInstrumentationBase = require("../MXLInstrumentationBase/MXLInstrumentationBase.cjs");
3
- const require_managers_MXLSpanSessionManager_MXLSpanSessionManager = require("../../managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs");
4
- const require_instrumentations_session_SpanSessionBrowserActivityInstrumentation_SpanSessionBrowserActivityInstrumentation = require("./SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs");
5
- const require_instrumentations_session_SpanSessionVisibilityInstrumentation_SpanSessionVisibilityInstrumentation = require("./SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs");
6
3
  exports.MXLInstrumentationBase = require_instrumentations_MXLInstrumentationBase_MXLInstrumentationBase.MXLInstrumentationBase;
7
- exports.MXLSpanSessionManager = require_managers_MXLSpanSessionManager_MXLSpanSessionManager.MXLSpanSessionManager;
8
- exports.SpanSessionBrowserActivityInstrumentation = require_instrumentations_session_SpanSessionBrowserActivityInstrumentation_SpanSessionBrowserActivityInstrumentation.SpanSessionBrowserActivityInstrumentation;
9
- exports.SpanSessionVisibilityInstrumentation = require_instrumentations_session_SpanSessionVisibilityInstrumentation_SpanSessionVisibilityInstrumentation.SpanSessionVisibilityInstrumentation;
@@ -1,9 +1,4 @@
1
- import { MXLSpanSessionManager } from "../../managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs";
2
1
  import { MXLInstrumentationBaseArgs } from "../MXLInstrumentationBase/types.cjs";
3
2
  import { MXLInstrumentationBase } from "../MXLInstrumentationBase/MXLInstrumentationBase.cjs";
4
- import { SpanSessionBrowserActivityInstrumentationArgs } from "./SpanSessionBrowserActivityInstrumentation/types.cjs";
5
- import { SpanSessionBrowserActivityInstrumentation } from "./SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs";
6
- import { SpanSessionVisibilityInstrumentationArgs } from "./SpanSessionVisibilityInstrumentation/types.cjs";
7
- import { SpanSessionVisibilityInstrumentation } from "./SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs";
8
- import { SessionSpan } from "./types.cjs";
9
- export { MXLInstrumentationBase, type MXLInstrumentationBaseArgs, MXLSpanSessionManager, type SessionSpan, SpanSessionBrowserActivityInstrumentation, type SpanSessionBrowserActivityInstrumentationArgs, SpanSessionVisibilityInstrumentation, type SpanSessionVisibilityInstrumentationArgs };
3
+ import { SessionPartSpan } from "./types.cjs";
4
+ export { MXLInstrumentationBase, type MXLInstrumentationBaseArgs, type SessionPartSpan };
@@ -1,9 +1,4 @@
1
- import { MXLSpanSessionManager } from "../../managers/MXLSpanSessionManager/MXLSpanSessionManager.js";
2
1
  import { MXLInstrumentationBaseArgs } from "../MXLInstrumentationBase/types.js";
3
2
  import { MXLInstrumentationBase } from "../MXLInstrumentationBase/MXLInstrumentationBase.js";
4
- import { SpanSessionBrowserActivityInstrumentationArgs } from "./SpanSessionBrowserActivityInstrumentation/types.js";
5
- import { SpanSessionBrowserActivityInstrumentation } from "./SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js";
6
- import { SpanSessionVisibilityInstrumentationArgs } from "./SpanSessionVisibilityInstrumentation/types.js";
7
- import { SpanSessionVisibilityInstrumentation } from "./SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js";
8
- import { SessionSpan } from "./types.js";
9
- export { MXLInstrumentationBase, type MXLInstrumentationBaseArgs, MXLSpanSessionManager, type SessionSpan, SpanSessionBrowserActivityInstrumentation, type SpanSessionBrowserActivityInstrumentationArgs, SpanSessionVisibilityInstrumentation, type SpanSessionVisibilityInstrumentationArgs };
3
+ import { SessionPartSpan } from "./types.js";
4
+ export { MXLInstrumentationBase, type MXLInstrumentationBaseArgs, type SessionPartSpan };
@@ -1,5 +1,2 @@
1
1
  import { MXLInstrumentationBase } from "../MXLInstrumentationBase/MXLInstrumentationBase.js";
2
- import { MXLSpanSessionManager } from "../../managers/MXLSpanSessionManager/MXLSpanSessionManager.js";
3
- import { SpanSessionBrowserActivityInstrumentation } from "./SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js";
4
- import { SpanSessionVisibilityInstrumentation } from "./SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js";
5
- export { MXLInstrumentationBase, MXLSpanSessionManager, SpanSessionBrowserActivityInstrumentation, SpanSessionVisibilityInstrumentation };
2
+ export { MXLInstrumentationBase };
@@ -3,12 +3,12 @@ import { Attributes } from "@opentelemetry/api";
3
3
  import { ReadableSpan } from "@opentelemetry/sdk-trace-web";
4
4
 
5
5
  //#region src/instrumentations/session/types.d.ts
6
- interface SessionSpanAttributes extends Attributes {
7
- [KEY_MXL_TYPE]: MXL_TYPES.Session;
6
+ interface SessionPartSpanAttributes extends Attributes {
7
+ [KEY_MXL_TYPE]: MXL_TYPES.SessionPart;
8
8
  }
9
- interface SessionSpan extends ReadableSpan {
10
- attributes: SessionSpanAttributes;
9
+ interface SessionPartSpan extends ReadableSpan {
10
+ attributes: SessionPartSpanAttributes;
11
11
  }
12
12
  //#endregion
13
- export { SessionSpan };
13
+ export { SessionPartSpan };
14
14
  //# sourceMappingURL=types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/instrumentations/session/types.ts"],"mappings":";;;;;UAIU,qBAAA,SAA8B,UAAA;EAAA,CACrC,YAAA,GAAe,SAAA,CAAU,OAAA;AAAA;AAAA,UAGX,WAAA,SAAoB,YAAA;EACnC,UAAA,EAAY,qBAAA;AAAA"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/instrumentations/session/types.ts"],"mappings":";;;;;UAIU,yBAAA,SAAkC,UAAA;EAAA,CACzC,YAAA,GAAe,SAAA,CAAU,WAAA;AAAA;AAAA,UAGX,eAAA,SAAwB,YAAA;EACvC,UAAA,EAAY,yBAAA;AAAA"}
@@ -3,12 +3,12 @@ import { Attributes } from "@opentelemetry/api";
3
3
  import { ReadableSpan } from "@opentelemetry/sdk-trace-web";
4
4
 
5
5
  //#region src/instrumentations/session/types.d.ts
6
- interface SessionSpanAttributes extends Attributes {
7
- [KEY_MXL_TYPE]: MXL_TYPES.Session;
6
+ interface SessionPartSpanAttributes extends Attributes {
7
+ [KEY_MXL_TYPE]: MXL_TYPES.SessionPart;
8
8
  }
9
- interface SessionSpan extends ReadableSpan {
10
- attributes: SessionSpanAttributes;
9
+ interface SessionPartSpan extends ReadableSpan {
10
+ attributes: SessionPartSpanAttributes;
11
11
  }
12
12
  //#endregion
13
- export { SessionSpan };
13
+ export { SessionPartSpan };
14
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/instrumentations/session/types.ts"],"mappings":";;;;;UAIU,qBAAA,SAA8B,UAAA;EAAA,CACrC,YAAA,GAAe,SAAA,CAAU,OAAA;AAAA;AAAA,UAGX,WAAA,SAAoB,YAAA;EACnC,UAAA,EAAY,qBAAA;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/instrumentations/session/types.ts"],"mappings":";;;;;UAIU,yBAAA,SAAkC,UAAA;EAAA,CACzC,YAAA,GAAe,SAAA,CAAU,WAAA;AAAA;AAAA,UAGX,eAAA,SAAwB,YAAA;EACvC,UAAA,EAAY,yBAAA;AAAA"}
@@ -14,12 +14,12 @@ var UserTimingInstrumentation = class extends require_instrumentations_MXLInstru
14
14
  _allowedEntries;
15
15
  constructor({ diag, perf, limitManager, allowedEntries } = {}) {
16
16
  super({
17
+ config: {},
18
+ diag,
17
19
  instrumentationName: "UserTimingInstrumentation",
18
20
  instrumentationVersion: "1.0.0",
19
- diag,
20
- perf,
21
21
  limitManager,
22
- config: {}
22
+ perf
23
23
  });
24
24
  this._allowedEntries = allowedEntries;
25
25
  if (this._config.enabled) this.enable();
@@ -60,7 +60,6 @@ var UserTimingInstrumentation = class extends require_instrumentations_MXLInstru
60
60
  if (entry.entryType === "measure") {
61
61
  const measureDetail = entry.detail;
62
62
  this.tracer.startSpan(entry.name, {
63
- startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),
64
63
  attributes: {
65
64
  [require_constants_attributes.KEY_MXL_TYPE]: "ux.user_timing",
66
65
  [require_constants_attributes.KEY_MXL_INSTRUMENTATION]: "user_timing",
@@ -68,16 +67,14 @@ var UserTimingInstrumentation = class extends require_instrumentations_MXLInstru
68
67
  [require_instrumentations_user_timing_UserTimingInstrumentation_constants.KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(entry.startTime),
69
68
  [require_instrumentations_user_timing_UserTimingInstrumentation_constants.KEY_MXL_USER_TIMING_DURATION]: entry.duration,
70
69
  ...measureDetail != null && { ["mxl.user_timing.detail"]: JSON.stringify(measureDetail) }
71
- }
70
+ },
71
+ startTime: this.perf.epochMillisFromOriginOffset(entry.startTime)
72
72
  }).end(this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration));
73
73
  return;
74
74
  }
75
- const detail = entry.detail;
75
+ const { detail } = entry;
76
76
  const body = detail != null ? JSON.stringify(detail) : void 0;
77
77
  this.logger.emit({
78
- timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),
79
- eventName: require_instrumentations_user_timing_UserTimingInstrumentation_constants.USER_TIMING_EVENT_NAME,
80
- severityNumber: _opentelemetry_api_logs.SeverityNumber.INFO,
81
78
  attributes: {
82
79
  [require_constants_attributes.KEY_MXL_TYPE]: "ux.user_timing",
83
80
  [require_instrumentations_user_timing_UserTimingInstrumentation_constants.KEY_MXL_USER_TIMING_NAME]: entry.name,
@@ -85,7 +82,10 @@ var UserTimingInstrumentation = class extends require_instrumentations_MXLInstru
85
82
  [require_instrumentations_user_timing_UserTimingInstrumentation_constants.KEY_MXL_USER_TIMING_DURATION]: entry.duration,
86
83
  [require_instrumentations_user_timing_UserTimingInstrumentation_constants.KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType
87
84
  },
88
- body
85
+ body,
86
+ eventName: require_instrumentations_user_timing_UserTimingInstrumentation_constants.USER_TIMING_EVENT_NAME,
87
+ severityNumber: _opentelemetry_api_logs.SeverityNumber.INFO,
88
+ timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime)
89
89
  });
90
90
  }
91
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UserTimingInstrumentation.cjs","names":["MXLInstrumentationBase","createPerformanceObserver","KEY_MXL_TYPE","KEY_MXL_INSTRUMENTATION","KEY_MXL_USER_TIMING_ENTRY_TYPE","KEY_MXL_USER_TIMING_START_TIME","KEY_MXL_USER_TIMING_DURATION","USER_TIMING_EVENT_NAME","SeverityNumber","KEY_MXL_USER_TIMING_NAME"],"sources":["../../../../src/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n KEY_MXL_INSTRUMENTATION,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXL_PERFORMANCE_INSTRUMENTATIONS } from '../../../constants/attributes';\nimport { createPerformanceObserver } from '../../../utils';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_USER_TIMING_DETAIL,\n KEY_MXL_USER_TIMING_DURATION,\n KEY_MXL_USER_TIMING_ENTRY_TYPE,\n KEY_MXL_USER_TIMING_NAME,\n KEY_MXL_USER_TIMING_START_TIME,\n USER_TIMING_EVENT_NAME,\n} from './constants';\nimport type {\n UserTimingEntryFilter,\n UserTimingInstrumentationArgs,\n} from './types';\n\nexport class UserTimingInstrumentation extends MXLInstrumentationBase {\n private _markObserver: PerformanceObserver | null = null;\n private _measureObserver: PerformanceObserver | null = null;\n private _seenEntries: Set<string> = new Set();\n private _isEnabled = false;\n private readonly _allowedEntries: UserTimingEntryFilter | undefined;\n\n public constructor({\n diag,\n perf,\n limitManager,\n allowedEntries,\n }: UserTimingInstrumentationArgs = {}) {\n super({\n instrumentationName: 'UserTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n diag,\n perf,\n limitManager,\n config: {},\n });\n this._allowedEntries = allowedEntries;\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n if (this._isEnabled) {\n return;\n }\n\n this._isEnabled = true;\n this._seenEntries = new Set();\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n }\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n }\n\n this._markObserver = createPerformanceObserver<PerformanceMark>(\n 'mark',\n this._processEntry.bind(this),\n { diag: this._diag },\n );\n\n if (!this._markObserver) {\n this._diag.error('failed to enable mark observer');\n }\n\n this._measureObserver = createPerformanceObserver<PerformanceMeasure>(\n 'measure',\n (entry) => this._processEntry(entry),\n { diag: this._diag },\n );\n\n if (!this._measureObserver) {\n this._diag.error('failed to enable measure observer');\n }\n\n if (!this._markObserver && !this._measureObserver) {\n this._isEnabled = false;\n }\n }\n\n public disable(): void {\n this._isEnabled = false;\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n this._markObserver = null;\n }\n\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n this._measureObserver = null;\n }\n\n this._seenEntries = new Set();\n }\n\n private _processEntry(entry: PerformanceMark | PerformanceMeasure): void {\n if (!this._isEnabled) {\n return;\n }\n\n if (this._allowedEntries !== undefined) {\n const allowed = Array.isArray(this._allowedEntries)\n ? this._allowedEntries.includes(entry.name)\n : this._allowedEntries(entry);\n if (!allowed) {\n return;\n }\n }\n\n const key = `${location.href}::${entry.name}`;\n // De-duplicate entries by name and page URL, only processing the first occurrence of each unique name on each page URL\n if (this._seenEntries.has(key)) {\n return;\n }\n this._seenEntries.add(key);\n\n if (\n this.limitManager?.limitUserTimingEntry(\n entry.entryType as 'mark' | 'measure',\n )\n ) {\n return;\n }\n\n if (entry.entryType === 'measure') {\n const measureDetail = (entry as PerformanceMeasure).detail;\n const span = this.tracer.startSpan(entry.name, {\n startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_INSTRUMENTATION]:\n MXL_PERFORMANCE_INSTRUMENTATIONS.UserTiming,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n ...(measureDetail != null && {\n [KEY_MXL_USER_TIMING_DETAIL]: JSON.stringify(measureDetail),\n }),\n },\n });\n span.end(\n this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration),\n );\n return;\n }\n\n const detail = (entry as PerformanceMark).detail;\n const body = detail != null ? JSON.stringify(detail) : undefined;\n\n this.logger.emit({\n timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),\n eventName: USER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_USER_TIMING_NAME]: entry.name,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n },\n body,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"UserTimingInstrumentation.cjs","names":["MXLInstrumentationBase","createPerformanceObserver","KEY_MXL_TYPE","KEY_MXL_INSTRUMENTATION","KEY_MXL_USER_TIMING_ENTRY_TYPE","KEY_MXL_USER_TIMING_START_TIME","KEY_MXL_USER_TIMING_DURATION","KEY_MXL_USER_TIMING_NAME","USER_TIMING_EVENT_NAME","SeverityNumber"],"sources":["../../../../src/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n KEY_MXL_INSTRUMENTATION,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXL_PERFORMANCE_INSTRUMENTATIONS } from '../../../constants/attributes';\nimport { createPerformanceObserver } from '../../../utils';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_USER_TIMING_DETAIL,\n KEY_MXL_USER_TIMING_DURATION,\n KEY_MXL_USER_TIMING_ENTRY_TYPE,\n KEY_MXL_USER_TIMING_NAME,\n KEY_MXL_USER_TIMING_START_TIME,\n USER_TIMING_EVENT_NAME,\n} from './constants';\nimport type {\n UserTimingEntryFilter,\n UserTimingInstrumentationArgs,\n} from './types';\n\nexport class UserTimingInstrumentation extends MXLInstrumentationBase {\n private _markObserver: PerformanceObserver | null = null;\n private _measureObserver: PerformanceObserver | null = null;\n private _seenEntries = new Set<string>();\n private _isEnabled = false;\n private readonly _allowedEntries: UserTimingEntryFilter | undefined;\n\n public constructor({\n diag,\n perf,\n limitManager,\n allowedEntries,\n }: UserTimingInstrumentationArgs = {}) {\n super({\n config: {},\n diag,\n instrumentationName: 'UserTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n limitManager,\n perf,\n });\n this._allowedEntries = allowedEntries;\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n if (this._isEnabled) {\n return;\n }\n\n this._isEnabled = true;\n this._seenEntries = new Set();\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n }\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n }\n\n this._markObserver = createPerformanceObserver<PerformanceMark>(\n 'mark',\n this._processEntry.bind(this),\n { diag: this._diag },\n );\n\n if (!this._markObserver) {\n this._diag.error('failed to enable mark observer');\n }\n\n this._measureObserver = createPerformanceObserver<PerformanceMeasure>(\n 'measure',\n (entry) => this._processEntry(entry),\n { diag: this._diag },\n );\n\n if (!this._measureObserver) {\n this._diag.error('failed to enable measure observer');\n }\n\n if (!this._markObserver && !this._measureObserver) {\n this._isEnabled = false;\n }\n }\n\n public disable(): void {\n this._isEnabled = false;\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n this._markObserver = null;\n }\n\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n this._measureObserver = null;\n }\n\n this._seenEntries = new Set();\n }\n\n private _processEntry(entry: PerformanceMark | PerformanceMeasure): void {\n if (!this._isEnabled) {\n return;\n }\n\n if (this._allowedEntries !== undefined) {\n const allowed = Array.isArray(this._allowedEntries)\n ? this._allowedEntries.includes(entry.name)\n : this._allowedEntries(entry);\n if (!allowed) {\n return;\n }\n }\n\n const key = `${location.href}::${entry.name}`;\n // De-duplicate entries by name and page URL, only processing the first occurrence of each unique name on each page URL\n if (this._seenEntries.has(key)) {\n return;\n }\n this._seenEntries.add(key);\n\n if (\n this.limitManager?.limitUserTimingEntry(\n entry.entryType as 'mark' | 'measure',\n )\n ) {\n return;\n }\n\n if (entry.entryType === 'measure') {\n const measureDetail = (entry as PerformanceMeasure).detail;\n const span = this.tracer.startSpan(entry.name, {\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_INSTRUMENTATION]:\n MXL_PERFORMANCE_INSTRUMENTATIONS.UserTiming,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n ...(measureDetail != null && {\n [KEY_MXL_USER_TIMING_DETAIL]: JSON.stringify(measureDetail),\n }),\n },\n startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),\n });\n span.end(\n this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration),\n );\n return;\n }\n\n const { detail } = entry as PerformanceMark;\n const body = detail != null ? JSON.stringify(detail) : undefined;\n\n this.logger.emit({\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_USER_TIMING_NAME]: entry.name,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n },\n body,\n eventName: USER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),\n });\n }\n}\n"],"mappings":"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"}
@@ -12,12 +12,12 @@ var UserTimingInstrumentation = class extends MXLInstrumentationBase {
12
12
  _allowedEntries;
13
13
  constructor({ diag, perf, limitManager, allowedEntries } = {}) {
14
14
  super({
15
+ config: {},
16
+ diag,
15
17
  instrumentationName: "UserTimingInstrumentation",
16
18
  instrumentationVersion: "1.0.0",
17
- diag,
18
- perf,
19
19
  limitManager,
20
- config: {}
20
+ perf
21
21
  });
22
22
  this._allowedEntries = allowedEntries;
23
23
  if (this._config.enabled) this.enable();
@@ -58,7 +58,6 @@ var UserTimingInstrumentation = class extends MXLInstrumentationBase {
58
58
  if (entry.entryType === "measure") {
59
59
  const measureDetail = entry.detail;
60
60
  this.tracer.startSpan(entry.name, {
61
- startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),
62
61
  attributes: {
63
62
  [KEY_MXL_TYPE]: "ux.user_timing",
64
63
  [KEY_MXL_INSTRUMENTATION]: "user_timing",
@@ -66,16 +65,14 @@ var UserTimingInstrumentation = class extends MXLInstrumentationBase {
66
65
  [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(entry.startTime),
67
66
  [KEY_MXL_USER_TIMING_DURATION]: entry.duration,
68
67
  ...measureDetail != null && { ["mxl.user_timing.detail"]: JSON.stringify(measureDetail) }
69
- }
68
+ },
69
+ startTime: this.perf.epochMillisFromOriginOffset(entry.startTime)
70
70
  }).end(this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration));
71
71
  return;
72
72
  }
73
- const detail = entry.detail;
73
+ const { detail } = entry;
74
74
  const body = detail != null ? JSON.stringify(detail) : void 0;
75
75
  this.logger.emit({
76
- timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),
77
- eventName: USER_TIMING_EVENT_NAME,
78
- severityNumber: SeverityNumber.INFO,
79
76
  attributes: {
80
77
  [KEY_MXL_TYPE]: "ux.user_timing",
81
78
  [KEY_MXL_USER_TIMING_NAME]: entry.name,
@@ -83,7 +80,10 @@ var UserTimingInstrumentation = class extends MXLInstrumentationBase {
83
80
  [KEY_MXL_USER_TIMING_DURATION]: entry.duration,
84
81
  [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType
85
82
  },
86
- body
83
+ body,
84
+ eventName: USER_TIMING_EVENT_NAME,
85
+ severityNumber: SeverityNumber.INFO,
86
+ timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime)
87
87
  });
88
88
  }
89
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UserTimingInstrumentation.js","names":[],"sources":["../../../../src/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n KEY_MXL_INSTRUMENTATION,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXL_PERFORMANCE_INSTRUMENTATIONS } from '../../../constants/attributes';\nimport { createPerformanceObserver } from '../../../utils';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_USER_TIMING_DETAIL,\n KEY_MXL_USER_TIMING_DURATION,\n KEY_MXL_USER_TIMING_ENTRY_TYPE,\n KEY_MXL_USER_TIMING_NAME,\n KEY_MXL_USER_TIMING_START_TIME,\n USER_TIMING_EVENT_NAME,\n} from './constants';\nimport type {\n UserTimingEntryFilter,\n UserTimingInstrumentationArgs,\n} from './types';\n\nexport class UserTimingInstrumentation extends MXLInstrumentationBase {\n private _markObserver: PerformanceObserver | null = null;\n private _measureObserver: PerformanceObserver | null = null;\n private _seenEntries: Set<string> = new Set();\n private _isEnabled = false;\n private readonly _allowedEntries: UserTimingEntryFilter | undefined;\n\n public constructor({\n diag,\n perf,\n limitManager,\n allowedEntries,\n }: UserTimingInstrumentationArgs = {}) {\n super({\n instrumentationName: 'UserTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n diag,\n perf,\n limitManager,\n config: {},\n });\n this._allowedEntries = allowedEntries;\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n if (this._isEnabled) {\n return;\n }\n\n this._isEnabled = true;\n this._seenEntries = new Set();\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n }\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n }\n\n this._markObserver = createPerformanceObserver<PerformanceMark>(\n 'mark',\n this._processEntry.bind(this),\n { diag: this._diag },\n );\n\n if (!this._markObserver) {\n this._diag.error('failed to enable mark observer');\n }\n\n this._measureObserver = createPerformanceObserver<PerformanceMeasure>(\n 'measure',\n (entry) => this._processEntry(entry),\n { diag: this._diag },\n );\n\n if (!this._measureObserver) {\n this._diag.error('failed to enable measure observer');\n }\n\n if (!this._markObserver && !this._measureObserver) {\n this._isEnabled = false;\n }\n }\n\n public disable(): void {\n this._isEnabled = false;\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n this._markObserver = null;\n }\n\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n this._measureObserver = null;\n }\n\n this._seenEntries = new Set();\n }\n\n private _processEntry(entry: PerformanceMark | PerformanceMeasure): void {\n if (!this._isEnabled) {\n return;\n }\n\n if (this._allowedEntries !== undefined) {\n const allowed = Array.isArray(this._allowedEntries)\n ? this._allowedEntries.includes(entry.name)\n : this._allowedEntries(entry);\n if (!allowed) {\n return;\n }\n }\n\n const key = `${location.href}::${entry.name}`;\n // De-duplicate entries by name and page URL, only processing the first occurrence of each unique name on each page URL\n if (this._seenEntries.has(key)) {\n return;\n }\n this._seenEntries.add(key);\n\n if (\n this.limitManager?.limitUserTimingEntry(\n entry.entryType as 'mark' | 'measure',\n )\n ) {\n return;\n }\n\n if (entry.entryType === 'measure') {\n const measureDetail = (entry as PerformanceMeasure).detail;\n const span = this.tracer.startSpan(entry.name, {\n startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_INSTRUMENTATION]:\n MXL_PERFORMANCE_INSTRUMENTATIONS.UserTiming,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n ...(measureDetail != null && {\n [KEY_MXL_USER_TIMING_DETAIL]: JSON.stringify(measureDetail),\n }),\n },\n });\n span.end(\n this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration),\n );\n return;\n }\n\n const detail = (entry as PerformanceMark).detail;\n const body = detail != null ? JSON.stringify(detail) : undefined;\n\n this.logger.emit({\n timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),\n eventName: USER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_USER_TIMING_NAME]: entry.name,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n },\n body,\n });\n }\n}\n"],"mappings":";;;;;;AAsBA,IAAa,4BAAb,cAA+C,uBAAuB;CACpE,gBAAoD;CACpD,mBAAuD;CACvD,+BAAoC,IAAI,KAAK;CAC7C,aAAqB;CACrB;CAEA,YAAmB,EACjB,MACA,MACA,cACA,mBACiC,EAAE,EAAE;AACrC,QAAM;GACJ,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACA;GACA,QAAQ,EAAE;GACX,CAAC;AACF,OAAK,kBAAkB;AAEvB,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,MAAI,KAAK,WACP;AAGF,OAAK,aAAa;AAClB,OAAK,+BAAe,IAAI,KAAK;AAE7B,MAAI,KAAK,cACP,MAAK,cAAc,YAAY;AAEjC,MAAI,KAAK,iBACP,MAAK,iBAAiB,YAAY;AAGpC,OAAK,gBAAgB,0BACnB,QACA,KAAK,cAAc,KAAK,KAAK,EAC7B,EAAE,MAAM,KAAK,OAAO,CACrB;AAED,MAAI,CAAC,KAAK,cACR,MAAK,MAAM,MAAM,iCAAiC;AAGpD,OAAK,mBAAmB,0BACtB,YACC,UAAU,KAAK,cAAc,MAAM,EACpC,EAAE,MAAM,KAAK,OAAO,CACrB;AAED,MAAI,CAAC,KAAK,iBACR,MAAK,MAAM,MAAM,oCAAoC;AAGvD,MAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,iBAC/B,MAAK,aAAa;;CAItB,UAAuB;AACrB,OAAK,aAAa;AAElB,MAAI,KAAK,eAAe;AACtB,QAAK,cAAc,YAAY;AAC/B,QAAK,gBAAgB;;AAGvB,MAAI,KAAK,kBAAkB;AACzB,QAAK,iBAAiB,YAAY;AAClC,QAAK,mBAAmB;;AAG1B,OAAK,+BAAe,IAAI,KAAK;;CAG/B,cAAsB,OAAmD;AACvE,MAAI,CAAC,KAAK,WACR;AAGF,MAAI,KAAK,oBAAoB,KAAA;OAIvB,EAHY,MAAM,QAAQ,KAAK,gBAAgB,GAC/C,KAAK,gBAAgB,SAAS,MAAM,KAAK,GACzC,KAAK,gBAAgB,MAAM,EAE7B;;EAIJ,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI,MAAM;AAEvC,MAAI,KAAK,aAAa,IAAI,IAAI,CAC5B;AAEF,OAAK,aAAa,IAAI,IAAI;AAE1B,MACE,KAAK,cAAc,qBACjB,MAAM,UACP,CAED;AAGF,MAAI,MAAM,cAAc,WAAW;GACjC,MAAM,gBAAiB,MAA6B;AACvC,QAAK,OAAO,UAAU,MAAM,MAAM;IAC7C,WAAW,KAAK,KAAK,4BAA4B,MAAM,UAAU;IACjE,YAAY;MACT,eAAA;MACA,0BAAA;MAEA,iCAAiC,MAAM;MACvC,iCAAiC,KAAK,KAAK,mBAC1C,MAAM,UACP;MACA,+BAA+B,MAAM;KACtC,GAAI,iBAAiB,QAAQ,GAAA,2BACG,KAAK,UAAU,cAAc,EAC5D;KACF;IACF,CACG,CAAC,IACH,KAAK,KAAK,4BAA4B,MAAM,YAAY,MAAM,SAAS,CACxE;AACD;;EAGF,MAAM,SAAU,MAA0B;EAC1C,MAAM,OAAO,UAAU,OAAO,KAAK,UAAU,OAAO,GAAG,KAAA;AAEvD,OAAK,OAAO,KAAK;GACf,WAAW,KAAK,KAAK,4BAA4B,MAAM,UAAU;GACjE,WAAW;GACX,gBAAgB,eAAe;GAC/B,YAAY;KACT,eAAA;KACA,2BAA2B,MAAM;KACjC,iCAAiC,KAAK,KAAK,mBAC1C,MAAM,UACP;KACA,+BAA+B,MAAM;KACrC,iCAAiC,MAAM;IACzC;GACD;GACD,CAAC"}
1
+ {"version":3,"file":"UserTimingInstrumentation.js","names":[],"sources":["../../../../src/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.ts"],"sourcesContent":["import { SeverityNumber } from '@opentelemetry/api-logs';\nimport {\n KEY_MXL_INSTRUMENTATION,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXL_PERFORMANCE_INSTRUMENTATIONS } from '../../../constants/attributes';\nimport { createPerformanceObserver } from '../../../utils';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_USER_TIMING_DETAIL,\n KEY_MXL_USER_TIMING_DURATION,\n KEY_MXL_USER_TIMING_ENTRY_TYPE,\n KEY_MXL_USER_TIMING_NAME,\n KEY_MXL_USER_TIMING_START_TIME,\n USER_TIMING_EVENT_NAME,\n} from './constants';\nimport type {\n UserTimingEntryFilter,\n UserTimingInstrumentationArgs,\n} from './types';\n\nexport class UserTimingInstrumentation extends MXLInstrumentationBase {\n private _markObserver: PerformanceObserver | null = null;\n private _measureObserver: PerformanceObserver | null = null;\n private _seenEntries = new Set<string>();\n private _isEnabled = false;\n private readonly _allowedEntries: UserTimingEntryFilter | undefined;\n\n public constructor({\n diag,\n perf,\n limitManager,\n allowedEntries,\n }: UserTimingInstrumentationArgs = {}) {\n super({\n config: {},\n diag,\n instrumentationName: 'UserTimingInstrumentation',\n instrumentationVersion: '1.0.0',\n limitManager,\n perf,\n });\n this._allowedEntries = allowedEntries;\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public enable(): void {\n if (this._isEnabled) {\n return;\n }\n\n this._isEnabled = true;\n this._seenEntries = new Set();\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n }\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n }\n\n this._markObserver = createPerformanceObserver<PerformanceMark>(\n 'mark',\n this._processEntry.bind(this),\n { diag: this._diag },\n );\n\n if (!this._markObserver) {\n this._diag.error('failed to enable mark observer');\n }\n\n this._measureObserver = createPerformanceObserver<PerformanceMeasure>(\n 'measure',\n (entry) => this._processEntry(entry),\n { diag: this._diag },\n );\n\n if (!this._measureObserver) {\n this._diag.error('failed to enable measure observer');\n }\n\n if (!this._markObserver && !this._measureObserver) {\n this._isEnabled = false;\n }\n }\n\n public disable(): void {\n this._isEnabled = false;\n\n if (this._markObserver) {\n this._markObserver.disconnect();\n this._markObserver = null;\n }\n\n if (this._measureObserver) {\n this._measureObserver.disconnect();\n this._measureObserver = null;\n }\n\n this._seenEntries = new Set();\n }\n\n private _processEntry(entry: PerformanceMark | PerformanceMeasure): void {\n if (!this._isEnabled) {\n return;\n }\n\n if (this._allowedEntries !== undefined) {\n const allowed = Array.isArray(this._allowedEntries)\n ? this._allowedEntries.includes(entry.name)\n : this._allowedEntries(entry);\n if (!allowed) {\n return;\n }\n }\n\n const key = `${location.href}::${entry.name}`;\n // De-duplicate entries by name and page URL, only processing the first occurrence of each unique name on each page URL\n if (this._seenEntries.has(key)) {\n return;\n }\n this._seenEntries.add(key);\n\n if (\n this.limitManager?.limitUserTimingEntry(\n entry.entryType as 'mark' | 'measure',\n )\n ) {\n return;\n }\n\n if (entry.entryType === 'measure') {\n const measureDetail = (entry as PerformanceMeasure).detail;\n const span = this.tracer.startSpan(entry.name, {\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_INSTRUMENTATION]:\n MXL_PERFORMANCE_INSTRUMENTATIONS.UserTiming,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n ...(measureDetail != null && {\n [KEY_MXL_USER_TIMING_DETAIL]: JSON.stringify(measureDetail),\n }),\n },\n startTime: this.perf.epochMillisFromOriginOffset(entry.startTime),\n });\n span.end(\n this.perf.epochMillisFromOriginOffset(entry.startTime + entry.duration),\n );\n return;\n }\n\n const { detail } = entry as PerformanceMark;\n const body = detail != null ? JSON.stringify(detail) : undefined;\n\n this.logger.emit({\n attributes: {\n [KEY_MXL_TYPE]: MXL_TYPES.UserTiming,\n [KEY_MXL_USER_TIMING_NAME]: entry.name,\n [KEY_MXL_USER_TIMING_START_TIME]: this.perf.millisFromZeroTime(\n entry.startTime,\n ),\n [KEY_MXL_USER_TIMING_DURATION]: entry.duration,\n [KEY_MXL_USER_TIMING_ENTRY_TYPE]: entry.entryType,\n },\n body,\n eventName: USER_TIMING_EVENT_NAME,\n severityNumber: SeverityNumber.INFO,\n timestamp: this.perf.epochMillisFromOriginOffset(entry.startTime),\n });\n }\n}\n"],"mappings":";;;;;;AAsBA,IAAa,4BAAb,cAA+C,uBAAuB;CACpE,gBAAoD;CACpD,mBAAuD;CACvD,+BAAuB,IAAI,KAAa;CACxC,aAAqB;CACrB;CAEA,YAAmB,EACjB,MACA,MACA,cACA,mBACiC,EAAE,EAAE;AACrC,QAAM;GACJ,QAAQ,EAAE;GACV;GACA,qBAAqB;GACrB,wBAAwB;GACxB;GACA;GACD,CAAC;AACF,OAAK,kBAAkB;AAEvB,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;CAIjB,SAAsB;AACpB,MAAI,KAAK,WACP;AAGF,OAAK,aAAa;AAClB,OAAK,+BAAe,IAAI,KAAK;AAE7B,MAAI,KAAK,cACP,MAAK,cAAc,YAAY;AAEjC,MAAI,KAAK,iBACP,MAAK,iBAAiB,YAAY;AAGpC,OAAK,gBAAgB,0BACnB,QACA,KAAK,cAAc,KAAK,KAAK,EAC7B,EAAE,MAAM,KAAK,OAAO,CACrB;AAED,MAAI,CAAC,KAAK,cACR,MAAK,MAAM,MAAM,iCAAiC;AAGpD,OAAK,mBAAmB,0BACtB,YACC,UAAU,KAAK,cAAc,MAAM,EACpC,EAAE,MAAM,KAAK,OAAO,CACrB;AAED,MAAI,CAAC,KAAK,iBACR,MAAK,MAAM,MAAM,oCAAoC;AAGvD,MAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,iBAC/B,MAAK,aAAa;;CAItB,UAAuB;AACrB,OAAK,aAAa;AAElB,MAAI,KAAK,eAAe;AACtB,QAAK,cAAc,YAAY;AAC/B,QAAK,gBAAgB;;AAGvB,MAAI,KAAK,kBAAkB;AACzB,QAAK,iBAAiB,YAAY;AAClC,QAAK,mBAAmB;;AAG1B,OAAK,+BAAe,IAAI,KAAK;;CAG/B,cAAsB,OAAmD;AACvE,MAAI,CAAC,KAAK,WACR;AAGF,MAAI,KAAK,oBAAoB,KAAA;OAIvB,EAHY,MAAM,QAAQ,KAAK,gBAAgB,GAC/C,KAAK,gBAAgB,SAAS,MAAM,KAAK,GACzC,KAAK,gBAAgB,MAAM,EAE7B;;EAIJ,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI,MAAM;AAEvC,MAAI,KAAK,aAAa,IAAI,IAAI,CAC5B;AAEF,OAAK,aAAa,IAAI,IAAI;AAE1B,MACE,KAAK,cAAc,qBACjB,MAAM,UACP,CAED;AAGF,MAAI,MAAM,cAAc,WAAW;GACjC,MAAM,gBAAiB,MAA6B;AACvC,QAAK,OAAO,UAAU,MAAM,MAAM;IAC7C,YAAY;MACT,eAAA;MACA,0BAAA;MAEA,iCAAiC,MAAM;MACvC,iCAAiC,KAAK,KAAK,mBAC1C,MAAM,UACP;MACA,+BAA+B,MAAM;KACtC,GAAI,iBAAiB,QAAQ,GAAA,2BACG,KAAK,UAAU,cAAc,EAC5D;KACF;IACD,WAAW,KAAK,KAAK,4BAA4B,MAAM,UAAU;IAClE,CACG,CAAC,IACH,KAAK,KAAK,4BAA4B,MAAM,YAAY,MAAM,SAAS,CACxE;AACD;;EAGF,MAAM,EAAE,WAAW;EACnB,MAAM,OAAO,UAAU,OAAO,KAAK,UAAU,OAAO,GAAG,KAAA;AAEvD,OAAK,OAAO,KAAK;GACf,YAAY;KACT,eAAA;KACA,2BAA2B,MAAM;KACjC,iCAAiC,KAAK,KAAK,mBAC1C,MAAM,UACP;KACA,+BAA+B,MAAM;KACrC,iCAAiC,MAAM;IACzC;GACD;GACA,WAAW;GACX,gBAAgB,eAAe;GAC/B,WAAW,KAAK,KAAK,4BAA4B,MAAM,UAAU;GAClE,CAAC"}
@@ -14,7 +14,7 @@ const isPrimitiveValue = (value) => {
14
14
  const roundClamp = (value) => Math.round(Math.max(0, value));
15
15
  const webVitalAttributionToReport = (metric) => {
16
16
  const attributes = {};
17
- const attribution = metric.attribution;
17
+ const { attribution } = metric;
18
18
  if (!attribution || typeof attribution !== "object") return attributes;
19
19
  for (const [key, value] of Object.entries(attribution)) if (isPrimitiveValue(value)) attributes[`${require_instrumentations_web_vitals_WebVitalsInstrumentation_attributes.KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}${key}`] = value;
20
20
  return attributes;
@@ -34,19 +34,19 @@ const loafScriptsAttribution = (metric, diag) => {
34
34
  existing.styleAndLayoutDuration += script.forcedStyleAndLayoutDuration;
35
35
  existing.count++;
36
36
  } else scripts.set(url, {
37
- totalDuration: script.duration,
37
+ count: 1,
38
38
  styleAndLayoutDuration: script.forcedStyleAndLayoutDuration,
39
- count: 1
39
+ totalDuration: script.duration
40
40
  });
41
41
  }
42
42
  if (scripts.size > 0) attributes[`${require_instrumentations_web_vitals_WebVitalsInstrumentation_attributes.KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}loaf_scripts`] = JSON.stringify(Object.fromEntries([...scripts].sort((a, b) => b[1].totalDuration - a[1].totalDuration).slice(0, 250).map(([url, script]) => [url, {
43
- total_duration: Math.round(script.totalDuration),
43
+ count: script.count,
44
44
  style_and_layout_duration: Math.round(script.styleAndLayoutDuration),
45
- count: script.count
45
+ total_duration: Math.round(script.totalDuration)
46
46
  }])));
47
47
  }
48
- } catch (e) {
49
- diag.error("error building loaf scripts for INP", e);
48
+ } catch (error) {
49
+ diag.error("error building loaf scripts for INP", error);
50
50
  }
51
51
  return attributes;
52
52
  };
@@ -67,8 +67,8 @@ const ttfbSubPartsAttribution = (metric, diag) => {
67
67
  attributes[`${prefix}tlsNegotiation`] = tlsNegotiation;
68
68
  attributes[`${prefix}serverResponse`] = serverResponse;
69
69
  attributes[`${prefix}unattributed`] = unattributed;
70
- } catch (e) {
71
- diag.error("error computing TTFB timing breakdown", e);
70
+ } catch (error) {
71
+ diag.error("error computing TTFB timing breakdown", error);
72
72
  }
73
73
  else diag.debug("TTFB navigationEntry unavailable, skipping timing breakdown");
74
74
  return attributes;
@@ -79,10 +79,10 @@ var WebVitalsInstrumentation = class extends require_instrumentations_MXLInstrum
79
79
  _urlAttribution;
80
80
  _pageManager;
81
81
  _attributedPage = {
82
- INP: void 0,
83
- LCP: void 0,
84
82
  CLS: void 0,
85
83
  FCP: void 0,
84
+ INP: void 0,
85
+ LCP: void 0,
86
86
  TTFB: void 0
87
87
  };
88
88
  _largestShiftTargetForCLS;
@@ -90,11 +90,11 @@ var WebVitalsInstrumentation = class extends require_instrumentations_MXLInstrum
90
90
  _isEnabled = false;
91
91
  constructor({ diag, perf, listeners = require_instrumentations_web_vitals_WebVitalsInstrumentation_constants.WEB_VITALS_ID_TO_LISTENER, urlDocument = window.document, urlAttribution = true, pageManager } = {}) {
92
92
  super({
93
+ config: {},
94
+ diag,
93
95
  instrumentationName: "WebVitalsInstrumentation",
94
96
  instrumentationVersion: "1.0.0",
95
- diag,
96
- perf,
97
- config: {}
97
+ perf
98
98
  });
99
99
  this._listeners = listeners;
100
100
  this._urlDocument = urlDocument;
@@ -116,7 +116,7 @@ var WebVitalsInstrumentation = class extends require_instrumentations_MXLInstrum
116
116
  require_instrumentations_web_vitals_WebVitalsInstrumentation_constants.ALL_WEB_VITALS.forEach((name) => {
117
117
  this._listeners[name]?.((metric) => {
118
118
  if (!this._isEnabled) return;
119
- const currentSessionSpan = this.sessionManager.getSessionSpan();
119
+ const currentSessionSpan = this.userSessionManager.getSessionPartSpan();
120
120
  if (!currentSessionSpan) return;
121
121
  const metricTime = this._getTimeForMetric(metric);
122
122
  const attributedPage = this._getAttributedPageForMetric(metric);
@@ -1 +1 @@
1
- {"version":3,"file":"WebVitalsInstrumentation.cjs","names":["KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX","MAX_LOAF_SCRIPT_URL_LENGTH","MXLInstrumentationBase","WEB_VITALS_ID_TO_LISTENER","page","KEY_MXL_TYPE","ATTR_URL_FULL","KEY_BROWSER_URL_FULL","KEY_MXL_WEB_VITAL_NAVIGATION_TYPE","KEY_MXL_WEB_VITAL_NAME","KEY_MXL_WEB_VITAL_RATING","KEY_MXL_WEB_VITAL_ID","KEY_MXL_WEB_VITAL_DELTA","KEY_MXL_WEB_VITAL_VALUE","KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL","MXL_WEB_VITALS_PREFIX"],"sources":["../../../../src/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.ts"],"sourcesContent":["import type {\n Attributes,\n AttributeValue,\n DiagLogger,\n} from '@opentelemetry/api';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type {\n CLSMetricWithAttribution,\n INPAttribution,\n Metric,\n MetricWithAttribution,\n TTFBAttribution,\n} from 'web-vitals/attribution';\nimport type { PageManager } from '../../../api-page';\nimport { page } from '../../../api-page';\nimport type { URLDocument } from '../../../common';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_BROWSER_URL_FULL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX,\n KEY_MXL_WEB_VITAL_DELTA,\n KEY_MXL_WEB_VITAL_ID,\n KEY_MXL_WEB_VITAL_NAME,\n KEY_MXL_WEB_VITAL_NAVIGATION_TYPE,\n KEY_MXL_WEB_VITAL_RATING,\n KEY_MXL_WEB_VITAL_VALUE,\n} from './attributes';\nimport {\n ALL_WEB_VITALS,\n MAX_LOAF_SCRIPT_ENTRIES,\n MAX_LOAF_SCRIPT_URL_LENGTH,\n MXL_WEB_VITALS_PREFIX,\n WEB_VITALS_ID_TO_LISTENER,\n} from './constants';\nimport type { WebVitalListeners, WebVitalsInstrumentationArgs } from './types';\n\ntype AttributedPage = {\n fullURL: string;\n path?: string;\n pageID?: string;\n label?: string;\n};\n\nconst isPrimitiveValue = (value: unknown): value is AttributeValue => {\n const type = typeof value;\n return type === 'number' || type === 'string' || type === 'boolean';\n};\n\nconst roundClamp = (value: number): number => Math.round(Math.max(0, value));\n\nconst webVitalAttributionToReport = (\n metric: MetricWithAttribution,\n): Attributes => {\n const attributes: Attributes = {};\n const attribution = metric.attribution;\n\n if (!attribution || typeof attribution !== 'object') {\n return attributes;\n }\n\n for (const [key, value] of Object.entries(attribution)) {\n if (isPrimitiveValue(value)) {\n attributes[`${KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}${key}`] = value;\n }\n }\n\n return attributes;\n};\n\nconst loafScriptsAttribution = (\n metric: MetricWithAttribution,\n diag: DiagLogger,\n): Attributes => {\n const attributes: Attributes = {};\n const attribution = metric.attribution as INPAttribution;\n\n try {\n // suppress LoAF baseline errors\n /* eslint-disable baseline-js/use-baseline */\n if (attribution.longAnimationFrameEntries.length > 0) {\n const scripts = new Map<\n string,\n {\n totalDuration: number;\n styleAndLayoutDuration: number;\n count: number;\n }\n >();\n for (const entry of attribution.longAnimationFrameEntries) {\n for (const script of entry.scripts) {\n let url = script.sourceURL || '(inline)';\n if (url.length > MAX_LOAF_SCRIPT_URL_LENGTH) {\n url = `${url.substring(0, MAX_LOAF_SCRIPT_URL_LENGTH)}...`;\n }\n const existing = scripts.get(url);\n if (existing) {\n existing.totalDuration += script.duration;\n existing.styleAndLayoutDuration +=\n script.forcedStyleAndLayoutDuration;\n existing.count++;\n } else {\n scripts.set(url, {\n totalDuration: script.duration,\n styleAndLayoutDuration: script.forcedStyleAndLayoutDuration,\n count: 1,\n });\n }\n }\n }\n if (scripts.size > 0) {\n attributes[`${KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}loaf_scripts`] =\n JSON.stringify(\n Object.fromEntries(\n [...scripts]\n .sort((a, b) => b[1].totalDuration - a[1].totalDuration)\n .slice(0, MAX_LOAF_SCRIPT_ENTRIES)\n .map(([url, script]) => [\n url,\n {\n total_duration: Math.round(script.totalDuration),\n style_and_layout_duration: Math.round(\n script.styleAndLayoutDuration,\n ),\n count: script.count,\n },\n ]),\n ),\n );\n }\n }\n /* eslint-enable baseline-js/use-baseline */\n } catch (e) {\n diag.error('error building loaf scripts for INP', e);\n }\n\n return attributes;\n};\n\nconst ttfbSubPartsAttribution = (\n metric: MetricWithAttribution,\n diag: DiagLogger,\n): Attributes => {\n const attributes: Attributes = {};\n const attribution = metric.attribution as TTFBAttribution;\n const entry = attribution.navigationEntry as\n | PerformanceNavigationTiming\n | undefined;\n\n if (entry) {\n try {\n const redirect = roundClamp(entry.redirectEnd - entry.redirectStart);\n const domainLookup = roundClamp(\n entry.domainLookupEnd - entry.domainLookupStart,\n );\n const tcpConnection = roundClamp(\n entry.secureConnectionStart > 0\n ? entry.secureConnectionStart - entry.connectStart\n : entry.connectEnd - entry.connectStart,\n );\n const tlsNegotiation = roundClamp(\n entry.secureConnectionStart > 0\n ? entry.connectEnd - entry.secureConnectionStart\n : 0,\n );\n const effectiveResponseStart = Math.max(\n // @ts-expect-error 103 Early hints are not supported in all browsers\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/finalResponseHeadersStart\n entry.finalResponseHeadersStart ?? 0,\n entry.responseStart,\n );\n const serverResponse = roundClamp(\n effectiveResponseStart - entry.requestStart,\n );\n const total = Math.round(entry.responseEnd - entry.startTime);\n const unattributed = roundClamp(\n total -\n redirect -\n domainLookup -\n tcpConnection -\n tlsNegotiation -\n serverResponse,\n );\n const prefix = KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX;\n attributes[`${prefix}redirect`] = redirect;\n attributes[`${prefix}domainLookup`] = domainLookup;\n attributes[`${prefix}tcpConnection`] = tcpConnection;\n attributes[`${prefix}tlsNegotiation`] = tlsNegotiation;\n attributes[`${prefix}serverResponse`] = serverResponse;\n attributes[`${prefix}unattributed`] = unattributed;\n } catch (e) {\n diag.error('error computing TTFB timing breakdown', e);\n }\n } else {\n diag.debug('TTFB navigationEntry unavailable, skipping timing breakdown');\n }\n\n return attributes;\n};\n\nexport class WebVitalsInstrumentation extends MXLInstrumentationBase {\n private readonly _listeners: WebVitalListeners;\n private readonly _urlDocument: URLDocument;\n private readonly _urlAttribution: boolean;\n private readonly _pageManager: PageManager;\n private readonly _attributedPage: Record<\n Metric['name'],\n AttributedPage | undefined\n > = {\n INP: undefined,\n LCP: undefined,\n CLS: undefined,\n FCP: undefined,\n TTFB: undefined,\n };\n private _largestShiftTargetForCLS: string | undefined;\n private _listenersRegistered = false;\n private _isEnabled = false;\n\n // instrumentation that adds an event to the session span for each web vital report\n public constructor({\n diag,\n perf,\n listeners = WEB_VITALS_ID_TO_LISTENER,\n urlDocument = window.document,\n urlAttribution = true,\n pageManager,\n }: WebVitalsInstrumentationArgs = {}) {\n super({\n instrumentationName: 'WebVitalsInstrumentation',\n instrumentationVersion: '1.0.0',\n diag,\n perf,\n config: {},\n });\n this._listeners = listeners;\n this._urlDocument = urlDocument;\n this._urlAttribution = urlAttribution;\n this._pageManager = pageManager ?? page.getPageManager();\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public override disable(): void {\n // web-vitals library doesn't support removing listeners, so we just pause emission\n // https://github.com/GoogleChrome/web-vitals/issues/357#issuecomment-1593439036\n this._isEnabled = false;\n this._diag.debug('WebVitalsInstrumentation disabled, pausing emission');\n }\n\n public enable(): void {\n this._isEnabled = true;\n\n // web-vitals library doesn't support removing listeners, so only register once\n if (this._listenersRegistered) {\n this._diag.debug(\n 'WebVitalsInstrumentation listeners already registered, resuming emission',\n );\n return;\n }\n this._listenersRegistered = true;\n\n ALL_WEB_VITALS.forEach((name) => {\n this._listeners[name]?.((metric) => {\n if (!this._isEnabled) {\n return;\n }\n\n const currentSessionSpan = this.sessionManager.getSessionSpan();\n\n if (!currentSessionSpan) {\n return;\n }\n\n // first thing record the time when this cb was invoked\n const metricTime = this._getTimeForMetric(metric);\n\n const attributedPage = this._getAttributedPageForMetric(metric);\n\n const attrs: Attributes = {\n [KEY_MXL_TYPE]: MXL_TYPES.WebVital,\n [ATTR_URL_FULL]: attributedPage.fullURL,\n [KEY_BROWSER_URL_FULL]: attributedPage.fullURL,\n [KEY_MXL_WEB_VITAL_NAVIGATION_TYPE]: metric.navigationType,\n [KEY_MXL_WEB_VITAL_NAME]: metric.name,\n [KEY_MXL_WEB_VITAL_RATING]: metric.rating,\n [KEY_MXL_WEB_VITAL_ID]: metric.id,\n [KEY_MXL_WEB_VITAL_DELTA]: metric.delta,\n [KEY_MXL_WEB_VITAL_VALUE]: metric.value,\n ...webVitalAttributionToReport(metric),\n ...(name === 'INP' ? loafScriptsAttribution(metric, this._diag) : {}),\n ...(name === 'TTFB'\n ? ttfbSubPartsAttribution(metric, this._diag)\n : {}),\n };\n\n // Add page attributes if route and page ID exist\n if (attributedPage.path && attributedPage.pageID) {\n attrs[KEY_MXL_PAGE_PATH] = attributedPage.path;\n attrs[KEY_MXL_PAGE_ID] = attributedPage.pageID;\n }\n\n if (attributedPage.label) {\n attrs[KEY_APP_SURFACE_LABEL] = attributedPage.label;\n }\n\n currentSessionSpan.addEvent(\n `${MXL_WEB_VITALS_PREFIX}-report-${name}`,\n attrs,\n metricTime,\n );\n });\n });\n\n if (this._urlAttribution) {\n // When these web vitals make their final report (e.g. when the listeners w/ reportAllChanges=false trigger) the\n // document's URL at that time may not match what it was at the time the scores were last updated. Instead, listen\n // for updates to the scores and keep track of the Page information to attribute for each\n this._listeners.TTFB?.(\n () => {\n this._attributedPage.TTFB = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.FCP?.(\n () => {\n this._attributedPage.FCP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.INP?.(\n () => {\n this._attributedPage.INP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.LCP?.(\n () => {\n this._attributedPage.LCP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.CLS?.(\n (metric: MetricWithAttribution) => {\n const clsMetric = metric as CLSMetricWithAttribution;\n // A layout shift could cause CLS to change its rating but because the score is cumulative this might not\n // correspond with an updated `largestShiftTarget`. Since we want to tie the attributed URL to the page that\n // the `largestShiftTarget` was on we only update the attributed URL if that target has changed\n if (\n this._largestShiftTargetForCLS !==\n clsMetric.attribution.largestShiftTarget\n ) {\n this._largestShiftTargetForCLS =\n clsMetric.attribution.largestShiftTarget;\n this._attributedPage.CLS = this._currentAttributedPage();\n }\n },\n {\n reportAllChanges: true,\n },\n );\n }\n }\n\n private _getTimeForMetric(metric: MetricWithAttribution): number {\n if (metric.name === 'CLS' && metric.attribution.largestShiftTime) {\n return this.perf.epochMillisFromOriginOffset(\n metric.attribution.largestShiftTime,\n );\n }\n\n if (metric.name === 'INP' && metric.attribution.interactionTime) {\n return this.perf.epochMillisFromOriginOffset(\n metric.attribution.interactionTime,\n );\n }\n\n return this.perf.getNowMillis();\n }\n\n private _currentAttributedPage(): AttributedPage {\n const attributed: AttributedPage = {\n fullURL: this._urlDocument.URL,\n };\n\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n if (currentRoute && currentPageId) {\n attributed.path = currentRoute.path;\n attributed.pageID = currentPageId;\n }\n\n const pageLabel = this._pageManager.getPageLabel();\n if (pageLabel) {\n attributed.label = pageLabel;\n }\n\n return attributed;\n }\n\n private _getAttributedPageForMetric(\n metric: MetricWithAttribution,\n ): AttributedPage {\n if (metric.name === 'FCP' && this._attributedPage.FCP) {\n return this._attributedPage.FCP;\n }\n\n if (metric.name === 'TTFB' && this._attributedPage.TTFB) {\n return this._attributedPage.TTFB;\n }\n\n if (metric.name === 'INP' && this._attributedPage.INP) {\n return this._attributedPage.INP;\n }\n\n if (metric.name === 'LCP' && this._attributedPage.LCP) {\n return this._attributedPage.LCP;\n }\n\n if (\n metric.name === 'CLS' &&\n this._attributedPage.CLS &&\n metric.attribution.largestShiftTarget === this._largestShiftTargetForCLS\n ) {\n return this._attributedPage.CLS;\n }\n\n return this._currentAttributedPage();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"WebVitalsInstrumentation.cjs","names":["KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX","MAX_LOAF_SCRIPT_URL_LENGTH","MXLInstrumentationBase","WEB_VITALS_ID_TO_LISTENER","page","KEY_MXL_TYPE","ATTR_URL_FULL","KEY_BROWSER_URL_FULL","KEY_MXL_WEB_VITAL_NAVIGATION_TYPE","KEY_MXL_WEB_VITAL_NAME","KEY_MXL_WEB_VITAL_RATING","KEY_MXL_WEB_VITAL_ID","KEY_MXL_WEB_VITAL_DELTA","KEY_MXL_WEB_VITAL_VALUE","KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL","MXL_WEB_VITALS_PREFIX"],"sources":["../../../../src/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.ts"],"sourcesContent":["import type {\n AttributeValue,\n Attributes,\n DiagLogger,\n} from '@opentelemetry/api';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type {\n CLSMetricWithAttribution,\n INPAttribution,\n Metric,\n MetricWithAttribution,\n TTFBAttribution,\n} from 'web-vitals/attribution';\nimport type { PageManager } from '../../../api-page';\nimport { page } from '../../../api-page';\nimport type { URLDocument } from '../../../common';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_BROWSER_URL_FULL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n KEY_MXL_TYPE,\n MXL_TYPES,\n} from '../../../constants';\nimport { MXLInstrumentationBase } from '../../MXLInstrumentationBase';\nimport {\n KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX,\n KEY_MXL_WEB_VITAL_DELTA,\n KEY_MXL_WEB_VITAL_ID,\n KEY_MXL_WEB_VITAL_NAME,\n KEY_MXL_WEB_VITAL_NAVIGATION_TYPE,\n KEY_MXL_WEB_VITAL_RATING,\n KEY_MXL_WEB_VITAL_VALUE,\n} from './attributes';\nimport {\n ALL_WEB_VITALS,\n MAX_LOAF_SCRIPT_ENTRIES,\n MAX_LOAF_SCRIPT_URL_LENGTH,\n MXL_WEB_VITALS_PREFIX,\n WEB_VITALS_ID_TO_LISTENER,\n} from './constants';\nimport type { WebVitalListeners, WebVitalsInstrumentationArgs } from './types';\n\ninterface AttributedPage {\n fullURL: string;\n path?: string;\n pageID?: string;\n label?: string;\n}\n\nconst isPrimitiveValue = (value: unknown): value is AttributeValue => {\n const type = typeof value;\n return type === 'number' || type === 'string' || type === 'boolean';\n};\n\nconst roundClamp = (value: number): number => Math.round(Math.max(0, value));\n\nconst webVitalAttributionToReport = (\n metric: MetricWithAttribution,\n): Attributes => {\n const attributes: Attributes = {};\n const { attribution } = metric;\n\n if (!attribution || typeof attribution !== 'object') {\n return attributes;\n }\n\n for (const [key, value] of Object.entries(attribution)) {\n if (isPrimitiveValue(value)) {\n attributes[`${KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}${key}`] = value;\n }\n }\n\n return attributes;\n};\n\nconst loafScriptsAttribution = (\n metric: MetricWithAttribution,\n diag: DiagLogger,\n): Attributes => {\n const attributes: Attributes = {};\n const attribution = metric.attribution as INPAttribution;\n\n try {\n // Suppress LoAF baseline errors\n /* eslint-disable baseline-js/use-baseline */\n if (attribution.longAnimationFrameEntries.length > 0) {\n const scripts = new Map<\n string,\n {\n totalDuration: number;\n styleAndLayoutDuration: number;\n count: number;\n }\n >();\n for (const entry of attribution.longAnimationFrameEntries) {\n for (const script of entry.scripts) {\n let url = script.sourceURL || '(inline)';\n if (url.length > MAX_LOAF_SCRIPT_URL_LENGTH) {\n url = `${url.substring(0, MAX_LOAF_SCRIPT_URL_LENGTH)}...`;\n }\n const existing = scripts.get(url);\n if (existing) {\n existing.totalDuration += script.duration;\n existing.styleAndLayoutDuration +=\n script.forcedStyleAndLayoutDuration;\n existing.count++;\n } else {\n scripts.set(url, {\n count: 1,\n styleAndLayoutDuration: script.forcedStyleAndLayoutDuration,\n totalDuration: script.duration,\n });\n }\n }\n }\n if (scripts.size > 0) {\n attributes[`${KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX}loaf_scripts`] =\n JSON.stringify(\n Object.fromEntries(\n [...scripts]\n .sort((a, b) => b[1].totalDuration - a[1].totalDuration)\n .slice(0, MAX_LOAF_SCRIPT_ENTRIES)\n .map(([url, script]) => [\n url,\n {\n count: script.count,\n style_and_layout_duration: Math.round(\n script.styleAndLayoutDuration,\n ),\n total_duration: Math.round(script.totalDuration),\n },\n ]),\n ),\n );\n }\n }\n /* eslint-enable baseline-js/use-baseline */\n } catch (error) {\n diag.error('error building loaf scripts for INP', error);\n }\n\n return attributes;\n};\n\nconst ttfbSubPartsAttribution = (\n metric: MetricWithAttribution,\n diag: DiagLogger,\n): Attributes => {\n const attributes: Attributes = {};\n const attribution = metric.attribution as TTFBAttribution;\n const entry = attribution.navigationEntry as\n | PerformanceNavigationTiming\n | undefined;\n\n if (entry) {\n try {\n const redirect = roundClamp(entry.redirectEnd - entry.redirectStart);\n const domainLookup = roundClamp(\n entry.domainLookupEnd - entry.domainLookupStart,\n );\n const tcpConnection = roundClamp(\n entry.secureConnectionStart > 0\n ? entry.secureConnectionStart - entry.connectStart\n : entry.connectEnd - entry.connectStart,\n );\n const tlsNegotiation = roundClamp(\n entry.secureConnectionStart > 0\n ? entry.connectEnd - entry.secureConnectionStart\n : 0,\n );\n const effectiveResponseStart = Math.max(\n // @ts-expect-error 103 Early hints are not supported in all browsers\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/finalResponseHeadersStart\n entry.finalResponseHeadersStart ?? 0,\n entry.responseStart,\n );\n const serverResponse = roundClamp(\n effectiveResponseStart - entry.requestStart,\n );\n const total = Math.round(entry.responseEnd - entry.startTime);\n const unattributed = roundClamp(\n total -\n redirect -\n domainLookup -\n tcpConnection -\n tlsNegotiation -\n serverResponse,\n );\n const prefix = KEY_MXL_WEB_VITAL_ATTRIBUTION_PREFIX;\n attributes[`${prefix}redirect`] = redirect;\n attributes[`${prefix}domainLookup`] = domainLookup;\n attributes[`${prefix}tcpConnection`] = tcpConnection;\n attributes[`${prefix}tlsNegotiation`] = tlsNegotiation;\n attributes[`${prefix}serverResponse`] = serverResponse;\n attributes[`${prefix}unattributed`] = unattributed;\n } catch (error) {\n diag.error('error computing TTFB timing breakdown', error);\n }\n } else {\n diag.debug('TTFB navigationEntry unavailable, skipping timing breakdown');\n }\n\n return attributes;\n};\n\nexport class WebVitalsInstrumentation extends MXLInstrumentationBase {\n private readonly _listeners: WebVitalListeners;\n private readonly _urlDocument: URLDocument;\n private readonly _urlAttribution: boolean;\n private readonly _pageManager: PageManager;\n private readonly _attributedPage: Record<\n Metric['name'],\n AttributedPage | undefined\n > = {\n CLS: undefined,\n FCP: undefined,\n INP: undefined,\n LCP: undefined,\n TTFB: undefined,\n };\n private _largestShiftTargetForCLS: string | undefined;\n private _listenersRegistered = false;\n private _isEnabled = false;\n\n // Instrumentation that adds an event to the session span for each web vital report\n public constructor({\n diag,\n perf,\n listeners = WEB_VITALS_ID_TO_LISTENER,\n urlDocument = window.document,\n urlAttribution = true,\n pageManager,\n }: WebVitalsInstrumentationArgs = {}) {\n super({\n config: {},\n diag,\n instrumentationName: 'WebVitalsInstrumentation',\n instrumentationVersion: '1.0.0',\n perf,\n });\n this._listeners = listeners;\n this._urlDocument = urlDocument;\n this._urlAttribution = urlAttribution;\n this._pageManager = pageManager ?? page.getPageManager();\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n public override disable(): void {\n // Web-vitals library doesn't support removing listeners, so we just pause emission\n // https://github.com/GoogleChrome/web-vitals/issues/357#issuecomment-1593439036\n this._isEnabled = false;\n this._diag.debug('WebVitalsInstrumentation disabled, pausing emission');\n }\n\n public enable(): void {\n this._isEnabled = true;\n\n // Web-vitals library doesn't support removing listeners, so only register once\n if (this._listenersRegistered) {\n this._diag.debug(\n 'WebVitalsInstrumentation listeners already registered, resuming emission',\n );\n return;\n }\n this._listenersRegistered = true;\n\n ALL_WEB_VITALS.forEach((name) => {\n this._listeners[name]?.((metric) => {\n if (!this._isEnabled) {\n return;\n }\n\n const currentSessionSpan = this.userSessionManager.getSessionPartSpan();\n\n if (!currentSessionSpan) {\n return;\n }\n\n // First thing record the time when this cb was invoked\n const metricTime = this._getTimeForMetric(metric);\n\n const attributedPage = this._getAttributedPageForMetric(metric);\n\n const attrs: Attributes = {\n [KEY_MXL_TYPE]: MXL_TYPES.WebVital,\n [ATTR_URL_FULL]: attributedPage.fullURL,\n [KEY_BROWSER_URL_FULL]: attributedPage.fullURL,\n [KEY_MXL_WEB_VITAL_NAVIGATION_TYPE]: metric.navigationType,\n [KEY_MXL_WEB_VITAL_NAME]: metric.name,\n [KEY_MXL_WEB_VITAL_RATING]: metric.rating,\n [KEY_MXL_WEB_VITAL_ID]: metric.id,\n [KEY_MXL_WEB_VITAL_DELTA]: metric.delta,\n [KEY_MXL_WEB_VITAL_VALUE]: metric.value,\n ...webVitalAttributionToReport(metric),\n ...(name === 'INP' ? loafScriptsAttribution(metric, this._diag) : {}),\n ...(name === 'TTFB'\n ? ttfbSubPartsAttribution(metric, this._diag)\n : {}),\n };\n\n // Add page attributes if route and page ID exist\n if (attributedPage.path && attributedPage.pageID) {\n attrs[KEY_MXL_PAGE_PATH] = attributedPage.path;\n attrs[KEY_MXL_PAGE_ID] = attributedPage.pageID;\n }\n\n if (attributedPage.label) {\n attrs[KEY_APP_SURFACE_LABEL] = attributedPage.label;\n }\n\n currentSessionSpan.addEvent(\n `${MXL_WEB_VITALS_PREFIX}-report-${name}`,\n attrs,\n metricTime,\n );\n });\n });\n\n if (this._urlAttribution) {\n // When these web vitals make their final report (e.g. when the listeners w/ reportAllChanges=false trigger) the\n // Document's URL at that time may not match what it was at the time the scores were last updated. Instead, listen\n // For updates to the scores and keep track of the Page information to attribute for each\n this._listeners.TTFB?.(\n () => {\n this._attributedPage.TTFB = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.FCP?.(\n () => {\n this._attributedPage.FCP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.INP?.(\n () => {\n this._attributedPage.INP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.LCP?.(\n () => {\n this._attributedPage.LCP = this._currentAttributedPage();\n },\n {\n reportAllChanges: true,\n },\n );\n this._listeners.CLS?.(\n (metric: MetricWithAttribution) => {\n const clsMetric = metric as CLSMetricWithAttribution;\n // A layout shift could cause CLS to change its rating but because the score is cumulative this might not\n // Correspond with an updated `largestShiftTarget`. Since we want to tie the attributed URL to the page that\n // The `largestShiftTarget` was on we only update the attributed URL if that target has changed\n if (\n this._largestShiftTargetForCLS !==\n clsMetric.attribution.largestShiftTarget\n ) {\n this._largestShiftTargetForCLS =\n clsMetric.attribution.largestShiftTarget;\n this._attributedPage.CLS = this._currentAttributedPage();\n }\n },\n {\n reportAllChanges: true,\n },\n );\n }\n }\n\n private _getTimeForMetric(metric: MetricWithAttribution): number {\n if (metric.name === 'CLS' && metric.attribution.largestShiftTime) {\n return this.perf.epochMillisFromOriginOffset(\n metric.attribution.largestShiftTime,\n );\n }\n\n if (metric.name === 'INP' && metric.attribution.interactionTime) {\n return this.perf.epochMillisFromOriginOffset(\n metric.attribution.interactionTime,\n );\n }\n\n return this.perf.getNowMillis();\n }\n\n private _currentAttributedPage(): AttributedPage {\n const attributed: AttributedPage = {\n fullURL: this._urlDocument.URL,\n };\n\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n if (currentRoute && currentPageId) {\n attributed.path = currentRoute.path;\n attributed.pageID = currentPageId;\n }\n\n const pageLabel = this._pageManager.getPageLabel();\n if (pageLabel) {\n attributed.label = pageLabel;\n }\n\n return attributed;\n }\n\n private _getAttributedPageForMetric(\n metric: MetricWithAttribution,\n ): AttributedPage {\n if (metric.name === 'FCP' && this._attributedPage.FCP) {\n return this._attributedPage.FCP;\n }\n\n if (metric.name === 'TTFB' && this._attributedPage.TTFB) {\n return this._attributedPage.TTFB;\n }\n\n if (metric.name === 'INP' && this._attributedPage.INP) {\n return this._attributedPage.INP;\n }\n\n if (metric.name === 'LCP' && this._attributedPage.LCP) {\n return this._attributedPage.LCP;\n }\n\n if (\n metric.name === 'CLS' &&\n this._attributedPage.CLS &&\n metric.attribution.largestShiftTarget === this._largestShiftTargetForCLS\n ) {\n return this._attributedPage.CLS;\n }\n\n return this._currentAttributedPage();\n }\n}\n"],"mappings":"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"}