@safaricom-mxl/web-sdk 0.0.14 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/dist/api-logs/api/LogAPI/LogAPI.cjs.map +1 -1
  2. package/dist/api-logs/api/LogAPI/LogAPI.js.map +1 -1
  3. package/dist/api-logs/logAPI.cjs.map +1 -1
  4. package/dist/api-logs/logAPI.js.map +1 -1
  5. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs.map +1 -1
  6. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js.map +1 -1
  7. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.cjs.map +1 -1
  8. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.js.map +1 -1
  9. package/dist/api-page/api/PageAPI/PageAPI.cjs.map +1 -1
  10. package/dist/api-page/api/PageAPI/PageAPI.js.map +1 -1
  11. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.cjs.map +1 -1
  12. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.js.map +1 -1
  13. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.cjs.map +1 -1
  14. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.js.map +1 -1
  15. package/dist/api-page/pageAPI.cjs.map +1 -1
  16. package/dist/api-page/pageAPI.js.map +1 -1
  17. package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs.map +1 -1
  18. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts.map +1 -1
  19. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts.map +1 -1
  20. package/dist/api-sessions/api/SessionAPI/SessionAPI.js.map +1 -1
  21. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs.map +1 -1
  22. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js.map +1 -1
  23. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs.map +1 -1
  24. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js.map +1 -1
  25. package/dist/api-sessions/sessionAPI.cjs.map +1 -1
  26. package/dist/api-sessions/sessionAPI.js.map +1 -1
  27. package/dist/api-traces/api/TraceAPI/TraceAPI.cjs.map +1 -1
  28. package/dist/api-traces/api/TraceAPI/TraceAPI.js.map +1 -1
  29. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.cjs.map +1 -1
  30. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.js.map +1 -1
  31. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.cjs.map +1 -1
  32. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.cts.map +1 -1
  33. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.ts.map +1 -1
  34. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.js.map +1 -1
  35. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.cjs.map +1 -1
  36. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.js.map +1 -1
  37. package/dist/api-traces/traceAPI.cjs.map +1 -1
  38. package/dist/api-traces/traceAPI.js.map +1 -1
  39. package/dist/api-users/api/UserAPI/UserAPI.cjs.map +1 -1
  40. package/dist/api-users/api/UserAPI/UserAPI.js.map +1 -1
  41. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.cjs.map +1 -1
  42. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.js.map +1 -1
  43. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.cjs.map +1 -1
  44. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.js.map +1 -1
  45. package/dist/api-users/userAPI.cjs.map +1 -1
  46. package/dist/api-users/userAPI.js.map +1 -1
  47. package/dist/common/attributes.cjs.map +1 -1
  48. package/dist/common/attributes.js.map +1 -1
  49. package/dist/constants/attributes.cjs +2 -0
  50. package/dist/constants/attributes.cjs.map +1 -1
  51. package/dist/constants/attributes.d.cts +2 -1
  52. package/dist/constants/attributes.d.cts.map +1 -1
  53. package/dist/constants/attributes.d.ts +2 -1
  54. package/dist/constants/attributes.d.ts.map +1 -1
  55. package/dist/constants/attributes.js +2 -1
  56. package/dist/constants/attributes.js.map +1 -1
  57. package/dist/constants/index.cjs +1 -0
  58. package/dist/constants/index.d.cts +2 -2
  59. package/dist/constants/index.d.ts +2 -2
  60. package/dist/constants/index.js +2 -2
  61. package/dist/exporters/MXLLogExporter/MXLLogExporter.cjs.map +1 -1
  62. package/dist/exporters/MXLLogExporter/MXLLogExporter.js.map +1 -1
  63. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
  64. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
  65. package/dist/exporters/MXLLogExporter/utils.cjs.map +1 -1
  66. package/dist/exporters/MXLLogExporter/utils.js.map +1 -1
  67. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs.map +1 -1
  68. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js.map +1 -1
  69. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
  70. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
  71. package/dist/exporters/MXLTraceExporter/utils.cjs.map +1 -1
  72. package/dist/exporters/MXLTraceExporter/utils.js.map +1 -1
  73. package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
  74. package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts.map +1 -1
  75. package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts.map +1 -1
  76. package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
  77. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
  78. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
  79. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
  80. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
  81. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
  82. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.cts.map +1 -1
  83. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts.map +1 -1
  84. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
  85. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
  86. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
  87. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -1
  88. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -1
  89. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
  90. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
  91. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
  92. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
  93. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs +1 -1
  94. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
  95. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.cts.map +1 -1
  96. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.d.ts.map +1 -1
  97. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js +2 -2
  98. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
  99. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +1 -1
  100. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +1 -1
  101. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -1
  102. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -1
  103. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
  104. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
  105. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs.map +1 -1
  106. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js.map +1 -1
  107. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs.map +1 -1
  108. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js.map +1 -1
  109. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
  110. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.cts.map +1 -1
  111. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.ts.map +1 -1
  112. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
  113. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
  114. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
  115. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
  116. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
  117. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -1
  118. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -1
  119. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +1 -1
  120. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +1 -1
  121. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +1 -1
  122. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +1 -1
  123. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +1 -1
  124. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +1 -1
  125. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +1 -1
  126. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +1 -1
  127. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -1
  128. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -1
  129. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
  130. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.cts.map +1 -1
  131. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts.map +1 -1
  132. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
  133. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +1 -1
  134. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +1 -1
  135. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +1 -1
  136. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
  137. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
  138. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
  139. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +1 -1
  140. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
  141. package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
  142. package/dist/managers/MXLConfigManager/constants.js.map +1 -1
  143. package/dist/managers/MXLConfigManager/utils.cjs.map +1 -1
  144. package/dist/managers/MXLConfigManager/utils.js.map +1 -1
  145. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
  146. package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
  147. package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
  148. package/dist/managers/MXLLimitManager/constants.js.map +1 -1
  149. package/dist/managers/MXLLogManager/MXLLogManager.cjs +3 -1
  150. package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
  151. package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
  152. package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
  153. package/dist/managers/MXLLogManager/MXLLogManager.js +4 -2
  154. package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
  155. package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
  156. package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
  157. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
  158. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
  159. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +1 -1
  160. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +1 -1
  161. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +1 -1
  162. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +1 -1
  163. package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
  164. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.cts.map +1 -1
  165. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts.map +1 -1
  166. package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
  167. package/dist/managers/MXLTraceManager/MXLTraceManager.cjs.map +1 -1
  168. package/dist/managers/MXLTraceManager/MXLTraceManager.js.map +1 -1
  169. package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
  170. package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
  171. package/dist/managers/MXLUserManager/types.cjs.map +1 -1
  172. package/dist/managers/MXLUserManager/types.js.map +1 -1
  173. package/dist/mxl-web-sdk.js +3 -38
  174. package/dist/mxl-web-sdk.js.map +1 -1
  175. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
  176. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
  177. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
  178. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
  179. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +1 -1
  180. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +1 -1
  181. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
  182. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
  183. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
  184. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
  185. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
  186. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
  187. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +1 -1
  188. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +1 -1
  189. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
  190. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
  191. package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
  192. package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
  193. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
  194. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
  195. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
  196. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
  197. package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
  198. package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
  199. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
  200. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
  201. package/dist/resources/appInstanceId.cjs.map +1 -1
  202. package/dist/resources/appInstanceId.js.map +1 -1
  203. package/dist/resources/constants/index.cjs +1 -1
  204. package/dist/resources/constants/index.cjs.map +1 -1
  205. package/dist/resources/constants/index.d.cts +1 -1
  206. package/dist/resources/constants/index.d.ts +1 -1
  207. package/dist/resources/constants/index.js +1 -1
  208. package/dist/resources/constants/index.js.map +1 -1
  209. package/dist/resources/webSdkResource.cjs.map +1 -1
  210. package/dist/resources/webSdkResource.d.cts.map +1 -1
  211. package/dist/resources/webSdkResource.d.ts.map +1 -1
  212. package/dist/resources/webSdkResource.js.map +1 -1
  213. package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
  214. package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
  215. package/dist/sdk/initSDK.cjs +13 -11
  216. package/dist/sdk/initSDK.cjs.map +1 -1
  217. package/dist/sdk/initSDK.d.cts.map +1 -1
  218. package/dist/sdk/initSDK.d.ts.map +1 -1
  219. package/dist/sdk/initSDK.js +14 -12
  220. package/dist/sdk/initSDK.js.map +1 -1
  221. package/dist/sdk/noopSessionRecording.cjs +10 -0
  222. package/dist/sdk/noopSessionRecording.cjs.map +1 -0
  223. package/dist/sdk/noopSessionRecording.d.cts +7 -0
  224. package/dist/sdk/noopSessionRecording.d.cts.map +1 -0
  225. package/dist/sdk/noopSessionRecording.d.ts +7 -0
  226. package/dist/sdk/noopSessionRecording.d.ts.map +1 -0
  227. package/dist/sdk/noopSessionRecording.js +9 -0
  228. package/dist/sdk/noopSessionRecording.js.map +1 -0
  229. package/dist/sdk/registry.cjs.map +1 -1
  230. package/dist/sdk/registry.js.map +1 -1
  231. package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
  232. package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
  233. package/dist/sdk/setupSessionRecorder.cjs +64 -22
  234. package/dist/sdk/setupSessionRecorder.cjs.map +1 -1
  235. package/dist/sdk/setupSessionRecorder.d.cts +16 -7
  236. package/dist/sdk/setupSessionRecorder.d.cts.map +1 -1
  237. package/dist/sdk/setupSessionRecorder.d.ts +16 -7
  238. package/dist/sdk/setupSessionRecorder.d.ts.map +1 -1
  239. package/dist/sdk/setupSessionRecorder.js +62 -21
  240. package/dist/sdk/setupSessionRecorder.js.map +1 -1
  241. package/dist/sdk/types.d.cts.map +1 -1
  242. package/dist/sdk/types.d.ts +1 -1
  243. package/dist/sdk/types.d.ts.map +1 -1
  244. package/dist/sdk/utils.cjs.map +1 -1
  245. package/dist/sdk/utils.js.map +1 -1
  246. package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
  247. package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
  248. package/dist/transport/FetchTransport/createFetchTransport.cjs.map +1 -1
  249. package/dist/transport/FetchTransport/createFetchTransport.js.map +1 -1
  250. package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
  251. package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
  252. package/dist/transport/RetryingTransport/createRetryingTransport.cjs.map +1 -1
  253. package/dist/transport/RetryingTransport/createRetryingTransport.js.map +1 -1
  254. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +1 -1
  255. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +1 -1
  256. package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
  257. package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
  258. package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs.map +1 -1
  259. package/dist/utils/bulkAddEventListener/bulkAddEventListener.js.map +1 -1
  260. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs.map +1 -1
  261. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.js.map +1 -1
  262. package/dist/utils/getVisibilityState.cjs.map +1 -1
  263. package/dist/utils/getVisibilityState.js.map +1 -1
  264. package/dist/utils/nsfConfigValidation.cjs.map +1 -1
  265. package/dist/utils/nsfConfigValidation.js.map +1 -1
  266. package/package.json +2 -2
@@ -1,45 +1,87 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("../_virtual/_rolldown/runtime.cjs");
3
2
  const require_exporters_utils = require("../exporters/utils.cjs");
4
3
  const require_exporters_MXLLogExporter_utils = require("../exporters/MXLLogExporter/utils.cjs");
5
- let _safaricom_mxl_session_recorder = require("@safaricom-mxl/session-recorder");
6
4
  //#region src/sdk/setupSessionRecorder.ts
7
- const noopSessionRecording = {
8
- isRecording: () => false,
9
- setEnabled: () => {}
10
- };
11
- function buildInitConfig({ resource, spanSessionManager, tracerProvider, appID, userID, mxlDataURL, sessionRecorder: userOptions }) {
5
+ let sessionRecorderModulePromise;
6
+ let sessionRecorderModuleLoaderOverride;
7
+ function loadSessionRecorderModule() {
8
+ if (sessionRecorderModuleLoaderOverride) return sessionRecorderModuleLoaderOverride();
9
+ sessionRecorderModulePromise ??= import("@safaricom-mxl/session-recorder");
10
+ return sessionRecorderModulePromise;
11
+ }
12
+ function resetSessionRecorderModuleCache() {
13
+ sessionRecorderModulePromise = void 0;
14
+ sessionRecorderModuleLoaderOverride = void 0;
15
+ }
16
+ function setSessionRecorderModuleLoaderForTests(loader) {
17
+ sessionRecorderModuleLoaderOverride = loader;
18
+ sessionRecorderModulePromise = void 0;
19
+ }
20
+ function buildInitConfig({ resource, spanSessionManager, tracerProvider, appID, userID, mxlDataURL, sessionRecorder: userOptions }, sessionRecorderVersion) {
12
21
  return {
13
22
  resource,
14
23
  getSessionId: () => spanSessionManager.getSessionId(),
15
- tracer: tracerProvider.getTracer("mxl.session-recorder", _safaricom_mxl_session_recorder.VERSION),
24
+ tracer: tracerProvider.getTracer("mxl.session-recorder", sessionRecorderVersion),
16
25
  url: require_exporters_MXLLogExporter_utils.getLogEndpoint(appID, mxlDataURL),
17
26
  headers: require_exporters_utils.getMXLHeaders(appID, userID),
18
27
  ...userOptions
19
28
  };
20
29
  }
21
30
  function createSessionRecordingControl(args) {
22
- const initConfig = () => buildInitConfig(args);
23
- if (args.recordUserSessions) {
24
- _safaricom_mxl_session_recorder.SessionRecorder.init(initConfig());
25
- return {
26
- isRecording: () => _safaricom_mxl_session_recorder.SessionRecorder.isRecording(),
27
- setEnabled: (enabled) => {
28
- _safaricom_mxl_session_recorder.SessionRecorder.setEnabled(enabled);
31
+ let sessionRecorderModule;
32
+ let initStarted = false;
33
+ let initComplete = false;
34
+ let initFailed = false;
35
+ let pendingInit;
36
+ const getSessionRecorder = () => sessionRecorderModule?.SessionRecorder;
37
+ const waitForSessionStart = () => new Promise((resolve) => {
38
+ const removeListener = args.spanSessionManager.addSessionStartedListener(() => {
39
+ removeListener();
40
+ resolve();
41
+ });
42
+ });
43
+ const initSessionRecorderWhenReady = () => {
44
+ if (initComplete || initFailed) return Promise.resolve();
45
+ pendingInit ??= (async () => {
46
+ if (args.spanSessionManager.getSessionId() === null) await waitForSessionStart();
47
+ if (initComplete || initFailed || initStarted) return;
48
+ initStarted = true;
49
+ try {
50
+ sessionRecorderModule = await loadSessionRecorderModule();
51
+ const config = buildInitConfig(args, sessionRecorderModule.VERSION);
52
+ sessionRecorderModule.SessionRecorder.init(config);
53
+ initComplete = true;
54
+ } catch (error) {
55
+ initFailed = true;
56
+ args.diagLogger.error("Failed to initialize session recorder", error);
57
+ } finally {
58
+ pendingInit = void 0;
29
59
  }
30
- };
31
- }
60
+ })();
61
+ return pendingInit;
62
+ };
63
+ if (args.recordUserSessions) initSessionRecorderWhenReady();
32
64
  return {
33
- isRecording: () => _safaricom_mxl_session_recorder.SessionRecorder.isRecording(),
65
+ isRecording: () => Boolean(getSessionRecorder()?.isRecording()),
34
66
  setEnabled: (enabled) => {
35
- if (enabled) if (!_safaricom_mxl_session_recorder.SessionRecorder.inited) _safaricom_mxl_session_recorder.SessionRecorder.init(initConfig());
36
- else _safaricom_mxl_session_recorder.SessionRecorder.resume();
37
- else if (_safaricom_mxl_session_recorder.SessionRecorder.inited) _safaricom_mxl_session_recorder.SessionRecorder.stop();
67
+ if (enabled) {
68
+ if (initComplete) {
69
+ getSessionRecorder()?.setEnabled(true);
70
+ return;
71
+ }
72
+ initSessionRecorderWhenReady().then(() => {
73
+ if (initComplete) getSessionRecorder()?.setEnabled(true);
74
+ });
75
+ return;
76
+ }
77
+ if (initComplete) getSessionRecorder()?.setEnabled(false);
38
78
  }
39
79
  };
40
80
  }
41
81
  //#endregion
42
82
  exports.createSessionRecordingControl = createSessionRecordingControl;
43
- exports.noopSessionRecording = noopSessionRecording;
83
+ exports.loadSessionRecorderModule = loadSessionRecorderModule;
84
+ exports.resetSessionRecorderModuleCache = resetSessionRecorderModuleCache;
85
+ exports.setSessionRecorderModuleLoaderForTests = setSessionRecorderModuleLoaderForTests;
44
86
 
45
87
  //# sourceMappingURL=setupSessionRecorder.cjs.map
@@ -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":["getLogEndpoint","getMXLHeaders"],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils';\nimport { getMXLHeaders } from '../exporters/utils';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} from './types';\n\ntype SessionRecorderModule = typeof import('@safaricom-mxl/session-recorder');\n\nlet sessionRecorderModulePromise: Promise<SessionRecorderModule> | undefined;\nlet sessionRecorderModuleLoaderOverride:\n | (() => Promise<SessionRecorderModule>)\n | undefined;\n\nexport function loadSessionRecorderModule(): Promise<SessionRecorderModule> {\n if (sessionRecorderModuleLoaderOverride) {\n return sessionRecorderModuleLoaderOverride();\n }\n\n sessionRecorderModulePromise ??= import('@safaricom-mxl/session-recorder');\n return sessionRecorderModulePromise;\n}\n\nexport function resetSessionRecorderModuleCache(): void {\n sessionRecorderModulePromise = undefined;\n sessionRecorderModuleLoaderOverride = undefined;\n}\n\nexport function setSessionRecorderModuleLoaderForTests(\n loader: (() => Promise<SessionRecorderModule>) | undefined,\n): void {\n sessionRecorderModuleLoaderOverride = loader;\n sessionRecorderModulePromise = undefined;\n}\n\ninterface SpanSessionManagerForRecorder {\n getSessionId: () => string | null;\n addSessionStartedListener: (listener: () => void) => () => void;\n}\n\ninterface CreateSessionRecordingControlArgs {\n resource: Resource;\n spanSessionManager: SpanSessionManagerForRecorder;\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n diagLogger: DiagLogger;\n}\n\nfunction buildInitConfig(\n {\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n }: CreateSessionRecordingControlArgs,\n sessionRecorderVersion: string,\n): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n sessionRecorderVersion,\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(\n args: CreateSessionRecordingControlArgs,\n): SessionRecordingControl {\n let sessionRecorderModule: SessionRecorderModule | undefined;\n let initStarted = false;\n let initComplete = false;\n let initFailed = false;\n let pendingInit: Promise<void> | undefined;\n\n const getSessionRecorder = ():\n | SessionRecorderModule['SessionRecorder']\n | undefined => sessionRecorderModule?.SessionRecorder;\n\n const waitForSessionStart = (): Promise<void> =>\n new Promise((resolve) => {\n const removeListener = args.spanSessionManager.addSessionStartedListener(\n () => {\n removeListener();\n resolve();\n },\n );\n });\n\n const initSessionRecorderWhenReady = (): Promise<void> => {\n if (initComplete || initFailed) {\n return Promise.resolve();\n }\n\n pendingInit ??= (async () => {\n if (args.spanSessionManager.getSessionId() === null) {\n await waitForSessionStart();\n }\n\n if (initComplete || initFailed || initStarted) {\n return;\n }\n initStarted = true;\n\n try {\n sessionRecorderModule = await loadSessionRecorderModule();\n const config = buildInitConfig(args, sessionRecorderModule.VERSION);\n sessionRecorderModule.SessionRecorder.init(config);\n initComplete = true;\n } catch (error) {\n initFailed = true;\n args.diagLogger.error('Failed to initialize session recorder', error);\n } finally {\n pendingInit = undefined;\n }\n })();\n\n return pendingInit;\n };\n\n if (args.recordUserSessions) {\n void initSessionRecorderWhenReady();\n }\n\n return {\n isRecording: () => Boolean(getSessionRecorder()?.isRecording()),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (initComplete) {\n getSessionRecorder()?.setEnabled(true);\n return;\n }\n void initSessionRecorderWhenReady().then(() => {\n if (initComplete) {\n getSessionRecorder()?.setEnabled(true);\n }\n });\n return;\n }\n\n if (initComplete) {\n getSessionRecorder()?.setEnabled(false);\n }\n },\n };\n}\n"],"mappings":";;;;AAaA,IAAI;AACJ,IAAI;AAIJ,SAAgB,4BAA4D;AAC1E,KAAI,oCACF,QAAO,qCAAqC;AAG9C,kCAAiC,OAAO;AACxC,QAAO;;AAGT,SAAgB,kCAAwC;AACtD,gCAA+B,KAAA;AAC/B,uCAAsC,KAAA;;AAGxC,SAAgB,uCACd,QACM;AACN,uCAAsC;AACtC,gCAA+B,KAAA;;AAoBjC,SAAS,gBACP,EACE,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eAEnB,wBACuB;AAKvB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACA,uBAKM;EACN,KAAKA,uCAAAA,eAAe,OAAO,WAAW;EACtC,SAASC,wBAAAA,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BACd,MACyB;CACzB,IAAI;CACJ,IAAI,cAAc;CAClB,IAAI,eAAe;CACnB,IAAI,aAAa;CACjB,IAAI;CAEJ,MAAM,2BAEW,uBAAuB;CAExC,MAAM,4BACJ,IAAI,SAAS,YAAY;EACvB,MAAM,iBAAiB,KAAK,mBAAmB,gCACvC;AACJ,mBAAgB;AAChB,YAAS;IAEZ;GACD;CAEJ,MAAM,qCAAoD;AACxD,MAAI,gBAAgB,WAClB,QAAO,QAAQ,SAAS;AAG1B,mBAAiB,YAAY;AAC3B,OAAI,KAAK,mBAAmB,cAAc,KAAK,KAC7C,OAAM,qBAAqB;AAG7B,OAAI,gBAAgB,cAAc,YAChC;AAEF,iBAAc;AAEd,OAAI;AACF,4BAAwB,MAAM,2BAA2B;IACzD,MAAM,SAAS,gBAAgB,MAAM,sBAAsB,QAAQ;AACnE,0BAAsB,gBAAgB,KAAK,OAAO;AAClD,mBAAe;YACR,OAAO;AACd,iBAAa;AACb,SAAK,WAAW,MAAM,yCAAyC,MAAM;aAC7D;AACR,kBAAc,KAAA;;MAEd;AAEJ,SAAO;;AAGT,KAAI,KAAK,mBACF,+BAA8B;AAGrC,QAAO;EACL,mBAAmB,QAAQ,oBAAoB,EAAE,aAAa,CAAC;EAC/D,aAAa,YAAqB;AAChC,OAAI,SAAS;AACX,QAAI,cAAc;AAChB,yBAAoB,EAAE,WAAW,KAAK;AACtC;;AAEG,kCAA8B,CAAC,WAAW;AAC7C,SAAI,aACF,qBAAoB,EAAE,WAAW,KAAK;MAExC;AACF;;AAGF,OAAI,aACF,qBAAoB,EAAE,WAAW,MAAM;;EAG5C"}
@@ -1,21 +1,30 @@
1
1
  import { SessionRecorderUserConfig, SessionRecordingControl } from "./types.cjs";
2
+ import { DiagLogger } from "@opentelemetry/api";
2
3
  import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
3
4
  import { Resource } from "@opentelemetry/resources";
5
+ import * as _$_safaricom_mxl_session_recorder0 from "@safaricom-mxl/session-recorder";
4
6
 
5
7
  //#region src/sdk/setupSessionRecorder.d.ts
6
- declare const noopSessionRecording: SessionRecordingControl;
7
- declare function createSessionRecordingControl(args: {
8
+ type SessionRecorderModule = typeof _$_safaricom_mxl_session_recorder0;
9
+ declare function loadSessionRecorderModule(): Promise<SessionRecorderModule>;
10
+ declare function resetSessionRecorderModuleCache(): void;
11
+ declare function setSessionRecorderModuleLoaderForTests(loader: (() => Promise<SessionRecorderModule>) | undefined): void;
12
+ interface SpanSessionManagerForRecorder {
13
+ getSessionId: () => string | null;
14
+ addSessionStartedListener: (listener: () => void) => () => void;
15
+ }
16
+ interface CreateSessionRecordingControlArgs {
8
17
  resource: Resource;
9
- spanSessionManager: {
10
- getSessionId: () => string | null;
11
- };
18
+ spanSessionManager: SpanSessionManagerForRecorder;
12
19
  tracerProvider: WebTracerProvider;
13
20
  appID: string;
14
21
  userID: string;
15
22
  mxlDataURL?: string;
16
23
  recordUserSessions: boolean;
17
24
  sessionRecorder?: SessionRecorderUserConfig;
18
- }): SessionRecordingControl;
25
+ diagLogger: DiagLogger;
26
+ }
27
+ declare function createSessionRecordingControl(args: CreateSessionRecordingControlArgs): SessionRecordingControl;
19
28
  //#endregion
20
- export { createSessionRecordingControl, noopSessionRecording };
29
+ export { createSessionRecordingControl, loadSessionRecorderModule, resetSessionRecorderModuleCache, setSessionRecorderModuleLoaderForTests };
21
30
  //# sourceMappingURL=setupSessionRecorder.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupSessionRecorder.d.cts","names":[],"sources":["../../src/sdk/setupSessionRecorder.ts"],"mappings":";;;;;cAca,oBAAA,EAAsB,uBAAA;AAAA,iBAsCnB,6BAAA,CAA8B,IAAA;EAC5C,QAAA,EAAU,QAAA;EACV,kBAAA;IAAsB,YAAA;EAAA;EACtB,cAAA,EAAgB,iBAAA;EAChB,KAAA;EACA,MAAA;EACA,UAAA;EACA,kBAAA;EACA,eAAA,GAAkB,yBAAA;AAAA,IAChB,uBAAA"}
1
+ {"version":3,"file":"setupSessionRecorder.d.cts","names":[],"sources":["../../src/sdk/setupSessionRecorder.ts"],"mappings":";;;;;;;KAWK,qBAAA,UAAqB,kCAAA;AAAA,iBAOV,yBAAA,CAAA,GAA6B,OAAA,CAAQ,qBAAA;AAAA,iBASrC,+BAAA,CAAA;AAAA,iBAKA,sCAAA,CACd,MAAA,SAAe,OAAA,CAAQ,qBAAA;AAAA,UAMf,6BAAA;EACR,YAAA;EACA,yBAAA,GAA4B,QAAA;AAAA;AAAA,UAGpB,iCAAA;EACR,QAAA,EAAU,QAAA;EACV,kBAAA,EAAoB,6BAAA;EACpB,cAAA,EAAgB,iBAAA;EAChB,KAAA;EACA,MAAA;EACA,UAAA;EACA,kBAAA;EACA,eAAA,GAAkB,yBAAA;EAClB,UAAA,EAAY,UAAA;AAAA;AAAA,iBA6BE,6BAAA,CACd,IAAA,EAAM,iCAAA,GACL,uBAAA"}
@@ -1,21 +1,30 @@
1
1
  import { SessionRecorderUserConfig, SessionRecordingControl } from "./types.js";
2
+ import { DiagLogger } from "@opentelemetry/api";
2
3
  import { Resource } from "@opentelemetry/resources";
3
4
  import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
5
+ import * as _$_safaricom_mxl_session_recorder0 from "@safaricom-mxl/session-recorder";
4
6
 
5
7
  //#region src/sdk/setupSessionRecorder.d.ts
6
- declare const noopSessionRecording: SessionRecordingControl;
7
- declare function createSessionRecordingControl(args: {
8
+ type SessionRecorderModule = typeof _$_safaricom_mxl_session_recorder0;
9
+ declare function loadSessionRecorderModule(): Promise<SessionRecorderModule>;
10
+ declare function resetSessionRecorderModuleCache(): void;
11
+ declare function setSessionRecorderModuleLoaderForTests(loader: (() => Promise<SessionRecorderModule>) | undefined): void;
12
+ interface SpanSessionManagerForRecorder {
13
+ getSessionId: () => string | null;
14
+ addSessionStartedListener: (listener: () => void) => () => void;
15
+ }
16
+ interface CreateSessionRecordingControlArgs {
8
17
  resource: Resource;
9
- spanSessionManager: {
10
- getSessionId: () => string | null;
11
- };
18
+ spanSessionManager: SpanSessionManagerForRecorder;
12
19
  tracerProvider: WebTracerProvider;
13
20
  appID: string;
14
21
  userID: string;
15
22
  mxlDataURL?: string;
16
23
  recordUserSessions: boolean;
17
24
  sessionRecorder?: SessionRecorderUserConfig;
18
- }): SessionRecordingControl;
25
+ diagLogger: DiagLogger;
26
+ }
27
+ declare function createSessionRecordingControl(args: CreateSessionRecordingControlArgs): SessionRecordingControl;
19
28
  //#endregion
20
- export { createSessionRecordingControl, noopSessionRecording };
29
+ export { createSessionRecordingControl, loadSessionRecorderModule, resetSessionRecorderModuleCache, setSessionRecorderModuleLoaderForTests };
21
30
  //# sourceMappingURL=setupSessionRecorder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupSessionRecorder.d.ts","names":[],"sources":["../../src/sdk/setupSessionRecorder.ts"],"mappings":";;;;;cAca,oBAAA,EAAsB,uBAAA;AAAA,iBAsCnB,6BAAA,CAA8B,IAAA;EAC5C,QAAA,EAAU,QAAA;EACV,kBAAA;IAAsB,YAAA;EAAA;EACtB,cAAA,EAAgB,iBAAA;EAChB,KAAA;EACA,MAAA;EACA,UAAA;EACA,kBAAA;EACA,eAAA,GAAkB,yBAAA;AAAA,IAChB,uBAAA"}
1
+ {"version":3,"file":"setupSessionRecorder.d.ts","names":[],"sources":["../../src/sdk/setupSessionRecorder.ts"],"mappings":";;;;;;;KAWK,qBAAA,UAAqB,kCAAA;AAAA,iBAOV,yBAAA,CAAA,GAA6B,OAAA,CAAQ,qBAAA;AAAA,iBASrC,+BAAA,CAAA;AAAA,iBAKA,sCAAA,CACd,MAAA,SAAe,OAAA,CAAQ,qBAAA;AAAA,UAMf,6BAAA;EACR,YAAA;EACA,yBAAA,GAA4B,QAAA;AAAA;AAAA,UAGpB,iCAAA;EACR,QAAA,EAAU,QAAA;EACV,kBAAA,EAAoB,6BAAA;EACpB,cAAA,EAAgB,iBAAA;EAChB,KAAA;EACA,MAAA;EACA,UAAA;EACA,kBAAA;EACA,eAAA,GAAkB,yBAAA;EAClB,UAAA,EAAY,UAAA;AAAA;AAAA,iBA6BE,6BAAA,CACd,IAAA,EAAM,iCAAA,GACL,uBAAA"}
@@ -1,42 +1,83 @@
1
1
  import { getMXLHeaders } from "../exporters/utils.js";
2
2
  import { getLogEndpoint } from "../exporters/MXLLogExporter/utils.js";
3
- import { SessionRecorder, VERSION } from "@safaricom-mxl/session-recorder";
4
3
  //#region src/sdk/setupSessionRecorder.ts
5
- const noopSessionRecording = {
6
- isRecording: () => false,
7
- setEnabled: () => {}
8
- };
9
- function buildInitConfig({ resource, spanSessionManager, tracerProvider, appID, userID, mxlDataURL, sessionRecorder: userOptions }) {
4
+ let sessionRecorderModulePromise;
5
+ let sessionRecorderModuleLoaderOverride;
6
+ function loadSessionRecorderModule() {
7
+ if (sessionRecorderModuleLoaderOverride) return sessionRecorderModuleLoaderOverride();
8
+ sessionRecorderModulePromise ??= import("@safaricom-mxl/session-recorder");
9
+ return sessionRecorderModulePromise;
10
+ }
11
+ function resetSessionRecorderModuleCache() {
12
+ sessionRecorderModulePromise = void 0;
13
+ sessionRecorderModuleLoaderOverride = void 0;
14
+ }
15
+ function setSessionRecorderModuleLoaderForTests(loader) {
16
+ sessionRecorderModuleLoaderOverride = loader;
17
+ sessionRecorderModulePromise = void 0;
18
+ }
19
+ function buildInitConfig({ resource, spanSessionManager, tracerProvider, appID, userID, mxlDataURL, sessionRecorder: userOptions }, sessionRecorderVersion) {
10
20
  return {
11
21
  resource,
12
22
  getSessionId: () => spanSessionManager.getSessionId(),
13
- tracer: tracerProvider.getTracer("mxl.session-recorder", VERSION),
23
+ tracer: tracerProvider.getTracer("mxl.session-recorder", sessionRecorderVersion),
14
24
  url: getLogEndpoint(appID, mxlDataURL),
15
25
  headers: getMXLHeaders(appID, userID),
16
26
  ...userOptions
17
27
  };
18
28
  }
19
29
  function createSessionRecordingControl(args) {
20
- const initConfig = () => buildInitConfig(args);
21
- if (args.recordUserSessions) {
22
- SessionRecorder.init(initConfig());
23
- return {
24
- isRecording: () => SessionRecorder.isRecording(),
25
- setEnabled: (enabled) => {
26
- SessionRecorder.setEnabled(enabled);
30
+ let sessionRecorderModule;
31
+ let initStarted = false;
32
+ let initComplete = false;
33
+ let initFailed = false;
34
+ let pendingInit;
35
+ const getSessionRecorder = () => sessionRecorderModule?.SessionRecorder;
36
+ const waitForSessionStart = () => new Promise((resolve) => {
37
+ const removeListener = args.spanSessionManager.addSessionStartedListener(() => {
38
+ removeListener();
39
+ resolve();
40
+ });
41
+ });
42
+ const initSessionRecorderWhenReady = () => {
43
+ if (initComplete || initFailed) return Promise.resolve();
44
+ pendingInit ??= (async () => {
45
+ if (args.spanSessionManager.getSessionId() === null) await waitForSessionStart();
46
+ if (initComplete || initFailed || initStarted) return;
47
+ initStarted = true;
48
+ try {
49
+ sessionRecorderModule = await loadSessionRecorderModule();
50
+ const config = buildInitConfig(args, sessionRecorderModule.VERSION);
51
+ sessionRecorderModule.SessionRecorder.init(config);
52
+ initComplete = true;
53
+ } catch (error) {
54
+ initFailed = true;
55
+ args.diagLogger.error("Failed to initialize session recorder", error);
56
+ } finally {
57
+ pendingInit = void 0;
27
58
  }
28
- };
29
- }
59
+ })();
60
+ return pendingInit;
61
+ };
62
+ if (args.recordUserSessions) initSessionRecorderWhenReady();
30
63
  return {
31
- isRecording: () => SessionRecorder.isRecording(),
64
+ isRecording: () => Boolean(getSessionRecorder()?.isRecording()),
32
65
  setEnabled: (enabled) => {
33
- if (enabled) if (!SessionRecorder.inited) SessionRecorder.init(initConfig());
34
- else SessionRecorder.resume();
35
- else if (SessionRecorder.inited) SessionRecorder.stop();
66
+ if (enabled) {
67
+ if (initComplete) {
68
+ getSessionRecorder()?.setEnabled(true);
69
+ return;
70
+ }
71
+ initSessionRecorderWhenReady().then(() => {
72
+ if (initComplete) getSessionRecorder()?.setEnabled(true);
73
+ });
74
+ return;
75
+ }
76
+ if (initComplete) getSessionRecorder()?.setEnabled(false);
36
77
  }
37
78
  };
38
79
  }
39
80
  //#endregion
40
- export { createSessionRecordingControl, noopSessionRecording };
81
+ export { createSessionRecordingControl, loadSessionRecorderModule, resetSessionRecorderModuleCache, setSessionRecorderModuleLoaderForTests };
41
82
 
42
83
  //# sourceMappingURL=setupSessionRecorder.js.map
@@ -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":[],"sources":["../../src/sdk/setupSessionRecorder.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport type { Resource } from '@opentelemetry/resources';\nimport type { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport type { SessionRecorderConfig } from '@safaricom-mxl/session-recorder';\nimport { getLogEndpoint } from '../exporters/MXLLogExporter/utils';\nimport { getMXLHeaders } from '../exporters/utils';\nimport type {\n SessionRecorderUserConfig,\n SessionRecordingControl,\n} from './types';\n\ntype SessionRecorderModule = typeof import('@safaricom-mxl/session-recorder');\n\nlet sessionRecorderModulePromise: Promise<SessionRecorderModule> | undefined;\nlet sessionRecorderModuleLoaderOverride:\n | (() => Promise<SessionRecorderModule>)\n | undefined;\n\nexport function loadSessionRecorderModule(): Promise<SessionRecorderModule> {\n if (sessionRecorderModuleLoaderOverride) {\n return sessionRecorderModuleLoaderOverride();\n }\n\n sessionRecorderModulePromise ??= import('@safaricom-mxl/session-recorder');\n return sessionRecorderModulePromise;\n}\n\nexport function resetSessionRecorderModuleCache(): void {\n sessionRecorderModulePromise = undefined;\n sessionRecorderModuleLoaderOverride = undefined;\n}\n\nexport function setSessionRecorderModuleLoaderForTests(\n loader: (() => Promise<SessionRecorderModule>) | undefined,\n): void {\n sessionRecorderModuleLoaderOverride = loader;\n sessionRecorderModulePromise = undefined;\n}\n\ninterface SpanSessionManagerForRecorder {\n getSessionId: () => string | null;\n addSessionStartedListener: (listener: () => void) => () => void;\n}\n\ninterface CreateSessionRecordingControlArgs {\n resource: Resource;\n spanSessionManager: SpanSessionManagerForRecorder;\n tracerProvider: WebTracerProvider;\n appID: string;\n userID: string;\n mxlDataURL?: string;\n recordUserSessions: boolean;\n sessionRecorder?: SessionRecorderUserConfig;\n diagLogger: DiagLogger;\n}\n\nfunction buildInitConfig(\n {\n resource,\n spanSessionManager,\n tracerProvider,\n appID,\n userID,\n mxlDataURL,\n sessionRecorder: userOptions,\n }: CreateSessionRecordingControlArgs,\n sessionRecorderVersion: string,\n): SessionRecorderConfig {\n const tracer = tracerProvider.getTracer(\n 'mxl.session-recorder',\n sessionRecorderVersion,\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(\n args: CreateSessionRecordingControlArgs,\n): SessionRecordingControl {\n let sessionRecorderModule: SessionRecorderModule | undefined;\n let initStarted = false;\n let initComplete = false;\n let initFailed = false;\n let pendingInit: Promise<void> | undefined;\n\n const getSessionRecorder = ():\n | SessionRecorderModule['SessionRecorder']\n | undefined => sessionRecorderModule?.SessionRecorder;\n\n const waitForSessionStart = (): Promise<void> =>\n new Promise((resolve) => {\n const removeListener = args.spanSessionManager.addSessionStartedListener(\n () => {\n removeListener();\n resolve();\n },\n );\n });\n\n const initSessionRecorderWhenReady = (): Promise<void> => {\n if (initComplete || initFailed) {\n return Promise.resolve();\n }\n\n pendingInit ??= (async () => {\n if (args.spanSessionManager.getSessionId() === null) {\n await waitForSessionStart();\n }\n\n if (initComplete || initFailed || initStarted) {\n return;\n }\n initStarted = true;\n\n try {\n sessionRecorderModule = await loadSessionRecorderModule();\n const config = buildInitConfig(args, sessionRecorderModule.VERSION);\n sessionRecorderModule.SessionRecorder.init(config);\n initComplete = true;\n } catch (error) {\n initFailed = true;\n args.diagLogger.error('Failed to initialize session recorder', error);\n } finally {\n pendingInit = undefined;\n }\n })();\n\n return pendingInit;\n };\n\n if (args.recordUserSessions) {\n void initSessionRecorderWhenReady();\n }\n\n return {\n isRecording: () => Boolean(getSessionRecorder()?.isRecording()),\n setEnabled: (enabled: boolean) => {\n if (enabled) {\n if (initComplete) {\n getSessionRecorder()?.setEnabled(true);\n return;\n }\n void initSessionRecorderWhenReady().then(() => {\n if (initComplete) {\n getSessionRecorder()?.setEnabled(true);\n }\n });\n return;\n }\n\n if (initComplete) {\n getSessionRecorder()?.setEnabled(false);\n }\n },\n };\n}\n"],"mappings":";;;AAaA,IAAI;AACJ,IAAI;AAIJ,SAAgB,4BAA4D;AAC1E,KAAI,oCACF,QAAO,qCAAqC;AAG9C,kCAAiC,OAAO;AACxC,QAAO;;AAGT,SAAgB,kCAAwC;AACtD,gCAA+B,KAAA;AAC/B,uCAAsC,KAAA;;AAGxC,SAAgB,uCACd,QACM;AACN,uCAAsC;AACtC,gCAA+B,KAAA;;AAoBjC,SAAS,gBACP,EACE,UACA,oBACA,gBACA,OACA,QACA,YACA,iBAAiB,eAEnB,wBACuB;AAKvB,QAAO;EACL;EACA,oBAAoB,mBAAmB,cAAc;EACrD,QAPa,eAAe,UAC5B,wBACA,uBAKM;EACN,KAAK,eAAe,OAAO,WAAW;EACtC,SAAS,cAAc,OAAO,OAAO;EACrC,GAAG;EACJ;;AAGH,SAAgB,8BACd,MACyB;CACzB,IAAI;CACJ,IAAI,cAAc;CAClB,IAAI,eAAe;CACnB,IAAI,aAAa;CACjB,IAAI;CAEJ,MAAM,2BAEW,uBAAuB;CAExC,MAAM,4BACJ,IAAI,SAAS,YAAY;EACvB,MAAM,iBAAiB,KAAK,mBAAmB,gCACvC;AACJ,mBAAgB;AAChB,YAAS;IAEZ;GACD;CAEJ,MAAM,qCAAoD;AACxD,MAAI,gBAAgB,WAClB,QAAO,QAAQ,SAAS;AAG1B,mBAAiB,YAAY;AAC3B,OAAI,KAAK,mBAAmB,cAAc,KAAK,KAC7C,OAAM,qBAAqB;AAG7B,OAAI,gBAAgB,cAAc,YAChC;AAEF,iBAAc;AAEd,OAAI;AACF,4BAAwB,MAAM,2BAA2B;IACzD,MAAM,SAAS,gBAAgB,MAAM,sBAAsB,QAAQ;AACnE,0BAAsB,gBAAgB,KAAK,OAAO;AAClD,mBAAe;YACR,OAAO;AACd,iBAAa;AACb,SAAK,WAAW,MAAM,yCAAyC,MAAM;aAC7D;AACR,kBAAc,KAAA;;MAEd;AAEJ,SAAO;;AAGT,KAAI,KAAK,mBACF,+BAA8B;AAGrC,QAAO;EACL,mBAAmB,QAAQ,oBAAoB,EAAE,aAAa,CAAC;EAC/D,aAAa,YAAqB;AAChC,OAAI,SAAS;AACX,QAAI,cAAc;AAChB,yBAAoB,EAAE,WAAW,KAAK;AACtC;;AAEG,kCAA8B,CAAC,WAAW;AAC7C,SAAI,aACF,qBAAoB,EAAE,WAAW,KAAK;MAExC;AACF;;AAGF,OAAI,aACF,qBAAoB,EAAE,WAAW,MAAM;;EAG5C"}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyCY,yBAAA,GAA4B,IAAA,CACtC,qBAAA;AAAA,UAIe,uBAAA;EACf,WAAA;EACA,UAAA,GAAa,OAAA;AAAA;AAAA,UAGE,gBAAA;;;;;;EAMf,WAAA;;;;;;EAOA,+BAAA;EAvBU;;;EA4BV,WAAA;EA3BqB;AAIvB;;EA4BE,+BAAA;AAAA;AAAA,UAGe,oBAAA;EACf,mBAAA,QAA2B,OAAA;EAC3B,SAAA,GAAY,MAAA,EAAQ,OAAA,CAAQ,gBAAA;EAC5B,SAAA,QAAiB,gBAAA;EAhCY;AAG/B;;EAiCE,6BAAA,IAAiC,eAAA;AAAA;AAAA,KAG9B,iBAAA;EAvBH;;;;;AAaF;EAiBE,UAAA;;;;;;EAOA,WAAA;EArBiC;;;;;;EA6BjC,4BAAA,GAA+B,4BAAA;EA7B/B;;;;;;EAqCA,gBAAA,GAAmB,eAAA;EA9BC;;;;;EAqCpB,UAAA,GAAa,iBAAA;EAeF;;;;;EARX,cAAA,GAAiB,cAAA;EAoFS;;;;;;EA5E1B,QAAA,GAAW,QAAA;EA7CX;;;;;;;;EAuDA,cAAA,GAAiB,aAAA;EAlBA;;;;;;;;EA4BjB,aAAA,GAAgB,kBAAA;EAiBhB;;;;;EAVA,QAAA,GAAW,YAAA;EAmCX;;;;;;;;EAzBA,kBAAA,GAAqB,iBAAA;EAyErB;;;;;;;EAhEA,+BAAA;EA2FG;;;;;;;EAlFH,4BAAA;EAEA,UAAA,GAAa,UAAA;EA2FmB;;AAAA;EAtFhC,UAAA;;;;EAKA,YAAA;EA8F4B;;;;;;;EArF5B,uBAAA,GAA0B,oBAAA;EAqFE;;AAAA;;;;;EA5E5B,gBAAA,GAAmB,OAAA,CAAQ,gBAAA;EAyFK;;;;;EAlFhC,gBAAA;EAkFA;;;;AAGF;;;EA5EE,0BAAA;EA8EI;;;;;;;EArEJ,mBAAA,GAAsB,GAAA;EAuElB;;;AAGN;;EAnEE,2BAAA;EAoEa;;;;;;EA5Db,kBAAA;EAkEM;;;EA7DN,eAAA,GAAkB,yBAAA;AAAA;AAAA,KAOf,sBAAA;EAiDH;;;;;;;EAzCA,KAAA;EAEA,aAAA,GAAgB,YAAA;EAChB,YAAA,GAAe,iBAAA;AAAA;AAAA,KAGZ,sBAAA;EAwCH;;;;;;EAjCA,YAAA,GAAe,iBAAA,KAAsB,iBAAA;EAErC,KAAA;EACA,aAAA,GAAgB,YAAA;AAAA;AAAA,KAGb,uBAAA;EAoCH;;;;AAGF;;EAhCE,aAAA,GAAgB,YAAA,KAAiB,YAAA;EAEjC,KAAA;EACA,YAAA,GAAe,iBAAA;AAAA;AAAA,KAGL,aAAA,GAAgB,iBAAA,IAEtB,sBAAA,GACA,sBAAA,GACA,uBAAA;AAAA,UAGW,UAAA;EACf,KAAA,QAAa,OAAA;EACb,gBAAA,GAAmB,MAAA,EAAQ,OAAA,CAAQ,gBAAA;EACnC,GAAA,EAAK,UAAA;EACL,KAAA,EAAO,YAAA;EACP,OAAA,EAAS,kBAAA;EACT,IAAA,EAAM,WAAA;EACN,IAAA,EAAM,WAAA;EAgBoB;;AAG5B;EAfE,gBAAA,EAAkB,uBAAA;AAAA;AAAA,UAGH,aAAA;EACf,gBAAA;EACA,eAAA,EAAiB,OAAA;AAAA;AAAA,UAGF,gBAAA;EACf,YAAA,EAAc,oBAAA;EACd,gBAAA;EACA,eAAA,EAAiB,OAAA;EACjB,iBAAA,EAAmB,OAAA;AAAA;AAAA,UAGJ,eAAA;EACf,QAAA,EAAU,QAAA;EACV,kBAAA,EAAoB,kBAAA;EACpB,WAAA,EAAa,WAAA;EACb,aAAA,GAAgB,YAAA;EAChB,cAAA,EAAgB,aAAA;EAChB,UAAA,GAAa,iBAAA;EACb,cAAA,GAAiB,cAAA;EACjB,kBAAA,EAAoB,iBAAA;EACpB,gBAAA,GAAmB,gBAAA;EACnB,gBAAA;EACA,gBAAA,GAAmB,aAAA;EACnB,WAAA,EAAa,WAAA;AAAA;AAAA,UAGE,aAAA;EACf,QAAA,EAAU,QAAA;EACV,WAAA,EAAa,WAAA;EACb,YAAA,GAAe,iBAAA;EACf,aAAA,EAAe,kBAAA;EACf,kBAAA,EAAoB,0BAAA;EACpB,YAAA,EAAc,oBAAA;EACd,kBAAA,EAAoB,iBAAA;EACpB,gBAAA;EACA,eAAA,GAAkB,uBAAA;EAClB,eAAA,EAAiB,OAAA;EACjB,WAAA,EAAa,WAAA;AAAA;AAAA,UAGE,aAAA;EACf,2BAAA;EACA,gBAAA;AAAA;AAAA,KAGG,wBAAA;AAAA,UAYK,0BAAA;EACR,UAAA,GAAa,KAAA,UAAe,MAAA;AAAA;AAAA,UAGb,gCAAA;EACf,UAAA,GAAa,UAAA;EACb,kBAAA,GAAqB,kBAAA;EACrB,WAAA,GAAc,WAAA;EACd,YAAA,GAAe,oBAAA;AAAA;AAAA,UAGA,4BAAA;EACf,IAAA,GAAO,GAAA,CAAI,wBAAA;EACX,SAAA,GAAY,kCAAA;EACZ,KAAA,GAAQ,yBAAA;EACR,WAAA,GAAc,4BAAA;EACd,oBAAA,GAAuB,wCAAA;EACvB,kBAAA,GAAqB,6CAAA;EACrB,IAAA,GAAO,uBAAA;EACP,aAAA,GAAgB,6BAAA;EAChB,gBAAA,GAAmB,gCAAA;EACnB,eAAA,GAAkB,+BAAA;EAClB,eAAA,GAAkB,iCAAA;EAIlB,OAAA,GAAU,0BAAA;EAOV,sCAAA,GAAyC,IAAA,CACvC,0BAAA;EAGF,iDAAA,GAAoD,IAAA,CAClD,mCAAA;EAKF,YAAA,GAAe,4BAAA;AAAA;AAAA,UAGA,kBAAA;EACf,QAAA,GAAW,GAAA,EAAK,UAAA;EAChB,KAAA;EACA,UAAA,QAAkB,UAAA;AAAA"}
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":"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"}
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RetryingTransport.cjs","names":["OTelPerformanceManager","INITIAL_BACKOFF","MAX_BACKOFF","BACKOFF_MULTIPLIER"],"sources":["../../../src/transport/RetryingTransport/RetryingTransport.ts"],"sourcesContent":["import type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport { OTelPerformanceManager } from '../../utils/index.ts';\nimport {\n BACKOFF_MULTIPLIER,\n INITIAL_BACKOFF,\n JITTER,\n MAX_ATTEMPTS,\n MAX_BACKOFF,\n} from './constants.ts';\n\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nconst getJitter = () => Math.random() * (2 * JITTER) - JITTER;\n\n// Taken directly from open-telemetry/opentelemetry-js/experimental/packages/otlp-exporter-base/src/retrying-transport.ts\n// File is not exposed externally\n\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class RetryingTransport implements IExporterTransport {\n public constructor(\n private readonly _transport: IExporterTransport,\n private readonly _perf: PerformanceManager = new OTelPerformanceManager(),\n ) {}\n\n public async send(\n data: Uint8Array,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n const deadline = this._perf.getNowMillis() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(\n Math.min(nextBackoff, MAX_BACKOFF) + getJitter(),\n 0,\n );\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - this._perf.getNowMillis();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n\n result = await this._retry(data, remainingTimeoutMillis, retryInMillis);\n }\n\n return result;\n }\n\n public shutdown() {\n this._transport.shutdown();\n }\n\n private _retry(\n data: Uint8Array,\n timeoutMillis: number,\n inMillis: number,\n ): Promise<ExportResponse> {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n}\n"],"mappings":";;;;;;;AAiBA,MAAM,kBAAkB,KAAK,QAAQ,GAAI,KAAA;AAoBzC,IAAa,oBAAb,MAA6D;CAC3D,YACE,YACA,QAA6C,IAAIA,wDAAAA,wBAAwB,EACzE;AAFiB,OAAA,aAAA;AACA,OAAA,QAAA;;CAGnB,MAAa,KACX,MACA,eACyB;EACzB,MAAM,WAAW,KAAK,MAAM,cAAc,GAAG;EAC7C,IAAI,SAAS,MAAM,KAAK,WAAW,KAAK,MAAM,cAAc;EAC5D,IAAI,WAAA;EACJ,IAAI,cAAcC,8CAAAA;AAElB,SAAO,OAAO,WAAW,eAAe,WAAW,GAAG;AACpD;GAGA,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,aAAaC,8CAAAA,YAAY,GAAG,WAAW,EAChD,EACD;AACD,iBAAc,cAAcC,8CAAAA;GAC5B,MAAM,gBAAgB,OAAO,iBAAiB;GAG9C,MAAM,yBAAyB,WAAW,KAAK,MAAM,cAAc;AACnE,OAAI,gBAAgB,uBAClB,QAAO;AAGT,YAAS,MAAM,KAAK,OAAO,MAAM,wBAAwB,cAAc;;AAGzE,SAAO;;CAGT,WAAkB;AAChB,OAAK,WAAW,UAAU;;CAG5B,OACE,MACA,eACA,UACyB;AACzB,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,oBAAiB;AACf,SAAK,WAAW,KAAK,MAAM,cAAc,CAAC,KAAK,SAAS,OAAO;MAC9D,SAAS;IACZ"}
1
+ {"version":3,"file":"RetryingTransport.cjs","names":["OTelPerformanceManager","INITIAL_BACKOFF","MAX_BACKOFF","BACKOFF_MULTIPLIER"],"sources":["../../../src/transport/RetryingTransport/RetryingTransport.ts"],"sourcesContent":["import type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { PerformanceManager } from '../../utils';\nimport { OTelPerformanceManager } from '../../utils';\nimport {\n BACKOFF_MULTIPLIER,\n INITIAL_BACKOFF,\n JITTER,\n MAX_ATTEMPTS,\n MAX_BACKOFF,\n} from './constants';\n\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nconst getJitter = () => Math.random() * (2 * JITTER) - JITTER;\n\n// Taken directly from open-telemetry/opentelemetry-js/experimental/packages/otlp-exporter-base/src/retrying-transport.ts\n// File is not exposed externally\n\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class RetryingTransport implements IExporterTransport {\n public constructor(\n private readonly _transport: IExporterTransport,\n private readonly _perf: PerformanceManager = new OTelPerformanceManager(),\n ) {}\n\n public async send(\n data: Uint8Array,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n const deadline = this._perf.getNowMillis() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(\n Math.min(nextBackoff, MAX_BACKOFF) + getJitter(),\n 0,\n );\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - this._perf.getNowMillis();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n\n result = await this._retry(data, remainingTimeoutMillis, retryInMillis);\n }\n\n return result;\n }\n\n public shutdown() {\n this._transport.shutdown();\n }\n\n private _retry(\n data: Uint8Array,\n timeoutMillis: number,\n inMillis: number,\n ): Promise<ExportResponse> {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n}\n"],"mappings":";;;;;;;AAiBA,MAAM,kBAAkB,KAAK,QAAQ,GAAI,KAAA;AAoBzC,IAAa,oBAAb,MAA6D;CAC3D,YACE,YACA,QAA6C,IAAIA,wDAAAA,wBAAwB,EACzE;AAFiB,OAAA,aAAA;AACA,OAAA,QAAA;;CAGnB,MAAa,KACX,MACA,eACyB;EACzB,MAAM,WAAW,KAAK,MAAM,cAAc,GAAG;EAC7C,IAAI,SAAS,MAAM,KAAK,WAAW,KAAK,MAAM,cAAc;EAC5D,IAAI,WAAA;EACJ,IAAI,cAAcC,8CAAAA;AAElB,SAAO,OAAO,WAAW,eAAe,WAAW,GAAG;AACpD;GAGA,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,aAAaC,8CAAAA,YAAY,GAAG,WAAW,EAChD,EACD;AACD,iBAAc,cAAcC,8CAAAA;GAC5B,MAAM,gBAAgB,OAAO,iBAAiB;GAG9C,MAAM,yBAAyB,WAAW,KAAK,MAAM,cAAc;AACnE,OAAI,gBAAgB,uBAClB,QAAO;AAGT,YAAS,MAAM,KAAK,OAAO,MAAM,wBAAwB,cAAc;;AAGzE,SAAO;;CAGT,WAAkB;AAChB,OAAK,WAAW,UAAU;;CAG5B,OACE,MACA,eACA,UACyB;AACzB,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,oBAAiB;AACf,SAAK,WAAW,KAAK,MAAM,cAAc,CAAC,KAAK,SAAS,OAAO;MAC9D,SAAS;IACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"RetryingTransport.js","names":[],"sources":["../../../src/transport/RetryingTransport/RetryingTransport.ts"],"sourcesContent":["import type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport { OTelPerformanceManager } from '../../utils/index.ts';\nimport {\n BACKOFF_MULTIPLIER,\n INITIAL_BACKOFF,\n JITTER,\n MAX_ATTEMPTS,\n MAX_BACKOFF,\n} from './constants.ts';\n\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nconst getJitter = () => Math.random() * (2 * JITTER) - JITTER;\n\n// Taken directly from open-telemetry/opentelemetry-js/experimental/packages/otlp-exporter-base/src/retrying-transport.ts\n// File is not exposed externally\n\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class RetryingTransport implements IExporterTransport {\n public constructor(\n private readonly _transport: IExporterTransport,\n private readonly _perf: PerformanceManager = new OTelPerformanceManager(),\n ) {}\n\n public async send(\n data: Uint8Array,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n const deadline = this._perf.getNowMillis() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(\n Math.min(nextBackoff, MAX_BACKOFF) + getJitter(),\n 0,\n );\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - this._perf.getNowMillis();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n\n result = await this._retry(data, remainingTimeoutMillis, retryInMillis);\n }\n\n return result;\n }\n\n public shutdown() {\n this._transport.shutdown();\n }\n\n private _retry(\n data: Uint8Array,\n timeoutMillis: number,\n inMillis: number,\n ): Promise<ExportResponse> {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n}\n"],"mappings":";;;;;;AAiBA,MAAM,kBAAkB,KAAK,QAAQ,GAAI,KAAA;AAoBzC,IAAa,oBAAb,MAA6D;CAC3D,YACE,YACA,QAA6C,IAAI,wBAAwB,EACzE;AAFiB,OAAA,aAAA;AACA,OAAA,QAAA;;CAGnB,MAAa,KACX,MACA,eACyB;EACzB,MAAM,WAAW,KAAK,MAAM,cAAc,GAAG;EAC7C,IAAI,SAAS,MAAM,KAAK,WAAW,KAAK,MAAM,cAAc;EAC5D,IAAI,WAAA;EACJ,IAAI,cAAc;AAElB,SAAO,OAAO,WAAW,eAAe,WAAW,GAAG;AACpD;GAGA,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,aAAa,YAAY,GAAG,WAAW,EAChD,EACD;AACD,iBAAc,cAAc;GAC5B,MAAM,gBAAgB,OAAO,iBAAiB;GAG9C,MAAM,yBAAyB,WAAW,KAAK,MAAM,cAAc;AACnE,OAAI,gBAAgB,uBAClB,QAAO;AAGT,YAAS,MAAM,KAAK,OAAO,MAAM,wBAAwB,cAAc;;AAGzE,SAAO;;CAGT,WAAkB;AAChB,OAAK,WAAW,UAAU;;CAG5B,OACE,MACA,eACA,UACyB;AACzB,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,oBAAiB;AACf,SAAK,WAAW,KAAK,MAAM,cAAc,CAAC,KAAK,SAAS,OAAO;MAC9D,SAAS;IACZ"}
1
+ {"version":3,"file":"RetryingTransport.js","names":[],"sources":["../../../src/transport/RetryingTransport/RetryingTransport.ts"],"sourcesContent":["import type {\n ExportResponse,\n IExporterTransport,\n} from '@opentelemetry/otlp-exporter-base';\nimport type { PerformanceManager } from '../../utils';\nimport { OTelPerformanceManager } from '../../utils';\nimport {\n BACKOFF_MULTIPLIER,\n INITIAL_BACKOFF,\n JITTER,\n MAX_ATTEMPTS,\n MAX_BACKOFF,\n} from './constants';\n\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nconst getJitter = () => Math.random() * (2 * JITTER) - JITTER;\n\n// Taken directly from open-telemetry/opentelemetry-js/experimental/packages/otlp-exporter-base/src/retrying-transport.ts\n// File is not exposed externally\n\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class RetryingTransport implements IExporterTransport {\n public constructor(\n private readonly _transport: IExporterTransport,\n private readonly _perf: PerformanceManager = new OTelPerformanceManager(),\n ) {}\n\n public async send(\n data: Uint8Array,\n timeoutMillis: number,\n ): Promise<ExportResponse> {\n const deadline = this._perf.getNowMillis() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(\n Math.min(nextBackoff, MAX_BACKOFF) + getJitter(),\n 0,\n );\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - this._perf.getNowMillis();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n\n result = await this._retry(data, remainingTimeoutMillis, retryInMillis);\n }\n\n return result;\n }\n\n public shutdown() {\n this._transport.shutdown();\n }\n\n private _retry(\n data: Uint8Array,\n timeoutMillis: number,\n inMillis: number,\n ): Promise<ExportResponse> {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n}\n"],"mappings":";;;;;;AAiBA,MAAM,kBAAkB,KAAK,QAAQ,GAAI,KAAA;AAoBzC,IAAa,oBAAb,MAA6D;CAC3D,YACE,YACA,QAA6C,IAAI,wBAAwB,EACzE;AAFiB,OAAA,aAAA;AACA,OAAA,QAAA;;CAGnB,MAAa,KACX,MACA,eACyB;EACzB,MAAM,WAAW,KAAK,MAAM,cAAc,GAAG;EAC7C,IAAI,SAAS,MAAM,KAAK,WAAW,KAAK,MAAM,cAAc;EAC5D,IAAI,WAAA;EACJ,IAAI,cAAc;AAElB,SAAO,OAAO,WAAW,eAAe,WAAW,GAAG;AACpD;GAGA,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,aAAa,YAAY,GAAG,WAAW,EAChD,EACD;AACD,iBAAc,cAAc;GAC5B,MAAM,gBAAgB,OAAO,iBAAiB;GAG9C,MAAM,yBAAyB,WAAW,KAAK,MAAM,cAAc;AACnE,OAAI,gBAAgB,uBAClB,QAAO;AAGT,YAAS,MAAM,KAAK,OAAO,MAAM,wBAAwB,cAAc;;AAGzE,SAAO;;CAGT,WAAkB;AAChB,OAAK,WAAW,UAAU;;CAG5B,OACE,MACA,eACA,UACyB;AACzB,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,oBAAiB;AACf,SAAK,WAAW,KAAK,MAAM,cAAc,CAAC,KAAK,SAAS,OAAO;MAC9D,SAAS;IACZ"}