@safaricom-mxl/web-sdk 0.0.13 → 0.0.15

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 (242) 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/exporters/MXLLogExporter/MXLLogExporter.cjs.map +1 -1
  50. package/dist/exporters/MXLLogExporter/MXLLogExporter.js.map +1 -1
  51. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
  52. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
  53. package/dist/exporters/MXLLogExporter/utils.cjs.map +1 -1
  54. package/dist/exporters/MXLLogExporter/utils.js.map +1 -1
  55. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs.map +1 -1
  56. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js.map +1 -1
  57. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
  58. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
  59. package/dist/exporters/MXLTraceExporter/utils.cjs.map +1 -1
  60. package/dist/exporters/MXLTraceExporter/utils.js.map +1 -1
  61. package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
  62. package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts.map +1 -1
  63. package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts.map +1 -1
  64. package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
  65. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
  66. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
  67. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
  68. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
  69. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
  70. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.cts.map +1 -1
  71. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts.map +1 -1
  72. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
  73. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
  74. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
  75. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -1
  76. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -1
  77. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
  78. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
  79. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
  80. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
  81. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
  82. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
  83. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +1 -1
  84. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +1 -1
  85. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -1
  86. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -1
  87. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
  88. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
  89. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs.map +1 -1
  90. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js.map +1 -1
  91. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs.map +1 -1
  92. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js.map +1 -1
  93. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
  94. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.cts.map +1 -1
  95. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.ts.map +1 -1
  96. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
  97. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
  98. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
  99. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
  100. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
  101. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -1
  102. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -1
  103. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +1 -1
  104. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +1 -1
  105. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +1 -1
  106. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +1 -1
  107. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +1 -1
  108. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +1 -1
  109. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +1 -1
  110. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +1 -1
  111. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -1
  112. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -1
  113. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
  114. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.cts.map +1 -1
  115. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts.map +1 -1
  116. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
  117. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +1 -1
  118. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +1 -1
  119. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +1 -1
  120. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
  121. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
  122. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
  123. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +1 -1
  124. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
  125. package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
  126. package/dist/managers/MXLConfigManager/constants.js.map +1 -1
  127. package/dist/managers/MXLConfigManager/utils.cjs.map +1 -1
  128. package/dist/managers/MXLConfigManager/utils.js.map +1 -1
  129. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
  130. package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
  131. package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
  132. package/dist/managers/MXLLimitManager/constants.js.map +1 -1
  133. package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
  134. package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
  135. package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
  136. package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
  137. package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
  138. package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
  139. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
  140. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
  141. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +1 -1
  142. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +1 -1
  143. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +1 -1
  144. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +1 -1
  145. package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
  146. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.cts.map +1 -1
  147. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts.map +1 -1
  148. package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
  149. package/dist/managers/MXLTraceManager/MXLTraceManager.cjs.map +1 -1
  150. package/dist/managers/MXLTraceManager/MXLTraceManager.js.map +1 -1
  151. package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
  152. package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
  153. package/dist/managers/MXLUserManager/types.cjs.map +1 -1
  154. package/dist/managers/MXLUserManager/types.js.map +1 -1
  155. package/dist/mxl-web-sdk.js +24 -4
  156. package/dist/mxl-web-sdk.js.map +1 -1
  157. package/dist/packages/otlp-transformer/dist/index.cjs +26 -26
  158. package/dist/packages/otlp-transformer/dist/index.cjs.map +1 -1
  159. package/dist/packages/otlp-transformer/dist/index.d.cts +8 -0
  160. package/dist/packages/otlp-transformer/dist/index.d.cts.map +1 -1
  161. package/dist/packages/otlp-transformer/dist/index.d.ts +8 -0
  162. package/dist/packages/otlp-transformer/dist/index.d.ts.map +1 -1
  163. package/dist/packages/otlp-transformer/dist/index.js +26 -26
  164. package/dist/packages/otlp-transformer/dist/index.js.map +1 -1
  165. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
  166. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
  167. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
  168. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
  169. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +1 -1
  170. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +1 -1
  171. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
  172. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
  173. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
  174. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
  175. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
  176. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
  177. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +1 -1
  178. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +1 -1
  179. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
  180. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
  181. package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
  182. package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
  183. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
  184. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
  185. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
  186. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
  187. package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
  188. package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
  189. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
  190. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
  191. package/dist/resources/appInstanceId.cjs.map +1 -1
  192. package/dist/resources/appInstanceId.js.map +1 -1
  193. package/dist/resources/constants/index.cjs +1 -1
  194. package/dist/resources/constants/index.cjs.map +1 -1
  195. package/dist/resources/constants/index.d.cts +1 -1
  196. package/dist/resources/constants/index.d.ts +1 -1
  197. package/dist/resources/constants/index.js +1 -1
  198. package/dist/resources/constants/index.js.map +1 -1
  199. package/dist/resources/webSdkResource.cjs.map +1 -1
  200. package/dist/resources/webSdkResource.d.cts.map +1 -1
  201. package/dist/resources/webSdkResource.d.ts.map +1 -1
  202. package/dist/resources/webSdkResource.js.map +1 -1
  203. package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
  204. package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
  205. package/dist/sdk/initSDK.cjs +1 -1
  206. package/dist/sdk/initSDK.cjs.map +1 -1
  207. package/dist/sdk/initSDK.d.cts.map +1 -1
  208. package/dist/sdk/initSDK.d.ts.map +1 -1
  209. package/dist/sdk/initSDK.js +1 -1
  210. package/dist/sdk/initSDK.js.map +1 -1
  211. package/dist/sdk/registry.cjs.map +1 -1
  212. package/dist/sdk/registry.js.map +1 -1
  213. package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
  214. package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
  215. package/dist/sdk/setupSessionRecorder.cjs.map +1 -1
  216. package/dist/sdk/setupSessionRecorder.js.map +1 -1
  217. package/dist/sdk/types.d.cts.map +1 -1
  218. package/dist/sdk/types.d.ts +1 -1
  219. package/dist/sdk/types.d.ts.map +1 -1
  220. package/dist/sdk/utils.cjs.map +1 -1
  221. package/dist/sdk/utils.js.map +1 -1
  222. package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
  223. package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
  224. package/dist/transport/FetchTransport/createFetchTransport.cjs.map +1 -1
  225. package/dist/transport/FetchTransport/createFetchTransport.js.map +1 -1
  226. package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
  227. package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
  228. package/dist/transport/RetryingTransport/createRetryingTransport.cjs.map +1 -1
  229. package/dist/transport/RetryingTransport/createRetryingTransport.js.map +1 -1
  230. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +1 -1
  231. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +1 -1
  232. package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
  233. package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
  234. package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs.map +1 -1
  235. package/dist/utils/bulkAddEventListener/bulkAddEventListener.js.map +1 -1
  236. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs.map +1 -1
  237. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.js.map +1 -1
  238. package/dist/utils/getVisibilityState.cjs.map +1 -1
  239. package/dist/utils/getVisibilityState.js.map +1 -1
  240. package/dist/utils/nsfConfigValidation.cjs.map +1 -1
  241. package/dist/utils/nsfConfigValidation.js.map +1 -1
  242. package/package.json +10 -10
@@ -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","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';\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 { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport {\n createSessionRecordingControl,\n noopSessionRecording,\n} from './setupSessionRecorder';\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 // 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 +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":";;;cA8Ea,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":";;;cA8Ea,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"}
@@ -33,8 +33,8 @@ import { UserSpanProcessor } from "../processors/UserSpanProcessor/UserSpanProce
33
33
  import { MXLW3CTraceContextPropagator } from "../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js";
34
34
  import { getDefaultAttributeScrubbers } from "./defaultAttributeScrubbers.js";
35
35
  import { registry } from "./registry.js";
36
- import { createSessionRecordingControl, noopSessionRecording } from "./setupSessionRecorder.js";
37
36
  import { setupDefaultInstrumentations } from "./setupDefaultInstrumentations.js";
37
+ import { createSessionRecordingControl, noopSessionRecording } from "./setupSessionRecorder.js";
38
38
  import { validateAppID, validateAppVersion } from "./utils.js";
39
39
  import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
40
40
  import { emptyResource } from "@opentelemetry/resources";
@@ -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 { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport {\n createSessionRecordingControl,\n noopSessionRecording,\n} from './setupSessionRecorder';\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 // 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 +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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupSessionRecorder.cjs","names":["SESSION_RECORDER_VERSION","getLogEndpoint","getMXLHeaders","SessionRecorder"],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport {\n VERSION as SESSION_RECORDER_VERSION,\n SessionRecorder,\n} from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils.ts';\nimport { getMXLHeaders } from '../exporters/utils.ts';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} from './types.ts';\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\nfunction buildInitConfig({\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n}: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n SESSION_RECORDER_VERSION,\n );\n return {\n resource,\n getSessionId: () => spanSessionManager.getSessionId(),\n tracer,\n url: getLogEndpoint(appID, mxlDataURL),\n headers: getMXLHeaders(appID, userID),\n ...userOptions,\n } as SessionRecorderConfig;\n}\n\nexport function createSessionRecordingControl(args: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecordingControl {\n const initConfig = () => buildInitConfig(args);\n\n if (args.recordUserSessions) {\n SessionRecorder.init(initConfig());\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n SessionRecorder.setEnabled(enabled);\n },\n };\n }\n\n // Defer rrweb + OTLP until the app calls setEnabled(true) (lazy start).\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (!SessionRecorder.inited) {\n SessionRecorder.init(initConfig());\n } else {\n SessionRecorder.resume();\n }\n } else if (SessionRecorder.inited) {\n SessionRecorder.stop();\n }\n },\n };\n}\n"],"mappings":";;;;;;AAcA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB;AAED,SAAS,gBAAgB,EACvB,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eASO;AAKxB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACAA,gCAAAA,QAKM;EACN,KAAKC,uCAAAA,eAAe,OAAO,WAAW;EACtC,SAASC,wBAAAA,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BAA8B,MASlB;CAC1B,MAAM,mBAAmB,gBAAgB,KAAK;AAE9C,KAAI,KAAK,oBAAoB;AAC3B,kCAAA,gBAAgB,KAAK,YAAY,CAAC;AAClC,SAAO;GACL,mBAAmBC,gCAAAA,gBAAgB,aAAa;GAChD,aAAa,YAAqB;AAChC,oCAAA,gBAAgB,WAAW,QAAQ;;GAEtC;;AAIH,QAAO;EACL,mBAAmBA,gCAAAA,gBAAgB,aAAa;EAChD,aAAa,YAAqB;AAChC,OAAI,QACF,KAAI,CAACA,gCAAAA,gBAAgB,OACnB,iCAAA,gBAAgB,KAAK,YAAY,CAAC;OAElC,iCAAA,gBAAgB,QAAQ;YAEjBA,gCAAAA,gBAAgB,OACzB,iCAAA,gBAAgB,MAAM;;EAG3B"}
1
+ {"version":3,"file":"setupSessionRecorder.cjs","names":["SESSION_RECORDER_VERSION","getLogEndpoint","getMXLHeaders","SessionRecorder"],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport {\n VERSION as SESSION_RECORDER_VERSION,\n SessionRecorder,\n} from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils';\nimport { getMXLHeaders } from '../exporters';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} 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\nfunction buildInitConfig({\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n}: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n SESSION_RECORDER_VERSION,\n );\n return {\n resource,\n getSessionId: () => spanSessionManager.getSessionId(),\n tracer,\n url: getLogEndpoint(appID, mxlDataURL),\n headers: getMXLHeaders(appID, userID),\n ...userOptions,\n } as SessionRecorderConfig;\n}\n\nexport function createSessionRecordingControl(args: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecordingControl {\n const initConfig = () => buildInitConfig(args);\n\n if (args.recordUserSessions) {\n SessionRecorder.init(initConfig());\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n SessionRecorder.setEnabled(enabled);\n },\n };\n }\n\n // Defer rrweb + OTLP until the app calls setEnabled(true) (lazy start).\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (!SessionRecorder.inited) {\n SessionRecorder.init(initConfig());\n } else {\n SessionRecorder.resume();\n }\n } else if (SessionRecorder.inited) {\n SessionRecorder.stop();\n }\n },\n };\n}\n"],"mappings":";;;;;;AAcA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB;AAED,SAAS,gBAAgB,EACvB,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eASO;AAKxB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACAA,gCAAAA,QAKM;EACN,KAAKC,uCAAAA,eAAe,OAAO,WAAW;EACtC,SAASC,wBAAAA,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BAA8B,MASlB;CAC1B,MAAM,mBAAmB,gBAAgB,KAAK;AAE9C,KAAI,KAAK,oBAAoB;AAC3B,kCAAA,gBAAgB,KAAK,YAAY,CAAC;AAClC,SAAO;GACL,mBAAmBC,gCAAAA,gBAAgB,aAAa;GAChD,aAAa,YAAqB;AAChC,oCAAA,gBAAgB,WAAW,QAAQ;;GAEtC;;AAIH,QAAO;EACL,mBAAmBA,gCAAAA,gBAAgB,aAAa;EAChD,aAAa,YAAqB;AAChC,OAAI,QACF,KAAI,CAACA,gCAAAA,gBAAgB,OACnB,iCAAA,gBAAgB,KAAK,YAAY,CAAC;OAElC,iCAAA,gBAAgB,QAAQ;YAEjBA,gCAAAA,gBAAgB,OACzB,iCAAA,gBAAgB,MAAM;;EAG3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"setupSessionRecorder.js","names":["SESSION_RECORDER_VERSION"],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport {\n VERSION as SESSION_RECORDER_VERSION,\n SessionRecorder,\n} from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils.ts';\nimport { getMXLHeaders } from '../exporters/utils.ts';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} from './types.ts';\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\nfunction buildInitConfig({\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n}: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n SESSION_RECORDER_VERSION,\n );\n return {\n resource,\n getSessionId: () => spanSessionManager.getSessionId(),\n tracer,\n url: getLogEndpoint(appID, mxlDataURL),\n headers: getMXLHeaders(appID, userID),\n ...userOptions,\n } as SessionRecorderConfig;\n}\n\nexport function createSessionRecordingControl(args: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecordingControl {\n const initConfig = () => buildInitConfig(args);\n\n if (args.recordUserSessions) {\n SessionRecorder.init(initConfig());\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n SessionRecorder.setEnabled(enabled);\n },\n };\n }\n\n // Defer rrweb + OTLP until the app calls setEnabled(true) (lazy start).\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (!SessionRecorder.inited) {\n SessionRecorder.init(initConfig());\n } else {\n SessionRecorder.resume();\n }\n } else if (SessionRecorder.inited) {\n SessionRecorder.stop();\n }\n },\n };\n}\n"],"mappings":";;;;AAcA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB;AAED,SAAS,gBAAgB,EACvB,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eASO;AAKxB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACAA,QAKM;EACN,KAAK,eAAe,OAAO,WAAW;EACtC,SAAS,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BAA8B,MASlB;CAC1B,MAAM,mBAAmB,gBAAgB,KAAK;AAE9C,KAAI,KAAK,oBAAoB;AAC3B,kBAAgB,KAAK,YAAY,CAAC;AAClC,SAAO;GACL,mBAAmB,gBAAgB,aAAa;GAChD,aAAa,YAAqB;AAChC,oBAAgB,WAAW,QAAQ;;GAEtC;;AAIH,QAAO;EACL,mBAAmB,gBAAgB,aAAa;EAChD,aAAa,YAAqB;AAChC,OAAI,QACF,KAAI,CAAC,gBAAgB,OACnB,iBAAgB,KAAK,YAAY,CAAC;OAElC,iBAAgB,QAAQ;YAEjB,gBAAgB,OACzB,iBAAgB,MAAM;;EAG3B"}
1
+ {"version":3,"file":"setupSessionRecorder.js","names":["SESSION_RECORDER_VERSION"],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport {\n VERSION as SESSION_RECORDER_VERSION,\n SessionRecorder,\n} from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils';\nimport { getMXLHeaders } from '../exporters';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} 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\nfunction buildInitConfig({\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n}: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n SESSION_RECORDER_VERSION,\n );\n return {\n resource,\n getSessionId: () => spanSessionManager.getSessionId(),\n tracer,\n url: getLogEndpoint(appID, mxlDataURL),\n headers: getMXLHeaders(appID, userID),\n ...userOptions,\n } as SessionRecorderConfig;\n}\n\nexport function createSessionRecordingControl(args: {\n resource: Resource;\n spanSessionManager: { getSessionId: () => string | null };\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n}): SessionRecordingControl {\n const initConfig = () => buildInitConfig(args);\n\n if (args.recordUserSessions) {\n SessionRecorder.init(initConfig());\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n SessionRecorder.setEnabled(enabled);\n },\n };\n }\n\n // Defer rrweb + OTLP until the app calls setEnabled(true) (lazy start).\n return {\n isRecording: () => SessionRecorder.isRecording(),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (!SessionRecorder.inited) {\n SessionRecorder.init(initConfig());\n } else {\n SessionRecorder.resume();\n }\n } else if (SessionRecorder.inited) {\n SessionRecorder.stop();\n }\n },\n };\n}\n"],"mappings":";;;;AAcA,MAAa,uBAAgD;CAC3D,mBAAmB;CACnB,kBAAkB;CAGnB;AAED,SAAS,gBAAgB,EACvB,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eASO;AAKxB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACAA,QAKM;EACN,KAAK,eAAe,OAAO,WAAW;EACtC,SAAS,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BAA8B,MASlB;CAC1B,MAAM,mBAAmB,gBAAgB,KAAK;AAE9C,KAAI,KAAK,oBAAoB;AAC3B,kBAAgB,KAAK,YAAY,CAAC;AAClC,SAAO;GACL,mBAAmB,gBAAgB,aAAa;GAChD,aAAa,YAAqB;AAChC,oBAAgB,WAAW,QAAQ;;GAEtC;;AAIH,QAAO;EACL,mBAAmB,gBAAgB,aAAa;EAChD,aAAa,YAAqB;AAChC,OAAI,QACF,KAAI,CAAC,gBAAgB,OACnB,iBAAgB,KAAK,YAAY,CAAC;OAElC,iBAAgB,QAAQ;YAEjB,gBAAgB,OACzB,iBAAgB,MAAM;;EAG3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
@@ -22,9 +22,9 @@ import { Resource } from "@opentelemetry/resources";
22
22
  import { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-web";
23
23
  import { Instrumentation } from "@opentelemetry/instrumentation";
24
24
  import { BatchLogRecordProcessor, LogRecordExporter, LogRecordProcessor } from "@opentelemetry/sdk-logs";
25
- import { SessionRecorderConfig } from "@safaricom-mxl/session-recorder";
26
25
  import { FetchInstrumentationConfig } from "@opentelemetry/instrumentation-fetch";
27
26
  import { XMLHttpRequestInstrumentationConfig } from "@opentelemetry/instrumentation-xml-http-request";
27
+ import { SessionRecorderConfig } from "@safaricom-mxl/session-recorder";
28
28
 
29
29
  //#region src/sdk/types.d.ts
30
30
  type SessionRecorderUserConfig = Omit<SessionRecorderConfig, 'resource' | 'getSessionId' | 'tracer' | 'url' | 'headers' | 'apiKey'>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":["TEMPLATE_APP_VERSION"],"sources":["../../src/sdk/utils.ts"],"sourcesContent":["import { TEMPLATE_APP_VERSION } from '../resources/constants/index.ts';\n\nexport const validateAppID = (appID: unknown): string | undefined => {\n if (appID === undefined) return undefined;\n if (typeof appID !== 'string') {\n throw new Error(\n `appID must be a string, or omitted if not using MXL. Received ${String(appID)}`,\n );\n }\n // if (appID.length >= 25) {\n // throw new Error(\n // `appID should be 25 characters long, or omitted if not using MXL. Received \"${appID}\"`,\n // );\n // }\n return appID;\n};\n\nexport const validateAppVersion = (appVersion: unknown): string => {\n if (appVersion === undefined) {\n // TEMPLATE_APP_VERSION is rewritten by the CLI at build time and may be empty\n const trimmedTemplate = TEMPLATE_APP_VERSION.trim();\n if (trimmedTemplate === '') {\n return 'unspecified';\n }\n return trimmedTemplate;\n }\n if (typeof appVersion !== 'string') {\n throw new Error(\n `if appVersion is specified, it must be a string. Received ${String(appVersion)}`,\n );\n }\n const trimmedAppVersion = appVersion.trim();\n if (trimmedAppVersion === '') {\n throw new Error(\n 'if appVersion is specified, it cannot be an empty string.',\n );\n }\n return trimmedAppVersion;\n};\n"],"mappings":";;;AAEA,MAAa,iBAAiB,UAAuC;AACnE,KAAI,UAAU,KAAA,EAAW,QAAO,KAAA;AAChC,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,iEAAiE,OAAO,MAAM,GAC/E;AAOH,QAAO;;AAGT,MAAa,sBAAsB,eAAgC;AACjE,KAAI,eAAe,KAAA,GAAW;EAE5B,MAAM,kBAAkBA,kCAAAA,qBAAqB,MAAM;AACnD,MAAI,oBAAoB,GACtB,QAAO;AAET,SAAO;;AAET,KAAI,OAAO,eAAe,SACxB,OAAM,IAAI,MACR,6DAA6D,OAAO,WAAW,GAChF;CAEH,MAAM,oBAAoB,WAAW,MAAM;AAC3C,KAAI,sBAAsB,GACxB,OAAM,IAAI,MACR,4DACD;AAEH,QAAO"}
1
+ {"version":3,"file":"utils.cjs","names":["TEMPLATE_APP_VERSION"],"sources":["../../src/sdk/utils.ts"],"sourcesContent":["import { TEMPLATE_APP_VERSION } from '../resources/constants';\n\nexport const validateAppID = (appID: unknown): string | undefined => {\n if (appID === undefined) return undefined;\n if (typeof appID !== 'string') {\n throw new Error(\n `appID must be a string, or omitted if not using MXL. Received ${String(appID)}`,\n );\n }\n // if (appID.length >= 25) {\n // throw new Error(\n // `appID should be 25 characters long, or omitted if not using MXL. Received \"${appID}\"`,\n // );\n // }\n return appID;\n};\n\nexport const validateAppVersion = (appVersion: unknown): string => {\n if (appVersion === undefined) {\n // TEMPLATE_APP_VERSION is rewritten by the CLI at build time and may be empty\n const trimmedTemplate = TEMPLATE_APP_VERSION.trim();\n if (trimmedTemplate === '') {\n return 'unspecified';\n }\n return trimmedTemplate;\n }\n if (typeof appVersion !== 'string') {\n throw new Error(\n `if appVersion is specified, it must be a string. Received ${String(appVersion)}`,\n );\n }\n const trimmedAppVersion = appVersion.trim();\n if (trimmedAppVersion === '') {\n throw new Error(\n 'if appVersion is specified, it cannot be an empty string.',\n );\n }\n return trimmedAppVersion;\n};\n"],"mappings":";;;AAEA,MAAa,iBAAiB,UAAuC;AACnE,KAAI,UAAU,KAAA,EAAW,QAAO,KAAA;AAChC,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,iEAAiE,OAAO,MAAM,GAC/E;AAOH,QAAO;;AAGT,MAAa,sBAAsB,eAAgC;AACjE,KAAI,eAAe,KAAA,GAAW;EAE5B,MAAM,kBAAkBA,kCAAAA,qBAAqB,MAAM;AACnD,MAAI,oBAAoB,GACtB,QAAO;AAET,SAAO;;AAET,KAAI,OAAO,eAAe,SACxB,OAAM,IAAI,MACR,6DAA6D,OAAO,WAAW,GAChF;CAEH,MAAM,oBAAoB,WAAW,MAAM;AAC3C,KAAI,sBAAsB,GACxB,OAAM,IAAI,MACR,4DACD;AAEH,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../src/sdk/utils.ts"],"sourcesContent":["import { TEMPLATE_APP_VERSION } from '../resources/constants/index.ts';\n\nexport const validateAppID = (appID: unknown): string | undefined => {\n if (appID === undefined) return undefined;\n if (typeof appID !== 'string') {\n throw new Error(\n `appID must be a string, or omitted if not using MXL. Received ${String(appID)}`,\n );\n }\n // if (appID.length >= 25) {\n // throw new Error(\n // `appID should be 25 characters long, or omitted if not using MXL. Received \"${appID}\"`,\n // );\n // }\n return appID;\n};\n\nexport const validateAppVersion = (appVersion: unknown): string => {\n if (appVersion === undefined) {\n // TEMPLATE_APP_VERSION is rewritten by the CLI at build time and may be empty\n const trimmedTemplate = TEMPLATE_APP_VERSION.trim();\n if (trimmedTemplate === '') {\n return 'unspecified';\n }\n return trimmedTemplate;\n }\n if (typeof appVersion !== 'string') {\n throw new Error(\n `if appVersion is specified, it must be a string. Received ${String(appVersion)}`,\n );\n }\n const trimmedAppVersion = appVersion.trim();\n if (trimmedAppVersion === '') {\n throw new Error(\n 'if appVersion is specified, it cannot be an empty string.',\n );\n }\n return trimmedAppVersion;\n};\n"],"mappings":";;AAEA,MAAa,iBAAiB,UAAuC;AACnE,KAAI,UAAU,KAAA,EAAW,QAAO,KAAA;AAChC,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,iEAAiE,OAAO,MAAM,GAC/E;AAOH,QAAO;;AAGT,MAAa,sBAAsB,eAAgC;AACjE,KAAI,eAAe,KAAA,GAAW;EAE5B,MAAM,kBAAkB,qBAAqB,MAAM;AACnD,MAAI,oBAAoB,GACtB,QAAO;AAET,SAAO;;AAET,KAAI,OAAO,eAAe,SACxB,OAAM,IAAI,MACR,6DAA6D,OAAO,WAAW,GAChF;CAEH,MAAM,oBAAoB,WAAW,MAAM;AAC3C,KAAI,sBAAsB,GACxB,OAAM,IAAI,MACR,4DACD;AAEH,QAAO"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/sdk/utils.ts"],"sourcesContent":["import { TEMPLATE_APP_VERSION } from '../resources/constants';\n\nexport const validateAppID = (appID: unknown): string | undefined => {\n if (appID === undefined) return undefined;\n if (typeof appID !== 'string') {\n throw new Error(\n `appID must be a string, or omitted if not using MXL. Received ${String(appID)}`,\n );\n }\n // if (appID.length >= 25) {\n // throw new Error(\n // `appID should be 25 characters long, or omitted if not using MXL. Received \"${appID}\"`,\n // );\n // }\n return appID;\n};\n\nexport const validateAppVersion = (appVersion: unknown): string => {\n if (appVersion === undefined) {\n // TEMPLATE_APP_VERSION is rewritten by the CLI at build time and may be empty\n const trimmedTemplate = TEMPLATE_APP_VERSION.trim();\n if (trimmedTemplate === '') {\n return 'unspecified';\n }\n return trimmedTemplate;\n }\n if (typeof appVersion !== 'string') {\n throw new Error(\n `if appVersion is specified, it must be a string. Received ${String(appVersion)}`,\n );\n }\n const trimmedAppVersion = appVersion.trim();\n if (trimmedAppVersion === '') {\n throw new Error(\n 'if appVersion is specified, it cannot be an empty string.',\n );\n }\n return trimmedAppVersion;\n};\n"],"mappings":";;AAEA,MAAa,iBAAiB,UAAuC;AACnE,KAAI,UAAU,KAAA,EAAW,QAAO,KAAA;AAChC,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,iEAAiE,OAAO,MAAM,GAC/E;AAOH,QAAO;;AAGT,MAAa,sBAAsB,eAAgC;AACjE,KAAI,eAAe,KAAA,GAAW;EAE5B,MAAM,kBAAkB,qBAAqB,MAAM;AACnD,MAAI,oBAAoB,GACtB,QAAO;AAET,SAAO;;AAET,KAAI,OAAO,eAAe,SACxB,OAAM,IAAI,MACR,6DAA6D,OAAO,WAAW,GAChF;CAEH,MAAM,oBAAoB,WAAW,MAAM;AAC3C,KAAI,sBAAsB,GACxB,OAAM,IAAI,MACR,4DACD;AAEH,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"FetchTransport.cjs","names":[],"sources":["../../../src/transport/FetchTransport/FetchTransport.ts"],"sourcesContent":["import { diag } from '@opentelemetry/api';\nimport type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { FetchRequestParameters } from './types.ts';\n\n// The fetch spec limits inflight keepalive request bodies to 64KiB total per\n// page context. We use a conservative budget to leave room for third-party\n// scripts that may also use keepalive or sendBeacon.\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nconst KEEPALIVE_BYTE_BUDGET = 49152; // 48KiB\n\n// Chrome enforces a 9-request concurrent keepalive limit per renderer process.\nconst MAX_KEEPALIVE_REQUESTS = 9;\n\nlet inflightKeepaliveBytes = 0;\nlet inflightKeepaliveCount = 0;\n\n/** @internal for testing only */\nexport function _resetKeepaliveTracking(): void {\n inflightKeepaliveBytes = 0;\n inflightKeepaliveCount = 0;\n}\n\nexport class FetchTransport implements IExporterTransport {\n public constructor(private readonly _config: FetchRequestParameters) {}\n\n // MXL endpoints require request bodies to be compressed with gzip\n private static async _compressRequest(\n data: Uint8Array<ArrayBuffer>,\n ): Promise<Uint8Array<ArrayBuffer>> {\n const stream = new CompressionStream('gzip');\n const writer = stream.writable.getWriter();\n\n void writer.write(data);\n void writer.close();\n\n const compressedChunks: Uint8Array[] = [];\n const reader = stream.readable.getReader();\n\n let done = false;\n while (!done) {\n const result = await reader.read();\n\n if (result.value) {\n compressedChunks.push(result.value);\n }\n\n done = result.done;\n }\n\n const compressedData = new Uint8Array(\n compressedChunks.reduce((acc, chunk) => acc + chunk.length, 0),\n );\n\n let offset = 0;\n\n for (const chunk of compressedChunks) {\n compressedData.set(chunk, offset);\n offset += chunk.length;\n }\n\n return compressedData;\n }\n\n public send(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n return this._asyncSend(data, timeoutMillis);\n }\n\n public shutdown(): void {\n // Intentionally left empty, nothing to do.\n }\n\n public async _asyncSend(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n let request = data;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this._config.headers,\n };\n\n // Use AbortSignal.timeout if available, otherwise fallback to AbortController\n // https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n let signal: AbortSignal;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if ('timeout' in AbortSignal) {\n // ok to ignore because there is a guard\n // eslint-disable-next-line baseline-js/use-baseline\n signal = AbortSignal.timeout(timeoutMillis);\n } else {\n const controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => {\n controller.abort(new DOMException('TimeoutError', 'TimeoutError'));\n }, timeoutMillis);\n }\n\n let keepalive = false;\n\n try {\n if (this._config.compression === 'gzip') {\n try {\n request = await FetchTransport._compressRequest(data);\n } catch (error) {\n const compressError =\n error instanceof Error ? error : new Error(String(error));\n diag.warn(\n `Fetch transport gzip compression failed: ${compressError.message}`,\n );\n return { status: 'failure', error: compressError };\n }\n headers['Content-Encoding'] = 'gzip';\n headers['Content-Length'] = request.length.toString();\n }\n\n const wouldExceedBytes =\n inflightKeepaliveBytes + request.byteLength > KEEPALIVE_BYTE_BUDGET;\n const wouldExceedCount = inflightKeepaliveCount >= MAX_KEEPALIVE_REQUESTS;\n keepalive = !wouldExceedBytes && !wouldExceedCount;\n\n if (keepalive) {\n inflightKeepaliveBytes += request.byteLength;\n inflightKeepaliveCount++;\n } else {\n const reason = wouldExceedBytes\n ? `inflight bytes (${inflightKeepaliveBytes} + ${request.byteLength}) would exceed ${KEEPALIVE_BYTE_BUDGET}B budget`\n : `concurrent count (${inflightKeepaliveCount}) at limit of ${MAX_KEEPALIVE_REQUESTS}`;\n diag.debug(`Sending without keepalive: ${reason}`);\n }\n\n const response = await fetch(this._config.url, {\n method: 'POST',\n keepalive,\n headers,\n body: request,\n signal,\n });\n\n if (response.ok) {\n return { status: 'success' };\n }\n\n const error = new Error(`${response.status} Fetch request failed`);\n const message = `Fetch transport received HTTP ${response.status} (keepalive=${keepalive})`;\n if (response.status >= 500) {\n diag.debug(message);\n return { status: 'retryable', error };\n }\n diag.warn(message);\n return { status: 'failure', error };\n } catch (error) {\n const fetchError =\n error instanceof Error ? error : new Error(String(error));\n const isRetryable =\n fetchError instanceof TypeError ||\n (fetchError instanceof DOMException &&\n fetchError.name === 'TimeoutError');\n const message = `Fetch transport failed (keepalive=${keepalive}): ${fetchError.message}`;\n if (isRetryable) {\n diag.debug(message);\n } else {\n diag.warn(message);\n }\n return {\n status: isRetryable ? 'retryable' : 'failure',\n error: fetchError,\n };\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n if (keepalive) {\n inflightKeepaliveBytes -= request.byteLength;\n inflightKeepaliveCount--;\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FetchTransport.cjs","names":[],"sources":["../../../src/transport/FetchTransport/FetchTransport.ts"],"sourcesContent":["import { diag } from '@opentelemetry/api';\nimport type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { FetchRequestParameters } from './types';\n\n// The fetch spec limits inflight keepalive request bodies to 64KiB total per\n// page context. We use a conservative budget to leave room for third-party\n// scripts that may also use keepalive or sendBeacon.\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nconst KEEPALIVE_BYTE_BUDGET = 49152; // 48KiB\n\n// Chrome enforces a 9-request concurrent keepalive limit per renderer process.\nconst MAX_KEEPALIVE_REQUESTS = 9;\n\nlet inflightKeepaliveBytes = 0;\nlet inflightKeepaliveCount = 0;\n\n/** @internal for testing only */\nexport function _resetKeepaliveTracking(): void {\n inflightKeepaliveBytes = 0;\n inflightKeepaliveCount = 0;\n}\n\nexport class FetchTransport implements IExporterTransport {\n public constructor(private readonly _config: FetchRequestParameters) {}\n\n // MXL endpoints require request bodies to be compressed with gzip\n private static async _compressRequest(\n data: Uint8Array<ArrayBuffer>,\n ): Promise<Uint8Array<ArrayBuffer>> {\n const stream = new CompressionStream('gzip');\n const writer = stream.writable.getWriter();\n\n void writer.write(data);\n void writer.close();\n\n const compressedChunks: Uint8Array[] = [];\n const reader = stream.readable.getReader();\n\n let done = false;\n while (!done) {\n const result = await reader.read();\n\n if (result.value) {\n compressedChunks.push(result.value);\n }\n\n done = result.done;\n }\n\n const compressedData = new Uint8Array(\n compressedChunks.reduce((acc, chunk) => acc + chunk.length, 0),\n );\n\n let offset = 0;\n\n for (const chunk of compressedChunks) {\n compressedData.set(chunk, offset);\n offset += chunk.length;\n }\n\n return compressedData;\n }\n\n public send(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n return this._asyncSend(data, timeoutMillis);\n }\n\n public shutdown(): void {\n // Intentionally left empty, nothing to do.\n }\n\n public async _asyncSend(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n let request = data;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this._config.headers,\n };\n\n // Use AbortSignal.timeout if available, otherwise fallback to AbortController\n // https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n let signal: AbortSignal;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if ('timeout' in AbortSignal) {\n // ok to ignore because there is a guard\n // eslint-disable-next-line baseline-js/use-baseline\n signal = AbortSignal.timeout(timeoutMillis);\n } else {\n const controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => {\n controller.abort(new DOMException('TimeoutError', 'TimeoutError'));\n }, timeoutMillis);\n }\n\n let keepalive = false;\n\n try {\n if (this._config.compression === 'gzip') {\n try {\n request = await FetchTransport._compressRequest(data);\n } catch (error) {\n const compressError =\n error instanceof Error ? error : new Error(String(error));\n diag.warn(\n `Fetch transport gzip compression failed: ${compressError.message}`,\n );\n return { status: 'failure', error: compressError };\n }\n headers['Content-Encoding'] = 'gzip';\n headers['Content-Length'] = request.length.toString();\n }\n\n const wouldExceedBytes =\n inflightKeepaliveBytes + request.byteLength > KEEPALIVE_BYTE_BUDGET;\n const wouldExceedCount = inflightKeepaliveCount >= MAX_KEEPALIVE_REQUESTS;\n keepalive = !wouldExceedBytes && !wouldExceedCount;\n\n if (keepalive) {\n inflightKeepaliveBytes += request.byteLength;\n inflightKeepaliveCount++;\n } else {\n const reason = wouldExceedBytes\n ? `inflight bytes (${inflightKeepaliveBytes} + ${request.byteLength}) would exceed ${KEEPALIVE_BYTE_BUDGET}B budget`\n : `concurrent count (${inflightKeepaliveCount}) at limit of ${MAX_KEEPALIVE_REQUESTS}`;\n diag.debug(`Sending without keepalive: ${reason}`);\n }\n\n const response = await fetch(this._config.url, {\n method: 'POST',\n keepalive,\n headers,\n body: request,\n signal,\n });\n\n if (response.ok) {\n return { status: 'success' };\n }\n\n const error = new Error(`${response.status} Fetch request failed`);\n const message = `Fetch transport received HTTP ${response.status} (keepalive=${keepalive})`;\n if (response.status >= 500) {\n diag.debug(message);\n return { status: 'retryable', error };\n }\n diag.warn(message);\n return { status: 'failure', error };\n } catch (error) {\n const fetchError =\n error instanceof Error ? error : new Error(String(error));\n const isRetryable =\n fetchError instanceof TypeError ||\n (fetchError instanceof DOMException &&\n fetchError.name === 'TimeoutError');\n const message = `Fetch transport failed (keepalive=${keepalive}): ${fetchError.message}`;\n if (isRetryable) {\n diag.debug(message);\n } else {\n diag.warn(message);\n }\n return {\n status: isRetryable ? 'retryable' : 'failure',\n error: fetchError,\n };\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n if (keepalive) {\n inflightKeepaliveBytes -= request.byteLength;\n inflightKeepaliveCount--;\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FetchTransport.js","names":[],"sources":["../../../src/transport/FetchTransport/FetchTransport.ts"],"sourcesContent":["import { diag } from '@opentelemetry/api';\nimport type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { FetchRequestParameters } from './types.ts';\n\n// The fetch spec limits inflight keepalive request bodies to 64KiB total per\n// page context. We use a conservative budget to leave room for third-party\n// scripts that may also use keepalive or sendBeacon.\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nconst KEEPALIVE_BYTE_BUDGET = 49152; // 48KiB\n\n// Chrome enforces a 9-request concurrent keepalive limit per renderer process.\nconst MAX_KEEPALIVE_REQUESTS = 9;\n\nlet inflightKeepaliveBytes = 0;\nlet inflightKeepaliveCount = 0;\n\n/** @internal for testing only */\nexport function _resetKeepaliveTracking(): void {\n inflightKeepaliveBytes = 0;\n inflightKeepaliveCount = 0;\n}\n\nexport class FetchTransport implements IExporterTransport {\n public constructor(private readonly _config: FetchRequestParameters) {}\n\n // MXL endpoints require request bodies to be compressed with gzip\n private static async _compressRequest(\n data: Uint8Array<ArrayBuffer>,\n ): Promise<Uint8Array<ArrayBuffer>> {\n const stream = new CompressionStream('gzip');\n const writer = stream.writable.getWriter();\n\n void writer.write(data);\n void writer.close();\n\n const compressedChunks: Uint8Array[] = [];\n const reader = stream.readable.getReader();\n\n let done = false;\n while (!done) {\n const result = await reader.read();\n\n if (result.value) {\n compressedChunks.push(result.value);\n }\n\n done = result.done;\n }\n\n const compressedData = new Uint8Array(\n compressedChunks.reduce((acc, chunk) => acc + chunk.length, 0),\n );\n\n let offset = 0;\n\n for (const chunk of compressedChunks) {\n compressedData.set(chunk, offset);\n offset += chunk.length;\n }\n\n return compressedData;\n }\n\n public send(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n return this._asyncSend(data, timeoutMillis);\n }\n\n public shutdown(): void {\n // Intentionally left empty, nothing to do.\n }\n\n public async _asyncSend(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n let request = data;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this._config.headers,\n };\n\n // Use AbortSignal.timeout if available, otherwise fallback to AbortController\n // https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n let signal: AbortSignal;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if ('timeout' in AbortSignal) {\n // ok to ignore because there is a guard\n // eslint-disable-next-line baseline-js/use-baseline\n signal = AbortSignal.timeout(timeoutMillis);\n } else {\n const controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => {\n controller.abort(new DOMException('TimeoutError', 'TimeoutError'));\n }, timeoutMillis);\n }\n\n let keepalive = false;\n\n try {\n if (this._config.compression === 'gzip') {\n try {\n request = await FetchTransport._compressRequest(data);\n } catch (error) {\n const compressError =\n error instanceof Error ? error : new Error(String(error));\n diag.warn(\n `Fetch transport gzip compression failed: ${compressError.message}`,\n );\n return { status: 'failure', error: compressError };\n }\n headers['Content-Encoding'] = 'gzip';\n headers['Content-Length'] = request.length.toString();\n }\n\n const wouldExceedBytes =\n inflightKeepaliveBytes + request.byteLength > KEEPALIVE_BYTE_BUDGET;\n const wouldExceedCount = inflightKeepaliveCount >= MAX_KEEPALIVE_REQUESTS;\n keepalive = !wouldExceedBytes && !wouldExceedCount;\n\n if (keepalive) {\n inflightKeepaliveBytes += request.byteLength;\n inflightKeepaliveCount++;\n } else {\n const reason = wouldExceedBytes\n ? `inflight bytes (${inflightKeepaliveBytes} + ${request.byteLength}) would exceed ${KEEPALIVE_BYTE_BUDGET}B budget`\n : `concurrent count (${inflightKeepaliveCount}) at limit of ${MAX_KEEPALIVE_REQUESTS}`;\n diag.debug(`Sending without keepalive: ${reason}`);\n }\n\n const response = await fetch(this._config.url, {\n method: 'POST',\n keepalive,\n headers,\n body: request,\n signal,\n });\n\n if (response.ok) {\n return { status: 'success' };\n }\n\n const error = new Error(`${response.status} Fetch request failed`);\n const message = `Fetch transport received HTTP ${response.status} (keepalive=${keepalive})`;\n if (response.status >= 500) {\n diag.debug(message);\n return { status: 'retryable', error };\n }\n diag.warn(message);\n return { status: 'failure', error };\n } catch (error) {\n const fetchError =\n error instanceof Error ? error : new Error(String(error));\n const isRetryable =\n fetchError instanceof TypeError ||\n (fetchError instanceof DOMException &&\n fetchError.name === 'TimeoutError');\n const message = `Fetch transport failed (keepalive=${keepalive}): ${fetchError.message}`;\n if (isRetryable) {\n diag.debug(message);\n } else {\n diag.warn(message);\n }\n return {\n status: isRetryable ? 'retryable' : 'failure',\n error: fetchError,\n };\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n if (keepalive) {\n inflightKeepaliveBytes -= request.byteLength;\n inflightKeepaliveCount--;\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FetchTransport.js","names":[],"sources":["../../../src/transport/FetchTransport/FetchTransport.ts"],"sourcesContent":["import { diag } from '@opentelemetry/api';\nimport type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { FetchRequestParameters } from './types';\n\n// The fetch spec limits inflight keepalive request bodies to 64KiB total per\n// page context. We use a conservative budget to leave room for third-party\n// scripts that may also use keepalive or sendBeacon.\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nconst KEEPALIVE_BYTE_BUDGET = 49152; // 48KiB\n\n// Chrome enforces a 9-request concurrent keepalive limit per renderer process.\nconst MAX_KEEPALIVE_REQUESTS = 9;\n\nlet inflightKeepaliveBytes = 0;\nlet inflightKeepaliveCount = 0;\n\n/** @internal for testing only */\nexport function _resetKeepaliveTracking(): void {\n inflightKeepaliveBytes = 0;\n inflightKeepaliveCount = 0;\n}\n\nexport class FetchTransport implements IExporterTransport {\n public constructor(private readonly _config: FetchRequestParameters) {}\n\n // MXL endpoints require request bodies to be compressed with gzip\n private static async _compressRequest(\n data: Uint8Array<ArrayBuffer>,\n ): Promise<Uint8Array<ArrayBuffer>> {\n const stream = new CompressionStream('gzip');\n const writer = stream.writable.getWriter();\n\n void writer.write(data);\n void writer.close();\n\n const compressedChunks: Uint8Array[] = [];\n const reader = stream.readable.getReader();\n\n let done = false;\n while (!done) {\n const result = await reader.read();\n\n if (result.value) {\n compressedChunks.push(result.value);\n }\n\n done = result.done;\n }\n\n const compressedData = new Uint8Array(\n compressedChunks.reduce((acc, chunk) => acc + chunk.length, 0),\n );\n\n let offset = 0;\n\n for (const chunk of compressedChunks) {\n compressedData.set(chunk, offset);\n offset += chunk.length;\n }\n\n return compressedData;\n }\n\n public send(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n return this._asyncSend(data, timeoutMillis);\n }\n\n public shutdown(): void {\n // Intentionally left empty, nothing to do.\n }\n\n public async _asyncSend(\n data: Uint8Array<ArrayBuffer>,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n let request = data;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this._config.headers,\n };\n\n // Use AbortSignal.timeout if available, otherwise fallback to AbortController\n // https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n let signal: AbortSignal;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if ('timeout' in AbortSignal) {\n // ok to ignore because there is a guard\n // eslint-disable-next-line baseline-js/use-baseline\n signal = AbortSignal.timeout(timeoutMillis);\n } else {\n const controller = new AbortController();\n signal = controller.signal;\n timeoutId = setTimeout(() => {\n controller.abort(new DOMException('TimeoutError', 'TimeoutError'));\n }, timeoutMillis);\n }\n\n let keepalive = false;\n\n try {\n if (this._config.compression === 'gzip') {\n try {\n request = await FetchTransport._compressRequest(data);\n } catch (error) {\n const compressError =\n error instanceof Error ? error : new Error(String(error));\n diag.warn(\n `Fetch transport gzip compression failed: ${compressError.message}`,\n );\n return { status: 'failure', error: compressError };\n }\n headers['Content-Encoding'] = 'gzip';\n headers['Content-Length'] = request.length.toString();\n }\n\n const wouldExceedBytes =\n inflightKeepaliveBytes + request.byteLength > KEEPALIVE_BYTE_BUDGET;\n const wouldExceedCount = inflightKeepaliveCount >= MAX_KEEPALIVE_REQUESTS;\n keepalive = !wouldExceedBytes && !wouldExceedCount;\n\n if (keepalive) {\n inflightKeepaliveBytes += request.byteLength;\n inflightKeepaliveCount++;\n } else {\n const reason = wouldExceedBytes\n ? `inflight bytes (${inflightKeepaliveBytes} + ${request.byteLength}) would exceed ${KEEPALIVE_BYTE_BUDGET}B budget`\n : `concurrent count (${inflightKeepaliveCount}) at limit of ${MAX_KEEPALIVE_REQUESTS}`;\n diag.debug(`Sending without keepalive: ${reason}`);\n }\n\n const response = await fetch(this._config.url, {\n method: 'POST',\n keepalive,\n headers,\n body: request,\n signal,\n });\n\n if (response.ok) {\n return { status: 'success' };\n }\n\n const error = new Error(`${response.status} Fetch request failed`);\n const message = `Fetch transport received HTTP ${response.status} (keepalive=${keepalive})`;\n if (response.status >= 500) {\n diag.debug(message);\n return { status: 'retryable', error };\n }\n diag.warn(message);\n return { status: 'failure', error };\n } catch (error) {\n const fetchError =\n error instanceof Error ? error : new Error(String(error));\n const isRetryable =\n fetchError instanceof TypeError ||\n (fetchError instanceof DOMException &&\n fetchError.name === 'TimeoutError');\n const message = `Fetch transport failed (keepalive=${keepalive}): ${fetchError.message}`;\n if (isRetryable) {\n diag.debug(message);\n } else {\n diag.warn(message);\n }\n return {\n status: isRetryable ? 'retryable' : 'failure',\n error: fetchError,\n };\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n if (keepalive) {\n inflightKeepaliveBytes -= request.byteLength;\n inflightKeepaliveCount--;\n }\n }\n }\n}\n"],"mappings":";;AAWA,MAAM,wBAAwB;AAG9B,MAAM,yBAAyB;AAE/B,IAAI,yBAAyB;AAC7B,IAAI,yBAAyB;;AAG7B,SAAgB,0BAAgC;AAC9C,0BAAyB;AACzB,0BAAyB;;AAG3B,IAAa,iBAAb,MAAa,eAA6C;CACxD,YAAmB,SAAkD;AAAjC,OAAA,UAAA;;CAGpC,aAAqB,iBACnB,MACkC;EAClC,MAAM,SAAS,IAAI,kBAAkB,OAAO;EAC5C,MAAM,SAAS,OAAO,SAAS,WAAW;AAErC,SAAO,MAAM,KAAK;AAClB,SAAO,OAAO;EAEnB,MAAM,mBAAiC,EAAE;EACzC,MAAM,SAAS,OAAO,SAAS,WAAW;EAE1C,IAAI,OAAO;AACX,SAAO,CAAC,MAAM;GACZ,MAAM,SAAS,MAAM,OAAO,MAAM;AAElC,OAAI,OAAO,MACT,kBAAiB,KAAK,OAAO,MAAM;AAGrC,UAAO,OAAO;;EAGhB,MAAM,iBAAiB,IAAI,WACzB,iBAAiB,QAAQ,KAAK,UAAU,MAAM,MAAM,QAAQ,EAAE,CAC/D;EAED,IAAI,SAAS;AAEb,OAAK,MAAM,SAAS,kBAAkB;AACpC,kBAAe,IAAI,OAAO,OAAO;AACjC,aAAU,MAAM;;AAGlB,SAAO;;CAGT,KACE,MACA,eACyB;AACzB,SAAO,KAAK,WAAW,MAAM,cAAc;;CAG7C,WAAwB;CAIxB,MAAa,WACX,MACA,eACyB;EACzB,IAAI,UAAU;EACd,MAAM,UAAkC;GACtC,gBAAgB;GAChB,GAAG,KAAK,QAAQ;GACjB;EAID,IAAI;EACJ,IAAI;AAEJ,MAAI,aAAa,YAGf,UAAS,YAAY,QAAQ,cAAc;OACtC;GACL,MAAM,aAAa,IAAI,iBAAiB;AACxC,YAAS,WAAW;AACpB,eAAY,iBAAiB;AAC3B,eAAW,MAAM,IAAI,aAAa,gBAAgB,eAAe,CAAC;MACjE,cAAc;;EAGnB,IAAI,YAAY;AAEhB,MAAI;AACF,OAAI,KAAK,QAAQ,gBAAgB,QAAQ;AACvC,QAAI;AACF,eAAU,MAAM,eAAe,iBAAiB,KAAK;aAC9C,OAAO;KACd,MAAM,gBACJ,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AAC3D,UAAK,KACH,4CAA4C,cAAc,UAC3D;AACD,YAAO;MAAE,QAAQ;MAAW,OAAO;MAAe;;AAEpD,YAAQ,sBAAsB;AAC9B,YAAQ,oBAAoB,QAAQ,OAAO,UAAU;;GAGvD,MAAM,mBACJ,yBAAyB,QAAQ,aAAa;AAEhD,eAAY,CAAC,oBAAoB,EADR,0BAA0B;AAGnD,OAAI,WAAW;AACb,8BAA0B,QAAQ;AAClC;UACK;IACL,MAAM,SAAS,mBACX,mBAAmB,uBAAuB,KAAK,QAAQ,WAAW,iBAAiB,sBAAsB,YACzG,qBAAqB,uBAAuB,gBAAgB;AAChE,SAAK,MAAM,8BAA8B,SAAS;;GAGpD,MAAM,WAAW,MAAM,MAAM,KAAK,QAAQ,KAAK;IAC7C,QAAQ;IACR;IACA;IACA,MAAM;IACN;IACD,CAAC;AAEF,OAAI,SAAS,GACX,QAAO,EAAE,QAAQ,WAAW;GAG9B,MAAM,wBAAQ,IAAI,MAAM,GAAG,SAAS,OAAO,uBAAuB;GAClE,MAAM,UAAU,iCAAiC,SAAS,OAAO,cAAc,UAAU;AACzF,OAAI,SAAS,UAAU,KAAK;AAC1B,SAAK,MAAM,QAAQ;AACnB,WAAO;KAAE,QAAQ;KAAa;KAAO;;AAEvC,QAAK,KAAK,QAAQ;AAClB,UAAO;IAAE,QAAQ;IAAW;IAAO;WAC5B,OAAO;GACd,MAAM,aACJ,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;GAC3D,MAAM,cACJ,sBAAsB,aACrB,sBAAsB,gBACrB,WAAW,SAAS;GACxB,MAAM,UAAU,qCAAqC,UAAU,KAAK,WAAW;AAC/E,OAAI,YACF,MAAK,MAAM,QAAQ;OAEnB,MAAK,KAAK,QAAQ;AAEpB,UAAO;IACL,QAAQ,cAAc,cAAc;IACpC,OAAO;IACR;YACO;AACR,OAAI,cAAc,KAAA,EAChB,cAAa,UAAU;AAEzB,OAAI,WAAW;AACb,8BAA0B,QAAQ;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchTransport.cjs","names":["FetchTransport"],"sources":["../../../src/transport/FetchTransport/createFetchTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { FetchTransport } from './FetchTransport.ts';\nimport type { FetchRequestParameters } from './types.ts';\n\nexport const createFetchTransport = (\n config: FetchRequestParameters,\n): IExporterTransport => new FetchTransport(config);\n"],"mappings":";;;AAIA,MAAa,wBACX,WACuB,IAAIA,gDAAAA,eAAe,OAAO"}
1
+ {"version":3,"file":"createFetchTransport.cjs","names":["FetchTransport"],"sources":["../../../src/transport/FetchTransport/createFetchTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { FetchTransport } from './FetchTransport';\nimport type { FetchRequestParameters } from './types';\n\nexport const createFetchTransport = (\n config: FetchRequestParameters,\n): IExporterTransport => new FetchTransport(config);\n"],"mappings":";;;AAIA,MAAa,wBACX,WACuB,IAAIA,gDAAAA,eAAe,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"createFetchTransport.js","names":[],"sources":["../../../src/transport/FetchTransport/createFetchTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { FetchTransport } from './FetchTransport.ts';\nimport type { FetchRequestParameters } from './types.ts';\n\nexport const createFetchTransport = (\n config: FetchRequestParameters,\n): IExporterTransport => new FetchTransport(config);\n"],"mappings":";;AAIA,MAAa,wBACX,WACuB,IAAI,eAAe,OAAO"}
1
+ {"version":3,"file":"createFetchTransport.js","names":[],"sources":["../../../src/transport/FetchTransport/createFetchTransport.ts"],"sourcesContent":["import type { IExporterTransport } from '@opentelemetry/otlp-exporter-base';\nimport { FetchTransport } from './FetchTransport';\nimport type { FetchRequestParameters } from './types';\n\nexport const createFetchTransport = (\n config: FetchRequestParameters,\n): IExporterTransport => new FetchTransport(config);\n"],"mappings":";;AAIA,MAAa,wBACX,WACuB,IAAI,eAAe,OAAO"}