@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":"defaultAttributeScrubbers.js","names":[],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common/index.ts';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
1
+ {"version":3,"file":"defaultAttributeScrubbers.js","names":[],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
@@ -34,6 +34,7 @@ const require_processors_UserLogRecordProcessor_UserLogRecordProcessor = require
34
34
  const require_processors_UserSpanProcessor_UserSpanProcessor = require("../processors/UserSpanProcessor/UserSpanProcessor.cjs");
35
35
  const require_propagators_MXLW3CTraceContextPropagator_MXLW3CTraceContextPropagator = require("../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs");
36
36
  const require_sdk_defaultAttributeScrubbers = require("./defaultAttributeScrubbers.cjs");
37
+ const require_sdk_noopSessionRecording = require("./noopSessionRecording.cjs");
37
38
  const require_sdk_registry = require("./registry.cjs");
38
39
  const require_sdk_setupSessionRecorder = require("./setupSessionRecorder.cjs");
39
40
  const require_sdk_setupDefaultInstrumentations = require("./setupDefaultInstrumentations.cjs");
@@ -175,6 +176,18 @@ const initSDK = ({ appID, appVersion, resource = (0, _opentelemetry_resources.em
175
176
  pageManager
176
177
  });
177
178
  spanSessionManager.startSessionSpan({ reason: "init" });
179
+ const windowDisableSessionRec = typeof window !== "undefined" && window.__MXL_DISABLE_SESSION_RECORDER === true;
180
+ const sessionRecording = sendingToMXL && validatedAppID && enduserPseudoID && !windowDisableSessionRec ? require_sdk_setupSessionRecorder.createSessionRecordingControl({
181
+ resource: resourceWithWebSDKAttributes,
182
+ spanSessionManager,
183
+ tracerProvider,
184
+ appID: validatedAppID,
185
+ userID: enduserPseudoID,
186
+ mxlDataURL,
187
+ recordUserSessions,
188
+ sessionRecorder,
189
+ diagLogger
190
+ }) : require_sdk_noopSessionRecording.noopSessionRecording;
178
191
  if (!registerGlobally) (0, _opentelemetry_instrumentation.registerInstrumentations)({
179
192
  tracerProvider,
180
193
  loggerProvider,
@@ -190,17 +203,6 @@ const initSDK = ({ appID, appVersion, resource = (0, _opentelemetry_resources.em
190
203
  pageManager,
191
204
  limitManager
192
205
  }), ...instrumentations] });
193
- const windowDisableSessionRec = typeof window !== "undefined" && window.__MXL_DISABLE_SESSION_RECORDER === true;
194
- const sessionRecording = sendingToMXL && validatedAppID && enduserPseudoID && !windowDisableSessionRec ? require_sdk_setupSessionRecorder.createSessionRecordingControl({
195
- resource: resourceWithWebSDKAttributes,
196
- spanSessionManager,
197
- tracerProvider,
198
- appID: validatedAppID,
199
- userID: enduserPseudoID,
200
- mxlDataURL,
201
- recordUserSessions,
202
- sessionRecorder
203
- }) : require_sdk_setupSessionRecorder.noopSessionRecording;
204
206
  diagLogger.info("successfully initialized the SDK");
205
207
  const sdkControl = {
206
208
  setDynamicConfig: (config) => {
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.cjs","names":["DiagLogLevel","diag","registry","DiagConsoleLogger","OTelPerformanceManager","validateAppID","validateAppVersion","NamespacedStorage","MXLDynamicConfigManager","getWebSDKOverridableResource","getWebSDKResource","MXLSDKFeaturesManager","nsfConfigValidation","MXLLimitManager","DEFAULT_LIMITS","getDefaultAttributeScrubbers","MXLSessionBatchedSpanProcessor","MXLTraceExporter","BatchLogRecordProcessor","MXLLogExporter","MXLW3CTraceContextPropagator","setupDefaultInstrumentations","createSessionRecordingControl","noopSessionRecording","MXLUserManager","MXLSpanSessionManager","BrowserSpanProcessor","MXLNetworkSpanProcessor","UserSpanProcessor","PageSpanProcessor","SpanScrubProcessor","BatchSpanProcessor","WebTracerProvider","MXLTraceManager","StackContextManager","IdentifiableSessionLogRecordProcessor","BrowserLogRecordProcessor","MXLLogRecordProcessor","UserLogRecordProcessor","LogRecordScrubProcessor","PageLogRecordProcessor","LoggerProvider","MXLLogManager","MXLPageManager"],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { createSessionSpanProcessor } from '@opentelemetry/web-common';\nimport { log } from '../api-logs/index.ts';\nimport { page } from '../api-page/index.ts';\nimport { session } from '../api-sessions/index.ts';\nimport { trace } from '../api-traces/index.ts';\nimport { user } from '../api-users/index.ts';\nimport type { AttributeScrubber } from '../common/index.ts';\nimport {\n MXLLogExporter,\n MXLTraceExporter,\n} from '../exporters/index.ts';\nimport {\n DEFAULT_LIMITS,\n MXLDynamicConfigManager,\n MXLLimitManager,\n MXLLogManager,\n MXLPageManager,\n MXLSDKFeaturesManager,\n MXLSpanSessionManager,\n MXLTraceManager,\n MXLUserManager,\n} from '../managers/index.ts';\nimport {\n BrowserLogRecordProcessor,\n BrowserSpanProcessor,\n MXLLogRecordProcessor,\n MXLNetworkSpanProcessor,\n MXLSessionBatchedSpanProcessor,\n IdentifiableSessionLogRecordProcessor,\n LogRecordScrubProcessor,\n PageLogRecordProcessor,\n PageSpanProcessor,\n SpanScrubProcessor,\n UserLogRecordProcessor,\n UserSpanProcessor,\n} from '../processors/index.ts';\nimport { MXLW3CTraceContextPropagator } from '../propagators/index.ts';\nimport {\n getWebSDKOverridableResource,\n getWebSDKResource,\n OTEL_DEFAULT_SERVICE_NAME,\n} from '../resources/index.ts';\nimport {\n NamespacedStorage,\n nsfConfigValidation,\n OTelPerformanceManager,\n} from '../utils/index.ts';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers.ts';\nimport { registry } from './registry.ts';\nimport {\n createSessionRecordingControl,\n noopSessionRecording,\n} from './setupSessionRecorder.ts';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations.ts';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupSessionArgs,\n SetupTracesArgs,\n SetupUserArgs,\n} from './types.ts';\nimport { validateAppID, validateAppVersion } from './utils.ts';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n mxlDataURL,\n mxlConfigURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n sessionRecorder,\n serviceName,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const useNamespace = !registerGlobally && appID;\n const sdkLocalStorage = useNamespace\n ? new NamespacedStorage(appID, window.localStorage)\n : window.localStorage;\n const sdkSessionStorage = useNamespace\n ? new NamespacedStorage(appID, window.sessionStorage)\n : window.sessionStorage;\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n mxlConfigURL,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n diagLogger,\n appVersion: validatedAppVersion,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n dynamicConfigManager,\n deviceId: enduserPseudoID,\n blockNetworkSpanForwarding,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n featureManager: sdkFeaturesManager,\n diag: diagLogger,\n registerGlobally,\n defaultInstrumentationConfig,\n propagator,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const spanSessionManager = setupSession({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n });\n\n let mxlSpanProcessor: MXLSessionBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionBatchedSpanProcessor({\n resource: resourceWithWebSDKAttributes,\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n storedSpansExpireTimeoutMS:\n defaultInstrumentationConfig?.['session-visibility']\n ?.storedSpansExpireTimeoutMS,\n storage: sdkLocalStorage,\n spanSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors,\n propagator: nsfValid\n ? new MXLW3CTraceContextPropagator()\n : propagator,\n contextManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n });\n\n spanSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n resource: resourceWithWebSDKAttributes,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n });\n\n spanSessionManager.startSessionSpan({ reason: 'init' });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // the dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // setup before we enable instrumentations.\n if (!registerGlobally) {\n registerInstrumentations({\n tracerProvider,\n loggerProvider,\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n logManager: mxlLogManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n } else {\n registerInstrumentations({\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n }\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const sessionRecording =\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec\n ? createSessionRecordingControl({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n tracerProvider,\n appID: validatedAppID,\n userID: enduserPseudoID,\n mxlDataURL,\n recordUserSessions,\n sessionRecorder,\n })\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n trace: mxlTraceManager,\n session: spanSessionManager,\n user: userManager,\n page: pageManager,\n sessionRecording,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n spanSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (e) {\n const message = e instanceof Error ? e.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupSession = ({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n}: SetupSessionArgs) => {\n const mxlSpanSessionManager = new MXLSpanSessionManager({\n limitManager,\n storage: sdkLocalStorage,\n sessionStorage: sdkSessionStorage,\n });\n\n if (registerGlobally) {\n session.setGlobalSessionManager(mxlSpanSessionManager);\n }\n\n return mxlSpanSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n createSessionSpanProcessor(spanSessionManager),\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanProcessors: finalSpanProcessors,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { tracerProvider, mxlTraceManager };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new IdentifiableSessionLogRecordProcessor({\n spanSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n resource,\n processors: finalLogProcessors,\n });\n\n const mxlLogManager = new MXLLogManager({\n spanSessionManager,\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"initSDK.cjs","names":["DiagLogLevel","diag","registry","DiagConsoleLogger","OTelPerformanceManager","validateAppID","validateAppVersion","NamespacedStorage","MXLDynamicConfigManager","getWebSDKOverridableResource","getWebSDKResource","MXLSDKFeaturesManager","nsfConfigValidation","MXLLimitManager","DEFAULT_LIMITS","getDefaultAttributeScrubbers","MXLSessionBatchedSpanProcessor","MXLTraceExporter","BatchLogRecordProcessor","MXLLogExporter","MXLW3CTraceContextPropagator","createSessionRecordingControl","noopSessionRecording","setupDefaultInstrumentations","MXLUserManager","MXLSpanSessionManager","BrowserSpanProcessor","MXLNetworkSpanProcessor","UserSpanProcessor","PageSpanProcessor","SpanScrubProcessor","BatchSpanProcessor","WebTracerProvider","MXLTraceManager","StackContextManager","IdentifiableSessionLogRecordProcessor","BrowserLogRecordProcessor","MXLLogRecordProcessor","UserLogRecordProcessor","LogRecordScrubProcessor","PageLogRecordProcessor","LoggerProvider","MXLLogManager","MXLPageManager"],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { createSessionSpanProcessor } from '@opentelemetry/web-common';\nimport { log } from '../api-logs';\nimport { page } from '../api-page';\nimport { session } from '../api-sessions';\nimport { trace } from '../api-traces';\nimport { user } from '../api-users';\nimport type { AttributeScrubber } from '../common';\nimport { MXLLogExporter, MXLTraceExporter } from '../exporters';\nimport {\n DEFAULT_LIMITS,\n MXLDynamicConfigManager,\n MXLLimitManager,\n MXLLogManager,\n MXLPageManager,\n MXLSDKFeaturesManager,\n MXLSpanSessionManager,\n MXLTraceManager,\n MXLUserManager,\n} from '../managers';\nimport {\n BrowserLogRecordProcessor,\n BrowserSpanProcessor,\n IdentifiableSessionLogRecordProcessor,\n LogRecordScrubProcessor,\n MXLLogRecordProcessor,\n MXLNetworkSpanProcessor,\n MXLSessionBatchedSpanProcessor,\n PageLogRecordProcessor,\n PageSpanProcessor,\n SpanScrubProcessor,\n UserLogRecordProcessor,\n UserSpanProcessor,\n} from '../processors';\nimport { MXLW3CTraceContextPropagator } from '../propagators';\nimport {\n getWebSDKOverridableResource,\n getWebSDKResource,\n OTEL_DEFAULT_SERVICE_NAME,\n} from '../resources';\nimport {\n NamespacedStorage,\n nsfConfigValidation,\n OTelPerformanceManager,\n} from '../utils';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { createSessionRecordingControl } from './setupSessionRecorder';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupSessionArgs,\n SetupTracesArgs,\n SetupUserArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n mxlDataURL,\n mxlConfigURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n sessionRecorder,\n serviceName,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const useNamespace = !registerGlobally && appID;\n const sdkLocalStorage = useNamespace\n ? new NamespacedStorage(appID, window.localStorage)\n : window.localStorage;\n const sdkSessionStorage = useNamespace\n ? new NamespacedStorage(appID, window.sessionStorage)\n : window.sessionStorage;\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n mxlConfigURL,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n diagLogger,\n appVersion: validatedAppVersion,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n dynamicConfigManager,\n deviceId: enduserPseudoID,\n blockNetworkSpanForwarding,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n featureManager: sdkFeaturesManager,\n diag: diagLogger,\n registerGlobally,\n defaultInstrumentationConfig,\n propagator,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const spanSessionManager = setupSession({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n });\n\n let mxlSpanProcessor: MXLSessionBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionBatchedSpanProcessor({\n resource: resourceWithWebSDKAttributes,\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n storedSpansExpireTimeoutMS:\n defaultInstrumentationConfig?.['session-visibility']\n ?.storedSpansExpireTimeoutMS,\n storage: sdkLocalStorage,\n spanSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n contextManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n });\n\n spanSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n resource: resourceWithWebSDKAttributes,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n });\n\n spanSessionManager.startSessionSpan({ reason: 'init' });\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const sessionRecording =\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec\n ? createSessionRecordingControl({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n tracerProvider,\n appID: validatedAppID,\n userID: enduserPseudoID,\n mxlDataURL,\n recordUserSessions,\n sessionRecorder,\n diagLogger,\n })\n : noopSessionRecording;\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // the dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // setup before we enable instrumentations.\n if (!registerGlobally) {\n registerInstrumentations({\n tracerProvider,\n loggerProvider,\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n logManager: mxlLogManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n } else {\n registerInstrumentations({\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n }\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n trace: mxlTraceManager,\n session: spanSessionManager,\n user: userManager,\n page: pageManager,\n sessionRecording,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n spanSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (e) {\n const message = e instanceof Error ? e.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupSession = ({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n}: SetupSessionArgs) => {\n const mxlSpanSessionManager = new MXLSpanSessionManager({\n limitManager,\n storage: sdkLocalStorage,\n sessionStorage: sdkSessionStorage,\n });\n\n if (registerGlobally) {\n session.setGlobalSessionManager(mxlSpanSessionManager);\n }\n\n return mxlSpanSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n createSessionSpanProcessor(spanSessionManager),\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanProcessors: finalSpanProcessors,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { tracerProvider, mxlTraceManager };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new IdentifiableSessionLogRecordProcessor({\n spanSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n resource,\n processors: finalLogProcessors,\n });\n\n const mxlLogManager = new MXLLogManager({\n spanSessionManager,\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.d.cts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cAiFa,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,UAAA;EAAA,YAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,eAAA;EAAA;AAAA,IA8BG,aAAA,KACF,UAAA"}
1
+ {"version":3,"file":"initSDK.d.cts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA4Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,UAAA;EAAA,YAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,eAAA;EAAA;AAAA,IA8BG,aAAA,KACF,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.d.ts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cAiFa,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,UAAA;EAAA,YAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,eAAA;EAAA;AAAA,IA8BG,aAAA,KACF,UAAA"}
1
+ {"version":3,"file":"initSDK.d.ts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA4Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,UAAA;EAAA,YAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,eAAA;EAAA;AAAA,IA8BG,aAAA,KACF,UAAA"}
@@ -32,8 +32,9 @@ import { UserLogRecordProcessor } from "../processors/UserLogRecordProcessor/Use
32
32
  import { UserSpanProcessor } from "../processors/UserSpanProcessor/UserSpanProcessor.js";
33
33
  import { MXLW3CTraceContextPropagator } from "../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js";
34
34
  import { getDefaultAttributeScrubbers } from "./defaultAttributeScrubbers.js";
35
+ import { noopSessionRecording } from "./noopSessionRecording.js";
35
36
  import { registry } from "./registry.js";
36
- import { createSessionRecordingControl, noopSessionRecording } from "./setupSessionRecorder.js";
37
+ import { createSessionRecordingControl } from "./setupSessionRecorder.js";
37
38
  import { setupDefaultInstrumentations } from "./setupDefaultInstrumentations.js";
38
39
  import { validateAppID, validateAppVersion } from "./utils.js";
39
40
  import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
@@ -173,6 +174,18 @@ const initSDK = ({ appID, appVersion, resource = emptyResource(), spanExporters
173
174
  pageManager
174
175
  });
175
176
  spanSessionManager.startSessionSpan({ reason: "init" });
177
+ const windowDisableSessionRec = typeof window !== "undefined" && window.__MXL_DISABLE_SESSION_RECORDER === true;
178
+ const sessionRecording = sendingToMXL && validatedAppID && enduserPseudoID && !windowDisableSessionRec ? createSessionRecordingControl({
179
+ resource: resourceWithWebSDKAttributes,
180
+ spanSessionManager,
181
+ tracerProvider,
182
+ appID: validatedAppID,
183
+ userID: enduserPseudoID,
184
+ mxlDataURL,
185
+ recordUserSessions,
186
+ sessionRecorder,
187
+ diagLogger
188
+ }) : noopSessionRecording;
176
189
  if (!registerGlobally) registerInstrumentations({
177
190
  tracerProvider,
178
191
  loggerProvider,
@@ -188,17 +201,6 @@ const initSDK = ({ appID, appVersion, resource = emptyResource(), spanExporters
188
201
  pageManager,
189
202
  limitManager
190
203
  }), ...instrumentations] });
191
- const windowDisableSessionRec = typeof window !== "undefined" && window.__MXL_DISABLE_SESSION_RECORDER === true;
192
- const sessionRecording = sendingToMXL && validatedAppID && enduserPseudoID && !windowDisableSessionRec ? createSessionRecordingControl({
193
- resource: resourceWithWebSDKAttributes,
194
- spanSessionManager,
195
- tracerProvider,
196
- appID: validatedAppID,
197
- userID: enduserPseudoID,
198
- mxlDataURL,
199
- recordUserSessions,
200
- sessionRecorder
201
- }) : noopSessionRecording;
202
204
  diagLogger.info("successfully initialized the SDK");
203
205
  const sdkControl = {
204
206
  setDynamicConfig: (config) => {
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.js","names":[],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { createSessionSpanProcessor } from '@opentelemetry/web-common';\nimport { log } from '../api-logs/index.ts';\nimport { page } from '../api-page/index.ts';\nimport { session } from '../api-sessions/index.ts';\nimport { trace } from '../api-traces/index.ts';\nimport { user } from '../api-users/index.ts';\nimport type { AttributeScrubber } from '../common/index.ts';\nimport {\n MXLLogExporter,\n MXLTraceExporter,\n} from '../exporters/index.ts';\nimport {\n DEFAULT_LIMITS,\n MXLDynamicConfigManager,\n MXLLimitManager,\n MXLLogManager,\n MXLPageManager,\n MXLSDKFeaturesManager,\n MXLSpanSessionManager,\n MXLTraceManager,\n MXLUserManager,\n} from '../managers/index.ts';\nimport {\n BrowserLogRecordProcessor,\n BrowserSpanProcessor,\n MXLLogRecordProcessor,\n MXLNetworkSpanProcessor,\n MXLSessionBatchedSpanProcessor,\n IdentifiableSessionLogRecordProcessor,\n LogRecordScrubProcessor,\n PageLogRecordProcessor,\n PageSpanProcessor,\n SpanScrubProcessor,\n UserLogRecordProcessor,\n UserSpanProcessor,\n} from '../processors/index.ts';\nimport { MXLW3CTraceContextPropagator } from '../propagators/index.ts';\nimport {\n getWebSDKOverridableResource,\n getWebSDKResource,\n OTEL_DEFAULT_SERVICE_NAME,\n} from '../resources/index.ts';\nimport {\n NamespacedStorage,\n nsfConfigValidation,\n OTelPerformanceManager,\n} from '../utils/index.ts';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers.ts';\nimport { registry } from './registry.ts';\nimport {\n createSessionRecordingControl,\n noopSessionRecording,\n} from './setupSessionRecorder.ts';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations.ts';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupSessionArgs,\n SetupTracesArgs,\n SetupUserArgs,\n} from './types.ts';\nimport { validateAppID, validateAppVersion } from './utils.ts';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n mxlDataURL,\n mxlConfigURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n sessionRecorder,\n serviceName,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const useNamespace = !registerGlobally && appID;\n const sdkLocalStorage = useNamespace\n ? new NamespacedStorage(appID, window.localStorage)\n : window.localStorage;\n const sdkSessionStorage = useNamespace\n ? new NamespacedStorage(appID, window.sessionStorage)\n : window.sessionStorage;\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n mxlConfigURL,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n diagLogger,\n appVersion: validatedAppVersion,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n dynamicConfigManager,\n deviceId: enduserPseudoID,\n blockNetworkSpanForwarding,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n featureManager: sdkFeaturesManager,\n diag: diagLogger,\n registerGlobally,\n defaultInstrumentationConfig,\n propagator,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const spanSessionManager = setupSession({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n });\n\n let mxlSpanProcessor: MXLSessionBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionBatchedSpanProcessor({\n resource: resourceWithWebSDKAttributes,\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n storedSpansExpireTimeoutMS:\n defaultInstrumentationConfig?.['session-visibility']\n ?.storedSpansExpireTimeoutMS,\n storage: sdkLocalStorage,\n spanSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors,\n propagator: nsfValid\n ? new MXLW3CTraceContextPropagator()\n : propagator,\n contextManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n });\n\n spanSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n resource: resourceWithWebSDKAttributes,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n });\n\n spanSessionManager.startSessionSpan({ reason: 'init' });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // the dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // setup before we enable instrumentations.\n if (!registerGlobally) {\n registerInstrumentations({\n tracerProvider,\n loggerProvider,\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n logManager: mxlLogManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n } else {\n registerInstrumentations({\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n }\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const sessionRecording =\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec\n ? createSessionRecordingControl({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n tracerProvider,\n appID: validatedAppID,\n userID: enduserPseudoID,\n mxlDataURL,\n recordUserSessions,\n sessionRecorder,\n })\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n trace: mxlTraceManager,\n session: spanSessionManager,\n user: userManager,\n page: pageManager,\n sessionRecording,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n spanSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (e) {\n const message = e instanceof Error ? e.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupSession = ({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n}: SetupSessionArgs) => {\n const mxlSpanSessionManager = new MXLSpanSessionManager({\n limitManager,\n storage: sdkLocalStorage,\n sessionStorage: sdkSessionStorage,\n });\n\n if (registerGlobally) {\n session.setGlobalSessionManager(mxlSpanSessionManager);\n }\n\n return mxlSpanSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n createSessionSpanProcessor(spanSessionManager),\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanProcessors: finalSpanProcessors,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { tracerProvider, mxlTraceManager };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new IdentifiableSessionLogRecordProcessor({\n spanSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n resource,\n processors: finalLogProcessors,\n });\n\n const mxlLogManager = new MXLLogManager({\n spanSessionManager,\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"initSDK.js","names":[],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { createSessionSpanProcessor } from '@opentelemetry/web-common';\nimport { log } from '../api-logs';\nimport { page } from '../api-page';\nimport { session } from '../api-sessions';\nimport { trace } from '../api-traces';\nimport { user } from '../api-users';\nimport type { AttributeScrubber } from '../common';\nimport { MXLLogExporter, MXLTraceExporter } from '../exporters';\nimport {\n DEFAULT_LIMITS,\n MXLDynamicConfigManager,\n MXLLimitManager,\n MXLLogManager,\n MXLPageManager,\n MXLSDKFeaturesManager,\n MXLSpanSessionManager,\n MXLTraceManager,\n MXLUserManager,\n} from '../managers';\nimport {\n BrowserLogRecordProcessor,\n BrowserSpanProcessor,\n IdentifiableSessionLogRecordProcessor,\n LogRecordScrubProcessor,\n MXLLogRecordProcessor,\n MXLNetworkSpanProcessor,\n MXLSessionBatchedSpanProcessor,\n PageLogRecordProcessor,\n PageSpanProcessor,\n SpanScrubProcessor,\n UserLogRecordProcessor,\n UserSpanProcessor,\n} from '../processors';\nimport { MXLW3CTraceContextPropagator } from '../propagators';\nimport {\n getWebSDKOverridableResource,\n getWebSDKResource,\n OTEL_DEFAULT_SERVICE_NAME,\n} from '../resources';\nimport {\n NamespacedStorage,\n nsfConfigValidation,\n OTelPerformanceManager,\n} from '../utils';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { createSessionRecordingControl } from './setupSessionRecorder';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupSessionArgs,\n SetupTracesArgs,\n SetupUserArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n mxlDataURL,\n mxlConfigURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n sessionRecorder,\n serviceName,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const useNamespace = !registerGlobally && appID;\n const sdkLocalStorage = useNamespace\n ? new NamespacedStorage(appID, window.localStorage)\n : window.localStorage;\n const sdkSessionStorage = useNamespace\n ? new NamespacedStorage(appID, window.sessionStorage)\n : window.sessionStorage;\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n mxlConfigURL,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n diagLogger,\n appVersion: validatedAppVersion,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n dynamicConfigManager,\n deviceId: enduserPseudoID,\n blockNetworkSpanForwarding,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n featureManager: sdkFeaturesManager,\n diag: diagLogger,\n registerGlobally,\n defaultInstrumentationConfig,\n propagator,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const spanSessionManager = setupSession({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n });\n\n let mxlSpanProcessor: MXLSessionBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionBatchedSpanProcessor({\n resource: resourceWithWebSDKAttributes,\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n storedSpansExpireTimeoutMS:\n defaultInstrumentationConfig?.['session-visibility']\n ?.storedSpansExpireTimeoutMS,\n storage: sdkLocalStorage,\n spanSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n mxlDataURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n contextManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n });\n\n spanSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n resource: resourceWithWebSDKAttributes,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers: finalAttributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n });\n\n spanSessionManager.startSessionSpan({ reason: 'init' });\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const sessionRecording =\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec\n ? createSessionRecordingControl({\n resource: resourceWithWebSDKAttributes,\n spanSessionManager,\n tracerProvider,\n appID: validatedAppID,\n userID: enduserPseudoID,\n mxlDataURL,\n recordUserSessions,\n sessionRecorder,\n diagLogger,\n })\n : noopSessionRecording;\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // the dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // setup before we enable instrumentations.\n if (!registerGlobally) {\n registerInstrumentations({\n tracerProvider,\n loggerProvider,\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n logManager: mxlLogManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n } else {\n registerInstrumentations({\n instrumentations: [\n setupDefaultInstrumentations(defaultInstrumentationConfig, {\n spanSessionManager,\n pageManager,\n limitManager,\n }),\n ...instrumentations,\n ],\n });\n }\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n trace: mxlTraceManager,\n session: spanSessionManager,\n user: userManager,\n page: pageManager,\n sessionRecording,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n spanSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (e) {\n const message = e instanceof Error ? e.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupSession = ({\n limitManager,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n}: SetupSessionArgs) => {\n const mxlSpanSessionManager = new MXLSpanSessionManager({\n limitManager,\n storage: sdkLocalStorage,\n sessionStorage: sdkSessionStorage,\n });\n\n if (registerGlobally) {\n session.setGlobalSessionManager(mxlSpanSessionManager);\n }\n\n return mxlSpanSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n spanSessionManager,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n createSessionSpanProcessor(spanSessionManager),\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanProcessors: finalSpanProcessors,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { tracerProvider, mxlTraceManager };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n spanSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new IdentifiableSessionLogRecordProcessor({\n spanSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n resource,\n processors: finalLogProcessors,\n });\n\n const mxlLogManager = new MXLLogManager({\n spanSessionManager,\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/sdk/noopSessionRecording.ts
3
+ const noopSessionRecording = {
4
+ isRecording: () => false,
5
+ setEnabled: () => {}
6
+ };
7
+ //#endregion
8
+ exports.noopSessionRecording = noopSessionRecording;
9
+
10
+ //# sourceMappingURL=noopSessionRecording.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noopSessionRecording.cjs","names":[],"sources":["../../src/sdk/noopSessionRecording.ts"],"sourcesContent":["import type { SessionRecordingControl } from './types';\n\nexport const noopSessionRecording: SessionRecordingControl = {\n isRecording: () => false,\n setEnabled: () => {\n // Session recording is only available when using MXL (appID + user ID).\n },\n};\n"],"mappings":";;AAEA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB"}
@@ -0,0 +1,7 @@
1
+ import { SessionRecordingControl } from "./types.cjs";
2
+
3
+ //#region src/sdk/noopSessionRecording.d.ts
4
+ declare const noopSessionRecording: SessionRecordingControl;
5
+ //#endregion
6
+ export { noopSessionRecording };
7
+ //# sourceMappingURL=noopSessionRecording.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noopSessionRecording.d.cts","names":[],"sources":["../../src/sdk/noopSessionRecording.ts"],"mappings":";;;cAEa,oBAAA,EAAsB,uBAAA"}
@@ -0,0 +1,7 @@
1
+ import { SessionRecordingControl } from "./types.js";
2
+
3
+ //#region src/sdk/noopSessionRecording.d.ts
4
+ declare const noopSessionRecording: SessionRecordingControl;
5
+ //#endregion
6
+ export { noopSessionRecording };
7
+ //# sourceMappingURL=noopSessionRecording.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noopSessionRecording.d.ts","names":[],"sources":["../../src/sdk/noopSessionRecording.ts"],"mappings":";;;cAEa,oBAAA,EAAsB,uBAAA"}
@@ -0,0 +1,9 @@
1
+ //#region src/sdk/noopSessionRecording.ts
2
+ const noopSessionRecording = {
3
+ isRecording: () => false,
4
+ setEnabled: () => {}
5
+ };
6
+ //#endregion
7
+ export { noopSessionRecording };
8
+
9
+ //# sourceMappingURL=noopSessionRecording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noopSessionRecording.js","names":[],"sources":["../../src/sdk/noopSessionRecording.ts"],"sourcesContent":["import type { SessionRecordingControl } from './types';\n\nexport const noopSessionRecording: SessionRecordingControl = {\n isRecording: () => false,\n setEnabled: () => {\n // Session recording is only available when using MXL (appID + user ID).\n },\n};\n"],"mappings":";AAEA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.cjs","names":["diag"],"sources":["../../src/sdk/registry.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { SDKControl, SDKRegistryManager } from './types.ts';\n\nclass Registry implements SDKRegistryManager {\n private _sdk: SDKControl | null = null;\n private readonly _diag: DiagLogger;\n\n public constructor({\n diagLogger = diag.createComponentLogger({ namespace: 'mxl-registry' }),\n }: { diagLogger?: DiagLogger } = {}) {\n this._diag = diagLogger;\n }\n\n public register: (sdk: SDKControl) => void = (sdk) => {\n if (this._sdk !== null) {\n this._diag.warn('previously registered sdk will be overwritten');\n }\n this._sdk = sdk;\n };\n\n public clear: () => void = () => {\n if (this._sdk === null) {\n this._diag.warn('sdk already cleared, this is a no-op');\n }\n this._sdk = null;\n };\n\n public registered: () => SDKControl | null = () => {\n return this._sdk;\n };\n}\n\nexport const registry = new Registry();\n"],"mappings":";;;;AAIA,IAAM,WAAN,MAA6C;CAC3C,OAAkC;CAClC;CAEA,YAAmB,EACjB,aAAaA,mBAAAA,KAAK,sBAAsB,EAAE,WAAW,gBAAgB,CAAC,KACvC,EAAE,EAAE;AACnC,OAAK,QAAQ;;CAGf,YAA8C,QAAQ;AACpD,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,gDAAgD;AAElE,OAAK,OAAO;;CAGd,cAAiC;AAC/B,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,uCAAuC;AAEzD,OAAK,OAAO;;CAGd,mBAAmD;AACjD,SAAO,KAAK;;;AAIhB,MAAa,WAAW,IAAI,UAAU"}
1
+ {"version":3,"file":"registry.cjs","names":["diag"],"sources":["../../src/sdk/registry.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { SDKControl, SDKRegistryManager } from './types';\n\nclass Registry implements SDKRegistryManager {\n private _sdk: SDKControl | null = null;\n private readonly _diag: DiagLogger;\n\n public constructor({\n diagLogger = diag.createComponentLogger({ namespace: 'mxl-registry' }),\n }: { diagLogger?: DiagLogger } = {}) {\n this._diag = diagLogger;\n }\n\n public register: (sdk: SDKControl) => void = (sdk) => {\n if (this._sdk !== null) {\n this._diag.warn('previously registered sdk will be overwritten');\n }\n this._sdk = sdk;\n };\n\n public clear: () => void = () => {\n if (this._sdk === null) {\n this._diag.warn('sdk already cleared, this is a no-op');\n }\n this._sdk = null;\n };\n\n public registered: () => SDKControl | null = () => {\n return this._sdk;\n };\n}\n\nexport const registry = new Registry();\n"],"mappings":";;;;AAIA,IAAM,WAAN,MAA6C;CAC3C,OAAkC;CAClC;CAEA,YAAmB,EACjB,aAAaA,mBAAAA,KAAK,sBAAsB,EAAE,WAAW,gBAAgB,CAAC,KACvC,EAAE,EAAE;AACnC,OAAK,QAAQ;;CAGf,YAA8C,QAAQ;AACpD,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,gDAAgD;AAElE,OAAK,OAAO;;CAGd,cAAiC;AAC/B,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,uCAAuC;AAEzD,OAAK,OAAO;;CAGd,mBAAmD;AACjD,SAAO,KAAK;;;AAIhB,MAAa,WAAW,IAAI,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../src/sdk/registry.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { SDKControl, SDKRegistryManager } from './types.ts';\n\nclass Registry implements SDKRegistryManager {\n private _sdk: SDKControl | null = null;\n private readonly _diag: DiagLogger;\n\n public constructor({\n diagLogger = diag.createComponentLogger({ namespace: 'mxl-registry' }),\n }: { diagLogger?: DiagLogger } = {}) {\n this._diag = diagLogger;\n }\n\n public register: (sdk: SDKControl) => void = (sdk) => {\n if (this._sdk !== null) {\n this._diag.warn('previously registered sdk will be overwritten');\n }\n this._sdk = sdk;\n };\n\n public clear: () => void = () => {\n if (this._sdk === null) {\n this._diag.warn('sdk already cleared, this is a no-op');\n }\n this._sdk = null;\n };\n\n public registered: () => SDKControl | null = () => {\n return this._sdk;\n };\n}\n\nexport const registry = new Registry();\n"],"mappings":";;AAIA,IAAM,WAAN,MAA6C;CAC3C,OAAkC;CAClC;CAEA,YAAmB,EACjB,aAAa,KAAK,sBAAsB,EAAE,WAAW,gBAAgB,CAAC,KACvC,EAAE,EAAE;AACnC,OAAK,QAAQ;;CAGf,YAA8C,QAAQ;AACpD,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,gDAAgD;AAElE,OAAK,OAAO;;CAGd,cAAiC;AAC/B,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,uCAAuC;AAEzD,OAAK,OAAO;;CAGd,mBAAmD;AACjD,SAAO,KAAK;;;AAIhB,MAAa,WAAW,IAAI,UAAU"}
1
+ {"version":3,"file":"registry.js","names":[],"sources":["../../src/sdk/registry.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { SDKControl, SDKRegistryManager } from './types';\n\nclass Registry implements SDKRegistryManager {\n private _sdk: SDKControl | null = null;\n private readonly _diag: DiagLogger;\n\n public constructor({\n diagLogger = diag.createComponentLogger({ namespace: 'mxl-registry' }),\n }: { diagLogger?: DiagLogger } = {}) {\n this._diag = diagLogger;\n }\n\n public register: (sdk: SDKControl) => void = (sdk) => {\n if (this._sdk !== null) {\n this._diag.warn('previously registered sdk will be overwritten');\n }\n this._sdk = sdk;\n };\n\n public clear: () => void = () => {\n if (this._sdk === null) {\n this._diag.warn('sdk already cleared, this is a no-op');\n }\n this._sdk = null;\n };\n\n public registered: () => SDKControl | null = () => {\n return this._sdk;\n };\n}\n\nexport const registry = new Registry();\n"],"mappings":";;AAIA,IAAM,WAAN,MAA6C;CAC3C,OAAkC;CAClC;CAEA,YAAmB,EACjB,aAAa,KAAK,sBAAsB,EAAE,WAAW,gBAAgB,CAAC,KACvC,EAAE,EAAE;AACnC,OAAK,QAAQ;;CAGf,YAA8C,QAAQ;AACpD,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,gDAAgD;AAElE,OAAK,OAAO;;CAGd,cAAiC;AAC/B,MAAI,KAAK,SAAS,KAChB,MAAK,MAAM,KAAK,uCAAuC;AAEzD,OAAK,OAAO;;CAGd,mBAAmD;AACjD,SAAO,KAAK;;;AAIhB,MAAa,WAAW,IAAI,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupDefaultInstrumentations.cjs","names":["SpanSessionVisibilityInstrumentation","SpanSessionBrowserActivityInstrumentation","GlobalExceptionInstrumentation","ClicksInstrumentation","WebVitalsInstrumentation","LoafInstrumentation","UserTimingInstrumentation","ElementTimingInstrumentation","DocumentLoadInstrumentation","ServerTimingInstrumentation","FetchInstrumentation","XMLHttpRequestInstrumentation","EmptyRootInstrumentation","MXLInstrumentationBase"],"sources":["../../src/sdk/setupDefaultInstrumentations.ts"],"sourcesContent":["import type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\nimport {\n ClicksInstrumentation,\n DocumentLoadInstrumentation,\n ElementTimingInstrumentation,\n MXLInstrumentationBase,\n EmptyRootInstrumentation,\n GlobalExceptionInstrumentation,\n LoafInstrumentation,\n ServerTimingInstrumentation,\n SpanSessionBrowserActivityInstrumentation,\n SpanSessionVisibilityInstrumentation,\n UserTimingInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations/index.ts';\nimport type {\n DefaultInstrumentationConfig,\n SetupDefaultInstrumentationsArgs,\n} from './types.ts';\n\nexport const setupDefaultInstrumentations = (\n config: DefaultInstrumentationConfig = {},\n {\n logManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }: SetupDefaultInstrumentationsArgs,\n): Instrumentation[] => {\n /*\n These instrumentations are core to managing the session lifecycle and so are not optional\n */\n const instrumentations: Instrumentation[] = [\n new SpanSessionVisibilityInstrumentation(config['session-visibility']),\n new SpanSessionBrowserActivityInstrumentation(config['session-activity']),\n ];\n\n if (!config.omit?.has('exception')) {\n instrumentations.push(\n new GlobalExceptionInstrumentation(config['exception']),\n );\n }\n\n if (!config.omit?.has('click')) {\n instrumentations.push(new ClicksInstrumentation(config['click']));\n }\n\n if (!config.omit?.has('web-vital')) {\n instrumentations.push(\n new WebVitalsInstrumentation({ ...config['web-vital'], pageManager }),\n );\n }\n\n if (!config.omit?.has('loaf')) {\n instrumentations.push(new LoafInstrumentation({ ...config['loaf'] }));\n }\n\n if (!config.omit?.has('user-timing')) {\n instrumentations.push(new UserTimingInstrumentation(config['user-timing']));\n }\n\n if (!config.omit?.has('element-timing')) {\n instrumentations.push(\n new ElementTimingInstrumentation({\n ...config['element-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('document-load')) {\n instrumentations.push(\n new DocumentLoadInstrumentation(config['document-load']),\n );\n }\n\n if (!config.omit?.has('server-timing')) {\n instrumentations.push(\n new ServerTimingInstrumentation({\n ...config['server-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-fetch')) {\n instrumentations.push(\n new FetchInstrumentation({\n ...config['@opentelemetry/instrumentation-fetch'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-fetch']?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-xml-http-request')) {\n instrumentations.push(\n new XMLHttpRequestInstrumentation({\n ...config['@opentelemetry/instrumentation-xml-http-request'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-xml-http-request']\n ?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (config['empty-root']) {\n instrumentations.push(\n new EmptyRootInstrumentation({ ...config['empty-root'] }),\n );\n }\n\n for (const instrumentation of instrumentations) {\n if (instrumentation instanceof MXLInstrumentationBase) {\n if (spanSessionManager) {\n instrumentation.setSessionManager(spanSessionManager);\n }\n\n if (logManager) {\n instrumentation.setLogManager(logManager);\n }\n\n if (limitManager) {\n instrumentation.setLimitManager(limitManager);\n }\n }\n }\n\n return instrumentations;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,MAAa,gCACX,SAAuC,EAAE,EACzC,EACE,YACA,oBACA,aACA,mBAEoB;CAItB,MAAM,mBAAsC,CAC1C,IAAIA,2GAAAA,qCAAqC,OAAO,sBAAsB,EACtE,IAAIC,qHAAAA,0CAA0C,OAAO,oBAAoB,CAC1E;AAED,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAIC,kGAAAA,+BAA+B,OAAO,aAAa,CACxD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,QAAQ,CAC5B,kBAAiB,KAAK,IAAIC,4EAAAA,sBAAsB,OAAO,SAAS,CAAC;AAGnE,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAIC,sFAAAA,yBAAyB;EAAE,GAAG,OAAO;EAAc;EAAa,CAAC,CACtE;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,OAAO,CAC3B,kBAAiB,KAAK,IAAIC,sEAAAA,oBAAoB,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;AAGvE,KAAI,CAAC,OAAO,MAAM,IAAI,cAAc,CAClC,kBAAiB,KAAK,IAAIC,yFAAAA,0BAA0B,OAAO,eAAe,CAAC;AAG7E,KAAI,CAAC,OAAO,MAAM,IAAI,iBAAiB,CACrC,kBAAiB,KACf,IAAIC,kGAAAA,6BAA6B;EAC/B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAIC,+FAAAA,4BAA4B,OAAO,iBAAiB,CACzD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAIC,+FAAAA,4BAA4B;EAC9B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,uCAAuC,CAC3D,kBAAiB,KACf,IAAIC,qCAAAA,qBAAqB;EACvB,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,yCAAyC,cAAc,EAAE,CACrE;EACF,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,kDAAkD,CACtE,kBAAiB,KACf,IAAIC,gDAAAA,8BAA8B;EAChC,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,oDACP,cAAc,EAAE,CACrB;EACF,CAAC,CACH;AAGH,KAAI,OAAO,cACT,kBAAiB,KACf,IAAIC,sFAAAA,yBAAyB,EAAE,GAAG,OAAO,eAAe,CAAC,CAC1D;AAGH,MAAK,MAAM,mBAAmB,iBAC5B,KAAI,2BAA2BC,uEAAAA,wBAAwB;AACrD,MAAI,mBACF,iBAAgB,kBAAkB,mBAAmB;AAGvD,MAAI,WACF,iBAAgB,cAAc,WAAW;AAG3C,MAAI,aACF,iBAAgB,gBAAgB,aAAa;;AAKnD,QAAO"}
1
+ {"version":3,"file":"setupDefaultInstrumentations.cjs","names":["SpanSessionVisibilityInstrumentation","SpanSessionBrowserActivityInstrumentation","GlobalExceptionInstrumentation","ClicksInstrumentation","WebVitalsInstrumentation","LoafInstrumentation","UserTimingInstrumentation","ElementTimingInstrumentation","DocumentLoadInstrumentation","ServerTimingInstrumentation","FetchInstrumentation","XMLHttpRequestInstrumentation","EmptyRootInstrumentation","MXLInstrumentationBase"],"sources":["../../src/sdk/setupDefaultInstrumentations.ts"],"sourcesContent":["import type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\nimport {\n ClicksInstrumentation,\n DocumentLoadInstrumentation,\n ElementTimingInstrumentation,\n EmptyRootInstrumentation,\n GlobalExceptionInstrumentation,\n LoafInstrumentation,\n MXLInstrumentationBase,\n ServerTimingInstrumentation,\n SpanSessionBrowserActivityInstrumentation,\n SpanSessionVisibilityInstrumentation,\n UserTimingInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations';\nimport type {\n DefaultInstrumentationConfig,\n SetupDefaultInstrumentationsArgs,\n} from './types';\n\nexport const setupDefaultInstrumentations = (\n config: DefaultInstrumentationConfig = {},\n {\n logManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }: SetupDefaultInstrumentationsArgs,\n): Instrumentation[] => {\n /*\n These instrumentations are core to managing the session lifecycle and so are not optional\n */\n const instrumentations: Instrumentation[] = [\n new SpanSessionVisibilityInstrumentation(config['session-visibility']),\n new SpanSessionBrowserActivityInstrumentation(config['session-activity']),\n ];\n\n if (!config.omit?.has('exception')) {\n instrumentations.push(\n new GlobalExceptionInstrumentation(config['exception']),\n );\n }\n\n if (!config.omit?.has('click')) {\n instrumentations.push(new ClicksInstrumentation(config['click']));\n }\n\n if (!config.omit?.has('web-vital')) {\n instrumentations.push(\n new WebVitalsInstrumentation({ ...config['web-vital'], pageManager }),\n );\n }\n\n if (!config.omit?.has('loaf')) {\n instrumentations.push(new LoafInstrumentation({ ...config['loaf'] }));\n }\n\n if (!config.omit?.has('user-timing')) {\n instrumentations.push(new UserTimingInstrumentation(config['user-timing']));\n }\n\n if (!config.omit?.has('element-timing')) {\n instrumentations.push(\n new ElementTimingInstrumentation({\n ...config['element-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('document-load')) {\n instrumentations.push(\n new DocumentLoadInstrumentation(config['document-load']),\n );\n }\n\n if (!config.omit?.has('server-timing')) {\n instrumentations.push(\n new ServerTimingInstrumentation({\n ...config['server-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-fetch')) {\n instrumentations.push(\n new FetchInstrumentation({\n ...config['@opentelemetry/instrumentation-fetch'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-fetch']?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-xml-http-request')) {\n instrumentations.push(\n new XMLHttpRequestInstrumentation({\n ...config['@opentelemetry/instrumentation-xml-http-request'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-xml-http-request']\n ?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (config['empty-root']) {\n instrumentations.push(\n new EmptyRootInstrumentation({ ...config['empty-root'] }),\n );\n }\n\n for (const instrumentation of instrumentations) {\n if (instrumentation instanceof MXLInstrumentationBase) {\n if (spanSessionManager) {\n instrumentation.setSessionManager(spanSessionManager);\n }\n\n if (logManager) {\n instrumentation.setLogManager(logManager);\n }\n\n if (limitManager) {\n instrumentation.setLimitManager(limitManager);\n }\n }\n }\n\n return instrumentations;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAsBA,MAAa,gCACX,SAAuC,EAAE,EACzC,EACE,YACA,oBACA,aACA,mBAEoB;CAItB,MAAM,mBAAsC,CAC1C,IAAIA,2GAAAA,qCAAqC,OAAO,sBAAsB,EACtE,IAAIC,qHAAAA,0CAA0C,OAAO,oBAAoB,CAC1E;AAED,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAIC,kGAAAA,+BAA+B,OAAO,aAAa,CACxD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,QAAQ,CAC5B,kBAAiB,KAAK,IAAIC,4EAAAA,sBAAsB,OAAO,SAAS,CAAC;AAGnE,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAIC,sFAAAA,yBAAyB;EAAE,GAAG,OAAO;EAAc;EAAa,CAAC,CACtE;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,OAAO,CAC3B,kBAAiB,KAAK,IAAIC,sEAAAA,oBAAoB,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;AAGvE,KAAI,CAAC,OAAO,MAAM,IAAI,cAAc,CAClC,kBAAiB,KAAK,IAAIC,yFAAAA,0BAA0B,OAAO,eAAe,CAAC;AAG7E,KAAI,CAAC,OAAO,MAAM,IAAI,iBAAiB,CACrC,kBAAiB,KACf,IAAIC,kGAAAA,6BAA6B;EAC/B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAIC,+FAAAA,4BAA4B,OAAO,iBAAiB,CACzD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAIC,+FAAAA,4BAA4B;EAC9B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,uCAAuC,CAC3D,kBAAiB,KACf,IAAIC,qCAAAA,qBAAqB;EACvB,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,yCAAyC,cAAc,EAAE,CACrE;EACF,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,kDAAkD,CACtE,kBAAiB,KACf,IAAIC,gDAAAA,8BAA8B;EAChC,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,oDACP,cAAc,EAAE,CACrB;EACF,CAAC,CACH;AAGH,KAAI,OAAO,cACT,kBAAiB,KACf,IAAIC,sFAAAA,yBAAyB,EAAE,GAAG,OAAO,eAAe,CAAC,CAC1D;AAGH,MAAK,MAAM,mBAAmB,iBAC5B,KAAI,2BAA2BC,uEAAAA,wBAAwB;AACrD,MAAI,mBACF,iBAAgB,kBAAkB,mBAAmB;AAGvD,MAAI,WACF,iBAAgB,cAAc,WAAW;AAG3C,MAAI,aACF,iBAAgB,gBAAgB,aAAa;;AAKnD,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupDefaultInstrumentations.js","names":[],"sources":["../../src/sdk/setupDefaultInstrumentations.ts"],"sourcesContent":["import type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\nimport {\n ClicksInstrumentation,\n DocumentLoadInstrumentation,\n ElementTimingInstrumentation,\n MXLInstrumentationBase,\n EmptyRootInstrumentation,\n GlobalExceptionInstrumentation,\n LoafInstrumentation,\n ServerTimingInstrumentation,\n SpanSessionBrowserActivityInstrumentation,\n SpanSessionVisibilityInstrumentation,\n UserTimingInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations/index.ts';\nimport type {\n DefaultInstrumentationConfig,\n SetupDefaultInstrumentationsArgs,\n} from './types.ts';\n\nexport const setupDefaultInstrumentations = (\n config: DefaultInstrumentationConfig = {},\n {\n logManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }: SetupDefaultInstrumentationsArgs,\n): Instrumentation[] => {\n /*\n These instrumentations are core to managing the session lifecycle and so are not optional\n */\n const instrumentations: Instrumentation[] = [\n new SpanSessionVisibilityInstrumentation(config['session-visibility']),\n new SpanSessionBrowserActivityInstrumentation(config['session-activity']),\n ];\n\n if (!config.omit?.has('exception')) {\n instrumentations.push(\n new GlobalExceptionInstrumentation(config['exception']),\n );\n }\n\n if (!config.omit?.has('click')) {\n instrumentations.push(new ClicksInstrumentation(config['click']));\n }\n\n if (!config.omit?.has('web-vital')) {\n instrumentations.push(\n new WebVitalsInstrumentation({ ...config['web-vital'], pageManager }),\n );\n }\n\n if (!config.omit?.has('loaf')) {\n instrumentations.push(new LoafInstrumentation({ ...config['loaf'] }));\n }\n\n if (!config.omit?.has('user-timing')) {\n instrumentations.push(new UserTimingInstrumentation(config['user-timing']));\n }\n\n if (!config.omit?.has('element-timing')) {\n instrumentations.push(\n new ElementTimingInstrumentation({\n ...config['element-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('document-load')) {\n instrumentations.push(\n new DocumentLoadInstrumentation(config['document-load']),\n );\n }\n\n if (!config.omit?.has('server-timing')) {\n instrumentations.push(\n new ServerTimingInstrumentation({\n ...config['server-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-fetch')) {\n instrumentations.push(\n new FetchInstrumentation({\n ...config['@opentelemetry/instrumentation-fetch'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-fetch']?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-xml-http-request')) {\n instrumentations.push(\n new XMLHttpRequestInstrumentation({\n ...config['@opentelemetry/instrumentation-xml-http-request'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-xml-http-request']\n ?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (config['empty-root']) {\n instrumentations.push(\n new EmptyRootInstrumentation({ ...config['empty-root'] }),\n );\n }\n\n for (const instrumentation of instrumentations) {\n if (instrumentation instanceof MXLInstrumentationBase) {\n if (spanSessionManager) {\n instrumentation.setSessionManager(spanSessionManager);\n }\n\n if (logManager) {\n instrumentation.setLogManager(logManager);\n }\n\n if (limitManager) {\n instrumentation.setLimitManager(limitManager);\n }\n }\n }\n\n return instrumentations;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAa,gCACX,SAAuC,EAAE,EACzC,EACE,YACA,oBACA,aACA,mBAEoB;CAItB,MAAM,mBAAsC,CAC1C,IAAI,qCAAqC,OAAO,sBAAsB,EACtE,IAAI,0CAA0C,OAAO,oBAAoB,CAC1E;AAED,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAI,+BAA+B,OAAO,aAAa,CACxD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,QAAQ,CAC5B,kBAAiB,KAAK,IAAI,sBAAsB,OAAO,SAAS,CAAC;AAGnE,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAI,yBAAyB;EAAE,GAAG,OAAO;EAAc;EAAa,CAAC,CACtE;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,OAAO,CAC3B,kBAAiB,KAAK,IAAI,oBAAoB,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;AAGvE,KAAI,CAAC,OAAO,MAAM,IAAI,cAAc,CAClC,kBAAiB,KAAK,IAAI,0BAA0B,OAAO,eAAe,CAAC;AAG7E,KAAI,CAAC,OAAO,MAAM,IAAI,iBAAiB,CACrC,kBAAiB,KACf,IAAI,6BAA6B;EAC/B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAI,4BAA4B,OAAO,iBAAiB,CACzD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAI,4BAA4B;EAC9B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,uCAAuC,CAC3D,kBAAiB,KACf,IAAI,qBAAqB;EACvB,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,yCAAyC,cAAc,EAAE,CACrE;EACF,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,kDAAkD,CACtE,kBAAiB,KACf,IAAI,8BAA8B;EAChC,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,oDACP,cAAc,EAAE,CACrB;EACF,CAAC,CACH;AAGH,KAAI,OAAO,cACT,kBAAiB,KACf,IAAI,yBAAyB,EAAE,GAAG,OAAO,eAAe,CAAC,CAC1D;AAGH,MAAK,MAAM,mBAAmB,iBAC5B,KAAI,2BAA2B,wBAAwB;AACrD,MAAI,mBACF,iBAAgB,kBAAkB,mBAAmB;AAGvD,MAAI,WACF,iBAAgB,cAAc,WAAW;AAG3C,MAAI,aACF,iBAAgB,gBAAgB,aAAa;;AAKnD,QAAO"}
1
+ {"version":3,"file":"setupDefaultInstrumentations.js","names":[],"sources":["../../src/sdk/setupDefaultInstrumentations.ts"],"sourcesContent":["import type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\nimport {\n ClicksInstrumentation,\n DocumentLoadInstrumentation,\n ElementTimingInstrumentation,\n EmptyRootInstrumentation,\n GlobalExceptionInstrumentation,\n LoafInstrumentation,\n MXLInstrumentationBase,\n ServerTimingInstrumentation,\n SpanSessionBrowserActivityInstrumentation,\n SpanSessionVisibilityInstrumentation,\n UserTimingInstrumentation,\n WebVitalsInstrumentation,\n} from '../instrumentations';\nimport type {\n DefaultInstrumentationConfig,\n SetupDefaultInstrumentationsArgs,\n} from './types';\n\nexport const setupDefaultInstrumentations = (\n config: DefaultInstrumentationConfig = {},\n {\n logManager,\n spanSessionManager,\n pageManager,\n limitManager,\n }: SetupDefaultInstrumentationsArgs,\n): Instrumentation[] => {\n /*\n These instrumentations are core to managing the session lifecycle and so are not optional\n */\n const instrumentations: Instrumentation[] = [\n new SpanSessionVisibilityInstrumentation(config['session-visibility']),\n new SpanSessionBrowserActivityInstrumentation(config['session-activity']),\n ];\n\n if (!config.omit?.has('exception')) {\n instrumentations.push(\n new GlobalExceptionInstrumentation(config['exception']),\n );\n }\n\n if (!config.omit?.has('click')) {\n instrumentations.push(new ClicksInstrumentation(config['click']));\n }\n\n if (!config.omit?.has('web-vital')) {\n instrumentations.push(\n new WebVitalsInstrumentation({ ...config['web-vital'], pageManager }),\n );\n }\n\n if (!config.omit?.has('loaf')) {\n instrumentations.push(new LoafInstrumentation({ ...config['loaf'] }));\n }\n\n if (!config.omit?.has('user-timing')) {\n instrumentations.push(new UserTimingInstrumentation(config['user-timing']));\n }\n\n if (!config.omit?.has('element-timing')) {\n instrumentations.push(\n new ElementTimingInstrumentation({\n ...config['element-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('document-load')) {\n instrumentations.push(\n new DocumentLoadInstrumentation(config['document-load']),\n );\n }\n\n if (!config.omit?.has('server-timing')) {\n instrumentations.push(\n new ServerTimingInstrumentation({\n ...config['server-timing'],\n limitManager,\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-fetch')) {\n instrumentations.push(\n new FetchInstrumentation({\n ...config['@opentelemetry/instrumentation-fetch'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-fetch']?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (!config.omit?.has('@opentelemetry/instrumentation-xml-http-request')) {\n instrumentations.push(\n new XMLHttpRequestInstrumentation({\n ...config['@opentelemetry/instrumentation-xml-http-request'],\n ignoreUrls: [\n ...(config['network']?.ignoreUrls ?? []),\n ...(config['@opentelemetry/instrumentation-xml-http-request']\n ?.ignoreUrls ?? []),\n ],\n }),\n );\n }\n\n if (config['empty-root']) {\n instrumentations.push(\n new EmptyRootInstrumentation({ ...config['empty-root'] }),\n );\n }\n\n for (const instrumentation of instrumentations) {\n if (instrumentation instanceof MXLInstrumentationBase) {\n if (spanSessionManager) {\n instrumentation.setSessionManager(spanSessionManager);\n }\n\n if (logManager) {\n instrumentation.setLogManager(logManager);\n }\n\n if (limitManager) {\n instrumentation.setLimitManager(limitManager);\n }\n }\n }\n\n return instrumentations;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAa,gCACX,SAAuC,EAAE,EACzC,EACE,YACA,oBACA,aACA,mBAEoB;CAItB,MAAM,mBAAsC,CAC1C,IAAI,qCAAqC,OAAO,sBAAsB,EACtE,IAAI,0CAA0C,OAAO,oBAAoB,CAC1E;AAED,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAI,+BAA+B,OAAO,aAAa,CACxD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,QAAQ,CAC5B,kBAAiB,KAAK,IAAI,sBAAsB,OAAO,SAAS,CAAC;AAGnE,KAAI,CAAC,OAAO,MAAM,IAAI,YAAY,CAChC,kBAAiB,KACf,IAAI,yBAAyB;EAAE,GAAG,OAAO;EAAc;EAAa,CAAC,CACtE;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,OAAO,CAC3B,kBAAiB,KAAK,IAAI,oBAAoB,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;AAGvE,KAAI,CAAC,OAAO,MAAM,IAAI,cAAc,CAClC,kBAAiB,KAAK,IAAI,0BAA0B,OAAO,eAAe,CAAC;AAG7E,KAAI,CAAC,OAAO,MAAM,IAAI,iBAAiB,CACrC,kBAAiB,KACf,IAAI,6BAA6B;EAC/B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAI,4BAA4B,OAAO,iBAAiB,CACzD;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,gBAAgB,CACpC,kBAAiB,KACf,IAAI,4BAA4B;EAC9B,GAAG,OAAO;EACV;EACD,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,uCAAuC,CAC3D,kBAAiB,KACf,IAAI,qBAAqB;EACvB,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,yCAAyC,cAAc,EAAE,CACrE;EACF,CAAC,CACH;AAGH,KAAI,CAAC,OAAO,MAAM,IAAI,kDAAkD,CACtE,kBAAiB,KACf,IAAI,8BAA8B;EAChC,GAAG,OAAO;EACV,YAAY,CACV,GAAI,OAAO,YAAY,cAAc,EAAE,EACvC,GAAI,OAAO,oDACP,cAAc,EAAE,CACrB;EACF,CAAC,CACH;AAGH,KAAI,OAAO,cACT,kBAAiB,KACf,IAAI,yBAAyB,EAAE,GAAG,OAAO,eAAe,CAAC,CAC1D;AAGH,MAAK,MAAM,mBAAmB,iBAC5B,KAAI,2BAA2B,wBAAwB;AACrD,MAAI,mBACF,iBAAgB,kBAAkB,mBAAmB;AAGvD,MAAI,WACF,iBAAgB,cAAc,WAAW;AAG3C,MAAI,aACF,iBAAgB,gBAAgB,aAAa;;AAKnD,QAAO"}