@safaricom-mxl/web-sdk 0.0.14 → 0.0.16

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 (266) hide show
  1. package/dist/api-logs/api/LogAPI/LogAPI.cjs.map +1 -1
  2. package/dist/api-logs/api/LogAPI/LogAPI.js.map +1 -1
  3. package/dist/api-logs/logAPI.cjs.map +1 -1
  4. package/dist/api-logs/logAPI.js.map +1 -1
  5. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs.map +1 -1
  6. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js.map +1 -1
  7. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.cjs.map +1 -1
  8. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.js.map +1 -1
  9. package/dist/api-page/api/PageAPI/PageAPI.cjs.map +1 -1
  10. package/dist/api-page/api/PageAPI/PageAPI.js.map +1 -1
  11. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.cjs.map +1 -1
  12. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.js.map +1 -1
  13. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.cjs.map +1 -1
  14. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.js.map +1 -1
  15. package/dist/api-page/pageAPI.cjs.map +1 -1
  16. package/dist/api-page/pageAPI.js.map +1 -1
  17. package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs.map +1 -1
  18. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts.map +1 -1
  19. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts.map +1 -1
  20. package/dist/api-sessions/api/SessionAPI/SessionAPI.js.map +1 -1
  21. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs.map +1 -1
  22. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js.map +1 -1
  23. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs.map +1 -1
  24. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js.map +1 -1
  25. package/dist/api-sessions/sessionAPI.cjs.map +1 -1
  26. package/dist/api-sessions/sessionAPI.js.map +1 -1
  27. package/dist/api-traces/api/TraceAPI/TraceAPI.cjs.map +1 -1
  28. package/dist/api-traces/api/TraceAPI/TraceAPI.js.map +1 -1
  29. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.cjs.map +1 -1
  30. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.js.map +1 -1
  31. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.cjs.map +1 -1
  32. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.cts.map +1 -1
  33. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.ts.map +1 -1
  34. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.js.map +1 -1
  35. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.cjs.map +1 -1
  36. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.js.map +1 -1
  37. package/dist/api-traces/traceAPI.cjs.map +1 -1
  38. package/dist/api-traces/traceAPI.js.map +1 -1
  39. package/dist/api-users/api/UserAPI/UserAPI.cjs.map +1 -1
  40. package/dist/api-users/api/UserAPI/UserAPI.js.map +1 -1
  41. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.cjs.map +1 -1
  42. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.js.map +1 -1
  43. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.cjs.map +1 -1
  44. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.js.map +1 -1
  45. package/dist/api-users/userAPI.cjs.map +1 -1
  46. package/dist/api-users/userAPI.js.map +1 -1
  47. package/dist/common/attributes.cjs.map +1 -1
  48. package/dist/common/attributes.js.map +1 -1
  49. package/dist/constants/attributes.cjs +2 -0
  50. package/dist/constants/attributes.cjs.map +1 -1
  51. package/dist/constants/attributes.d.cts +2 -1
  52. package/dist/constants/attributes.d.cts.map +1 -1
  53. package/dist/constants/attributes.d.ts +2 -1
  54. package/dist/constants/attributes.d.ts.map +1 -1
  55. package/dist/constants/attributes.js +2 -1
  56. package/dist/constants/attributes.js.map +1 -1
  57. package/dist/constants/index.cjs +1 -0
  58. package/dist/constants/index.d.cts +2 -2
  59. package/dist/constants/index.d.ts +2 -2
  60. package/dist/constants/index.js +2 -2
  61. package/dist/exporters/MXLLogExporter/MXLLogExporter.cjs.map +1 -1
  62. package/dist/exporters/MXLLogExporter/MXLLogExporter.js.map +1 -1
  63. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
  64. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
  65. package/dist/exporters/MXLLogExporter/utils.cjs.map +1 -1
  66. package/dist/exporters/MXLLogExporter/utils.js.map +1 -1
  67. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs.map +1 -1
  68. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js.map +1 -1
  69. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
  70. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
  71. package/dist/exporters/MXLTraceExporter/utils.cjs.map +1 -1
  72. package/dist/exporters/MXLTraceExporter/utils.js.map +1 -1
  73. package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
  74. package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts.map +1 -1
  75. package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts.map +1 -1
  76. package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
  77. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
  78. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
  79. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
  80. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
  81. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
  82. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.cts.map +1 -1
  83. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts.map +1 -1
  84. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
  85. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
  86. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
  87. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -1
  88. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -1
  89. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
  90. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
  91. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
  92. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
  93. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs +1 -1
  94. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
  95. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.cts.map +1 -1
  96. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.ts.map +1 -1
  97. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js +2 -2
  98. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
  99. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +1 -1
  100. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +1 -1
  101. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -1
  102. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -1
  103. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
  104. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
  105. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs.map +1 -1
  106. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js.map +1 -1
  107. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs.map +1 -1
  108. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js.map +1 -1
  109. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
  110. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.cts.map +1 -1
  111. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.ts.map +1 -1
  112. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
  113. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
  114. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
  115. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
  116. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
  117. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -1
  118. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -1
  119. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +1 -1
  120. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +1 -1
  121. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +1 -1
  122. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +1 -1
  123. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +1 -1
  124. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +1 -1
  125. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +1 -1
  126. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +1 -1
  127. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -1
  128. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -1
  129. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
  130. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.cts.map +1 -1
  131. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts.map +1 -1
  132. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
  133. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +1 -1
  134. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +1 -1
  135. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +1 -1
  136. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
  137. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
  138. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
  139. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +1 -1
  140. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
  141. package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
  142. package/dist/managers/MXLConfigManager/constants.js.map +1 -1
  143. package/dist/managers/MXLConfigManager/utils.cjs.map +1 -1
  144. package/dist/managers/MXLConfigManager/utils.js.map +1 -1
  145. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
  146. package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
  147. package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
  148. package/dist/managers/MXLLimitManager/constants.js.map +1 -1
  149. package/dist/managers/MXLLogManager/MXLLogManager.cjs +3 -1
  150. package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
  151. package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
  152. package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
  153. package/dist/managers/MXLLogManager/MXLLogManager.js +4 -2
  154. package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
  155. package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
  156. package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
  157. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
  158. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
  159. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +1 -1
  160. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +1 -1
  161. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +1 -1
  162. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +1 -1
  163. package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
  164. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.cts.map +1 -1
  165. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts.map +1 -1
  166. package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
  167. package/dist/managers/MXLTraceManager/MXLTraceManager.cjs.map +1 -1
  168. package/dist/managers/MXLTraceManager/MXLTraceManager.js.map +1 -1
  169. package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
  170. package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
  171. package/dist/managers/MXLUserManager/types.cjs.map +1 -1
  172. package/dist/managers/MXLUserManager/types.js.map +1 -1
  173. package/dist/mxl-web-sdk.js +3 -38
  174. package/dist/mxl-web-sdk.js.map +1 -1
  175. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
  176. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
  177. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
  178. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
  179. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +1 -1
  180. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +1 -1
  181. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
  182. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
  183. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
  184. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
  185. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
  186. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
  187. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +1 -1
  188. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +1 -1
  189. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
  190. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
  191. package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
  192. package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
  193. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
  194. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
  195. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
  196. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
  197. package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
  198. package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
  199. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
  200. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
  201. package/dist/resources/appInstanceId.cjs.map +1 -1
  202. package/dist/resources/appInstanceId.js.map +1 -1
  203. package/dist/resources/constants/index.cjs +1 -1
  204. package/dist/resources/constants/index.cjs.map +1 -1
  205. package/dist/resources/constants/index.d.cts +1 -1
  206. package/dist/resources/constants/index.d.ts +1 -1
  207. package/dist/resources/constants/index.js +1 -1
  208. package/dist/resources/constants/index.js.map +1 -1
  209. package/dist/resources/webSdkResource.cjs.map +1 -1
  210. package/dist/resources/webSdkResource.d.cts.map +1 -1
  211. package/dist/resources/webSdkResource.d.ts.map +1 -1
  212. package/dist/resources/webSdkResource.js.map +1 -1
  213. package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
  214. package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
  215. package/dist/sdk/initSDK.cjs +13 -11
  216. package/dist/sdk/initSDK.cjs.map +1 -1
  217. package/dist/sdk/initSDK.d.cts.map +1 -1
  218. package/dist/sdk/initSDK.d.ts.map +1 -1
  219. package/dist/sdk/initSDK.js +14 -12
  220. package/dist/sdk/initSDK.js.map +1 -1
  221. package/dist/sdk/noopSessionRecording.cjs +10 -0
  222. package/dist/sdk/noopSessionRecording.cjs.map +1 -0
  223. package/dist/sdk/noopSessionRecording.d.cts +7 -0
  224. package/dist/sdk/noopSessionRecording.d.cts.map +1 -0
  225. package/dist/sdk/noopSessionRecording.d.ts +7 -0
  226. package/dist/sdk/noopSessionRecording.d.ts.map +1 -0
  227. package/dist/sdk/noopSessionRecording.js +9 -0
  228. package/dist/sdk/noopSessionRecording.js.map +1 -0
  229. package/dist/sdk/registry.cjs.map +1 -1
  230. package/dist/sdk/registry.js.map +1 -1
  231. package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
  232. package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
  233. package/dist/sdk/setupSessionRecorder.cjs +64 -22
  234. package/dist/sdk/setupSessionRecorder.cjs.map +1 -1
  235. package/dist/sdk/setupSessionRecorder.d.cts +16 -7
  236. package/dist/sdk/setupSessionRecorder.d.cts.map +1 -1
  237. package/dist/sdk/setupSessionRecorder.d.ts +16 -7
  238. package/dist/sdk/setupSessionRecorder.d.ts.map +1 -1
  239. package/dist/sdk/setupSessionRecorder.js +62 -21
  240. package/dist/sdk/setupSessionRecorder.js.map +1 -1
  241. package/dist/sdk/types.d.cts.map +1 -1
  242. package/dist/sdk/types.d.ts +1 -1
  243. package/dist/sdk/types.d.ts.map +1 -1
  244. package/dist/sdk/utils.cjs.map +1 -1
  245. package/dist/sdk/utils.js.map +1 -1
  246. package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
  247. package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
  248. package/dist/transport/FetchTransport/createFetchTransport.cjs.map +1 -1
  249. package/dist/transport/FetchTransport/createFetchTransport.js.map +1 -1
  250. package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
  251. package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
  252. package/dist/transport/RetryingTransport/createRetryingTransport.cjs.map +1 -1
  253. package/dist/transport/RetryingTransport/createRetryingTransport.js.map +1 -1
  254. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +1 -1
  255. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +1 -1
  256. package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
  257. package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
  258. package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs.map +1 -1
  259. package/dist/utils/bulkAddEventListener/bulkAddEventListener.js.map +1 -1
  260. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs.map +1 -1
  261. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.js.map +1 -1
  262. package/dist/utils/getVisibilityState.cjs.map +1 -1
  263. package/dist/utils/getVisibilityState.js.map +1 -1
  264. package/dist/utils/nsfConfigValidation.cjs.map +1 -1
  265. package/dist/utils/nsfConfigValidation.js.map +1 -1
  266. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"createRetryingTransport.cjs","names":["RetryingTransport","OTelPerformanceManager"],"sources":["../../../src/transport/RetryingTransport/createRetryingTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { OTelPerformanceManager } from '../../utils/index.ts';\nimport { RetryingTransport } from './RetryingTransport.ts';\n\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport const createRetryingTransport = (options: {\n // Underlying transport to wrap.\n transport: IExporterTransport;\n // Performance manager to use.\n perf?: OTelPerformanceManager;\n}): IExporterTransport =>\n new RetryingTransport(\n options.transport,\n options.perf ?? new OTelPerformanceManager(),\n );\n"],"mappings":";;;;;;;AAOA,MAAa,2BAA2B,YAMtC,IAAIA,sDAAAA,kBACF,QAAQ,WACR,QAAQ,QAAQ,IAAIC,wDAAAA,wBAAwB,CAC7C"}
1
+ {"version":3,"file":"createRetryingTransport.cjs","names":["RetryingTransport","OTelPerformanceManager"],"sources":["../../../src/transport/RetryingTransport/createRetryingTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { OTelPerformanceManager } from '../../utils';\nimport { RetryingTransport } from './RetryingTransport';\n\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport const createRetryingTransport = (options: {\n // Underlying transport to wrap.\n transport: IExporterTransport;\n // Performance manager to use.\n perf?: OTelPerformanceManager;\n}): IExporterTransport =>\n new RetryingTransport(\n options.transport,\n options.perf ?? new OTelPerformanceManager(),\n );\n"],"mappings":";;;;;;;AAOA,MAAa,2BAA2B,YAMtC,IAAIA,sDAAAA,kBACF,QAAQ,WACR,QAAQ,QAAQ,IAAIC,wDAAAA,wBAAwB,CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"createRetryingTransport.js","names":[],"sources":["../../../src/transport/RetryingTransport/createRetryingTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { OTelPerformanceManager } from '../../utils/index.ts';\nimport { RetryingTransport } from './RetryingTransport.ts';\n\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport const createRetryingTransport = (options: {\n // Underlying transport to wrap.\n transport: IExporterTransport;\n // Performance manager to use.\n perf?: OTelPerformanceManager;\n}): IExporterTransport =>\n new RetryingTransport(\n options.transport,\n options.perf ?? new OTelPerformanceManager(),\n );\n"],"mappings":";;;;;;AAOA,MAAa,2BAA2B,YAMtC,IAAI,kBACF,QAAQ,WACR,QAAQ,QAAQ,IAAI,wBAAwB,CAC7C"}
1
+ {"version":3,"file":"createRetryingTransport.js","names":[],"sources":["../../../src/transport/RetryingTransport/createRetryingTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { OTelPerformanceManager } from '../../utils';\nimport { RetryingTransport } from './RetryingTransport';\n\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport const createRetryingTransport = (options: {\n // Underlying transport to wrap.\n transport: IExporterTransport;\n // Performance manager to use.\n perf?: OTelPerformanceManager;\n}): IExporterTransport =>\n new RetryingTransport(\n options.transport,\n options.perf ?? new OTelPerformanceManager(),\n );\n"],"mappings":";;;;;;AAOA,MAAa,2BAA2B,YAMtC,IAAI,kBACF,QAAQ,WACR,QAAQ,QAAQ,IAAI,wBAAwB,CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLSpanStorage.cjs","names":["diag","BasicTracerProvider","KEY_MXL_MAX_PENDING_SPANS_REACHED"],"sources":["../../../src/utils/MXLSpanStorage/MXLSpanStorage.ts"],"sourcesContent":["import type { DiagLogger, Tracer } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { KEY_MXL_MAX_PENDING_SPANS_REACHED } from '../../constants/index.ts';\nimport type { SpanSessionManagerInternal } from '../../managers/index.ts';\n\nconst PENDING_SPANS_STORAGE_KEY_PREFIX = 'mxl_pending_';\nconst MAX_PENDING_SPANS_ITEMS = 10;\n\nexport interface SpanStorageOptions {\n spanSessionManager: SpanSessionManagerInternal;\n resource?: Resource;\n storage?: Storage;\n diag?: DiagLogger;\n storedSpansExpireTimeoutMS?: number;\n onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n}\n\n// MXLSpanStorage is used to keep pending spans that are not meant to be exported (yet) in localStorage,\n// and periodically checks whenever those stored spans are ready to be exported.\n// This functionality has some custom logic to be able to store these spans as JSONs and then recreate them back\n// that could eventually be improved. In particular the things that would need to be improved are:\n// - Avoid serializing as JSON and instead try to use a customExporter that produces the body as it was going to be\n// sent over the wire (serialized, compressed, etc), and store that, so that later when it decides to export those,\n// it's just using that body as a regular fetch call.\n// - Create a service worker that is responsible for tracking the pending spans and deciding when to actually export them.\n// That way we would avoid a potential race condition where two different tabs would try to export the same data.\n// - Make this a more comprehensive component so that the MXLSessionBatchedSpanProcessor doesn't need to be in the\n// middle of SpanSessionVisibilityInstrumentation and this component. Ideally this component would know when and how\n// to take snapshots of the current pending spans and the current session span at any moment, so that the visibility\n// instrumentation doesn't need to be telling that to the batch span processor.\nexport class MXLSpanStorage {\n private readonly _noExportTracer: Tracer;\n private readonly _storage: Storage;\n private readonly _diag: DiagLogger;\n private readonly _onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n private readonly _storedSpansExpireTimeoutMS: number;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private _checkExpiredSpansInterval?: ReturnType<typeof setInterval>;\n\n public constructor({\n resource = emptyResource(),\n storage = window.localStorage,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSpanStorage',\n }),\n storedSpansExpireTimeoutMS = 60 * 60 * 1000, // 1 hour\n onExpiredSpansExport,\n spanSessionManager,\n }: SpanStorageOptions) {\n this._noExportTracer = new BasicTracerProvider({ resource }).getTracer(\n 'mxl-web-sdk-sessions',\n );\n this._storage = storage;\n this._diag = diagParam;\n this._storedSpansExpireTimeoutMS = storedSpansExpireTimeoutMS;\n this._onExpiredSpansExport = onExpiredSpansExport;\n this._spanSessionManager = spanSessionManager;\n\n this.startExpiredSpansCheck();\n }\n\n public storePendingSpans(\n sessionId: string,\n sessionSpan: ReadableSpan,\n pendingSpans: ReadableSpan[],\n ): void {\n try {\n // If this session was already stored, clear it first:\n this.clearStoredSpans(sessionId);\n\n if (this._getPendingSpansKeys().length >= MAX_PENDING_SPANS_ITEMS) {\n this._spanSessionManager.incrSessionCountForKey(\n KEY_MXL_MAX_PENDING_SPANS_REACHED,\n );\n this._diag.warn(\n 'Not storing pending spans as the max number of items was reached',\n );\n return;\n }\n\n const key = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_${Date.now()}`;\n this._storage.setItem(\n key,\n JSON.stringify([sessionSpan, ...pendingSpans], (key, value) =>\n key.startsWith('_') ? undefined : value,\n ),\n );\n\n this._diag.debug(`Stored pending span: ${key}`);\n } catch (error) {\n this._diag.error('Failed to store spans to storage:', error);\n }\n }\n\n public clearStoredSpans(sessionId: string): void {\n try {\n const prefix = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_`;\n this._getPendingSpansKeys().forEach((key) => {\n if (key.startsWith(prefix)) {\n this._storage.removeItem(key);\n }\n });\n } catch (error) {\n this._diag.error('Failed to clear stored spans from storage:', error);\n }\n }\n\n public startExpiredSpansCheck(): void {\n this._checkExpiredSpansInterval = setInterval(\n () => {\n this.checkAndExportExpiredSpans();\n },\n 5 * 60 * 1000,\n ); // Check every 5 minutes\n }\n\n public stopExpiredSpansCheck(): void {\n if (this._checkExpiredSpansInterval) {\n clearInterval(this._checkExpiredSpansInterval);\n this._checkExpiredSpansInterval = undefined;\n }\n }\n\n public checkAndExportExpiredSpans(): void {\n try {\n const keys = this._getPendingSpansKeys();\n if (keys.length === 0) {\n return;\n }\n\n const currentTime = Date.now();\n keys.forEach((key) => {\n const parts = key.split('_');\n const storedTime = parseInt(parts[parts.length - 1], 10);\n\n if (Number.isNaN(storedTime)) {\n this._diag.error(\n 'Found invalid timestamp in stored span:',\n storedTime,\n );\n this._storage.removeItem(key);\n }\n\n if (currentTime - storedTime <= this._storedSpansExpireTimeoutMS) {\n return;\n }\n\n const storedData = this._storage.getItem(key);\n if (!storedData) return;\n\n try {\n const spans: ReadableSpan[] = [];\n for (const storedSpan of JSON.parse(storedData) as ReadableSpan[]) {\n const span = this._noExportTracer.startSpan(storedSpan.name, {\n kind: storedSpan.kind,\n attributes: storedSpan.attributes,\n links: storedSpan.links,\n startTime: storedSpan.startTime,\n });\n span.setStatus(storedSpan.status);\n span.end(storedSpan.endTime);\n spans.push(span as unknown as ReadableSpan);\n }\n\n if (this._onExpiredSpansExport && spans.length > 0) {\n this._onExpiredSpansExport(spans);\n }\n } catch (e) {\n this._diag.error('Failed to process expired spans:', e);\n }\n\n // Always remove the storage item even if processing failed\n this._storage.removeItem(key);\n });\n } catch (e) {\n this._diag.error('Failed to check and export expired spans:', e);\n }\n }\n\n public _getPendingSpansKeys(): string[] {\n const keys: string[] = [];\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(PENDING_SPANS_STORAGE_KEY_PREFIX)) {\n keys.push(key);\n }\n }\n return keys;\n }\n\n public destroy(): void {\n this.stopExpiredSpansCheck();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MXLSpanStorage.cjs","names":["diag","BasicTracerProvider","KEY_MXL_MAX_PENDING_SPANS_REACHED"],"sources":["../../../src/utils/MXLSpanStorage/MXLSpanStorage.ts"],"sourcesContent":["import type { DiagLogger, Tracer } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { KEY_MXL_MAX_PENDING_SPANS_REACHED } from '../../constants';\nimport type { SpanSessionManagerInternal } from '../../managers';\n\nconst PENDING_SPANS_STORAGE_KEY_PREFIX = 'mxl_pending_';\nconst MAX_PENDING_SPANS_ITEMS = 10;\n\nexport interface SpanStorageOptions {\n spanSessionManager: SpanSessionManagerInternal;\n resource?: Resource;\n storage?: Storage;\n diag?: DiagLogger;\n storedSpansExpireTimeoutMS?: number;\n onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n}\n\n// MXLSpanStorage is used to keep pending spans that are not meant to be exported (yet) in localStorage,\n// and periodically checks whenever those stored spans are ready to be exported.\n// This functionality has some custom logic to be able to store these spans as JSONs and then recreate them back\n// that could eventually be improved. In particular the things that would need to be improved are:\n// - Avoid serializing as JSON and instead try to use a customExporter that produces the body as it was going to be\n// sent over the wire (serialized, compressed, etc), and store that, so that later when it decides to export those,\n// it's just using that body as a regular fetch call.\n// - Create a service worker that is responsible for tracking the pending spans and deciding when to actually export them.\n// That way we would avoid a potential race condition where two different tabs would try to export the same data.\n// - Make this a more comprehensive component so that the MXLSessionBatchedSpanProcessor doesn't need to be in the\n// middle of SpanSessionVisibilityInstrumentation and this component. Ideally this component would know when and how\n// to take snapshots of the current pending spans and the current session span at any moment, so that the visibility\n// instrumentation doesn't need to be telling that to the batch span processor.\nexport class MXLSpanStorage {\n private readonly _noExportTracer: Tracer;\n private readonly _storage: Storage;\n private readonly _diag: DiagLogger;\n private readonly _onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n private readonly _storedSpansExpireTimeoutMS: number;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private _checkExpiredSpansInterval?: ReturnType<typeof setInterval>;\n\n public constructor({\n resource = emptyResource(),\n storage = window.localStorage,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSpanStorage',\n }),\n storedSpansExpireTimeoutMS = 60 * 60 * 1000, // 1 hour\n onExpiredSpansExport,\n spanSessionManager,\n }: SpanStorageOptions) {\n this._noExportTracer = new BasicTracerProvider({ resource }).getTracer(\n 'mxl-web-sdk-sessions',\n );\n this._storage = storage;\n this._diag = diagParam;\n this._storedSpansExpireTimeoutMS = storedSpansExpireTimeoutMS;\n this._onExpiredSpansExport = onExpiredSpansExport;\n this._spanSessionManager = spanSessionManager;\n\n this.startExpiredSpansCheck();\n }\n\n public storePendingSpans(\n sessionId: string,\n sessionSpan: ReadableSpan,\n pendingSpans: ReadableSpan[],\n ): void {\n try {\n // If this session was already stored, clear it first:\n this.clearStoredSpans(sessionId);\n\n if (this._getPendingSpansKeys().length >= MAX_PENDING_SPANS_ITEMS) {\n this._spanSessionManager.incrSessionCountForKey(\n KEY_MXL_MAX_PENDING_SPANS_REACHED,\n );\n this._diag.warn(\n 'Not storing pending spans as the max number of items was reached',\n );\n return;\n }\n\n const key = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_${Date.now()}`;\n this._storage.setItem(\n key,\n JSON.stringify([sessionSpan, ...pendingSpans], (key, value) =>\n key.startsWith('_') ? undefined : value,\n ),\n );\n\n this._diag.debug(`Stored pending span: ${key}`);\n } catch (error) {\n this._diag.error('Failed to store spans to storage:', error);\n }\n }\n\n public clearStoredSpans(sessionId: string): void {\n try {\n const prefix = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_`;\n this._getPendingSpansKeys().forEach((key) => {\n if (key.startsWith(prefix)) {\n this._storage.removeItem(key);\n }\n });\n } catch (error) {\n this._diag.error('Failed to clear stored spans from storage:', error);\n }\n }\n\n public startExpiredSpansCheck(): void {\n this._checkExpiredSpansInterval = setInterval(\n () => {\n this.checkAndExportExpiredSpans();\n },\n 5 * 60 * 1000,\n ); // Check every 5 minutes\n }\n\n public stopExpiredSpansCheck(): void {\n if (this._checkExpiredSpansInterval) {\n clearInterval(this._checkExpiredSpansInterval);\n this._checkExpiredSpansInterval = undefined;\n }\n }\n\n public checkAndExportExpiredSpans(): void {\n try {\n const keys = this._getPendingSpansKeys();\n if (keys.length === 0) {\n return;\n }\n\n const currentTime = Date.now();\n keys.forEach((key) => {\n const parts = key.split('_');\n const storedTime = parseInt(parts[parts.length - 1], 10);\n\n if (Number.isNaN(storedTime)) {\n this._diag.error(\n 'Found invalid timestamp in stored span:',\n storedTime,\n );\n this._storage.removeItem(key);\n }\n\n if (currentTime - storedTime <= this._storedSpansExpireTimeoutMS) {\n return;\n }\n\n const storedData = this._storage.getItem(key);\n if (!storedData) return;\n\n try {\n const spans: ReadableSpan[] = [];\n for (const storedSpan of JSON.parse(storedData) as ReadableSpan[]) {\n const span = this._noExportTracer.startSpan(storedSpan.name, {\n kind: storedSpan.kind,\n attributes: storedSpan.attributes,\n links: storedSpan.links,\n startTime: storedSpan.startTime,\n });\n span.setStatus(storedSpan.status);\n span.end(storedSpan.endTime);\n spans.push(span as unknown as ReadableSpan);\n }\n\n if (this._onExpiredSpansExport && spans.length > 0) {\n this._onExpiredSpansExport(spans);\n }\n } catch (e) {\n this._diag.error('Failed to process expired spans:', e);\n }\n\n // Always remove the storage item even if processing failed\n this._storage.removeItem(key);\n });\n } catch (e) {\n this._diag.error('Failed to check and export expired spans:', e);\n }\n }\n\n public _getPendingSpansKeys(): string[] {\n const keys: string[] = [];\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(PENDING_SPANS_STORAGE_KEY_PREFIX)) {\n keys.push(key);\n }\n }\n return keys;\n }\n\n public destroy(): void {\n this.stopExpiredSpansCheck();\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLSpanStorage.js","names":[],"sources":["../../../src/utils/MXLSpanStorage/MXLSpanStorage.ts"],"sourcesContent":["import type { DiagLogger, Tracer } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { KEY_MXL_MAX_PENDING_SPANS_REACHED } from '../../constants/index.ts';\nimport type { SpanSessionManagerInternal } from '../../managers/index.ts';\n\nconst PENDING_SPANS_STORAGE_KEY_PREFIX = 'mxl_pending_';\nconst MAX_PENDING_SPANS_ITEMS = 10;\n\nexport interface SpanStorageOptions {\n spanSessionManager: SpanSessionManagerInternal;\n resource?: Resource;\n storage?: Storage;\n diag?: DiagLogger;\n storedSpansExpireTimeoutMS?: number;\n onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n}\n\n// MXLSpanStorage is used to keep pending spans that are not meant to be exported (yet) in localStorage,\n// and periodically checks whenever those stored spans are ready to be exported.\n// This functionality has some custom logic to be able to store these spans as JSONs and then recreate them back\n// that could eventually be improved. In particular the things that would need to be improved are:\n// - Avoid serializing as JSON and instead try to use a customExporter that produces the body as it was going to be\n// sent over the wire (serialized, compressed, etc), and store that, so that later when it decides to export those,\n// it's just using that body as a regular fetch call.\n// - Create a service worker that is responsible for tracking the pending spans and deciding when to actually export them.\n// That way we would avoid a potential race condition where two different tabs would try to export the same data.\n// - Make this a more comprehensive component so that the MXLSessionBatchedSpanProcessor doesn't need to be in the\n// middle of SpanSessionVisibilityInstrumentation and this component. Ideally this component would know when and how\n// to take snapshots of the current pending spans and the current session span at any moment, so that the visibility\n// instrumentation doesn't need to be telling that to the batch span processor.\nexport class MXLSpanStorage {\n private readonly _noExportTracer: Tracer;\n private readonly _storage: Storage;\n private readonly _diag: DiagLogger;\n private readonly _onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n private readonly _storedSpansExpireTimeoutMS: number;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private _checkExpiredSpansInterval?: ReturnType<typeof setInterval>;\n\n public constructor({\n resource = emptyResource(),\n storage = window.localStorage,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSpanStorage',\n }),\n storedSpansExpireTimeoutMS = 60 * 60 * 1000, // 1 hour\n onExpiredSpansExport,\n spanSessionManager,\n }: SpanStorageOptions) {\n this._noExportTracer = new BasicTracerProvider({ resource }).getTracer(\n 'mxl-web-sdk-sessions',\n );\n this._storage = storage;\n this._diag = diagParam;\n this._storedSpansExpireTimeoutMS = storedSpansExpireTimeoutMS;\n this._onExpiredSpansExport = onExpiredSpansExport;\n this._spanSessionManager = spanSessionManager;\n\n this.startExpiredSpansCheck();\n }\n\n public storePendingSpans(\n sessionId: string,\n sessionSpan: ReadableSpan,\n pendingSpans: ReadableSpan[],\n ): void {\n try {\n // If this session was already stored, clear it first:\n this.clearStoredSpans(sessionId);\n\n if (this._getPendingSpansKeys().length >= MAX_PENDING_SPANS_ITEMS) {\n this._spanSessionManager.incrSessionCountForKey(\n KEY_MXL_MAX_PENDING_SPANS_REACHED,\n );\n this._diag.warn(\n 'Not storing pending spans as the max number of items was reached',\n );\n return;\n }\n\n const key = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_${Date.now()}`;\n this._storage.setItem(\n key,\n JSON.stringify([sessionSpan, ...pendingSpans], (key, value) =>\n key.startsWith('_') ? undefined : value,\n ),\n );\n\n this._diag.debug(`Stored pending span: ${key}`);\n } catch (error) {\n this._diag.error('Failed to store spans to storage:', error);\n }\n }\n\n public clearStoredSpans(sessionId: string): void {\n try {\n const prefix = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_`;\n this._getPendingSpansKeys().forEach((key) => {\n if (key.startsWith(prefix)) {\n this._storage.removeItem(key);\n }\n });\n } catch (error) {\n this._diag.error('Failed to clear stored spans from storage:', error);\n }\n }\n\n public startExpiredSpansCheck(): void {\n this._checkExpiredSpansInterval = setInterval(\n () => {\n this.checkAndExportExpiredSpans();\n },\n 5 * 60 * 1000,\n ); // Check every 5 minutes\n }\n\n public stopExpiredSpansCheck(): void {\n if (this._checkExpiredSpansInterval) {\n clearInterval(this._checkExpiredSpansInterval);\n this._checkExpiredSpansInterval = undefined;\n }\n }\n\n public checkAndExportExpiredSpans(): void {\n try {\n const keys = this._getPendingSpansKeys();\n if (keys.length === 0) {\n return;\n }\n\n const currentTime = Date.now();\n keys.forEach((key) => {\n const parts = key.split('_');\n const storedTime = parseInt(parts[parts.length - 1], 10);\n\n if (Number.isNaN(storedTime)) {\n this._diag.error(\n 'Found invalid timestamp in stored span:',\n storedTime,\n );\n this._storage.removeItem(key);\n }\n\n if (currentTime - storedTime <= this._storedSpansExpireTimeoutMS) {\n return;\n }\n\n const storedData = this._storage.getItem(key);\n if (!storedData) return;\n\n try {\n const spans: ReadableSpan[] = [];\n for (const storedSpan of JSON.parse(storedData) as ReadableSpan[]) {\n const span = this._noExportTracer.startSpan(storedSpan.name, {\n kind: storedSpan.kind,\n attributes: storedSpan.attributes,\n links: storedSpan.links,\n startTime: storedSpan.startTime,\n });\n span.setStatus(storedSpan.status);\n span.end(storedSpan.endTime);\n spans.push(span as unknown as ReadableSpan);\n }\n\n if (this._onExpiredSpansExport && spans.length > 0) {\n this._onExpiredSpansExport(spans);\n }\n } catch (e) {\n this._diag.error('Failed to process expired spans:', e);\n }\n\n // Always remove the storage item even if processing failed\n this._storage.removeItem(key);\n });\n } catch (e) {\n this._diag.error('Failed to check and export expired spans:', e);\n }\n }\n\n public _getPendingSpansKeys(): string[] {\n const keys: string[] = [];\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(PENDING_SPANS_STORAGE_KEY_PREFIX)) {\n keys.push(key);\n }\n }\n return keys;\n }\n\n public destroy(): void {\n this.stopExpiredSpansCheck();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MXLSpanStorage.js","names":[],"sources":["../../../src/utils/MXLSpanStorage/MXLSpanStorage.ts"],"sourcesContent":["import type { DiagLogger, Tracer } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { KEY_MXL_MAX_PENDING_SPANS_REACHED } from '../../constants';\nimport type { SpanSessionManagerInternal } from '../../managers';\n\nconst PENDING_SPANS_STORAGE_KEY_PREFIX = 'mxl_pending_';\nconst MAX_PENDING_SPANS_ITEMS = 10;\n\nexport interface SpanStorageOptions {\n spanSessionManager: SpanSessionManagerInternal;\n resource?: Resource;\n storage?: Storage;\n diag?: DiagLogger;\n storedSpansExpireTimeoutMS?: number;\n onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n}\n\n// MXLSpanStorage is used to keep pending spans that are not meant to be exported (yet) in localStorage,\n// and periodically checks whenever those stored spans are ready to be exported.\n// This functionality has some custom logic to be able to store these spans as JSONs and then recreate them back\n// that could eventually be improved. In particular the things that would need to be improved are:\n// - Avoid serializing as JSON and instead try to use a customExporter that produces the body as it was going to be\n// sent over the wire (serialized, compressed, etc), and store that, so that later when it decides to export those,\n// it's just using that body as a regular fetch call.\n// - Create a service worker that is responsible for tracking the pending spans and deciding when to actually export them.\n// That way we would avoid a potential race condition where two different tabs would try to export the same data.\n// - Make this a more comprehensive component so that the MXLSessionBatchedSpanProcessor doesn't need to be in the\n// middle of SpanSessionVisibilityInstrumentation and this component. Ideally this component would know when and how\n// to take snapshots of the current pending spans and the current session span at any moment, so that the visibility\n// instrumentation doesn't need to be telling that to the batch span processor.\nexport class MXLSpanStorage {\n private readonly _noExportTracer: Tracer;\n private readonly _storage: Storage;\n private readonly _diag: DiagLogger;\n private readonly _onExpiredSpansExport?: (spans: ReadableSpan[]) => void;\n private readonly _storedSpansExpireTimeoutMS: number;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private _checkExpiredSpansInterval?: ReturnType<typeof setInterval>;\n\n public constructor({\n resource = emptyResource(),\n storage = window.localStorage,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSpanStorage',\n }),\n storedSpansExpireTimeoutMS = 60 * 60 * 1000, // 1 hour\n onExpiredSpansExport,\n spanSessionManager,\n }: SpanStorageOptions) {\n this._noExportTracer = new BasicTracerProvider({ resource }).getTracer(\n 'mxl-web-sdk-sessions',\n );\n this._storage = storage;\n this._diag = diagParam;\n this._storedSpansExpireTimeoutMS = storedSpansExpireTimeoutMS;\n this._onExpiredSpansExport = onExpiredSpansExport;\n this._spanSessionManager = spanSessionManager;\n\n this.startExpiredSpansCheck();\n }\n\n public storePendingSpans(\n sessionId: string,\n sessionSpan: ReadableSpan,\n pendingSpans: ReadableSpan[],\n ): void {\n try {\n // If this session was already stored, clear it first:\n this.clearStoredSpans(sessionId);\n\n if (this._getPendingSpansKeys().length >= MAX_PENDING_SPANS_ITEMS) {\n this._spanSessionManager.incrSessionCountForKey(\n KEY_MXL_MAX_PENDING_SPANS_REACHED,\n );\n this._diag.warn(\n 'Not storing pending spans as the max number of items was reached',\n );\n return;\n }\n\n const key = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_${Date.now()}`;\n this._storage.setItem(\n key,\n JSON.stringify([sessionSpan, ...pendingSpans], (key, value) =>\n key.startsWith('_') ? undefined : value,\n ),\n );\n\n this._diag.debug(`Stored pending span: ${key}`);\n } catch (error) {\n this._diag.error('Failed to store spans to storage:', error);\n }\n }\n\n public clearStoredSpans(sessionId: string): void {\n try {\n const prefix = `${PENDING_SPANS_STORAGE_KEY_PREFIX}${sessionId}_`;\n this._getPendingSpansKeys().forEach((key) => {\n if (key.startsWith(prefix)) {\n this._storage.removeItem(key);\n }\n });\n } catch (error) {\n this._diag.error('Failed to clear stored spans from storage:', error);\n }\n }\n\n public startExpiredSpansCheck(): void {\n this._checkExpiredSpansInterval = setInterval(\n () => {\n this.checkAndExportExpiredSpans();\n },\n 5 * 60 * 1000,\n ); // Check every 5 minutes\n }\n\n public stopExpiredSpansCheck(): void {\n if (this._checkExpiredSpansInterval) {\n clearInterval(this._checkExpiredSpansInterval);\n this._checkExpiredSpansInterval = undefined;\n }\n }\n\n public checkAndExportExpiredSpans(): void {\n try {\n const keys = this._getPendingSpansKeys();\n if (keys.length === 0) {\n return;\n }\n\n const currentTime = Date.now();\n keys.forEach((key) => {\n const parts = key.split('_');\n const storedTime = parseInt(parts[parts.length - 1], 10);\n\n if (Number.isNaN(storedTime)) {\n this._diag.error(\n 'Found invalid timestamp in stored span:',\n storedTime,\n );\n this._storage.removeItem(key);\n }\n\n if (currentTime - storedTime <= this._storedSpansExpireTimeoutMS) {\n return;\n }\n\n const storedData = this._storage.getItem(key);\n if (!storedData) return;\n\n try {\n const spans: ReadableSpan[] = [];\n for (const storedSpan of JSON.parse(storedData) as ReadableSpan[]) {\n const span = this._noExportTracer.startSpan(storedSpan.name, {\n kind: storedSpan.kind,\n attributes: storedSpan.attributes,\n links: storedSpan.links,\n startTime: storedSpan.startTime,\n });\n span.setStatus(storedSpan.status);\n span.end(storedSpan.endTime);\n spans.push(span as unknown as ReadableSpan);\n }\n\n if (this._onExpiredSpansExport && spans.length > 0) {\n this._onExpiredSpansExport(spans);\n }\n } catch (e) {\n this._diag.error('Failed to process expired spans:', e);\n }\n\n // Always remove the storage item even if processing failed\n this._storage.removeItem(key);\n });\n } catch (e) {\n this._diag.error('Failed to check and export expired spans:', e);\n }\n }\n\n public _getPendingSpansKeys(): string[] {\n const keys: string[] = [];\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(PENDING_SPANS_STORAGE_KEY_PREFIX)) {\n keys.push(key);\n }\n }\n return keys;\n }\n\n public destroy(): void {\n this.stopExpiredSpansCheck();\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OTelPerformanceManager.cjs","names":[],"sources":["../../../src/utils/PerformanceManager/OTelPerformanceManager.ts"],"sourcesContent":["import type { HrTime } from '@opentelemetry/api';\nimport { hrTimeToMilliseconds, millisToHrTime } from '@opentelemetry/core';\nimport type { PerformanceClock, PerformanceManager } from './types.ts';\n\nexport class OTelPerformanceManager implements PerformanceManager {\n private readonly _clock: PerformanceClock;\n\n public constructor(clock: PerformanceClock = window.performance) {\n this._clock = clock;\n }\n\n public epochMillisFromOriginOffset = (originOffset: number) =>\n this._clock.timeOrigin + originOffset;\n\n public getNowHRTime = () => millisToHrTime(this.getNowMillis());\n\n public getNowMillis = () =>\n this.epochMillisFromOriginOffset(this._clock.now()); // otperformance.now() returns milliseconds since timeOrigin, timeOrigin is the time from epoch to the start of the page load\n\n public millisSinceHRTime = (time: HrTime) =>\n this.getNowMillis() - hrTimeToMilliseconds(time);\n\n // Returns milliseconds elapsed since the SDK's zero time (currently navigation\n // start). When soft-navigation support is added, this method will subtract the\n // reset point so timings remain relative to the soft navigation.\n public millisFromZeroTime = (originOffset: number) => originOffset;\n}\n"],"mappings":";;;;AAIA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,QAA0B,OAAO,aAAa;AAC/D,OAAK,SAAS;;CAGhB,+BAAsC,iBACpC,KAAK,OAAO,aAAa;CAE3B,sBAAO,GAAA,oBAAA,gBAAoC,KAAK,cAAc,CAAC;CAE/D,qBACE,KAAK,4BAA4B,KAAK,OAAO,KAAK,CAAC;CAErD,qBAA4B,SAC1B,KAAK,cAAc,IAAA,GAAA,oBAAA,sBAAwB,KAAK;CAKlD,sBAA6B,iBAAyB"}
1
+ {"version":3,"file":"OTelPerformanceManager.cjs","names":[],"sources":["../../../src/utils/PerformanceManager/OTelPerformanceManager.ts"],"sourcesContent":["import type { HrTime } from '@opentelemetry/api';\nimport { hrTimeToMilliseconds, millisToHrTime } from '@opentelemetry/core';\nimport type { PerformanceClock, PerformanceManager } from './types';\n\nexport class OTelPerformanceManager implements PerformanceManager {\n private readonly _clock: PerformanceClock;\n\n public constructor(clock: PerformanceClock = window.performance) {\n this._clock = clock;\n }\n\n public epochMillisFromOriginOffset = (originOffset: number) =>\n this._clock.timeOrigin + originOffset;\n\n public getNowHRTime = () => millisToHrTime(this.getNowMillis());\n\n public getNowMillis = () =>\n this.epochMillisFromOriginOffset(this._clock.now()); // otperformance.now() returns milliseconds since timeOrigin, timeOrigin is the time from epoch to the start of the page load\n\n public millisSinceHRTime = (time: HrTime) =>\n this.getNowMillis() - hrTimeToMilliseconds(time);\n\n // Returns milliseconds elapsed since the SDK's zero time (currently navigation\n // start). When soft-navigation support is added, this method will subtract the\n // reset point so timings remain relative to the soft navigation.\n public millisFromZeroTime = (originOffset: number) => originOffset;\n}\n"],"mappings":";;;;AAIA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,QAA0B,OAAO,aAAa;AAC/D,OAAK,SAAS;;CAGhB,+BAAsC,iBACpC,KAAK,OAAO,aAAa;CAE3B,sBAAO,GAAA,oBAAA,gBAAoC,KAAK,cAAc,CAAC;CAE/D,qBACE,KAAK,4BAA4B,KAAK,OAAO,KAAK,CAAC;CAErD,qBAA4B,SAC1B,KAAK,cAAc,IAAA,GAAA,oBAAA,sBAAwB,KAAK;CAKlD,sBAA6B,iBAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"OTelPerformanceManager.js","names":[],"sources":["../../../src/utils/PerformanceManager/OTelPerformanceManager.ts"],"sourcesContent":["import type { HrTime } from '@opentelemetry/api';\nimport { hrTimeToMilliseconds, millisToHrTime } from '@opentelemetry/core';\nimport type { PerformanceClock, PerformanceManager } from './types.ts';\n\nexport class OTelPerformanceManager implements PerformanceManager {\n private readonly _clock: PerformanceClock;\n\n public constructor(clock: PerformanceClock = window.performance) {\n this._clock = clock;\n }\n\n public epochMillisFromOriginOffset = (originOffset: number) =>\n this._clock.timeOrigin + originOffset;\n\n public getNowHRTime = () => millisToHrTime(this.getNowMillis());\n\n public getNowMillis = () =>\n this.epochMillisFromOriginOffset(this._clock.now()); // otperformance.now() returns milliseconds since timeOrigin, timeOrigin is the time from epoch to the start of the page load\n\n public millisSinceHRTime = (time: HrTime) =>\n this.getNowMillis() - hrTimeToMilliseconds(time);\n\n // Returns milliseconds elapsed since the SDK's zero time (currently navigation\n // start). When soft-navigation support is added, this method will subtract the\n // reset point so timings remain relative to the soft navigation.\n public millisFromZeroTime = (originOffset: number) => originOffset;\n}\n"],"mappings":";;AAIA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,QAA0B,OAAO,aAAa;AAC/D,OAAK,SAAS;;CAGhB,+BAAsC,iBACpC,KAAK,OAAO,aAAa;CAE3B,qBAA4B,eAAe,KAAK,cAAc,CAAC;CAE/D,qBACE,KAAK,4BAA4B,KAAK,OAAO,KAAK,CAAC;CAErD,qBAA4B,SAC1B,KAAK,cAAc,GAAG,qBAAqB,KAAK;CAKlD,sBAA6B,iBAAyB"}
1
+ {"version":3,"file":"OTelPerformanceManager.js","names":[],"sources":["../../../src/utils/PerformanceManager/OTelPerformanceManager.ts"],"sourcesContent":["import type { HrTime } from '@opentelemetry/api';\nimport { hrTimeToMilliseconds, millisToHrTime } from '@opentelemetry/core';\nimport type { PerformanceClock, PerformanceManager } from './types';\n\nexport class OTelPerformanceManager implements PerformanceManager {\n private readonly _clock: PerformanceClock;\n\n public constructor(clock: PerformanceClock = window.performance) {\n this._clock = clock;\n }\n\n public epochMillisFromOriginOffset = (originOffset: number) =>\n this._clock.timeOrigin + originOffset;\n\n public getNowHRTime = () => millisToHrTime(this.getNowMillis());\n\n public getNowMillis = () =>\n this.epochMillisFromOriginOffset(this._clock.now()); // otperformance.now() returns milliseconds since timeOrigin, timeOrigin is the time from epoch to the start of the page load\n\n public millisSinceHRTime = (time: HrTime) =>\n this.getNowMillis() - hrTimeToMilliseconds(time);\n\n // Returns milliseconds elapsed since the SDK's zero time (currently navigation\n // start). When soft-navigation support is added, this method will subtract the\n // reset point so timings remain relative to the soft navigation.\n public millisFromZeroTime = (originOffset: number) => originOffset;\n}\n"],"mappings":";;AAIA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,QAA0B,OAAO,aAAa;AAC/D,OAAK,SAAS;;CAGhB,+BAAsC,iBACpC,KAAK,OAAO,aAAa;CAE3B,qBAA4B,eAAe,KAAK,cAAc,CAAC;CAE/D,qBACE,KAAK,4BAA4B,KAAK,OAAO,KAAK,CAAC;CAErD,qBAA4B,SAC1B,KAAK,cAAc,GAAG,qBAAqB,KAAK;CAKlD,sBAA6B,iBAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"bulkAddEventListener.cjs","names":[],"sources":["../../../src/utils/bulkAddEventListener/bulkAddEventListener.ts"],"sourcesContent":["import type { BulkAddEventListenerArgs } from './types.ts';\n\n/**\n * Add multiple event listeners to a target element.\n * example:\n *\n * ```\n * bulkAddEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: () => console.log('Event fired'),\n * });\n *```\n * */\nexport const bulkAddEventListener = ({\n target,\n events,\n callback,\n}: BulkAddEventListenerArgs) => {\n events.forEach((event) => {\n target.addEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,wBAAwB,EACnC,QACA,QACA,eAC8B;AAC9B,QAAO,SAAS,UAAU;AACxB,SAAO,iBAAiB,OAAO,SAAS;GACxC"}
1
+ {"version":3,"file":"bulkAddEventListener.cjs","names":[],"sources":["../../../src/utils/bulkAddEventListener/bulkAddEventListener.ts"],"sourcesContent":["import type { BulkAddEventListenerArgs } from './types';\n\n/**\n * Add multiple event listeners to a target element.\n * example:\n *\n * ```\n * bulkAddEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: () => console.log('Event fired'),\n * });\n *```\n * */\nexport const bulkAddEventListener = ({\n target,\n events,\n callback,\n}: BulkAddEventListenerArgs) => {\n events.forEach((event) => {\n target.addEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,wBAAwB,EACnC,QACA,QACA,eAC8B;AAC9B,QAAO,SAAS,UAAU;AACxB,SAAO,iBAAiB,OAAO,SAAS;GACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bulkAddEventListener.js","names":[],"sources":["../../../src/utils/bulkAddEventListener/bulkAddEventListener.ts"],"sourcesContent":["import type { BulkAddEventListenerArgs } from './types.ts';\n\n/**\n * Add multiple event listeners to a target element.\n * example:\n *\n * ```\n * bulkAddEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: () => console.log('Event fired'),\n * });\n *```\n * */\nexport const bulkAddEventListener = ({\n target,\n events,\n callback,\n}: BulkAddEventListenerArgs) => {\n events.forEach((event) => {\n target.addEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,wBAAwB,EACnC,QACA,QACA,eAC8B;AAC9B,QAAO,SAAS,UAAU;AACxB,SAAO,iBAAiB,OAAO,SAAS;GACxC"}
1
+ {"version":3,"file":"bulkAddEventListener.js","names":[],"sources":["../../../src/utils/bulkAddEventListener/bulkAddEventListener.ts"],"sourcesContent":["import type { BulkAddEventListenerArgs } from './types';\n\n/**\n * Add multiple event listeners to a target element.\n * example:\n *\n * ```\n * bulkAddEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: () => console.log('Event fired'),\n * });\n *```\n * */\nexport const bulkAddEventListener = ({\n target,\n events,\n callback,\n}: BulkAddEventListenerArgs) => {\n events.forEach((event) => {\n target.addEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,wBAAwB,EACnC,QACA,QACA,eAC8B;AAC9B,QAAO,SAAS,UAAU;AACxB,SAAO,iBAAiB,OAAO,SAAS;GACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bulkRemoveEventListener.cjs","names":[],"sources":["../../../src/utils/bulkRemoveEventListener/bulkRemoveEventListener.ts"],"sourcesContent":["import type { BulkRemoveEventListenerArgs } from './types.ts';\n\n/**\n * Remove multiple event listeners from a target element.\n * example:\n *\n * ```\n * bulkRemoveEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: someRefToACallbackFunction,\n * });\n *```\n * */\nexport const bulkRemoveEventListener = ({\n target,\n events,\n callback,\n}: BulkRemoveEventListenerArgs) => {\n events.forEach((event) => {\n target.removeEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,2BAA2B,EACtC,QACA,QACA,eACiC;AACjC,QAAO,SAAS,UAAU;AACxB,SAAO,oBAAoB,OAAO,SAAS;GAC3C"}
1
+ {"version":3,"file":"bulkRemoveEventListener.cjs","names":[],"sources":["../../../src/utils/bulkRemoveEventListener/bulkRemoveEventListener.ts"],"sourcesContent":["import type { BulkRemoveEventListenerArgs } from './types';\n\n/**\n * Remove multiple event listeners from a target element.\n * example:\n *\n * ```\n * bulkRemoveEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: someRefToACallbackFunction,\n * });\n *```\n * */\nexport const bulkRemoveEventListener = ({\n target,\n events,\n callback,\n}: BulkRemoveEventListenerArgs) => {\n events.forEach((event) => {\n target.removeEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAa,2BAA2B,EACtC,QACA,QACA,eACiC;AACjC,QAAO,SAAS,UAAU;AACxB,SAAO,oBAAoB,OAAO,SAAS;GAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"bulkRemoveEventListener.js","names":[],"sources":["../../../src/utils/bulkRemoveEventListener/bulkRemoveEventListener.ts"],"sourcesContent":["import type { BulkRemoveEventListenerArgs } from './types.ts';\n\n/**\n * Remove multiple event listeners from a target element.\n * example:\n *\n * ```\n * bulkRemoveEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: someRefToACallbackFunction,\n * });\n *```\n * */\nexport const bulkRemoveEventListener = ({\n target,\n events,\n callback,\n}: BulkRemoveEventListenerArgs) => {\n events.forEach((event) => {\n target.removeEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,2BAA2B,EACtC,QACA,QACA,eACiC;AACjC,QAAO,SAAS,UAAU;AACxB,SAAO,oBAAoB,OAAO,SAAS;GAC3C"}
1
+ {"version":3,"file":"bulkRemoveEventListener.js","names":[],"sources":["../../../src/utils/bulkRemoveEventListener/bulkRemoveEventListener.ts"],"sourcesContent":["import type { BulkRemoveEventListenerArgs } from './types';\n\n/**\n * Remove multiple event listeners from a target element.\n * example:\n *\n * ```\n * bulkRemoveEventListener({\n * target: window,\n * events: ['visibilitychange', 'resize'],\n * callback: someRefToACallbackFunction,\n * });\n *```\n * */\nexport const bulkRemoveEventListener = ({\n target,\n events,\n callback,\n}: BulkRemoveEventListenerArgs) => {\n events.forEach((event) => {\n target.removeEventListener(event, callback);\n });\n};\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,2BAA2B,EACtC,QACA,QACA,eACiC;AACjC,QAAO,SAAS,UAAU;AACxB,SAAO,oBAAoB,OAAO,SAAS;GAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"getVisibilityState.cjs","names":[],"sources":["../../src/utils/getVisibilityState.ts"],"sourcesContent":["import type { VisibilityStateDocument } from '../common/index.ts';\nimport { MXL_STATES } from '../constants/index.ts';\n\nexport const getVisibilityState = (visibilityDoc: VisibilityStateDocument) =>\n visibilityDoc.visibilityState === 'hidden'\n ? MXL_STATES.Background\n : MXL_STATES.Foreground;\n"],"mappings":";;;AAGA,MAAa,sBAAsB,kBACjC,cAAc,oBAAoB,WAAA,eAAA"}
1
+ {"version":3,"file":"getVisibilityState.cjs","names":[],"sources":["../../src/utils/getVisibilityState.ts"],"sourcesContent":["import type { VisibilityStateDocument } from '../common';\nimport { MXL_STATES } from '../constants';\n\nexport const getVisibilityState = (visibilityDoc: VisibilityStateDocument) =>\n visibilityDoc.visibilityState === 'hidden'\n ? MXL_STATES.Background\n : MXL_STATES.Foreground;\n"],"mappings":";;;AAGA,MAAa,sBAAsB,kBACjC,cAAc,oBAAoB,WAAA,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getVisibilityState.js","names":[],"sources":["../../src/utils/getVisibilityState.ts"],"sourcesContent":["import type { VisibilityStateDocument } from '../common/index.ts';\nimport { MXL_STATES } from '../constants/index.ts';\n\nexport const getVisibilityState = (visibilityDoc: VisibilityStateDocument) =>\n visibilityDoc.visibilityState === 'hidden'\n ? MXL_STATES.Background\n : MXL_STATES.Foreground;\n"],"mappings":";;AAGA,MAAa,sBAAsB,kBACjC,cAAc,oBAAoB,WAAA,eAAA"}
1
+ {"version":3,"file":"getVisibilityState.js","names":[],"sources":["../../src/utils/getVisibilityState.ts"],"sourcesContent":["import type { VisibilityStateDocument } from '../common';\nimport { MXL_STATES } from '../constants';\n\nexport const getVisibilityState = (visibilityDoc: VisibilityStateDocument) =>\n visibilityDoc.visibilityState === 'hidden'\n ? MXL_STATES.Background\n : MXL_STATES.Foreground;\n"],"mappings":";;AAGA,MAAa,sBAAsB,kBACjC,cAAc,oBAAoB,WAAA,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"nsfConfigValidation.cjs","names":[],"sources":["../../src/utils/nsfConfigValidation.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { SDKFeaturesManager } from '../managers/index.ts';\nimport type { SDKInitConfig } from '../sdk/index.ts';\n\ntype ValidateConfigArgs = {\n featureManager: SDKFeaturesManager;\n diag: DiagLogger;\n} & Pick<\n SDKInitConfig,\n 'propagator' | 'registerGlobally' | 'defaultInstrumentationConfig'\n>;\n\nexport const nsfConfigValidation = ({\n diag,\n featureManager,\n registerGlobally,\n propagator,\n defaultInstrumentationConfig,\n}: ValidateConfigArgs) => {\n if (!featureManager.isNetworkSpanForwardingEnabled()) {\n return false;\n }\n\n const warnings = [];\n\n if (!registerGlobally) {\n warnings.push(\n 'Network span forwarding cannot be used when `registerGlobally` is set to false. Turning off network span forwarding.',\n );\n }\n\n if (propagator) {\n warnings.push(\n 'Network span forwarding cannot be used alongside a custom `propagator`. Turning off network span forwarding.',\n );\n }\n\n if (\n defaultInstrumentationConfig?.omit?.has(\n '@opentelemetry/instrumentation-xml-http-request',\n ) &&\n defaultInstrumentationConfig.omit.has(\n '@opentelemetry/instrumentation-fetch',\n )\n ) {\n warnings.push(\n \"Network span forwarding cannot be used when both '@opentelemetry/instrumentation-xml-http-request' and \" +\n \"'@opentelemetry/instrumentation-fetch' are omitted. Turning off network span forwarding.\",\n );\n }\n\n warnings.forEach((warning) => {\n diag.warn(warning);\n });\n\n return warnings.length === 0;\n};\n"],"mappings":";;AAYA,MAAa,uBAAuB,EAClC,MACA,gBACA,kBACA,YACA,mCACwB;AACxB,KAAI,CAAC,eAAe,gCAAgC,CAClD,QAAO;CAGT,MAAM,WAAW,EAAE;AAEnB,KAAI,CAAC,iBACH,UAAS,KACP,uHACD;AAGH,KAAI,WACF,UAAS,KACP,+GACD;AAGH,KACE,8BAA8B,MAAM,IAClC,kDACD,IACD,6BAA6B,KAAK,IAChC,uCACD,CAED,UAAS,KACP,kMAED;AAGH,UAAS,SAAS,YAAY;AAC5B,OAAK,KAAK,QAAQ;GAClB;AAEF,QAAO,SAAS,WAAW"}
1
+ {"version":3,"file":"nsfConfigValidation.cjs","names":[],"sources":["../../src/utils/nsfConfigValidation.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { SDKFeaturesManager } from '../managers';\nimport type { SDKInitConfig } from '../sdk';\n\ntype ValidateConfigArgs = {\n featureManager: SDKFeaturesManager;\n diag: DiagLogger;\n} & Pick<\n SDKInitConfig,\n 'propagator' | 'registerGlobally' | 'defaultInstrumentationConfig'\n>;\n\nexport const nsfConfigValidation = ({\n diag,\n featureManager,\n registerGlobally,\n propagator,\n defaultInstrumentationConfig,\n}: ValidateConfigArgs) => {\n if (!featureManager.isNetworkSpanForwardingEnabled()) {\n return false;\n }\n\n const warnings = [];\n\n if (!registerGlobally) {\n warnings.push(\n 'Network span forwarding cannot be used when `registerGlobally` is set to false. Turning off network span forwarding.',\n );\n }\n\n if (propagator) {\n warnings.push(\n 'Network span forwarding cannot be used alongside a custom `propagator`. Turning off network span forwarding.',\n );\n }\n\n if (\n defaultInstrumentationConfig?.omit?.has(\n '@opentelemetry/instrumentation-xml-http-request',\n ) &&\n defaultInstrumentationConfig.omit.has(\n '@opentelemetry/instrumentation-fetch',\n )\n ) {\n warnings.push(\n \"Network span forwarding cannot be used when both '@opentelemetry/instrumentation-xml-http-request' and \" +\n \"'@opentelemetry/instrumentation-fetch' are omitted. Turning off network span forwarding.\",\n );\n }\n\n warnings.forEach((warning) => {\n diag.warn(warning);\n });\n\n return warnings.length === 0;\n};\n"],"mappings":";;AAYA,MAAa,uBAAuB,EAClC,MACA,gBACA,kBACA,YACA,mCACwB;AACxB,KAAI,CAAC,eAAe,gCAAgC,CAClD,QAAO;CAGT,MAAM,WAAW,EAAE;AAEnB,KAAI,CAAC,iBACH,UAAS,KACP,uHACD;AAGH,KAAI,WACF,UAAS,KACP,+GACD;AAGH,KACE,8BAA8B,MAAM,IAClC,kDACD,IACD,6BAA6B,KAAK,IAChC,uCACD,CAED,UAAS,KACP,kMAED;AAGH,UAAS,SAAS,YAAY;AAC5B,OAAK,KAAK,QAAQ;GAClB;AAEF,QAAO,SAAS,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"nsfConfigValidation.js","names":[],"sources":["../../src/utils/nsfConfigValidation.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { SDKFeaturesManager } from '../managers/index.ts';\nimport type { SDKInitConfig } from '../sdk/index.ts';\n\ntype ValidateConfigArgs = {\n featureManager: SDKFeaturesManager;\n diag: DiagLogger;\n} & Pick<\n SDKInitConfig,\n 'propagator' | 'registerGlobally' | 'defaultInstrumentationConfig'\n>;\n\nexport const nsfConfigValidation = ({\n diag,\n featureManager,\n registerGlobally,\n propagator,\n defaultInstrumentationConfig,\n}: ValidateConfigArgs) => {\n if (!featureManager.isNetworkSpanForwardingEnabled()) {\n return false;\n }\n\n const warnings = [];\n\n if (!registerGlobally) {\n warnings.push(\n 'Network span forwarding cannot be used when `registerGlobally` is set to false. Turning off network span forwarding.',\n );\n }\n\n if (propagator) {\n warnings.push(\n 'Network span forwarding cannot be used alongside a custom `propagator`. Turning off network span forwarding.',\n );\n }\n\n if (\n defaultInstrumentationConfig?.omit?.has(\n '@opentelemetry/instrumentation-xml-http-request',\n ) &&\n defaultInstrumentationConfig.omit.has(\n '@opentelemetry/instrumentation-fetch',\n )\n ) {\n warnings.push(\n \"Network span forwarding cannot be used when both '@opentelemetry/instrumentation-xml-http-request' and \" +\n \"'@opentelemetry/instrumentation-fetch' are omitted. Turning off network span forwarding.\",\n );\n }\n\n warnings.forEach((warning) => {\n diag.warn(warning);\n });\n\n return warnings.length === 0;\n};\n"],"mappings":";AAYA,MAAa,uBAAuB,EAClC,MACA,gBACA,kBACA,YACA,mCACwB;AACxB,KAAI,CAAC,eAAe,gCAAgC,CAClD,QAAO;CAGT,MAAM,WAAW,EAAE;AAEnB,KAAI,CAAC,iBACH,UAAS,KACP,uHACD;AAGH,KAAI,WACF,UAAS,KACP,+GACD;AAGH,KACE,8BAA8B,MAAM,IAClC,kDACD,IACD,6BAA6B,KAAK,IAChC,uCACD,CAED,UAAS,KACP,kMAED;AAGH,UAAS,SAAS,YAAY;AAC5B,OAAK,KAAK,QAAQ;GAClB;AAEF,QAAO,SAAS,WAAW"}
1
+ {"version":3,"file":"nsfConfigValidation.js","names":[],"sources":["../../src/utils/nsfConfigValidation.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { SDKFeaturesManager } from '../managers';\nimport type { SDKInitConfig } from '../sdk';\n\ntype ValidateConfigArgs = {\n featureManager: SDKFeaturesManager;\n diag: DiagLogger;\n} & Pick<\n SDKInitConfig,\n 'propagator' | 'registerGlobally' | 'defaultInstrumentationConfig'\n>;\n\nexport const nsfConfigValidation = ({\n diag,\n featureManager,\n registerGlobally,\n propagator,\n defaultInstrumentationConfig,\n}: ValidateConfigArgs) => {\n if (!featureManager.isNetworkSpanForwardingEnabled()) {\n return false;\n }\n\n const warnings = [];\n\n if (!registerGlobally) {\n warnings.push(\n 'Network span forwarding cannot be used when `registerGlobally` is set to false. Turning off network span forwarding.',\n );\n }\n\n if (propagator) {\n warnings.push(\n 'Network span forwarding cannot be used alongside a custom `propagator`. Turning off network span forwarding.',\n );\n }\n\n if (\n defaultInstrumentationConfig?.omit?.has(\n '@opentelemetry/instrumentation-xml-http-request',\n ) &&\n defaultInstrumentationConfig.omit.has(\n '@opentelemetry/instrumentation-fetch',\n )\n ) {\n warnings.push(\n \"Network span forwarding cannot be used when both '@opentelemetry/instrumentation-xml-http-request' and \" +\n \"'@opentelemetry/instrumentation-fetch' are omitted. Turning off network span forwarding.\",\n );\n }\n\n warnings.forEach((warning) => {\n diag.warn(warning);\n });\n\n return warnings.length === 0;\n};\n"],"mappings":";AAYA,MAAa,uBAAuB,EAClC,MACA,gBACA,kBACA,YACA,mCACwB;AACxB,KAAI,CAAC,eAAe,gCAAgC,CAClD,QAAO;CAGT,MAAM,WAAW,EAAE;AAEnB,KAAI,CAAC,iBACH,UAAS,KACP,uHACD;AAGH,KAAI,WACF,UAAS,KACP,+GACD;AAGH,KACE,8BAA8B,MAAM,IAClC,kDACD,IACD,6BAA6B,KAAK,IAChC,uCACD,CAED,UAAS,KACP,kMAED;AAGH,UAAS,SAAS,YAAY;AAC5B,OAAK,KAAK,QAAQ;GAClB;AAEF,QAAO,SAAS,WAAW"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safaricom-mxl/web-sdk",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "MXL Web SDK",
5
5
  "type": "module",
6
6
  "imports": {
@@ -91,7 +91,7 @@
91
91
  "@opentelemetry/sdk-trace-web": "^2.7.1",
92
92
  "@opentelemetry/semantic-conventions": "^1.41.1",
93
93
  "@opentelemetry/web-common": "^0.218.0",
94
- "@safaricom-mxl/session-recorder": "0.0.12",
94
+ "@safaricom-mxl/session-recorder": "0.0.16",
95
95
  "hoist-non-react-statics": "^3.3.2",
96
96
  "web-vitals": "^5.2.0"
97
97
  },