@safaricom-mxl/web-sdk 0.0.11 → 0.0.13
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.
- package/DATA_EXPORT.md +1 -1
- package/REACT.md +1 -1
- package/README.md +19 -28
- package/UPGRADING.md +2 -2
- package/dist/_virtual/_rolldown/runtime.cjs +7 -13
- package/dist/api-logs/api/LogAPI/LogAPI.cjs +6 -7
- package/dist/api-logs/api/LogAPI/LogAPI.cjs.map +1 -1
- package/dist/api-logs/api/LogAPI/LogAPI.d.cts +0 -1
- package/dist/api-logs/api/LogAPI/LogAPI.d.cts.map +1 -1
- package/dist/api-logs/api/LogAPI/LogAPI.d.ts +0 -2
- package/dist/api-logs/api/LogAPI/LogAPI.d.ts.map +1 -1
- package/dist/api-logs/api/LogAPI/LogAPI.js +1 -2
- package/dist/api-logs/api/LogAPI/LogAPI.js.map +1 -1
- package/dist/api-logs/api/LogAPI/index.cjs +3 -4
- package/dist/api-logs/api/LogAPI/index.js +1 -2
- package/dist/api-logs/api/LogAPI/types.d.cts +0 -1
- package/dist/api-logs/api/LogAPI/types.d.cts.map +1 -1
- package/dist/api-logs/api/LogAPI/types.d.ts +0 -2
- package/dist/api-logs/api/LogAPI/types.d.ts.map +1 -1
- package/dist/api-logs/api/index.cjs +3 -4
- package/dist/api-logs/api/index.d.ts +0 -1
- package/dist/api-logs/api/index.js +1 -2
- package/dist/api-logs/index.cjs +5 -6
- package/dist/api-logs/index.d.ts +0 -1
- package/dist/api-logs/index.js +1 -2
- package/dist/api-logs/logAPI.cjs +3 -5
- package/dist/api-logs/logAPI.cjs.map +1 -1
- package/dist/api-logs/logAPI.js +1 -2
- package/dist/api-logs/logAPI.js.map +1 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs +2 -3
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.cjs.map +1 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.d.cts +0 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.d.cts.map +1 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.d.ts +0 -2
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.d.ts.map +1 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js +1 -1
- package/dist/api-logs/manager/NoOpLogManager/NoOpLogManager.js.map +1 -1
- package/dist/api-logs/manager/NoOpLogManager/index.cjs +3 -4
- package/dist/api-logs/manager/NoOpLogManager/index.js +1 -2
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.cjs +3 -5
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.cjs.map +1 -1
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.d.cts +0 -1
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.d.cts.map +1 -1
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.d.ts +0 -2
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.d.ts.map +1 -1
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.js +1 -2
- package/dist/api-logs/manager/ProxyLogManager/ProxyLogManager.js.map +1 -1
- package/dist/api-logs/manager/ProxyLogManager/index.cjs +3 -4
- package/dist/api-logs/manager/ProxyLogManager/index.js +1 -2
- package/dist/api-logs/manager/index.cjs +4 -5
- package/dist/api-logs/manager/index.js +1 -2
- package/dist/api-page/api/PageAPI/PageAPI.cjs +6 -7
- package/dist/api-page/api/PageAPI/PageAPI.cjs.map +1 -1
- package/dist/api-page/api/PageAPI/PageAPI.js +1 -2
- package/dist/api-page/api/PageAPI/PageAPI.js.map +1 -1
- package/dist/api-page/api/PageAPI/index.cjs +3 -4
- package/dist/api-page/api/PageAPI/index.js +1 -2
- package/dist/api-page/api/index.cjs +3 -4
- package/dist/api-page/api/index.js +1 -2
- package/dist/api-page/index.cjs +5 -6
- package/dist/api-page/index.js +1 -2
- package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.cjs +2 -3
- package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.cjs.map +1 -1
- package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.js +1 -1
- package/dist/api-page/manager/NoOpPageManager/NoOpPageManager.js.map +1 -1
- package/dist/api-page/manager/NoOpPageManager/index.cjs +3 -4
- package/dist/api-page/manager/NoOpPageManager/index.js +1 -2
- package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.cjs +3 -5
- package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.cjs.map +1 -1
- package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.js +1 -2
- package/dist/api-page/manager/ProxyPageManager/ProxyPageManager.js.map +1 -1
- package/dist/api-page/manager/ProxyPageManager/index.cjs +3 -4
- package/dist/api-page/manager/ProxyPageManager/index.js +1 -2
- package/dist/api-page/manager/index.cjs +4 -5
- package/dist/api-page/manager/index.js +1 -2
- package/dist/api-page/pageAPI.cjs +3 -5
- package/dist/api-page/pageAPI.cjs.map +1 -1
- package/dist/api-page/pageAPI.js +1 -2
- package/dist/api-page/pageAPI.js.map +1 -1
- package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs +6 -7
- package/dist/api-sessions/api/SessionAPI/SessionAPI.cjs.map +1 -1
- package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts +0 -1
- package/dist/api-sessions/api/SessionAPI/SessionAPI.d.cts.map +1 -1
- package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts +0 -2
- package/dist/api-sessions/api/SessionAPI/SessionAPI.d.ts.map +1 -1
- package/dist/api-sessions/api/SessionAPI/SessionAPI.js +1 -2
- package/dist/api-sessions/api/SessionAPI/SessionAPI.js.map +1 -1
- package/dist/api-sessions/api/SessionAPI/index.cjs +3 -4
- package/dist/api-sessions/api/SessionAPI/index.js +1 -2
- package/dist/api-sessions/api/SessionAPI/types.d.cts +0 -1
- package/dist/api-sessions/api/SessionAPI/types.d.cts.map +1 -1
- package/dist/api-sessions/api/SessionAPI/types.d.ts +0 -2
- package/dist/api-sessions/api/SessionAPI/types.d.ts.map +1 -1
- package/dist/api-sessions/api/index.cjs +3 -4
- package/dist/api-sessions/api/index.d.ts +0 -1
- package/dist/api-sessions/api/index.js +1 -2
- package/dist/api-sessions/index.cjs +5 -6
- package/dist/api-sessions/index.d.ts +0 -1
- package/dist/api-sessions/index.js +1 -2
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs +2 -3
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.cjs.map +1 -1
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.ts +0 -2
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.d.ts.map +1 -1
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js +1 -1
- package/dist/api-sessions/manager/NoOpSpanSessionManager/NoOpSpanSessionManager.js.map +1 -1
- package/dist/api-sessions/manager/NoOpSpanSessionManager/index.cjs +3 -4
- package/dist/api-sessions/manager/NoOpSpanSessionManager/index.js +1 -2
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs +3 -5
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.cjs.map +1 -1
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.ts +0 -2
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.d.ts.map +1 -1
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js +1 -2
- package/dist/api-sessions/manager/ProxySpanSessionManager/ProxySpanSessionManager.js.map +1 -1
- package/dist/api-sessions/manager/ProxySpanSessionManager/index.cjs +3 -4
- package/dist/api-sessions/manager/ProxySpanSessionManager/index.js +1 -2
- package/dist/api-sessions/manager/index.cjs +4 -5
- package/dist/api-sessions/manager/index.d.ts +0 -2
- package/dist/api-sessions/manager/index.js +1 -2
- package/dist/api-sessions/manager/types.d.cts +3 -0
- package/dist/api-sessions/manager/types.d.cts.map +1 -1
- package/dist/api-sessions/manager/types.d.ts +3 -1
- package/dist/api-sessions/manager/types.d.ts.map +1 -1
- package/dist/api-sessions/sessionAPI.cjs +3 -5
- package/dist/api-sessions/sessionAPI.cjs.map +1 -1
- package/dist/api-sessions/sessionAPI.js +1 -2
- package/dist/api-sessions/sessionAPI.js.map +1 -1
- package/dist/api-traces/api/TraceAPI/TraceAPI.cjs +6 -7
- package/dist/api-traces/api/TraceAPI/TraceAPI.cjs.map +1 -1
- package/dist/api-traces/api/TraceAPI/TraceAPI.d.cts +0 -1
- package/dist/api-traces/api/TraceAPI/TraceAPI.d.cts.map +1 -1
- package/dist/api-traces/api/TraceAPI/TraceAPI.d.ts +0 -2
- package/dist/api-traces/api/TraceAPI/TraceAPI.d.ts.map +1 -1
- package/dist/api-traces/api/TraceAPI/TraceAPI.js +1 -2
- package/dist/api-traces/api/TraceAPI/TraceAPI.js.map +1 -1
- package/dist/api-traces/api/TraceAPI/index.cjs +3 -4
- package/dist/api-traces/api/TraceAPI/index.js +1 -2
- package/dist/api-traces/api/TraceAPI/types.d.cts.map +1 -1
- package/dist/api-traces/api/TraceAPI/types.d.ts +0 -1
- package/dist/api-traces/api/TraceAPI/types.d.ts.map +1 -1
- package/dist/api-traces/api/index.cjs +3 -4
- package/dist/api-traces/api/index.d.ts +0 -1
- package/dist/api-traces/api/index.js +1 -2
- package/dist/api-traces/index.cjs +5 -6
- package/dist/api-traces/index.d.ts +0 -2
- package/dist/api-traces/index.js +1 -2
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.cjs +4 -5
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.cjs.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.d.ts +0 -2
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.d.ts.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.js +1 -2
- package/dist/api-traces/manager/NoOpTraceManager/NoOpTraceManager.js.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.cjs +3 -4
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.cjs.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.ts +0 -1
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.d.ts.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.js +1 -2
- package/dist/api-traces/manager/NoOpTraceManager/NonRecordingExtendedSpan.js.map +1 -1
- package/dist/api-traces/manager/NoOpTraceManager/index.cjs +3 -4
- package/dist/api-traces/manager/NoOpTraceManager/index.js +1 -2
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.cjs +3 -5
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.cjs.map +1 -1
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.d.ts +0 -2
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.d.ts.map +1 -1
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.js +1 -2
- package/dist/api-traces/manager/ProxyTraceManager/ProxyTraceManager.js.map +1 -1
- package/dist/api-traces/manager/ProxyTraceManager/index.cjs +3 -4
- package/dist/api-traces/manager/ProxyTraceManager/index.js +1 -2
- package/dist/api-traces/manager/index.cjs +4 -5
- package/dist/api-traces/manager/index.d.ts +0 -2
- package/dist/api-traces/manager/index.js +1 -2
- package/dist/api-traces/manager/types.d.ts +0 -1
- package/dist/api-traces/manager/types.d.ts.map +1 -1
- package/dist/api-traces/traceAPI.cjs +3 -5
- package/dist/api-traces/traceAPI.cjs.map +1 -1
- package/dist/api-traces/traceAPI.js +1 -2
- package/dist/api-traces/traceAPI.js.map +1 -1
- package/dist/api-users/api/UserAPI/UserAPI.cjs +6 -7
- package/dist/api-users/api/UserAPI/UserAPI.cjs.map +1 -1
- package/dist/api-users/api/UserAPI/UserAPI.js +1 -2
- package/dist/api-users/api/UserAPI/UserAPI.js.map +1 -1
- package/dist/api-users/api/UserAPI/index.cjs +3 -4
- package/dist/api-users/api/UserAPI/index.js +1 -2
- package/dist/api-users/api/index.cjs +3 -4
- package/dist/api-users/api/index.js +1 -2
- package/dist/api-users/index.cjs +6 -7
- package/dist/api-users/index.js +1 -2
- package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.cjs +2 -3
- package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.cjs.map +1 -1
- package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.js +1 -1
- package/dist/api-users/manager/NoOpUserManager/NoOpUserManager.js.map +1 -1
- package/dist/api-users/manager/NoOpUserManager/index.cjs +3 -4
- package/dist/api-users/manager/NoOpUserManager/index.js +1 -2
- package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.cjs +3 -5
- package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.cjs.map +1 -1
- package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.js +1 -2
- package/dist/api-users/manager/ProxyUserManager/ProxyUserManager.js.map +1 -1
- package/dist/api-users/manager/ProxyUserManager/index.cjs +3 -4
- package/dist/api-users/manager/ProxyUserManager/index.js +1 -2
- package/dist/api-users/manager/constants/index.cjs +2 -3
- package/dist/api-users/manager/constants/index.cjs.map +1 -1
- package/dist/api-users/manager/constants/index.js +1 -1
- package/dist/api-users/manager/index.cjs +5 -6
- package/dist/api-users/manager/index.js +1 -2
- package/dist/api-users/userAPI.cjs +3 -5
- package/dist/api-users/userAPI.cjs.map +1 -1
- package/dist/api-users/userAPI.js +1 -2
- package/dist/api-users/userAPI.js.map +1 -1
- package/dist/common/attributes.cjs +3 -5
- package/dist/common/attributes.cjs.map +1 -1
- package/dist/common/attributes.js +1 -2
- package/dist/common/attributes.js.map +1 -1
- package/dist/common/index.cjs +3 -4
- package/dist/common/index.js +1 -2
- package/dist/common/types.d.cts +1 -0
- package/dist/common/types.d.cts.map +1 -1
- package/dist/common/types.d.ts +1 -0
- package/dist/common/types.d.ts.map +1 -1
- package/dist/constants/attributes.cjs +11 -3
- package/dist/constants/attributes.cjs.map +1 -1
- package/dist/constants/attributes.d.cts +11 -4
- package/dist/constants/attributes.d.cts.map +1 -1
- package/dist/constants/attributes.d.ts +11 -4
- package/dist/constants/attributes.d.ts.map +1 -1
- package/dist/constants/attributes.js +10 -2
- package/dist/constants/attributes.js.map +1 -1
- package/dist/constants/index.cjs +4 -4
- package/dist/constants/index.d.cts +2 -2
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.js +2 -3
- package/dist/exporters/BaseFetchExporter/BaseFetchExporter.cjs +2 -3
- package/dist/exporters/BaseFetchExporter/BaseFetchExporter.cjs.map +1 -1
- package/dist/exporters/BaseFetchExporter/BaseFetchExporter.js +1 -1
- package/dist/exporters/BaseFetchExporter/BaseFetchExporter.js.map +1 -1
- package/dist/exporters/BaseFetchExporter/index.cjs +3 -4
- package/dist/exporters/BaseFetchExporter/index.js +1 -2
- package/dist/exporters/MXLLogExporter/MXLLogExporter.cjs +6 -7
- package/dist/exporters/MXLLogExporter/MXLLogExporter.cjs.map +1 -1
- package/dist/exporters/MXLLogExporter/MXLLogExporter.js +1 -2
- package/dist/exporters/MXLLogExporter/MXLLogExporter.js.map +1 -1
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs +9 -6
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.cjs.map +1 -1
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.cts +4 -0
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.cts.map +1 -1
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.ts +4 -1
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.d.ts.map +1 -1
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js +5 -2
- package/dist/exporters/MXLLogExporter/OTLPFetchLogExporter.js.map +1 -1
- package/dist/exporters/MXLLogExporter/index.cjs +3 -4
- package/dist/exporters/MXLLogExporter/index.js +1 -2
- package/dist/exporters/MXLLogExporter/utils.cjs +3 -4
- package/dist/exporters/MXLLogExporter/utils.cjs.map +1 -1
- package/dist/exporters/MXLLogExporter/utils.js +1 -2
- package/dist/exporters/MXLLogExporter/utils.js.map +1 -1
- package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs +6 -7
- package/dist/exporters/MXLTraceExporter/MXLTraceExporter.cjs.map +1 -1
- package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js +1 -2
- package/dist/exporters/MXLTraceExporter/MXLTraceExporter.js.map +1 -1
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs +5 -6
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.cjs.map +1 -1
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.d.ts +0 -1
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.d.ts.map +1 -1
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js +1 -2
- package/dist/exporters/MXLTraceExporter/OTLPFetchTraceExporter.js.map +1 -1
- package/dist/exporters/MXLTraceExporter/index.cjs +3 -4
- package/dist/exporters/MXLTraceExporter/index.js +1 -2
- package/dist/exporters/MXLTraceExporter/utils.cjs +3 -4
- package/dist/exporters/MXLTraceExporter/utils.cjs.map +1 -1
- package/dist/exporters/MXLTraceExporter/utils.js +1 -2
- package/dist/exporters/MXLTraceExporter/utils.js.map +1 -1
- package/dist/exporters/constants.cjs +3 -6
- package/dist/exporters/constants.cjs.map +1 -1
- package/dist/exporters/constants.js +2 -4
- package/dist/exporters/constants.js.map +1 -1
- package/dist/exporters/index.cjs +7 -8
- package/dist/exporters/index.d.ts +0 -2
- package/dist/exporters/index.js +1 -2
- package/dist/exporters/otlpBrowserFetchExportDelegate.cjs +5 -6
- package/dist/exporters/otlpBrowserFetchExportDelegate.cjs.map +1 -1
- package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts +2 -2
- package/dist/exporters/otlpBrowserFetchExportDelegate.d.cts.map +1 -1
- package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts +2 -2
- package/dist/exporters/otlpBrowserFetchExportDelegate.d.ts.map +1 -1
- package/dist/exporters/otlpBrowserFetchExportDelegate.js +1 -2
- package/dist/exporters/otlpBrowserFetchExportDelegate.js.map +1 -1
- package/dist/exporters/utils.cjs +2 -3
- package/dist/exporters/utils.cjs.map +1 -1
- package/dist/exporters/utils.d.cts.map +1 -1
- package/dist/exporters/utils.d.ts.map +1 -1
- package/dist/exporters/utils.js +1 -1
- package/dist/exporters/utils.js.map +1 -1
- package/dist/index.cjs +17 -16
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -6
- package/dist/index.js +2 -2
- package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.cjs +3 -4
- package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.cjs.map +1 -1
- package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.js +1 -2
- package/dist/instrumentations/InstrumentationAbstract/InstrumentationAbstract.js.map +1 -1
- package/dist/instrumentations/InstrumentationAbstract/index.cjs +3 -4
- package/dist/instrumentations/InstrumentationAbstract/index.js +1 -2
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs +16 -8
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.cjs.map +1 -1
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.cts +7 -1
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.cts.map +1 -1
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.ts +7 -5
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.d.ts.map +1 -1
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js +11 -3
- package/dist/instrumentations/MXLInstrumentationBase/MXLInstrumentationBase.js.map +1 -1
- package/dist/instrumentations/MXLInstrumentationBase/index.cjs +3 -4
- package/dist/instrumentations/MXLInstrumentationBase/index.js +1 -2
- package/dist/instrumentations/MXLInstrumentationBase/types.d.cts +3 -0
- package/dist/instrumentations/MXLInstrumentationBase/types.d.cts.map +1 -1
- package/dist/instrumentations/MXLInstrumentationBase/types.d.ts +3 -1
- package/dist/instrumentations/MXLInstrumentationBase/types.d.ts.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs +4 -5
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.d.ts +0 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js +1 -2
- package/dist/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.js.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/clicks/ClicksInstrumentation/index.js +1 -2
- package/dist/instrumentations/clicks/ClicksInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/clicks/ClicksInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/utils.cjs +2 -3
- package/dist/instrumentations/clicks/ClicksInstrumentation/utils.cjs.map +1 -1
- package/dist/instrumentations/clicks/ClicksInstrumentation/utils.js +1 -1
- package/dist/instrumentations/clicks/index.cjs +3 -4
- package/dist/instrumentations/clicks/index.d.ts +0 -1
- package/dist/instrumentations/clicks/index.js +1 -2
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs +12 -13
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts +0 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js +8 -9
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/DocumentLoadInstrumentation.js.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/AttributeNames.cjs +2 -3
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/AttributeNames.cjs.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/AttributeNames.js +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/AttributeNames.js.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/EventNames.cjs +2 -3
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/EventNames.cjs.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/EventNames.js +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/enums/EventNames.js.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/index.cjs +4 -5
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/index.js +1 -2
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/types.d.ts +0 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs +6 -7
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.cjs.map +1 -1
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js +4 -5
- package/dist/instrumentations/document-load/DocumentLoadInstrumentation/utils.js.map +1 -1
- package/dist/instrumentations/document-load/index.cjs +4 -5
- package/dist/instrumentations/document-load/index.d.ts +0 -1
- package/dist/instrumentations/document-load/index.js +1 -2
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs +67 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.cjs.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.d.cts +19 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.d.cts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.d.ts +19 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.d.ts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js +66 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/ElementTimingInstrumentation.js.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.cjs +21 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.cjs.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.d.cts +12 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.d.cts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.d.ts +12 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.d.ts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.js +13 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/constants.js.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/index.cjs +3 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/index.d.cts +3 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/index.d.ts +3 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/index.js +2 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.cjs +0 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.d.cts +16 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.d.cts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.d.ts +16 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.d.ts.map +1 -0
- package/dist/instrumentations/element-timing/ElementTimingInstrumentation/types.js +0 -0
- package/dist/instrumentations/element-timing/index.cjs +3 -0
- package/dist/instrumentations/element-timing/index.d.cts +3 -0
- package/dist/instrumentations/element-timing/index.d.ts +3 -0
- package/dist/instrumentations/element-timing/index.js +2 -0
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs +3 -4
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.d.ts +0 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js +1 -2
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/EmptyRootInstrumentation.js.map +1 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/index.js +1 -2
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/empty-root/EmptyRootInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/empty-root/index.cjs +3 -4
- package/dist/instrumentations/empty-root/index.d.ts +0 -1
- package/dist/instrumentations/empty-root/index.js +1 -2
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs +3 -4
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.d.ts +0 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js +1 -2
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/GlobalExceptionInstrumentation.js.map +1 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/index.js +1 -2
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/exceptions/GlobalExceptionInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/exceptions/index.cjs +3 -4
- package/dist/instrumentations/exceptions/index.d.ts +0 -1
- package/dist/instrumentations/exceptions/index.js +1 -2
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs +7 -8
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.cjs.map +1 -1
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js +3 -4
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/MXLErrorBoundary.js.map +1 -1
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/index.cjs +3 -4
- package/dist/instrumentations/exceptions/react/MXLErrorBoundary/index.js +1 -2
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs +3 -4
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js +1 -2
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/MXLFetchInstrumentation.js.map +1 -1
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/fetch/MXLFetchInstrumentation/index.js +1 -2
- package/dist/instrumentations/fetch/index.cjs +3 -4
- package/dist/instrumentations/fetch/index.d.ts +0 -1
- package/dist/instrumentations/fetch/index.js +1 -2
- package/dist/instrumentations/index.cjs +19 -20
- package/dist/instrumentations/index.d.cts +9 -9
- package/dist/instrumentations/index.d.ts +9 -19
- package/dist/instrumentations/index.js +5 -6
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs +168 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.cjs.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.cts +33 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.cts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.ts +33 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.d.ts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js +166 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/LoafInstrumentation.js.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.cjs +29 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.cjs.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.d.cts +16 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.d.cts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.d.ts +16 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.d.ts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.js +17 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/constants.js.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/index.cjs +3 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/index.d.cts +3 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/index.d.ts +3 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/index.js +2 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.cjs +0 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.d.cts +6 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.d.cts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.d.ts +6 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.d.ts.map +1 -0
- package/dist/instrumentations/loaf/LoafInstrumentation/types.js +0 -0
- package/dist/instrumentations/loaf/index.cjs +3 -0
- package/dist/instrumentations/loaf/index.d.cts +3 -0
- package/dist/instrumentations/loaf/index.d.ts +3 -0
- package/dist/instrumentations/loaf/index.js +2 -0
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs +7 -8
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.d.ts +0 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js +4 -5
- package/dist/instrumentations/navigation/NavigationInstrumentation/NavigationInstrumentation.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/index.cjs +4 -5
- package/dist/instrumentations/navigation/NavigationInstrumentation/index.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/instance.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/instance.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.d.cts +0 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.d.ts +0 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/createReactRouterNavigationInstrumentation.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/index.cjs +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/index.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs +8 -9
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV5/withMXLRoutingLegacy.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/index.cjs +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/index.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs +5 -6
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Data/listenToRouterChanges.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/index.cjs +3 -4
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/index.js +1 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs +8 -9
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.cjs.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js +4 -5
- package/dist/instrumentations/navigation/NavigationInstrumentation/react/reactRouterV6Declarative/withMXLRouting.js.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/navigation/NavigationInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/navigation/NavigationInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/navigation/index.cjs +4 -5
- package/dist/instrumentations/navigation/index.d.ts +0 -1
- package/dist/instrumentations/navigation/index.js +1 -2
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs +59 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.cjs.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.d.cts +19 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.d.cts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.d.ts +19 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.d.ts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js +57 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/ServerTimingInstrumentation.js.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.cjs +13 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.cjs.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.d.cts +8 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.d.cts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.d.ts +8 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.d.ts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.js +9 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/constants.js.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/index.cjs +3 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/index.d.cts +3 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/index.d.ts +3 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/index.js +2 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.cjs +0 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.d.cts +7 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.d.cts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.d.ts +7 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.d.ts.map +1 -0
- package/dist/instrumentations/server-timing/ServerTimingInstrumentation/types.js +0 -0
- package/dist/instrumentations/server-timing/index.cjs +3 -0
- package/dist/instrumentations/server-timing/index.d.cts +3 -0
- package/dist/instrumentations/server-timing/index.d.ts +3 -0
- package/dist/instrumentations/server-timing/index.js +2 -0
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs +7 -8
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.ts +0 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js +1 -2
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/SpanSessionBrowserActivityInstrumentation.js.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.cjs +2 -3
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/constants.js +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/index.js +1 -2
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/session/SpanSessionBrowserActivityInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs +3 -4
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.ts +0 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js +1 -2
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/SpanSessionOnLoadInstrumentation.js.map +1 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/index.js +1 -2
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/session/SpanSessionOnLoadInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs +4 -5
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.ts +0 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js +1 -2
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/SpanSessionTimeoutInstrumentation.js.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.cjs +2 -3
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/constants.js +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/index.js +1 -2
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.cts +0 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.ts +0 -2
- package/dist/instrumentations/session/SpanSessionTimeoutInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs +10 -73
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.cts +1 -14
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.ts +1 -17
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js +8 -71
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/SpanSessionVisibilityInstrumentation.js.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/index.js +1 -2
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.cts +1 -6
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.ts +1 -7
- package/dist/instrumentations/session/SpanSessionVisibilityInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/session/index.cjs +6 -11
- package/dist/instrumentations/session/index.d.cts +1 -5
- package/dist/instrumentations/session/index.d.ts +1 -11
- package/dist/instrumentations/session/index.js +1 -4
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs +95 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.cjs.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.d.cts +23 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.d.cts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.d.ts +23 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.d.ts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js +93 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/UserTimingInstrumentation.js.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.cjs +17 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.cjs.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.d.cts +10 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.d.cts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.d.ts +10 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.d.ts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.js +11 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/constants.js.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/index.cjs +3 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/index.d.cts +3 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/index.d.ts +3 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/index.js +2 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.cjs +0 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.d.cts +18 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.d.cts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.d.ts +18 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.d.ts.map +1 -0
- package/dist/instrumentations/user-timing/UserTimingInstrumentation/types.js +0 -0
- package/dist/instrumentations/user-timing/index.cjs +3 -0
- package/dist/instrumentations/user-timing/index.d.cts +3 -0
- package/dist/instrumentations/user-timing/index.d.ts +3 -0
- package/dist/instrumentations/user-timing/index.js +2 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs +79 -105
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.cts.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts +0 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.d.ts.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js +75 -101
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/WebVitalsInstrumentation.js.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.cjs +19 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.cjs.map +1 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.d.cts +11 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.d.cts.map +1 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.d.ts +11 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.d.ts.map +1 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.js +12 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/attributes.js.map +1 -0
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.cjs +60 -4
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.cjs.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.d.cts +9 -7
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.d.cts.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.d.ts +9 -7
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.d.ts.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.js +57 -3
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/constants.js.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/index.js +1 -2
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.cts +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.cts.map +1 -1
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.ts +1 -2
- package/dist/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.ts.map +1 -1
- package/dist/instrumentations/web-vitals/index.cjs +3 -4
- package/dist/instrumentations/web-vitals/index.d.ts +0 -1
- package/dist/instrumentations/web-vitals/index.js +1 -2
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs +3 -4
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.cjs.map +1 -1
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js +1 -2
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/MXLXHRInstrumentation.js.map +1 -1
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.cjs +3 -4
- package/dist/instrumentations/xhr/MXLXHRInstrumentation/index.js +1 -2
- package/dist/instrumentations/xhr/index.cjs +3 -4
- package/dist/instrumentations/xhr/index.d.ts +0 -1
- package/dist/instrumentations/xhr/index.js +1 -2
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs +43 -10
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.cjs.map +1 -1
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts +10 -0
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.cts.map +1 -1
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts +10 -1
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.d.ts.map +1 -1
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js +39 -6
- package/dist/managers/MXLConfigManager/MXLDynamicConfigManager.js.map +1 -1
- package/dist/managers/MXLConfigManager/constants.cjs +2 -3
- package/dist/managers/MXLConfigManager/constants.cjs.map +1 -1
- package/dist/managers/MXLConfigManager/constants.d.cts +0 -1
- package/dist/managers/MXLConfigManager/constants.d.cts.map +1 -1
- package/dist/managers/MXLConfigManager/constants.d.ts +0 -2
- package/dist/managers/MXLConfigManager/constants.d.ts.map +1 -1
- package/dist/managers/MXLConfigManager/constants.js +1 -1
- package/dist/managers/MXLConfigManager/index.cjs +3 -4
- package/dist/managers/MXLConfigManager/index.js +1 -2
- package/dist/managers/MXLConfigManager/types.d.cts +2 -1
- package/dist/managers/MXLConfigManager/types.d.cts.map +1 -1
- package/dist/managers/MXLConfigManager/types.d.ts +2 -2
- package/dist/managers/MXLConfigManager/types.d.ts.map +1 -1
- package/dist/managers/MXLConfigManager/utils.cjs +2 -3
- package/dist/managers/MXLConfigManager/utils.cjs.map +1 -1
- package/dist/managers/MXLConfigManager/utils.js +1 -1
- package/dist/managers/MXLLimitManager/MXLLimitManager.cjs +24 -8
- package/dist/managers/MXLLimitManager/MXLLimitManager.cjs.map +1 -1
- package/dist/managers/MXLLimitManager/MXLLimitManager.d.cts +3 -0
- package/dist/managers/MXLLimitManager/MXLLimitManager.d.cts.map +1 -1
- package/dist/managers/MXLLimitManager/MXLLimitManager.d.ts +3 -1
- package/dist/managers/MXLLimitManager/MXLLimitManager.d.ts.map +1 -1
- package/dist/managers/MXLLimitManager/MXLLimitManager.js +22 -6
- package/dist/managers/MXLLimitManager/MXLLimitManager.js.map +1 -1
- package/dist/managers/MXLLimitManager/constants.cjs +11 -8
- package/dist/managers/MXLLimitManager/constants.cjs.map +1 -1
- package/dist/managers/MXLLimitManager/constants.js +10 -6
- package/dist/managers/MXLLimitManager/constants.js.map +1 -1
- package/dist/managers/MXLLimitManager/index.cjs +4 -5
- package/dist/managers/MXLLimitManager/index.js +1 -2
- package/dist/managers/MXLLimitManager/types.d.cts +7 -1
- package/dist/managers/MXLLimitManager/types.d.cts.map +1 -1
- package/dist/managers/MXLLimitManager/types.d.ts +7 -2
- package/dist/managers/MXLLimitManager/types.d.ts.map +1 -1
- package/dist/managers/MXLLogManager/MXLLogManager.cjs +11 -12
- package/dist/managers/MXLLogManager/MXLLogManager.cjs.map +1 -1
- package/dist/managers/MXLLogManager/MXLLogManager.d.cts.map +1 -1
- package/dist/managers/MXLLogManager/MXLLogManager.d.ts +0 -2
- package/dist/managers/MXLLogManager/MXLLogManager.d.ts.map +1 -1
- package/dist/managers/MXLLogManager/MXLLogManager.js +5 -6
- package/dist/managers/MXLLogManager/MXLLogManager.js.map +1 -1
- package/dist/managers/MXLLogManager/index.cjs +3 -4
- package/dist/managers/MXLLogManager/index.js +1 -2
- package/dist/managers/MXLLogManager/types.d.ts +0 -3
- package/dist/managers/MXLLogManager/types.d.ts.map +1 -1
- package/dist/managers/MXLPageManager/MXLPageManager.cjs +3 -4
- package/dist/managers/MXLPageManager/MXLPageManager.cjs.map +1 -1
- package/dist/managers/MXLPageManager/MXLPageManager.js +1 -2
- package/dist/managers/MXLPageManager/MXLPageManager.js.map +1 -1
- package/dist/managers/MXLPageManager/index.cjs +3 -4
- package/dist/managers/MXLPageManager/index.js +1 -2
- package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs +3 -4
- package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.cjs.map +1 -1
- package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js +1 -2
- package/dist/managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager.js.map +1 -1
- package/dist/managers/MXLSDKFeaturesManager/index.cjs +3 -4
- package/dist/managers/MXLSDKFeaturesManager/index.js +1 -2
- package/dist/managers/MXLSDKFeaturesManager/types.d.cts +0 -1
- package/dist/managers/MXLSDKFeaturesManager/types.d.cts.map +1 -1
- package/dist/managers/MXLSDKFeaturesManager/types.d.ts +0 -2
- package/dist/managers/MXLSDKFeaturesManager/types.d.ts.map +1 -1
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs +18 -17
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.cjs.map +1 -1
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts +3 -1
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.cts.map +1 -1
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts +3 -3
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.d.ts.map +1 -1
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js +9 -8
- package/dist/managers/MXLSpanSessionManager/MXLSpanSessionManager.js.map +1 -1
- package/dist/managers/MXLSpanSessionManager/constants.cjs +2 -3
- package/dist/managers/MXLSpanSessionManager/constants.cjs.map +1 -1
- package/dist/managers/MXLSpanSessionManager/constants.js +1 -1
- package/dist/managers/MXLSpanSessionManager/index.cjs +3 -4
- package/dist/managers/MXLSpanSessionManager/index.js +1 -2
- package/dist/managers/MXLSpanSessionManager/types.d.cts +5 -0
- package/dist/managers/MXLSpanSessionManager/types.d.cts.map +1 -1
- package/dist/managers/MXLSpanSessionManager/types.d.ts +5 -3
- package/dist/managers/MXLSpanSessionManager/types.d.ts.map +1 -1
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs +3 -4
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.cjs.map +1 -1
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.cts.map +1 -1
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts +0 -1
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.d.ts.map +1 -1
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.js +1 -2
- package/dist/managers/MXLTraceManager/MXLExtendedSpan.js.map +1 -1
- package/dist/managers/MXLTraceManager/MXLTraceManager.cjs +8 -8
- package/dist/managers/MXLTraceManager/MXLTraceManager.cjs.map +1 -1
- package/dist/managers/MXLTraceManager/MXLTraceManager.d.ts +0 -1
- package/dist/managers/MXLTraceManager/MXLTraceManager.d.ts.map +1 -1
- package/dist/managers/MXLTraceManager/MXLTraceManager.js +5 -5
- package/dist/managers/MXLTraceManager/MXLTraceManager.js.map +1 -1
- package/dist/managers/MXLTraceManager/index.cjs +4 -5
- package/dist/managers/MXLTraceManager/index.js +1 -2
- package/dist/managers/MXLUserManager/MXLUserManager.cjs +7 -8
- package/dist/managers/MXLUserManager/MXLUserManager.cjs.map +1 -1
- package/dist/managers/MXLUserManager/MXLUserManager.js +1 -2
- package/dist/managers/MXLUserManager/MXLUserManager.js.map +1 -1
- package/dist/managers/MXLUserManager/constants.cjs +2 -3
- package/dist/managers/MXLUserManager/constants.cjs.map +1 -1
- package/dist/managers/MXLUserManager/constants.js +1 -1
- package/dist/managers/MXLUserManager/index.cjs +3 -4
- package/dist/managers/MXLUserManager/index.js +1 -2
- package/dist/managers/MXLUserManager/types.cjs +4 -5
- package/dist/managers/MXLUserManager/types.cjs.map +1 -1
- package/dist/managers/MXLUserManager/types.js +3 -4
- package/dist/managers/MXLUserManager/types.js.map +1 -1
- package/dist/managers/index.cjs +12 -13
- package/dist/managers/index.d.cts +1 -1
- package/dist/managers/index.d.ts +1 -9
- package/dist/managers/index.js +1 -2
- package/dist/mxl-web-sdk.js +38 -1
- package/dist/mxl-web-sdk.js.map +1 -1
- package/dist/packages/otlp-transformer/dist/index.cjs +480 -177
- package/dist/packages/otlp-transformer/dist/index.cjs.map +1 -1
- package/dist/packages/otlp-transformer/dist/index.d.cts +6 -2
- package/dist/packages/otlp-transformer/dist/index.d.cts.map +1 -1
- package/dist/packages/otlp-transformer/dist/index.d.ts +6 -2
- package/dist/packages/otlp-transformer/dist/index.d.ts.map +1 -1
- package/dist/packages/otlp-transformer/dist/index.js +480 -176
- package/dist/packages/otlp-transformer/dist/index.js.map +1 -1
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs +4 -5
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.cjs.map +1 -1
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.d.cts.map +1 -1
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.d.ts.map +1 -1
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js +2 -3
- package/dist/processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor.js.map +1 -1
- package/dist/processors/BrowserLogRecordProcessor/index.cjs +3 -4
- package/dist/processors/BrowserLogRecordProcessor/index.js +1 -2
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs +4 -5
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.cjs.map +1 -1
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.d.cts.map +1 -1
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.d.ts.map +1 -1
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js +2 -3
- package/dist/processors/BrowserSpanProcessor/BrowserSpanProcessor.js.map +1 -1
- package/dist/processors/BrowserSpanProcessor/index.cjs +3 -4
- package/dist/processors/BrowserSpanProcessor/index.js +1 -2
- package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs +4 -5
- package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.cjs.map +1 -1
- package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js +1 -2
- package/dist/processors/IdentifiableSessionLogRecordProcessor/IdentifiableSessionLogRecordProcessor.js.map +1 -1
- package/dist/processors/IdentifiableSessionLogRecordProcessor/index.cjs +3 -4
- package/dist/processors/IdentifiableSessionLogRecordProcessor/index.js +1 -2
- package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.ts +0 -1
- package/dist/processors/IdentifiableSessionLogRecordProcessor/types.d.ts.map +1 -1
- package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs +2 -3
- package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.cjs.map +1 -1
- package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js +1 -1
- package/dist/processors/LogRecordScrubProcessor/LogRecordScrubProcessor.js.map +1 -1
- package/dist/processors/LogRecordScrubProcessor/index.cjs +3 -4
- package/dist/processors/LogRecordScrubProcessor/index.js +1 -2
- package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs +5 -6
- package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.cjs.map +1 -1
- package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js +3 -4
- package/dist/processors/MXLLogRecordProcessor/MXLLogRecordProcessor.js.map +1 -1
- package/dist/processors/MXLLogRecordProcessor/index.cjs +3 -4
- package/dist/processors/MXLLogRecordProcessor/index.js +1 -2
- package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs +6 -7
- package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.cjs.map +1 -1
- package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js +3 -4
- package/dist/processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor.js.map +1 -1
- package/dist/processors/MXLNetworkSpanProcessor/index.cjs +3 -4
- package/dist/processors/MXLNetworkSpanProcessor/index.js +1 -2
- package/dist/processors/MXLNetworkSpanProcessor/types.cjs +3 -4
- package/dist/processors/MXLNetworkSpanProcessor/types.cjs.map +1 -1
- package/dist/processors/MXLNetworkSpanProcessor/types.js +1 -2
- package/dist/processors/MXLNetworkSpanProcessor/types.js.map +1 -1
- package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs +6 -7
- package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.cjs.map +1 -1
- package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js +3 -4
- package/dist/processors/MXLSessionBatchedSpanProcessor/MXLSessionBatchedSpanProcessor.js.map +1 -1
- package/dist/processors/MXLSessionBatchedSpanProcessor/index.cjs +3 -4
- package/dist/processors/MXLSessionBatchedSpanProcessor/index.js +1 -2
- package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.ts +0 -1
- package/dist/processors/MXLSessionBatchedSpanProcessor/types.d.ts.map +1 -1
- package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs +5 -6
- package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.cjs.map +1 -1
- package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js +3 -4
- package/dist/processors/PageLogRecordProcessor/PageLogRecordProcessor.js.map +1 -1
- package/dist/processors/PageLogRecordProcessor/index.cjs +3 -4
- package/dist/processors/PageLogRecordProcessor/index.js +1 -2
- package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs +5 -6
- package/dist/processors/PageSpanProcessor/PageSpanProcessor.cjs.map +1 -1
- package/dist/processors/PageSpanProcessor/PageSpanProcessor.js +3 -4
- package/dist/processors/PageSpanProcessor/PageSpanProcessor.js.map +1 -1
- package/dist/processors/PageSpanProcessor/index.cjs +3 -4
- package/dist/processors/PageSpanProcessor/index.js +1 -2
- package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs +2 -3
- package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.cjs.map +1 -1
- package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js +1 -1
- package/dist/processors/SpanScrubProcessor/SpanScrubProcessor.js.map +1 -1
- package/dist/processors/SpanScrubProcessor/index.cjs +3 -4
- package/dist/processors/SpanScrubProcessor/index.js +1 -2
- package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs +3 -4
- package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.cjs.map +1 -1
- package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js +1 -2
- package/dist/processors/UserLogRecordProcessor/UserLogRecordProcessor.js.map +1 -1
- package/dist/processors/UserLogRecordProcessor/index.cjs +3 -4
- package/dist/processors/UserLogRecordProcessor/index.js +1 -2
- package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs +3 -4
- package/dist/processors/UserSpanProcessor/UserSpanProcessor.cjs.map +1 -1
- package/dist/processors/UserSpanProcessor/UserSpanProcessor.js +1 -2
- package/dist/processors/UserSpanProcessor/UserSpanProcessor.js.map +1 -1
- package/dist/processors/UserSpanProcessor/index.cjs +3 -4
- package/dist/processors/UserSpanProcessor/index.js +1 -2
- package/dist/processors/index.cjs +14 -15
- package/dist/processors/index.d.ts +0 -12
- package/dist/processors/index.js +1 -2
- package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs +4 -5
- package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.cjs.map +1 -1
- package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js +1 -2
- package/dist/propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator.js.map +1 -1
- package/dist/propagators/MXLW3CTraceContextPropagator/index.cjs +3 -4
- package/dist/propagators/MXLW3CTraceContextPropagator/index.js +1 -2
- package/dist/propagators/index.cjs +3 -4
- package/dist/propagators/index.d.ts +0 -1
- package/dist/propagators/index.js +1 -2
- package/dist/react-instrumentation/index.cjs +7 -8
- package/dist/react-instrumentation/index.d.ts +0 -3
- package/dist/react-instrumentation/index.js +1 -2
- package/dist/resources/appInstanceId.cjs +4 -5
- package/dist/resources/appInstanceId.cjs.map +1 -1
- package/dist/resources/appInstanceId.js +1 -2
- package/dist/resources/appInstanceId.js.map +1 -1
- package/dist/resources/constants/index.cjs +3 -4
- package/dist/resources/constants/index.cjs.map +1 -1
- package/dist/resources/constants/index.d.cts +1 -1
- package/dist/resources/constants/index.d.ts +1 -1
- package/dist/resources/constants/index.js +2 -2
- package/dist/resources/constants/index.js.map +1 -1
- package/dist/resources/index.cjs +7 -6
- package/dist/resources/index.d.cts +2 -2
- package/dist/resources/index.d.ts +2 -2
- package/dist/resources/index.js +2 -3
- package/dist/resources/webSdkResource.cjs +22 -9
- package/dist/resources/webSdkResource.cjs.map +1 -1
- package/dist/resources/webSdkResource.d.cts +16 -1
- package/dist/resources/webSdkResource.d.cts.map +1 -1
- package/dist/resources/webSdkResource.d.ts +16 -1
- package/dist/resources/webSdkResource.d.ts.map +1 -1
- package/dist/resources/webSdkResource.js +17 -6
- package/dist/resources/webSdkResource.js.map +1 -1
- package/dist/sdk/defaultAttributeScrubbers.cjs +3 -4
- package/dist/sdk/defaultAttributeScrubbers.cjs.map +1 -1
- package/dist/sdk/defaultAttributeScrubbers.js +1 -2
- package/dist/sdk/defaultAttributeScrubbers.js.map +1 -1
- package/dist/sdk/index.cjs +3 -4
- package/dist/sdk/index.d.cts +2 -2
- package/dist/sdk/index.d.ts +2 -2
- package/dist/sdk/index.js +1 -2
- package/dist/sdk/initSDK.cjs +75 -58
- package/dist/sdk/initSDK.cjs.map +1 -1
- package/dist/sdk/initSDK.d.cts +4 -1
- package/dist/sdk/initSDK.d.cts.map +1 -1
- package/dist/sdk/initSDK.d.ts +4 -1
- package/dist/sdk/initSDK.d.ts.map +1 -1
- package/dist/sdk/initSDK.js +37 -20
- package/dist/sdk/initSDK.js.map +1 -1
- package/dist/sdk/registry.cjs +3 -4
- package/dist/sdk/registry.cjs.map +1 -1
- package/dist/sdk/registry.js +1 -2
- package/dist/sdk/registry.js.map +1 -1
- package/dist/sdk/setupDefaultInstrumentations.cjs +36 -28
- package/dist/sdk/setupDefaultInstrumentations.cjs.map +1 -1
- package/dist/sdk/setupDefaultInstrumentations.d.cts +2 -3
- package/dist/sdk/setupDefaultInstrumentations.d.cts.map +1 -1
- package/dist/sdk/setupDefaultInstrumentations.d.ts +2 -3
- package/dist/sdk/setupDefaultInstrumentations.d.ts.map +1 -1
- package/dist/sdk/setupDefaultInstrumentations.js +26 -19
- package/dist/sdk/setupDefaultInstrumentations.js.map +1 -1
- package/dist/sdk/setupSessionRecorder.cjs +45 -0
- package/dist/sdk/setupSessionRecorder.cjs.map +1 -0
- package/dist/sdk/setupSessionRecorder.d.cts +21 -0
- package/dist/sdk/setupSessionRecorder.d.cts.map +1 -0
- package/dist/sdk/setupSessionRecorder.d.ts +21 -0
- package/dist/sdk/setupSessionRecorder.d.ts.map +1 -0
- package/dist/sdk/setupSessionRecorder.js +42 -0
- package/dist/sdk/setupSessionRecorder.js.map +1 -0
- package/dist/sdk/types.d.cts +51 -17
- package/dist/sdk/types.d.cts.map +1 -1
- package/dist/sdk/types.d.ts +51 -23
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/utils.cjs +3 -4
- package/dist/sdk/utils.cjs.map +1 -1
- package/dist/sdk/utils.js +1 -2
- package/dist/sdk/utils.js.map +1 -1
- package/dist/transport/FetchTransport/FetchTransport.cjs +3 -4
- package/dist/transport/FetchTransport/FetchTransport.cjs.map +1 -1
- package/dist/transport/FetchTransport/FetchTransport.js +1 -2
- package/dist/transport/FetchTransport/FetchTransport.js.map +1 -1
- package/dist/transport/FetchTransport/createFetchTransport.cjs +3 -4
- package/dist/transport/FetchTransport/createFetchTransport.cjs.map +1 -1
- package/dist/transport/FetchTransport/createFetchTransport.js +1 -2
- package/dist/transport/FetchTransport/createFetchTransport.js.map +1 -1
- package/dist/transport/FetchTransport/index.cjs +3 -4
- package/dist/transport/FetchTransport/index.js +1 -2
- package/dist/transport/RetryingTransport/RetryingTransport.cjs +6 -7
- package/dist/transport/RetryingTransport/RetryingTransport.cjs.map +1 -1
- package/dist/transport/RetryingTransport/RetryingTransport.d.ts +0 -1
- package/dist/transport/RetryingTransport/RetryingTransport.d.ts.map +1 -1
- package/dist/transport/RetryingTransport/RetryingTransport.js +4 -5
- package/dist/transport/RetryingTransport/RetryingTransport.js.map +1 -1
- package/dist/transport/RetryingTransport/constants.cjs +2 -3
- package/dist/transport/RetryingTransport/constants.cjs.map +1 -1
- package/dist/transport/RetryingTransport/constants.js +1 -1
- package/dist/transport/RetryingTransport/createRetryingTransport.cjs +4 -5
- package/dist/transport/RetryingTransport/createRetryingTransport.cjs.map +1 -1
- package/dist/transport/RetryingTransport/createRetryingTransport.d.cts.map +1 -1
- package/dist/transport/RetryingTransport/createRetryingTransport.d.ts +0 -1
- package/dist/transport/RetryingTransport/createRetryingTransport.d.ts.map +1 -1
- package/dist/transport/RetryingTransport/createRetryingTransport.js +1 -2
- package/dist/transport/RetryingTransport/createRetryingTransport.js.map +1 -1
- package/dist/transport/RetryingTransport/index.cjs +3 -4
- package/dist/transport/RetryingTransport/index.js +1 -2
- package/dist/transport/index.cjs +4 -5
- package/dist/transport/index.d.ts +0 -2
- package/dist/transport/index.js +1 -2
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs +4 -5
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.cjs.map +1 -1
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.ts +0 -1
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.d.ts.map +1 -1
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.js +1 -2
- package/dist/utils/MXLSpanStorage/MXLSpanStorage.js.map +1 -1
- package/dist/utils/MXLSpanStorage/index.cjs +3 -4
- package/dist/utils/MXLSpanStorage/index.d.ts +0 -1
- package/dist/utils/MXLSpanStorage/index.js +1 -2
- package/dist/utils/NamespacedStorage/NamespacedStorage.cjs +12 -3
- package/dist/utils/NamespacedStorage/NamespacedStorage.cjs.map +1 -1
- package/dist/utils/NamespacedStorage/NamespacedStorage.d.cts +8 -0
- package/dist/utils/NamespacedStorage/NamespacedStorage.d.cts.map +1 -1
- package/dist/utils/NamespacedStorage/NamespacedStorage.d.ts +8 -0
- package/dist/utils/NamespacedStorage/NamespacedStorage.d.ts.map +1 -1
- package/dist/utils/NamespacedStorage/NamespacedStorage.js +11 -1
- package/dist/utils/NamespacedStorage/NamespacedStorage.js.map +1 -1
- package/dist/utils/NamespacedStorage/index.cjs +3 -4
- package/dist/utils/NamespacedStorage/index.js +1 -2
- package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs +4 -4
- package/dist/utils/PerformanceManager/OTelPerformanceManager.cjs.map +1 -1
- package/dist/utils/PerformanceManager/OTelPerformanceManager.d.cts +1 -0
- package/dist/utils/PerformanceManager/OTelPerformanceManager.d.cts.map +1 -1
- package/dist/utils/PerformanceManager/OTelPerformanceManager.d.ts +1 -0
- package/dist/utils/PerformanceManager/OTelPerformanceManager.d.ts.map +1 -1
- package/dist/utils/PerformanceManager/OTelPerformanceManager.js +2 -2
- package/dist/utils/PerformanceManager/OTelPerformanceManager.js.map +1 -1
- package/dist/utils/PerformanceManager/index.cjs +3 -4
- package/dist/utils/PerformanceManager/index.js +1 -2
- package/dist/utils/PerformanceManager/types.d.cts +1 -0
- package/dist/utils/PerformanceManager/types.d.cts.map +1 -1
- package/dist/utils/PerformanceManager/types.d.ts +1 -0
- package/dist/utils/PerformanceManager/types.d.ts.map +1 -1
- package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs +2 -3
- package/dist/utils/bulkAddEventListener/bulkAddEventListener.cjs.map +1 -1
- package/dist/utils/bulkAddEventListener/bulkAddEventListener.js +1 -1
- package/dist/utils/bulkAddEventListener/index.cjs +3 -4
- package/dist/utils/bulkAddEventListener/index.js +1 -2
- package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs +2 -3
- package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.cjs.map +1 -1
- package/dist/utils/bulkRemoveEventListener/bulkRemoveEventListener.js +1 -1
- package/dist/utils/bulkRemoveEventListener/index.cjs +3 -4
- package/dist/utils/bulkRemoveEventListener/index.js +1 -2
- package/dist/utils/createSafeProxy/createSafeProxy.cjs +2 -3
- package/dist/utils/createSafeProxy/createSafeProxy.cjs.map +1 -1
- package/dist/utils/createSafeProxy/createSafeProxy.js +1 -1
- package/dist/utils/createSafeProxy/index.cjs +3 -4
- package/dist/utils/createSafeProxy/index.js +1 -2
- package/dist/utils/generateUUID.cjs +2 -3
- package/dist/utils/generateUUID.cjs.map +1 -1
- package/dist/utils/generateUUID.js +1 -1
- package/dist/utils/generateWebVitalID.cjs +9 -0
- package/dist/utils/generateWebVitalID.cjs.map +1 -0
- package/dist/utils/generateWebVitalID.d.cts +5 -0
- package/dist/utils/generateWebVitalID.d.cts.map +1 -0
- package/dist/utils/generateWebVitalID.d.ts +5 -0
- package/dist/utils/generateWebVitalID.d.ts.map +1 -0
- package/dist/utils/generateWebVitalID.js +8 -0
- package/dist/utils/generateWebVitalID.js.map +1 -0
- package/dist/utils/getIncrementedCount.cjs +6 -3
- package/dist/utils/getIncrementedCount.cjs.map +1 -1
- package/dist/utils/getIncrementedCount.js +5 -1
- package/dist/utils/getIncrementedCount.js.map +1 -1
- package/dist/utils/getVisibilityState.cjs +4 -5
- package/dist/utils/getVisibilityState.cjs.map +1 -1
- package/dist/utils/getVisibilityState.js +3 -4
- package/dist/utils/getVisibilityState.js.map +1 -1
- package/dist/utils/globalConfig.cjs +2 -3
- package/dist/utils/globalConfig.cjs.map +1 -1
- package/dist/utils/globalConfig.js +1 -1
- package/dist/utils/index.cjs +20 -16
- package/dist/utils/index.d.cts +4 -2
- package/dist/utils/index.d.ts +4 -5
- package/dist/utils/index.js +3 -2
- package/dist/utils/isDeviceIdEnabled.cjs +2 -3
- package/dist/utils/isDeviceIdEnabled.cjs.map +1 -1
- package/dist/utils/isDeviceIdEnabled.js +1 -1
- package/dist/utils/isDeviceIdEnabled.js.map +1 -1
- package/dist/utils/nsfConfigValidation.cjs +2 -3
- package/dist/utils/nsfConfigValidation.cjs.map +1 -1
- package/dist/utils/nsfConfigValidation.d.ts +0 -2
- package/dist/utils/nsfConfigValidation.d.ts.map +1 -1
- package/dist/utils/nsfConfigValidation.js +1 -1
- package/dist/utils/performanceObserver/index.cjs +4 -0
- package/dist/utils/performanceObserver/index.d.cts +2 -0
- package/dist/utils/performanceObserver/index.d.ts +2 -0
- package/dist/utils/performanceObserver/index.js +2 -0
- package/dist/utils/performanceObserver/performanceObserver.cjs +47 -0
- package/dist/utils/performanceObserver/performanceObserver.cjs.map +1 -0
- package/dist/utils/performanceObserver/performanceObserver.d.cts +23 -0
- package/dist/utils/performanceObserver/performanceObserver.d.cts.map +1 -0
- package/dist/utils/performanceObserver/performanceObserver.d.ts +23 -0
- package/dist/utils/performanceObserver/performanceObserver.d.ts.map +1 -0
- package/dist/utils/performanceObserver/performanceObserver.js +45 -0
- package/dist/utils/performanceObserver/performanceObserver.js.map +1 -0
- package/dist/utils/throttle.cjs +2 -3
- package/dist/utils/throttle.cjs.map +1 -1
- package/dist/utils/throttle.js +1 -1
- package/package.json +15 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLSpanSessionManager.cjs","names":["diag","OTelPerformanceManager","trace","BasicTracerProvider","KEY_PREFIX_MXL_PROPERTIES","KEY_MXL_SESSION_REASON_ENDED","KEY_MXL_SDK_STARTUP_DURATION","KEY_MXL_FROM_STORAGE","generateUUID","KEY_MXL_TYPE","MXL_TYPES","KEY_MXL_STATE","getVisibilityState","ATTR_SESSION_ID","KEY_MXL_COLD_START","KEY_MXL_SESSION_NUMBER","getIncrementedCount","MXL_SESSION_NUMBER_STORAGE_KEY","KEY_MXL_EXPERIENCE_ID","KEY_MXL_TAB_ID","KEY_MXL_NAVIGATION_SOURCE","KEY_MXL_REFERRER_URL","KEY_MXL_SOURCE_TAB_ID","KEY_MXL_SESSION_REASON_STARTED","MXLExtendedSpan","getAppInstanceId","MXL_TAB_STORAGE_KEY","MXL_TAB_ACTIVITY_STORAGE_KEY"],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"sourcesContent":["import type {\n Attributes,\n DiagLogger,\n HrTime,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport { diag, trace } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SESSION_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type {\n PropertyOptions,\n ReasonSessionEnded,\n StartSessionOptions,\n} from '../../api-sessions/index.ts';\nimport type { VisibilityStateDocument } from '../../common/index.ts';\nimport {\n KEY_MXL_COLD_START,\n KEY_MXL_EXPERIENCE_ID,\n KEY_MXL_FROM_STORAGE,\n KEY_MXL_NAVIGATION_SOURCE,\n KEY_MXL_REFERRER_URL,\n KEY_MXL_SDK_STARTUP_DURATION,\n KEY_MXL_SESSION_NUMBER,\n KEY_MXL_SESSION_REASON_ENDED,\n KEY_MXL_SESSION_REASON_STARTED,\n KEY_MXL_SOURCE_TAB_ID,\n KEY_MXL_STATE,\n KEY_MXL_TAB_ID,\n KEY_MXL_TYPE,\n KEY_PREFIX_MXL_PROPERTIES,\n MXL_TYPES,\n} from '../../constants/index.ts';\nimport type { ExtendedSpan } from '../../index.ts';\nimport { getAppInstanceId } from '../../resources/index.ts';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport {\n generateUUID,\n getIncrementedCount,\n getVisibilityState,\n OTelPerformanceManager,\n} from '../../utils/index.ts';\nimport type { LimitManagerInternal } from '../MXLLimitManager/index.ts';\nimport { MXLExtendedSpan } from '../MXLTraceManager/MXLExtendedSpan.ts';\nimport {\n MXL_SESSION_NUMBER_STORAGE_KEY,\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n MXL_TAB_STORAGE_KEY,\n} from './constants.ts';\nimport type {\n MXLSpanSessionManagerArgs,\n NavigationSource,\n SessionEndedListener,\n SessionStartedListener,\n SpanSessionManagerInternal,\n Tab,\n TabActivity,\n} from './types.ts';\n\nexport class MXLSpanSessionManager implements SpanSessionManagerInternal {\n private _previousSessionId: string | null = null;\n private _activeSessionId: string | null = null;\n private _activeSessionStartTime: HrTime | null = null;\n private _sessionSpan: ExtendedSpan | null = null;\n private _activeSessionCounts: Record<string, number> | null = null;\n private _nextSessionCounts: Record<string, number> = {};\n private _coldStart = true; // Whether the session was started from a new page load or not.\n private _sdkStartupDuration = 0;\n private readonly _sessionStartedListeners: Array<SessionStartedListener> = [];\n private readonly _sessionEndedListeners: Array<SessionEndedListener> = [];\n private readonly _tab: Tab;\n private readonly _navigationSource: NavigationSource;\n private readonly _referrerInfo: {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n };\n\n private _tracer: Tracer;\n private readonly _noExportTracer: Tracer;\n private readonly _diag: DiagLogger;\n private readonly _perf: PerformanceManager;\n private readonly _visibilityDoc: VisibilityStateDocument;\n private readonly _storage: Storage;\n private readonly _sessionStorage: Storage;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _referrer: string;\n\n public constructor({\n diag: diagParam,\n perf,\n visibilityDoc = window.document,\n storage = window.localStorage,\n sessionStorage = window.sessionStorage,\n limitManager,\n referrer = document.referrer,\n }: MXLSpanSessionManagerArgs) {\n this._diag =\n diagParam ??\n diag.createComponentLogger({\n namespace: 'MXLSpanSessionManager',\n });\n this._perf = perf ?? new OTelPerformanceManager();\n this._visibilityDoc = visibilityDoc;\n this._storage = storage;\n this._sessionStorage = sessionStorage;\n this._limitManager = limitManager;\n this._referrer = referrer;\n this._tracer = trace.getTracer('mxl-web-sdk-sessions');\n this._noExportTracer = new BasicTracerProvider().getTracer(\n 'mxl-web-sdk-sessions',\n );\n\n // Process referrer once at initialization\n this._referrerInfo = this._processReferrer();\n\n // Initialize tab tracking and navigation source\n const initResult = this._initTab();\n this._tab = initResult.tab;\n this._navigationSource = initResult.navigationSource;\n this._setupNewTabClickListeners();\n }\n\n // Collects all permanent session properties from localStorage\n private _getPermanentAttributes(): Attributes {\n const permanentAttributes = new Map();\n try {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(KEY_PREFIX_MXL_PROPERTIES)) {\n const value = this._storage.getItem(key);\n if (value) {\n permanentAttributes.set(key, value);\n }\n }\n }\n } catch (error) {\n this._diag.warn('Error loading permanent session properties', error);\n }\n return Object.fromEntries(permanentAttributes.entries()) as Attributes;\n }\n\n public addBreadcrumb(name: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add breadcrumb to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedBreadcrumb = this._limitManager.limitBreadcrumb(name);\n\n if (limitedBreadcrumb === 'dropped') {\n return;\n }\n\n this._sessionSpan.addEvent(\n 'mxl-breadcrumb',\n {\n message: limitedBreadcrumb.name,\n },\n this._perf.getNowMillis(),\n );\n }\n\n public addProperty(\n propertyKey: string,\n value: string,\n options?: PropertyOptions,\n ) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add properties to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedSessionProperty = this._limitManager.limitSessionProperty(\n propertyKey,\n value,\n );\n\n if (limitedSessionProperty === 'dropped') {\n return;\n }\n\n const attributeKey = KEY_PREFIX_MXL_PROPERTIES + limitedSessionProperty.key;\n this._sessionSpan.setAttribute(attributeKey, limitedSessionProperty.value);\n\n if (options?.lifespan === 'permanent') {\n try {\n this._storage.setItem(attributeKey, value);\n } catch (error) {\n this._diag.warn('Failed to set permanent session property', error);\n }\n }\n }\n\n public removeProperty(propertyKey: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to remove a session property, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n // We truncate long session property keys on addProperty so need to apply the same logic here\n const attributeKey =\n KEY_PREFIX_MXL_PROPERTIES +\n this._limitManager.truncateString('session_property_key', propertyKey);\n this._sessionSpan.removeAttribute(attributeKey);\n\n try {\n if (this._storage.getItem(attributeKey)) {\n this._storage.removeItem(attributeKey);\n }\n } catch (error) {\n this._diag.warn('Error removing permanent session property', error);\n }\n }\n\n // the external api doesn't include a reason, and if a users uses it to end a session, the reason will be 'manual'\n // note: don't use this internally, this is just for user facing APIs. Use this.endSessionSpanInternal instead.\n public endSessionSpan() {\n this.endSessionSpanInternal('manual');\n }\n\n // endSessionSpanInternal is not part of the public API, but is used internally to end a session span adding a specific reason\n public endSessionSpanInternal(reason: ReasonSessionEnded) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n for (const listener of this._sessionEndedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn('Error while executing session ended listener', error);\n }\n }\n\n this._sessionSpan.setAttributes(this._endSessionSpanAttributes(reason));\n this._sessionSpan.end();\n this._sessionSpan = null;\n this._activeSessionStartTime = null;\n this._previousSessionId = this._activeSessionId;\n this._activeSessionId = null;\n this._activeSessionCounts = null;\n\n // For the limit manager to add a session ended listener it would need a reference to this\n // session manager which would create a circular dependency\n this._limitManager.reset();\n }\n\n private _endSessionSpanAttributes(reason: ReasonSessionEnded): Attributes {\n return {\n ...this._getPermanentAttributes(),\n [KEY_MXL_SESSION_REASON_ENDED]: reason,\n ...this._activeSessionCounts,\n ...this._limitManager.getDiagnosticCounts(),\n [KEY_MXL_SDK_STARTUP_DURATION]: this._sdkStartupDuration,\n };\n }\n\n // currentSessionAsReadableSpan creates a copy of the current session span with the same attributes\n // that endSessionSpanInternal would add, but does not affect the original session span which remains active.\n public currentSessionAsReadableSpan(\n reason: ReasonSessionEnded,\n ): ReadableSpan | null {\n if (!this._sessionSpan || !this._activeSessionStartTime) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return null;\n }\n\n // Create a new span with the same name and start time as the original session span,\n // but using a new tracer so that it does not get exported.\n const span = this._noExportTracer.startSpan('mxl-session', {\n startTime: this._activeSessionStartTime,\n attributes: {\n // Copy all current attributes from the original session span, plus the ending attributes\n ...this._sessionSpan.attributes,\n ...this._endSessionSpanAttributes(reason),\n [KEY_MXL_FROM_STORAGE]: true,\n },\n });\n span.end();\n return span as unknown as ReadableSpan;\n }\n\n public getSessionId(): string | null {\n return this._activeSessionId;\n }\n\n public getPreviousSessionId(): string | null {\n return this._previousSessionId;\n }\n\n public getSessionSpan(): ExtendedSpan | null {\n return this._sessionSpan;\n }\n\n public getSessionStartTime(): HrTime | null {\n return this._activeSessionStartTime;\n }\n\n public startSessionSpan(options?: StartSessionOptions) {\n // if there is a session already in progress, end it first\n if (this._sessionSpan) {\n this.endSessionSpanInternal('manual');\n }\n\n this._activeSessionId = generateUUID();\n this._activeSessionStartTime = this._perf.getNowHRTime();\n this._activeSessionCounts = {};\n const previouslyRecordedCounts = this._nextSessionCounts;\n this._nextSessionCounts = {};\n\n const attributes: Attributes = {\n ...this._getPermanentAttributes(),\n [KEY_MXL_TYPE]: MXL_TYPES.Session,\n [KEY_MXL_STATE]: getVisibilityState(this._visibilityDoc),\n [ATTR_SESSION_ID]: this._activeSessionId,\n [KEY_MXL_COLD_START]: this._coldStart,\n [KEY_MXL_SESSION_NUMBER]: getIncrementedCount(\n this._storage,\n MXL_SESSION_NUMBER_STORAGE_KEY,\n this._diag,\n ),\n [KEY_MXL_EXPERIENCE_ID]: this._tab.experienceId,\n [KEY_MXL_TAB_ID]: this._tab.tabId,\n [KEY_MXL_NAVIGATION_SOURCE]: this._navigationSource,\n ...previouslyRecordedCounts,\n };\n\n // Add scrubbed referrer URL if available\n if (this._referrerInfo.isValid && this._referrerInfo.scrubbedUrl) {\n attributes[KEY_MXL_REFERRER_URL] = this._referrerInfo.scrubbedUrl;\n }\n\n if (this._tab.sourceTabId) {\n attributes[KEY_MXL_SOURCE_TAB_ID] = this._tab.sourceTabId;\n }\n\n if (options?.reason) {\n attributes[KEY_MXL_SESSION_REASON_STARTED] = options.reason;\n }\n\n this._sessionSpan = new MXLExtendedSpan(\n this._tracer.startSpan('mxl-session', {\n attributes,\n }),\n );\n\n this._coldStart = false;\n\n for (const listener of this._sessionStartedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn(\n 'Error while executing session started listener',\n error,\n );\n }\n }\n }\n\n public incrSessionCountForKey(key: string) {\n if (!this._sessionSpan || !this._activeSessionCounts) {\n this._diag.debug(\n 'trying to increment a count for the active session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n this._activeSessionCounts[key] = (this._activeSessionCounts[key] || 0) + 1;\n }\n\n public incrNextSessionCountForKey(key: string) {\n this._nextSessionCounts[key] = (this._nextSessionCounts[key] || 0) + 1;\n }\n\n public addSessionStartedListener(listener: SessionStartedListener) {\n const listenerIndex = this._sessionStartedListeners.push(listener);\n\n return () => {\n this._sessionStartedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public addSessionEndedListener(listener: SessionEndedListener) {\n const listenerIndex = this._sessionEndedListeners.push(listener);\n\n return () => {\n this._sessionEndedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public recordSDKStartupDuration(duration: number) {\n this._sdkStartupDuration = Math.ceil(duration);\n }\n\n public setTracerProvider(tracerProvider: TracerProvider) {\n this._tracer = tracerProvider.getTracer('mxl-web-sdk-sessions');\n }\n\n private _determineNavigationSource(): NavigationSource {\n // Check Navigation Timing API first\n try {\n const navEntries = window.performance.getEntriesByType('navigation');\n if (navEntries.length > 0 && navEntries[0]) {\n const navEntry = navEntries[0];\n if (navEntry.type === 'reload') {\n return 'reload';\n } else if (navEntry.type === 'back_forward') {\n return 'back_forward';\n }\n }\n } catch (error) {\n this._diag.warn('Failed to get navigation type', error);\n }\n\n // If not reload/back_forward, analyze referrer\n if (this._referrerInfo.isValid) {\n return this._referrerInfo.isSameOrigin ? 'same_origin' : 'external';\n }\n\n return 'direct';\n }\n\n private _processReferrer(): {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n } {\n if (!this._referrer) {\n return { isValid: false, isSameOrigin: false };\n }\n\n try {\n const referrerUrl = new URL(this._referrer);\n const currentOrigin = window.location.origin;\n\n return {\n isValid: true,\n isSameOrigin: referrerUrl.origin === currentOrigin,\n scrubbedUrl: referrerUrl.origin + referrerUrl.pathname,\n };\n } catch {\n return { isValid: false, isSameOrigin: false };\n }\n }\n\n private _getTabContext(navigationSource: NavigationSource): {\n sourceTabId?: string;\n experienceId: string;\n tabId: string;\n } {\n // Always use getAppInstanceId to ensure consistent tab ID\n const tabId = getAppInstanceId(this._sessionStorage, this._diag);\n\n // Look for source tab only if navigation is from same origin\n let sourceTabId: string | undefined;\n let experienceId: string | undefined;\n\n if (navigationSource === 'same_origin') {\n const lastActivity = this._getTabActivity();\n if (lastActivity) {\n const age = Date.now() - lastActivity.lastActivityMs;\n // 10 second window to detect source tabs - balances capturing legitimate\n // tab relationships while avoiding false positives from stale activity\n if (age <= 10_000) {\n sourceTabId = lastActivity.tabId;\n experienceId = lastActivity.experienceId;\n }\n }\n }\n\n // Only generate new UUID if we didn't inherit one from source tab\n experienceId ??= generateUUID();\n\n return {\n sourceTabId,\n experienceId,\n tabId,\n };\n }\n\n private _initTab(): { tab: Tab; navigationSource: NavigationSource } {\n // Determine navigation source once at startup\n const navigationSource = this._determineNavigationSource();\n\n // On page reload, preserve the same tab IDs\n try {\n const stored = this._sessionStorage.getItem(MXL_TAB_STORAGE_KEY);\n if (stored) {\n return {\n tab: JSON.parse(stored) as Tab,\n navigationSource,\n };\n }\n } catch (e) {\n this._diag.warn('Failed to retrieve tab data', e);\n }\n\n // Get complete navigation context for new tab\n const tabContext = this._getTabContext(navigationSource);\n const tab: Tab = {\n experienceId: tabContext.experienceId,\n sourceTabId: tabContext.sourceTabId,\n tabId: tabContext.tabId,\n };\n\n // Persist tab data for page reloads\n try {\n this._sessionStorage.setItem(MXL_TAB_STORAGE_KEY, JSON.stringify(tab));\n } catch (e) {\n this._diag.warn('Failed to store tab data', e);\n }\n\n return { tab, navigationSource };\n }\n\n private _getTabActivity(): TabActivity | null {\n try {\n const stored = this._storage.getItem(MXL_TAB_ACTIVITY_STORAGE_KEY);\n if (!stored) {\n return null;\n }\n\n return JSON.parse(stored) as TabActivity;\n } catch (e) {\n this._diag.warn('Failed to retrieve tab activity', e);\n return null;\n }\n }\n\n private _storeTabActivity(activity: TabActivity): void {\n try {\n this._storage.setItem(\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n JSON.stringify(activity),\n );\n } catch (error) {\n this._diag.warn('Failed to save tab activity', error);\n }\n }\n\n private _storeCurrentTabAsSource(): void {\n const activity: TabActivity = {\n tabId: this._tab.tabId,\n experienceId: this._tab.experienceId,\n lastActivityMs: Date.now(),\n };\n\n this._storeTabActivity(activity);\n }\n\n private _setupNewTabClickListeners(): void {\n const handleNewTabClick = (ev: MouseEvent) => {\n // Check for modifier keys that open new tabs/windows\n if (\n ev.button === 1 || // Middle click\n ev.ctrlKey ||\n ev.metaKey || // Cmd/Ctrl + click\n ev.shiftKey // Shift + click (new window)\n ) {\n this._storeCurrentTabAsSource();\n return;\n }\n\n // Check for elements with attributes that open new tabs\n const newTabAnchor = (ev.target as HTMLElement | null)?.closest(\n 'a[target=\"_blank\"], form[target=\"_blank\"], a[rel*=\"noopener\"], a[rel*=\"noreferrer\"]',\n );\n if (newTabAnchor) {\n this._storeCurrentTabAsSource();\n }\n };\n\n // Capture phase ensures we record before navigation\n const options = { capture: true, passive: true };\n document.addEventListener('auxclick', handleNewTabClick, options);\n document.addEventListener('click', handleNewTabClick, options);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MXLSpanSessionManager.cjs","names":["diag","OTelPerformanceManager","trace","BasicTracerProvider","KEY_PREFIX_MXL_PROPERTIES","KEY_MXL_SESSION_REASON_ENDED","KEY_MXL_SDK_STARTUP_DURATION","KEY_MXL_FROM_STORAGE","generateUUID","KEY_MXL_TYPE","KEY_MXL_STATE","getVisibilityState","ATTR_SESSION_ID","KEY_MXL_COLD_START","KEY_MXL_SESSION_NUMBER","getIncrementedCount","MXL_SESSION_NUMBER_STORAGE_KEY","KEY_MXL_EXPERIENCE_ID","KEY_MXL_TAB_ID","KEY_MXL_NAVIGATION_SOURCE","KEY_MXL_REFERRER_URL","KEY_MXL_SOURCE_TAB_ID","KEY_MXL_SESSION_REASON_STARTED","MXLExtendedSpan","getAppInstanceId","MXL_TAB_STORAGE_KEY","MXL_TAB_ACTIVITY_STORAGE_KEY"],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"sourcesContent":["import type {\n Attributes,\n DiagLogger,\n HrTime,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport { diag, trace } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SESSION_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type {\n PropertyOptions,\n ReasonSessionEnded,\n StartSessionOptions,\n} from '../../api-sessions/index.ts';\nimport type { VisibilityStateDocument } from '../../common/index.ts';\nimport {\n KEY_MXL_COLD_START,\n KEY_MXL_EXPERIENCE_ID,\n KEY_MXL_FROM_STORAGE,\n KEY_MXL_NAVIGATION_SOURCE,\n KEY_MXL_REFERRER_URL,\n KEY_MXL_SDK_STARTUP_DURATION,\n KEY_MXL_SESSION_NUMBER,\n KEY_MXL_SESSION_REASON_ENDED,\n KEY_MXL_SESSION_REASON_STARTED,\n KEY_MXL_SOURCE_TAB_ID,\n KEY_MXL_STATE,\n KEY_MXL_TAB_ID,\n KEY_MXL_TYPE,\n KEY_PREFIX_MXL_PROPERTIES,\n MXL_TYPES,\n} from '../../constants/index.ts';\nimport type { ExtendedSpan } from '../../index.ts';\nimport { getAppInstanceId } from '../../resources/index.ts';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport {\n generateUUID,\n getIncrementedCount,\n getVisibilityState,\n OTelPerformanceManager,\n} from '../../utils/index.ts';\nimport type { LimitManagerInternal } from '../MXLLimitManager/index.ts';\nimport { MXLExtendedSpan } from '../MXLTraceManager/MXLExtendedSpan.ts';\nimport {\n MXL_SESSION_NUMBER_STORAGE_KEY,\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n MXL_TAB_STORAGE_KEY,\n} from './constants.ts';\nimport type {\n MXLSpanSessionManagerArgs,\n NavigationSource,\n SessionEndedListener,\n SessionStartedListener,\n SpanSessionManagerInternal,\n Tab,\n TabActivity,\n} from './types.ts';\n\nexport class MXLSpanSessionManager implements SpanSessionManagerInternal {\n private _previousSessionId: string | null = null;\n private _activeSessionId: string | null = null;\n private _activeSessionStartTime: HrTime | null = null;\n private _sessionSpan: ExtendedSpan | null = null;\n private _activeSessionCounts: Record<string, number> | null = null;\n private _nextSessionCounts: Record<string, number> = {};\n private _coldStart = true; // Whether the session was started from a new page load or not.\n private _sdkStartupDuration = 0;\n private readonly _sessionStartedListeners: Array<SessionStartedListener> = [];\n private readonly _sessionEndedListeners: Array<SessionEndedListener> = [];\n private readonly _tab: Tab;\n private readonly _navigationSource: NavigationSource;\n private readonly _referrerInfo: {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n };\n\n private _tracer: Tracer;\n private readonly _noExportTracer: Tracer;\n private readonly _diag: DiagLogger;\n private readonly _perf: PerformanceManager;\n private readonly _visibilityDoc: VisibilityStateDocument;\n private readonly _storage: Storage;\n private readonly _sessionStorage: Storage;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _referrer: string;\n private readonly _navigationPerformance: Pick<Performance, 'getEntriesByType'>;\n\n public constructor({\n diag: diagParam,\n perf,\n visibilityDoc = window.document,\n storage = window.localStorage,\n sessionStorage = window.sessionStorage,\n limitManager,\n referrer = document.referrer,\n navigationPerformance = window.performance,\n }: MXLSpanSessionManagerArgs) {\n this._diag =\n diagParam ??\n diag.createComponentLogger({\n namespace: 'MXLSpanSessionManager',\n });\n this._perf = perf ?? new OTelPerformanceManager();\n this._visibilityDoc = visibilityDoc;\n this._storage = storage;\n this._sessionStorage = sessionStorage;\n this._limitManager = limitManager;\n this._referrer = referrer;\n this._navigationPerformance = navigationPerformance;\n this._tracer = trace.getTracer('mxl-web-sdk-sessions');\n this._noExportTracer = new BasicTracerProvider().getTracer(\n 'mxl-web-sdk-sessions',\n );\n\n // Process referrer once at initialization\n this._referrerInfo = this._processReferrer();\n\n // Initialize tab tracking and navigation source\n const initResult = this._initTab();\n this._tab = initResult.tab;\n this._navigationSource = initResult.navigationSource;\n this._setupNewTabClickListeners();\n }\n\n // Collects all permanent session properties from localStorage\n private _getPermanentAttributes(): Attributes {\n const permanentAttributes = new Map();\n try {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(KEY_PREFIX_MXL_PROPERTIES)) {\n const value = this._storage.getItem(key);\n if (value) {\n permanentAttributes.set(key, value);\n }\n }\n }\n } catch (error) {\n this._diag.warn('Error loading permanent session properties', error);\n }\n return Object.fromEntries(permanentAttributes.entries()) as Attributes;\n }\n\n public addBreadcrumb(name: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add breadcrumb to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedBreadcrumb = this._limitManager.limitBreadcrumb(name);\n\n if (limitedBreadcrumb === 'dropped') {\n return;\n }\n\n this._sessionSpan.addEvent(\n 'mxl-breadcrumb',\n {\n message: limitedBreadcrumb.name,\n },\n this._perf.getNowMillis(),\n );\n }\n\n public addProperty(\n propertyKey: string,\n value: string,\n options?: PropertyOptions,\n ) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add properties to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedSessionProperty = this._limitManager.limitSessionProperty(\n propertyKey,\n value,\n );\n\n if (limitedSessionProperty === 'dropped') {\n return;\n }\n\n const attributeKey = KEY_PREFIX_MXL_PROPERTIES + limitedSessionProperty.key;\n this._sessionSpan.setAttribute(attributeKey, limitedSessionProperty.value);\n\n if (options?.lifespan === 'permanent') {\n try {\n this._storage.setItem(attributeKey, value);\n } catch (error) {\n this._diag.warn('Failed to set permanent session property', error);\n }\n }\n }\n\n public removeProperty(propertyKey: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to remove a session property, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n // We truncate long session property keys on addProperty so need to apply the same logic here\n const attributeKey =\n KEY_PREFIX_MXL_PROPERTIES +\n this._limitManager.truncateString('session_property_key', propertyKey);\n this._sessionSpan.removeAttribute(attributeKey);\n\n try {\n if (this._storage.getItem(attributeKey)) {\n this._storage.removeItem(attributeKey);\n }\n } catch (error) {\n this._diag.warn('Error removing permanent session property', error);\n }\n }\n\n // the external api doesn't include a reason, and if a users uses it to end a session, the reason will be 'manual'\n // note: don't use this internally, this is just for user facing APIs. Use this.endSessionSpanInternal instead.\n public endSessionSpan() {\n this.endSessionSpanInternal('manual');\n }\n\n // endSessionSpanInternal is not part of the public API, but is used internally to end a session span adding a specific reason\n public endSessionSpanInternal(reason: ReasonSessionEnded) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n for (const listener of this._sessionEndedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn('Error while executing session ended listener', error);\n }\n }\n\n this._sessionSpan.setAttributes(this._endSessionSpanAttributes(reason));\n this._sessionSpan.end();\n this._sessionSpan = null;\n this._activeSessionStartTime = null;\n this._previousSessionId = this._activeSessionId;\n this._activeSessionId = null;\n this._activeSessionCounts = null;\n\n // For the limit manager to add a session ended listener it would need a reference to this\n // session manager which would create a circular dependency\n this._limitManager.reset();\n }\n\n private _endSessionSpanAttributes(reason: ReasonSessionEnded): Attributes {\n return {\n ...this._getPermanentAttributes(),\n [KEY_MXL_SESSION_REASON_ENDED]: reason,\n ...this._activeSessionCounts,\n ...this._limitManager.getDiagnosticCounts(),\n [KEY_MXL_SDK_STARTUP_DURATION]: this._sdkStartupDuration,\n };\n }\n\n // currentSessionAsReadableSpan creates a copy of the current session span with the same attributes\n // that endSessionSpanInternal would add, but does not affect the original session span which remains active.\n public currentSessionAsReadableSpan(\n reason: ReasonSessionEnded,\n ): ReadableSpan | null {\n if (!this._sessionSpan || !this._activeSessionStartTime) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return null;\n }\n\n // Create a new span with the same name and start time as the original session span,\n // but using a new tracer so that it does not get exported.\n const span = this._noExportTracer.startSpan('mxl-session', {\n startTime: this._activeSessionStartTime,\n attributes: {\n // Copy all current attributes from the original session span, plus the ending attributes\n ...this._sessionSpan.attributes,\n ...this._endSessionSpanAttributes(reason),\n [KEY_MXL_FROM_STORAGE]: true,\n },\n });\n span.end();\n return span as unknown as ReadableSpan;\n }\n\n public getSessionId(): string | null {\n return this._activeSessionId;\n }\n\n public getPreviousSessionId(): string | null {\n return this._previousSessionId;\n }\n\n public getSessionSpan(): ExtendedSpan | null {\n return this._sessionSpan;\n }\n\n public getSessionStartTime(): HrTime | null {\n return this._activeSessionStartTime;\n }\n\n public startSessionSpan(options?: StartSessionOptions) {\n // if there is a session already in progress, end it first\n if (this._sessionSpan) {\n this.endSessionSpanInternal('manual');\n }\n\n this._activeSessionId = generateUUID();\n this._activeSessionStartTime = this._perf.getNowHRTime();\n this._activeSessionCounts = {};\n const previouslyRecordedCounts = this._nextSessionCounts;\n this._nextSessionCounts = {};\n\n const attributes: Attributes = {\n ...this._getPermanentAttributes(),\n [KEY_MXL_TYPE]: MXL_TYPES.Session,\n [KEY_MXL_STATE]: getVisibilityState(this._visibilityDoc),\n [ATTR_SESSION_ID]: this._activeSessionId,\n [KEY_MXL_COLD_START]: this._coldStart,\n [KEY_MXL_SESSION_NUMBER]: getIncrementedCount(\n this._storage,\n MXL_SESSION_NUMBER_STORAGE_KEY,\n this._diag,\n ),\n [KEY_MXL_EXPERIENCE_ID]: this._tab.experienceId,\n [KEY_MXL_TAB_ID]: this._tab.tabId,\n [KEY_MXL_NAVIGATION_SOURCE]: this._navigationSource,\n ...previouslyRecordedCounts,\n };\n\n // Add scrubbed referrer URL if available\n if (this._referrerInfo.isValid && this._referrerInfo.scrubbedUrl) {\n attributes[KEY_MXL_REFERRER_URL] = this._referrerInfo.scrubbedUrl;\n }\n\n if (this._tab.sourceTabId) {\n attributes[KEY_MXL_SOURCE_TAB_ID] = this._tab.sourceTabId;\n }\n\n const sessionStartReason = options?.reason ?? 'manual';\n attributes[KEY_MXL_SESSION_REASON_STARTED] = sessionStartReason;\n\n this._sessionSpan = new MXLExtendedSpan(\n this._tracer.startSpan('mxl-session', {\n attributes,\n }),\n );\n\n this._coldStart = false;\n\n for (const listener of this._sessionStartedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn(\n 'Error while executing session started listener',\n error,\n );\n }\n }\n }\n\n public incrSessionCountForKey(key: string) {\n if (!this._sessionSpan || !this._activeSessionCounts) {\n this._diag.debug(\n 'trying to increment a count for the active session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n this._activeSessionCounts[key] = (this._activeSessionCounts[key] || 0) + 1;\n }\n\n public incrNextSessionCountForKey(key: string) {\n this._nextSessionCounts[key] = (this._nextSessionCounts[key] || 0) + 1;\n }\n\n public addSessionStartedListener(listener: SessionStartedListener) {\n const listenerIndex = this._sessionStartedListeners.push(listener);\n\n return () => {\n this._sessionStartedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public addSessionEndedListener(listener: SessionEndedListener) {\n const listenerIndex = this._sessionEndedListeners.push(listener);\n\n return () => {\n this._sessionEndedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public recordSDKStartupDuration(duration: number) {\n this._sdkStartupDuration = Math.ceil(duration);\n }\n\n public setTracerProvider(tracerProvider: TracerProvider) {\n this._tracer = tracerProvider.getTracer('mxl-web-sdk-sessions');\n }\n\n private _determineNavigationSource(): NavigationSource {\n // Check Navigation Timing API first\n try {\n const navEntries =\n this._navigationPerformance.getEntriesByType('navigation');\n if (navEntries.length > 0 && navEntries[0]) {\n const navEntry = navEntries[0];\n if (navEntry.type === 'reload') {\n return 'reload';\n } else if (navEntry.type === 'back_forward') {\n return 'back_forward';\n }\n }\n } catch (error) {\n this._diag.warn('Failed to get navigation type', error);\n }\n\n // If not reload/back_forward, analyze referrer\n if (this._referrerInfo.isValid) {\n return this._referrerInfo.isSameOrigin ? 'same_origin' : 'external';\n }\n\n return 'direct';\n }\n\n private _processReferrer(): {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n } {\n if (!this._referrer) {\n return { isValid: false, isSameOrigin: false };\n }\n\n try {\n const referrerUrl = new URL(this._referrer);\n const currentOrigin = window.location.origin;\n\n return {\n isValid: true,\n isSameOrigin: referrerUrl.origin === currentOrigin,\n scrubbedUrl: referrerUrl.origin + referrerUrl.pathname,\n };\n } catch {\n return { isValid: false, isSameOrigin: false };\n }\n }\n\n private _getTabContext(navigationSource: NavigationSource): {\n sourceTabId?: string;\n experienceId: string;\n tabId: string;\n } {\n // Always use getAppInstanceId to ensure consistent tab ID\n const tabId = getAppInstanceId(this._sessionStorage, this._diag);\n\n // Look for source tab only if navigation is from same origin\n let sourceTabId: string | undefined;\n let experienceId: string | undefined;\n\n if (navigationSource === 'same_origin') {\n const lastActivity = this._getTabActivity();\n if (lastActivity) {\n const age = Date.now() - lastActivity.lastActivityMs;\n // 10 second window to detect source tabs - balances capturing legitimate\n // tab relationships while avoiding false positives from stale activity\n if (age <= 10_000) {\n sourceTabId = lastActivity.tabId;\n experienceId = lastActivity.experienceId;\n }\n }\n }\n\n // Only generate new UUID if we didn't inherit one from source tab\n experienceId ??= generateUUID();\n\n return {\n sourceTabId,\n experienceId,\n tabId,\n };\n }\n\n private _initTab(): { tab: Tab; navigationSource: NavigationSource } {\n // Determine navigation source once at startup\n const navigationSource = this._determineNavigationSource();\n\n // On page reload, preserve the same tab IDs\n try {\n const stored = this._sessionStorage.getItem(MXL_TAB_STORAGE_KEY);\n if (stored) {\n return {\n tab: JSON.parse(stored) as Tab,\n navigationSource,\n };\n }\n } catch (e) {\n this._diag.warn('Failed to retrieve tab data', e);\n }\n\n // Get complete navigation context for new tab\n const tabContext = this._getTabContext(navigationSource);\n const tab: Tab = {\n experienceId: tabContext.experienceId,\n sourceTabId: tabContext.sourceTabId,\n tabId: tabContext.tabId,\n };\n\n // Persist tab data for page reloads\n try {\n this._sessionStorage.setItem(MXL_TAB_STORAGE_KEY, JSON.stringify(tab));\n } catch (e) {\n this._diag.warn('Failed to store tab data', e);\n }\n\n return { tab, navigationSource };\n }\n\n private _getTabActivity(): TabActivity | null {\n try {\n const stored = this._storage.getItem(MXL_TAB_ACTIVITY_STORAGE_KEY);\n if (!stored) {\n return null;\n }\n\n return JSON.parse(stored) as TabActivity;\n } catch (e) {\n this._diag.warn('Failed to retrieve tab activity', e);\n return null;\n }\n }\n\n private _storeTabActivity(activity: TabActivity): void {\n try {\n this._storage.setItem(\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n JSON.stringify(activity),\n );\n } catch (error) {\n this._diag.warn('Failed to save tab activity', error);\n }\n }\n\n private _storeCurrentTabAsSource(): void {\n const activity: TabActivity = {\n tabId: this._tab.tabId,\n experienceId: this._tab.experienceId,\n lastActivityMs: Date.now(),\n };\n\n this._storeTabActivity(activity);\n }\n\n private _setupNewTabClickListeners(): void {\n const handleNewTabClick = (ev: MouseEvent) => {\n // Check for modifier keys that open new tabs/windows\n if (\n ev.button === 1 || // Middle click\n ev.ctrlKey ||\n ev.metaKey || // Cmd/Ctrl + click\n ev.shiftKey // Shift + click (new window)\n ) {\n this._storeCurrentTabAsSource();\n return;\n }\n\n // Check for elements with attributes that open new tabs\n const newTabAnchor = (ev.target as HTMLElement | null)?.closest(\n 'a[target=\"_blank\"], form[target=\"_blank\"], a[rel*=\"noopener\"], a[rel*=\"noreferrer\"]',\n );\n if (newTabAnchor) {\n this._storeCurrentTabAsSource();\n }\n };\n\n // Capture phase ensures we record before navigation\n const options = { capture: true, passive: true };\n document.addEventListener('auxclick', handleNewTabClick, options);\n document.addEventListener('click', handleNewTabClick, options);\n }\n}\n"],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ declare class MXLSpanSessionManager implements SpanSessionManagerInternal {
|
|
|
28
28
|
private readonly _sessionStorage;
|
|
29
29
|
private readonly _limitManager;
|
|
30
30
|
private readonly _referrer;
|
|
31
|
+
private readonly _navigationPerformance;
|
|
31
32
|
constructor({
|
|
32
33
|
diag: diagParam,
|
|
33
34
|
perf,
|
|
@@ -35,7 +36,8 @@ declare class MXLSpanSessionManager implements SpanSessionManagerInternal {
|
|
|
35
36
|
storage,
|
|
36
37
|
sessionStorage,
|
|
37
38
|
limitManager,
|
|
38
|
-
referrer
|
|
39
|
+
referrer,
|
|
40
|
+
navigationPerformance
|
|
39
41
|
}: MXLSpanSessionManagerArgs);
|
|
40
42
|
private _getPermanentAttributes;
|
|
41
43
|
addBreadcrumb(name: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLSpanSessionManager.d.cts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"mappings":";;;;;;;cA4Da,qBAAA,YAAiC,0BAAA;EAAA,QACpC,kBAAA;EAAA,QACA,gBAAA;EAAA,QACA,uBAAA;EAAA,QACA,YAAA;EAAA,QACA,oBAAA;EAAA,QACA,kBAAA;EAAA,QACA,UAAA;EAAA,QACA,mBAAA;EAAA,iBACS,wBAAA;EAAA,iBACA,sBAAA;EAAA,iBACA,IAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,aAAA;EAAA,QAMT,OAAA;EAAA,iBACS,eAAA;EAAA,iBACA,KAAA;EAAA,iBACA,KAAA;EAAA,iBACA,cAAA;EAAA,iBACA,QAAA;EAAA,iBACA,eAAA;EAAA,iBACA,aAAA;EAAA,iBACA,SAAA;;IAGf,IAAA,EAAM,SAAA;IACN,IAAA;IACA,aAAA;IACA,OAAA;IACA,cAAA;IACA,YAAA;IACA;EAAA,GACC,yBAAA;EAAA,
|
|
1
|
+
{"version":3,"file":"MXLSpanSessionManager.d.cts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"mappings":";;;;;;;cA4Da,qBAAA,YAAiC,0BAAA;EAAA,QACpC,kBAAA;EAAA,QACA,gBAAA;EAAA,QACA,uBAAA;EAAA,QACA,YAAA;EAAA,QACA,oBAAA;EAAA,QACA,kBAAA;EAAA,QACA,UAAA;EAAA,QACA,mBAAA;EAAA,iBACS,wBAAA;EAAA,iBACA,sBAAA;EAAA,iBACA,IAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,aAAA;EAAA,QAMT,OAAA;EAAA,iBACS,eAAA;EAAA,iBACA,KAAA;EAAA,iBACA,KAAA;EAAA,iBACA,cAAA;EAAA,iBACA,QAAA;EAAA,iBACA,eAAA;EAAA,iBACA,aAAA;EAAA,iBACA,SAAA;EAAA,iBACA,sBAAA;;IAGf,IAAA,EAAM,SAAA;IACN,IAAA;IACA,aAAA;IACA,OAAA;IACA,cAAA;IACA,YAAA;IACA,QAAA;IACA;EAAA,GACC,yBAAA;EAAA,QA6BK,uBAAA;EAkBD,aAAA,CAAc,IAAA;EAuBd,WAAA,CACL,WAAA,UACA,KAAA,UACA,OAAA,GAAU,eAAA;EA8BL,cAAA,CAAe,WAAA;EAyBf,cAAA,CAAA;EAKA,sBAAA,CAAuB,MAAA,EAAQ,kBAAA;EAAA,QA6B9B,yBAAA;EAYD,4BAAA,CACL,MAAA,EAAQ,kBAAA,GACP,YAAA;EAuBI,YAAA,CAAA;EAIA,oBAAA,CAAA;EAIA,cAAA,CAAA,GAAkB,YAAA;EAIlB,mBAAA,CAAA,GAAuB,MAAA;EAIvB,gBAAA,CAAiB,OAAA,GAAU,mBAAA;EA6D3B,sBAAA,CAAuB,GAAA;EAWvB,0BAAA,CAA2B,GAAA;EAI3B,yBAAA,CAA0B,QAAA,EAAU,sBAAA;EAQpC,uBAAA,CAAwB,QAAA,EAAU,oBAAA;EAQlC,wBAAA,CAAyB,QAAA;EAIzB,iBAAA,CAAkB,cAAA,EAAgB,cAAA;EAAA,QAIjC,0BAAA;EAAA,QAyBA,gBAAA;EAAA,QAuBA,cAAA;EAAA,QAmCA,QAAA;EAAA,QAmCA,eAAA;EAAA,QAcA,iBAAA;EAAA,QAWA,wBAAA;EAAA,QAUA,0BAAA;AAAA"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import "../../api-sessions/index.js";
|
|
2
1
|
import { ExtendedSpan } from "../../api-traces/api/TraceAPI/types.js";
|
|
3
2
|
import { MXLSpanSessionManagerArgs, SessionEndedListener, SessionStartedListener, SpanSessionManagerInternal } from "./types.js";
|
|
4
|
-
import "../../index.js";
|
|
5
3
|
import { PropertyOptions, ReasonSessionEnded, StartSessionOptions } from "../../api-sessions/manager/types.js";
|
|
6
4
|
import { HrTime, TracerProvider } from "@opentelemetry/api";
|
|
7
5
|
import { ReadableSpan } from "@opentelemetry/sdk-trace-web";
|
|
@@ -30,6 +28,7 @@ declare class MXLSpanSessionManager implements SpanSessionManagerInternal {
|
|
|
30
28
|
private readonly _sessionStorage;
|
|
31
29
|
private readonly _limitManager;
|
|
32
30
|
private readonly _referrer;
|
|
31
|
+
private readonly _navigationPerformance;
|
|
33
32
|
constructor({
|
|
34
33
|
diag: diagParam,
|
|
35
34
|
perf,
|
|
@@ -37,7 +36,8 @@ declare class MXLSpanSessionManager implements SpanSessionManagerInternal {
|
|
|
37
36
|
storage,
|
|
38
37
|
sessionStorage,
|
|
39
38
|
limitManager,
|
|
40
|
-
referrer
|
|
39
|
+
referrer,
|
|
40
|
+
navigationPerformance
|
|
41
41
|
}: MXLSpanSessionManagerArgs);
|
|
42
42
|
private _getPermanentAttributes;
|
|
43
43
|
addBreadcrumb(name: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLSpanSessionManager.d.ts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MXLSpanSessionManager.d.ts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"mappings":";;;;;;;cA4Da,qBAAA,YAAiC,0BAAA;EAAA,QACpC,kBAAA;EAAA,QACA,gBAAA;EAAA,QACA,uBAAA;EAAA,QACA,YAAA;EAAA,QACA,oBAAA;EAAA,QACA,kBAAA;EAAA,QACA,UAAA;EAAA,QACA,mBAAA;EAAA,iBACS,wBAAA;EAAA,iBACA,sBAAA;EAAA,iBACA,IAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,aAAA;EAAA,QAMT,OAAA;EAAA,iBACS,eAAA;EAAA,iBACA,KAAA;EAAA,iBACA,KAAA;EAAA,iBACA,cAAA;EAAA,iBACA,QAAA;EAAA,iBACA,eAAA;EAAA,iBACA,aAAA;EAAA,iBACA,SAAA;EAAA,iBACA,sBAAA;;IAGf,IAAA,EAAM,SAAA;IACN,IAAA;IACA,aAAA;IACA,OAAA;IACA,cAAA;IACA,YAAA;IACA,QAAA;IACA;EAAA,GACC,yBAAA;EAAA,QA6BK,uBAAA;EAkBD,aAAA,CAAc,IAAA;EAuBd,WAAA,CACL,WAAA,UACA,KAAA,UACA,OAAA,GAAU,eAAA;EA8BL,cAAA,CAAe,WAAA;EAyBf,cAAA,CAAA;EAKA,sBAAA,CAAuB,MAAA,EAAQ,kBAAA;EAAA,QA6B9B,yBAAA;EAYD,4BAAA,CACL,MAAA,EAAQ,kBAAA,GACP,YAAA;EAuBI,YAAA,CAAA;EAIA,oBAAA,CAAA;EAIA,cAAA,CAAA,GAAkB,YAAA;EAIlB,mBAAA,CAAA,GAAuB,MAAA;EAIvB,gBAAA,CAAiB,OAAA,GAAU,mBAAA;EA6D3B,sBAAA,CAAuB,GAAA;EAWvB,0BAAA,CAA2B,GAAA;EAI3B,yBAAA,CAA0B,QAAA,EAAU,sBAAA;EAQpC,uBAAA,CAAwB,QAAA,EAAU,oBAAA;EAQlC,wBAAA,CAAyB,QAAA;EAIzB,iBAAA,CAAkB,cAAA,EAAgB,cAAA;EAAA,QAIjC,0BAAA;EAAA,QAyBA,gBAAA;EAAA,QAuBA,cAAA;EAAA,QAmCA,QAAA;EAAA,QAmCA,eAAA;EAAA,QAcA,iBAAA;EAAA,QAWA,wBAAA;EAAA,QAUA,0BAAA;AAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { generateUUID } from "../../utils/generateUUID.js";
|
|
2
2
|
import { getIncrementedCount } from "../../utils/getIncrementedCount.js";
|
|
3
|
-
import { KEY_MXL_COLD_START, KEY_MXL_EXPERIENCE_ID, KEY_MXL_FROM_STORAGE, KEY_MXL_NAVIGATION_SOURCE, KEY_MXL_REFERRER_URL, KEY_MXL_SDK_STARTUP_DURATION, KEY_MXL_SESSION_NUMBER, KEY_MXL_SESSION_REASON_ENDED, KEY_MXL_SESSION_REASON_STARTED, KEY_MXL_SOURCE_TAB_ID, KEY_MXL_STATE, KEY_MXL_TAB_ID, KEY_MXL_TYPE, KEY_PREFIX_MXL_PROPERTIES
|
|
3
|
+
import { KEY_MXL_COLD_START, KEY_MXL_EXPERIENCE_ID, KEY_MXL_FROM_STORAGE, KEY_MXL_NAVIGATION_SOURCE, KEY_MXL_REFERRER_URL, KEY_MXL_SDK_STARTUP_DURATION, KEY_MXL_SESSION_NUMBER, KEY_MXL_SESSION_REASON_ENDED, KEY_MXL_SESSION_REASON_STARTED, KEY_MXL_SOURCE_TAB_ID, KEY_MXL_STATE, KEY_MXL_TAB_ID, KEY_MXL_TYPE, KEY_PREFIX_MXL_PROPERTIES } from "../../constants/attributes.js";
|
|
4
4
|
import { getVisibilityState } from "../../utils/getVisibilityState.js";
|
|
5
5
|
import { OTelPerformanceManager } from "../../utils/PerformanceManager/OTelPerformanceManager.js";
|
|
6
6
|
import { getAppInstanceId } from "../../resources/appInstanceId.js";
|
|
@@ -9,7 +9,6 @@ import { MXL_SESSION_NUMBER_STORAGE_KEY, MXL_TAB_ACTIVITY_STORAGE_KEY, MXL_TAB_S
|
|
|
9
9
|
import { diag, trace } from "@opentelemetry/api";
|
|
10
10
|
import { BasicTracerProvider } from "@opentelemetry/sdk-trace-web";
|
|
11
11
|
import { ATTR_SESSION_ID } from "@opentelemetry/semantic-conventions/incubating";
|
|
12
|
-
|
|
13
12
|
//#region src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts
|
|
14
13
|
var MXLSpanSessionManager = class {
|
|
15
14
|
_previousSessionId = null;
|
|
@@ -34,7 +33,8 @@ var MXLSpanSessionManager = class {
|
|
|
34
33
|
_sessionStorage;
|
|
35
34
|
_limitManager;
|
|
36
35
|
_referrer;
|
|
37
|
-
|
|
36
|
+
_navigationPerformance;
|
|
37
|
+
constructor({ diag: diagParam, perf, visibilityDoc = window.document, storage = window.localStorage, sessionStorage = window.sessionStorage, limitManager, referrer = document.referrer, navigationPerformance = window.performance }) {
|
|
38
38
|
this._diag = diagParam ?? diag.createComponentLogger({ namespace: "MXLSpanSessionManager" });
|
|
39
39
|
this._perf = perf ?? new OTelPerformanceManager();
|
|
40
40
|
this._visibilityDoc = visibilityDoc;
|
|
@@ -42,6 +42,7 @@ var MXLSpanSessionManager = class {
|
|
|
42
42
|
this._sessionStorage = sessionStorage;
|
|
43
43
|
this._limitManager = limitManager;
|
|
44
44
|
this._referrer = referrer;
|
|
45
|
+
this._navigationPerformance = navigationPerformance;
|
|
45
46
|
this._tracer = trace.getTracer("mxl-web-sdk-sessions");
|
|
46
47
|
this._noExportTracer = new BasicTracerProvider().getTracer("mxl-web-sdk-sessions");
|
|
47
48
|
this._referrerInfo = this._processReferrer();
|
|
@@ -55,7 +56,7 @@ var MXLSpanSessionManager = class {
|
|
|
55
56
|
try {
|
|
56
57
|
for (let i = 0; i < this._storage.length; i++) {
|
|
57
58
|
const key = this._storage.key(i);
|
|
58
|
-
if (key?.startsWith(
|
|
59
|
+
if (key?.startsWith("mxl.properties.")) {
|
|
59
60
|
const value = this._storage.getItem(key);
|
|
60
61
|
if (value) permanentAttributes.set(key, value);
|
|
61
62
|
}
|
|
@@ -170,7 +171,7 @@ var MXLSpanSessionManager = class {
|
|
|
170
171
|
this._nextSessionCounts = {};
|
|
171
172
|
const attributes = {
|
|
172
173
|
...this._getPermanentAttributes(),
|
|
173
|
-
[KEY_MXL_TYPE]:
|
|
174
|
+
[KEY_MXL_TYPE]: "ux.session",
|
|
174
175
|
[KEY_MXL_STATE]: getVisibilityState(this._visibilityDoc),
|
|
175
176
|
[ATTR_SESSION_ID]: this._activeSessionId,
|
|
176
177
|
[KEY_MXL_COLD_START]: this._coldStart,
|
|
@@ -182,7 +183,7 @@ var MXLSpanSessionManager = class {
|
|
|
182
183
|
};
|
|
183
184
|
if (this._referrerInfo.isValid && this._referrerInfo.scrubbedUrl) attributes[KEY_MXL_REFERRER_URL] = this._referrerInfo.scrubbedUrl;
|
|
184
185
|
if (this._tab.sourceTabId) attributes[KEY_MXL_SOURCE_TAB_ID] = this._tab.sourceTabId;
|
|
185
|
-
|
|
186
|
+
attributes[KEY_MXL_SESSION_REASON_STARTED] = options?.reason ?? "manual";
|
|
186
187
|
this._sessionSpan = new MXLExtendedSpan(this._tracer.startSpan("mxl-session", { attributes }));
|
|
187
188
|
this._coldStart = false;
|
|
188
189
|
for (const listener of this._sessionStartedListeners) try {
|
|
@@ -221,7 +222,7 @@ var MXLSpanSessionManager = class {
|
|
|
221
222
|
}
|
|
222
223
|
_determineNavigationSource() {
|
|
223
224
|
try {
|
|
224
|
-
const navEntries =
|
|
225
|
+
const navEntries = this._navigationPerformance.getEntriesByType("navigation");
|
|
225
226
|
if (navEntries.length > 0 && navEntries[0]) {
|
|
226
227
|
const navEntry = navEntries[0];
|
|
227
228
|
if (navEntry.type === "reload") return "reload";
|
|
@@ -341,7 +342,7 @@ var MXLSpanSessionManager = class {
|
|
|
341
342
|
document.addEventListener("click", handleNewTabClick, options);
|
|
342
343
|
}
|
|
343
344
|
};
|
|
344
|
-
|
|
345
345
|
//#endregion
|
|
346
346
|
export { MXLSpanSessionManager };
|
|
347
|
+
|
|
347
348
|
//# sourceMappingURL=MXLSpanSessionManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLSpanSessionManager.js","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"sourcesContent":["import type {\n Attributes,\n DiagLogger,\n HrTime,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport { diag, trace } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SESSION_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type {\n PropertyOptions,\n ReasonSessionEnded,\n StartSessionOptions,\n} from '../../api-sessions/index.ts';\nimport type { VisibilityStateDocument } from '../../common/index.ts';\nimport {\n KEY_MXL_COLD_START,\n KEY_MXL_EXPERIENCE_ID,\n KEY_MXL_FROM_STORAGE,\n KEY_MXL_NAVIGATION_SOURCE,\n KEY_MXL_REFERRER_URL,\n KEY_MXL_SDK_STARTUP_DURATION,\n KEY_MXL_SESSION_NUMBER,\n KEY_MXL_SESSION_REASON_ENDED,\n KEY_MXL_SESSION_REASON_STARTED,\n KEY_MXL_SOURCE_TAB_ID,\n KEY_MXL_STATE,\n KEY_MXL_TAB_ID,\n KEY_MXL_TYPE,\n KEY_PREFIX_MXL_PROPERTIES,\n MXL_TYPES,\n} from '../../constants/index.ts';\nimport type { ExtendedSpan } from '../../index.ts';\nimport { getAppInstanceId } from '../../resources/index.ts';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport {\n generateUUID,\n getIncrementedCount,\n getVisibilityState,\n OTelPerformanceManager,\n} from '../../utils/index.ts';\nimport type { LimitManagerInternal } from '../MXLLimitManager/index.ts';\nimport { MXLExtendedSpan } from '../MXLTraceManager/MXLExtendedSpan.ts';\nimport {\n MXL_SESSION_NUMBER_STORAGE_KEY,\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n MXL_TAB_STORAGE_KEY,\n} from './constants.ts';\nimport type {\n MXLSpanSessionManagerArgs,\n NavigationSource,\n SessionEndedListener,\n SessionStartedListener,\n SpanSessionManagerInternal,\n Tab,\n TabActivity,\n} from './types.ts';\n\nexport class MXLSpanSessionManager implements SpanSessionManagerInternal {\n private _previousSessionId: string | null = null;\n private _activeSessionId: string | null = null;\n private _activeSessionStartTime: HrTime | null = null;\n private _sessionSpan: ExtendedSpan | null = null;\n private _activeSessionCounts: Record<string, number> | null = null;\n private _nextSessionCounts: Record<string, number> = {};\n private _coldStart = true; // Whether the session was started from a new page load or not.\n private _sdkStartupDuration = 0;\n private readonly _sessionStartedListeners: Array<SessionStartedListener> = [];\n private readonly _sessionEndedListeners: Array<SessionEndedListener> = [];\n private readonly _tab: Tab;\n private readonly _navigationSource: NavigationSource;\n private readonly _referrerInfo: {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n };\n\n private _tracer: Tracer;\n private readonly _noExportTracer: Tracer;\n private readonly _diag: DiagLogger;\n private readonly _perf: PerformanceManager;\n private readonly _visibilityDoc: VisibilityStateDocument;\n private readonly _storage: Storage;\n private readonly _sessionStorage: Storage;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _referrer: string;\n\n public constructor({\n diag: diagParam,\n perf,\n visibilityDoc = window.document,\n storage = window.localStorage,\n sessionStorage = window.sessionStorage,\n limitManager,\n referrer = document.referrer,\n }: MXLSpanSessionManagerArgs) {\n this._diag =\n diagParam ??\n diag.createComponentLogger({\n namespace: 'MXLSpanSessionManager',\n });\n this._perf = perf ?? new OTelPerformanceManager();\n this._visibilityDoc = visibilityDoc;\n this._storage = storage;\n this._sessionStorage = sessionStorage;\n this._limitManager = limitManager;\n this._referrer = referrer;\n this._tracer = trace.getTracer('mxl-web-sdk-sessions');\n this._noExportTracer = new BasicTracerProvider().getTracer(\n 'mxl-web-sdk-sessions',\n );\n\n // Process referrer once at initialization\n this._referrerInfo = this._processReferrer();\n\n // Initialize tab tracking and navigation source\n const initResult = this._initTab();\n this._tab = initResult.tab;\n this._navigationSource = initResult.navigationSource;\n this._setupNewTabClickListeners();\n }\n\n // Collects all permanent session properties from localStorage\n private _getPermanentAttributes(): Attributes {\n const permanentAttributes = new Map();\n try {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(KEY_PREFIX_MXL_PROPERTIES)) {\n const value = this._storage.getItem(key);\n if (value) {\n permanentAttributes.set(key, value);\n }\n }\n }\n } catch (error) {\n this._diag.warn('Error loading permanent session properties', error);\n }\n return Object.fromEntries(permanentAttributes.entries()) as Attributes;\n }\n\n public addBreadcrumb(name: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add breadcrumb to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedBreadcrumb = this._limitManager.limitBreadcrumb(name);\n\n if (limitedBreadcrumb === 'dropped') {\n return;\n }\n\n this._sessionSpan.addEvent(\n 'mxl-breadcrumb',\n {\n message: limitedBreadcrumb.name,\n },\n this._perf.getNowMillis(),\n );\n }\n\n public addProperty(\n propertyKey: string,\n value: string,\n options?: PropertyOptions,\n ) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add properties to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedSessionProperty = this._limitManager.limitSessionProperty(\n propertyKey,\n value,\n );\n\n if (limitedSessionProperty === 'dropped') {\n return;\n }\n\n const attributeKey = KEY_PREFIX_MXL_PROPERTIES + limitedSessionProperty.key;\n this._sessionSpan.setAttribute(attributeKey, limitedSessionProperty.value);\n\n if (options?.lifespan === 'permanent') {\n try {\n this._storage.setItem(attributeKey, value);\n } catch (error) {\n this._diag.warn('Failed to set permanent session property', error);\n }\n }\n }\n\n public removeProperty(propertyKey: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to remove a session property, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n // We truncate long session property keys on addProperty so need to apply the same logic here\n const attributeKey =\n KEY_PREFIX_MXL_PROPERTIES +\n this._limitManager.truncateString('session_property_key', propertyKey);\n this._sessionSpan.removeAttribute(attributeKey);\n\n try {\n if (this._storage.getItem(attributeKey)) {\n this._storage.removeItem(attributeKey);\n }\n } catch (error) {\n this._diag.warn('Error removing permanent session property', error);\n }\n }\n\n // the external api doesn't include a reason, and if a users uses it to end a session, the reason will be 'manual'\n // note: don't use this internally, this is just for user facing APIs. Use this.endSessionSpanInternal instead.\n public endSessionSpan() {\n this.endSessionSpanInternal('manual');\n }\n\n // endSessionSpanInternal is not part of the public API, but is used internally to end a session span adding a specific reason\n public endSessionSpanInternal(reason: ReasonSessionEnded) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n for (const listener of this._sessionEndedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn('Error while executing session ended listener', error);\n }\n }\n\n this._sessionSpan.setAttributes(this._endSessionSpanAttributes(reason));\n this._sessionSpan.end();\n this._sessionSpan = null;\n this._activeSessionStartTime = null;\n this._previousSessionId = this._activeSessionId;\n this._activeSessionId = null;\n this._activeSessionCounts = null;\n\n // For the limit manager to add a session ended listener it would need a reference to this\n // session manager which would create a circular dependency\n this._limitManager.reset();\n }\n\n private _endSessionSpanAttributes(reason: ReasonSessionEnded): Attributes {\n return {\n ...this._getPermanentAttributes(),\n [KEY_MXL_SESSION_REASON_ENDED]: reason,\n ...this._activeSessionCounts,\n ...this._limitManager.getDiagnosticCounts(),\n [KEY_MXL_SDK_STARTUP_DURATION]: this._sdkStartupDuration,\n };\n }\n\n // currentSessionAsReadableSpan creates a copy of the current session span with the same attributes\n // that endSessionSpanInternal would add, but does not affect the original session span which remains active.\n public currentSessionAsReadableSpan(\n reason: ReasonSessionEnded,\n ): ReadableSpan | null {\n if (!this._sessionSpan || !this._activeSessionStartTime) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return null;\n }\n\n // Create a new span with the same name and start time as the original session span,\n // but using a new tracer so that it does not get exported.\n const span = this._noExportTracer.startSpan('mxl-session', {\n startTime: this._activeSessionStartTime,\n attributes: {\n // Copy all current attributes from the original session span, plus the ending attributes\n ...this._sessionSpan.attributes,\n ...this._endSessionSpanAttributes(reason),\n [KEY_MXL_FROM_STORAGE]: true,\n },\n });\n span.end();\n return span as unknown as ReadableSpan;\n }\n\n public getSessionId(): string | null {\n return this._activeSessionId;\n }\n\n public getPreviousSessionId(): string | null {\n return this._previousSessionId;\n }\n\n public getSessionSpan(): ExtendedSpan | null {\n return this._sessionSpan;\n }\n\n public getSessionStartTime(): HrTime | null {\n return this._activeSessionStartTime;\n }\n\n public startSessionSpan(options?: StartSessionOptions) {\n // if there is a session already in progress, end it first\n if (this._sessionSpan) {\n this.endSessionSpanInternal('manual');\n }\n\n this._activeSessionId = generateUUID();\n this._activeSessionStartTime = this._perf.getNowHRTime();\n this._activeSessionCounts = {};\n const previouslyRecordedCounts = this._nextSessionCounts;\n this._nextSessionCounts = {};\n\n const attributes: Attributes = {\n ...this._getPermanentAttributes(),\n [KEY_MXL_TYPE]: MXL_TYPES.Session,\n [KEY_MXL_STATE]: getVisibilityState(this._visibilityDoc),\n [ATTR_SESSION_ID]: this._activeSessionId,\n [KEY_MXL_COLD_START]: this._coldStart,\n [KEY_MXL_SESSION_NUMBER]: getIncrementedCount(\n this._storage,\n MXL_SESSION_NUMBER_STORAGE_KEY,\n this._diag,\n ),\n [KEY_MXL_EXPERIENCE_ID]: this._tab.experienceId,\n [KEY_MXL_TAB_ID]: this._tab.tabId,\n [KEY_MXL_NAVIGATION_SOURCE]: this._navigationSource,\n ...previouslyRecordedCounts,\n };\n\n // Add scrubbed referrer URL if available\n if (this._referrerInfo.isValid && this._referrerInfo.scrubbedUrl) {\n attributes[KEY_MXL_REFERRER_URL] = this._referrerInfo.scrubbedUrl;\n }\n\n if (this._tab.sourceTabId) {\n attributes[KEY_MXL_SOURCE_TAB_ID] = this._tab.sourceTabId;\n }\n\n if (options?.reason) {\n attributes[KEY_MXL_SESSION_REASON_STARTED] = options.reason;\n }\n\n this._sessionSpan = new MXLExtendedSpan(\n this._tracer.startSpan('mxl-session', {\n attributes,\n }),\n );\n\n this._coldStart = false;\n\n for (const listener of this._sessionStartedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn(\n 'Error while executing session started listener',\n error,\n );\n }\n }\n }\n\n public incrSessionCountForKey(key: string) {\n if (!this._sessionSpan || !this._activeSessionCounts) {\n this._diag.debug(\n 'trying to increment a count for the active session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n this._activeSessionCounts[key] = (this._activeSessionCounts[key] || 0) + 1;\n }\n\n public incrNextSessionCountForKey(key: string) {\n this._nextSessionCounts[key] = (this._nextSessionCounts[key] || 0) + 1;\n }\n\n public addSessionStartedListener(listener: SessionStartedListener) {\n const listenerIndex = this._sessionStartedListeners.push(listener);\n\n return () => {\n this._sessionStartedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public addSessionEndedListener(listener: SessionEndedListener) {\n const listenerIndex = this._sessionEndedListeners.push(listener);\n\n return () => {\n this._sessionEndedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public recordSDKStartupDuration(duration: number) {\n this._sdkStartupDuration = Math.ceil(duration);\n }\n\n public setTracerProvider(tracerProvider: TracerProvider) {\n this._tracer = tracerProvider.getTracer('mxl-web-sdk-sessions');\n }\n\n private _determineNavigationSource(): NavigationSource {\n // Check Navigation Timing API first\n try {\n const navEntries = window.performance.getEntriesByType('navigation');\n if (navEntries.length > 0 && navEntries[0]) {\n const navEntry = navEntries[0];\n if (navEntry.type === 'reload') {\n return 'reload';\n } else if (navEntry.type === 'back_forward') {\n return 'back_forward';\n }\n }\n } catch (error) {\n this._diag.warn('Failed to get navigation type', error);\n }\n\n // If not reload/back_forward, analyze referrer\n if (this._referrerInfo.isValid) {\n return this._referrerInfo.isSameOrigin ? 'same_origin' : 'external';\n }\n\n return 'direct';\n }\n\n private _processReferrer(): {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n } {\n if (!this._referrer) {\n return { isValid: false, isSameOrigin: false };\n }\n\n try {\n const referrerUrl = new URL(this._referrer);\n const currentOrigin = window.location.origin;\n\n return {\n isValid: true,\n isSameOrigin: referrerUrl.origin === currentOrigin,\n scrubbedUrl: referrerUrl.origin + referrerUrl.pathname,\n };\n } catch {\n return { isValid: false, isSameOrigin: false };\n }\n }\n\n private _getTabContext(navigationSource: NavigationSource): {\n sourceTabId?: string;\n experienceId: string;\n tabId: string;\n } {\n // Always use getAppInstanceId to ensure consistent tab ID\n const tabId = getAppInstanceId(this._sessionStorage, this._diag);\n\n // Look for source tab only if navigation is from same origin\n let sourceTabId: string | undefined;\n let experienceId: string | undefined;\n\n if (navigationSource === 'same_origin') {\n const lastActivity = this._getTabActivity();\n if (lastActivity) {\n const age = Date.now() - lastActivity.lastActivityMs;\n // 10 second window to detect source tabs - balances capturing legitimate\n // tab relationships while avoiding false positives from stale activity\n if (age <= 10_000) {\n sourceTabId = lastActivity.tabId;\n experienceId = lastActivity.experienceId;\n }\n }\n }\n\n // Only generate new UUID if we didn't inherit one from source tab\n experienceId ??= generateUUID();\n\n return {\n sourceTabId,\n experienceId,\n tabId,\n };\n }\n\n private _initTab(): { tab: Tab; navigationSource: NavigationSource } {\n // Determine navigation source once at startup\n const navigationSource = this._determineNavigationSource();\n\n // On page reload, preserve the same tab IDs\n try {\n const stored = this._sessionStorage.getItem(MXL_TAB_STORAGE_KEY);\n if (stored) {\n return {\n tab: JSON.parse(stored) as Tab,\n navigationSource,\n };\n }\n } catch (e) {\n this._diag.warn('Failed to retrieve tab data', e);\n }\n\n // Get complete navigation context for new tab\n const tabContext = this._getTabContext(navigationSource);\n const tab: Tab = {\n experienceId: tabContext.experienceId,\n sourceTabId: tabContext.sourceTabId,\n tabId: tabContext.tabId,\n };\n\n // Persist tab data for page reloads\n try {\n this._sessionStorage.setItem(MXL_TAB_STORAGE_KEY, JSON.stringify(tab));\n } catch (e) {\n this._diag.warn('Failed to store tab data', e);\n }\n\n return { tab, navigationSource };\n }\n\n private _getTabActivity(): TabActivity | null {\n try {\n const stored = this._storage.getItem(MXL_TAB_ACTIVITY_STORAGE_KEY);\n if (!stored) {\n return null;\n }\n\n return JSON.parse(stored) as TabActivity;\n } catch (e) {\n this._diag.warn('Failed to retrieve tab activity', e);\n return null;\n }\n }\n\n private _storeTabActivity(activity: TabActivity): void {\n try {\n this._storage.setItem(\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n JSON.stringify(activity),\n );\n } catch (error) {\n this._diag.warn('Failed to save tab activity', error);\n }\n }\n\n private _storeCurrentTabAsSource(): void {\n const activity: TabActivity = {\n tabId: this._tab.tabId,\n experienceId: this._tab.experienceId,\n lastActivityMs: Date.now(),\n };\n\n this._storeTabActivity(activity);\n }\n\n private _setupNewTabClickListeners(): void {\n const handleNewTabClick = (ev: MouseEvent) => {\n // Check for modifier keys that open new tabs/windows\n if (\n ev.button === 1 || // Middle click\n ev.ctrlKey ||\n ev.metaKey || // Cmd/Ctrl + click\n ev.shiftKey // Shift + click (new window)\n ) {\n this._storeCurrentTabAsSource();\n return;\n }\n\n // Check for elements with attributes that open new tabs\n const newTabAnchor = (ev.target as HTMLElement | null)?.closest(\n 'a[target=\"_blank\"], form[target=\"_blank\"], a[rel*=\"noopener\"], a[rel*=\"noreferrer\"]',\n );\n if (newTabAnchor) {\n this._storeCurrentTabAsSource();\n }\n };\n\n // Capture phase ensures we record before navigation\n const options = { capture: true, passive: true };\n document.addEventListener('auxclick', handleNewTabClick, options);\n document.addEventListener('click', handleNewTabClick, options);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MXLSpanSessionManager.js","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/MXLSpanSessionManager.ts"],"sourcesContent":["import type {\n Attributes,\n DiagLogger,\n HrTime,\n Tracer,\n TracerProvider,\n} from '@opentelemetry/api';\nimport { diag, trace } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-web';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SESSION_ID } from '@opentelemetry/semantic-conventions/incubating';\nimport type {\n PropertyOptions,\n ReasonSessionEnded,\n StartSessionOptions,\n} from '../../api-sessions/index.ts';\nimport type { VisibilityStateDocument } from '../../common/index.ts';\nimport {\n KEY_MXL_COLD_START,\n KEY_MXL_EXPERIENCE_ID,\n KEY_MXL_FROM_STORAGE,\n KEY_MXL_NAVIGATION_SOURCE,\n KEY_MXL_REFERRER_URL,\n KEY_MXL_SDK_STARTUP_DURATION,\n KEY_MXL_SESSION_NUMBER,\n KEY_MXL_SESSION_REASON_ENDED,\n KEY_MXL_SESSION_REASON_STARTED,\n KEY_MXL_SOURCE_TAB_ID,\n KEY_MXL_STATE,\n KEY_MXL_TAB_ID,\n KEY_MXL_TYPE,\n KEY_PREFIX_MXL_PROPERTIES,\n MXL_TYPES,\n} from '../../constants/index.ts';\nimport type { ExtendedSpan } from '../../index.ts';\nimport { getAppInstanceId } from '../../resources/index.ts';\nimport type { PerformanceManager } from '../../utils/index.ts';\nimport {\n generateUUID,\n getIncrementedCount,\n getVisibilityState,\n OTelPerformanceManager,\n} from '../../utils/index.ts';\nimport type { LimitManagerInternal } from '../MXLLimitManager/index.ts';\nimport { MXLExtendedSpan } from '../MXLTraceManager/MXLExtendedSpan.ts';\nimport {\n MXL_SESSION_NUMBER_STORAGE_KEY,\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n MXL_TAB_STORAGE_KEY,\n} from './constants.ts';\nimport type {\n MXLSpanSessionManagerArgs,\n NavigationSource,\n SessionEndedListener,\n SessionStartedListener,\n SpanSessionManagerInternal,\n Tab,\n TabActivity,\n} from './types.ts';\n\nexport class MXLSpanSessionManager implements SpanSessionManagerInternal {\n private _previousSessionId: string | null = null;\n private _activeSessionId: string | null = null;\n private _activeSessionStartTime: HrTime | null = null;\n private _sessionSpan: ExtendedSpan | null = null;\n private _activeSessionCounts: Record<string, number> | null = null;\n private _nextSessionCounts: Record<string, number> = {};\n private _coldStart = true; // Whether the session was started from a new page load or not.\n private _sdkStartupDuration = 0;\n private readonly _sessionStartedListeners: Array<SessionStartedListener> = [];\n private readonly _sessionEndedListeners: Array<SessionEndedListener> = [];\n private readonly _tab: Tab;\n private readonly _navigationSource: NavigationSource;\n private readonly _referrerInfo: {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n };\n\n private _tracer: Tracer;\n private readonly _noExportTracer: Tracer;\n private readonly _diag: DiagLogger;\n private readonly _perf: PerformanceManager;\n private readonly _visibilityDoc: VisibilityStateDocument;\n private readonly _storage: Storage;\n private readonly _sessionStorage: Storage;\n private readonly _limitManager: LimitManagerInternal;\n private readonly _referrer: string;\n private readonly _navigationPerformance: Pick<Performance, 'getEntriesByType'>;\n\n public constructor({\n diag: diagParam,\n perf,\n visibilityDoc = window.document,\n storage = window.localStorage,\n sessionStorage = window.sessionStorage,\n limitManager,\n referrer = document.referrer,\n navigationPerformance = window.performance,\n }: MXLSpanSessionManagerArgs) {\n this._diag =\n diagParam ??\n diag.createComponentLogger({\n namespace: 'MXLSpanSessionManager',\n });\n this._perf = perf ?? new OTelPerformanceManager();\n this._visibilityDoc = visibilityDoc;\n this._storage = storage;\n this._sessionStorage = sessionStorage;\n this._limitManager = limitManager;\n this._referrer = referrer;\n this._navigationPerformance = navigationPerformance;\n this._tracer = trace.getTracer('mxl-web-sdk-sessions');\n this._noExportTracer = new BasicTracerProvider().getTracer(\n 'mxl-web-sdk-sessions',\n );\n\n // Process referrer once at initialization\n this._referrerInfo = this._processReferrer();\n\n // Initialize tab tracking and navigation source\n const initResult = this._initTab();\n this._tab = initResult.tab;\n this._navigationSource = initResult.navigationSource;\n this._setupNewTabClickListeners();\n }\n\n // Collects all permanent session properties from localStorage\n private _getPermanentAttributes(): Attributes {\n const permanentAttributes = new Map();\n try {\n for (let i = 0; i < this._storage.length; i++) {\n const key = this._storage.key(i);\n if (key?.startsWith(KEY_PREFIX_MXL_PROPERTIES)) {\n const value = this._storage.getItem(key);\n if (value) {\n permanentAttributes.set(key, value);\n }\n }\n }\n } catch (error) {\n this._diag.warn('Error loading permanent session properties', error);\n }\n return Object.fromEntries(permanentAttributes.entries()) as Attributes;\n }\n\n public addBreadcrumb(name: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add breadcrumb to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedBreadcrumb = this._limitManager.limitBreadcrumb(name);\n\n if (limitedBreadcrumb === 'dropped') {\n return;\n }\n\n this._sessionSpan.addEvent(\n 'mxl-breadcrumb',\n {\n message: limitedBreadcrumb.name,\n },\n this._perf.getNowMillis(),\n );\n }\n\n public addProperty(\n propertyKey: string,\n value: string,\n options?: PropertyOptions,\n ) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to add properties to a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n const limitedSessionProperty = this._limitManager.limitSessionProperty(\n propertyKey,\n value,\n );\n\n if (limitedSessionProperty === 'dropped') {\n return;\n }\n\n const attributeKey = KEY_PREFIX_MXL_PROPERTIES + limitedSessionProperty.key;\n this._sessionSpan.setAttribute(attributeKey, limitedSessionProperty.value);\n\n if (options?.lifespan === 'permanent') {\n try {\n this._storage.setItem(attributeKey, value);\n } catch (error) {\n this._diag.warn('Failed to set permanent session property', error);\n }\n }\n }\n\n public removeProperty(propertyKey: string) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to remove a session property, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n // We truncate long session property keys on addProperty so need to apply the same logic here\n const attributeKey =\n KEY_PREFIX_MXL_PROPERTIES +\n this._limitManager.truncateString('session_property_key', propertyKey);\n this._sessionSpan.removeAttribute(attributeKey);\n\n try {\n if (this._storage.getItem(attributeKey)) {\n this._storage.removeItem(attributeKey);\n }\n } catch (error) {\n this._diag.warn('Error removing permanent session property', error);\n }\n }\n\n // the external api doesn't include a reason, and if a users uses it to end a session, the reason will be 'manual'\n // note: don't use this internally, this is just for user facing APIs. Use this.endSessionSpanInternal instead.\n public endSessionSpan() {\n this.endSessionSpanInternal('manual');\n }\n\n // endSessionSpanInternal is not part of the public API, but is used internally to end a session span adding a specific reason\n public endSessionSpanInternal(reason: ReasonSessionEnded) {\n if (!this._sessionSpan) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n for (const listener of this._sessionEndedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn('Error while executing session ended listener', error);\n }\n }\n\n this._sessionSpan.setAttributes(this._endSessionSpanAttributes(reason));\n this._sessionSpan.end();\n this._sessionSpan = null;\n this._activeSessionStartTime = null;\n this._previousSessionId = this._activeSessionId;\n this._activeSessionId = null;\n this._activeSessionCounts = null;\n\n // For the limit manager to add a session ended listener it would need a reference to this\n // session manager which would create a circular dependency\n this._limitManager.reset();\n }\n\n private _endSessionSpanAttributes(reason: ReasonSessionEnded): Attributes {\n return {\n ...this._getPermanentAttributes(),\n [KEY_MXL_SESSION_REASON_ENDED]: reason,\n ...this._activeSessionCounts,\n ...this._limitManager.getDiagnosticCounts(),\n [KEY_MXL_SDK_STARTUP_DURATION]: this._sdkStartupDuration,\n };\n }\n\n // currentSessionAsReadableSpan creates a copy of the current session span with the same attributes\n // that endSessionSpanInternal would add, but does not affect the original session span which remains active.\n public currentSessionAsReadableSpan(\n reason: ReasonSessionEnded,\n ): ReadableSpan | null {\n if (!this._sessionSpan || !this._activeSessionStartTime) {\n this._diag.debug(\n 'trying to end a session, but there is no session in progress. This is a no-op.',\n );\n return null;\n }\n\n // Create a new span with the same name and start time as the original session span,\n // but using a new tracer so that it does not get exported.\n const span = this._noExportTracer.startSpan('mxl-session', {\n startTime: this._activeSessionStartTime,\n attributes: {\n // Copy all current attributes from the original session span, plus the ending attributes\n ...this._sessionSpan.attributes,\n ...this._endSessionSpanAttributes(reason),\n [KEY_MXL_FROM_STORAGE]: true,\n },\n });\n span.end();\n return span as unknown as ReadableSpan;\n }\n\n public getSessionId(): string | null {\n return this._activeSessionId;\n }\n\n public getPreviousSessionId(): string | null {\n return this._previousSessionId;\n }\n\n public getSessionSpan(): ExtendedSpan | null {\n return this._sessionSpan;\n }\n\n public getSessionStartTime(): HrTime | null {\n return this._activeSessionStartTime;\n }\n\n public startSessionSpan(options?: StartSessionOptions) {\n // if there is a session already in progress, end it first\n if (this._sessionSpan) {\n this.endSessionSpanInternal('manual');\n }\n\n this._activeSessionId = generateUUID();\n this._activeSessionStartTime = this._perf.getNowHRTime();\n this._activeSessionCounts = {};\n const previouslyRecordedCounts = this._nextSessionCounts;\n this._nextSessionCounts = {};\n\n const attributes: Attributes = {\n ...this._getPermanentAttributes(),\n [KEY_MXL_TYPE]: MXL_TYPES.Session,\n [KEY_MXL_STATE]: getVisibilityState(this._visibilityDoc),\n [ATTR_SESSION_ID]: this._activeSessionId,\n [KEY_MXL_COLD_START]: this._coldStart,\n [KEY_MXL_SESSION_NUMBER]: getIncrementedCount(\n this._storage,\n MXL_SESSION_NUMBER_STORAGE_KEY,\n this._diag,\n ),\n [KEY_MXL_EXPERIENCE_ID]: this._tab.experienceId,\n [KEY_MXL_TAB_ID]: this._tab.tabId,\n [KEY_MXL_NAVIGATION_SOURCE]: this._navigationSource,\n ...previouslyRecordedCounts,\n };\n\n // Add scrubbed referrer URL if available\n if (this._referrerInfo.isValid && this._referrerInfo.scrubbedUrl) {\n attributes[KEY_MXL_REFERRER_URL] = this._referrerInfo.scrubbedUrl;\n }\n\n if (this._tab.sourceTabId) {\n attributes[KEY_MXL_SOURCE_TAB_ID] = this._tab.sourceTabId;\n }\n\n const sessionStartReason = options?.reason ?? 'manual';\n attributes[KEY_MXL_SESSION_REASON_STARTED] = sessionStartReason;\n\n this._sessionSpan = new MXLExtendedSpan(\n this._tracer.startSpan('mxl-session', {\n attributes,\n }),\n );\n\n this._coldStart = false;\n\n for (const listener of this._sessionStartedListeners) {\n try {\n listener();\n } catch (error) {\n this._diag.warn(\n 'Error while executing session started listener',\n error,\n );\n }\n }\n }\n\n public incrSessionCountForKey(key: string) {\n if (!this._sessionSpan || !this._activeSessionCounts) {\n this._diag.debug(\n 'trying to increment a count for the active session, but there is no session in progress. This is a no-op.',\n );\n return;\n }\n\n this._activeSessionCounts[key] = (this._activeSessionCounts[key] || 0) + 1;\n }\n\n public incrNextSessionCountForKey(key: string) {\n this._nextSessionCounts[key] = (this._nextSessionCounts[key] || 0) + 1;\n }\n\n public addSessionStartedListener(listener: SessionStartedListener) {\n const listenerIndex = this._sessionStartedListeners.push(listener);\n\n return () => {\n this._sessionStartedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public addSessionEndedListener(listener: SessionEndedListener) {\n const listenerIndex = this._sessionEndedListeners.push(listener);\n\n return () => {\n this._sessionEndedListeners.splice(listenerIndex - 1, 1);\n };\n }\n\n public recordSDKStartupDuration(duration: number) {\n this._sdkStartupDuration = Math.ceil(duration);\n }\n\n public setTracerProvider(tracerProvider: TracerProvider) {\n this._tracer = tracerProvider.getTracer('mxl-web-sdk-sessions');\n }\n\n private _determineNavigationSource(): NavigationSource {\n // Check Navigation Timing API first\n try {\n const navEntries =\n this._navigationPerformance.getEntriesByType('navigation');\n if (navEntries.length > 0 && navEntries[0]) {\n const navEntry = navEntries[0];\n if (navEntry.type === 'reload') {\n return 'reload';\n } else if (navEntry.type === 'back_forward') {\n return 'back_forward';\n }\n }\n } catch (error) {\n this._diag.warn('Failed to get navigation type', error);\n }\n\n // If not reload/back_forward, analyze referrer\n if (this._referrerInfo.isValid) {\n return this._referrerInfo.isSameOrigin ? 'same_origin' : 'external';\n }\n\n return 'direct';\n }\n\n private _processReferrer(): {\n isValid: boolean;\n isSameOrigin: boolean;\n scrubbedUrl?: string;\n } {\n if (!this._referrer) {\n return { isValid: false, isSameOrigin: false };\n }\n\n try {\n const referrerUrl = new URL(this._referrer);\n const currentOrigin = window.location.origin;\n\n return {\n isValid: true,\n isSameOrigin: referrerUrl.origin === currentOrigin,\n scrubbedUrl: referrerUrl.origin + referrerUrl.pathname,\n };\n } catch {\n return { isValid: false, isSameOrigin: false };\n }\n }\n\n private _getTabContext(navigationSource: NavigationSource): {\n sourceTabId?: string;\n experienceId: string;\n tabId: string;\n } {\n // Always use getAppInstanceId to ensure consistent tab ID\n const tabId = getAppInstanceId(this._sessionStorage, this._diag);\n\n // Look for source tab only if navigation is from same origin\n let sourceTabId: string | undefined;\n let experienceId: string | undefined;\n\n if (navigationSource === 'same_origin') {\n const lastActivity = this._getTabActivity();\n if (lastActivity) {\n const age = Date.now() - lastActivity.lastActivityMs;\n // 10 second window to detect source tabs - balances capturing legitimate\n // tab relationships while avoiding false positives from stale activity\n if (age <= 10_000) {\n sourceTabId = lastActivity.tabId;\n experienceId = lastActivity.experienceId;\n }\n }\n }\n\n // Only generate new UUID if we didn't inherit one from source tab\n experienceId ??= generateUUID();\n\n return {\n sourceTabId,\n experienceId,\n tabId,\n };\n }\n\n private _initTab(): { tab: Tab; navigationSource: NavigationSource } {\n // Determine navigation source once at startup\n const navigationSource = this._determineNavigationSource();\n\n // On page reload, preserve the same tab IDs\n try {\n const stored = this._sessionStorage.getItem(MXL_TAB_STORAGE_KEY);\n if (stored) {\n return {\n tab: JSON.parse(stored) as Tab,\n navigationSource,\n };\n }\n } catch (e) {\n this._diag.warn('Failed to retrieve tab data', e);\n }\n\n // Get complete navigation context for new tab\n const tabContext = this._getTabContext(navigationSource);\n const tab: Tab = {\n experienceId: tabContext.experienceId,\n sourceTabId: tabContext.sourceTabId,\n tabId: tabContext.tabId,\n };\n\n // Persist tab data for page reloads\n try {\n this._sessionStorage.setItem(MXL_TAB_STORAGE_KEY, JSON.stringify(tab));\n } catch (e) {\n this._diag.warn('Failed to store tab data', e);\n }\n\n return { tab, navigationSource };\n }\n\n private _getTabActivity(): TabActivity | null {\n try {\n const stored = this._storage.getItem(MXL_TAB_ACTIVITY_STORAGE_KEY);\n if (!stored) {\n return null;\n }\n\n return JSON.parse(stored) as TabActivity;\n } catch (e) {\n this._diag.warn('Failed to retrieve tab activity', e);\n return null;\n }\n }\n\n private _storeTabActivity(activity: TabActivity): void {\n try {\n this._storage.setItem(\n MXL_TAB_ACTIVITY_STORAGE_KEY,\n JSON.stringify(activity),\n );\n } catch (error) {\n this._diag.warn('Failed to save tab activity', error);\n }\n }\n\n private _storeCurrentTabAsSource(): void {\n const activity: TabActivity = {\n tabId: this._tab.tabId,\n experienceId: this._tab.experienceId,\n lastActivityMs: Date.now(),\n };\n\n this._storeTabActivity(activity);\n }\n\n private _setupNewTabClickListeners(): void {\n const handleNewTabClick = (ev: MouseEvent) => {\n // Check for modifier keys that open new tabs/windows\n if (\n ev.button === 1 || // Middle click\n ev.ctrlKey ||\n ev.metaKey || // Cmd/Ctrl + click\n ev.shiftKey // Shift + click (new window)\n ) {\n this._storeCurrentTabAsSource();\n return;\n }\n\n // Check for elements with attributes that open new tabs\n const newTabAnchor = (ev.target as HTMLElement | null)?.closest(\n 'a[target=\"_blank\"], form[target=\"_blank\"], a[rel*=\"noopener\"], a[rel*=\"noreferrer\"]',\n );\n if (newTabAnchor) {\n this._storeCurrentTabAsSource();\n }\n };\n\n // Capture phase ensures we record before navigation\n const options = { capture: true, passive: true };\n document.addEventListener('auxclick', handleNewTabClick, options);\n document.addEventListener('click', handleNewTabClick, options);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/managers/MXLSpanSessionManager/constants.ts
|
|
4
3
|
const MXL_SESSION_NUMBER_STORAGE_KEY = "mxl_session_number";
|
|
5
4
|
const MXL_TAB_STORAGE_KEY = "mxl_tab";
|
|
6
5
|
const MXL_TAB_ACTIVITY_STORAGE_KEY = "mxl_tab_activity";
|
|
7
|
-
|
|
8
6
|
//#endregion
|
|
9
7
|
exports.MXL_SESSION_NUMBER_STORAGE_KEY = MXL_SESSION_NUMBER_STORAGE_KEY;
|
|
10
8
|
exports.MXL_TAB_ACTIVITY_STORAGE_KEY = MXL_TAB_ACTIVITY_STORAGE_KEY;
|
|
11
9
|
exports.MXL_TAB_STORAGE_KEY = MXL_TAB_STORAGE_KEY;
|
|
10
|
+
|
|
12
11
|
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/constants.ts"],"sourcesContent":["export const MXL_SESSION_NUMBER_STORAGE_KEY = 'mxl_session_number';\nexport const MXL_TAB_STORAGE_KEY = 'mxl_tab'; // Used for current tab data in sessionStorage\nexport const MXL_TAB_ACTIVITY_STORAGE_KEY = 'mxl_tab_activity'; // Used for tracking all tabs' last activity\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.cjs","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/constants.ts"],"sourcesContent":["export const MXL_SESSION_NUMBER_STORAGE_KEY = 'mxl_session_number';\nexport const MXL_TAB_STORAGE_KEY = 'mxl_tab'; // Used for current tab data in sessionStorage\nexport const MXL_TAB_ACTIVITY_STORAGE_KEY = 'mxl_tab_activity'; // Used for tracking all tabs' last activity\n"],"mappings":";;AAAA,MAAa,iCAAiC;AAC9C,MAAa,sBAAsB;AACnC,MAAa,+BAA+B"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
const MXL_SESSION_NUMBER_STORAGE_KEY = "mxl_session_number";
|
|
3
3
|
const MXL_TAB_STORAGE_KEY = "mxl_tab";
|
|
4
4
|
const MXL_TAB_ACTIVITY_STORAGE_KEY = "mxl_tab_activity";
|
|
5
|
-
|
|
6
5
|
//#endregion
|
|
7
6
|
export { MXL_SESSION_NUMBER_STORAGE_KEY, MXL_TAB_ACTIVITY_STORAGE_KEY, MXL_TAB_STORAGE_KEY };
|
|
7
|
+
|
|
8
8
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_managers_MXLSpanSessionManager_MXLSpanSessionManager = require(
|
|
3
|
-
|
|
4
|
-
exports.MXLSpanSessionManager = require_managers_MXLSpanSessionManager_MXLSpanSessionManager.MXLSpanSessionManager;
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_managers_MXLSpanSessionManager_MXLSpanSessionManager = require("./MXLSpanSessionManager.cjs");
|
|
3
|
+
exports.MXLSpanSessionManager = require_managers_MXLSpanSessionManager_MXLSpanSessionManager.MXLSpanSessionManager;
|
|
@@ -13,6 +13,11 @@ interface MXLSpanSessionManagerArgs {
|
|
|
13
13
|
sessionStorage?: Storage;
|
|
14
14
|
limitManager: LimitManagerInternal;
|
|
15
15
|
referrer?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Source for Navigation Timing API entries (defaults to `window.performance`).
|
|
18
|
+
* Injectable for tests; production should omit.
|
|
19
|
+
*/
|
|
20
|
+
navigationPerformance?: Pick<Performance, 'getEntriesByType'>;
|
|
16
21
|
}
|
|
17
22
|
interface SpanSessionManagerInternal extends SpanSessionManager {
|
|
18
23
|
incrSessionCountForKey: (key: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/types.ts"],"mappings":";;;;;;;UAMiB,yBAAA;EACf,IAAA,GAAO,UAAA;EACP,IAAA,GAAO,kBAAA;EACP,aAAA,GAAgB,uBAAA;EAChB,OAAA,GAAU,OAAA;EACV,cAAA,GAAiB,OAAA;EACjB,YAAA,EAAc,oBAAA;EACd,QAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/types.ts"],"mappings":";;;;;;;UAMiB,yBAAA;EACf,IAAA,GAAO,UAAA;EACP,IAAA,GAAO,kBAAA;EACP,aAAA,GAAgB,uBAAA;EAChB,OAAA,GAAU,OAAA;EACV,cAAA,GAAiB,OAAA;EACjB,YAAA,EAAc,oBAAA;EACd,QAAA;EANO;;;;EAWP,qBAAA,GAAwB,IAAA,CAAK,WAAA;AAAA;AAAA,UAGd,0BAAA,SAAmC,kBAAA;EAClD,sBAAA,GAAyB,GAAA;EACzB,0BAAA,GAA6B,GAAA;AAAA;AAAA,KAGnB,sBAAA;AAAA,KACA,oBAAA;AAAA,KAKA,WAAA;EACV,YAAA;EACA,KAAA;EACA,cAAA;AAAA;AAAA,KAIU,GAAA;EACV,YAAA;EACA,KAAA;EACA,WAAA;AAAA;AAAA,KAIU,gBAAA"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import "../../api-sessions/index.js";
|
|
2
1
|
import { VisibilityStateDocument } from "../../common/types.js";
|
|
3
2
|
import { LimitManagerInternal } from "../MXLLimitManager/types.js";
|
|
4
|
-
import "../MXLLimitManager/index.js";
|
|
5
3
|
import { PerformanceManager } from "../../utils/PerformanceManager/types.js";
|
|
6
|
-
import "../../utils/index.js";
|
|
7
4
|
import { SpanSessionManager } from "../../api-sessions/manager/types.js";
|
|
8
5
|
import { DiagLogger } from "@opentelemetry/api";
|
|
9
6
|
|
|
@@ -16,6 +13,11 @@ interface MXLSpanSessionManagerArgs {
|
|
|
16
13
|
sessionStorage?: Storage;
|
|
17
14
|
limitManager: LimitManagerInternal;
|
|
18
15
|
referrer?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Source for Navigation Timing API entries (defaults to `window.performance`).
|
|
18
|
+
* Injectable for tests; production should omit.
|
|
19
|
+
*/
|
|
20
|
+
navigationPerformance?: Pick<Performance, 'getEntriesByType'>;
|
|
19
21
|
}
|
|
20
22
|
interface SpanSessionManagerInternal extends SpanSessionManager {
|
|
21
23
|
incrSessionCountForKey: (key: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/managers/MXLSpanSessionManager/types.ts"],"mappings":";;;;;;;UAMiB,yBAAA;EACf,IAAA,GAAO,UAAA;EACP,IAAA,GAAO,kBAAA;EACP,aAAA,GAAgB,uBAAA;EAChB,OAAA,GAAU,OAAA;EACV,cAAA,GAAiB,OAAA;EACjB,YAAA,EAAc,oBAAA;EACd,QAAA;EANO;;;;EAWP,qBAAA,GAAwB,IAAA,CAAK,WAAA;AAAA;AAAA,UAGd,0BAAA,SAAmC,kBAAA;EAClD,sBAAA,GAAyB,GAAA;EACzB,0BAAA,GAA6B,GAAA;AAAA;AAAA,KAGnB,sBAAA;AAAA,KACA,oBAAA;AAAA,KAKA,WAAA;EACV,YAAA;EACA,KAAA;EACA,cAAA;AAAA;AAAA,KAIU,GAAA;EACV,YAAA;EACA,KAAA;EACA,WAAA;AAAA;AAAA,KAIU,gBAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_constants_attributes = require(
|
|
3
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_constants_attributes = require("../../constants/attributes.cjs");
|
|
4
3
|
//#region src/managers/MXLTraceManager/MXLExtendedSpan.ts
|
|
5
4
|
/**
|
|
6
5
|
* MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so
|
|
@@ -68,7 +67,7 @@ var MXLExtendedSpan = class {
|
|
|
68
67
|
this._span.end(options.endTime);
|
|
69
68
|
}
|
|
70
69
|
};
|
|
71
|
-
|
|
72
70
|
//#endregion
|
|
73
71
|
exports.MXLExtendedSpan = MXLExtendedSpan;
|
|
72
|
+
|
|
74
73
|
//# sourceMappingURL=MXLExtendedSpan.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLExtendedSpan.cjs","names":["KEY_MXL_ERROR_CODE"],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"sourcesContent":["import type {\n Attributes,\n AttributeValue,\n Exception,\n Link,\n Span,\n SpanContext,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport type {\n ExtendedSpan,\n ExtendedSpanFailedOptions,\n} from '../../api-traces/index.ts';\nimport { KEY_MXL_ERROR_CODE } from '../../constants/index.ts';\n\n/**\n * MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so\n * that it satisfies the Span interface. In addition, it gives us a spot where we can implement helpers that are part\n * of the MXLSpan interface.\n */\nexport class MXLExtendedSpan implements ExtendedSpan {\n private readonly _span: ExtendedSpan;\n\n public constructor(span: Span) {\n this._span = span as ExtendedSpan;\n }\n\n /**\n * Expose attributes by extending OpenTelemetry's ReadableSpan.\n */\n public get attributes(): Attributes {\n return this._span.attributes;\n }\n\n public addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n startTime?: TimeInput,\n ): this {\n this._span.addEvent(name, attributesOrStartTime, startTime);\n return this;\n }\n\n public addLink(link: Link): this {\n this._span.addLink(link);\n return this;\n }\n\n public addLinks(links: Link[]): this {\n this._span.addLinks(links);\n return this;\n }\n\n public end(endTime?: TimeInput): void {\n this._span.end(endTime);\n }\n\n public isRecording(): boolean {\n return this._span.isRecording();\n }\n\n public recordException(exception: Exception, time?: TimeInput): void {\n this._span.recordException(exception, time);\n }\n\n public setAttribute(key: string, value: AttributeValue): this {\n this._span.setAttribute(key, value);\n return this;\n }\n\n public setAttributes(attributes: Attributes): this {\n this._span.setAttributes(attributes);\n return this;\n }\n\n public removeAttribute(key: string): this {\n const { [key]: _, ...attributes } = this._span.attributes;\n // @ts-expect-error Read/write spans are allowed per the spec https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#additional-span-interfaces\n this._span.attributes = attributes;\n return this;\n }\n\n public setStatus(status: SpanStatus): this {\n this._span.setStatus(status);\n return this;\n }\n\n public spanContext(): SpanContext {\n return this._span.spanContext();\n }\n\n public updateName(name: string): this {\n this._span.updateName(name);\n return this;\n }\n\n public fail(\n options: ExtendedSpanFailedOptions = {\n code: 'failure',\n },\n ): void {\n if (options.code) {\n this._span.setAttribute(KEY_MXL_ERROR_CODE, options.code.toUpperCase());\n }\n\n this._span.end(options.endTime);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MXLExtendedSpan.cjs","names":["KEY_MXL_ERROR_CODE"],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"sourcesContent":["import type {\n Attributes,\n AttributeValue,\n Exception,\n Link,\n Span,\n SpanContext,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport type {\n ExtendedSpan,\n ExtendedSpanFailedOptions,\n} from '../../api-traces/index.ts';\nimport { KEY_MXL_ERROR_CODE } from '../../constants/index.ts';\n\n/**\n * MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so\n * that it satisfies the Span interface. In addition, it gives us a spot where we can implement helpers that are part\n * of the MXLSpan interface.\n */\nexport class MXLExtendedSpan implements ExtendedSpan {\n private readonly _span: ExtendedSpan;\n\n public constructor(span: Span) {\n this._span = span as ExtendedSpan;\n }\n\n /**\n * Expose attributes by extending OpenTelemetry's ReadableSpan.\n */\n public get attributes(): Attributes {\n return this._span.attributes;\n }\n\n public addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n startTime?: TimeInput,\n ): this {\n this._span.addEvent(name, attributesOrStartTime, startTime);\n return this;\n }\n\n public addLink(link: Link): this {\n this._span.addLink(link);\n return this;\n }\n\n public addLinks(links: Link[]): this {\n this._span.addLinks(links);\n return this;\n }\n\n public end(endTime?: TimeInput): void {\n this._span.end(endTime);\n }\n\n public isRecording(): boolean {\n return this._span.isRecording();\n }\n\n public recordException(exception: Exception, time?: TimeInput): void {\n this._span.recordException(exception, time);\n }\n\n public setAttribute(key: string, value: AttributeValue): this {\n this._span.setAttribute(key, value);\n return this;\n }\n\n public setAttributes(attributes: Attributes): this {\n this._span.setAttributes(attributes);\n return this;\n }\n\n public removeAttribute(key: string): this {\n const { [key]: _, ...attributes } = this._span.attributes;\n // @ts-expect-error Read/write spans are allowed per the spec https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#additional-span-interfaces\n this._span.attributes = attributes;\n return this;\n }\n\n public setStatus(status: SpanStatus): this {\n this._span.setStatus(status);\n return this;\n }\n\n public spanContext(): SpanContext {\n return this._span.spanContext();\n }\n\n public updateName(name: string): this {\n this._span.updateName(name);\n return this;\n }\n\n public fail(\n options: ExtendedSpanFailedOptions = {\n code: 'failure',\n },\n ): void {\n if (options.code) {\n this._span.setAttribute(KEY_MXL_ERROR_CODE, options.code.toUpperCase());\n }\n\n this._span.end(options.endTime);\n }\n}\n"],"mappings":";;;;;;;;AAqBA,IAAa,kBAAb,MAAqD;CACnD;CAEA,YAAmB,MAAY;AAC7B,OAAK,QAAQ;;;;;CAMf,IAAW,aAAyB;AAClC,SAAO,KAAK,MAAM;;CAGpB,SACE,MACA,uBACA,WACM;AACN,OAAK,MAAM,SAAS,MAAM,uBAAuB,UAAU;AAC3D,SAAO;;CAGT,QAAe,MAAkB;AAC/B,OAAK,MAAM,QAAQ,KAAK;AACxB,SAAO;;CAGT,SAAgB,OAAqB;AACnC,OAAK,MAAM,SAAS,MAAM;AAC1B,SAAO;;CAGT,IAAW,SAA2B;AACpC,OAAK,MAAM,IAAI,QAAQ;;CAGzB,cAA8B;AAC5B,SAAO,KAAK,MAAM,aAAa;;CAGjC,gBAAuB,WAAsB,MAAwB;AACnE,OAAK,MAAM,gBAAgB,WAAW,KAAK;;CAG7C,aAAoB,KAAa,OAA6B;AAC5D,OAAK,MAAM,aAAa,KAAK,MAAM;AACnC,SAAO;;CAGT,cAAqB,YAA8B;AACjD,OAAK,MAAM,cAAc,WAAW;AACpC,SAAO;;CAGT,gBAAuB,KAAmB;EACxC,MAAM,GAAG,MAAM,GAAG,GAAG,eAAe,KAAK,MAAM;AAE/C,OAAK,MAAM,aAAa;AACxB,SAAO;;CAGT,UAAiB,QAA0B;AACzC,OAAK,MAAM,UAAU,OAAO;AAC5B,SAAO;;CAGT,cAAkC;AAChC,SAAO,KAAK,MAAM,aAAa;;CAGjC,WAAkB,MAAoB;AACpC,OAAK,MAAM,WAAW,KAAK;AAC3B,SAAO;;CAGT,KACE,UAAqC,EACnC,MAAM,WACP,EACK;AACN,MAAI,QAAQ,KACV,MAAK,MAAM,aAAaA,6BAAAA,oBAAoB,QAAQ,KAAK,aAAa,CAAC;AAGzE,OAAK,MAAM,IAAI,QAAQ,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLExtendedSpan.d.cts","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MXLExtendedSpan.d.cts","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"mappings":";;;;;;;AAqBA;;cAAa,eAAA,YAA2B,YAAA;EAAA,iBACrB,KAAA;cAEE,IAAA,EAAM,IAAA;EAaC;;;EAAA,IANf,UAAA,CAAA,GAAc,UAAA;EAIlB,QAAA,CACL,IAAA,UACA,qBAAA,GAAwB,UAAA,GAAa,SAAA,EACrC,SAAA,GAAY,SAAA;EAMP,OAAA,CAAQ,IAAA,EAAM,IAAA;EAKd,QAAA,CAAS,KAAA,EAAO,IAAA;EAKhB,GAAA,CAAI,OAAA,GAAU,SAAA;EAId,WAAA,CAAA;EAIA,eAAA,CAAgB,SAAA,EAAW,SAAA,EAAW,IAAA,GAAO,SAAA;EAI7C,YAAA,CAAa,GAAA,UAAa,KAAA,EAAO,cAAA;EAKjC,aAAA,CAAc,UAAA,EAAY,UAAA;EAK1B,eAAA,CAAgB,GAAA;EAOhB,SAAA,CAAU,MAAA,EAAQ,UAAA;EAKlB,WAAA,CAAA,GAAe,WAAA;EAIf,UAAA,CAAW,IAAA;EAKX,IAAA,CACL,OAAA,GAAS,yBAAA;AAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ExtendedSpan, ExtendedSpanFailedOptions } from "../../api-traces/api/TraceAPI/types.js";
|
|
2
|
-
import "../../api-traces/index.js";
|
|
3
2
|
import { AttributeValue, Attributes, Exception, Link, Span, SpanContext, SpanStatus, TimeInput } from "@opentelemetry/api";
|
|
4
3
|
|
|
5
4
|
//#region src/managers/MXLTraceManager/MXLExtendedSpan.d.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLExtendedSpan.d.ts","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MXLExtendedSpan.d.ts","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"mappings":";;;;;;;AAqBA;;cAAa,eAAA,YAA2B,YAAA;EAAA,iBACrB,KAAA;cAEE,IAAA,EAAM,IAAA;EAaC;;;EAAA,IANf,UAAA,CAAA,GAAc,UAAA;EAIlB,QAAA,CACL,IAAA,UACA,qBAAA,GAAwB,UAAA,GAAa,SAAA,EACrC,SAAA,GAAY,SAAA;EAMP,OAAA,CAAQ,IAAA,EAAM,IAAA;EAKd,QAAA,CAAS,KAAA,EAAO,IAAA;EAKhB,GAAA,CAAI,OAAA,GAAU,SAAA;EAId,WAAA,CAAA;EAIA,eAAA,CAAgB,SAAA,EAAW,SAAA,EAAW,IAAA,GAAO,SAAA;EAI7C,YAAA,CAAa,GAAA,UAAa,KAAA,EAAO,cAAA;EAKjC,aAAA,CAAc,UAAA,EAAY,UAAA;EAK1B,eAAA,CAAgB,GAAA;EAOhB,SAAA,CAAU,MAAA,EAAQ,UAAA;EAKlB,WAAA,CAAA,GAAe,WAAA;EAIf,UAAA,CAAW,IAAA;EAKX,IAAA,CACL,OAAA,GAAS,yBAAA;AAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { KEY_MXL_ERROR_CODE } from "../../constants/attributes.js";
|
|
2
|
-
|
|
3
2
|
//#region src/managers/MXLTraceManager/MXLExtendedSpan.ts
|
|
4
3
|
/**
|
|
5
4
|
* MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so
|
|
@@ -67,7 +66,7 @@ var MXLExtendedSpan = class {
|
|
|
67
66
|
this._span.end(options.endTime);
|
|
68
67
|
}
|
|
69
68
|
};
|
|
70
|
-
|
|
71
69
|
//#endregion
|
|
72
70
|
export { MXLExtendedSpan };
|
|
71
|
+
|
|
73
72
|
//# sourceMappingURL=MXLExtendedSpan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MXLExtendedSpan.js","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"sourcesContent":["import type {\n Attributes,\n AttributeValue,\n Exception,\n Link,\n Span,\n SpanContext,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport type {\n ExtendedSpan,\n ExtendedSpanFailedOptions,\n} from '../../api-traces/index.ts';\nimport { KEY_MXL_ERROR_CODE } from '../../constants/index.ts';\n\n/**\n * MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so\n * that it satisfies the Span interface. In addition, it gives us a spot where we can implement helpers that are part\n * of the MXLSpan interface.\n */\nexport class MXLExtendedSpan implements ExtendedSpan {\n private readonly _span: ExtendedSpan;\n\n public constructor(span: Span) {\n this._span = span as ExtendedSpan;\n }\n\n /**\n * Expose attributes by extending OpenTelemetry's ReadableSpan.\n */\n public get attributes(): Attributes {\n return this._span.attributes;\n }\n\n public addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n startTime?: TimeInput,\n ): this {\n this._span.addEvent(name, attributesOrStartTime, startTime);\n return this;\n }\n\n public addLink(link: Link): this {\n this._span.addLink(link);\n return this;\n }\n\n public addLinks(links: Link[]): this {\n this._span.addLinks(links);\n return this;\n }\n\n public end(endTime?: TimeInput): void {\n this._span.end(endTime);\n }\n\n public isRecording(): boolean {\n return this._span.isRecording();\n }\n\n public recordException(exception: Exception, time?: TimeInput): void {\n this._span.recordException(exception, time);\n }\n\n public setAttribute(key: string, value: AttributeValue): this {\n this._span.setAttribute(key, value);\n return this;\n }\n\n public setAttributes(attributes: Attributes): this {\n this._span.setAttributes(attributes);\n return this;\n }\n\n public removeAttribute(key: string): this {\n const { [key]: _, ...attributes } = this._span.attributes;\n // @ts-expect-error Read/write spans are allowed per the spec https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#additional-span-interfaces\n this._span.attributes = attributes;\n return this;\n }\n\n public setStatus(status: SpanStatus): this {\n this._span.setStatus(status);\n return this;\n }\n\n public spanContext(): SpanContext {\n return this._span.spanContext();\n }\n\n public updateName(name: string): this {\n this._span.updateName(name);\n return this;\n }\n\n public fail(\n options: ExtendedSpanFailedOptions = {\n code: 'failure',\n },\n ): void {\n if (options.code) {\n this._span.setAttribute(KEY_MXL_ERROR_CODE, options.code.toUpperCase());\n }\n\n this._span.end(options.endTime);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MXLExtendedSpan.js","names":[],"sources":["../../../src/managers/MXLTraceManager/MXLExtendedSpan.ts"],"sourcesContent":["import type {\n Attributes,\n AttributeValue,\n Exception,\n Link,\n Span,\n SpanContext,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport type {\n ExtendedSpan,\n ExtendedSpanFailedOptions,\n} from '../../api-traces/index.ts';\nimport { KEY_MXL_ERROR_CODE } from '../../constants/index.ts';\n\n/**\n * MXLSpan for the most part simply delegates to the underlying Span it receives on initialization so\n * that it satisfies the Span interface. In addition, it gives us a spot where we can implement helpers that are part\n * of the MXLSpan interface.\n */\nexport class MXLExtendedSpan implements ExtendedSpan {\n private readonly _span: ExtendedSpan;\n\n public constructor(span: Span) {\n this._span = span as ExtendedSpan;\n }\n\n /**\n * Expose attributes by extending OpenTelemetry's ReadableSpan.\n */\n public get attributes(): Attributes {\n return this._span.attributes;\n }\n\n public addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n startTime?: TimeInput,\n ): this {\n this._span.addEvent(name, attributesOrStartTime, startTime);\n return this;\n }\n\n public addLink(link: Link): this {\n this._span.addLink(link);\n return this;\n }\n\n public addLinks(links: Link[]): this {\n this._span.addLinks(links);\n return this;\n }\n\n public end(endTime?: TimeInput): void {\n this._span.end(endTime);\n }\n\n public isRecording(): boolean {\n return this._span.isRecording();\n }\n\n public recordException(exception: Exception, time?: TimeInput): void {\n this._span.recordException(exception, time);\n }\n\n public setAttribute(key: string, value: AttributeValue): this {\n this._span.setAttribute(key, value);\n return this;\n }\n\n public setAttributes(attributes: Attributes): this {\n this._span.setAttributes(attributes);\n return this;\n }\n\n public removeAttribute(key: string): this {\n const { [key]: _, ...attributes } = this._span.attributes;\n // @ts-expect-error Read/write spans are allowed per the spec https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#additional-span-interfaces\n this._span.attributes = attributes;\n return this;\n }\n\n public setStatus(status: SpanStatus): this {\n this._span.setStatus(status);\n return this;\n }\n\n public spanContext(): SpanContext {\n return this._span.spanContext();\n }\n\n public updateName(name: string): this {\n this._span.updateName(name);\n return this;\n }\n\n public fail(\n options: ExtendedSpanFailedOptions = {\n code: 'failure',\n },\n ): void {\n if (options.code) {\n this._span.setAttribute(KEY_MXL_ERROR_CODE, options.code.toUpperCase());\n }\n\n this._span.end(options.endTime);\n }\n}\n"],"mappings":";;;;;;;AAqBA,IAAa,kBAAb,MAAqD;CACnD;CAEA,YAAmB,MAAY;AAC7B,OAAK,QAAQ;;;;;CAMf,IAAW,aAAyB;AAClC,SAAO,KAAK,MAAM;;CAGpB,SACE,MACA,uBACA,WACM;AACN,OAAK,MAAM,SAAS,MAAM,uBAAuB,UAAU;AAC3D,SAAO;;CAGT,QAAe,MAAkB;AAC/B,OAAK,MAAM,QAAQ,KAAK;AACxB,SAAO;;CAGT,SAAgB,OAAqB;AACnC,OAAK,MAAM,SAAS,MAAM;AAC1B,SAAO;;CAGT,IAAW,SAA2B;AACpC,OAAK,MAAM,IAAI,QAAQ;;CAGzB,cAA8B;AAC5B,SAAO,KAAK,MAAM,aAAa;;CAGjC,gBAAuB,WAAsB,MAAwB;AACnE,OAAK,MAAM,gBAAgB,WAAW,KAAK;;CAG7C,aAAoB,KAAa,OAA6B;AAC5D,OAAK,MAAM,aAAa,KAAK,MAAM;AACnC,SAAO;;CAGT,cAAqB,YAA8B;AACjD,OAAK,MAAM,cAAc,WAAW;AACpC,SAAO;;CAGT,gBAAuB,KAAmB;EACxC,MAAM,GAAG,MAAM,GAAG,GAAG,eAAe,KAAK,MAAM;AAE/C,OAAK,MAAM,aAAa;AACxB,SAAO;;CAGT,UAAiB,QAA0B;AACzC,OAAK,MAAM,UAAU,OAAO;AAC5B,SAAO;;CAGT,cAAkC;AAChC,SAAO,KAAK,MAAM,aAAa;;CAGjC,WAAkB,MAAoB;AACpC,OAAK,MAAM,WAAW,KAAK;AAC3B,SAAO;;CAGT,KACE,UAAqC,EACnC,MAAM,WACP,EACK;AACN,MAAI,QAAQ,KACV,MAAK,MAAM,aAAa,oBAAoB,QAAQ,KAAK,aAAa,CAAC;AAGzE,OAAK,MAAM,IAAI,QAAQ,QAAQ"}
|