@safaricom-mxl/web-sdk 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/api-logs/api/LogAPI/LogAPI.cjs.map +1 -1
  2. package/dist/api-logs/api/LogAPI/LogAPI.js.map +1 -1
  3. package/dist/api-logs/logAPI.cjs.map +1 -1
  4. package/dist/api-logs/logAPI.js.map +1 -1
  5. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs.map +1 -1
  6. package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js.map +1 -1
  7. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.cjs.map +1 -1
  8. package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.js.map +1 -1
  9. package/dist/api-page/api/PageAPI/PageAPI.cjs.map +1 -1
  10. package/dist/api-page/api/PageAPI/PageAPI.js.map +1 -1
  11. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.cjs.map +1 -1
  12. package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.js.map +1 -1
  13. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.cjs.map +1 -1
  14. package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.js.map +1 -1
  15. package/dist/api-page/pageAPI.cjs.map +1 -1
  16. package/dist/api-page/pageAPI.js.map +1 -1
  17. package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs.map +1 -1
  18. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts.map +1 -1
  19. package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts.map +1 -1
  20. package/dist/api-sessions/api/SessionAPI/SessionAPI.js.map +1 -1
  21. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs.map +1 -1
  22. package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js.map +1 -1
  23. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs.map +1 -1
  24. package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js.map +1 -1
  25. package/dist/api-sessions/sessionAPI.cjs.map +1 -1
  26. package/dist/api-sessions/sessionAPI.js.map +1 -1
  27. package/dist/api-traces/api/TraceAPI/TraceAPI.cjs.map +1 -1
  28. package/dist/api-traces/api/TraceAPI/TraceAPI.js.map +1 -1
  29. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.cjs.map +1 -1
  30. package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.js.map +1 -1
  31. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.cjs.map +1 -1
  32. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.cts.map +1 -1
  33. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.ts.map +1 -1
  34. package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.js.map +1 -1
  35. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.cjs.map +1 -1
  36. package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.js.map +1 -1
  37. package/dist/api-traces/traceAPI.cjs.map +1 -1
  38. package/dist/api-traces/traceAPI.js.map +1 -1
  39. package/dist/api-users/api/UserAPI/UserAPI.cjs.map +1 -1
  40. package/dist/api-users/api/UserAPI/UserAPI.js.map +1 -1
  41. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.cjs.map +1 -1
  42. package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.js.map +1 -1
  43. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.cjs.map +1 -1
  44. package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.js.map +1 -1
  45. package/dist/api-users/userAPI.cjs.map +1 -1
  46. package/dist/api-users/userAPI.js.map +1 -1
  47. package/dist/common/attributes.cjs.map +1 -1
  48. package/dist/common/attributes.js.map +1 -1
  49. package/dist/exporters/MXLLogExporter/MXLLogExporter.cjs.map +1 -1
  50. package/dist/exporters/MXLLogExporter/MXLLogExporter.js.map +1 -1
  51. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
  52. package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
  53. package/dist/exporters/MXLLogExporter/utils.cjs.map +1 -1
  54. package/dist/exporters/MXLLogExporter/utils.js.map +1 -1
  55. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs.map +1 -1
  56. package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js.map +1 -1
  57. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
  58. package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
  59. package/dist/exporters/MXLTraceExporter/utils.cjs.map +1 -1
  60. package/dist/exporters/MXLTraceExporter/utils.js.map +1 -1
  61. package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
  62. package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts.map +1 -1
  63. package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts.map +1 -1
  64. package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
  65. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
  66. package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
  67. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
  68. package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
  69. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
  70. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.cts.map +1 -1
  71. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts.map +1 -1
  72. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
  73. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
  74. package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
  75. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -1
  76. package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -1
  77. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
  78. package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
  79. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
  80. package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
  81. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
  82. package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
  83. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +1 -1
  84. package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +1 -1
  85. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -1
  86. package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -1
  87. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
  88. package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
  89. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs.map +1 -1
  90. package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js.map +1 -1
  91. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs.map +1 -1
  92. package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js.map +1 -1
  93. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
  94. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.cts.map +1 -1
  95. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.d.ts.map +1 -1
  96. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
  97. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
  98. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
  99. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
  100. package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
  101. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -1
  102. package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -1
  103. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +1 -1
  104. package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +1 -1
  105. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +1 -1
  106. package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +1 -1
  107. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +1 -1
  108. package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +1 -1
  109. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +1 -1
  110. package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +1 -1
  111. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -1
  112. package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -1
  113. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
  114. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.cts.map +1 -1
  115. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts.map +1 -1
  116. package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
  117. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +1 -1
  118. package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +1 -1
  119. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +1 -1
  120. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
  121. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
  122. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
  123. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +1 -1
  124. package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
  125. package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
  126. package/dist/managers/MXLConfigManager/constants.js.map +1 -1
  127. package/dist/managers/MXLConfigManager/utils.cjs.map +1 -1
  128. package/dist/managers/MXLConfigManager/utils.js.map +1 -1
  129. package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
  130. package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
  131. package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
  132. package/dist/managers/MXLLimitManager/constants.js.map +1 -1
  133. package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
  134. package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
  135. package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
  136. package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
  137. package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
  138. package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
  139. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
  140. package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
  141. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +1 -1
  142. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +1 -1
  143. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +1 -1
  144. package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +1 -1
  145. package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
  146. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.cts.map +1 -1
  147. package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts.map +1 -1
  148. package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
  149. package/dist/managers/MXLTraceManager/MXLTraceManager.cjs.map +1 -1
  150. package/dist/managers/MXLTraceManager/MXLTraceManager.js.map +1 -1
  151. package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
  152. package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
  153. package/dist/managers/MXLUserManager/types.cjs.map +1 -1
  154. package/dist/managers/MXLUserManager/types.js.map +1 -1
  155. package/dist/mxl-web-sdk.js +24 -4
  156. package/dist/mxl-web-sdk.js.map +1 -1
  157. package/dist/packages/otlp-transformer/dist/index.cjs +26 -26
  158. package/dist/packages/otlp-transformer/dist/index.cjs.map +1 -1
  159. package/dist/packages/otlp-transformer/dist/index.d.cts +8 -0
  160. package/dist/packages/otlp-transformer/dist/index.d.cts.map +1 -1
  161. package/dist/packages/otlp-transformer/dist/index.d.ts +8 -0
  162. package/dist/packages/otlp-transformer/dist/index.d.ts.map +1 -1
  163. package/dist/packages/otlp-transformer/dist/index.js +26 -26
  164. package/dist/packages/otlp-transformer/dist/index.js.map +1 -1
  165. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
  166. package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
  167. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
  168. package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
  169. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +1 -1
  170. package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +1 -1
  171. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
  172. package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
  173. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
  174. package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
  175. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
  176. package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
  177. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +1 -1
  178. package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +1 -1
  179. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
  180. package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
  181. package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
  182. package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
  183. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
  184. package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
  185. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
  186. package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
  187. package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
  188. package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
  189. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
  190. package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
  191. package/dist/resources/appInstanceId.cjs.map +1 -1
  192. package/dist/resources/appInstanceId.js.map +1 -1
  193. package/dist/resources/constants/index.cjs +1 -1
  194. package/dist/resources/constants/index.cjs.map +1 -1
  195. package/dist/resources/constants/index.d.cts +1 -1
  196. package/dist/resources/constants/index.d.ts +1 -1
  197. package/dist/resources/constants/index.js +1 -1
  198. package/dist/resources/constants/index.js.map +1 -1
  199. package/dist/resources/webSdkResource.cjs.map +1 -1
  200. package/dist/resources/webSdkResource.d.cts.map +1 -1
  201. package/dist/resources/webSdkResource.d.ts.map +1 -1
  202. package/dist/resources/webSdkResource.js.map +1 -1
  203. package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
  204. package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
  205. package/dist/sdk/initSDK.cjs +1 -1
  206. package/dist/sdk/initSDK.cjs.map +1 -1
  207. package/dist/sdk/initSDK.d.cts.map +1 -1
  208. package/dist/sdk/initSDK.d.ts.map +1 -1
  209. package/dist/sdk/initSDK.js +1 -1
  210. package/dist/sdk/initSDK.js.map +1 -1
  211. package/dist/sdk/registry.cjs.map +1 -1
  212. package/dist/sdk/registry.js.map +1 -1
  213. package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
  214. package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
  215. package/dist/sdk/setupSessionRecorder.cjs.map +1 -1
  216. package/dist/sdk/setupSessionRecorder.js.map +1 -1
  217. package/dist/sdk/types.d.cts.map +1 -1
  218. package/dist/sdk/types.d.ts +1 -1
  219. package/dist/sdk/types.d.ts.map +1 -1
  220. package/dist/sdk/utils.cjs.map +1 -1
  221. package/dist/sdk/utils.js.map +1 -1
  222. package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
  223. package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
  224. package/dist/transport/FetchTransport/createFetchTransport.cjs.map +1 -1
  225. package/dist/transport/FetchTransport/createFetchTransport.js.map +1 -1
  226. package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
  227. package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
  228. package/dist/transport/RetryingTransport/createRetryingTransport.cjs.map +1 -1
  229. package/dist/transport/RetryingTransport/createRetryingTransport.js.map +1 -1
  230. package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +1 -1
  231. package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +1 -1
  232. package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
  233. package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
  234. package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs.map +1 -1
  235. package/dist/utils/bulkAddEventListener/bulkAddEventListener.js.map +1 -1
  236. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs.map +1 -1
  237. package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.js.map +1 -1
  238. package/dist/utils/getVisibilityState.cjs.map +1 -1
  239. package/dist/utils/getVisibilityState.js.map +1 -1
  240. package/dist/utils/nsfConfigValidation.cjs.map +1 -1
  241. package/dist/utils/nsfConfigValidation.js.map +1 -1
  242. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"LogRecordScrubProcessor.cjs","names":[],"sources":["../../../src/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { AttributeScrubber } from '../../common/index.ts';\nimport type { LogRecordScrubProcessorArgs } from './types.ts';\n\nexport class LogRecordScrubProcessor implements LogRecordProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: LogRecordScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = logRecord.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n logRecord.setAttribute(scrubber.key, scrubber.scrub(value));\n }\n });\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AAIA,IAAa,0BAAb,MAAmE;CACjE;CAEA,YAAmB,EAAE,sBAAmD;AACtE,OAAK,sBAAsB;;CAI7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,UAAU,WAAW,SAAS;AAC5C,OAAI,SAAS,OAAO,UAAU,SAC5B,WAAU,aAAa,SAAS,KAAK,SAAS,MAAM,MAAM,CAAC;IAE7D;;CAIJ,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"LogRecordScrubProcessor.cjs","names":[],"sources":["../../../src/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { AttributeScrubber } from '../../common';\nimport type { LogRecordScrubProcessorArgs } from './types';\n\nexport class LogRecordScrubProcessor implements LogRecordProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: LogRecordScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = logRecord.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n logRecord.setAttribute(scrubber.key, scrubber.scrub(value));\n }\n });\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AAIA,IAAa,0BAAb,MAAmE;CACjE;CAEA,YAAmB,EAAE,sBAAmD;AACtE,OAAK,sBAAsB;;CAI7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,UAAU,WAAW,SAAS;AAC5C,OAAI,SAAS,OAAO,UAAU,SAC5B,WAAU,aAAa,SAAS,KAAK,SAAS,MAAM,MAAM,CAAC;IAE7D;;CAIJ,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogRecordScrubProcessor.js","names":[],"sources":["../../../src/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { AttributeScrubber } from '../../common/index.ts';\nimport type { LogRecordScrubProcessorArgs } from './types.ts';\n\nexport class LogRecordScrubProcessor implements LogRecordProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: LogRecordScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = logRecord.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n logRecord.setAttribute(scrubber.key, scrubber.scrub(value));\n }\n });\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AAIA,IAAa,0BAAb,MAAmE;CACjE;CAEA,YAAmB,EAAE,sBAAmD;AACtE,OAAK,sBAAsB;;CAI7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,UAAU,WAAW,SAAS;AAC5C,OAAI,SAAS,OAAO,UAAU,SAC5B,WAAU,aAAa,SAAS,KAAK,SAAS,MAAM,MAAM,CAAC;IAE7D;;CAIJ,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"LogRecordScrubProcessor.js","names":[],"sources":["../../../src/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { AttributeScrubber } from '../../common';\nimport type { LogRecordScrubProcessorArgs } from './types';\n\nexport class LogRecordScrubProcessor implements LogRecordProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: LogRecordScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = logRecord.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n logRecord.setAttribute(scrubber.key, scrubber.scrub(value));\n }\n });\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AAIA,IAAa,0BAAb,MAAmE;CACjE;CAEA,YAAmB,EAAE,sBAAmD;AACtE,OAAK,sBAAsB;;CAI7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,UAAU,WAAW,SAAS;AAC5C,OAAI,SAAS,OAAO,UAAU,SAC5B,WAAU,aAAa,SAAS,KAAK,SAAS,MAAM,MAAM,CAAC;IAE7D;;CAIJ,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLLogRecordProcessor.cjs","names":["KEY_MXL_TYPE","ATTR_URL_FULL"],"sources":["../../../src/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type { URLDocument } from '../../common/index.ts';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport type { MXLLogRecordProcessorArgs } from './types.ts';\n\nexport class MXLLogRecordProcessor implements LogRecordProcessor {\n private readonly _urlDocument: URLDocument;\n\n public constructor({\n urlDocument = window.document,\n }: MXLLogRecordProcessorArgs = {}) {\n this._urlDocument = urlDocument;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n if (!logRecord.attributes[KEY_MXL_TYPE]) {\n logRecord.setAttribute(KEY_MXL_TYPE, MXL_TYPES.SystemLog);\n }\n\n logRecord.setAttribute(ATTR_URL_FULL, this._urlDocument.URL);\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,wBAAb,MAAiE;CAC/D;CAEA,YAAmB,EACjB,cAAc,OAAO,aACQ,EAAE,EAAE;AACjC,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,MAAI,CAAC,UAAU,WAAA,YACb,WAAU,aAAaA,6BAAAA,cAAAA,UAAkC;AAG3D,YAAU,aAAaC,oCAAAA,eAAe,KAAK,aAAa,IAAI;;CAI9D,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"MXLLogRecordProcessor.cjs","names":["KEY_MXL_TYPE","ATTR_URL_FULL"],"sources":["../../../src/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type { URLDocument } from '../../common';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport type { MXLLogRecordProcessorArgs } from './types';\n\nexport class MXLLogRecordProcessor implements LogRecordProcessor {\n private readonly _urlDocument: URLDocument;\n\n public constructor({\n urlDocument = window.document,\n }: MXLLogRecordProcessorArgs = {}) {\n this._urlDocument = urlDocument;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n if (!logRecord.attributes[KEY_MXL_TYPE]) {\n logRecord.setAttribute(KEY_MXL_TYPE, MXL_TYPES.SystemLog);\n }\n\n logRecord.setAttribute(ATTR_URL_FULL, this._urlDocument.URL);\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,wBAAb,MAAiE;CAC/D;CAEA,YAAmB,EACjB,cAAc,OAAO,aACQ,EAAE,EAAE;AACjC,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,MAAI,CAAC,UAAU,WAAA,YACb,WAAU,aAAaA,6BAAAA,cAAAA,UAAkC;AAG3D,YAAU,aAAaC,oCAAAA,eAAe,KAAK,aAAa,IAAI;;CAI9D,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLLogRecordProcessor.js","names":[],"sources":["../../../src/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type { URLDocument } from '../../common/index.ts';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport type { MXLLogRecordProcessorArgs } from './types.ts';\n\nexport class MXLLogRecordProcessor implements LogRecordProcessor {\n private readonly _urlDocument: URLDocument;\n\n public constructor({\n urlDocument = window.document,\n }: MXLLogRecordProcessorArgs = {}) {\n this._urlDocument = urlDocument;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n if (!logRecord.attributes[KEY_MXL_TYPE]) {\n logRecord.setAttribute(KEY_MXL_TYPE, MXL_TYPES.SystemLog);\n }\n\n logRecord.setAttribute(ATTR_URL_FULL, this._urlDocument.URL);\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AAMA,IAAa,wBAAb,MAAiE;CAC/D;CAEA,YAAmB,EACjB,cAAc,OAAO,aACQ,EAAE,EAAE;AACjC,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,MAAI,CAAC,UAAU,WAAA,YACb,WAAU,aAAa,cAAA,UAAkC;AAG3D,YAAU,aAAa,eAAe,KAAK,aAAa,IAAI;;CAI9D,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"MXLLogRecordProcessor.js","names":[],"sources":["../../../src/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_URL_FULL } from '@opentelemetry/semantic-conventions';\nimport type { URLDocument } from '../../common';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport type { MXLLogRecordProcessorArgs } from './types';\n\nexport class MXLLogRecordProcessor implements LogRecordProcessor {\n private readonly _urlDocument: URLDocument;\n\n public constructor({\n urlDocument = window.document,\n }: MXLLogRecordProcessorArgs = {}) {\n this._urlDocument = urlDocument;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n if (!logRecord.attributes[KEY_MXL_TYPE]) {\n logRecord.setAttribute(KEY_MXL_TYPE, MXL_TYPES.SystemLog);\n }\n\n logRecord.setAttribute(ATTR_URL_FULL, this._urlDocument.URL);\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AAMA,IAAa,wBAAb,MAAiE;CAC/D;CAEA,YAAmB,EACjB,cAAc,OAAO,aACQ,EAAE,EAAE;AACjC,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AACrC,MAAI,CAAC,UAAU,WAAA,YACb,WAAU,aAAa,cAAA,UAAkC;AAG3D,YAAU,aAAa,eAAe,KAAK,aAAa,IAAI;;CAI9D,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLNetworkSpanProcessor.cjs","names":["isNetworkSpan","KEY_MXL_TYPE","ATTR_URL_FULL","SEMATTRS_HTTP_URL","ATTR_HTTP_RESPONSE_STATUS_CODE","SEMATTRS_HTTP_STATUS_CODE","ATTR_HTTP_REQUEST_METHOD","SEMATTRS_HTTP_METHOD","ATTR_HTTP_RESPONSE_BODY_SIZE","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","ATTR_HTTP_REQUEST_BODY_SIZE","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH"],"sources":["../../../src/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n ATTR_HTTP_REQUEST_BODY_SIZE,\n ATTR_HTTP_RESPONSE_BODY_SIZE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport { isNetworkSpan } from './types.ts';\n\n/**\n * MXL's API expects network spans to have some specific attributes.\n * This processor checks if a span is a network span and adds them.\n */\nexport class MXLNetworkSpanProcessor implements SpanProcessor {\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n\n // the span before it is sent to the exporter. This processor should be updated to use that api once that is available\n public onEnd(span: ReadableSpan): void {\n if (isNetworkSpan(span)) {\n span.attributes[KEY_MXL_TYPE] = MXL_TYPES.Network;\n\n /*\n Fallback on deprecated attribute names in case the span is using those instead of the latest ones\n\n The current versions of @opentelemetry/instrumentation-xml-http-request and @opentelemetry/instrumentation-fetch\n that we're getting from @opentelemetry/auto-instrumentations-web are using these, once we update we'll remove\n this fallback and only support a single version of the semantic convention\n */\n span.attributes[ATTR_URL_FULL] ??= span.attributes[SEMATTRS_HTTP_URL];\n span.attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] ??=\n span.attributes[SEMATTRS_HTTP_STATUS_CODE];\n span.attributes[ATTR_HTTP_REQUEST_METHOD] ??=\n span.attributes[SEMATTRS_HTTP_METHOD];\n span.attributes[ATTR_HTTP_RESPONSE_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH];\n span.attributes[ATTR_HTTP_REQUEST_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH];\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,0BAAb,MAA8D;CAC5D,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAMnC,MAAa,MAA0B;AACrC,MAAIA,iDAAAA,cAAc,KAAK,EAAE;AACvB,QAAK,WAAWC,6BAAAA,gBAAAA;AAShB,QAAK,WAAWC,oCAAAA,mBAAmB,KAAK,WAAWC,oCAAAA;AACnD,QAAK,WAAWC,oCAAAA,oCACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,oCAAAA,8BACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,+CAAAA,kCACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,+CAAAA,iCACd,KAAK,WAAWC,oCAAAA;;;CAItB,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"MXLNetworkSpanProcessor.cjs","names":["isNetworkSpan","KEY_MXL_TYPE","ATTR_URL_FULL","SEMATTRS_HTTP_URL","ATTR_HTTP_RESPONSE_STATUS_CODE","SEMATTRS_HTTP_STATUS_CODE","ATTR_HTTP_REQUEST_METHOD","SEMATTRS_HTTP_METHOD","ATTR_HTTP_RESPONSE_BODY_SIZE","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","ATTR_HTTP_REQUEST_BODY_SIZE","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH"],"sources":["../../../src/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n ATTR_HTTP_REQUEST_BODY_SIZE,\n ATTR_HTTP_RESPONSE_BODY_SIZE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport { isNetworkSpan } from './types';\n\n/**\n * MXL's API expects network spans to have some specific attributes.\n * This processor checks if a span is a network span and adds them.\n */\nexport class MXLNetworkSpanProcessor implements SpanProcessor {\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n\n // the span before it is sent to the exporter. This processor should be updated to use that api once that is available\n public onEnd(span: ReadableSpan): void {\n if (isNetworkSpan(span)) {\n span.attributes[KEY_MXL_TYPE] = MXL_TYPES.Network;\n\n /*\n Fallback on deprecated attribute names in case the span is using those instead of the latest ones\n\n The current versions of @opentelemetry/instrumentation-xml-http-request and @opentelemetry/instrumentation-fetch\n that we're getting from @opentelemetry/auto-instrumentations-web are using these, once we update we'll remove\n this fallback and only support a single version of the semantic convention\n */\n span.attributes[ATTR_URL_FULL] ??= span.attributes[SEMATTRS_HTTP_URL];\n span.attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] ??=\n span.attributes[SEMATTRS_HTTP_STATUS_CODE];\n span.attributes[ATTR_HTTP_REQUEST_METHOD] ??=\n span.attributes[SEMATTRS_HTTP_METHOD];\n span.attributes[ATTR_HTTP_RESPONSE_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH];\n span.attributes[ATTR_HTTP_REQUEST_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH];\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,0BAAb,MAA8D;CAC5D,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAMnC,MAAa,MAA0B;AACrC,MAAIA,iDAAAA,cAAc,KAAK,EAAE;AACvB,QAAK,WAAWC,6BAAAA,gBAAAA;AAShB,QAAK,WAAWC,oCAAAA,mBAAmB,KAAK,WAAWC,oCAAAA;AACnD,QAAK,WAAWC,oCAAAA,oCACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,oCAAAA,8BACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,+CAAAA,kCACd,KAAK,WAAWC,oCAAAA;AAClB,QAAK,WAAWC,+CAAAA,iCACd,KAAK,WAAWC,oCAAAA;;;CAItB,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLNetworkSpanProcessor.js","names":[],"sources":["../../../src/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n ATTR_HTTP_REQUEST_BODY_SIZE,\n ATTR_HTTP_RESPONSE_BODY_SIZE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport { isNetworkSpan } from './types.ts';\n\n/**\n * MXL's API expects network spans to have some specific attributes.\n * This processor checks if a span is a network span and adds them.\n */\nexport class MXLNetworkSpanProcessor implements SpanProcessor {\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n\n // the span before it is sent to the exporter. This processor should be updated to use that api once that is available\n public onEnd(span: ReadableSpan): void {\n if (isNetworkSpan(span)) {\n span.attributes[KEY_MXL_TYPE] = MXL_TYPES.Network;\n\n /*\n Fallback on deprecated attribute names in case the span is using those instead of the latest ones\n\n The current versions of @opentelemetry/instrumentation-xml-http-request and @opentelemetry/instrumentation-fetch\n that we're getting from @opentelemetry/auto-instrumentations-web are using these, once we update we'll remove\n this fallback and only support a single version of the semantic convention\n */\n span.attributes[ATTR_URL_FULL] ??= span.attributes[SEMATTRS_HTTP_URL];\n span.attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] ??=\n span.attributes[SEMATTRS_HTTP_STATUS_CODE];\n span.attributes[ATTR_HTTP_REQUEST_METHOD] ??=\n span.attributes[SEMATTRS_HTTP_METHOD];\n span.attributes[ATTR_HTTP_RESPONSE_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH];\n span.attributes[ATTR_HTTP_REQUEST_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH];\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;;;AAuBA,IAAa,0BAAb,MAA8D;CAC5D,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAMnC,MAAa,MAA0B;AACrC,MAAI,cAAc,KAAK,EAAE;AACvB,QAAK,WAAW,gBAAA;AAShB,QAAK,WAAW,mBAAmB,KAAK,WAAW;AACnD,QAAK,WAAW,oCACd,KAAK,WAAW;AAClB,QAAK,WAAW,8BACd,KAAK,WAAW;AAClB,QAAK,WAAW,kCACd,KAAK,WAAW;AAClB,QAAK,WAAW,iCACd,KAAK,WAAW;;;CAItB,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"MXLNetworkSpanProcessor.js","names":[],"sources":["../../../src/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n ATTR_HTTP_REQUEST_BODY_SIZE,\n ATTR_HTTP_RESPONSE_BODY_SIZE,\n} from '@opentelemetry/semantic-conventions/incubating';\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport { isNetworkSpan } from './types';\n\n/**\n * MXL's API expects network spans to have some specific attributes.\n * This processor checks if a span is a network span and adds them.\n */\nexport class MXLNetworkSpanProcessor implements SpanProcessor {\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n\n // the span before it is sent to the exporter. This processor should be updated to use that api once that is available\n public onEnd(span: ReadableSpan): void {\n if (isNetworkSpan(span)) {\n span.attributes[KEY_MXL_TYPE] = MXL_TYPES.Network;\n\n /*\n Fallback on deprecated attribute names in case the span is using those instead of the latest ones\n\n The current versions of @opentelemetry/instrumentation-xml-http-request and @opentelemetry/instrumentation-fetch\n that we're getting from @opentelemetry/auto-instrumentations-web are using these, once we update we'll remove\n this fallback and only support a single version of the semantic convention\n */\n span.attributes[ATTR_URL_FULL] ??= span.attributes[SEMATTRS_HTTP_URL];\n span.attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] ??=\n span.attributes[SEMATTRS_HTTP_STATUS_CODE];\n span.attributes[ATTR_HTTP_REQUEST_METHOD] ??=\n span.attributes[SEMATTRS_HTTP_METHOD];\n span.attributes[ATTR_HTTP_RESPONSE_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH];\n span.attributes[ATTR_HTTP_REQUEST_BODY_SIZE] ??=\n span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH];\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;;;AAuBA,IAAa,0BAAb,MAA8D;CAC5D,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAMnC,MAAa,MAA0B;AACrC,MAAI,cAAc,KAAK,EAAE;AACvB,QAAK,WAAW,gBAAA;AAShB,QAAK,WAAW,mBAAmB,KAAK,WAAW;AACnD,QAAK,WAAW,oCACd,KAAK,WAAW;AAClB,QAAK,WAAW,8BACd,KAAK,WAAW;AAClB,QAAK,WAAW,kCACd,KAAK,WAAW;AAClB,QAAK,WAAW,iCACd,KAAK,WAAW;;;CAItB,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLSessionBatchedSpanProcessor.cjs","names":["KEY_MXL_TYPE","diag","BindOnceFuture","MXLSpanStorage","ExportResultCode"],"sources":["../../../src/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ExportResult } from '@opentelemetry/core';\nimport {\n BindOnceFuture,\n ExportResultCode,\n internal,\n} from '@opentelemetry/core';\nimport type {\n ReadableSpan,\n SpanExporter,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-web'; // TODO: don't rely on internal API\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport type { SessionSpan } from '../../instrumentations/index.ts';\nimport type {\n LimitManagerInternal,\n SpanSessionManagerInternal,\n} from '../../managers/index.ts';\nimport { MXLSpanStorage } from '../../utils/index.ts';\nimport type { MXLSessionBatchedSpanProcessorArgs } from './types.ts';\n\nconst isSessionSpan = (span: ReadableSpan | SessionSpan): span is SessionSpan =>\n span.attributes[KEY_MXL_TYPE] === MXL_TYPES.Session;\n\ntype ExportFailureReason = 'concurrent_limit' | 'fetch_error' | 'unknown';\n\nconst exportFailureAttributeKey = (\n reason: ExportFailureReason,\n session: 'current' | 'previous',\n) =>\n `mxl.${session === 'current' ? 'export_failed' : 'previous_export_failed'}.${reason}`;\n\nexport class MXLSessionBatchedSpanProcessor implements SpanProcessor {\n private readonly _shutdownOnce: BindOnceFuture<void>;\n private _pendingSpans: ReadableSpan[] = [];\n private readonly _exporter: SpanExporter;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _spanStorage: MXLSpanStorage;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private readonly _diag: DiagLogger;\n\n public constructor({\n resource,\n exporter,\n limitManager,\n spanSessionManager,\n storage = window.localStorage,\n storedSpansExpireTimeoutMS,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSessionBatchedSpanProcessor',\n }),\n }: MXLSessionBatchedSpanProcessorArgs) {\n this._diag = diagParam;\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._limitManager = limitManager;\n this._spanSessionManager = spanSessionManager;\n this._spanStorage = new MXLSpanStorage({\n resource,\n storage,\n diag: diagParam,\n onExpiredSpansExport: (spans: ReadableSpan[]) => {\n this._exportSpans(spans);\n },\n storedSpansExpireTimeoutMS,\n spanSessionManager,\n });\n }\n\n public forceFlush(): Promise<void> {\n this._diag.debug(\n 'forceFlush called for MXLSessionBatchedSpanProcessor. This is a no op',\n );\n return Promise.resolve(undefined);\n }\n\n public onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n this._diag.debug('span ended after processor shutdown. Ignoring span.');\n return;\n }\n\n if (!isSessionSpan(span)) {\n this._diag.debug(\n 'non-session span ended. Adding to pending spans queue.',\n );\n if (this._limitManager.dropReadableSpan(span)) {\n return;\n }\n this._pendingSpans.push(span);\n } else {\n this._diag.debug('session span ended. Exporting all pending spans.');\n this._exportSpans([span, ...this._pendingSpans]);\n this._pendingSpans = [];\n }\n }\n\n private _exportSpans(spans: ReadableSpan[]): void {\n internal\n ._export(this._exporter, spans)\n .then((result: ExportResult) => {\n if (result.code === ExportResultCode.FAILED) {\n const errorMessage = result.error?.message || 'unknown error';\n let failureReason: ExportFailureReason = 'unknown';\n\n if (errorMessage === 'Concurrent export limit reached') {\n failureReason = 'concurrent_limit';\n } else if (errorMessage === 'Fetch request errored') {\n failureReason = 'fetch_error';\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'previous'),\n );\n this._diag.error(`spans failed to export: ${errorMessage}`);\n }\n })\n // Seems like everything related to the export logic does a good job of catching and only ever resolving with\n // an ExportResult even on failure: https://github.com/open-telemetry/opentelemetry-js/blob/cf6dffeebcf72c42b2cb4d2bf2db720369b53081/packages/opentelemetry-core/src/internal/exporter.ts#L37\n // Keep this block just in case that assumption changes in a future version\n .catch((reason: unknown) => {\n let msg = 'unknown error';\n if (reason && reason instanceof Error) {\n msg = reason.message;\n } else if (typeof reason === 'string') {\n msg = reason;\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey('unknown', 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey('unknown', 'previous'),\n );\n this._diag.error(`spans failed to export: ${msg}`);\n });\n }\n\n public onStart(): void {\n // do nothing.\n }\n\n public getPendingSpansCount(): number {\n return this._pendingSpans.length;\n }\n\n public storePendingSpans(sessionId: string, sessionSpan: ReadableSpan): void {\n this._spanStorage.storePendingSpans(\n sessionId,\n sessionSpan,\n this._pendingSpans,\n );\n }\n\n public clearStoredSpans(sessionId: string): void {\n this._spanStorage.clearStoredSpans(sessionId);\n }\n\n public shutdown(): Promise<void> {\n return this._shutdownOnce.call();\n }\n\n private readonly _shutdown = () => {\n this._spanStorage.destroy();\n return this._exporter.shutdown();\n };\n}\n"],"mappings":";;;;;;;AAsBA,MAAM,iBAAiB,SACrB,KAAK,WAAWA,6BAAAA,kBAAAA;AAIlB,MAAM,6BACJ,QACA,YAEA,OAAO,YAAY,YAAY,kBAAkB,yBAAyB,GAAG;AAE/E,IAAa,iCAAb,MAAqE;CACnE;CACA,gBAAwC,EAAE;CAC1C;CACA;CACA;CACA;CACA;CAEA,YAAmB,EACjB,UACA,UACA,cACA,oBACA,UAAU,OAAO,cACjB,4BACA,MAAM,YAAYC,mBAAAA,KAAK,sBAAsB,EAC3C,WAAW,kCACZ,CAAC,IACmC;AACrC,OAAK,QAAQ;AACb,OAAK,YAAY;AACjB,OAAK,gBAAgB,IAAIC,oBAAAA,eAAe,KAAK,WAAW,KAAK;AAC7D,OAAK,gBAAgB;AACrB,OAAK,sBAAsB;AAC3B,OAAK,eAAe,IAAIC,4CAAAA,eAAe;GACrC;GACA;GACA,MAAM;GACN,uBAAuB,UAA0B;AAC/C,SAAK,aAAa,MAAM;;GAE1B;GACA;GACD,CAAC;;CAGJ,aAAmC;AACjC,OAAK,MAAM,MACT,wEACD;AACD,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,MAAa,MAA0B;AACrC,MAAI,KAAK,cAAc,UAAU;AAC/B,QAAK,MAAM,MAAM,sDAAsD;AACvE;;AAGF,MAAI,CAAC,cAAc,KAAK,EAAE;AACxB,QAAK,MAAM,MACT,yDACD;AACD,OAAI,KAAK,cAAc,iBAAiB,KAAK,CAC3C;AAEF,QAAK,cAAc,KAAK,KAAK;SACxB;AACL,QAAK,MAAM,MAAM,mDAAmD;AACpE,QAAK,aAAa,CAAC,MAAM,GAAG,KAAK,cAAc,CAAC;AAChD,QAAK,gBAAgB,EAAE;;;CAI3B,aAAqB,OAA6B;AAChD,sBAAA,SACG,QAAQ,KAAK,WAAW,MAAM,CAC9B,MAAM,WAAyB;AAC9B,OAAI,OAAO,SAASC,oBAAAA,iBAAiB,QAAQ;IAC3C,MAAM,eAAe,OAAO,OAAO,WAAW;IAC9C,IAAI,gBAAqC;AAEzC,QAAI,iBAAiB,kCACnB,iBAAgB;aACP,iBAAiB,wBAC1B,iBAAgB;AAGlB,SAAK,oBAAoB,uBACvB,0BAA0B,eAAe,UAAU,CACpD;AACD,SAAK,oBAAoB,2BACvB,0BAA0B,eAAe,WAAW,CACrD;AACD,SAAK,MAAM,MAAM,2BAA2B,eAAe;;IAE7D,CAID,OAAO,WAAoB;GAC1B,IAAI,MAAM;AACV,OAAI,UAAU,kBAAkB,MAC9B,OAAM,OAAO;YACJ,OAAO,WAAW,SAC3B,OAAM;AAGR,QAAK,oBAAoB,uBACvB,0BAA0B,WAAW,UAAU,CAChD;AACD,QAAK,oBAAoB,2BACvB,0BAA0B,WAAW,WAAW,CACjD;AACD,QAAK,MAAM,MAAM,2BAA2B,MAAM;IAClD;;CAGN,UAAuB;CAIvB,uBAAsC;AACpC,SAAO,KAAK,cAAc;;CAG5B,kBAAyB,WAAmB,aAAiC;AAC3E,OAAK,aAAa,kBAChB,WACA,aACA,KAAK,cACN;;CAGH,iBAAwB,WAAyB;AAC/C,OAAK,aAAa,iBAAiB,UAAU;;CAG/C,WAAiC;AAC/B,SAAO,KAAK,cAAc,MAAM;;CAGlC,kBAAmC;AACjC,OAAK,aAAa,SAAS;AAC3B,SAAO,KAAK,UAAU,UAAU"}
1
+ {"version":3,"file":"MXLSessionBatchedSpanProcessor.cjs","names":["KEY_MXL_TYPE","diag","BindOnceFuture","MXLSpanStorage","ExportResultCode"],"sources":["../../../src/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ExportResult } from '@opentelemetry/core';\nimport {\n BindOnceFuture,\n ExportResultCode,\n internal,\n} from '@opentelemetry/core';\nimport type {\n ReadableSpan,\n SpanExporter,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-web'; // TODO: don't rely on internal API\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport type { SessionSpan } from '../../instrumentations';\nimport type {\n LimitManagerInternal,\n SpanSessionManagerInternal,\n} from '../../managers';\nimport { MXLSpanStorage } from '../../utils';\nimport type { MXLSessionBatchedSpanProcessorArgs } from './types';\n\nconst isSessionSpan = (span: ReadableSpan | SessionSpan): span is SessionSpan =>\n span.attributes[KEY_MXL_TYPE] === MXL_TYPES.Session;\n\ntype ExportFailureReason = 'concurrent_limit' | 'fetch_error' | 'unknown';\n\nconst exportFailureAttributeKey = (\n reason: ExportFailureReason,\n session: 'current' | 'previous',\n) =>\n `mxl.${session === 'current' ? 'export_failed' : 'previous_export_failed'}.${reason}`;\n\nexport class MXLSessionBatchedSpanProcessor implements SpanProcessor {\n private readonly _shutdownOnce: BindOnceFuture<void>;\n private _pendingSpans: ReadableSpan[] = [];\n private readonly _exporter: SpanExporter;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _spanStorage: MXLSpanStorage;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private readonly _diag: DiagLogger;\n\n public constructor({\n resource,\n exporter,\n limitManager,\n spanSessionManager,\n storage = window.localStorage,\n storedSpansExpireTimeoutMS,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSessionBatchedSpanProcessor',\n }),\n }: MXLSessionBatchedSpanProcessorArgs) {\n this._diag = diagParam;\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._limitManager = limitManager;\n this._spanSessionManager = spanSessionManager;\n this._spanStorage = new MXLSpanStorage({\n resource,\n storage,\n diag: diagParam,\n onExpiredSpansExport: (spans: ReadableSpan[]) => {\n this._exportSpans(spans);\n },\n storedSpansExpireTimeoutMS,\n spanSessionManager,\n });\n }\n\n public forceFlush(): Promise<void> {\n this._diag.debug(\n 'forceFlush called for MXLSessionBatchedSpanProcessor. This is a no op',\n );\n return Promise.resolve(undefined);\n }\n\n public onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n this._diag.debug('span ended after processor shutdown. Ignoring span.');\n return;\n }\n\n if (!isSessionSpan(span)) {\n this._diag.debug(\n 'non-session span ended. Adding to pending spans queue.',\n );\n if (this._limitManager.dropReadableSpan(span)) {\n return;\n }\n this._pendingSpans.push(span);\n } else {\n this._diag.debug('session span ended. Exporting all pending spans.');\n this._exportSpans([span, ...this._pendingSpans]);\n this._pendingSpans = [];\n }\n }\n\n private _exportSpans(spans: ReadableSpan[]): void {\n internal\n ._export(this._exporter, spans)\n .then((result: ExportResult) => {\n if (result.code === ExportResultCode.FAILED) {\n const errorMessage = result.error?.message || 'unknown error';\n let failureReason: ExportFailureReason = 'unknown';\n\n if (errorMessage === 'Concurrent export limit reached') {\n failureReason = 'concurrent_limit';\n } else if (errorMessage === 'Fetch request errored') {\n failureReason = 'fetch_error';\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'previous'),\n );\n this._diag.error(`spans failed to export: ${errorMessage}`);\n }\n })\n // Seems like everything related to the export logic does a good job of catching and only ever resolving with\n // an ExportResult even on failure: https://github.com/open-telemetry/opentelemetry-js/blob/cf6dffeebcf72c42b2cb4d2bf2db720369b53081/packages/opentelemetry-core/src/internal/exporter.ts#L37\n // Keep this block just in case that assumption changes in a future version\n .catch((reason: unknown) => {\n let msg = 'unknown error';\n if (reason && reason instanceof Error) {\n msg = reason.message;\n } else if (typeof reason === 'string') {\n msg = reason;\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey('unknown', 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey('unknown', 'previous'),\n );\n this._diag.error(`spans failed to export: ${msg}`);\n });\n }\n\n public onStart(): void {\n // do nothing.\n }\n\n public getPendingSpansCount(): number {\n return this._pendingSpans.length;\n }\n\n public storePendingSpans(sessionId: string, sessionSpan: ReadableSpan): void {\n this._spanStorage.storePendingSpans(\n sessionId,\n sessionSpan,\n this._pendingSpans,\n );\n }\n\n public clearStoredSpans(sessionId: string): void {\n this._spanStorage.clearStoredSpans(sessionId);\n }\n\n public shutdown(): Promise<void> {\n return this._shutdownOnce.call();\n }\n\n private readonly _shutdown = () => {\n this._spanStorage.destroy();\n return this._exporter.shutdown();\n };\n}\n"],"mappings":";;;;;;;AAsBA,MAAM,iBAAiB,SACrB,KAAK,WAAWA,6BAAAA,kBAAAA;AAIlB,MAAM,6BACJ,QACA,YAEA,OAAO,YAAY,YAAY,kBAAkB,yBAAyB,GAAG;AAE/E,IAAa,iCAAb,MAAqE;CACnE;CACA,gBAAwC,EAAE;CAC1C;CACA;CACA;CACA;CACA;CAEA,YAAmB,EACjB,UACA,UACA,cACA,oBACA,UAAU,OAAO,cACjB,4BACA,MAAM,YAAYC,mBAAAA,KAAK,sBAAsB,EAC3C,WAAW,kCACZ,CAAC,IACmC;AACrC,OAAK,QAAQ;AACb,OAAK,YAAY;AACjB,OAAK,gBAAgB,IAAIC,oBAAAA,eAAe,KAAK,WAAW,KAAK;AAC7D,OAAK,gBAAgB;AACrB,OAAK,sBAAsB;AAC3B,OAAK,eAAe,IAAIC,4CAAAA,eAAe;GACrC;GACA;GACA,MAAM;GACN,uBAAuB,UAA0B;AAC/C,SAAK,aAAa,MAAM;;GAE1B;GACA;GACD,CAAC;;CAGJ,aAAmC;AACjC,OAAK,MAAM,MACT,wEACD;AACD,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,MAAa,MAA0B;AACrC,MAAI,KAAK,cAAc,UAAU;AAC/B,QAAK,MAAM,MAAM,sDAAsD;AACvE;;AAGF,MAAI,CAAC,cAAc,KAAK,EAAE;AACxB,QAAK,MAAM,MACT,yDACD;AACD,OAAI,KAAK,cAAc,iBAAiB,KAAK,CAC3C;AAEF,QAAK,cAAc,KAAK,KAAK;SACxB;AACL,QAAK,MAAM,MAAM,mDAAmD;AACpE,QAAK,aAAa,CAAC,MAAM,GAAG,KAAK,cAAc,CAAC;AAChD,QAAK,gBAAgB,EAAE;;;CAI3B,aAAqB,OAA6B;AAChD,sBAAA,SACG,QAAQ,KAAK,WAAW,MAAM,CAC9B,MAAM,WAAyB;AAC9B,OAAI,OAAO,SAASC,oBAAAA,iBAAiB,QAAQ;IAC3C,MAAM,eAAe,OAAO,OAAO,WAAW;IAC9C,IAAI,gBAAqC;AAEzC,QAAI,iBAAiB,kCACnB,iBAAgB;aACP,iBAAiB,wBAC1B,iBAAgB;AAGlB,SAAK,oBAAoB,uBACvB,0BAA0B,eAAe,UAAU,CACpD;AACD,SAAK,oBAAoB,2BACvB,0BAA0B,eAAe,WAAW,CACrD;AACD,SAAK,MAAM,MAAM,2BAA2B,eAAe;;IAE7D,CAID,OAAO,WAAoB;GAC1B,IAAI,MAAM;AACV,OAAI,UAAU,kBAAkB,MAC9B,OAAM,OAAO;YACJ,OAAO,WAAW,SAC3B,OAAM;AAGR,QAAK,oBAAoB,uBACvB,0BAA0B,WAAW,UAAU,CAChD;AACD,QAAK,oBAAoB,2BACvB,0BAA0B,WAAW,WAAW,CACjD;AACD,QAAK,MAAM,MAAM,2BAA2B,MAAM;IAClD;;CAGN,UAAuB;CAIvB,uBAAsC;AACpC,SAAO,KAAK,cAAc;;CAG5B,kBAAyB,WAAmB,aAAiC;AAC3E,OAAK,aAAa,kBAChB,WACA,aACA,KAAK,cACN;;CAGH,iBAAwB,WAAyB;AAC/C,OAAK,aAAa,iBAAiB,UAAU;;CAG/C,WAAiC;AAC/B,SAAO,KAAK,cAAc,MAAM;;CAGlC,kBAAmC;AACjC,OAAK,aAAa,SAAS;AAC3B,SAAO,KAAK,UAAU,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLSessionBatchedSpanProcessor.js","names":[],"sources":["../../../src/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ExportResult } from '@opentelemetry/core';\nimport {\n BindOnceFuture,\n ExportResultCode,\n internal,\n} from '@opentelemetry/core';\nimport type {\n ReadableSpan,\n SpanExporter,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-web'; // TODO: don't rely on internal API\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants/index.ts';\nimport type { SessionSpan } from '../../instrumentations/index.ts';\nimport type {\n LimitManagerInternal,\n SpanSessionManagerInternal,\n} from '../../managers/index.ts';\nimport { MXLSpanStorage } from '../../utils/index.ts';\nimport type { MXLSessionBatchedSpanProcessorArgs } from './types.ts';\n\nconst isSessionSpan = (span: ReadableSpan | SessionSpan): span is SessionSpan =>\n span.attributes[KEY_MXL_TYPE] === MXL_TYPES.Session;\n\ntype ExportFailureReason = 'concurrent_limit' | 'fetch_error' | 'unknown';\n\nconst exportFailureAttributeKey = (\n reason: ExportFailureReason,\n session: 'current' | 'previous',\n) =>\n `mxl.${session === 'current' ? 'export_failed' : 'previous_export_failed'}.${reason}`;\n\nexport class MXLSessionBatchedSpanProcessor implements SpanProcessor {\n private readonly _shutdownOnce: BindOnceFuture<void>;\n private _pendingSpans: ReadableSpan[] = [];\n private readonly _exporter: SpanExporter;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _spanStorage: MXLSpanStorage;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private readonly _diag: DiagLogger;\n\n public constructor({\n resource,\n exporter,\n limitManager,\n spanSessionManager,\n storage = window.localStorage,\n storedSpansExpireTimeoutMS,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSessionBatchedSpanProcessor',\n }),\n }: MXLSessionBatchedSpanProcessorArgs) {\n this._diag = diagParam;\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._limitManager = limitManager;\n this._spanSessionManager = spanSessionManager;\n this._spanStorage = new MXLSpanStorage({\n resource,\n storage,\n diag: diagParam,\n onExpiredSpansExport: (spans: ReadableSpan[]) => {\n this._exportSpans(spans);\n },\n storedSpansExpireTimeoutMS,\n spanSessionManager,\n });\n }\n\n public forceFlush(): Promise<void> {\n this._diag.debug(\n 'forceFlush called for MXLSessionBatchedSpanProcessor. This is a no op',\n );\n return Promise.resolve(undefined);\n }\n\n public onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n this._diag.debug('span ended after processor shutdown. Ignoring span.');\n return;\n }\n\n if (!isSessionSpan(span)) {\n this._diag.debug(\n 'non-session span ended. Adding to pending spans queue.',\n );\n if (this._limitManager.dropReadableSpan(span)) {\n return;\n }\n this._pendingSpans.push(span);\n } else {\n this._diag.debug('session span ended. Exporting all pending spans.');\n this._exportSpans([span, ...this._pendingSpans]);\n this._pendingSpans = [];\n }\n }\n\n private _exportSpans(spans: ReadableSpan[]): void {\n internal\n ._export(this._exporter, spans)\n .then((result: ExportResult) => {\n if (result.code === ExportResultCode.FAILED) {\n const errorMessage = result.error?.message || 'unknown error';\n let failureReason: ExportFailureReason = 'unknown';\n\n if (errorMessage === 'Concurrent export limit reached') {\n failureReason = 'concurrent_limit';\n } else if (errorMessage === 'Fetch request errored') {\n failureReason = 'fetch_error';\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'previous'),\n );\n this._diag.error(`spans failed to export: ${errorMessage}`);\n }\n })\n // Seems like everything related to the export logic does a good job of catching and only ever resolving with\n // an ExportResult even on failure: https://github.com/open-telemetry/opentelemetry-js/blob/cf6dffeebcf72c42b2cb4d2bf2db720369b53081/packages/opentelemetry-core/src/internal/exporter.ts#L37\n // Keep this block just in case that assumption changes in a future version\n .catch((reason: unknown) => {\n let msg = 'unknown error';\n if (reason && reason instanceof Error) {\n msg = reason.message;\n } else if (typeof reason === 'string') {\n msg = reason;\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey('unknown', 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey('unknown', 'previous'),\n );\n this._diag.error(`spans failed to export: ${msg}`);\n });\n }\n\n public onStart(): void {\n // do nothing.\n }\n\n public getPendingSpansCount(): number {\n return this._pendingSpans.length;\n }\n\n public storePendingSpans(sessionId: string, sessionSpan: ReadableSpan): void {\n this._spanStorage.storePendingSpans(\n sessionId,\n sessionSpan,\n this._pendingSpans,\n );\n }\n\n public clearStoredSpans(sessionId: string): void {\n this._spanStorage.clearStoredSpans(sessionId);\n }\n\n public shutdown(): Promise<void> {\n return this._shutdownOnce.call();\n }\n\n private readonly _shutdown = () => {\n this._spanStorage.destroy();\n return this._exporter.shutdown();\n };\n}\n"],"mappings":";;;;;AAsBA,MAAM,iBAAiB,SACrB,KAAK,WAAW,kBAAA;AAIlB,MAAM,6BACJ,QACA,YAEA,OAAO,YAAY,YAAY,kBAAkB,yBAAyB,GAAG;AAE/E,IAAa,iCAAb,MAAqE;CACnE;CACA,gBAAwC,EAAE;CAC1C;CACA;CACA;CACA;CACA;CAEA,YAAmB,EACjB,UACA,UACA,cACA,oBACA,UAAU,OAAO,cACjB,4BACA,MAAM,YAAY,KAAK,sBAAsB,EAC3C,WAAW,kCACZ,CAAC,IACmC;AACrC,OAAK,QAAQ;AACb,OAAK,YAAY;AACjB,OAAK,gBAAgB,IAAI,eAAe,KAAK,WAAW,KAAK;AAC7D,OAAK,gBAAgB;AACrB,OAAK,sBAAsB;AAC3B,OAAK,eAAe,IAAI,eAAe;GACrC;GACA;GACA,MAAM;GACN,uBAAuB,UAA0B;AAC/C,SAAK,aAAa,MAAM;;GAE1B;GACA;GACD,CAAC;;CAGJ,aAAmC;AACjC,OAAK,MAAM,MACT,wEACD;AACD,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,MAAa,MAA0B;AACrC,MAAI,KAAK,cAAc,UAAU;AAC/B,QAAK,MAAM,MAAM,sDAAsD;AACvE;;AAGF,MAAI,CAAC,cAAc,KAAK,EAAE;AACxB,QAAK,MAAM,MACT,yDACD;AACD,OAAI,KAAK,cAAc,iBAAiB,KAAK,CAC3C;AAEF,QAAK,cAAc,KAAK,KAAK;SACxB;AACL,QAAK,MAAM,MAAM,mDAAmD;AACpE,QAAK,aAAa,CAAC,MAAM,GAAG,KAAK,cAAc,CAAC;AAChD,QAAK,gBAAgB,EAAE;;;CAI3B,aAAqB,OAA6B;AAChD,WACG,QAAQ,KAAK,WAAW,MAAM,CAC9B,MAAM,WAAyB;AAC9B,OAAI,OAAO,SAAS,iBAAiB,QAAQ;IAC3C,MAAM,eAAe,OAAO,OAAO,WAAW;IAC9C,IAAI,gBAAqC;AAEzC,QAAI,iBAAiB,kCACnB,iBAAgB;aACP,iBAAiB,wBAC1B,iBAAgB;AAGlB,SAAK,oBAAoB,uBACvB,0BAA0B,eAAe,UAAU,CACpD;AACD,SAAK,oBAAoB,2BACvB,0BAA0B,eAAe,WAAW,CACrD;AACD,SAAK,MAAM,MAAM,2BAA2B,eAAe;;IAE7D,CAID,OAAO,WAAoB;GAC1B,IAAI,MAAM;AACV,OAAI,UAAU,kBAAkB,MAC9B,OAAM,OAAO;YACJ,OAAO,WAAW,SAC3B,OAAM;AAGR,QAAK,oBAAoB,uBACvB,0BAA0B,WAAW,UAAU,CAChD;AACD,QAAK,oBAAoB,2BACvB,0BAA0B,WAAW,WAAW,CACjD;AACD,QAAK,MAAM,MAAM,2BAA2B,MAAM;IAClD;;CAGN,UAAuB;CAIvB,uBAAsC;AACpC,SAAO,KAAK,cAAc;;CAG5B,kBAAyB,WAAmB,aAAiC;AAC3E,OAAK,aAAa,kBAChB,WACA,aACA,KAAK,cACN;;CAGH,iBAAwB,WAAyB;AAC/C,OAAK,aAAa,iBAAiB,UAAU;;CAG/C,WAAiC;AAC/B,SAAO,KAAK,cAAc,MAAM;;CAGlC,kBAAmC;AACjC,OAAK,aAAa,SAAS;AAC3B,SAAO,KAAK,UAAU,UAAU"}
1
+ {"version":3,"file":"MXLSessionBatchedSpanProcessor.js","names":[],"sources":["../../../src/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ExportResult } from '@opentelemetry/core';\nimport {\n BindOnceFuture,\n ExportResultCode,\n internal,\n} from '@opentelemetry/core';\nimport type {\n ReadableSpan,\n SpanExporter,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-web'; // TODO: don't rely on internal API\nimport { KEY_MXL_TYPE, MXL_TYPES } from '../../constants';\nimport type { SessionSpan } from '../../instrumentations';\nimport type {\n LimitManagerInternal,\n SpanSessionManagerInternal,\n} from '../../managers';\nimport { MXLSpanStorage } from '../../utils';\nimport type { MXLSessionBatchedSpanProcessorArgs } from './types';\n\nconst isSessionSpan = (span: ReadableSpan | SessionSpan): span is SessionSpan =>\n span.attributes[KEY_MXL_TYPE] === MXL_TYPES.Session;\n\ntype ExportFailureReason = 'concurrent_limit' | 'fetch_error' | 'unknown';\n\nconst exportFailureAttributeKey = (\n reason: ExportFailureReason,\n session: 'current' | 'previous',\n) =>\n `mxl.${session === 'current' ? 'export_failed' : 'previous_export_failed'}.${reason}`;\n\nexport class MXLSessionBatchedSpanProcessor implements SpanProcessor {\n private readonly _shutdownOnce: BindOnceFuture<void>;\n private _pendingSpans: ReadableSpan[] = [];\n private readonly _exporter: SpanExporter;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _spanStorage: MXLSpanStorage;\n private readonly _spanSessionManager: SpanSessionManagerInternal;\n private readonly _diag: DiagLogger;\n\n public constructor({\n resource,\n exporter,\n limitManager,\n spanSessionManager,\n storage = window.localStorage,\n storedSpansExpireTimeoutMS,\n diag: diagParam = diag.createComponentLogger({\n namespace: 'MXLSessionBatchedSpanProcessor',\n }),\n }: MXLSessionBatchedSpanProcessorArgs) {\n this._diag = diagParam;\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._limitManager = limitManager;\n this._spanSessionManager = spanSessionManager;\n this._spanStorage = new MXLSpanStorage({\n resource,\n storage,\n diag: diagParam,\n onExpiredSpansExport: (spans: ReadableSpan[]) => {\n this._exportSpans(spans);\n },\n storedSpansExpireTimeoutMS,\n spanSessionManager,\n });\n }\n\n public forceFlush(): Promise<void> {\n this._diag.debug(\n 'forceFlush called for MXLSessionBatchedSpanProcessor. This is a no op',\n );\n return Promise.resolve(undefined);\n }\n\n public onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n this._diag.debug('span ended after processor shutdown. Ignoring span.');\n return;\n }\n\n if (!isSessionSpan(span)) {\n this._diag.debug(\n 'non-session span ended. Adding to pending spans queue.',\n );\n if (this._limitManager.dropReadableSpan(span)) {\n return;\n }\n this._pendingSpans.push(span);\n } else {\n this._diag.debug('session span ended. Exporting all pending spans.');\n this._exportSpans([span, ...this._pendingSpans]);\n this._pendingSpans = [];\n }\n }\n\n private _exportSpans(spans: ReadableSpan[]): void {\n internal\n ._export(this._exporter, spans)\n .then((result: ExportResult) => {\n if (result.code === ExportResultCode.FAILED) {\n const errorMessage = result.error?.message || 'unknown error';\n let failureReason: ExportFailureReason = 'unknown';\n\n if (errorMessage === 'Concurrent export limit reached') {\n failureReason = 'concurrent_limit';\n } else if (errorMessage === 'Fetch request errored') {\n failureReason = 'fetch_error';\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey(failureReason, 'previous'),\n );\n this._diag.error(`spans failed to export: ${errorMessage}`);\n }\n })\n // Seems like everything related to the export logic does a good job of catching and only ever resolving with\n // an ExportResult even on failure: https://github.com/open-telemetry/opentelemetry-js/blob/cf6dffeebcf72c42b2cb4d2bf2db720369b53081/packages/opentelemetry-core/src/internal/exporter.ts#L37\n // Keep this block just in case that assumption changes in a future version\n .catch((reason: unknown) => {\n let msg = 'unknown error';\n if (reason && reason instanceof Error) {\n msg = reason.message;\n } else if (typeof reason === 'string') {\n msg = reason;\n }\n\n this._spanSessionManager.incrSessionCountForKey(\n exportFailureAttributeKey('unknown', 'current'),\n );\n this._spanSessionManager.incrNextSessionCountForKey(\n exportFailureAttributeKey('unknown', 'previous'),\n );\n this._diag.error(`spans failed to export: ${msg}`);\n });\n }\n\n public onStart(): void {\n // do nothing.\n }\n\n public getPendingSpansCount(): number {\n return this._pendingSpans.length;\n }\n\n public storePendingSpans(sessionId: string, sessionSpan: ReadableSpan): void {\n this._spanStorage.storePendingSpans(\n sessionId,\n sessionSpan,\n this._pendingSpans,\n );\n }\n\n public clearStoredSpans(sessionId: string): void {\n this._spanStorage.clearStoredSpans(sessionId);\n }\n\n public shutdown(): Promise<void> {\n return this._shutdownOnce.call();\n }\n\n private readonly _shutdown = () => {\n this._spanStorage.destroy();\n return this._exporter.shutdown();\n };\n}\n"],"mappings":";;;;;AAsBA,MAAM,iBAAiB,SACrB,KAAK,WAAW,kBAAA;AAIlB,MAAM,6BACJ,QACA,YAEA,OAAO,YAAY,YAAY,kBAAkB,yBAAyB,GAAG;AAE/E,IAAa,iCAAb,MAAqE;CACnE;CACA,gBAAwC,EAAE;CAC1C;CACA;CACA;CACA;CACA;CAEA,YAAmB,EACjB,UACA,UACA,cACA,oBACA,UAAU,OAAO,cACjB,4BACA,MAAM,YAAY,KAAK,sBAAsB,EAC3C,WAAW,kCACZ,CAAC,IACmC;AACrC,OAAK,QAAQ;AACb,OAAK,YAAY;AACjB,OAAK,gBAAgB,IAAI,eAAe,KAAK,WAAW,KAAK;AAC7D,OAAK,gBAAgB;AACrB,OAAK,sBAAsB;AAC3B,OAAK,eAAe,IAAI,eAAe;GACrC;GACA;GACA,MAAM;GACN,uBAAuB,UAA0B;AAC/C,SAAK,aAAa,MAAM;;GAE1B;GACA;GACD,CAAC;;CAGJ,aAAmC;AACjC,OAAK,MAAM,MACT,wEACD;AACD,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,MAAa,MAA0B;AACrC,MAAI,KAAK,cAAc,UAAU;AAC/B,QAAK,MAAM,MAAM,sDAAsD;AACvE;;AAGF,MAAI,CAAC,cAAc,KAAK,EAAE;AACxB,QAAK,MAAM,MACT,yDACD;AACD,OAAI,KAAK,cAAc,iBAAiB,KAAK,CAC3C;AAEF,QAAK,cAAc,KAAK,KAAK;SACxB;AACL,QAAK,MAAM,MAAM,mDAAmD;AACpE,QAAK,aAAa,CAAC,MAAM,GAAG,KAAK,cAAc,CAAC;AAChD,QAAK,gBAAgB,EAAE;;;CAI3B,aAAqB,OAA6B;AAChD,WACG,QAAQ,KAAK,WAAW,MAAM,CAC9B,MAAM,WAAyB;AAC9B,OAAI,OAAO,SAAS,iBAAiB,QAAQ;IAC3C,MAAM,eAAe,OAAO,OAAO,WAAW;IAC9C,IAAI,gBAAqC;AAEzC,QAAI,iBAAiB,kCACnB,iBAAgB;aACP,iBAAiB,wBAC1B,iBAAgB;AAGlB,SAAK,oBAAoB,uBACvB,0BAA0B,eAAe,UAAU,CACpD;AACD,SAAK,oBAAoB,2BACvB,0BAA0B,eAAe,WAAW,CACrD;AACD,SAAK,MAAM,MAAM,2BAA2B,eAAe;;IAE7D,CAID,OAAO,WAAoB;GAC1B,IAAI,MAAM;AACV,OAAI,UAAU,kBAAkB,MAC9B,OAAM,OAAO;YACJ,OAAO,WAAW,SAC3B,OAAM;AAGR,QAAK,oBAAoB,uBACvB,0BAA0B,WAAW,UAAU,CAChD;AACD,QAAK,oBAAoB,2BACvB,0BAA0B,WAAW,WAAW,CACjD;AACD,QAAK,MAAM,MAAM,2BAA2B,MAAM;IAClD;;CAGN,UAAuB;CAIvB,uBAAsC;AACpC,SAAO,KAAK,cAAc;;CAG5B,kBAAyB,WAAmB,aAAiC;AAC3E,OAAK,aAAa,kBAChB,WACA,aACA,KAAK,cACN;;CAGH,iBAAwB,WAAyB;AAC/C,OAAK,aAAa,iBAAiB,UAAU;;CAG/C,WAAiC;AAC/B,SAAO,KAAK,cAAc,MAAM;;CAGlC,kBAAmC;AACjC,OAAK,aAAa,SAAS;AAC3B,SAAO,KAAK,UAAU,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageLogRecordProcessor.cjs","names":["KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL"],"sources":["../../../src/processors/PageLogRecordProcessor/PageLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { PageManager } from '../../api-page/index.ts';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants/index.ts';\nimport type { PageLogRecordProcessorArgs } from './types.ts';\n\nexport class PageLogRecordProcessor implements LogRecordProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageLogRecordProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord): void {\n // If the log already has page attributes, do not override them\n if (\n !logRecord.attributes[KEY_MXL_PAGE_PATH] ||\n !logRecord.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n\n if (currentRoute) {\n logRecord.setAttribute(KEY_MXL_PAGE_PATH, currentRoute.path);\n logRecord.setAttribute(\n KEY_MXL_PAGE_ID,\n this._pageManager.getCurrentPageId(),\n );\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !logRecord.attributes[KEY_APP_SURFACE_LABEL]) {\n logRecord.setAttribute(KEY_APP_SURFACE_LABEL, appSurfaceLabel);\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AASA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAA+B;AAE3C,MACE,CAAC,UAAU,WAAA,uBACX,CAAC,UAAU,WAAA,mBACX;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;AAExD,OAAI,cAAc;AAChB,cAAU,aAAaA,6BAAAA,mBAAmB,aAAa,KAAK;AAC5D,cAAU,aACRC,6BAAAA,iBACA,KAAK,aAAa,kBAAkB,CACrC;;;EAIL,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,UAAU,WAAA,qBAChC,WAAU,aAAaC,6BAAAA,uBAAuB,gBAAgB;;CAKlE,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"PageLogRecordProcessor.cjs","names":["KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL"],"sources":["../../../src/processors/PageLogRecordProcessor/PageLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { PageManager } from '../../api-page';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants';\nimport type { PageLogRecordProcessorArgs } from './types';\n\nexport class PageLogRecordProcessor implements LogRecordProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageLogRecordProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord): void {\n // If the log already has page attributes, do not override them\n if (\n !logRecord.attributes[KEY_MXL_PAGE_PATH] ||\n !logRecord.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n\n if (currentRoute) {\n logRecord.setAttribute(KEY_MXL_PAGE_PATH, currentRoute.path);\n logRecord.setAttribute(\n KEY_MXL_PAGE_ID,\n this._pageManager.getCurrentPageId(),\n );\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !logRecord.attributes[KEY_APP_SURFACE_LABEL]) {\n logRecord.setAttribute(KEY_APP_SURFACE_LABEL, appSurfaceLabel);\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AASA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAA+B;AAE3C,MACE,CAAC,UAAU,WAAA,uBACX,CAAC,UAAU,WAAA,mBACX;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;AAExD,OAAI,cAAc;AAChB,cAAU,aAAaA,6BAAAA,mBAAmB,aAAa,KAAK;AAC5D,cAAU,aACRC,6BAAAA,iBACA,KAAK,aAAa,kBAAkB,CACrC;;;EAIL,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,UAAU,WAAA,qBAChC,WAAU,aAAaC,6BAAAA,uBAAuB,gBAAgB;;CAKlE,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageLogRecordProcessor.js","names":[],"sources":["../../../src/processors/PageLogRecordProcessor/PageLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { PageManager } from '../../api-page/index.ts';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants/index.ts';\nimport type { PageLogRecordProcessorArgs } from './types.ts';\n\nexport class PageLogRecordProcessor implements LogRecordProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageLogRecordProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord): void {\n // If the log already has page attributes, do not override them\n if (\n !logRecord.attributes[KEY_MXL_PAGE_PATH] ||\n !logRecord.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n\n if (currentRoute) {\n logRecord.setAttribute(KEY_MXL_PAGE_PATH, currentRoute.path);\n logRecord.setAttribute(\n KEY_MXL_PAGE_ID,\n this._pageManager.getCurrentPageId(),\n );\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !logRecord.attributes[KEY_APP_SURFACE_LABEL]) {\n logRecord.setAttribute(KEY_APP_SURFACE_LABEL, appSurfaceLabel);\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AASA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAA+B;AAE3C,MACE,CAAC,UAAU,WAAA,uBACX,CAAC,UAAU,WAAA,mBACX;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;AAExD,OAAI,cAAc;AAChB,cAAU,aAAa,mBAAmB,aAAa,KAAK;AAC5D,cAAU,aACR,iBACA,KAAK,aAAa,kBAAkB,CACrC;;;EAIL,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,UAAU,WAAA,qBAChC,WAAU,aAAa,uBAAuB,gBAAgB;;CAKlE,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"PageLogRecordProcessor.js","names":[],"sources":["../../../src/processors/PageLogRecordProcessor/PageLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport type { PageManager } from '../../api-page';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants';\nimport type { PageLogRecordProcessorArgs } from './types';\n\nexport class PageLogRecordProcessor implements LogRecordProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageLogRecordProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord): void {\n // If the log already has page attributes, do not override them\n if (\n !logRecord.attributes[KEY_MXL_PAGE_PATH] ||\n !logRecord.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n\n if (currentRoute) {\n logRecord.setAttribute(KEY_MXL_PAGE_PATH, currentRoute.path);\n logRecord.setAttribute(\n KEY_MXL_PAGE_ID,\n this._pageManager.getCurrentPageId(),\n );\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !logRecord.attributes[KEY_APP_SURFACE_LABEL]) {\n logRecord.setAttribute(KEY_APP_SURFACE_LABEL, appSurfaceLabel);\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AASA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAA+B;AAE3C,MACE,CAAC,UAAU,WAAA,uBACX,CAAC,UAAU,WAAA,mBACX;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;AAExD,OAAI,cAAc;AAChB,cAAU,aAAa,mBAAmB,aAAa,KAAK;AAC5D,cAAU,aACR,iBACA,KAAK,aAAa,kBAAkB,CACrC;;;EAIL,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,UAAU,WAAA,qBAChC,WAAU,aAAa,uBAAuB,gBAAgB;;CAKlE,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageSpanProcessor.cjs","names":["KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL"],"sources":["../../../src/processors/PageSpanProcessor/PageSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { PageManager } from '../../api-page/index.ts';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants/index.ts';\nimport type { PageSpanProcessorArgs } from './types.ts';\n\nexport class PageSpanProcessor implements SpanProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageSpanProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // Attach page attributes at span end to capture the page where the span completed\n public onEnd(span: ReadableSpan): void {\n // If the span already has page attributes, do not override them\n if (\n !span.attributes[KEY_MXL_PAGE_PATH] ||\n !span.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n\n if (currentRoute && currentPageId) {\n span.attributes[KEY_MXL_PAGE_PATH] = currentRoute.path;\n span.attributes[KEY_MXL_PAGE_ID] = currentPageId;\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !span.attributes[KEY_APP_SURFACE_LABEL]) {\n span.attributes[KEY_APP_SURFACE_LABEL] = appSurfaceLabel;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AASA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AAErC,MACE,CAAC,KAAK,WAAA,uBACN,CAAC,KAAK,WAAA,mBACN;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;GACxD,MAAM,gBAAgB,KAAK,aAAa,kBAAkB;AAE1D,OAAI,gBAAgB,eAAe;AACjC,SAAK,WAAWA,6BAAAA,qBAAqB,aAAa;AAClD,SAAK,WAAWC,6BAAAA,mBAAmB;;;EAIvC,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,KAAK,WAAA,qBAC3B,MAAK,WAAWC,6BAAAA,yBAAyB;;CAI7C,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"PageSpanProcessor.cjs","names":["KEY_MXL_PAGE_PATH","KEY_MXL_PAGE_ID","KEY_APP_SURFACE_LABEL"],"sources":["../../../src/processors/PageSpanProcessor/PageSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { PageManager } from '../../api-page';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants';\nimport type { PageSpanProcessorArgs } from './types';\n\nexport class PageSpanProcessor implements SpanProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageSpanProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // Attach page attributes at span end to capture the page where the span completed\n public onEnd(span: ReadableSpan): void {\n // If the span already has page attributes, do not override them\n if (\n !span.attributes[KEY_MXL_PAGE_PATH] ||\n !span.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n\n if (currentRoute && currentPageId) {\n span.attributes[KEY_MXL_PAGE_PATH] = currentRoute.path;\n span.attributes[KEY_MXL_PAGE_ID] = currentPageId;\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !span.attributes[KEY_APP_SURFACE_LABEL]) {\n span.attributes[KEY_APP_SURFACE_LABEL] = appSurfaceLabel;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;AASA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AAErC,MACE,CAAC,KAAK,WAAA,uBACN,CAAC,KAAK,WAAA,mBACN;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;GACxD,MAAM,gBAAgB,KAAK,aAAa,kBAAkB;AAE1D,OAAI,gBAAgB,eAAe;AACjC,SAAK,WAAWA,6BAAAA,qBAAqB,aAAa;AAClD,SAAK,WAAWC,6BAAAA,mBAAmB;;;EAIvC,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,KAAK,WAAA,qBAC3B,MAAK,WAAWC,6BAAAA,yBAAyB;;CAI7C,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageSpanProcessor.js","names":[],"sources":["../../../src/processors/PageSpanProcessor/PageSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { PageManager } from '../../api-page/index.ts';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants/index.ts';\nimport type { PageSpanProcessorArgs } from './types.ts';\n\nexport class PageSpanProcessor implements SpanProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageSpanProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // Attach page attributes at span end to capture the page where the span completed\n public onEnd(span: ReadableSpan): void {\n // If the span already has page attributes, do not override them\n if (\n !span.attributes[KEY_MXL_PAGE_PATH] ||\n !span.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n\n if (currentRoute && currentPageId) {\n span.attributes[KEY_MXL_PAGE_PATH] = currentRoute.path;\n span.attributes[KEY_MXL_PAGE_ID] = currentPageId;\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !span.attributes[KEY_APP_SURFACE_LABEL]) {\n span.attributes[KEY_APP_SURFACE_LABEL] = appSurfaceLabel;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AASA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AAErC,MACE,CAAC,KAAK,WAAA,uBACN,CAAC,KAAK,WAAA,mBACN;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;GACxD,MAAM,gBAAgB,KAAK,aAAa,kBAAkB;AAE1D,OAAI,gBAAgB,eAAe;AACjC,SAAK,WAAW,qBAAqB,aAAa;AAClD,SAAK,WAAW,mBAAmB;;;EAIvC,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,KAAK,WAAA,qBAC3B,MAAK,WAAW,yBAAyB;;CAI7C,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"PageSpanProcessor.js","names":[],"sources":["../../../src/processors/PageSpanProcessor/PageSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { PageManager } from '../../api-page';\nimport {\n KEY_APP_SURFACE_LABEL,\n KEY_MXL_PAGE_ID,\n KEY_MXL_PAGE_PATH,\n} from '../../constants';\nimport type { PageSpanProcessorArgs } from './types';\n\nexport class PageSpanProcessor implements SpanProcessor {\n private readonly _pageManager: PageManager;\n\n public constructor({ pageManager }: PageSpanProcessorArgs) {\n this._pageManager = pageManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // Attach page attributes at span end to capture the page where the span completed\n public onEnd(span: ReadableSpan): void {\n // If the span already has page attributes, do not override them\n if (\n !span.attributes[KEY_MXL_PAGE_PATH] ||\n !span.attributes[KEY_MXL_PAGE_ID]\n ) {\n const currentRoute = this._pageManager.getCurrentRoute();\n const currentPageId = this._pageManager.getCurrentPageId();\n\n if (currentRoute && currentPageId) {\n span.attributes[KEY_MXL_PAGE_PATH] = currentRoute.path;\n span.attributes[KEY_MXL_PAGE_ID] = currentPageId;\n }\n }\n\n const appSurfaceLabel = this._pageManager.getPageLabel();\n if (appSurfaceLabel && !span.attributes[KEY_APP_SURFACE_LABEL]) {\n span.attributes[KEY_APP_SURFACE_LABEL] = appSurfaceLabel;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AASA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AAErC,MACE,CAAC,KAAK,WAAA,uBACN,CAAC,KAAK,WAAA,mBACN;GACA,MAAM,eAAe,KAAK,aAAa,iBAAiB;GACxD,MAAM,gBAAgB,KAAK,aAAa,kBAAkB;AAE1D,OAAI,gBAAgB,eAAe;AACjC,SAAK,WAAW,qBAAqB,aAAa;AAClD,SAAK,WAAW,mBAAmB;;;EAIvC,MAAM,kBAAkB,KAAK,aAAa,cAAc;AACxD,MAAI,mBAAmB,CAAC,KAAK,WAAA,qBAC3B,MAAK,WAAW,yBAAyB;;CAI7C,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"SpanScrubProcessor.cjs","names":[],"sources":["../../../src/processors/SpanScrubProcessor/SpanScrubProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { AttributeScrubber } from '../../common/index.ts';\nimport type { SpanScrubProcessorArgs } from './types.ts';\n\nexport class SpanScrubProcessor implements SpanProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: SpanScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n public onEnd(span: ReadableSpan): void {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = span.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n span.attributes[scrubber.key] = scrubber.scrub(value);\n }\n });\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AAIA,IAAa,qBAAb,MAAyD;CACvD;CAEA,YAAmB,EAAE,sBAA8C;AACjE,OAAK,sBAAsB;;CAG7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,OAAI,SAAS,OAAO,UAAU,SAC5B,MAAK,WAAW,SAAS,OAAO,SAAS,MAAM,MAAM;IAEvD;;CAGJ,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"SpanScrubProcessor.cjs","names":[],"sources":["../../../src/processors/SpanScrubProcessor/SpanScrubProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { AttributeScrubber } from '../../common';\nimport type { SpanScrubProcessorArgs } from './types';\n\nexport class SpanScrubProcessor implements SpanProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: SpanScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n public onEnd(span: ReadableSpan): void {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = span.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n span.attributes[scrubber.key] = scrubber.scrub(value);\n }\n });\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;AAIA,IAAa,qBAAb,MAAyD;CACvD;CAEA,YAAmB,EAAE,sBAA8C;AACjE,OAAK,sBAAsB;;CAG7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,OAAI,SAAS,OAAO,UAAU,SAC5B,MAAK,WAAW,SAAS,OAAO,SAAS,MAAM,MAAM;IAEvD;;CAGJ,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"SpanScrubProcessor.js","names":[],"sources":["../../../src/processors/SpanScrubProcessor/SpanScrubProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { AttributeScrubber } from '../../common/index.ts';\nimport type { SpanScrubProcessorArgs } from './types.ts';\n\nexport class SpanScrubProcessor implements SpanProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: SpanScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n public onEnd(span: ReadableSpan): void {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = span.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n span.attributes[scrubber.key] = scrubber.scrub(value);\n }\n });\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AAIA,IAAa,qBAAb,MAAyD;CACvD;CAEA,YAAmB,EAAE,sBAA8C;AACjE,OAAK,sBAAsB;;CAG7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,OAAI,SAAS,OAAO,UAAU,SAC5B,MAAK,WAAW,SAAS,OAAO,SAAS,MAAM,MAAM;IAEvD;;CAGJ,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"SpanScrubProcessor.js","names":[],"sources":["../../../src/processors/SpanScrubProcessor/SpanScrubProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport type { AttributeScrubber } from '../../common';\nimport type { SpanScrubProcessorArgs } from './types';\n\nexport class SpanScrubProcessor implements SpanProcessor {\n private readonly _attributeScrubbers: AttributeScrubber[];\n\n public constructor({ attributeScrubbers }: SpanScrubProcessorArgs) {\n this._attributeScrubbers = attributeScrubbers;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n public onEnd(span: ReadableSpan): void {\n this._attributeScrubbers.forEach((scrubber) => {\n const value = span.attributes[scrubber.key];\n if (value && typeof value === 'string') {\n span.attributes[scrubber.key] = scrubber.scrub(value);\n }\n });\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";AAIA,IAAa,qBAAb,MAAyD;CACvD;CAEA,YAAmB,EAAE,sBAA8C;AACjE,OAAK,sBAAsB;;CAG7B,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAInC,MAAa,MAA0B;AACrC,OAAK,oBAAoB,SAAS,aAAa;GAC7C,MAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,OAAI,SAAS,OAAO,UAAU,SAC5B,MAAK,WAAW,SAAS,OAAO,SAAS,MAAM,MAAM;IAEvD;;CAGJ,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserLogRecordProcessor.cjs","names":["ATTR_USER_ID"],"sources":["../../../src/processors/UserLogRecordProcessor/UserLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users/index.ts';\nimport type { UserLogRecordProcessorArgs } from './types.ts';\n\n/**\n * UserLogRecordProcessor sets the userId attribute on all log records if the userId is set in the UserManager.\n */\nexport class UserLogRecordProcessor implements LogRecordProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserLogRecordProcessorArgs) {\n this._userManager = userManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n logRecord.setAttributes({\n [ATTR_USER_ID]: this._userManager.getUserId(),\n });\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AAGrC,MAFe,KAAK,aAAa,WAEvB,CACR,WAAU,cAAc,GACrBA,+CAAAA,eAAe,KAAK,aAAa,WAAW,EAC9C,CAAC;;CAKN,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"UserLogRecordProcessor.cjs","names":["ATTR_USER_ID"],"sources":["../../../src/processors/UserLogRecordProcessor/UserLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users';\nimport type { UserLogRecordProcessorArgs } from './types';\n\n/**\n * UserLogRecordProcessor sets the userId attribute on all log records if the userId is set in the UserManager.\n */\nexport class UserLogRecordProcessor implements LogRecordProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserLogRecordProcessorArgs) {\n this._userManager = userManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n logRecord.setAttributes({\n [ATTR_USER_ID]: this._userManager.getUserId(),\n });\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AAGrC,MAFe,KAAK,aAAa,WAEvB,CACR,WAAU,cAAc,GACrBA,+CAAAA,eAAe,KAAK,aAAa,WAAW,EAC9C,CAAC;;CAKN,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserLogRecordProcessor.js","names":[],"sources":["../../../src/processors/UserLogRecordProcessor/UserLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users/index.ts';\nimport type { UserLogRecordProcessorArgs } from './types.ts';\n\n/**\n * UserLogRecordProcessor sets the userId attribute on all log records if the userId is set in the UserManager.\n */\nexport class UserLogRecordProcessor implements LogRecordProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserLogRecordProcessorArgs) {\n this._userManager = userManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n logRecord.setAttributes({\n [ATTR_USER_ID]: this._userManager.getUserId(),\n });\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AAGrC,MAFe,KAAK,aAAa,WAEvB,CACR,WAAU,cAAc,GACrB,eAAe,KAAK,aAAa,WAAW,EAC9C,CAAC;;CAKN,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"UserLogRecordProcessor.js","names":[],"sources":["../../../src/processors/UserLogRecordProcessor/UserLogRecordProcessor.ts"],"sourcesContent":["import type { LogRecordProcessor, SdkLogRecord } from '@opentelemetry/sdk-logs';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users';\nimport type { UserLogRecordProcessorArgs } from './types';\n\n/**\n * UserLogRecordProcessor sets the userId attribute on all log records if the userId is set in the UserManager.\n */\nexport class UserLogRecordProcessor implements LogRecordProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserLogRecordProcessorArgs) {\n this._userManager = userManager;\n }\n\n // no-op\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n public onEmit(logRecord: SdkLogRecord) {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n logRecord.setAttributes({\n [ATTR_USER_ID]: this._userManager.getUserId(),\n });\n }\n }\n\n // no-op\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,yBAAb,MAAkE;CAChE;CAEA,YAAmB,EAAE,eAA2C;AAC9D,OAAK,eAAe;;CAItB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAGnC,OAAc,WAAyB;AAGrC,MAFe,KAAK,aAAa,WAEvB,CACR,WAAU,cAAc,GACrB,eAAe,KAAK,aAAa,WAAW,EAC9C,CAAC;;CAKN,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserSpanProcessor.cjs","names":["ATTR_USER_ID"],"sources":["../../../src/processors/UserSpanProcessor/UserSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users/index.ts';\nimport type { UserSpanProcessorArgs } from './types.ts';\n\n/**\n * UserSpanProcessor sets the userId attribute on all spans if the userId is set in the UserManager.\n */\nexport class UserSpanProcessor implements SpanProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserSpanProcessorArgs) {\n this._userManager = userManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n // using onEnd to make sure we get the userId at the last possible moment in case it was set up after the span was started.\n public onEnd(span: ReadableSpan): void {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n span.attributes[ATTR_USER_ID] = userId;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAKnC,MAAa,MAA0B;EACrC,MAAM,SAAS,KAAK,aAAa,WAAW;AAE5C,MAAI,OACF,MAAK,WAAWA,+CAAAA,gBAAgB;;CAIpC,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"UserSpanProcessor.cjs","names":["ATTR_USER_ID"],"sources":["../../../src/processors/UserSpanProcessor/UserSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users';\nimport type { UserSpanProcessorArgs } from './types';\n\n/**\n * UserSpanProcessor sets the userId attribute on all spans if the userId is set in the UserManager.\n */\nexport class UserSpanProcessor implements SpanProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserSpanProcessorArgs) {\n this._userManager = userManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n // using onEnd to make sure we get the userId at the last possible moment in case it was set up after the span was started.\n public onEnd(span: ReadableSpan): void {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n span.attributes[ATTR_USER_ID] = userId;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAKnC,MAAa,MAA0B;EACrC,MAAM,SAAS,KAAK,aAAa,WAAW;AAE5C,MAAI,OACF,MAAK,WAAWA,+CAAAA,gBAAgB;;CAIpC,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserSpanProcessor.js","names":[],"sources":["../../../src/processors/UserSpanProcessor/UserSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users/index.ts';\nimport type { UserSpanProcessorArgs } from './types.ts';\n\n/**\n * UserSpanProcessor sets the userId attribute on all spans if the userId is set in the UserManager.\n */\nexport class UserSpanProcessor implements SpanProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserSpanProcessorArgs) {\n this._userManager = userManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n // using onEnd to make sure we get the userId at the last possible moment in case it was set up after the span was started.\n public onEnd(span: ReadableSpan): void {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n span.attributes[ATTR_USER_ID] = userId;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAKnC,MAAa,MAA0B;EACrC,MAAM,SAAS,KAAK,aAAa,WAAW;AAE5C,MAAI,OACF,MAAK,WAAW,gBAAgB;;CAIpC,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
1
+ {"version":3,"file":"UserSpanProcessor.js","names":[],"sources":["../../../src/processors/UserSpanProcessor/UserSpanProcessor.ts"],"sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_USER_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type { UserManager } from '../../api-users';\nimport type { UserSpanProcessorArgs } from './types';\n\n/**\n * UserSpanProcessor sets the userId attribute on all spans if the userId is set in the UserManager.\n */\nexport class UserSpanProcessor implements SpanProcessor {\n private readonly _userManager: UserManager;\n\n public constructor({ userManager }: UserSpanProcessorArgs) {\n this._userManager = userManager;\n }\n\n public forceFlush(): Promise<void> {\n return Promise.resolve(undefined);\n }\n\n // TODO `onEnd` is not supposed to modify the span. There is a new experimental onEnding api that allows modifying\n // using onEnd to make sure we get the userId at the last possible moment in case it was set up after the span was started.\n public onEnd(span: ReadableSpan): void {\n const userId = this._userManager.getUserId();\n\n if (userId) {\n span.attributes[ATTR_USER_ID] = userId;\n }\n }\n\n public onStart(this: void): void {\n // do nothing.\n }\n\n public shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,oBAAb,MAAwD;CACtD;CAEA,YAAmB,EAAE,eAAsC;AACzD,OAAK,eAAe;;CAGtB,aAAmC;AACjC,SAAO,QAAQ,QAAQ,KAAA,EAAU;;CAKnC,MAAa,MAA0B;EACrC,MAAM,SAAS,KAAK,aAAa,WAAW;AAE5C,MAAI,OACF,MAAK,WAAW,gBAAgB;;CAIpC,UAAiC;CAIjC,WAAiC;AAC/B,SAAO,QAAQ,QAAQ,KAAA,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLW3CTraceContextPropagator.cjs","names":["W3CTraceContextPropagator","trace","defaultTextMapGetter","KEY_MXL_W3C_TRACEPARENT"],"sources":["../../../src/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.ts"],"sourcesContent":["import type { Context, TextMapSetter } from '@opentelemetry/api';\nimport { defaultTextMapGetter, trace } from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { KEY_MXL_W3C_TRACEPARENT } from '../../constants/index.ts';\n\nexport class MXLW3CTraceContextPropagator extends W3CTraceContextPropagator {\n public override inject(\n context: Context,\n carrier: unknown,\n setter: TextMapSetter,\n ) {\n super.inject(context, carrier, setter);\n\n // Add the injected Traceparent header as an attribute to the span in the current\n // context if both are available\n const span = trace.getSpan(context);\n if (span) {\n const traceparent =\n carrier instanceof Headers\n ? carrier.get('traceparent')\n : defaultTextMapGetter.get(carrier, 'traceparent');\n if (traceparent) {\n span.setAttribute(KEY_MXL_W3C_TRACEPARENT, traceparent);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,+BAAb,cAAkDA,oBAAAA,0BAA0B;CAC1E,OACE,SACA,SACA,QACA;AACA,QAAM,OAAO,SAAS,SAAS,OAAO;EAItC,MAAM,OAAOC,mBAAAA,MAAM,QAAQ,QAAQ;AACnC,MAAI,MAAM;GACR,MAAM,cACJ,mBAAmB,UACf,QAAQ,IAAI,cAAc,GAC1BC,mBAAAA,qBAAqB,IAAI,SAAS,cAAc;AACtD,OAAI,YACF,MAAK,aAAaC,6BAAAA,yBAAyB,YAAY"}
1
+ {"version":3,"file":"MXLW3CTraceContextPropagator.cjs","names":["W3CTraceContextPropagator","trace","defaultTextMapGetter","KEY_MXL_W3C_TRACEPARENT"],"sources":["../../../src/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.ts"],"sourcesContent":["import type { Context, TextMapSetter } from '@opentelemetry/api';\nimport { defaultTextMapGetter, trace } from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { KEY_MXL_W3C_TRACEPARENT } from '../../constants';\n\nexport class MXLW3CTraceContextPropagator extends W3CTraceContextPropagator {\n public override inject(\n context: Context,\n carrier: unknown,\n setter: TextMapSetter,\n ) {\n super.inject(context, carrier, setter);\n\n // Add the injected Traceparent header as an attribute to the span in the current\n // context if both are available\n const span = trace.getSpan(context);\n if (span) {\n const traceparent =\n carrier instanceof Headers\n ? carrier.get('traceparent')\n : defaultTextMapGetter.get(carrier, 'traceparent');\n if (traceparent) {\n span.setAttribute(KEY_MXL_W3C_TRACEPARENT, traceparent);\n }\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,+BAAb,cAAkDA,oBAAAA,0BAA0B;CAC1E,OACE,SACA,SACA,QACA;AACA,QAAM,OAAO,SAAS,SAAS,OAAO;EAItC,MAAM,OAAOC,mBAAAA,MAAM,QAAQ,QAAQ;AACnC,MAAI,MAAM;GACR,MAAM,cACJ,mBAAmB,UACf,QAAQ,IAAI,cAAc,GAC1BC,mBAAAA,qBAAqB,IAAI,SAAS,cAAc;AACtD,OAAI,YACF,MAAK,aAAaC,6BAAAA,yBAAyB,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"MXLW3CTraceContextPropagator.js","names":[],"sources":["../../../src/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.ts"],"sourcesContent":["import type { Context, TextMapSetter } from '@opentelemetry/api';\nimport { defaultTextMapGetter, trace } from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { KEY_MXL_W3C_TRACEPARENT } from '../../constants/index.ts';\n\nexport class MXLW3CTraceContextPropagator extends W3CTraceContextPropagator {\n public override inject(\n context: Context,\n carrier: unknown,\n setter: TextMapSetter,\n ) {\n super.inject(context, carrier, setter);\n\n // Add the injected Traceparent header as an attribute to the span in the current\n // context if both are available\n const span = trace.getSpan(context);\n if (span) {\n const traceparent =\n carrier instanceof Headers\n ? carrier.get('traceparent')\n : defaultTextMapGetter.get(carrier, 'traceparent');\n if (traceparent) {\n span.setAttribute(KEY_MXL_W3C_TRACEPARENT, traceparent);\n }\n }\n }\n}\n"],"mappings":";;;;AAKA,IAAa,+BAAb,cAAkD,0BAA0B;CAC1E,OACE,SACA,SACA,QACA;AACA,QAAM,OAAO,SAAS,SAAS,OAAO;EAItC,MAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,MAAI,MAAM;GACR,MAAM,cACJ,mBAAmB,UACf,QAAQ,IAAI,cAAc,GAC1B,qBAAqB,IAAI,SAAS,cAAc;AACtD,OAAI,YACF,MAAK,aAAa,yBAAyB,YAAY"}
1
+ {"version":3,"file":"MXLW3CTraceContextPropagator.js","names":[],"sources":["../../../src/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.ts"],"sourcesContent":["import type { Context, TextMapSetter } from '@opentelemetry/api';\nimport { defaultTextMapGetter, trace } from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { KEY_MXL_W3C_TRACEPARENT } from '../../constants';\n\nexport class MXLW3CTraceContextPropagator extends W3CTraceContextPropagator {\n public override inject(\n context: Context,\n carrier: unknown,\n setter: TextMapSetter,\n ) {\n super.inject(context, carrier, setter);\n\n // Add the injected Traceparent header as an attribute to the span in the current\n // context if both are available\n const span = trace.getSpan(context);\n if (span) {\n const traceparent =\n carrier instanceof Headers\n ? carrier.get('traceparent')\n : defaultTextMapGetter.get(carrier, 'traceparent');\n if (traceparent) {\n span.setAttribute(KEY_MXL_W3C_TRACEPARENT, traceparent);\n }\n }\n }\n}\n"],"mappings":";;;;AAKA,IAAa,+BAAb,cAAkD,0BAA0B;CAC1E,OACE,SACA,SACA,QACA;AACA,QAAM,OAAO,SAAS,SAAS,OAAO;EAItC,MAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,MAAI,MAAM;GACR,MAAM,cACJ,mBAAmB,UACf,QAAQ,IAAI,cAAc,GAC1B,qBAAqB,IAAI,SAAS,cAAc;AACtD,OAAI,YACF,MAAK,aAAa,yBAAyB,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"appInstanceId.cjs","names":["MXL_APP_INSTANCE_ID_STORAGE_KEY","generateUUID"],"sources":["../../src/resources/appInstanceId.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { generateUUID } from '../utils/index.ts';\nimport { MXL_APP_INSTANCE_ID_STORAGE_KEY } from './constants/index.ts';\n\nexport const getAppInstanceId = (\n pageSessionStorage: Storage,\n diag: DiagLogger,\n): string => {\n let id = null;\n try {\n id = pageSessionStorage.getItem(MXL_APP_INSTANCE_ID_STORAGE_KEY);\n } catch (e) {\n diag.warn('Failed to retrieve app instance ID from session storage', e);\n }\n\n if (!id) {\n diag.debug(\n 'No existing app instance ID found in session storage, creating a new one',\n );\n id = generateUUID();\n try {\n pageSessionStorage.setItem(MXL_APP_INSTANCE_ID_STORAGE_KEY, id);\n } catch (e) {\n diag.warn('Failed to persist app instance ID to session storage', e);\n }\n }\n\n return id;\n};\n"],"mappings":";;;;AAIA,MAAa,oBACX,oBACA,SACW;CACX,IAAI,KAAK;AACT,KAAI;AACF,OAAK,mBAAmB,QAAQA,kCAAAA,gCAAgC;UACzD,GAAG;AACV,OAAK,KAAK,2DAA2D,EAAE;;AAGzE,KAAI,CAAC,IAAI;AACP,OAAK,MACH,2EACD;AACD,OAAKC,2BAAAA,cAAc;AACnB,MAAI;AACF,sBAAmB,QAAQD,kCAAAA,iCAAiC,GAAG;WACxD,GAAG;AACV,QAAK,KAAK,wDAAwD,EAAE;;;AAIxE,QAAO"}
1
+ {"version":3,"file":"appInstanceId.cjs","names":["MXL_APP_INSTANCE_ID_STORAGE_KEY","generateUUID"],"sources":["../../src/resources/appInstanceId.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { generateUUID } from '../utils';\nimport { MXL_APP_INSTANCE_ID_STORAGE_KEY } from './constants';\n\nexport const getAppInstanceId = (\n pageSessionStorage: Storage,\n diag: DiagLogger,\n): string => {\n let id = null;\n try {\n id = pageSessionStorage.getItem(MXL_APP_INSTANCE_ID_STORAGE_KEY);\n } catch (e) {\n diag.warn('Failed to retrieve app instance ID from session storage', e);\n }\n\n if (!id) {\n diag.debug(\n 'No existing app instance ID found in session storage, creating a new one',\n );\n id = generateUUID();\n try {\n pageSessionStorage.setItem(MXL_APP_INSTANCE_ID_STORAGE_KEY, id);\n } catch (e) {\n diag.warn('Failed to persist app instance ID to session storage', e);\n }\n }\n\n return id;\n};\n"],"mappings":";;;;AAIA,MAAa,oBACX,oBACA,SACW;CACX,IAAI,KAAK;AACT,KAAI;AACF,OAAK,mBAAmB,QAAQA,kCAAAA,gCAAgC;UACzD,GAAG;AACV,OAAK,KAAK,2DAA2D,EAAE;;AAGzE,KAAI,CAAC,IAAI;AACP,OAAK,MACH,2EACD;AACD,OAAKC,2BAAAA,cAAc;AACnB,MAAI;AACF,sBAAmB,QAAQD,kCAAAA,iCAAiC,GAAG;WACxD,GAAG;AACV,QAAK,KAAK,wDAAwD,EAAE;;;AAIxE,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"appInstanceId.js","names":[],"sources":["../../src/resources/appInstanceId.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { generateUUID } from '../utils/index.ts';\nimport { MXL_APP_INSTANCE_ID_STORAGE_KEY } from './constants/index.ts';\n\nexport const getAppInstanceId = (\n pageSessionStorage: Storage,\n diag: DiagLogger,\n): string => {\n let id = null;\n try {\n id = pageSessionStorage.getItem(MXL_APP_INSTANCE_ID_STORAGE_KEY);\n } catch (e) {\n diag.warn('Failed to retrieve app instance ID from session storage', e);\n }\n\n if (!id) {\n diag.debug(\n 'No existing app instance ID found in session storage, creating a new one',\n );\n id = generateUUID();\n try {\n pageSessionStorage.setItem(MXL_APP_INSTANCE_ID_STORAGE_KEY, id);\n } catch (e) {\n diag.warn('Failed to persist app instance ID to session storage', e);\n }\n }\n\n return id;\n};\n"],"mappings":";;;AAIA,MAAa,oBACX,oBACA,SACW;CACX,IAAI,KAAK;AACT,KAAI;AACF,OAAK,mBAAmB,QAAQ,gCAAgC;UACzD,GAAG;AACV,OAAK,KAAK,2DAA2D,EAAE;;AAGzE,KAAI,CAAC,IAAI;AACP,OAAK,MACH,2EACD;AACD,OAAK,cAAc;AACnB,MAAI;AACF,sBAAmB,QAAQ,iCAAiC,GAAG;WACxD,GAAG;AACV,QAAK,KAAK,wDAAwD,EAAE;;;AAIxE,QAAO"}
1
+ {"version":3,"file":"appInstanceId.js","names":[],"sources":["../../src/resources/appInstanceId.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\nimport { generateUUID } from '../utils';\nimport { MXL_APP_INSTANCE_ID_STORAGE_KEY } from './constants';\n\nexport const getAppInstanceId = (\n pageSessionStorage: Storage,\n diag: DiagLogger,\n): string => {\n let id = null;\n try {\n id = pageSessionStorage.getItem(MXL_APP_INSTANCE_ID_STORAGE_KEY);\n } catch (e) {\n diag.warn('Failed to retrieve app instance ID from session storage', e);\n }\n\n if (!id) {\n diag.debug(\n 'No existing app instance ID found in session storage, creating a new one',\n );\n id = generateUUID();\n try {\n pageSessionStorage.setItem(MXL_APP_INSTANCE_ID_STORAGE_KEY, id);\n } catch (e) {\n diag.warn('Failed to persist app instance ID to session storage', e);\n }\n }\n\n return id;\n};\n"],"mappings":";;;AAIA,MAAa,oBACX,oBACA,SACW;CACX,IAAI,KAAK;AACT,KAAI;AACF,OAAK,mBAAmB,QAAQ,gCAAgC;UACzD,GAAG;AACV,OAAK,KAAK,2DAA2D,EAAE;;AAGzE,KAAI,CAAC,IAAI;AACP,OAAK,MACH,2EACD;AACD,OAAK,cAAc;AACnB,MAAI;AACF,sBAAmB,QAAQ,iCAAiC,GAAG;WACxD,GAAG;AACV,QAAK,KAAK,wDAAwD,EAAE;;;AAIxE,QAAO"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/resources/constants/index.ts
3
3
  const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X";
4
- const SDK_VERSION = "0.0.12";
4
+ const SDK_VERSION = "0.0.15";
5
5
  const MXL_SERVICE_NAME = "mxl-web-sdk";
6
6
  const NATIVE_FRAMEWORK = 1;
7
7
  const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/resources/constants/index.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X';\nexport const SDK_VERSION = '0.0.12';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";;AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../src/resources/constants/index.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X';\nexport const SDK_VERSION = '0.0.15';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";;AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/constants/index.d.ts
2
2
  declare const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X";
3
- declare const SDK_VERSION = "0.0.12";
3
+ declare const SDK_VERSION = "0.0.15";
4
4
  declare const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  declare const NATIVE_FRAMEWORK = 1;
6
6
  declare const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/constants/index.d.ts
2
2
  declare const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X";
3
- declare const SDK_VERSION = "0.0.12";
3
+ declare const SDK_VERSION = "0.0.15";
4
4
  declare const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  declare const NATIVE_FRAMEWORK = 1;
6
6
  declare const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/constants/index.ts
2
2
  const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X";
3
- const SDK_VERSION = "0.0.12";
3
+ const SDK_VERSION = "0.0.15";
4
4
  const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  const NATIVE_FRAMEWORK = 1;
6
6
  const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/resources/constants/index.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X';\nexport const SDK_VERSION = '0.0.12';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/resources/constants/index.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X';\nexport const SDK_VERSION = '0.0.15';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
@@ -1 +1 @@
1
- {"version":3,"file":"webSdkResource.cjs","names":["ATTR_SERVICE_NAME","ATTR_TELEMETRY_SDK_NAME","MXL_SERVICE_NAME","SDK_VERSION","ATTR_TELEMETRY_SDK_VERSION","ATTR_TELEMETRY_SDK_LANGUAGE","KEY_MXL_APP_INSTANCE_ID","getAppInstanceId","ATTR_USER_AGENT_ORIGINAL"],"sources":["../../src/resources/webSdkResource.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport { KEY_MXL_APP_INSTANCE_ID } from '../constants/index.ts';\nimport { getAppInstanceId } from './appInstanceId.ts';\nimport {\n MXL_SERVICE_NAME,\n NATIVE_FRAMEWORK,\n SDK_VERSION,\n} from './constants/index.ts';\nimport type { GetWebSDKResourceArgs } from './types.ts';\n\n/** Matches OpenTelemetry `OTEL_SERVICE_NAME` default ([docs](https://opentelemetry.io/docs/languages/sdk-configuration/general/)). */\nexport const OTEL_DEFAULT_SERVICE_NAME = 'unknown_service';\n\n/**\n * Applied first so the `resource` option in {@link initSDK} can override `service.name`\n * unless the SDK supplies a canonical value afterward.\n */\nexport const getWebSDKOverridableResource = ({\n serviceName,\n}: {\n serviceName: string;\n}): Resource => {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n });\n};\n\n/**\n * Returns SDK resource attributes that must not be overridden by user-provided resources.\n * These are merged last so they take precedence where applicable.\n */\nexport const getWebSDKResource = ({\n diagLogger,\n appVersion,\n pageSessionStorage,\n}: GetWebSDKResourceArgs): Resource => {\n return resourceFromAttributes({\n [ATTR_TELEMETRY_SDK_NAME]: MXL_SERVICE_NAME,\n // NOTE: `appVersion` may originate from TEMPLATE_APP_VERSION, which is padded\n // with whitespace by the CLI to keep sourcemap offsets stable. The padding is\n // intentionally trimmed earlier (see validateAppVersion in utils.ts), so by the\n // time it is passed here `appVersion` should already be a normalized value.\n app_version: appVersion,\n app_framework: NATIVE_FRAMEWORK,\n sdk_version: SDK_VERSION,\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_VERSION,\n sdk_simple_version: 1,\n sdk_platform: 'web',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: 'webjs',\n [KEY_MXL_APP_INSTANCE_ID]: getAppInstanceId(pageSessionStorage, diagLogger),\n [ATTR_USER_AGENT_ORIGINAL]: window.navigator.userAgent,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n });\n};\n"],"mappings":";;;;;;;;;AAmBA,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC,EAC3C,kBAGc;AACd,SAAA,GAAA,yBAAA,wBAA8B,GAC3BA,oCAAAA,oBAAoB,aACtB,CAAC;;;;;;AAOJ,MAAa,qBAAqB,EAChC,YACA,YACA,yBACqC;AACrC,SAAA,GAAA,yBAAA,wBAA8B;GAC3BC,oCAAAA,0BAA0BC,kCAAAA;EAK3B,aAAa;EACb,eAAA;EACA,aAAaC,kCAAAA;GACZC,oCAAAA,6BAA6BD,kCAAAA;EAC9B,oBAAoB;EACpB,cAAc;GACbE,oCAAAA,8BAA8B;GAC9BC,6BAAAA,0BAA0BC,gCAAAA,iBAAiB,oBAAoB,WAAW;GAC1EC,oCAAAA,2BAA2B,OAAO,UAAU;EAC7C,mBAAmB,GAAG,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO;EAC5D,CAAC"}
1
+ {"version":3,"file":"webSdkResource.cjs","names":["ATTR_SERVICE_NAME","ATTR_TELEMETRY_SDK_NAME","MXL_SERVICE_NAME","SDK_VERSION","ATTR_TELEMETRY_SDK_VERSION","ATTR_TELEMETRY_SDK_LANGUAGE","KEY_MXL_APP_INSTANCE_ID","getAppInstanceId","ATTR_USER_AGENT_ORIGINAL"],"sources":["../../src/resources/webSdkResource.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport { KEY_MXL_APP_INSTANCE_ID } from '../constants';\nimport { getAppInstanceId } from './appInstanceId';\nimport { MXL_SERVICE_NAME, NATIVE_FRAMEWORK, SDK_VERSION } from './constants';\nimport type { GetWebSDKResourceArgs } from './types';\n\n/** Matches OpenTelemetry `OTEL_SERVICE_NAME` default ([docs](https://opentelemetry.io/docs/languages/sdk-configuration/general/)). */\nexport const OTEL_DEFAULT_SERVICE_NAME = 'unknown_service';\n\n/**\n * Applied first so the `resource` option in {@link initSDK} can override `service.name`\n * unless the SDK supplies a canonical value afterward.\n */\nexport const getWebSDKOverridableResource = ({\n serviceName,\n}: {\n serviceName: string;\n}): Resource => {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n });\n};\n\n/**\n * Returns SDK resource attributes that must not be overridden by user-provided resources.\n * These are merged last so they take precedence where applicable.\n */\nexport const getWebSDKResource = ({\n diagLogger,\n appVersion,\n pageSessionStorage,\n}: GetWebSDKResourceArgs): Resource => {\n return resourceFromAttributes({\n [ATTR_TELEMETRY_SDK_NAME]: MXL_SERVICE_NAME,\n // NOTE: `appVersion` may originate from TEMPLATE_APP_VERSION, which is padded\n // with whitespace by the CLI to keep sourcemap offsets stable. The padding is\n // intentionally trimmed earlier (see validateAppVersion in utils.ts), so by the\n // time it is passed here `appVersion` should already be a normalized value.\n app_version: appVersion,\n app_framework: NATIVE_FRAMEWORK,\n sdk_version: SDK_VERSION,\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_VERSION,\n sdk_simple_version: 1,\n sdk_platform: 'web',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: 'webjs',\n [KEY_MXL_APP_INSTANCE_ID]: getAppInstanceId(pageSessionStorage, diagLogger),\n [ATTR_USER_AGENT_ORIGINAL]: window.navigator.userAgent,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n });\n};\n"],"mappings":";;;;;;;;;AAeA,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC,EAC3C,kBAGc;AACd,SAAA,GAAA,yBAAA,wBAA8B,GAC3BA,oCAAAA,oBAAoB,aACtB,CAAC;;;;;;AAOJ,MAAa,qBAAqB,EAChC,YACA,YACA,yBACqC;AACrC,SAAA,GAAA,yBAAA,wBAA8B;GAC3BC,oCAAAA,0BAA0BC,kCAAAA;EAK3B,aAAa;EACb,eAAA;EACA,aAAaC,kCAAAA;GACZC,oCAAAA,6BAA6BD,kCAAAA;EAC9B,oBAAoB;EACpB,cAAc;GACbE,oCAAAA,8BAA8B;GAC9BC,6BAAAA,0BAA0BC,gCAAAA,iBAAiB,oBAAoB,WAAW;GAC1EC,oCAAAA,2BAA2B,OAAO,UAAU;EAC7C,mBAAmB,GAAG,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO;EAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"webSdkResource.d.cts","names":[],"sources":["../../src/resources/webSdkResource.ts"],"mappings":";;;;;cAmBa,yBAAA;AAAb;;;;AAAA,cAMa,4BAAA;EAAgC;AAAA;EAG3C,WAAA;AAAA,MACE,QAAA;;;;;cAUS,iBAAA;EAAqB,UAAA;EAAA,UAAA;EAAA;AAAA,GAI/B,qBAAA,KAAwB,QAAA"}
1
+ {"version":3,"file":"webSdkResource.d.cts","names":[],"sources":["../../src/resources/webSdkResource.ts"],"mappings":";;;;;cAea,yBAAA;AAAb;;;;AAAA,cAMa,4BAAA;EAAgC;AAAA;EAG3C,WAAA;AAAA,MACE,QAAA;;;;;cAUS,iBAAA;EAAqB,UAAA;EAAA,UAAA;EAAA;AAAA,GAI/B,qBAAA,KAAwB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"webSdkResource.d.ts","names":[],"sources":["../../src/resources/webSdkResource.ts"],"mappings":";;;;;cAmBa,yBAAA;AAAb;;;;AAAA,cAMa,4BAAA;EAAgC;AAAA;EAG3C,WAAA;AAAA,MACE,QAAA;;;;;cAUS,iBAAA;EAAqB,UAAA;EAAA,UAAA;EAAA;AAAA,GAI/B,qBAAA,KAAwB,QAAA"}
1
+ {"version":3,"file":"webSdkResource.d.ts","names":[],"sources":["../../src/resources/webSdkResource.ts"],"mappings":";;;;;cAea,yBAAA;AAAb;;;;AAAA,cAMa,4BAAA;EAAgC;AAAA;EAG3C,WAAA;AAAA,MACE,QAAA;;;;;cAUS,iBAAA;EAAqB,UAAA;EAAA,UAAA;EAAA;AAAA,GAI/B,qBAAA,KAAwB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"webSdkResource.js","names":[],"sources":["../../src/resources/webSdkResource.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport { KEY_MXL_APP_INSTANCE_ID } from '../constants/index.ts';\nimport { getAppInstanceId } from './appInstanceId.ts';\nimport {\n MXL_SERVICE_NAME,\n NATIVE_FRAMEWORK,\n SDK_VERSION,\n} from './constants/index.ts';\nimport type { GetWebSDKResourceArgs } from './types.ts';\n\n/** Matches OpenTelemetry `OTEL_SERVICE_NAME` default ([docs](https://opentelemetry.io/docs/languages/sdk-configuration/general/)). */\nexport const OTEL_DEFAULT_SERVICE_NAME = 'unknown_service';\n\n/**\n * Applied first so the `resource` option in {@link initSDK} can override `service.name`\n * unless the SDK supplies a canonical value afterward.\n */\nexport const getWebSDKOverridableResource = ({\n serviceName,\n}: {\n serviceName: string;\n}): Resource => {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n });\n};\n\n/**\n * Returns SDK resource attributes that must not be overridden by user-provided resources.\n * These are merged last so they take precedence where applicable.\n */\nexport const getWebSDKResource = ({\n diagLogger,\n appVersion,\n pageSessionStorage,\n}: GetWebSDKResourceArgs): Resource => {\n return resourceFromAttributes({\n [ATTR_TELEMETRY_SDK_NAME]: MXL_SERVICE_NAME,\n // NOTE: `appVersion` may originate from TEMPLATE_APP_VERSION, which is padded\n // with whitespace by the CLI to keep sourcemap offsets stable. The padding is\n // intentionally trimmed earlier (see validateAppVersion in utils.ts), so by the\n // time it is passed here `appVersion` should already be a normalized value.\n app_version: appVersion,\n app_framework: NATIVE_FRAMEWORK,\n sdk_version: SDK_VERSION,\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_VERSION,\n sdk_simple_version: 1,\n sdk_platform: 'web',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: 'webjs',\n [KEY_MXL_APP_INSTANCE_ID]: getAppInstanceId(pageSessionStorage, diagLogger),\n [ATTR_USER_AGENT_ORIGINAL]: window.navigator.userAgent,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n });\n};\n"],"mappings":";;;;;;;AAmBA,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC,EAC3C,kBAGc;AACd,QAAO,uBAAuB,GAC3B,oBAAoB,aACtB,CAAC;;;;;;AAOJ,MAAa,qBAAqB,EAChC,YACA,YACA,yBACqC;AACrC,QAAO,uBAAuB;GAC3B,0BAA0B;EAK3B,aAAa;EACb,eAAA;EACA,aAAa;GACZ,6BAA6B;EAC9B,oBAAoB;EACpB,cAAc;GACb,8BAA8B;GAC9B,0BAA0B,iBAAiB,oBAAoB,WAAW;GAC1E,2BAA2B,OAAO,UAAU;EAC7C,mBAAmB,GAAG,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO;EAC5D,CAAC"}
1
+ {"version":3,"file":"webSdkResource.js","names":[],"sources":["../../src/resources/webSdkResource.ts"],"sourcesContent":["import type { Resource } from '@opentelemetry/resources';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport { KEY_MXL_APP_INSTANCE_ID } from '../constants';\nimport { getAppInstanceId } from './appInstanceId';\nimport { MXL_SERVICE_NAME, NATIVE_FRAMEWORK, SDK_VERSION } from './constants';\nimport type { GetWebSDKResourceArgs } from './types';\n\n/** Matches OpenTelemetry `OTEL_SERVICE_NAME` default ([docs](https://opentelemetry.io/docs/languages/sdk-configuration/general/)). */\nexport const OTEL_DEFAULT_SERVICE_NAME = 'unknown_service';\n\n/**\n * Applied first so the `resource` option in {@link initSDK} can override `service.name`\n * unless the SDK supplies a canonical value afterward.\n */\nexport const getWebSDKOverridableResource = ({\n serviceName,\n}: {\n serviceName: string;\n}): Resource => {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: serviceName,\n });\n};\n\n/**\n * Returns SDK resource attributes that must not be overridden by user-provided resources.\n * These are merged last so they take precedence where applicable.\n */\nexport const getWebSDKResource = ({\n diagLogger,\n appVersion,\n pageSessionStorage,\n}: GetWebSDKResourceArgs): Resource => {\n return resourceFromAttributes({\n [ATTR_TELEMETRY_SDK_NAME]: MXL_SERVICE_NAME,\n // NOTE: `appVersion` may originate from TEMPLATE_APP_VERSION, which is padded\n // with whitespace by the CLI to keep sourcemap offsets stable. The padding is\n // intentionally trimmed earlier (see validateAppVersion in utils.ts), so by the\n // time it is passed here `appVersion` should already be a normalized value.\n app_version: appVersion,\n app_framework: NATIVE_FRAMEWORK,\n sdk_version: SDK_VERSION,\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_VERSION,\n sdk_simple_version: 1,\n sdk_platform: 'web',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: 'webjs',\n [KEY_MXL_APP_INSTANCE_ID]: getAppInstanceId(pageSessionStorage, diagLogger),\n [ATTR_USER_AGENT_ORIGINAL]: window.navigator.userAgent,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n });\n};\n"],"mappings":";;;;;;;AAeA,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC,EAC3C,kBAGc;AACd,QAAO,uBAAuB,GAC3B,oBAAoB,aACtB,CAAC;;;;;;AAOJ,MAAa,qBAAqB,EAChC,YACA,YACA,yBACqC;AACrC,QAAO,uBAAuB;GAC3B,0BAA0B;EAK3B,aAAa;EACb,eAAA;EACA,aAAa;GACZ,6BAA6B;EAC9B,oBAAoB;EACpB,cAAc;GACb,8BAA8B;GAC9B,0BAA0B,iBAAiB,oBAAoB,WAAW;GAC1E,2BAA2B,OAAO,UAAU;EAC7C,mBAAmB,GAAG,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO;EAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultAttributeScrubbers.cjs","names":["ATTR_URL_FULL","SEMATTRS_HTTP_URL","ATTR_URL_PATH","ATTR_URL_QUERY"],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common/index.ts';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;;;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAKA,oCAAAA;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
1
+ {"version":3,"file":"defaultAttributeScrubbers.cjs","names":["ATTR_URL_FULL","SEMATTRS_HTTP_URL","ATTR_URL_PATH","ATTR_URL_QUERY"],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;;;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAKA,oCAAAA;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAKC,oCAAAA;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultAttributeScrubbers.js","names":[],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common/index.ts';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
1
+ {"version":3,"file":"defaultAttributeScrubbers.js","names":[],"sources":["../../src/sdk/defaultAttributeScrubbers.ts"],"sourcesContent":["import {\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { AttributeScrubber } from '../common';\n\nconst HOST_CREDENTIALS_REGEX = /\\/\\/(.+):(.+)@(.+)\\//;\n\n// https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L41\nconst DEFAULT_SENSITIVE_TOKENS = [\n 'AWSAccessKeyId',\n 'Signature',\n 'sig',\n '`X-Goog-Signature',\n 'password',\n 'auth',\n 'pw',\n 'token',\n];\n\ntype scrubArgs = {\n value: string;\n queryParamRegex: RegExp;\n scrubPath: boolean;\n scrubQuery: boolean;\n};\n\nconst scrubURL = ({\n value,\n queryParamRegex,\n scrubPath,\n scrubQuery,\n}: scrubArgs) => {\n let scrubbed = value;\n\n if (scrubPath) {\n // scrub credentials passed via URL in form of `https://username:password@www.example.com/`\n scrubbed = scrubbed.replace(\n HOST_CREDENTIALS_REGEX,\n '//REDACTED:REDACTED@$3/',\n );\n }\n\n if (scrubQuery) {\n // scrub query string parameters of the form \"key=sensitiveValue\"\n scrubbed = scrubbed.replaceAll(queryParamRegex, '$1$2=REDACTED');\n }\n\n return scrubbed;\n};\n\nexport const getDefaultAttributeScrubbers = (\n additionalSensitiveQueryTokens?: string[],\n): AttributeScrubber[] => {\n const sensitiveQueryTokens = [\n ...DEFAULT_SENSITIVE_TOKENS,\n ...(additionalSensitiveQueryTokens || []),\n ];\n\n const queryParamRegex = new RegExp(\n `(^|&|\\\\?)(${sensitiveQueryTokens.join('|')})=[^&]+`,\n 'g',\n );\n\n return [\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L30\n key: ATTR_URL_FULL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // Adding to catch the deprecated attribute that was replaced by ATTR_URL_FULL\n key: SEMATTRS_HTTP_URL,\n scrub: (value: string) =>\n scrubURL({ value, queryParamRegex, scrubPath: true, scrubQuery: true }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L57\n key: ATTR_URL_PATH,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: true,\n scrubQuery: false,\n }),\n },\n {\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L59\n key: ATTR_URL_QUERY,\n scrub: (value: string) =>\n scrubURL({\n value,\n queryParamRegex,\n scrubPath: false,\n scrubQuery: true,\n }),\n },\n\n // NOTE that url.original could contain sensitive information however this is intentionally not scrubbed as per the\n // semantic convention:\n // https://github.com/open-telemetry/semantic-conventions/blob/3b64cb31022feaacb410bfd6e571c1f19b5fbce0/docs/registry/attributes/url.md?plain=1#L54\n ];\n};\n"],"mappings":";;AAQA,MAAM,yBAAyB;AAG/B,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AASD,MAAM,YAAY,EAChB,OACA,iBACA,WACA,iBACe;CACf,IAAI,WAAW;AAEf,KAAI,UAEF,YAAW,SAAS,QAClB,wBACA,0BACD;AAGH,KAAI,WAEF,YAAW,SAAS,WAAW,iBAAiB,gBAAgB;AAGlE,QAAO;;AAGT,MAAa,gCACX,mCACwB;CACxB,MAAM,uBAAuB,CAC3B,GAAG,0BACH,GAAI,kCAAkC,EAAE,CACzC;CAED,MAAM,kBAAkB,IAAI,OAC1B,aAAa,qBAAqB,KAAK,IAAI,CAAC,UAC5C,IACD;AAED,QAAO;EACL;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IAAE;IAAO;IAAiB,WAAW;IAAM,YAAY;IAAM,CAAC;GAC1E;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EACD;GAEE,KAAK;GACL,QAAQ,UACN,SAAS;IACP;IACA;IACA,WAAW;IACX,YAAY;IACb,CAAC;GACL;EAKF"}
@@ -35,8 +35,8 @@ const require_processors_UserSpanProcessor_UserSpanProcessor = require("../proce
35
35
  const require_propagators_MXLW3CTraceContextPropagator_MXLW3CTraceContextPropagator = require("../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs");
36
36
  const require_sdk_defaultAttributeScrubbers = require("./defaultAttributeScrubbers.cjs");
37
37
  const require_sdk_registry = require("./registry.cjs");
38
- const require_sdk_setupSessionRecorder = require("./setupSessionRecorder.cjs");
39
38
  const require_sdk_setupDefaultInstrumentations = require("./setupDefaultInstrumentations.cjs");
39
+ const require_sdk_setupSessionRecorder = require("./setupSessionRecorder.cjs");
40
40
  const require_sdk_utils = require("./utils.cjs");
41
41
  let _opentelemetry_api = require("@opentelemetry/api");
42
42
  let _opentelemetry_resources = require("@opentelemetry/resources");