@safaricom-mxl/web-sdk 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/DATA_EXPORT.md +2 -1
  2. package/dist/instrumentations/replay/session-recording/SessionRecording.cjs +1 -0
  3. package/dist/instrumentations/replay/session-recording/SessionRecording.cjs.map +1 -1
  4. package/dist/instrumentations/replay/session-recording/SessionRecording.js +1 -0
  5. package/dist/instrumentations/replay/session-recording/SessionRecording.js.map +1 -1
  6. package/dist/instrumentations/replay/transport/replayTransport.cjs +21 -4
  7. package/dist/instrumentations/replay/transport/replayTransport.cjs.map +1 -1
  8. package/dist/instrumentations/replay/transport/replayTransport.d.cts +1 -1
  9. package/dist/instrumentations/replay/transport/replayTransport.d.cts.map +1 -1
  10. package/dist/instrumentations/replay/transport/replayTransport.d.ts +1 -1
  11. package/dist/instrumentations/replay/transport/replayTransport.d.ts.map +1 -1
  12. package/dist/instrumentations/replay/transport/replayTransport.js +21 -4
  13. package/dist/instrumentations/replay/transport/replayTransport.js.map +1 -1
  14. package/dist/instrumentations/replay/transport/types.d.cts +2 -1
  15. package/dist/instrumentations/replay/transport/types.d.cts.map +1 -1
  16. package/dist/instrumentations/replay/transport/types.d.ts +2 -1
  17. package/dist/instrumentations/replay/transport/types.d.ts.map +1 -1
  18. package/dist/mxl-web-sdk.js +2 -2
  19. package/dist/mxl-web-sdk.js.map +1 -1
  20. package/dist/resources/sdkConstants.cjs +1 -1
  21. package/dist/resources/sdkConstants.cjs.map +1 -1
  22. package/dist/resources/sdkConstants.d.cts +1 -1
  23. package/dist/resources/sdkConstants.d.ts +1 -1
  24. package/dist/resources/sdkConstants.js +1 -1
  25. package/dist/resources/sdkConstants.js.map +1 -1
  26. package/dist/sdk/initSDK.cjs +3 -3
  27. package/dist/sdk/initSDK.cjs.map +1 -1
  28. package/dist/sdk/initSDK.d.cts +1 -0
  29. package/dist/sdk/initSDK.d.cts.map +1 -1
  30. package/dist/sdk/initSDK.d.ts +1 -0
  31. package/dist/sdk/initSDK.d.ts.map +1 -1
  32. package/dist/sdk/initSDK.js +3 -3
  33. package/dist/sdk/initSDK.js.map +1 -1
  34. package/dist/sdk/types.d.cts +6 -0
  35. package/dist/sdk/types.d.cts.map +1 -1
  36. package/dist/sdk/types.d.ts +6 -0
  37. package/dist/sdk/types.d.ts.map +1 -1
  38. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/resources/sdkConstants.ts
3
3
  const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X ";
4
- const SDK_VERSION = "0.0.20";
4
+ const SDK_VERSION = "0.0.21";
5
5
  const MXL_SERVICE_NAME = "mxl-web-sdk";
6
6
  const NATIVE_FRAMEWORK = 1;
7
7
  const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1 +1 @@
1
- {"version":3,"file":"sdkConstants.cjs","names":[],"sources":["../../src/resources/sdkConstants.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X ';\nexport const SDK_VERSION = '0.0.20';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// Sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";;AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
1
+ {"version":3,"file":"sdkConstants.cjs","names":[],"sources":["../../src/resources/sdkConstants.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X ';\nexport const SDK_VERSION = '0.0.21';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// Sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";;AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/sdkConstants.d.ts
2
2
  declare const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X ";
3
- declare const SDK_VERSION = "0.0.20";
3
+ declare const SDK_VERSION = "0.0.21";
4
4
  declare const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  declare const NATIVE_FRAMEWORK = 1;
6
6
  declare const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/sdkConstants.d.ts
2
2
  declare const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X ";
3
- declare const SDK_VERSION = "0.0.20";
3
+ declare const SDK_VERSION = "0.0.21";
4
4
  declare const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  declare const NATIVE_FRAMEWORK = 1;
6
6
  declare const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1,6 +1,6 @@
1
1
  //#region src/resources/sdkConstants.ts
2
2
  const TEMPLATE_APP_VERSION = "MXLAppVersionX.X.X ";
3
- const SDK_VERSION = "0.0.20";
3
+ const SDK_VERSION = "0.0.21";
4
4
  const MXL_SERVICE_NAME = "mxl-web-sdk";
5
5
  const NATIVE_FRAMEWORK = 1;
6
6
  const MXL_APP_INSTANCE_ID_STORAGE_KEY = "mxl_app_instance_id";
@@ -1 +1 @@
1
- {"version":3,"file":"sdkConstants.js","names":[],"sources":["../../src/resources/sdkConstants.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X ';\nexport const SDK_VERSION = '0.0.20';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// Sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
1
+ {"version":3,"file":"sdkConstants.js","names":[],"sources":["../../src/resources/sdkConstants.ts"],"sourcesContent":["export const TEMPLATE_APP_VERSION = 'MXLAppVersionX.X.X ';\nexport const SDK_VERSION = '0.0.21';\nexport const MXL_SERVICE_NAME = 'mxl-web-sdk';\n// NATIVE_FRAMEWORK is the representation MXL BE uses to differentiate between\n// Sdks. It is an enum, so we just send a number here\nexport const NATIVE_FRAMEWORK = 1;\nexport const MXL_APP_INSTANCE_ID_STORAGE_KEY = 'mxl_app_instance_id';\n"],"mappings":";AAAA,MAAa,uBAAuB;AACpC,MAAa,cAAc;AAC3B,MAAa,mBAAmB;AAGhC,MAAa,mBAAmB;AAChC,MAAa,kCAAkC"}
@@ -51,7 +51,7 @@ let _opentelemetry_resources = require("@opentelemetry/resources");
51
51
  let _opentelemetry_sdk_logs = require("@opentelemetry/sdk-logs");
52
52
  let _opentelemetry_sdk_trace_web = require("@opentelemetry/sdk-trace-web");
53
53
  //#region src/sdk/initSDK.ts
54
- const initSDK = ({ appID, appVersion, resource = (0, _opentelemetry_resources.emptyResource)(), spanExporters = [], logExporters = [], spanProcessors = [], propagator = null, defaultInstrumentationConfig, instrumentations = [], contextManager = null, logProcessors = [], attributeScrubbers = [], enableDefaultAttributeScrubbing = true, additionalQueryParamsToScrub = [], logLevel = _opentelemetry_api.DiagLogLevel.ERROR, otelCollectorURL, apiURL, diagLogger = _opentelemetry_api.diag.createComponentLogger({ namespace: "mxl-sdk" }), dynamicSDKConfigManager: providedDynamicSDKConfigManager, dynamicSDKConfig, registerGlobally = true, blockNetworkSpanForwarding = false, restrictedProtocols = new Set(["file:"]), useDocumentTitleAsPageLabel = true, recordUserSessions = true, replay, serviceName, maxUserSessionDurationSeconds = require_managers_MXLUserSessionManager_constants.DEFAULT_USER_SESSION_MAX_DURATION_SECONDS, inactivityTimeoutSeconds = require_managers_MXLUserSessionManager_constants.DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS } = {}) => {
54
+ const initSDK = ({ appID, appVersion, resource = (0, _opentelemetry_resources.emptyResource)(), spanExporters = [], logExporters = [], spanProcessors = [], propagator = null, defaultInstrumentationConfig, instrumentations = [], contextManager = null, logProcessors = [], attributeScrubbers = [], enableDefaultAttributeScrubbing = true, additionalQueryParamsToScrub = [], logLevel = _opentelemetry_api.DiagLogLevel.ERROR, otelCollectorURL, apiURL, apiKey, diagLogger = _opentelemetry_api.diag.createComponentLogger({ namespace: "mxl-sdk" }), dynamicSDKConfigManager: providedDynamicSDKConfigManager, dynamicSDKConfig, registerGlobally = true, blockNetworkSpanForwarding = false, restrictedProtocols = new Set(["file:"]), useDocumentTitleAsPageLabel = true, recordUserSessions = true, replay, serviceName, maxUserSessionDurationSeconds = require_managers_MXLUserSessionManager_constants.DEFAULT_USER_SESSION_MAX_DURATION_SECONDS, inactivityTimeoutSeconds = require_managers_MXLUserSessionManager_constants.DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS } = {}) => {
55
55
  try {
56
56
  if (registerGlobally) {
57
57
  const existingSDK = require_sdk_registry.registry.registered();
@@ -216,10 +216,10 @@ const initSDK = ({ appID, appVersion, resource = (0, _opentelemetry_resources.em
216
216
  apiURL,
217
217
  serviceName: resolvedServiceName,
218
218
  transport: require_instrumentations_replay_transport_replayTransport.createReplayTransportFromInit({
219
+ apiKey,
219
220
  appID: validatedAppID,
220
221
  apiURL,
221
- otelCollectorURL,
222
- userID: enduserPseudoID
222
+ otelCollectorURL
223
223
  }),
224
224
  userID: enduserPseudoID
225
225
  } : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.cjs","names":["DiagLogLevel","diag","DEFAULT_USER_SESSION_MAX_DURATION_SECONDS","DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS","registry","DiagConsoleLogger","OTelPerformanceManager","validateAppID","validateAppVersion","NamespacedStorage","MXLDynamicConfigManager","getWebSDKOverridableResource","getWebSDKResource","MXLSDKFeaturesManager","nsfConfigValidation","MXLLimitManager","DEFAULT_LIMITS","getDefaultAttributeScrubbers","MXLSessionPartBatchedSpanProcessor","MXLTraceExporter","BatchLogRecordProcessor","MXLLogExporter","MXLW3CTraceContextPropagator","resolveEffectiveReplayConfig","createReplayTransportFromInit","setupDefaultInstrumentations","ReplayInstrumentation","loadNetworkInstrumentations","createSessionRecordingControlFromReplay","noopSessionRecording","MXLUserManager","MXLUserSessionManager","BrowserSpanProcessor","MXLNetworkSpanProcessor","UserSpanProcessor","PageSpanProcessor","SpanScrubProcessor","BatchSpanProcessor","WebTracerProvider","MXLTraceManager","StackContextManager","UserSessionLogRecordProcessor","BrowserLogRecordProcessor","MXLLogRecordProcessor","UserLogRecordProcessor","LogRecordScrubProcessor","PageLogRecordProcessor","LoggerProvider","MXLLogManager","MXLPageManager"],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { log } from '../api-logs/logAPI';\nimport { page } from '../api-page/pageAPI';\nimport { session } from '../api-sessions/sessionAPI';\nimport { trace } from '../api-traces/traceAPI';\nimport { user } from '../api-users/userAPI';\nimport type { AttributeScrubber } from '../common/types';\nimport { MXLLogExporter } from '../exporters/MXLLogExporter/MXLLogExporter';\nimport { MXLTraceExporter } from '../exporters/MXLTraceExporter/MXLTraceExporter';\nimport { createSessionRecordingControlFromReplay } from '../instrumentations/replay/createSessionRecordingControlFromReplay';\nimport { ReplayInstrumentation } from '../instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation';\nimport { createReplayTransportFromInit } from '../instrumentations/replay/transport/replayTransport';\nimport type { ReplayContext } from '../instrumentations/replay/session-recording/config';\nimport { MXLDynamicConfigManager } from '../managers/MXLConfigManager/MXLDynamicConfigManager';\nimport { resolveEffectiveReplayConfig } from '../managers/MXLConfigManager/resolveEffectiveReplayConfig';\nimport { DEFAULT_LIMITS } from '../managers/MXLLimitManager/constants';\nimport { MXLLimitManager } from '../managers/MXLLimitManager/MXLLimitManager';\nimport { MXLLogManager } from '../managers/MXLLogManager/MXLLogManager';\nimport { MXLPageManager } from '../managers/MXLPageManager/MXLPageManager';\nimport { MXLSDKFeaturesManager } from '../managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager';\nimport { MXLTraceManager } from '../managers/MXLTraceManager/MXLTraceManager';\nimport { MXLUserManager } from '../managers/MXLUserManager/MXLUserManager';\nimport {\n DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n} from '../managers/MXLUserSessionManager/constants';\nimport { MXLUserSessionManager } from '../managers/MXLUserSessionManager/MXLUserSessionManager';\nimport { BrowserLogRecordProcessor } from '../processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor';\nimport { BrowserSpanProcessor } from '../processors/BrowserSpanProcessor/BrowserSpanProcessor';\nimport { LogRecordScrubProcessor } from '../processors/LogRecordScrubProcessor/LogRecordScrubProcessor';\nimport { MXLLogRecordProcessor } from '../processors/MXLLogRecordProcessor/MXLLogRecordProcessor';\nimport { MXLNetworkSpanProcessor } from '../processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor';\nimport { MXLSessionPartBatchedSpanProcessor } from '../processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor';\nimport { PageLogRecordProcessor } from '../processors/PageLogRecordProcessor/PageLogRecordProcessor';\nimport { PageSpanProcessor } from '../processors/PageSpanProcessor/PageSpanProcessor';\nimport { SpanScrubProcessor } from '../processors/SpanScrubProcessor/SpanScrubProcessor';\nimport { UserLogRecordProcessor } from '../processors/UserLogRecordProcessor/UserLogRecordProcessor';\nimport { UserSessionLogRecordProcessor } from '../processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor';\nimport { UserSpanProcessor } from '../processors/UserSpanProcessor/UserSpanProcessor';\nimport { MXLW3CTraceContextPropagator } from '../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator';\nimport {\n OTEL_DEFAULT_SERVICE_NAME,\n getWebSDKOverridableResource,\n getWebSDKResource,\n} from '../resources/webSdkResource';\nimport { NamespacedStorage } from '../utils/NamespacedStorage/NamespacedStorage';\nimport { nsfConfigValidation } from '../utils/nsfConfigValidation';\nimport { OTelPerformanceManager } from '../utils/PerformanceManager/OTelPerformanceManager';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { loadNetworkInstrumentations } from './networkInstrumentations';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupTracesArgs,\n SetupUserArgs,\n SetupUserSessionArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n otelCollectorURL,\n apiURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n replay,\n serviceName,\n maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const namespace = registerGlobally ? undefined : validatedAppID;\n const sdkLocalStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.localStorage,\n });\n const sdkSessionStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.sessionStorage,\n });\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n apiURL,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n appVersion: validatedAppVersion,\n diagLogger,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n blockNetworkSpanForwarding,\n deviceId: enduserPseudoID,\n dynamicConfigManager,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n defaultInstrumentationConfig,\n diag: diagLogger,\n featureManager: sdkFeaturesManager,\n propagator,\n registerGlobally,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const userSessionManager = setupUserSession({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig: {\n inactivityTimeoutSeconds,\n maxUserSessionDurationSeconds,\n },\n });\n\n let mxlSpanProcessor: MXLSessionPartBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionPartBatchedSpanProcessor({\n emptySessionAvoidanceEnabled:\n sdkFeaturesManager.isEmptySessionAvoidanceEnabled(),\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n userSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n registerGlobally,\n useDocumentTitleAsPageLabel,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n attributeScrubbers: finalAttributeScrubbers,\n contextManager,\n mxlSpanProcessor,\n pageManager,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n spanExporters,\n spanProcessors,\n userManager,\n });\n\n userSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n attributeScrubbers: finalAttributeScrubbers,\n limitManager,\n logExporters,\n logProcessors,\n mxlLogProcessor,\n pageManager,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n sdkLocalStorage,\n userManager,\n userSessionManager,\n visibilityDoc: window.document,\n });\n\n userSessionManager.startSessionPartInternal('init');\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const { recordUserSessions: effectiveRecordUserSessions, replay: replayUserOptions } =\n resolveEffectiveReplayConfig({\n dynamicConfig: dynamicConfigManager.getConfig(),\n isSessionReplayEnabled: sdkFeaturesManager.isSessionReplayEnabled(),\n recordUserSessions,\n replay,\n });\n\n const includeReplay = Boolean(\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec &&\n sdkFeaturesManager.isSessionReplayEnabled(),\n );\n\n const replayRedundantOmit =\n includeReplay &&\n effectiveRecordUserSessions &&\n replayUserOptions?.omitRedundantInstrumentations\n ? ([\n 'click',\n 'exception',\n '@opentelemetry/instrumentation-fetch',\n '@opentelemetry/instrumentation-xml-http-request',\n ] as const)\n : undefined;\n\n const effectiveDefaultInstrumentationConfig =\n replayRedundantOmit === undefined\n ? defaultInstrumentationConfig\n : {\n ...defaultInstrumentationConfig,\n omit: new Set([\n ...(defaultInstrumentationConfig?.omit ?? []),\n ...replayRedundantOmit,\n ]),\n };\n\n const replayContext: ReplayContext | undefined =\n includeReplay && validatedAppID && enduserPseudoID\n ? {\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n apiURL,\n serviceName: resolvedServiceName,\n transport: createReplayTransportFromInit({\n appID: validatedAppID,\n apiURL,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n userID: enduserPseudoID,\n }\n : undefined;\n\n const buildDefaultInstrumentations = () =>\n setupDefaultInstrumentations(effectiveDefaultInstrumentationConfig, {\n includeReplay,\n limitManager,\n logManager: mxlLogManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // The dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // Setup before we enable instrumentations.\n let replayInstrumentation: ReplayInstrumentation | undefined;\n\n let disableInstrumentations: (() => void) | undefined;\n let disableNetworkInstrumentations: (() => void) | undefined;\n\n if (!registerGlobally) {\n const defaultInstrumentations = buildDefaultInstrumentations();\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n loggerProvider,\n tracerProvider,\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n loggerProvider,\n tracerProvider,\n });\n });\n } else {\n const defaultInstrumentations = setupDefaultInstrumentations(\n effectiveDefaultInstrumentationConfig,\n {\n includeReplay,\n limitManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n },\n );\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n });\n });\n }\n\n let shutdownCalled = false;\n let stopCalled = false;\n\n const stopSdk = (): void => {\n if (stopCalled) {\n return;\n }\n stopCalled = true;\n\n replayInstrumentation?.disable();\n disableInstrumentations?.();\n disableNetworkInstrumentations?.();\n userSessionManager._shutdown();\n };\n\n const sessionRecording = replayInstrumentation\n ? createSessionRecordingControlFromReplay(replayInstrumentation)\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n page: pageManager,\n session: userSessionManager,\n sessionRecording,\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n shutdown: async () => {\n if (shutdownCalled) {\n return;\n }\n shutdownCalled = true;\n stopSdk();\n await tracerProvider.shutdown();\n await loggerProvider.shutdown();\n },\n stop: stopSdk,\n trace: mxlTraceManager,\n user: userManager,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n userSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupUserSession = ({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig,\n}: SetupUserSessionArgs) => {\n const mxlUserSessionManager = new MXLUserSessionManager({\n config: userSessionConfig,\n limitManager,\n perf,\n storage: sdkLocalStorage,\n tabStorage: sdkSessionStorage,\n visibilityDoc: window.document,\n });\n\n if (registerGlobally) {\n session.setGlobalUserSessionManager(mxlUserSessionManager);\n }\n\n return mxlUserSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // Buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // Buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n spanProcessors: finalSpanProcessors,\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // Be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // Wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { mxlTraceManager, tracerProvider };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n userSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n visibilityDoc = window.document,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new UserSessionLogRecordProcessor({\n userSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n processors: finalLogProcessors,\n resource,\n });\n\n const mxlLogManager = new MXLLogManager({\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n userSessionManager,\n visibilityDoc,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"initSDK.cjs","names":["DiagLogLevel","diag","DEFAULT_USER_SESSION_MAX_DURATION_SECONDS","DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS","registry","DiagConsoleLogger","OTelPerformanceManager","validateAppID","validateAppVersion","NamespacedStorage","MXLDynamicConfigManager","getWebSDKOverridableResource","getWebSDKResource","MXLSDKFeaturesManager","nsfConfigValidation","MXLLimitManager","DEFAULT_LIMITS","getDefaultAttributeScrubbers","MXLSessionPartBatchedSpanProcessor","MXLTraceExporter","BatchLogRecordProcessor","MXLLogExporter","MXLW3CTraceContextPropagator","resolveEffectiveReplayConfig","createReplayTransportFromInit","setupDefaultInstrumentations","ReplayInstrumentation","loadNetworkInstrumentations","createSessionRecordingControlFromReplay","noopSessionRecording","MXLUserManager","MXLUserSessionManager","BrowserSpanProcessor","MXLNetworkSpanProcessor","UserSpanProcessor","PageSpanProcessor","SpanScrubProcessor","BatchSpanProcessor","WebTracerProvider","MXLTraceManager","StackContextManager","UserSessionLogRecordProcessor","BrowserLogRecordProcessor","MXLLogRecordProcessor","UserLogRecordProcessor","LogRecordScrubProcessor","PageLogRecordProcessor","LoggerProvider","MXLLogManager","MXLPageManager"],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { log } from '../api-logs/logAPI';\nimport { page } from '../api-page/pageAPI';\nimport { session } from '../api-sessions/sessionAPI';\nimport { trace } from '../api-traces/traceAPI';\nimport { user } from '../api-users/userAPI';\nimport type { AttributeScrubber } from '../common/types';\nimport { MXLLogExporter } from '../exporters/MXLLogExporter/MXLLogExporter';\nimport { MXLTraceExporter } from '../exporters/MXLTraceExporter/MXLTraceExporter';\nimport { createSessionRecordingControlFromReplay } from '../instrumentations/replay/createSessionRecordingControlFromReplay';\nimport { ReplayInstrumentation } from '../instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation';\nimport { createReplayTransportFromInit } from '../instrumentations/replay/transport/replayTransport';\nimport type { ReplayContext } from '../instrumentations/replay/session-recording/config';\nimport { MXLDynamicConfigManager } from '../managers/MXLConfigManager/MXLDynamicConfigManager';\nimport { resolveEffectiveReplayConfig } from '../managers/MXLConfigManager/resolveEffectiveReplayConfig';\nimport { DEFAULT_LIMITS } from '../managers/MXLLimitManager/constants';\nimport { MXLLimitManager } from '../managers/MXLLimitManager/MXLLimitManager';\nimport { MXLLogManager } from '../managers/MXLLogManager/MXLLogManager';\nimport { MXLPageManager } from '../managers/MXLPageManager/MXLPageManager';\nimport { MXLSDKFeaturesManager } from '../managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager';\nimport { MXLTraceManager } from '../managers/MXLTraceManager/MXLTraceManager';\nimport { MXLUserManager } from '../managers/MXLUserManager/MXLUserManager';\nimport {\n DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n} from '../managers/MXLUserSessionManager/constants';\nimport { MXLUserSessionManager } from '../managers/MXLUserSessionManager/MXLUserSessionManager';\nimport { BrowserLogRecordProcessor } from '../processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor';\nimport { BrowserSpanProcessor } from '../processors/BrowserSpanProcessor/BrowserSpanProcessor';\nimport { LogRecordScrubProcessor } from '../processors/LogRecordScrubProcessor/LogRecordScrubProcessor';\nimport { MXLLogRecordProcessor } from '../processors/MXLLogRecordProcessor/MXLLogRecordProcessor';\nimport { MXLNetworkSpanProcessor } from '../processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor';\nimport { MXLSessionPartBatchedSpanProcessor } from '../processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor';\nimport { PageLogRecordProcessor } from '../processors/PageLogRecordProcessor/PageLogRecordProcessor';\nimport { PageSpanProcessor } from '../processors/PageSpanProcessor/PageSpanProcessor';\nimport { SpanScrubProcessor } from '../processors/SpanScrubProcessor/SpanScrubProcessor';\nimport { UserLogRecordProcessor } from '../processors/UserLogRecordProcessor/UserLogRecordProcessor';\nimport { UserSessionLogRecordProcessor } from '../processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor';\nimport { UserSpanProcessor } from '../processors/UserSpanProcessor/UserSpanProcessor';\nimport { MXLW3CTraceContextPropagator } from '../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator';\nimport {\n OTEL_DEFAULT_SERVICE_NAME,\n getWebSDKOverridableResource,\n getWebSDKResource,\n} from '../resources/webSdkResource';\nimport { NamespacedStorage } from '../utils/NamespacedStorage/NamespacedStorage';\nimport { nsfConfigValidation } from '../utils/nsfConfigValidation';\nimport { OTelPerformanceManager } from '../utils/PerformanceManager/OTelPerformanceManager';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { loadNetworkInstrumentations } from './networkInstrumentations';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupTracesArgs,\n SetupUserArgs,\n SetupUserSessionArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n otelCollectorURL,\n apiURL,\n apiKey,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n replay,\n serviceName,\n maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const namespace = registerGlobally ? undefined : validatedAppID;\n const sdkLocalStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.localStorage,\n });\n const sdkSessionStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.sessionStorage,\n });\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n apiURL,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n appVersion: validatedAppVersion,\n diagLogger,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n blockNetworkSpanForwarding,\n deviceId: enduserPseudoID,\n dynamicConfigManager,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n defaultInstrumentationConfig,\n diag: diagLogger,\n featureManager: sdkFeaturesManager,\n propagator,\n registerGlobally,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const userSessionManager = setupUserSession({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig: {\n inactivityTimeoutSeconds,\n maxUserSessionDurationSeconds,\n },\n });\n\n let mxlSpanProcessor: MXLSessionPartBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionPartBatchedSpanProcessor({\n emptySessionAvoidanceEnabled:\n sdkFeaturesManager.isEmptySessionAvoidanceEnabled(),\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n userSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n registerGlobally,\n useDocumentTitleAsPageLabel,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n attributeScrubbers: finalAttributeScrubbers,\n contextManager,\n mxlSpanProcessor,\n pageManager,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n spanExporters,\n spanProcessors,\n userManager,\n });\n\n userSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n attributeScrubbers: finalAttributeScrubbers,\n limitManager,\n logExporters,\n logProcessors,\n mxlLogProcessor,\n pageManager,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n sdkLocalStorage,\n userManager,\n userSessionManager,\n visibilityDoc: window.document,\n });\n\n userSessionManager.startSessionPartInternal('init');\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const { recordUserSessions: effectiveRecordUserSessions, replay: replayUserOptions } =\n resolveEffectiveReplayConfig({\n dynamicConfig: dynamicConfigManager.getConfig(),\n isSessionReplayEnabled: sdkFeaturesManager.isSessionReplayEnabled(),\n recordUserSessions,\n replay,\n });\n\n const includeReplay = Boolean(\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec &&\n sdkFeaturesManager.isSessionReplayEnabled(),\n );\n\n const replayRedundantOmit =\n includeReplay &&\n effectiveRecordUserSessions &&\n replayUserOptions?.omitRedundantInstrumentations\n ? ([\n 'click',\n 'exception',\n '@opentelemetry/instrumentation-fetch',\n '@opentelemetry/instrumentation-xml-http-request',\n ] as const)\n : undefined;\n\n const effectiveDefaultInstrumentationConfig =\n replayRedundantOmit === undefined\n ? defaultInstrumentationConfig\n : {\n ...defaultInstrumentationConfig,\n omit: new Set([\n ...(defaultInstrumentationConfig?.omit ?? []),\n ...replayRedundantOmit,\n ]),\n };\n\n const replayContext: ReplayContext | undefined =\n includeReplay && validatedAppID && enduserPseudoID\n ? {\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n apiURL,\n serviceName: resolvedServiceName,\n transport: createReplayTransportFromInit({\n apiKey,\n appID: validatedAppID,\n apiURL,\n otelCollectorURL,\n }),\n userID: enduserPseudoID,\n }\n : undefined;\n\n const buildDefaultInstrumentations = () =>\n setupDefaultInstrumentations(effectiveDefaultInstrumentationConfig, {\n includeReplay,\n limitManager,\n logManager: mxlLogManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // The dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // Setup before we enable instrumentations.\n let replayInstrumentation: ReplayInstrumentation | undefined;\n\n let disableInstrumentations: (() => void) | undefined;\n let disableNetworkInstrumentations: (() => void) | undefined;\n\n if (!registerGlobally) {\n const defaultInstrumentations = buildDefaultInstrumentations();\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n loggerProvider,\n tracerProvider,\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n loggerProvider,\n tracerProvider,\n });\n });\n } else {\n const defaultInstrumentations = setupDefaultInstrumentations(\n effectiveDefaultInstrumentationConfig,\n {\n includeReplay,\n limitManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n },\n );\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n });\n });\n }\n\n let shutdownCalled = false;\n let stopCalled = false;\n\n const stopSdk = (): void => {\n if (stopCalled) {\n return;\n }\n stopCalled = true;\n\n replayInstrumentation?.disable();\n disableInstrumentations?.();\n disableNetworkInstrumentations?.();\n userSessionManager._shutdown();\n };\n\n const sessionRecording = replayInstrumentation\n ? createSessionRecordingControlFromReplay(replayInstrumentation)\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n page: pageManager,\n session: userSessionManager,\n sessionRecording,\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n shutdown: async () => {\n if (shutdownCalled) {\n return;\n }\n shutdownCalled = true;\n stopSdk();\n await tracerProvider.shutdown();\n await loggerProvider.shutdown();\n },\n stop: stopSdk,\n trace: mxlTraceManager,\n user: userManager,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n userSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupUserSession = ({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig,\n}: SetupUserSessionArgs) => {\n const mxlUserSessionManager = new MXLUserSessionManager({\n config: userSessionConfig,\n limitManager,\n perf,\n storage: sdkLocalStorage,\n tabStorage: sdkSessionStorage,\n visibilityDoc: window.document,\n });\n\n if (registerGlobally) {\n session.setGlobalUserSessionManager(mxlUserSessionManager);\n }\n\n return mxlUserSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // Buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // Buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n spanProcessors: finalSpanProcessors,\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // Be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // Wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { mxlTraceManager, tracerProvider };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n userSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n visibilityDoc = window.document,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new UserSessionLogRecordProcessor({\n userSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n processors: finalLogProcessors,\n resource,\n });\n\n const mxlLogManager = new MXLLogManager({\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n userSessionManager,\n visibilityDoc,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
@@ -19,6 +19,7 @@ declare const initSDK: ({
19
19
  logLevel,
20
20
  otelCollectorURL,
21
21
  apiURL,
22
+ apiKey,
22
23
  diagLogger,
23
24
  dynamicSDKConfigManager: providedDynamicSDKConfigManager,
24
25
  dynamicSDKConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.d.cts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA+Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,gBAAA;EAAA,MAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,MAAA;EAAA,WAAA;EAAA,6BAAA;EAAA;AAAA,IAgCG,aAAA,KACF,UAAA"}
1
+ {"version":3,"file":"initSDK.d.cts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA+Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,gBAAA;EAAA,MAAA;EAAA,MAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,MAAA;EAAA,WAAA;EAAA,6BAAA;EAAA;AAAA,IAiCG,aAAA,KACF,UAAA"}
@@ -19,6 +19,7 @@ declare const initSDK: ({
19
19
  logLevel,
20
20
  otelCollectorURL,
21
21
  apiURL,
22
+ apiKey,
22
23
  diagLogger,
23
24
  dynamicSDKConfigManager: providedDynamicSDKConfigManager,
24
25
  dynamicSDKConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.d.ts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA+Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,gBAAA;EAAA,MAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,MAAA;EAAA,WAAA;EAAA,6BAAA;EAAA;AAAA,IAgCG,aAAA,KACF,UAAA"}
1
+ {"version":3,"file":"initSDK.d.ts","names":[],"sources":["../../src/sdk/initSDK.ts"],"mappings":";;;cA+Ea,OAAA;EACX,KAAA;EAAA,UAAA;EAAA,QAAA;EAAA,aAAA;EAAA,YAAA;EAAA,cAAA;EAAA,UAAA;EAAA,4BAAA;EAAA,gBAAA;EAAA,cAAA;EAAA,aAAA;EAAA,kBAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,QAAA;EAAA,gBAAA;EAAA,MAAA;EAAA,MAAA;EAAA,UAAA;EAAA,uBAAA,EAAA,+BAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,0BAAA;EAAA,mBAAA;EAAA,2BAAA;EAAA,kBAAA;EAAA,MAAA;EAAA,WAAA;EAAA,6BAAA;EAAA;AAAA,IAiCG,aAAA,KACF,UAAA"}
@@ -49,7 +49,7 @@ import { emptyResource } from "@opentelemetry/resources";
49
49
  import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
50
50
  import { BatchSpanProcessor, StackContextManager, WebTracerProvider } from "@opentelemetry/sdk-trace-web";
51
51
  //#region src/sdk/initSDK.ts
52
- const initSDK = ({ appID, appVersion, resource = emptyResource(), spanExporters = [], logExporters = [], spanProcessors = [], propagator = null, defaultInstrumentationConfig, instrumentations = [], contextManager = null, logProcessors = [], attributeScrubbers = [], enableDefaultAttributeScrubbing = true, additionalQueryParamsToScrub = [], logLevel = DiagLogLevel.ERROR, otelCollectorURL, apiURL, diagLogger = diag.createComponentLogger({ namespace: "mxl-sdk" }), dynamicSDKConfigManager: providedDynamicSDKConfigManager, dynamicSDKConfig, registerGlobally = true, blockNetworkSpanForwarding = false, restrictedProtocols = new Set(["file:"]), useDocumentTitleAsPageLabel = true, recordUserSessions = true, replay, serviceName, maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS, inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS } = {}) => {
52
+ const initSDK = ({ appID, appVersion, resource = emptyResource(), spanExporters = [], logExporters = [], spanProcessors = [], propagator = null, defaultInstrumentationConfig, instrumentations = [], contextManager = null, logProcessors = [], attributeScrubbers = [], enableDefaultAttributeScrubbing = true, additionalQueryParamsToScrub = [], logLevel = DiagLogLevel.ERROR, otelCollectorURL, apiURL, apiKey, diagLogger = diag.createComponentLogger({ namespace: "mxl-sdk" }), dynamicSDKConfigManager: providedDynamicSDKConfigManager, dynamicSDKConfig, registerGlobally = true, blockNetworkSpanForwarding = false, restrictedProtocols = new Set(["file:"]), useDocumentTitleAsPageLabel = true, recordUserSessions = true, replay, serviceName, maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS, inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS } = {}) => {
53
53
  try {
54
54
  if (registerGlobally) {
55
55
  const existingSDK = registry.registered();
@@ -214,10 +214,10 @@ const initSDK = ({ appID, appVersion, resource = emptyResource(), spanExporters
214
214
  apiURL,
215
215
  serviceName: resolvedServiceName,
216
216
  transport: createReplayTransportFromInit({
217
+ apiKey,
217
218
  appID: validatedAppID,
218
219
  apiURL,
219
- otelCollectorURL,
220
- userID: enduserPseudoID
220
+ otelCollectorURL
221
221
  }),
222
222
  userID: enduserPseudoID
223
223
  } : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"initSDK.js","names":[],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { log } from '../api-logs/logAPI';\nimport { page } from '../api-page/pageAPI';\nimport { session } from '../api-sessions/sessionAPI';\nimport { trace } from '../api-traces/traceAPI';\nimport { user } from '../api-users/userAPI';\nimport type { AttributeScrubber } from '../common/types';\nimport { MXLLogExporter } from '../exporters/MXLLogExporter/MXLLogExporter';\nimport { MXLTraceExporter } from '../exporters/MXLTraceExporter/MXLTraceExporter';\nimport { createSessionRecordingControlFromReplay } from '../instrumentations/replay/createSessionRecordingControlFromReplay';\nimport { ReplayInstrumentation } from '../instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation';\nimport { createReplayTransportFromInit } from '../instrumentations/replay/transport/replayTransport';\nimport type { ReplayContext } from '../instrumentations/replay/session-recording/config';\nimport { MXLDynamicConfigManager } from '../managers/MXLConfigManager/MXLDynamicConfigManager';\nimport { resolveEffectiveReplayConfig } from '../managers/MXLConfigManager/resolveEffectiveReplayConfig';\nimport { DEFAULT_LIMITS } from '../managers/MXLLimitManager/constants';\nimport { MXLLimitManager } from '../managers/MXLLimitManager/MXLLimitManager';\nimport { MXLLogManager } from '../managers/MXLLogManager/MXLLogManager';\nimport { MXLPageManager } from '../managers/MXLPageManager/MXLPageManager';\nimport { MXLSDKFeaturesManager } from '../managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager';\nimport { MXLTraceManager } from '../managers/MXLTraceManager/MXLTraceManager';\nimport { MXLUserManager } from '../managers/MXLUserManager/MXLUserManager';\nimport {\n DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n} from '../managers/MXLUserSessionManager/constants';\nimport { MXLUserSessionManager } from '../managers/MXLUserSessionManager/MXLUserSessionManager';\nimport { BrowserLogRecordProcessor } from '../processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor';\nimport { BrowserSpanProcessor } from '../processors/BrowserSpanProcessor/BrowserSpanProcessor';\nimport { LogRecordScrubProcessor } from '../processors/LogRecordScrubProcessor/LogRecordScrubProcessor';\nimport { MXLLogRecordProcessor } from '../processors/MXLLogRecordProcessor/MXLLogRecordProcessor';\nimport { MXLNetworkSpanProcessor } from '../processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor';\nimport { MXLSessionPartBatchedSpanProcessor } from '../processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor';\nimport { PageLogRecordProcessor } from '../processors/PageLogRecordProcessor/PageLogRecordProcessor';\nimport { PageSpanProcessor } from '../processors/PageSpanProcessor/PageSpanProcessor';\nimport { SpanScrubProcessor } from '../processors/SpanScrubProcessor/SpanScrubProcessor';\nimport { UserLogRecordProcessor } from '../processors/UserLogRecordProcessor/UserLogRecordProcessor';\nimport { UserSessionLogRecordProcessor } from '../processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor';\nimport { UserSpanProcessor } from '../processors/UserSpanProcessor/UserSpanProcessor';\nimport { MXLW3CTraceContextPropagator } from '../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator';\nimport {\n OTEL_DEFAULT_SERVICE_NAME,\n getWebSDKOverridableResource,\n getWebSDKResource,\n} from '../resources/webSdkResource';\nimport { NamespacedStorage } from '../utils/NamespacedStorage/NamespacedStorage';\nimport { nsfConfigValidation } from '../utils/nsfConfigValidation';\nimport { OTelPerformanceManager } from '../utils/PerformanceManager/OTelPerformanceManager';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { loadNetworkInstrumentations } from './networkInstrumentations';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupTracesArgs,\n SetupUserArgs,\n SetupUserSessionArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n otelCollectorURL,\n apiURL,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n replay,\n serviceName,\n maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const namespace = registerGlobally ? undefined : validatedAppID;\n const sdkLocalStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.localStorage,\n });\n const sdkSessionStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.sessionStorage,\n });\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n apiURL,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n appVersion: validatedAppVersion,\n diagLogger,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n blockNetworkSpanForwarding,\n deviceId: enduserPseudoID,\n dynamicConfigManager,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n defaultInstrumentationConfig,\n diag: diagLogger,\n featureManager: sdkFeaturesManager,\n propagator,\n registerGlobally,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const userSessionManager = setupUserSession({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig: {\n inactivityTimeoutSeconds,\n maxUserSessionDurationSeconds,\n },\n });\n\n let mxlSpanProcessor: MXLSessionPartBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionPartBatchedSpanProcessor({\n emptySessionAvoidanceEnabled:\n sdkFeaturesManager.isEmptySessionAvoidanceEnabled(),\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n userSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n registerGlobally,\n useDocumentTitleAsPageLabel,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n attributeScrubbers: finalAttributeScrubbers,\n contextManager,\n mxlSpanProcessor,\n pageManager,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n spanExporters,\n spanProcessors,\n userManager,\n });\n\n userSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n attributeScrubbers: finalAttributeScrubbers,\n limitManager,\n logExporters,\n logProcessors,\n mxlLogProcessor,\n pageManager,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n sdkLocalStorage,\n userManager,\n userSessionManager,\n visibilityDoc: window.document,\n });\n\n userSessionManager.startSessionPartInternal('init');\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const { recordUserSessions: effectiveRecordUserSessions, replay: replayUserOptions } =\n resolveEffectiveReplayConfig({\n dynamicConfig: dynamicConfigManager.getConfig(),\n isSessionReplayEnabled: sdkFeaturesManager.isSessionReplayEnabled(),\n recordUserSessions,\n replay,\n });\n\n const includeReplay = Boolean(\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec &&\n sdkFeaturesManager.isSessionReplayEnabled(),\n );\n\n const replayRedundantOmit =\n includeReplay &&\n effectiveRecordUserSessions &&\n replayUserOptions?.omitRedundantInstrumentations\n ? ([\n 'click',\n 'exception',\n '@opentelemetry/instrumentation-fetch',\n '@opentelemetry/instrumentation-xml-http-request',\n ] as const)\n : undefined;\n\n const effectiveDefaultInstrumentationConfig =\n replayRedundantOmit === undefined\n ? defaultInstrumentationConfig\n : {\n ...defaultInstrumentationConfig,\n omit: new Set([\n ...(defaultInstrumentationConfig?.omit ?? []),\n ...replayRedundantOmit,\n ]),\n };\n\n const replayContext: ReplayContext | undefined =\n includeReplay && validatedAppID && enduserPseudoID\n ? {\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n apiURL,\n serviceName: resolvedServiceName,\n transport: createReplayTransportFromInit({\n appID: validatedAppID,\n apiURL,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n userID: enduserPseudoID,\n }\n : undefined;\n\n const buildDefaultInstrumentations = () =>\n setupDefaultInstrumentations(effectiveDefaultInstrumentationConfig, {\n includeReplay,\n limitManager,\n logManager: mxlLogManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // The dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // Setup before we enable instrumentations.\n let replayInstrumentation: ReplayInstrumentation | undefined;\n\n let disableInstrumentations: (() => void) | undefined;\n let disableNetworkInstrumentations: (() => void) | undefined;\n\n if (!registerGlobally) {\n const defaultInstrumentations = buildDefaultInstrumentations();\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n loggerProvider,\n tracerProvider,\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n loggerProvider,\n tracerProvider,\n });\n });\n } else {\n const defaultInstrumentations = setupDefaultInstrumentations(\n effectiveDefaultInstrumentationConfig,\n {\n includeReplay,\n limitManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n },\n );\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n });\n });\n }\n\n let shutdownCalled = false;\n let stopCalled = false;\n\n const stopSdk = (): void => {\n if (stopCalled) {\n return;\n }\n stopCalled = true;\n\n replayInstrumentation?.disable();\n disableInstrumentations?.();\n disableNetworkInstrumentations?.();\n userSessionManager._shutdown();\n };\n\n const sessionRecording = replayInstrumentation\n ? createSessionRecordingControlFromReplay(replayInstrumentation)\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n page: pageManager,\n session: userSessionManager,\n sessionRecording,\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n shutdown: async () => {\n if (shutdownCalled) {\n return;\n }\n shutdownCalled = true;\n stopSdk();\n await tracerProvider.shutdown();\n await loggerProvider.shutdown();\n },\n stop: stopSdk,\n trace: mxlTraceManager,\n user: userManager,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n userSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupUserSession = ({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig,\n}: SetupUserSessionArgs) => {\n const mxlUserSessionManager = new MXLUserSessionManager({\n config: userSessionConfig,\n limitManager,\n perf,\n storage: sdkLocalStorage,\n tabStorage: sdkSessionStorage,\n visibilityDoc: window.document,\n });\n\n if (registerGlobally) {\n session.setGlobalUserSessionManager(mxlUserSessionManager);\n }\n\n return mxlUserSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // Buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // Buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n spanProcessors: finalSpanProcessors,\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // Be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // Wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { mxlTraceManager, tracerProvider };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n userSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n visibilityDoc = window.document,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new UserSessionLogRecordProcessor({\n userSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n processors: finalLogProcessors,\n resource,\n });\n\n const mxlLogManager = new MXLLogManager({\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n userSessionManager,\n visibilityDoc,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"initSDK.js","names":[],"sources":["../../src/sdk/initSDK.ts"],"sourcesContent":["import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { emptyResource } from '@opentelemetry/resources';\nimport type { LogRecordProcessor } from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-web';\nimport {\n BatchSpanProcessor,\n StackContextManager,\n WebTracerProvider,\n} from '@opentelemetry/sdk-trace-web';\nimport { log } from '../api-logs/logAPI';\nimport { page } from '../api-page/pageAPI';\nimport { session } from '../api-sessions/sessionAPI';\nimport { trace } from '../api-traces/traceAPI';\nimport { user } from '../api-users/userAPI';\nimport type { AttributeScrubber } from '../common/types';\nimport { MXLLogExporter } from '../exporters/MXLLogExporter/MXLLogExporter';\nimport { MXLTraceExporter } from '../exporters/MXLTraceExporter/MXLTraceExporter';\nimport { createSessionRecordingControlFromReplay } from '../instrumentations/replay/createSessionRecordingControlFromReplay';\nimport { ReplayInstrumentation } from '../instrumentations/replay/ReplayInstrumentation/ReplayInstrumentation';\nimport { createReplayTransportFromInit } from '../instrumentations/replay/transport/replayTransport';\nimport type { ReplayContext } from '../instrumentations/replay/session-recording/config';\nimport { MXLDynamicConfigManager } from '../managers/MXLConfigManager/MXLDynamicConfigManager';\nimport { resolveEffectiveReplayConfig } from '../managers/MXLConfigManager/resolveEffectiveReplayConfig';\nimport { DEFAULT_LIMITS } from '../managers/MXLLimitManager/constants';\nimport { MXLLimitManager } from '../managers/MXLLimitManager/MXLLimitManager';\nimport { MXLLogManager } from '../managers/MXLLogManager/MXLLogManager';\nimport { MXLPageManager } from '../managers/MXLPageManager/MXLPageManager';\nimport { MXLSDKFeaturesManager } from '../managers/MXLSDKFeaturesManager/MXLSDKFeaturesManager';\nimport { MXLTraceManager } from '../managers/MXLTraceManager/MXLTraceManager';\nimport { MXLUserManager } from '../managers/MXLUserManager/MXLUserManager';\nimport {\n DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n} from '../managers/MXLUserSessionManager/constants';\nimport { MXLUserSessionManager } from '../managers/MXLUserSessionManager/MXLUserSessionManager';\nimport { BrowserLogRecordProcessor } from '../processors/BrowserLogRecordProcessor/BrowserLogRecordProcessor';\nimport { BrowserSpanProcessor } from '../processors/BrowserSpanProcessor/BrowserSpanProcessor';\nimport { LogRecordScrubProcessor } from '../processors/LogRecordScrubProcessor/LogRecordScrubProcessor';\nimport { MXLLogRecordProcessor } from '../processors/MXLLogRecordProcessor/MXLLogRecordProcessor';\nimport { MXLNetworkSpanProcessor } from '../processors/MXLNetworkSpanProcessor/MXLNetworkSpanProcessor';\nimport { MXLSessionPartBatchedSpanProcessor } from '../processors/MXLSessionPartBatchedSpanProcessor/MXLSessionPartBatchedSpanProcessor';\nimport { PageLogRecordProcessor } from '../processors/PageLogRecordProcessor/PageLogRecordProcessor';\nimport { PageSpanProcessor } from '../processors/PageSpanProcessor/PageSpanProcessor';\nimport { SpanScrubProcessor } from '../processors/SpanScrubProcessor/SpanScrubProcessor';\nimport { UserLogRecordProcessor } from '../processors/UserLogRecordProcessor/UserLogRecordProcessor';\nimport { UserSessionLogRecordProcessor } from '../processors/UserSessionLogRecordProcessor/UserSessionLogRecordProcessor';\nimport { UserSpanProcessor } from '../processors/UserSpanProcessor/UserSpanProcessor';\nimport { MXLW3CTraceContextPropagator } from '../propagators/MXLW3CTraceContextPropagator/MXLW3CTraceContextPropagator';\nimport {\n OTEL_DEFAULT_SERVICE_NAME,\n getWebSDKOverridableResource,\n getWebSDKResource,\n} from '../resources/webSdkResource';\nimport { NamespacedStorage } from '../utils/NamespacedStorage/NamespacedStorage';\nimport { nsfConfigValidation } from '../utils/nsfConfigValidation';\nimport { OTelPerformanceManager } from '../utils/PerformanceManager/OTelPerformanceManager';\nimport { getDefaultAttributeScrubbers } from './defaultAttributeScrubbers';\nimport { loadNetworkInstrumentations } from './networkInstrumentations';\nimport { noopSessionRecording } from './noopSessionRecording';\nimport { registry } from './registry';\nimport { setupDefaultInstrumentations } from './setupDefaultInstrumentations';\nimport type {\n DynamicSDKConfig,\n SDKControl,\n SDKInitConfig,\n SetupLogsArgs,\n SetupPageArgs,\n SetupTracesArgs,\n SetupUserArgs,\n SetupUserSessionArgs,\n} from './types';\nimport { validateAppID, validateAppVersion } from './utils';\n\nexport const initSDK = (\n {\n appID,\n appVersion,\n resource = emptyResource(),\n spanExporters = [],\n logExporters = [],\n spanProcessors = [],\n propagator = null,\n defaultInstrumentationConfig,\n instrumentations = [],\n contextManager = null,\n logProcessors = [],\n attributeScrubbers = [],\n enableDefaultAttributeScrubbing = true,\n additionalQueryParamsToScrub = [],\n logLevel = DiagLogLevel.ERROR,\n otelCollectorURL,\n apiURL,\n apiKey,\n diagLogger = diag.createComponentLogger({\n namespace: 'mxl-sdk',\n }),\n dynamicSDKConfigManager: providedDynamicSDKConfigManager,\n dynamicSDKConfig,\n registerGlobally = true,\n blockNetworkSpanForwarding = false,\n restrictedProtocols = new Set(['file:']),\n useDocumentTitleAsPageLabel = true,\n recordUserSessions = true,\n replay,\n serviceName,\n maxUserSessionDurationSeconds = DEFAULT_USER_SESSION_MAX_DURATION_SECONDS,\n inactivityTimeoutSeconds = DEFAULT_USER_SESSION_INACTIVITY_TIMEOUT_SECONDS,\n }: SDKInitConfig = {} as SDKInitConfig,\n): SDKControl | false => {\n try {\n if (registerGlobally) {\n const existingSDK = registry.registered();\n if (existingSDK !== null) {\n diagLogger.warn(\n 'SDK has already been successfully initialized, skipping this invocation of initSDK',\n );\n return existingSDK;\n }\n }\n\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel,\n });\n\n if (typeof window === 'undefined') {\n diagLogger.warn('browser not detected, skipping initialization');\n return false;\n }\n\n const perf = new OTelPerformanceManager();\n const initSDKStart = perf.getNowMillis();\n const validatedAppID = validateAppID(appID);\n const validatedAppVersion = validateAppVersion(appVersion);\n\n const sendingToMXL = validatedAppID !== undefined;\n\n if (!sendingToMXL && !logExporters.length && !spanExporters.length) {\n throw new Error(\n 'when appID is omitted, at least one logExporter or spanExporter must be set',\n );\n }\n\n if (restrictedProtocols.has(window.location.protocol)) {\n throw new Error(\n `not initializing due to restricted protocol: ${window.location.protocol}`,\n );\n }\n\n if (sendingToMXL && typeof CompressionStream === 'undefined') {\n throw new Error(\n 'CompressionStream is not supported in this browser and required for data compression.',\n );\n }\n\n const namespace = registerGlobally ? undefined : validatedAppID;\n const sdkLocalStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.localStorage,\n });\n const sdkSessionStorage = new NamespacedStorage({\n diag: diagLogger,\n namespace,\n storage: window.sessionStorage,\n });\n\n const userManager = setupUser({ registerGlobally, sdkLocalStorage });\n const enduserPseudoID = userManager.getMXLUserId();\n if (sendingToMXL && !enduserPseudoID) {\n throw new Error('userID is required when using MXL exporter');\n }\n\n const dynamicDefaultConfig = {\n ...dynamicSDKConfig,\n };\n\n const dynamicConfigManager =\n providedDynamicSDKConfigManager ??\n new MXLDynamicConfigManager({\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n defaultConfig: dynamicDefaultConfig,\n deviceId: enduserPseudoID,\n apiURL,\n storage: sdkLocalStorage,\n });\n void dynamicConfigManager.refreshRemoteConfig();\n\n const resolvedServiceName =\n dynamicConfigManager.resolveApplicationServiceName?.(serviceName) ??\n (() => {\n const fromInit = serviceName?.trim();\n if (fromInit) {\n return fromInit;\n }\n const fromCfg = dynamicConfigManager.getConfig().serviceName?.trim();\n if (fromCfg) {\n return fromCfg;\n }\n return OTEL_DEFAULT_SERVICE_NAME;\n })();\n\n const resourceWithWebSDKAttributes = getWebSDKOverridableResource({\n serviceName: resolvedServiceName,\n })\n .merge(resource)\n .merge(\n getWebSDKResource({\n appVersion: validatedAppVersion,\n diagLogger,\n pageSessionStorage: sdkSessionStorage,\n }),\n );\n\n const sdkFeaturesManager = new MXLSDKFeaturesManager({\n blockNetworkSpanForwarding,\n deviceId: enduserPseudoID,\n dynamicConfigManager,\n });\n\n if (!sdkFeaturesManager.isSDKEnabled()) {\n diagLogger.debug('SDK is disabled, skipping initialization.');\n\n return false;\n }\n\n const nsfValid = nsfConfigValidation({\n defaultInstrumentationConfig,\n diag: diagLogger,\n featureManager: sdkFeaturesManager,\n propagator,\n registerGlobally,\n });\n\n const limitManager = new MXLLimitManager(DEFAULT_LIMITS);\n\n const finalAttributeScrubbers: AttributeScrubber[] = [\n ...(enableDefaultAttributeScrubbing\n ? getDefaultAttributeScrubbers(additionalQueryParamsToScrub)\n : []),\n ...attributeScrubbers,\n ];\n\n const userSessionManager = setupUserSession({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig: {\n inactivityTimeoutSeconds,\n maxUserSessionDurationSeconds,\n },\n });\n\n let mxlSpanProcessor: MXLSessionPartBatchedSpanProcessor | undefined;\n let mxlLogProcessor: BatchLogRecordProcessor | undefined;\n if (sendingToMXL) {\n mxlSpanProcessor = new MXLSessionPartBatchedSpanProcessor({\n emptySessionAvoidanceEnabled:\n sdkFeaturesManager.isEmptySessionAvoidanceEnabled(),\n exporter: new MXLTraceExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n limitManager,\n userSessionManager,\n });\n\n mxlLogProcessor = new BatchLogRecordProcessor(\n new MXLLogExporter({\n appID: validatedAppID,\n otelCollectorURL,\n userID: enduserPseudoID,\n }),\n );\n }\n\n const pageManager = setupPage({\n registerGlobally,\n useDocumentTitleAsPageLabel,\n });\n\n const { tracerProvider, mxlTraceManager } = setupTraces({\n attributeScrubbers: finalAttributeScrubbers,\n contextManager,\n mxlSpanProcessor,\n pageManager,\n propagator: nsfValid ? new MXLW3CTraceContextPropagator() : propagator,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n spanExporters,\n spanProcessors,\n userManager,\n });\n\n userSessionManager.setTracerProvider(tracerProvider);\n\n const { loggerProvider, mxlLogManager } = setupLogs({\n attributeScrubbers: finalAttributeScrubbers,\n limitManager,\n logExporters,\n logProcessors,\n mxlLogProcessor,\n pageManager,\n registerGlobally,\n resource: resourceWithWebSDKAttributes,\n sdkLocalStorage,\n userManager,\n userSessionManager,\n visibilityDoc: window.document,\n });\n\n userSessionManager.startSessionPartInternal('init');\n\n const windowDisableSessionRec =\n typeof window !== 'undefined' &&\n (window as unknown as { __MXL_DISABLE_SESSION_RECORDER?: boolean })\n .__MXL_DISABLE_SESSION_RECORDER === true;\n\n const { recordUserSessions: effectiveRecordUserSessions, replay: replayUserOptions } =\n resolveEffectiveReplayConfig({\n dynamicConfig: dynamicConfigManager.getConfig(),\n isSessionReplayEnabled: sdkFeaturesManager.isSessionReplayEnabled(),\n recordUserSessions,\n replay,\n });\n\n const includeReplay = Boolean(\n sendingToMXL &&\n validatedAppID &&\n enduserPseudoID &&\n !windowDisableSessionRec &&\n sdkFeaturesManager.isSessionReplayEnabled(),\n );\n\n const replayRedundantOmit =\n includeReplay &&\n effectiveRecordUserSessions &&\n replayUserOptions?.omitRedundantInstrumentations\n ? ([\n 'click',\n 'exception',\n '@opentelemetry/instrumentation-fetch',\n '@opentelemetry/instrumentation-xml-http-request',\n ] as const)\n : undefined;\n\n const effectiveDefaultInstrumentationConfig =\n replayRedundantOmit === undefined\n ? defaultInstrumentationConfig\n : {\n ...defaultInstrumentationConfig,\n omit: new Set([\n ...(defaultInstrumentationConfig?.omit ?? []),\n ...replayRedundantOmit,\n ]),\n };\n\n const replayContext: ReplayContext | undefined =\n includeReplay && validatedAppID && enduserPseudoID\n ? {\n appID: validatedAppID,\n appVersion: validatedAppVersion,\n apiURL,\n serviceName: resolvedServiceName,\n transport: createReplayTransportFromInit({\n apiKey,\n appID: validatedAppID,\n apiURL,\n otelCollectorURL,\n }),\n userID: enduserPseudoID,\n }\n : undefined;\n\n const buildDefaultInstrumentations = () =>\n setupDefaultInstrumentations(effectiveDefaultInstrumentationConfig, {\n includeReplay,\n limitManager,\n logManager: mxlLogManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n });\n\n // NOTE: we require setupInstrumentation to run the last, after setupLogs and setupTraces. This is how OTel works wrt\n // The dependencies between instrumentations and global providers. We need the providers for tracers, and logs to be\n // Setup before we enable instrumentations.\n let replayInstrumentation: ReplayInstrumentation | undefined;\n\n let disableInstrumentations: (() => void) | undefined;\n let disableNetworkInstrumentations: (() => void) | undefined;\n\n if (!registerGlobally) {\n const defaultInstrumentations = buildDefaultInstrumentations();\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n loggerProvider,\n tracerProvider,\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n loggerProvider,\n tracerProvider,\n });\n });\n } else {\n const defaultInstrumentations = setupDefaultInstrumentations(\n effectiveDefaultInstrumentationConfig,\n {\n includeReplay,\n limitManager,\n pageManager,\n recordUserSessions: effectiveRecordUserSessions,\n replayContext,\n replayOptions: replayUserOptions,\n sessionStorage: sdkSessionStorage,\n userSessionManager,\n },\n );\n replayInstrumentation = defaultInstrumentations.find(\n (instrumentation): instrumentation is ReplayInstrumentation =>\n instrumentation instanceof ReplayInstrumentation,\n );\n\n disableInstrumentations = registerInstrumentations({\n instrumentations: [...defaultInstrumentations, ...instrumentations],\n });\n\n void loadNetworkInstrumentations(\n effectiveDefaultInstrumentationConfig,\n ).then((networkInstrumentations) => {\n if (networkInstrumentations.length === 0) {\n return;\n }\n disableNetworkInstrumentations = registerInstrumentations({\n instrumentations: networkInstrumentations,\n });\n });\n }\n\n let shutdownCalled = false;\n let stopCalled = false;\n\n const stopSdk = (): void => {\n if (stopCalled) {\n return;\n }\n stopCalled = true;\n\n replayInstrumentation?.disable();\n disableInstrumentations?.();\n disableNetworkInstrumentations?.();\n userSessionManager._shutdown();\n };\n\n const sessionRecording = replayInstrumentation\n ? createSessionRecordingControlFromReplay(replayInstrumentation)\n : noopSessionRecording;\n\n diagLogger.info('successfully initialized the SDK');\n\n const sdkControl: SDKControl = {\n flush: async () => {\n await tracerProvider.forceFlush();\n await loggerProvider.forceFlush();\n },\n log: mxlLogManager,\n page: pageManager,\n session: userSessionManager,\n sessionRecording,\n setDynamicConfig: (config: Partial<DynamicSDKConfig>) => {\n dynamicConfigManager.setConfig(config);\n },\n shutdown: async () => {\n if (shutdownCalled) {\n return;\n }\n shutdownCalled = true;\n stopSdk();\n await tracerProvider.shutdown();\n await loggerProvider.shutdown();\n },\n stop: stopSdk,\n trace: mxlTraceManager,\n user: userManager,\n };\n\n if (registerGlobally) {\n registry.register(sdkControl);\n }\n\n userSessionManager.recordSDKStartupDuration(\n perf.getNowMillis() - initSDKStart,\n );\n\n return sdkControl;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error.';\n diagLogger.error(`failed to initialize the SDK: ${message}`);\n return false;\n }\n};\n\nconst setupUser = ({ registerGlobally, sdkLocalStorage }: SetupUserArgs) => {\n const mxlUserManager = new MXLUserManager({\n storage: sdkLocalStorage,\n });\n\n if (registerGlobally) {\n user.setGlobalUserManager(mxlUserManager);\n }\n\n return mxlUserManager;\n};\n\nconst setupUserSession = ({\n limitManager,\n perf,\n registerGlobally,\n sdkLocalStorage,\n sdkSessionStorage,\n userSessionConfig,\n}: SetupUserSessionArgs) => {\n const mxlUserSessionManager = new MXLUserSessionManager({\n config: userSessionConfig,\n limitManager,\n perf,\n storage: sdkLocalStorage,\n tabStorage: sdkSessionStorage,\n visibilityDoc: window.document,\n });\n\n if (registerGlobally) {\n session.setGlobalUserSessionManager(mxlUserSessionManager);\n }\n\n return mxlUserSessionManager;\n};\n\nconst setupTraces = ({\n resource,\n userManager,\n spanExporters,\n spanProcessors = [],\n propagator = null,\n contextManager = null,\n attributeScrubbers,\n registerGlobally,\n mxlSpanProcessor,\n pageManager,\n}: SetupTracesArgs) => {\n const finalSpanProcessors: SpanProcessor[] = [\n ...spanProcessors,\n new BrowserSpanProcessor(),\n new MXLNetworkSpanProcessor(),\n new UserSpanProcessor({ userManager }),\n new PageSpanProcessor({ pageManager }),\n new SpanScrubProcessor({ attributeScrubbers }),\n ];\n\n spanExporters?.forEach((exporter) => {\n finalSpanProcessors.push(new BatchSpanProcessor(exporter));\n });\n\n if (mxlSpanProcessor) {\n finalSpanProcessors.push(mxlSpanProcessor);\n }\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanLimits: {\n // Session properties are stored as attributes on the session span, add a\n // Buffer here so that there is room for our internal attributes\n attributeCountLimit: DEFAULT_LIMITS.maxAllowed.session_property * 2,\n // Breadcrumbs are stored as events on the session span, add a\n // Buffer here so that there is room for our internal events\n eventCountLimit: DEFAULT_LIMITS.maxAllowed.breadcrumb * 2,\n },\n spanProcessors: finalSpanProcessors,\n });\n\n const mxlTraceManager = new MXLTraceManager({\n tracerProvider: registerGlobally ? undefined : tracerProvider,\n });\n\n if (registerGlobally) {\n trace.setGlobalTraceManager(mxlTraceManager);\n tracerProvider.register({\n // WebTracerProvider.register has different fallback behaviours depending on whether null or undefined is passed,\n // Be more explicit here and always supply a StackContextManager if the config did not specify one. If a user really\n // Wants to turn off context management they can pass a no-op manager explicitly:\n // https://github.com/open-telemetry/opentelemetry-js/blob/4f0b6285af24b71a9fa022755aaa3b6a63ae5033/packages/opentelemetry-sdk-trace-web/src/WebTracerProvider.ts#L39\n contextManager: contextManager || new StackContextManager(),\n propagator,\n });\n }\n\n return { mxlTraceManager, tracerProvider };\n};\n\nconst setupLogs = ({\n resource,\n userManager,\n logExporters,\n logProcessors,\n userSessionManager,\n limitManager,\n attributeScrubbers,\n registerGlobally,\n mxlLogProcessor,\n sdkLocalStorage,\n pageManager,\n visibilityDoc = window.document,\n}: SetupLogsArgs) => {\n const finalLogProcessors: LogRecordProcessor[] = [\n ...logProcessors,\n new UserSessionLogRecordProcessor({\n userSessionManager,\n }),\n new BrowserLogRecordProcessor(),\n new MXLLogRecordProcessor(),\n new UserLogRecordProcessor({ userManager }),\n new LogRecordScrubProcessor({ attributeScrubbers }),\n new PageLogRecordProcessor({ pageManager }),\n ];\n\n logExporters?.forEach((exporter) => {\n finalLogProcessors.push(new BatchLogRecordProcessor(exporter));\n });\n\n if (mxlLogProcessor) {\n finalLogProcessors.push(mxlLogProcessor);\n }\n\n const loggerProvider = new LoggerProvider({\n processors: finalLogProcessors,\n resource,\n });\n\n const mxlLogManager = new MXLLogManager({\n limitManager,\n loggerProvider: registerGlobally ? undefined : loggerProvider,\n storage: sdkLocalStorage,\n userSessionManager,\n visibilityDoc,\n });\n\n if (registerGlobally) {\n logs.setGlobalLoggerProvider(loggerProvider);\n log.setGlobalLogManager(mxlLogManager);\n }\n\n return { loggerProvider, mxlLogManager };\n};\n\nconst setupPage = ({\n useDocumentTitleAsPageLabel,\n registerGlobally,\n}: SetupPageArgs) => {\n const mxlPageManager = new MXLPageManager({\n useDocumentTitleAsPageLabel,\n });\n\n if (registerGlobally) {\n page.setGlobalPageManager(mxlPageManager);\n }\n\n return mxlPageManager;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,MAAa,WACX,EACE,OACA,YACA,WAAW,eAAe,EAC1B,gBAAgB,EAAE,EAClB,eAAe,EAAE,EACjB,iBAAiB,EAAE,EACnB,aAAa,MACb,8BACA,mBAAmB,EAAE,EACrB,iBAAiB,MACjB,gBAAgB,EAAE,EAClB,qBAAqB,EAAE,EACvB,kCAAkC,MAClC,+BAA+B,EAAE,EACjC,WAAW,aAAa,OACxB,kBACA,QACA,QACA,aAAa,KAAK,sBAAsB,EACtC,WAAW,WACZ,CAAC,EACF,yBAAyB,iCACzB,kBACA,mBAAmB,MACnB,6BAA6B,OAC7B,sBAAsB,IAAI,IAAI,CAAC,QAAQ,CAAC,EACxC,8BAA8B,MAC9B,qBAAqB,MACrB,QACA,aACA,gCAAgC,2CAChC,2BAA2B,oDACV,EAAE,KACE;AACvB,KAAI;AACF,MAAI,kBAAkB;GACpB,MAAM,cAAc,SAAS,YAAY;AACzC,OAAI,gBAAgB,MAAM;AACxB,eAAW,KACT,qFACD;AACD,WAAO;;;AAIX,OAAK,UAAU,IAAI,mBAAmB,EAAE,EACtC,UACD,CAAC;AAEF,MAAI,OAAO,WAAW,aAAa;AACjC,cAAW,KAAK,gDAAgD;AAChE,UAAO;;EAGT,MAAM,OAAO,IAAI,wBAAwB;EACzC,MAAM,eAAe,KAAK,cAAc;EACxC,MAAM,iBAAiB,cAAc,MAAM;EAC3C,MAAM,sBAAsB,mBAAmB,WAAW;EAE1D,MAAM,eAAe,mBAAmB,KAAA;AAExC,MAAI,CAAC,gBAAgB,CAAC,aAAa,UAAU,CAAC,cAAc,OAC1D,OAAM,IAAI,MACR,8EACD;AAGH,MAAI,oBAAoB,IAAI,OAAO,SAAS,SAAS,CACnD,OAAM,IAAI,MACR,gDAAgD,OAAO,SAAS,WACjE;AAGH,MAAI,gBAAgB,OAAO,sBAAsB,YAC/C,OAAM,IAAI,MACR,wFACD;EAGH,MAAM,YAAY,mBAAmB,KAAA,IAAY;EACjD,MAAM,kBAAkB,IAAI,kBAAkB;GAC5C,MAAM;GACN;GACA,SAAS,OAAO;GACjB,CAAC;EACF,MAAM,oBAAoB,IAAI,kBAAkB;GAC9C,MAAM;GACN;GACA,SAAS,OAAO;GACjB,CAAC;EAEF,MAAM,cAAc,UAAU;GAAE;GAAkB;GAAiB,CAAC;EACpE,MAAM,kBAAkB,YAAY,cAAc;AAClD,MAAI,gBAAgB,CAAC,gBACnB,OAAM,IAAI,MAAM,6CAA6C;EAG/D,MAAM,uBAAuB,EAC3B,GAAG,kBACJ;EAED,MAAM,uBACJ,mCACA,IAAI,wBAAwB;GAC1B,OAAO;GACP,YAAY;GACZ,eAAe;GACf,UAAU;GACV;GACA,SAAS;GACV,CAAC;AACC,uBAAqB,qBAAqB;EAE/C,MAAM,sBACJ,qBAAqB,gCAAgC,YAAY,WAC1D;GACL,MAAM,WAAW,aAAa,MAAM;AACpC,OAAI,SACF,QAAO;GAET,MAAM,UAAU,qBAAqB,WAAW,CAAC,aAAa,MAAM;AACpE,OAAI,QACF,QAAO;AAET,UAAA;MACE;EAEN,MAAM,+BAA+B,6BAA6B,EAChE,aAAa,qBACd,CAAC,CACC,MAAM,SAAS,CACf,MACC,kBAAkB;GAChB,YAAY;GACZ;GACA,oBAAoB;GACrB,CAAC,CACH;EAEH,MAAM,qBAAqB,IAAI,sBAAsB;GACnD;GACA,UAAU;GACV;GACD,CAAC;AAEF,MAAI,CAAC,mBAAmB,cAAc,EAAE;AACtC,cAAW,MAAM,4CAA4C;AAE7D,UAAO;;EAGT,MAAM,WAAW,oBAAoB;GACnC;GACA,MAAM;GACN,gBAAgB;GAChB;GACA;GACD,CAAC;EAEF,MAAM,eAAe,IAAI,gBAAgB,eAAe;EAExD,MAAM,0BAA+C,CACnD,GAAI,kCACA,6BAA6B,6BAA6B,GAC1D,EAAE,EACN,GAAG,mBACJ;EAED,MAAM,qBAAqB,iBAAiB;GAC1C;GACA;GACA;GACA;GACA;GACA,mBAAmB;IACjB;IACA;IACD;GACF,CAAC;EAEF,IAAI;EACJ,IAAI;AACJ,MAAI,cAAc;AAChB,sBAAmB,IAAI,mCAAmC;IACxD,8BACE,mBAAmB,gCAAgC;IACrD,UAAU,IAAI,iBAAiB;KAC7B,OAAO;KACP;KACA,QAAQ;KACT,CAAC;IACF;IACA;IACD,CAAC;AAEF,qBAAkB,IAAI,wBACpB,IAAI,eAAe;IACjB,OAAO;IACP;IACA,QAAQ;IACT,CAAC,CACH;;EAGH,MAAM,cAAc,UAAU;GAC5B;GACA;GACD,CAAC;EAEF,MAAM,EAAE,gBAAgB,oBAAoB,YAAY;GACtD,oBAAoB;GACpB;GACA;GACA;GACA,YAAY,WAAW,IAAI,8BAA8B,GAAG;GAC5D;GACA,UAAU;GACV;GACA;GACA;GACD,CAAC;AAEF,qBAAmB,kBAAkB,eAAe;EAEpD,MAAM,EAAE,gBAAgB,kBAAkB,UAAU;GAClD,oBAAoB;GACpB;GACA;GACA;GACA;GACA;GACA;GACA,UAAU;GACV;GACA;GACA;GACA,eAAe,OAAO;GACvB,CAAC;AAEF,qBAAmB,yBAAyB,OAAO;EAEnD,MAAM,0BACJ,OAAO,WAAW,eACjB,OACE,mCAAmC;EAExC,MAAM,EAAE,oBAAoB,6BAA6B,QAAQ,sBAC/D,6BAA6B;GAC3B,eAAe,qBAAqB,WAAW;GAC/C,wBAAwB,mBAAmB,wBAAwB;GACnE;GACA;GACD,CAAC;EAEJ,MAAM,gBAAgB,QACpB,gBACA,kBACA,mBACA,CAAC,2BACD,mBAAmB,wBAAwB,CAC5C;EAED,MAAM,sBACJ,iBACA,+BACA,mBAAmB,gCACd;GACC;GACA;GACA;GACA;GACD,GACD,KAAA;EAEN,MAAM,wCACJ,wBAAwB,KAAA,IACpB,+BACA;GACE,GAAG;GACH,MAAM,IAAI,IAAI,CACZ,GAAI,8BAA8B,QAAQ,EAAE,EAC5C,GAAG,oBACJ,CAAC;GACH;EAEP,MAAM,gBACJ,iBAAiB,kBAAkB,kBAC/B;GACE,OAAO;GACP,YAAY;GACZ;GACA,aAAa;GACb,WAAW,8BAA8B;IACvC;IACA,OAAO;IACP;IACA;IACD,CAAC;GACF,QAAQ;GACT,GACD,KAAA;EAEN,MAAM,qCACJ,6BAA6B,uCAAuC;GAClE;GACA;GACA,YAAY;GACZ;GACA,oBAAoB;GACpB;GACA,eAAe;GACf,gBAAgB;GAChB;GACD,CAAC;EAKJ,IAAI;EAEJ,IAAI;EACJ,IAAI;AAEJ,MAAI,CAAC,kBAAkB;GACrB,MAAM,0BAA0B,8BAA8B;AAC9D,2BAAwB,wBAAwB,MAC7C,oBACC,2BAA2B,sBAC9B;AAED,6BAA0B,yBAAyB;IACjD,kBAAkB,CAAC,GAAG,yBAAyB,GAAG,iBAAiB;IACnE;IACA;IACD,CAAC;AAEG,+BACH,sCACD,CAAC,MAAM,4BAA4B;AAClC,QAAI,wBAAwB,WAAW,EACrC;AAEF,qCAAiC,yBAAyB;KACxD,kBAAkB;KAClB;KACA;KACD,CAAC;KACF;SACG;GACL,MAAM,0BAA0B,6BAC9B,uCACA;IACE;IACA;IACA;IACA,oBAAoB;IACpB;IACA,eAAe;IACf,gBAAgB;IAChB;IACD,CACF;AACD,2BAAwB,wBAAwB,MAC7C,oBACC,2BAA2B,sBAC9B;AAED,6BAA0B,yBAAyB,EACjD,kBAAkB,CAAC,GAAG,yBAAyB,GAAG,iBAAiB,EACpE,CAAC;AAEG,+BACH,sCACD,CAAC,MAAM,4BAA4B;AAClC,QAAI,wBAAwB,WAAW,EACrC;AAEF,qCAAiC,yBAAyB,EACxD,kBAAkB,yBACnB,CAAC;KACF;;EAGJ,IAAI,iBAAiB;EACrB,IAAI,aAAa;EAEjB,MAAM,gBAAsB;AAC1B,OAAI,WACF;AAEF,gBAAa;AAEb,0BAAuB,SAAS;AAChC,8BAA2B;AAC3B,qCAAkC;AAClC,sBAAmB,WAAW;;EAGhC,MAAM,mBAAmB,wBACrB,wCAAwC,sBAAsB,GAC9D;AAEJ,aAAW,KAAK,mCAAmC;EAEnD,MAAM,aAAyB;GAC7B,OAAO,YAAY;AACjB,UAAM,eAAe,YAAY;AACjC,UAAM,eAAe,YAAY;;GAEnC,KAAK;GACL,MAAM;GACN,SAAS;GACT;GACA,mBAAmB,WAAsC;AACvD,yBAAqB,UAAU,OAAO;;GAExC,UAAU,YAAY;AACpB,QAAI,eACF;AAEF,qBAAiB;AACjB,aAAS;AACT,UAAM,eAAe,UAAU;AAC/B,UAAM,eAAe,UAAU;;GAEjC,MAAM;GACN,OAAO;GACP,MAAM;GACP;AAED,MAAI,iBACF,UAAS,SAAS,WAAW;AAG/B,qBAAmB,yBACjB,KAAK,cAAc,GAAG,aACvB;AAED,SAAO;UACA,OAAO;EACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,aAAW,MAAM,iCAAiC,UAAU;AAC5D,SAAO;;;AAIX,MAAM,aAAa,EAAE,kBAAkB,sBAAqC;CAC1E,MAAM,iBAAiB,IAAI,eAAe,EACxC,SAAS,iBACV,CAAC;AAEF,KAAI,iBACF,MAAK,qBAAqB,eAAe;AAG3C,QAAO;;AAGT,MAAM,oBAAoB,EACxB,cACA,MACA,kBACA,iBACA,mBACA,wBAC0B;CAC1B,MAAM,wBAAwB,IAAI,sBAAsB;EACtD,QAAQ;EACR;EACA;EACA,SAAS;EACT,YAAY;EACZ,eAAe,OAAO;EACvB,CAAC;AAEF,KAAI,iBACF,SAAQ,4BAA4B,sBAAsB;AAG5D,QAAO;;AAGT,MAAM,eAAe,EACnB,UACA,aACA,eACA,iBAAiB,EAAE,EACnB,aAAa,MACb,iBAAiB,MACjB,oBACA,kBACA,kBACA,kBACqB;CACrB,MAAM,sBAAuC;EAC3C,GAAG;EACH,IAAI,sBAAsB;EAC1B,IAAI,yBAAyB;EAC7B,IAAI,kBAAkB,EAAE,aAAa,CAAC;EACtC,IAAI,kBAAkB,EAAE,aAAa,CAAC;EACtC,IAAI,mBAAmB,EAAE,oBAAoB,CAAC;EAC/C;AAED,gBAAe,SAAS,aAAa;AACnC,sBAAoB,KAAK,IAAI,mBAAmB,SAAS,CAAC;GAC1D;AAEF,KAAI,iBACF,qBAAoB,KAAK,iBAAiB;CAG5C,MAAM,iBAAiB,IAAI,kBAAkB;EAC3C;EACA,YAAY;GAGV,qBAAqB,eAAe,WAAW,mBAAmB;GAGlE,iBAAiB,eAAe,WAAW,aAAa;GACzD;EACD,gBAAgB;EACjB,CAAC;CAEF,MAAM,kBAAkB,IAAI,gBAAgB,EAC1C,gBAAgB,mBAAmB,KAAA,IAAY,gBAChD,CAAC;AAEF,KAAI,kBAAkB;AACpB,UAAM,sBAAsB,gBAAgB;AAC5C,iBAAe,SAAS;GAKtB,gBAAgB,kBAAkB,IAAI,qBAAqB;GAC3D;GACD,CAAC;;AAGJ,QAAO;EAAE;EAAiB;EAAgB;;AAG5C,MAAM,aAAa,EACjB,UACA,aACA,cACA,eACA,oBACA,cACA,oBACA,kBACA,iBACA,iBACA,aACA,gBAAgB,OAAO,eACJ;CACnB,MAAM,qBAA2C;EAC/C,GAAG;EACH,IAAI,8BAA8B,EAChC,oBACD,CAAC;EACF,IAAI,2BAA2B;EAC/B,IAAI,uBAAuB;EAC3B,IAAI,uBAAuB,EAAE,aAAa,CAAC;EAC3C,IAAI,wBAAwB,EAAE,oBAAoB,CAAC;EACnD,IAAI,uBAAuB,EAAE,aAAa,CAAC;EAC5C;AAED,eAAc,SAAS,aAAa;AAClC,qBAAmB,KAAK,IAAI,wBAAwB,SAAS,CAAC;GAC9D;AAEF,KAAI,gBACF,oBAAmB,KAAK,gBAAgB;CAG1C,MAAM,iBAAiB,IAAI,eAAe;EACxC,YAAY;EACZ;EACD,CAAC;CAEF,MAAM,gBAAgB,IAAI,cAAc;EACtC;EACA,gBAAgB,mBAAmB,KAAA,IAAY;EAC/C,SAAS;EACT;EACA;EACD,CAAC;AAEF,KAAI,kBAAkB;AACpB,OAAK,wBAAwB,eAAe;AAC5C,MAAI,oBAAoB,cAAc;;AAGxC,QAAO;EAAE;EAAgB;EAAe;;AAG1C,MAAM,aAAa,EACjB,6BACA,uBACmB;CACnB,MAAM,iBAAiB,IAAI,eAAe,EACxC,6BACD,CAAC;AAEF,KAAI,iBACF,MAAK,qBAAqB,eAAe;AAG3C,QAAO"}
@@ -180,6 +180,12 @@ interface BaseSDKInitConfig {
180
180
  * **default**: http://mxl-basket.apps.ocpthikadev01.safaricom.net
181
181
  */
182
182
  apiURL?: string;
183
+ /**
184
+ * API key for session replay registration (`POST /replay` at session start).
185
+ *
186
+ * **default**: undefined
187
+ */
188
+ apiKey?: string;
183
189
  /**
184
190
  * DynamicSDKConfigManager is used to manage dynamic SDK configuration. The manager can connect to a
185
191
  * remote configuration service to fetch the latest configuration. By default, the SDK will use a config manager that
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
@@ -180,6 +180,12 @@ interface BaseSDKInitConfig {
180
180
  * **default**: http://mxl-basket.apps.ocpthikadev01.safaricom.net
181
181
  */
182
182
  apiURL?: string;
183
+ /**
184
+ * API key for session replay registration (`POST /replay` at session start).
185
+ *
186
+ * **default**: undefined
187
+ */
188
+ apiKey?: string;
183
189
  /**
184
190
  * DynamicSDKConfigManager is used to manage dynamic SDK configuration. The manager can connect to a
185
191
  * remote configuration service to fetch the latest configuration. By default, the SDK will use a config manager that
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4CiB,uBAAA;EACf,WAAA;EACA,UAAA,GAAa,OAAA;AAAA;AAAA,KAGH,mBAAA,GAAsB,OAAA,CAAQ,gBAAA;EALF,kEAOtC,UAAA;AAAA;AAAA,UAGe,gBAAA;EARc;;AAG/B;;;EAWE,WAAA;EAXgC;;;;;EAkBhC,+BAAA;EAb+B;;;EAkB/B,WAAA;EALA;;;;EAWA,+BAAA;EAK4B;;AAG9B;EAHE,MAAA,GAAS,mBAAA;AAAA;AAAA,UAGM,oBAAA;EACf,mBAAA,QAA2B,OAAA;EAC3B,SAAA,GAAY,MAAA,EAAQ,OAAA,CAAQ,gBAAA;EAC5B,SAAA,QAAiB,gBAAA;EAAgB;;;EAIjC,6BAAA,IAAiC,eAAA;AAAA;AAAA,UAGzB,iBAAA;EARoB;;;;;;EAe5B,UAAA;EAVyD;AAC1D;;;;EAgBC,WAAA;EAuBa;;;;;;EAfb,4BAAA,GAA+B,4BAAA;EAuFlB;;;;;;EA/Eb,gBAAA,GAAmB,eAAA;EAsKM;;;;;EA/JzB,UAAA,GAAa,iBAAA;EAPM;;;;;EAcnB,cAAA,GAAiB,cAAA;EAQN;;;;;;EAAX,QAAA,GAAW,QAAA;EAqCX;;;;;;;;EA3BA,cAAA,GAAiB,aAAA;EAsES;;;;;;;;EA5D1B,aAAA,GAAgB,kBAAA;EA8GhB;;;;;EAvGA,QAAA,GAAW,YAAA;EAiIa;AAAA;;;;;;;EAvHxB,kBAAA,GAAqB,iBAAA;EAyIN;;;AAAiB;;;;EAhIhC,+BAAA;EA6IgB;;;;;;;EApIhB,4BAAA;EAEA,UAAA,GAAa,UAAA;EAkIe;;AAAA;;;EA3H5B,gBAAA;EAqIiC;;;;;EA9HjC,MAAA;EA8HiC;;;;;;AAMnC;EA3HE,uBAAA,GAA0B,oBAAA;;;;;;;;EAS1B,gBAAA,GAAmB,OAAA,CAAQ,gBAAA;EAmH1B;;;;;EA5GD,gBAAA;EA8GyB;;;;;;;EArGzB,0BAAA;EA6GS;;;;;;;EApGT,mBAAA,GAAsB,GAAA;EA+FtB;;;;;EAxFA,2BAAA;EA0FmB;;;;;;;EAjFnB,kBAAA;EAqFM;;;;;;;AAQR;;;;;EA/EE,MAAA,GAAS,gBAAA;EAiFQ;;;AAGnB;EA9EE,6BAAA;;;;;EAMA,wBAAA;AAAA;AAAA,UAOQ,sBAAA;EAuE4B;;;;;;;EA/DpC,KAAA;EAEA,aAAA,GAAgB,YAAA;EAChB,YAAA,GAAe,iBAAA;AAAA;AAAA,UAGP,sBAAA;EAyD4B;;AAGtC;;;;EArDE,YAAA,GAAe,iBAAA,KAAsB,iBAAA;EAErC,KAAA;EACA,aAAA,GAAgB,YAAA;AAAA;AAAA,UAGR,uBAAA;EAsDY;;;;;;EA/CpB,aAAA,GAAgB,YAAA,KAAiB,YAAA;EAEjC,KAAA;EACA,YAAA,GAAe,iBAAA;AAAA;AAAA,KAGL,aAAA,GAAgB,iBAAA,IACzB,sBAAA,GAAyB,sBAAA,GAAyB,uBAAA;AAAA,UAEpC,UAAA;EACf,KAAA,QAAa,OAAA;EAkCG;EAhChB,IAAA;EACA,QAAA,QAAgB,OAAA;EAChB,gBAAA,GAAmB,MAAA,EAAQ,OAAA,CAAQ,gBAAA;EACnC,GAAA,EAAK,UAAA;EACL,KAAA,EAAO,YAAA;EACP,OAAA,EAAS,kBAAA;EACT,IAAA,EAAM,WAAA;EACN,IAAA,EAAM,WAAA;EA8BN;;;EA1BA,gBAAA,EAAkB,uBAAA;AAAA;AAAA,UAGH,aAAA;EACf,gBAAA;EACA,eAAA,EAAiB,OAAA;AAAA;AAAA,UAGF,oBAAA;EACf,YAAA,EAAc,oBAAA;EACd,IAAA,EADkC,kBAAA;EAElC,gBAAA;EACA,eAAA,EAAiB,iBAAA;EACjB,iBAAA,EAAmB,iBAAA;EACnB,iBAAA,EAAmB,iBAAA;AAAA;AAAA,UAGJ,eAAA;EACf,QAAA,EAAU,QAAA;EACV,WAAA,EAAa,WAAA;EACb,aAAA,GAAgB,YAAA;EAChB,cAAA,EAAgB,aAAA;EAChB,UAAA,GAAa,iBAAA;EACb,cAAA,GAAiB,cAAA;EACjB,kBAAA,EAAoB,iBAAA;EACpB,gBAAA,GAAmB,gBAAA;EACnB,gBAAA;EACA,gBAAA,GAAmB,aAAA;EACnB,WAAA,EAAa,WAAA;AAAA;AAAA,UAGE,aAAA;EACf,QAAA,EAAU,QAAA;EACV,WAAA,EAAa,WAAA;EACb,YAAA,GAAe,iBAAA;EACf,aAAA,EAAe,kBAAA;EACf,kBAAA,EAAoB,0BAAA;EACpB,YAAA,EAAc,oBAAA;EACd,kBAAA,EAAoB,iBAAA;EACpB,gBAAA;EACA,eAAA,GAAkB,uBAAA;EAClB,eAAA,EAAiB,OAAA;EACjB,WAAA,EAAa,WAAA;EACb,aAAA,GADwB,uBAAA;AAAA;AAAA,UAIT,aAAA;EACf,2BAAA;EACA,gBAAA;AAAA;AAAA,KAGG,wBAAA;AAAA,UAaK,0BAAA;EACR,UAAA,aAAuB,MAAA;AAAA;AAAA,UAGR,gCAAA;EACf,UAAA,GAAa,UAAA;EACb,kBAAA,GAAqB,0BAAA;EACrB,WAAA,GAAc,WAAA;EACd,YAAA,GAAe,oBAAA;EACf,aAAA;EACA,kBAAA;EACA,aAAA,GAAgB,gBAAA;EAChB,aAAA,GAAgB,aAAA;EAChB,cAAA,GAAiB,iBAAA;AAAA;AAAA,UAGF,4BAAA;EACf,IAAA,GAAO,GAAA,CAAI,wBAAA;EACX,SAAA,GAAY,kCAAA;EACZ,KAAA,GAAQ,yBAAA;EACR,WAAA,GAAc,4BAAA;EACd,IAAA,GAAO,uBAAA;EACP,aAAA,GAAgB,6BAAA;EAChB,gBAAA,GAAmB,gCAAA;EACnB,eAAA,GAAkB,+BAAA;EAClB,eAAA,GAAkB,iCAAA;EAClB,MAAA,GAAS,yBAAA;EAIT,OAAA,GAAU,0BAAA;EAOV,sCAAA,GAAyC,IAAA,CACvC,0BAAA;EAGF,iDAAA,GAAoD,IAAA,CAClD,mCAAA;EAKF,YAAA,GAAe,4BAAA;AAAA;AAAA,UAGA,kBAAA;EACf,QAAA,GAAW,GAAA,EAAK,UAAA;EAChB,KAAA;EACA,UAAA,QAAkB,UAAA;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/sdk/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safaricom-mxl/web-sdk",
3
- "version": "0.0.20",
3
+ "version": "0.0.21",
4
4
  "description": "MXL Web SDK",
5
5
  "keywords": [
6
6
  "instrumentation",