{"version":3,"file":"datadog.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///../../node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStateValidation.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/timer.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack:///../../node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/crypto.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/identifier.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/sampler.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","webpack:///../../node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack:///../../node_modules/@datadog/browser-core/esm/tools/taskQueue.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack:///../../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///../../node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/browser/windowOpenObservable.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///../../node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///../../node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","webpack:///../../node_modules/@datadog/browser-rum/esm/boot/lazyLoadRecorder.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///./rebrand/RebrandClientManager/client-scripts/datadog/index.js"],"sourcesContent":["var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { display } from '../tools/display';\nexport function makePublicApi(stub) {\n const publicApi = {\n version: \"6.2.1\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady(callback) {\n callback();\n },\n ...stub,\n };\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get() {\n return setDebugMode;\n },\n enumerable: false,\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n const existingGlobalVariable = global[name];\n if (existingGlobalVariable && !existingGlobalVariable.q && existingGlobalVariable.version) {\n display.warn('SDK is loaded more than once. This is unsupported and might have unexpected behavior.');\n }\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach((fn) => catchUserErrors(fn, 'onReady callback threw an error:')());\n }\n}\n//# sourceMappingURL=init.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, { once, capture, passive } = {}) {\n const listenerWithMonitor = monitor((event) => {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n const options = passive ? { capture, passive } : capture;\n // Use the window.EventTarget.prototype when possible to avoid wrong overrides (e.g: https://github.com/salesforce/lwc/issues/1824)\n const listenerTarget = window.EventTarget && eventTarget instanceof EventTarget ? window.EventTarget.prototype : eventTarget;\n const add = getZoneJsOriginalValue(listenerTarget, 'addEventListener');\n eventNames.forEach((eventName) => add.call(eventTarget, eventName, listenerWithMonitor, options));\n function stop() {\n const remove = getZoneJsOriginalValue(listenerTarget, 'removeEventListener');\n eventNames.forEach((eventName) => remove.call(eventTarget, eventName, listenerWithMonitor, options));\n }\n return {\n stop,\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay = 0, options) {\n const date = new Date();\n date.setTime(date.getTime() + expireDelay);\n const expires = `expires=${date.toUTCString()}`;\n const sameSite = options && options.crossSite ? 'none' : 'strict';\n const domain = options && options.domain ? `;domain=${options.domain}` : '';\n const secure = options && options.secure ? ';secure' : '';\n const partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = `${name}=${value};${expires};path=/;samesite=${sameSite}${domain}${secure}${partitioned}`;\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nlet initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_cookie_test_${generateUUID()}`;\n const testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n const isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n }\n catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nlet getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n const testCookieName = `dd_site_test_${generateUUID()}`;\n const testCookieValue = 'test';\n const domainLevels = window.location.hostname.split('.');\n let candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = `${domainLevels.pop()}.${candidateDomain}`;\n setCookie(testCookieName, testCookieValue, ONE_SECOND, { domain: candidateDomain });\n }\n deleteCookie(testCookieName, { domain: candidateDomain });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { Observable } from '../tools/observable';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { addEventListeners, addEventListener } from './addEventListener';\nexport const PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen',\n};\nexport function createPageExitObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopListeners } = addEventListeners(configuration, window, [\"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */, \"freeze\" /* DOM_EVENT.FREEZE */], (event) => {\n if (event.type === \"visibilitychange\" /* DOM_EVENT.VISIBILITY_CHANGE */ && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({ reason: PageExitReason.HIDDEN });\n }\n else if (event.type === \"freeze\" /* DOM_EVENT.FREEZE */) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({ reason: PageExitReason.FROZEN });\n }\n }, { capture: true });\n const stopBeforeUnloadListener = addEventListener(configuration, window, \"beforeunload\" /* DOM_EVENT.BEFORE_UNLOAD */, () => {\n observable.notify({ reason: PageExitReason.UNLOADING });\n }).stop;\n return () => {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return objectValues(PageExitReason).includes(reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { noop } from '../tools/utils/functionUtils';\nimport { addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n return { stop: noop };\n }\n const eventName = expectedReadyState === 'complete' ? \"load\" /* DOM_EVENT.LOAD */ : \"DOMContentLoaded\" /* DOM_EVENT.DOM_CONTENT_LOADED */;\n return addEventListener(configuration, window, eventName, callback, { once: true });\n}\nexport function asyncRunOnReadyState(configuration, expectedReadyState) {\n return new Promise((resolve) => {\n runOnReadyState(configuration, expectedReadyState, resolve);\n });\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport const DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input',\n};\nexport const TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled',\n};\nfunction isString(tag, tagName) {\n if (tag !== undefined && tag !== null && typeof tag !== 'string') {\n display.error(`${tagName} must be defined as a string`);\n return false;\n }\n return true;\n}\nfunction isDatadogSite(site) {\n if (site && typeof site === 'string' && !/(datadog|ddog|datad0g|dd0g)/.test(site)) {\n display.error(`Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.`);\n return false;\n }\n return true;\n}\nexport function isSampleRate(sampleRate, name) {\n if (sampleRate !== undefined && !isPercentage(sampleRate)) {\n display.error(`${name} Sample Rate should be a number between 0 and 100`);\n return false;\n }\n return true;\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e, _f;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (!isDatadogSite(initConfiguration.site) ||\n !isSampleRate(initConfiguration.sessionSampleRate, 'Session') ||\n !isSampleRate(initConfiguration.telemetrySampleRate, 'Telemetry') ||\n !isSampleRate(initConfiguration.telemetryConfigurationSampleRate, 'Telemetry Configuration') ||\n !isSampleRate(initConfiguration.telemetryUsageSampleRate, 'Telemetry Usage') ||\n !isString(initConfiguration.version, 'Version') ||\n !isString(initConfiguration.env, 'Env') ||\n !isString(initConfiguration.service, 'Service')) {\n return;\n }\n if (initConfiguration.trackingConsent !== undefined &&\n !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n return {\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n service: initConfiguration.service || undefined,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n trackAnonymousUser: (_f = initConfiguration.trackAnonymousUser) !== null && _f !== void 0 ? _f : true,\n storeContextsAcrossPages: !!initConfiguration.storeContextsAcrossPages,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: (30 * ONE_SECOND),\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE,\n ...computeTransportConfiguration(initConfiguration),\n };\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n track_anonymous_user: initConfiguration.trackAnonymousUser,\n session_persistence: initConfiguration.sessionPersistence,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n const buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build(api, payload) {\n const parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n return buildUrlWithParameters(parameters);\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType,\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n const path = `/api/v2/${trackType}`;\n const proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n const normalizedProxyUrl = normalizeUrl(proxy);\n return (parameters) => `${normalizedProxyUrl}?ddforward=${encodeURIComponent(`${path}?${parameters}`)}`;\n }\n if (typeof proxy === 'function') {\n return (parameters) => proxy({ path, parameters });\n }\n const host = buildEndpointHost(trackType, initConfiguration);\n return (parameters) => `https://${host}${path}?${parameters}`;\n}\nexport function buildEndpointHost(trackType, initConfiguration) {\n const { site = INTAKE_SITE_US1, internalAnalyticsSubdomain } = initConfiguration;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return `${internalAnalyticsSubdomain}.${INTAKE_SITE_US1}`;\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return `http-intake.logs.${site}`;\n }\n const domainParts = site.split('.');\n const extension = domainParts.pop();\n return `browser-intake-${domainParts.join('-')}.${extension}`;\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters({ clientToken, internalAnalyticsSubdomain }, trackType, configurationTags, api, { retry, encoding }) {\n const tags = [`sdk_version:${\"6.2.1\"}`, `api:${api}`].concat(configurationTags);\n if (retry) {\n tags.push(`retry_count:${retry.count}`, `retry_after:${retry.lastFailureStatus}`);\n }\n const parameters = [\n 'ddsource=browser',\n `ddtags=${encodeURIComponent(tags.join(','))}`,\n `dd-api-key=${clientToken}`,\n `dd-evp-origin-version=${encodeURIComponent(\"6.2.1\")}`,\n 'dd-evp-origin=browser',\n `dd-request-id=${generateUUID()}`,\n ];\n if (encoding) {\n parameters.push(`dd-evp-encoding=${encoding}`);\n }\n if (trackType === 'rum') {\n parameters.push(`batch_time=${timeStampNow()}`);\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","export const INTAKE_SITE_STAGING = 'datad0g.com';\nexport const INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport const INTAKE_SITE_US1 = 'datadoghq.com';\nexport const INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport const INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport const PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\nexport const INTAKE_URL_PARAMETERS = ['ddsource', 'ddtags'];\n//# sourceMappingURL=intakeSites.js.map","import { DOCS_ORIGIN, MORE_DETAILS, display } from '../../tools/display';\nexport const TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n const { env, service, version, datacenter } = configuration;\n const tags = [];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n return tags;\n}\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n const valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n if (rawValue.length > valueSizeLimit || hasForbiddenCharacters(rawValue)) {\n display.warn(`${key} value doesn't meet tag requirements and will be sanitized. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/tagging/#defining-tags`);\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n const sanitizedValue = rawValue.replace(/,/g, '_');\n return `${key}:${sanitizedValue}`;\n}\nfunction hasForbiddenCharacters(rawValue) {\n // Unicode property escapes is not supported in all browsers, so we use a try/catch.\n // Todo: Remove the try/catch when dropping support for Chrome 63 and Firefox 67\n // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#browser_compatibility\n if (!supportUnicodePropertyEscapes()) {\n return false;\n }\n // We use the Unicode property escapes to match any character that is a letter including other languages like Chinese, Japanese, etc.\n // p{Ll} matches a lowercase letter.\n // p{Lo} matches a letter that is neither uppercase nor lowercase (ex: Japanese characters).\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes\n return new RegExp('[^\\\\p{Ll}\\\\p{Lo}0-9_:./-]', 'u').test(rawValue);\n}\nexport function supportUnicodePropertyEscapes() {\n try {\n new RegExp('[\\\\p{Ll}]', 'u');\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n//# sourceMappingURL=tags.js.map","import { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, INTAKE_URL_PARAMETERS } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n const site = initConfiguration.site || INTAKE_SITE_US1;\n const tags = buildTags(initConfiguration);\n const endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n const replicaConfiguration = computeReplicaConfiguration(initConfiguration, tags);\n return {\n replica: replicaConfiguration,\n site,\n ...endpointBuilders,\n };\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags),\n };\n}\nfunction computeReplicaConfiguration(initConfiguration, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n const replicaConfiguration = {\n ...initConfiguration,\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken,\n };\n const replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags),\n };\n return { applicationId: initConfiguration.replica.applicationId, ...replicaEndpointBuilders };\n}\nexport function isIntakeUrl(url) {\n // check if tags is present in the query string\n return INTAKE_URL_PARAMETERS.every((param) => url.includes(param));\n}\n//# sourceMappingURL=transportConfiguration.js.map","export function getConnectivity() {\n var _a;\n const navigator = window.navigator;\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,\n };\n}\n//# sourceMappingURL=connectivity.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport const NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError({ stackTrace, originalError, handlingStack, componentStack, startClocks, nonErrorPrefix, source, handling, }) {\n const isErrorInstance = isError(originalError);\n const message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n const stack = hasUsableStack(isErrorInstance, stackTrace)\n ? toStackTraceString(stackTrace)\n : NO_ERROR_STACK_PRESENT_MESSAGE;\n const causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n const type = stackTrace ? stackTrace.name : undefined;\n const fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks,\n source,\n handling,\n handlingStack,\n componentStack,\n originalError,\n type,\n message,\n stack,\n causes,\n fingerprint,\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name)\n ? stackTrace.message\n : !isErrorInstance\n ? `${nonErrorPrefix} ${jsonStringify(sanitize(originalError))}`\n : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return isError(originalError) && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isError(error) {\n return error instanceof Error || Object.prototype.toString.call(error) === '[object Error]';\n}\nexport function flattenErrorCauses(error, parentSource) {\n let currentError = error;\n const causes = [];\n while (isError(currentError === null || currentError === void 0 ? void 0 : currentError.cause) && causes.length < 10) {\n const stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace),\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export const ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report',\n};\n//# sourceMappingURL=error.types.js.map","import { ONE_HOUR, ONE_MINUTE, ONE_YEAR } from '../../tools/utils/timeUtils';\nexport const SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport const SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\nexport const SESSION_COOKIE_EXPIRATION_DELAY = ONE_YEAR;\nexport const SessionPersistence = {\n COOKIE: 'cookie',\n LOCAL_STORAGE: 'local-storage',\n};\n//# sourceMappingURL=sessionConstants.js.map","export const SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","export const SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nexport const SESSION_ENTRY_SEPARATOR = '&';\nexport function isValidSessionString(sessionString) {\n return (!!sessionString &&\n (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString)));\n}\n//# sourceMappingURL=sessionStateValidation.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { generateAnonymousId } from '../user';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { isValidSessionString, SESSION_ENTRY_REGEXP, SESSION_ENTRY_SEPARATOR } from './sessionStateValidation';\nexport const EXPIRED = '1';\nexport function getExpiredSessionState(previousSessionState, configuration) {\n const expiredSessionState = {\n isExpired: EXPIRED,\n };\n if (configuration.trackAnonymousUser) {\n if (previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId) {\n expiredSessionState.anonymousId = previousSessionState === null || previousSessionState === void 0 ? void 0 : previousSessionState.anonymousId;\n }\n else {\n expiredSessionState.anonymousId = generateAnonymousId();\n }\n }\n return expiredSessionState;\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return ((sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) &&\n (sessionState.expire === undefined || dateNow() < Number(sessionState.expire)));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return (objectEntries(session)\n // we use `aid` as a key for anonymousId\n .map(([key, value]) => (key === 'anonymousId' ? `aid=${value}` : `${key}=${value}`))\n .join(SESSION_ENTRY_SEPARATOR));\n}\nexport function toSessionState(sessionString) {\n const session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach((entry) => {\n const matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n const [, key, value] = matches;\n if (key === 'aid') {\n // we use `aid` as a key for anonymousId\n session.anonymousId = value;\n }\n else {\n session[key] = value;\n }\n }\n });\n }\n return session;\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport const OLD_SESSION_COOKIE_NAME = '_dd';\nexport const OLD_RUM_COOKIE_NAME = '_dd_r';\nexport const OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport const RUM_SESSION_KEY = 'rum';\nexport const LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n const sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n const oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n const oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n const oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n const session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_COOKIE_EXPIRATION_DELAY, SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY, SessionPersistence, } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n const cookieOptions = buildCookieOptions(initConfiguration);\n return areCookiesAuthorized(cookieOptions) ? { type: SessionPersistence.COOKIE, cookieOptions } : undefined;\n}\nexport function initCookieStrategy(configuration, cookieOptions) {\n const cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n expireSession: (sessionState) => expireSessionCookie(cookieOptions, sessionState, configuration),\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction persistSessionCookie(options) {\n return (session) => {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n };\n}\nfunction expireSessionCookie(options, sessionState, configuration) {\n const expiredSessionState = getExpiredSessionState(sessionState, configuration);\n // we do not extend cookie expiration date\n setCookie(SESSION_STORE_KEY, toSessionString(expiredSessionState), configuration.trackAnonymousUser ? SESSION_COOKIE_EXPIRATION_DELAY : SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n const sessionString = getCookie(SESSION_STORE_KEY);\n const sessionState = toSessionState(sessionString);\n return sessionState;\n}\nexport function buildCookieOptions(initConfiguration) {\n const cookieOptions = {};\n cookieOptions.secure =\n !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { SessionPersistence } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nconst LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n const id = generateUUID();\n const testKey = `${LOCAL_STORAGE_TEST_KEY}${id}`;\n localStorage.setItem(testKey, id);\n const retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? { type: SessionPersistence.LOCAL_STORAGE } : undefined;\n }\n catch (_a) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy(configuration) {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: (sessionState) => expireSessionFromLocalStorage(sessionState, configuration),\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n const sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage(previousSessionState, configuration) {\n persistInLocalStorage(getExpiredSessionState(previousSessionState, configuration));\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport const LOCK_RETRY_DELAY = 10;\nexport const LOCK_MAX_TRIES = 100;\nconst bufferedOperations = [];\nlet ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries = 0) {\n var _a;\n const { isLockEnabled, persistSession, expireSession } = sessionStoreStrategy;\n const persistWithLock = (session) => persistSession({ ...session, lock: currentLock });\n const retrieveStore = () => {\n const session = sessionStoreStrategy.retrieveSession();\n const lock = session.lock;\n if (session.lock) {\n delete session.lock;\n }\n return {\n session,\n lock,\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n let currentLock;\n let currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = generateUUID();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n let processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession(processedSession);\n }\n else {\n expandSessionState(processedSession);\n if (isLockEnabled) {\n persistWithLock(processedSession);\n }\n else {\n persistSession(processedSession);\n }\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(() => {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n const nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { display } from '../../tools/display';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState, isSessionStarted, } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\nimport { SessionPersistence } from './sessionConstants';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Selects the correct session store strategy type based on the configuration and storage\n * availability.\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration);\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy();\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n }\n default:\n display.error(`Invalid session persistence '${String(initConfiguration.sessionPersistence)}'`);\n }\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, configuration, productKey, computeSessionState) {\n const renewObservable = new Observable();\n const expireObservable = new Observable();\n const sessionStateUpdateObservable = new Observable();\n const sessionStoreStrategy = sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(configuration, sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy(configuration);\n const { expireSession } = sessionStoreStrategy;\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n let sessionCache;\n startSession();\n const { throttled: throttledExpandOrRenewSession, cancel: cancelExpandOrRenewSession } = throttle(() => {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n const synchronizedSession = synchronizeSession(sessionState);\n expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: (sessionState) => {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY);\n function expandSession() {\n processSessionStoreOperations({\n process: (sessionState) => (hasSessionInCache() ? synchronizeSession(sessionState) : undefined),\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations({\n process: (sessionState) => isSessionInExpiredState(sessionState) ? getExpiredSessionState(sessionState, configuration) : undefined,\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState(sessionState, configuration);\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n }\n else {\n sessionStateUpdateObservable.notify({ previousState: sessionCache, newState: sessionState });\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: (sessionState) => {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState(sessionState, configuration);\n }\n },\n after: (sessionState) => {\n sessionCache = sessionState;\n },\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n const { trackingType, isTracked } = computeSessionState(sessionState[productKey]);\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState(sessionCache, configuration);\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations({\n process: (sessionState) => ({ ...sessionState, ...partialSessionState }),\n after: synchronizeSession,\n }, sessionStoreStrategy);\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: () => sessionCache,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: () => {\n cancelExpandOrRenewSession();\n expireSession(sessionCache);\n synchronizeSession(getExpiredSessionState(sessionCache, configuration));\n },\n stop: () => {\n clearInterval(watchSessionTimeoutId);\n },\n updateSessionState,\n };\n}\n//# sourceMappingURL=sessionStore.js.map","export const TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage',\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { createBoundedBuffer } from '../../tools/boundedBuffer';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nconst ALLOWED_FRAME_URLS = [\n 'https://www.datadoghq-browser-agent.com',\n 'https://www.datad0g-browser-agent.com',\n 'https://d3uc069fcn7uxw.cloudfront.net',\n 'https://d20xtzwzcl0ceb.cloudfront.net',\n 'http://localhost',\n '',\n];\nconst TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\n// eslint-disable-next-line local-rules/disallow-side-effects\nlet preStartTelemetryBuffer = createBoundedBuffer();\nlet onRawTelemetryEventCollected = (event) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event));\n};\nexport function startTelemetry(telemetryService, configuration) {\n let contextProvider;\n const observable = new Observable();\n const alreadySentEvents = new Set();\n const telemetryEnabled = !TELEMETRY_EXCLUDED_SITES.includes(configuration.site) && performDraw(configuration.telemetrySampleRate);\n const telemetryEnabledPerType = {\n [TelemetryType.log]: telemetryEnabled,\n [TelemetryType.configuration]: telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate),\n [TelemetryType.usage]: telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate),\n };\n const runtimeEnvInfo = getRuntimeEnvInfo();\n onRawTelemetryEventCollected = (rawEvent) => {\n const stringifiedEvent = jsonStringify(rawEvent);\n if (telemetryEnabledPerType[rawEvent.type] &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)) {\n const event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event);\n sendToExtension('telemetry', event);\n alreadySentEvents.add(stringifiedEvent);\n }\n };\n startMonitorErrorCollection(addTelemetryError);\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: \"6.2.1\",\n source: 'browser',\n _dd: {\n format_version: 2,\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity(),\n sdk_setup: \"npm\",\n }),\n experimental_features: Array.from(getExperimentalFeatures()),\n }, contextProvider !== undefined ? contextProvider() : {});\n }\n return {\n setContextProvider: (provider) => {\n contextProvider = provider;\n },\n observable,\n enabled: telemetryEnabled,\n };\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self,\n };\n}\nexport function startFakeTelemetry() {\n const events = [];\n onRawTelemetryEventCollected = (event) => {\n events.push(event);\n };\n return events;\n}\n// need to be called after telemetry context is provided and observers are registered\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain();\n}\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer();\n onRawTelemetryEventCollected = (event) => {\n preStartTelemetryBuffer.add(() => onRawTelemetryEventCollected(event));\n };\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n onRawTelemetryEventCollected({\n type: TelemetryType.log,\n message,\n status: \"debug\" /* StatusType.debug */,\n ...context,\n });\n}\nexport function addTelemetryError(e, context) {\n onRawTelemetryEventCollected({\n type: TelemetryType.log,\n status: \"error\" /* StatusType.error */,\n ...formatError(e),\n ...context,\n });\n}\nexport function addTelemetryConfiguration(configuration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration,\n });\n}\nexport function addTelemetryUsage(usage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage,\n });\n}\nexport function formatError(e) {\n if (isError(e)) {\n const stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace)),\n },\n message: stackTrace.message,\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE,\n },\n message: `${\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */} ${jsonStringify(e)}`,\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter((frame) => !frame.url || ALLOWED_FRAME_URLS.some((allowedFrameUrl) => frame.url.startsWith(allowedFrameUrl)));\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { Observable } from '../tools/observable';\nexport const TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted',\n};\nexport function createTrackingConsentState(currentConsent) {\n const observable = new Observable();\n return {\n tryToInit(trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update(trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted() {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable,\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n const user = { ...newUser };\n const keys = ['id', 'name', 'email'];\n keys.forEach((key) => {\n if (key in user) {\n /* eslint-disable @typescript-eslint/no-base-to-string */\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n const isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}\nexport function generateAnonymousId() {\n return Math.floor(Math.random() * Math.pow(36, 10))\n .toString(36)\n .padStart(10, '0');\n}\n//# sourceMappingURL=user.js.map","import { removeItem } from './utils/arrayUtils';\nconst BUFFER_LIMIT = 500;\nexport function createBoundedBuffer() {\n const buffer = [];\n const add = (callback) => {\n const length = buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n buffer.splice(0, 1);\n }\n };\n const remove = (callback) => {\n removeItem(buffer, callback);\n };\n const drain = (arg) => {\n buffer.forEach((callback) => callback(arg));\n buffer.length = 0;\n };\n return {\n add,\n remove,\n drain,\n };\n}\n//# sourceMappingURL=boundedBuffer.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return (...args) => {\n try {\n return fn(...args);\n }\n catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport const ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport const globalConsole = console;\nexport const originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach((name) => {\n originalConsoleMethods[name] = globalConsole[name];\n});\nconst PREFIX = 'Datadog Browser SDK:';\nexport const display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX),\n};\nexport const DOCS_ORIGIN = 'https://docs.datadoghq.com';\nexport const DOCS_TROUBLESHOOTING = `${DOCS_ORIGIN}/real_user_monitoring/browser/troubleshooting`;\nexport const MORE_DETAILS = 'More details:';\n//# sourceMappingURL=display.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\nimport { objectHasValue } from './utils/objectUtils';\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n ExperimentalFeature[\"REMOTE_CONFIGURATION\"] = \"remote_configuration\";\n ExperimentalFeature[\"ACTION_NAME_MASKING\"] = \"action_name_masking\";\n ExperimentalFeature[\"CONSISTENT_TRACE_SAMPLING\"] = \"consistent_trace_sampling\";\n ExperimentalFeature[\"MISSING_URL_CONTEXT_TELEMETRY\"] = \"missing_url_context_telemetry\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nconst enabledExperimentalFeatures = new Set();\nexport function initFeatureFlags(enableExperimentalFeatures) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(enableExperimentalFeatures.filter((flag) => objectHasValue(ExperimentalFeature, flag)));\n }\n}\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get() {\n return this;\n },\n configurable: true,\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n let globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n }\n else if (typeof window === 'object') {\n globalObject = window;\n }\n else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n const browserWindow = getGlobalObject();\n let original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { createHandlingStack } from './stackTrace/handlingStack';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {\n let original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (method in targetPrototype && method.startsWith('on')) {\n original = noop;\n }\n else {\n return { stop: noop };\n }\n }\n let stopped = false;\n const instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments);\n }\n const parameters = Array.from(arguments);\n let postCallCallback;\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters,\n onPostCall: (callback) => {\n postCallCallback = callback;\n },\n handlingStack: computeHandlingStack ? createHandlingStack() : undefined,\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n targetPrototype[method] = instrumentation;\n return {\n stop: () => {\n stopped = true;\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original;\n }\n },\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return { stop: noop };\n }\n const stoppedInstrumentation = noop;\n let instrumentation = (target, value) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n const instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n });\n return {\n stop: () => {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n },\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker = createCircularReferenceChecker()) {\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof RegExp) {\n const flags = source.flags ||\n // old browsers compatibility\n [\n source.global ? 'g' : '',\n source.ignoreCase ? 'i' : '',\n source.multiline ? 'm' : '',\n source.sticky ? 'y' : '',\n source.unicode ? 'u' : '',\n ].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n }\n else if (Array.isArray(source)) {\n const merged = Array.isArray(destination) ? destination : [];\n for (let i = 0; i < source.length; ++i) {\n merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker);\n }\n return merged;\n }\n const merged = getType(destination) === 'object' ? destination : {};\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine(...sources) {\n let destination;\n for (const source of sources) {\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n const set = new WeakSet();\n return {\n hasAlreadyBeenSeen(value) {\n const has = set.has(value);\n if (!has) {\n set.add(value);\n }\n return has;\n },\n };\n }\n const array = [];\n return {\n hasAlreadyBeenSeen(value) {\n const has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n },\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from './display';\nlet onMonitorErrorCollected;\nlet debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n }\n catch (e) {\n monitorError(e);\n }\n}\nexport function monitorError(e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n }\n catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n}\nexport function displayIfDebugEnabled(...args) {\n if (debugMode) {\n display.error('[MONITOR]', ...args);\n }\n}\n//# sourceMappingURL=monitor.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class Observable {\n constructor(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n subscribe(f) {\n this.observers.push(f);\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n return {\n unsubscribe: () => {\n this.observers = this.observers.filter((other) => f !== other);\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe();\n }\n },\n };\n }\n notify(data) {\n this.observers.forEach((observer) => observer(data));\n }\n}\nexport function mergeObservables(...observables) {\n return new Observable((globalObservable) => {\n const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n//# sourceMappingURL=observable.js.map","import { setTimeout, clearTimeout } from './timer';\nimport { monitor } from './monitor';\nimport { dateNow } from './utils/timeUtils';\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback, opts) {\n // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n const id = window.requestIdleCallback(monitor(callback), opts);\n return () => window.cancelIdleCallback(id);\n }\n return requestIdleCallbackShim(callback);\n}\nexport const MAX_TASK_TIME = 50;\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback) {\n const start = dateNow();\n const timeoutId = setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),\n });\n }, 0);\n return () => clearTimeout(timeoutId);\n}\n//# sourceMappingURL=requestIdleCallback.js.map","export function sendToExtension(type, payload) {\n const callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({ type, payload });\n }\n}\n//# sourceMappingURL=sendToExtension.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n const restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n }\n catch (_a) {\n return '';\n }\n finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n const object = value;\n const objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return () => {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nconst SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nconst JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nconst KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT) {\n // Unbind any toJSON function we may have on [] or {} prototypes\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n const containerQueue = [];\n const visitedObjectsWithPath = new WeakMap();\n const sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n const serializedSanitizedData = JSON.stringify(sanitizedData);\n let accumulatedCharacterCount = serializedSanitizedData ? serializedSanitizedData.length : 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n const containerToProcess = containerQueue.shift();\n let separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (let key = 0; key < containerToProcess.source.length; key++) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n }\n else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n else {\n for (const key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n const targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount +=\n JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n const sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n const sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n const sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return `[Reference seen at ${visitedObjectsWithPath.get(sourceAsObject)}]`;\n }\n // Add processed source to queue\n const currentPath = key !== undefined ? `${parentPath}.${key}` : parentPath;\n const target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({ source: sourceToSanitize, target, path: currentPath });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return `[BigInt] ${value.toString()}`;\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return `[Function] ${value.name || 'unknown'}`;\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return `[Symbol] ${value.description || value.toString()}`;\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n */\nfunction sanitizeObjects(value) {\n try {\n if (value instanceof Event) {\n return sanitizeEvent(value);\n }\n if (value instanceof RegExp) {\n return `[RegExp] ${value.toString()}`;\n }\n // Handle all remaining object types in a generic way\n const result = Object.prototype.toString.call(value);\n const match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return `[${match[1]}]`;\n }\n }\n catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\nfunction sanitizeEvent(event) {\n return {\n type: event.type,\n isTrusted: event.isTrusted,\n currentTarget: event.currentTarget ? sanitizeObjects(event.currentTarget) : null,\n target: event.target ? sanitizeObjects(event.target) : null,\n };\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n const object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n }\n catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(`The data provided has been ${changeType} as it is over the limit of ${maxCharacterCount} characters:`, source);\n}\n//# sourceMappingURL=sanitize.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nconst UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n const stack = [];\n let stackProperty = tryToGetString(ex, 'stack');\n const exString = String(ex);\n if (stackProperty && stackProperty.startsWith(exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach((line) => {\n const stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack,\n };\n}\nconst fileUrl = '((?:file|https?|blob|chrome-extension|electron|native|eval|webpack|snippet||\\\\w+\\\\.|\\\\/).*?)';\nconst filePosition = '(?::(\\\\d+))';\nconst CHROME_LINE_RE = new RegExp(`^\\\\s*at (.*?) ?\\\\(${fileUrl}${filePosition}?${filePosition}?\\\\)?\\\\s*$`, 'i');\nconst CHROME_EVAL_RE = new RegExp(`\\\\((\\\\S*)${filePosition}${filePosition}\\\\)`);\nfunction parseChromeLine(line) {\n const parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n const submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined,\n };\n}\nconst CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(`^\\\\s*at ?${fileUrl}${filePosition}?${filePosition}??\\\\s*$`, 'i');\nfunction parseChromeAnonymousLine(line) {\n const parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1],\n };\n}\nconst WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n const parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2],\n };\n}\nconst GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n const parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n const submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3],\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n const value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n const stack = [{ url, column, line }];\n const { name, message } = tryToParseMessage(messageObj);\n return {\n name,\n message,\n stack,\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nconst ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n let name;\n let message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n [, name, message] = ERROR_TYPES_RE.exec(messageObj);\n }\n return { name, message };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n const internalFramesToSkip = 2;\n const error = new Error();\n let formattedStack;\n callMonitored(() => {\n const stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n let result = formatErrorMessage(stack);\n stack.stack.forEach((frame) => {\n const func = frame.func === '?' ? '' : frame.func;\n const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : '';\n const line = frame.line ? `:${frame.line}` : '';\n const column = frame.line && frame.column ? `:${frame.column}` : '';\n result += `\\n at ${func}${args} @ ${frame.url}${line}${column}`;\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return `${stack.name || 'Error'}: ${stack.message}`;\n}\n//# sourceMappingURL=handlingStack.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","export function removeDuplicates(array) {\n const set = new Set();\n array.forEach((item) => set.add(item));\n return Array.from(set);\n}\nexport function removeItem(array, item) {\n const index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrayUtils.js.map","export function isChromium() {\n return detectBrowserCached() === 0 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 1 /* Browser.SAFARI */;\n}\nlet browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : (browserCache = detectBrowser());\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow = window) {\n var _a;\n const userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 0 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 ||\n (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))) {\n return 1 /* Browser.SAFARI */;\n }\n return 2 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","export const ONE_KIBI_BYTE = 1024;\nexport const ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nconst HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n const length = buffers.reduce((total, buffer) => total + buffer.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n const needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n const needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n let inWaitPeriod = false;\n let pendingExecutionWithParameters;\n let pendingTimeoutId;\n return {\n throttled: (...parameters) => {\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn(...parameters);\n }\n else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(() => {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn(...pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: () => {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n },\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() { }\n//# sourceMappingURL=functionUtils.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","export function shallowClone(object) {\n return { ...object };\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some((key) => object[key] === value);\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n const newObject = {};\n for (const key of Object.keys(object)) {\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","export function findLast(array, predicate) {\n for (let i = array.length - 1; i >= 0; i -= 1) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\n// Keep the following wrapper functions as it can be mangled and will result in smaller bundle size that using\n// the native Object.values and Object.entries directly\nexport function objectValues(object) {\n return Object.values(object);\n}\nexport function objectEntries(object) {\n return Object.entries(object);\n}\n//# sourceMappingURL=polyfills.js.map","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n }\n catch (_a) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n//# sourceMappingURL=responseUtils.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ ((Math.random() * 16) >> (parseInt(placeholder, 10) / 4))).toString(16)\n : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, generateUUID);\n}\nconst COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n }\n else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n const result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n while (true) {\n const match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n }\n else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix = '') {\n const lastChar = candidate.charCodeAt(length - 1);\n const isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n const correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return `${candidate.slice(0, correctedLength)}${suffix}`;\n}\n//# sourceMappingURL=stringUtils.js.map","import { isNumber, round } from './numberUtils';\nexport const ONE_SECOND = 1000;\nexport const ONE_MINUTE = 60 * ONE_SECOND;\nexport const ONE_HOUR = 60 * ONE_MINUTE;\nexport const ONE_DAY = 24 * ONE_HOUR;\nexport const ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return { relative, timeStamp: getCorrectedTimeStamp(relative) };\n}\nexport function timeStampToClocks(timeStamp) {\n return { relative: getRelativeTime(timeStamp), timeStamp };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n const correctedOrigin = (dateNow() - performance.now());\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return { relative: relativeNow(), timeStamp: timeStampNow() };\n}\nexport function clocksOrigin() {\n return { relative: 0, timeStamp: getNavigationStart() };\n}\nexport function elapsed(start, end) {\n return (end - start);\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n// Get the time since the navigation was started.\nexport function getRelativeTime(timestamp) {\n return (timestamp - getNavigationStart());\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nlet navigationStart;\n/**\n * Notes: this does not use `performance.timeOrigin` because:\n * - It doesn't seem to reflect the actual time on which the navigation has started: it may be much farther in the past,\n * at least in Firefox 71. (see: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926)\n * - It is not supported in Safari <15\n */\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\n//# sourceMappingURL=timeUtils.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n }\n catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n const pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : `/${pathname}`;\n}\nexport function buildUrl(url, base) {\n const supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n }\n catch (error) {\n throw new Error(`Failed to construct URL: ${String(error)} ${jsonStringify({ url, base })}`);\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(`Invalid URL: '${url}'`);\n }\n let doc = document;\n const anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n const baseElement = doc.createElement('base');\n baseElement.href = base;\n doc.head.appendChild(baseElement);\n doc.body.appendChild(anchorElement);\n }\n anchorElement.href = url;\n return anchorElement;\n}\nconst originalURL = URL;\nlet isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n const url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n }\n catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n const eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities() {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel() {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts() {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send(eventType, event, viewId) {\n const view = viewId ? { id: viewId } : undefined;\n eventBridgeGlobal.send(JSON.stringify({ eventType, event, view }));\n },\n };\n}\nexport function bridgeSupports(capability) {\n const bridge = getEventBridge();\n return !!bridge && bridge.getCapabilities().includes(capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) { currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname; }\n const bridge = getEventBridge();\n return (!!bridge &&\n bridge\n .getAllowedWebViewHosts()\n .some((allowedHost) => currentHost === allowedHost || currentHost.endsWith(`.${allowedHost}`)));\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport const MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport const MAX_ONGOING_REQUESTS = 32;\nexport const MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport const MAX_BACKOFF_TIME = ONE_MINUTE;\nexport const INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: () => retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError),\n onFailure: () => {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }\n else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(() => {\n const payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: () => {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n },\n onFailure: () => {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n },\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, { onSuccess, onFailure }) {\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, (response) => {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n }\n else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status,\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: `Reached max ${trackType} events size queued for upload: ${MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE}MiB`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n state.queueFullReported = true;\n }\n const previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return (response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n isServerError(response.status)));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false,\n };\n}\nfunction newPayloadQueue() {\n const queue = [];\n return {\n bytesCount: 0,\n enqueue(payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first() {\n return queue[0];\n },\n dequeue() {\n const payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size() {\n return queue.length;\n },\n isFull() {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n },\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle(payload) {\n return (this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS));\n },\n add(payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove(payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n },\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(endpointBuilder, bytesLimit, reportError) {\n const retryState = newRetryState();\n const sendStrategyForRetry = (payload, onResponse) => fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse);\n return {\n send: (payload) => {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: (payload) => {\n sendBeaconStrategy(endpointBuilder, bytesLimit, payload);\n },\n };\n}\nfunction sendBeaconStrategy(endpointBuilder, bytesLimit, payload) {\n const canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n const beaconUrl = endpointBuilder.build('beacon', payload);\n const isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n }\n catch (e) {\n reportBeaconError(e);\n }\n }\n const xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(xhrUrl, payload.data);\n}\nlet hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(endpointBuilder, bytesLimit, payload, onResponse) {\n const canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n const fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, { method: 'POST', body: payload.data, keepalive: true, mode: 'cors' }).then(monitor((response) => onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: response.status, type: response.type })), monitor(() => {\n const xhrUrl = endpointBuilder.build('xhr', payload);\n // failed to queue the request\n sendXHR(xhrUrl, payload.data, onResponse);\n }));\n }\n else {\n const xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(xhrUrl, payload.data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n }\n catch (_a) {\n return false;\n }\n}\nexport function sendXHR(url, data, onResponse) {\n const request = new XMLHttpRequest();\n request.open('POST', url, true);\n if (data instanceof Blob) {\n // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n // automatically, so the intake request ends up being rejected with an HTTP status 415\n // Defining the header manually fixes this issue.\n request.setRequestHeader('Content-Type', data.type);\n }\n addEventListener(\n // allow untrusted event to acount for synthetic event dispatched by third party xhr wrapper\n { allowUntrustedEvents: true }, request, 'loadend', () => {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({ status: request.status });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true,\n });\n request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { DOCS_TROUBLESHOOTING, MORE_DETAILS, display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport const CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport const CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport const BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */) {\n const customerDataTrackers = new Map();\n let alreadyWarned = false;\n function checkCustomerDataLimit(initialBytesCount = 0) {\n if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n return;\n }\n const bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */\n ? CUSTOMER_DATA_BYTES_LIMIT\n : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n let bytesCount = initialBytesCount;\n customerDataTrackers.forEach((tracker) => {\n bytesCount += tracker.getBytesCount();\n });\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit);\n alreadyWarned = true;\n }\n }\n return {\n /**\n * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n * bytes count will be counted independently from other detached trackers.\n *\n * This is particularly useful when we don't know when the tracker will be unused, so we don't\n * leak memory (ex: when used in Logger instances).\n */\n createDetachedTracker: () => {\n const tracker = createCustomerDataTracker(() => checkCustomerDataLimit(tracker.getBytesCount()));\n return tracker;\n },\n /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: (type) => {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n }\n return customerDataTrackers.get(type);\n },\n setCompressionStatus: (newCompressionStatus) => {\n if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n compressionStatus = newCompressionStatus;\n checkCustomerDataLimit();\n }\n },\n getCompressionStatus: () => compressionStatus,\n stop: () => {\n customerDataTrackers.forEach((tracker) => tracker.stop());\n customerDataTrackers.clear();\n },\n };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n let bytesCountCache = 0;\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n const { throttled: computeBytesCountThrottled, cancel: cancelComputeBytesCount } = throttle((context) => {\n bytesCountCache = computeBytesCount(jsonStringify(context));\n checkCustomerDataLimit();\n }, BYTES_COMPUTATION_THROTTLING_DELAY);\n const resetBytesCount = () => {\n cancelComputeBytesCount();\n bytesCountCache = 0;\n };\n return {\n updateCustomerData: (context) => {\n if (isEmptyObject(context)) {\n resetBytesCount();\n }\n else {\n computeBytesCountThrottled(context);\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: () => bytesCountCache,\n stop: () => {\n cancelComputeBytesCount();\n },\n };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n display.warn(`Customer data exceeds the recommended ${bytesCountLimit / ONE_KIBI_BYTE}KiB threshold. ${MORE_DETAILS} ${DOCS_TROUBLESHOOTING}/#customer-data-exceeds-the-recommended-threshold-warning`);\n}\n//# sourceMappingURL=customerDataTracker.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n let context = {};\n const changeObservable = new Observable();\n const contextManager = {\n getContext: () => deepClone(context),\n setContext: (newContext) => {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n }\n else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: (key, property) => {\n context[key] = sanitize(property);\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n removeContextProperty: (key) => {\n delete context[key];\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n clearContext: () => {\n context = {};\n customerDataTracker === null || customerDataTracker === void 0 ? void 0 : customerDataTracker.resetCustomerData();\n changeObservable.notify();\n },\n changeObservable,\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { addEventListener } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nconst CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nconst storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n const storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, \"storage\" /* DOM_EVENT.STORAGE */, ({ key }) => {\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n const rawContext = localStorage.getItem(storageKey);\n return rawContext !== null ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return `${CONTEXT_STORE_KEY_PREFIX}_${productKey}_${customerDataType}`;\n}\nexport function removeStorageListeners() {\n storageListeners.map((listener) => listener.stop());\n}\n//# sourceMappingURL=storeContextManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n let output = '';\n let outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write(data, callback) {\n const additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish(callback) {\n callback(this.finishSync());\n },\n finishSync() {\n const result = {\n output,\n outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: '',\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount(data) {\n return data.length;\n },\n };\n}\n//# sourceMappingURL=encoder.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(`${sdkName} is already initialized.`);\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { clocksNow, combine, elapsed, generateUUID, toServerDuration } from '@datadog/browser-core';\nexport function createCustomVitalsState() {\n const vitalsByName = new Map();\n const vitalsByReference = new WeakMap();\n return { vitalsByName, vitalsByReference };\n}\nexport function startVitalCollection(lifeCycle, pageStateHistory, customVitalsState) {\n function isValid(vital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.duration);\n }\n function addDurationVital(vital) {\n if (isValid(vital)) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n }\n }\n return {\n addDurationVital,\n startDurationVital: (name, options = {}) => startDurationVital(customVitalsState, name, options),\n stopDurationVital: (nameOrRef, options = {}) => {\n stopDurationVital(addDurationVital, customVitalsState, nameOrRef, options);\n },\n };\n}\nexport function startDurationVital({ vitalsByName, vitalsByReference }, name, options = {}) {\n const vital = {\n name,\n startClocks: clocksNow(),\n context: options.context,\n description: options.description,\n };\n // To avoid leaking implementation details of the vital, we return a reference to it.\n const reference = { __dd_vital_reference: true };\n vitalsByName.set(name, vital);\n // To avoid memory leaks caused by the creation of numerous references (e.g., from improper useEffect implementations), we use a WeakMap.\n vitalsByReference.set(reference, vital);\n return reference;\n}\nexport function stopDurationVital(stopCallback, { vitalsByName, vitalsByReference }, nameOrRef, options = {}) {\n const vitalStart = typeof nameOrRef === 'string' ? vitalsByName.get(nameOrRef) : vitalsByReference.get(nameOrRef);\n if (!vitalStart) {\n return;\n }\n stopCallback(buildDurationVital(vitalStart, vitalStart.startClocks, options, clocksNow()));\n if (typeof nameOrRef === 'string') {\n vitalsByName.delete(nameOrRef);\n }\n else {\n vitalsByReference.delete(nameOrRef);\n }\n}\nfunction buildDurationVital(vitalStart, startClocks, stopOptions, stopClocks) {\n var _a;\n return {\n name: vitalStart.name,\n type: \"duration\" /* VitalType.DURATION */,\n startClocks,\n duration: elapsed(startClocks.timeStamp, stopClocks.timeStamp),\n context: combine(vitalStart.context, stopOptions.context),\n description: (_a = stopOptions.description) !== null && _a !== void 0 ? _a : vitalStart.description,\n };\n}\nfunction processVital(vital, valueComputedBySdk) {\n const rawRumEvent = {\n date: vital.startClocks.timeStamp,\n vital: {\n id: generateUUID(),\n type: vital.type,\n name: vital.name,\n duration: toServerDuration(vital.duration),\n description: vital.description,\n },\n type: \"vital\" /* RumEventType.VITAL */,\n };\n if (valueComputedBySdk) {\n rawRumEvent._dd = {\n vital: {\n computed_value: true,\n },\n };\n }\n return {\n rawRumEvent,\n startTime: vital.startClocks.relative,\n customerContext: vital.context,\n domainContext: {},\n };\n}\n//# sourceMappingURL=vitalCollection.js.map","export function callPluginsMethod(plugins, methodName, parameter) {\n if (!plugins) {\n return;\n }\n for (const plugin of plugins) {\n const method = plugin[methodName];\n if (method) {\n method(parameter);\n }\n }\n}\n//# sourceMappingURL=plugins.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nlet fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nexport function resetFetchObservable() {\n fetchObservable = undefined;\n}\nfunction createFetchObservable() {\n return new Observable((observable) => {\n if (!window.fetch) {\n return;\n }\n const { stop } = instrumentMethod(window, 'fetch', (call) => beforeSend(call, observable), {\n computeHandlingStack: true,\n });\n return stop;\n });\n}\nfunction beforeSend({ parameters, onPostCall, handlingStack }, observable) {\n const [input, init] = parameters;\n let methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n const method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n const url = input instanceof Request ? input.url : normalizeUrl(String(input));\n const startClocks = clocksNow();\n const context = {\n state: 'start',\n init,\n input,\n method,\n startClocks,\n url,\n handlingStack,\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall((responsePromise) => afterSend(observable, responsePromise, context));\n}\nfunction afterSend(observable, responsePromise, startContext) {\n const context = startContext;\n function reportFetch(partialContext) {\n context.state = 'resolve';\n Object.assign(context, partialContext);\n observable.notify(context);\n }\n responsePromise.then(monitor((response) => {\n reportFetch({\n response,\n responseType: response.type,\n status: response.status,\n isAborted: false,\n });\n }), monitor((error) => {\n var _a, _b;\n reportFetch({\n status: 0,\n isAborted: ((_b = (_a = context.init) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted) || (error instanceof DOMException && error.code === DOMException.ABORT_ERR),\n error,\n });\n }));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { getInitCookie } from '../../browser/cookie';\nexport const SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport const SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport const SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n const value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n const value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","import { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n const itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith = false) {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value);\n }\n else if (item instanceof RegExp) {\n return item.test(value);\n }\n else if (typeof item === 'string') {\n return useStartsWith ? value.startsWith(item) : item === value;\n }\n }\n catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","export function getCrypto() {\n // TODO: remove msCrypto when IE11 support is dropped\n return window.crypto || window.msCrypto;\n}\n//# sourceMappingURL=crypto.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nexport function createTraceIdentifier() {\n return createIdentifier(64);\n}\nexport function createSpanIdentifier() {\n return createIdentifier(63);\n}\nlet createIdentifierImplementationCache;\nexport function clearIdentifierImplementationCache() {\n createIdentifierImplementationCache = undefined;\n}\nfunction createIdentifier(bits) {\n if (!createIdentifierImplementationCache) {\n createIdentifierImplementationCache =\n isExperimentalFeatureEnabled(ExperimentalFeature.CONSISTENT_TRACE_SAMPLING) && areBigIntIdentifiersSupported()\n ? createIdentifierUsingBigInt\n : createIdentifierUsingUint32Array;\n }\n return createIdentifierImplementationCache(bits);\n}\nexport function areBigIntIdentifiersSupported() {\n try {\n crypto.getRandomValues(new BigUint64Array(1));\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction createIdentifierUsingBigInt(bits) {\n let id = crypto.getRandomValues(new BigUint64Array(1))[0];\n if (bits === 63) {\n // eslint-disable-next-line no-bitwise\n id >>= BigInt('1');\n }\n return id;\n}\n// TODO: remove this when all browser we support have BigInt support\nfunction createIdentifierUsingUint32Array(bits) {\n const buffer = getCrypto().getRandomValues(new Uint32Array(2));\n if (bits === 63) {\n // eslint-disable-next-line no-bitwise\n buffer[buffer.length - 1] >>>= 1; // force 63-bit\n }\n return {\n toString(radix = 10) {\n let high = buffer[1];\n let low = buffer[0];\n let str = '';\n do {\n const mod = (high % radix) * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n },\n };\n}\nexport function toPaddedHexadecimalString(id) {\n const traceId = id.toString(16);\n // TODO: replace with String.prototype.padStart when we drop IE11 support\n return Array(17 - traceId.length).join('0') + traceId;\n}\n//# sourceMappingURL=identifier.js.map","import { objectEntries, shallowClone, getType, isMatchOption, matchList, TraceContextInjection, } from '@datadog/browser-core';\nimport { getCrypto } from '../../browser/crypto';\nimport { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier';\nimport { isTraceSampled } from './sampler';\nexport function isTracingOption(item) {\n const expectedItem = item;\n return (getType(expectedItem) === 'object' &&\n isMatchOption(expectedItem.match) &&\n Array.isArray(expectedItem.propagatorTypes));\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n context.traceSampled = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded,\n traceFetch: (context) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders) => {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach((key) => {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n }\n else {\n context.init = shallowClone(context.init);\n const headers = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n }\n else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach((header) => {\n headers.push(header);\n });\n }\n else if (context.init.headers) {\n Object.keys(context.init.headers).forEach((key) => {\n headers.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers.concat(objectEntries(tracingHeaders));\n }\n }),\n traceXhr: (context, xhr) => injectHeadersIfTracingAllowed(configuration, context, sessionManager, (tracingHeaders) => {\n Object.keys(tracingHeaders).forEach((name) => {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n }),\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return;\n }\n const tracingOption = configuration.allowedTracingUrls.find((tracingOption) => matchList([tracingOption.match], context.url, true));\n if (!tracingOption) {\n return;\n }\n const traceId = createTraceIdentifier();\n context.traceSampled = isTraceSampled(traceId, configuration.traceSampleRate);\n const shouldInjectHeaders = context.traceSampled || configuration.traceContextInjection === TraceContextInjection.ALL;\n if (!shouldInjectHeaders) {\n return;\n }\n context.traceId = traceId;\n context.spanId = createSpanIdentifier();\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n const tracingHeaders = {};\n propagatorTypes.forEach((propagatorType) => {\n switch (propagatorType) {\n case 'datadog': {\n Object.assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toString(),\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext': {\n Object.assign(tracingHeaders, {\n traceparent: `00-0000000000000000${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-0${traceSampled ? '1' : '0'}`,\n tracestate: `dd=s:${traceSampled ? '1' : '0'};o:rum`,\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3': {\n Object.assign(tracingHeaders, {\n b3: `${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString(spanId)}-${traceSampled ? '1' : '0'}`,\n });\n break;\n }\n case 'b3multi': {\n Object.assign(tracingHeaders, {\n 'X-B3-TraceId': toPaddedHexadecimalString(traceId),\n 'X-B3-SpanId': toPaddedHexadecimalString(spanId),\n 'X-B3-Sampled': traceSampled ? '1' : '0',\n });\n break;\n }\n }\n });\n return tracingHeaders;\n}\n//# sourceMappingURL=tracer.js.map","import { performDraw } from '@datadog/browser-core';\nexport function isTraceSampled(identifier, sampleRate) {\n // Shortcuts for common cases. This is not strictly necessary, but it makes the code faster for\n // customers willing to ingest all traces.\n if (sampleRate === 100) {\n return true;\n }\n if (sampleRate === 0) {\n return false;\n }\n // For simplicity, we don't use consistent sampling for browser that don't support BigInt\n // TODO: remove this when all browser we support have BigInt support\n if (typeof identifier !== 'bigint') {\n return performDraw(sampleRate);\n }\n // Offer consistent sampling for the same trace id across different environments. The rule is:\n //\n // (identifier * knuthFactor) % 2^64 < sampleRate * 2^64\n //\n // Because JavaScript numbers are 64-bit floats, we can't represent 64-bit integers, and the\n // modulo would be incorrect. Thus, we are using BigInts here.\n //\n // Implementation in other languages:\n // * Go https://github.com/DataDog/dd-trace-go/blob/ec6fbb1f2d517b7b8e69961052adf7136f3af773/ddtrace/tracer/sampler.go#L86-L91\n // * Python https://github.com/DataDog/dd-trace-py/blob/0cee2f066fb6e79aa15947c1514c0f406dea47c5/ddtrace/sampling_rule.py#L197\n // * Ruby https://github.com/DataDog/dd-trace-rb/blob/1a6e255cdcb7e7e22235ea5955f90f6dfa91045d/lib/datadog/tracing/sampling/rate_sampler.rb#L42\n // * C++ https://github.com/DataDog/dd-trace-cpp/blob/159629edc438ae45f2bb318eb7bd51abd05e94b5/src/datadog/trace_sampler.cpp#L58\n // * Java https://github.com/DataDog/dd-trace-java/blob/896dd6b380533216e0bdee59614606c8272d313e/dd-trace-core/src/main/java/datadog/trace/common/sampling/DeterministicSampler.java#L48\n //\n // Note: All implementations have slight variations. Some of them use '<=' instead of '<', and\n // use `sampleRate * 2^64 - 1` instead of `sampleRate * 2^64`. The following implementation\n // should adhere to the spec and is a bit simpler than using a 2^64-1 limit as there are less\n // BigInt arithmetic to write. In practice this does not matter, as we are using floating point\n // numbers in the end, and Number(2n**64n-1n) === Number(2n**64n).\n const knuthFactor = BigInt('1111111111111111111');\n const twoPow64 = BigInt('0x10000000000000000'); // 2n ** 64n\n const hash = (identifier * knuthFactor) % twoPow64;\n return Number(hash) <= (sampleRate / 100) * Number(twoPow64);\n}\n//# sourceMappingURL=sampler.js.map","import { getType, isMatchOption, serializeConfiguration, DefaultPrivacyLevel, TraceContextInjection, display, objectHasValue, validateAndBuildConfiguration, isSampleRate, isNumber, } from '@datadog/browser-core';\nimport { isTracingOption } from '../tracing/tracer';\nexport const DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e, _f;\n if (initConfiguration.trackFeatureFlagsForEvents !== undefined &&\n !Array.isArray(initConfiguration.trackFeatureFlagsForEvents)) {\n display.warn('trackFeatureFlagsForEvents should be an array');\n }\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (!isSampleRate(initConfiguration.sessionReplaySampleRate, 'Session Replay') ||\n !isSampleRate(initConfiguration.traceSampleRate, 'Trace')) {\n return;\n }\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array');\n return;\n }\n const allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n const baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n const sessionReplaySampleRate = (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0;\n return {\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version || undefined,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate,\n startSessionReplayRecordingManually: initConfiguration.startSessionReplayRecordingManually !== undefined\n ? !!initConfiguration.startSessionReplayRecordingManually\n : sessionReplaySampleRate === 0,\n traceSampleRate: (_b = initConfiguration.traceSampleRate) !== null && _b !== void 0 ? _b : 100,\n rulePsr: isNumber(initConfiguration.traceSampleRate) ? initConfiguration.traceSampleRate / 100 : undefined,\n allowedTracingUrls,\n excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!((_d = initConfiguration.trackUserInteractions) !== null && _d !== void 0 ? _d : true),\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!((_e = initConfiguration.trackResources) !== null && _e !== void 0 ? _e : true),\n trackLongTasks: !!((_f = initConfiguration.trackLongTasks) !== null && _f !== void 0 ? _f : true),\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel)\n ? initConfiguration.defaultPrivacyLevel\n : DefaultPrivacyLevel.MASK,\n enablePrivacyForActionName: !!initConfiguration.enablePrivacyForActionName,\n customerDataTelemetrySampleRate: 1,\n traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection)\n ? initConfiguration.traceContextInjection\n : TraceContextInjection.SAMPLED,\n plugins: initConfiguration.plugins || [],\n trackFeatureFlagsForEvents: initConfiguration.trackFeatureFlagsForEvents || [],\n ...baseConfiguration,\n };\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n if (initConfiguration.allowedTracingUrls === undefined) {\n return [];\n }\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n const tracingOptions = [];\n initConfiguration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n tracingOptions.push({ match: option, propagatorTypes: DEFAULT_PROPAGATOR_TYPES });\n }\n else if (isTracingOption(option)) {\n tracingOptions.push(option);\n }\n else {\n display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n }\n });\n return tracingOptions;\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n const usedTracingPropagators = new Set();\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach((option) => {\n if (isMatchOption(option)) {\n DEFAULT_PROPAGATOR_TYPES.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n }\n else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach((propagatorType) => usedTracingPropagators.add(propagatorType));\n }\n });\n }\n return Array.from(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n var _a;\n const baseSerializedConfiguration = serializeConfiguration(configuration);\n return {\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n enable_privacy_for_action_name: configuration.enablePrivacyForActionName,\n use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks,\n plugins: (_a = configuration.plugins) === null || _a === void 0 ? void 0 : _a.map((plugin) => {\n var _a;\n return ({\n name: plugin.name,\n ...(_a = plugin.getConfigurationTelemetry) === null || _a === void 0 ? void 0 : _a.call(plugin),\n });\n }),\n track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents,\n ...baseSerializedConfiguration,\n };\n}\n//# sourceMappingURL=configuration.js.map","import { display, addEventListener, buildEndpointHost } from '@datadog/browser-core';\nconst REMOTE_CONFIGURATION_VERSION = 'v1';\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n callback(applyRemoteConfiguration(initConfiguration, remoteInitConfiguration));\n });\n}\nexport function applyRemoteConfiguration(initConfiguration, remoteInitConfiguration) {\n return { ...initConfiguration, ...remoteInitConfiguration };\n}\nexport function fetchRemoteConfiguration(configuration, callback) {\n const xhr = new XMLHttpRequest();\n addEventListener(configuration, xhr, 'load', function () {\n if (xhr.status === 200) {\n const remoteConfiguration = JSON.parse(xhr.responseText);\n callback(remoteConfiguration.rum);\n }\n else {\n displayRemoteConfigurationFetchingError();\n }\n });\n addEventListener(configuration, xhr, 'error', function () {\n displayRemoteConfigurationFetchingError();\n });\n xhr.open('GET', buildEndpoint(configuration));\n xhr.send();\n}\nexport function buildEndpoint(configuration) {\n return `https://sdk-configuration.${buildEndpointHost('rum', configuration)}/${REMOTE_CONFIGURATION_VERSION}/${encodeURIComponent(configuration.remoteConfigurationId)}.json`;\n}\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.');\n}\n//# sourceMappingURL=remoteConfiguration.js.map","import { createBoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, getEventBridge, ExperimentalFeature, isExperimentalFeatureEnabled, initFeatureFlags, addTelemetryConfiguration, initFetchObservable, } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration, } from '../domain/configuration';\nimport { startDurationVital, stopDurationVital } from '../domain/vital/vitalCollection';\nimport { fetchAndApplyRemoteConfiguration, serializeRumConfiguration } from '../domain/configuration';\nimport { callPluginsMethod } from '../domain/plugins';\nexport function createPreStartStrategy({ ignoreInitIfSyntheticsWillInjectRum, startDeflateWorker }, getCommonContext, trackingConsentState, customVitalsState, doStartRum) {\n const bufferApiCalls = createBoundedBuffer();\n let firstStartViewCall;\n let deflateWorker;\n let cachedInitConfiguration;\n let cachedConfiguration;\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n const emptyContext = {};\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n let initialViewOptions;\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return;\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we remove the actual startView call so we don't create an extra\n // view.\n bufferApiCalls.remove(firstStartViewCall.callback);\n initialViewOptions = firstStartViewCall.options;\n }\n const startRumResult = doStartRum(cachedConfiguration, deflateWorker, initialViewOptions);\n bufferApiCalls.drain(startRumResult);\n }\n function doInit(initConfiguration) {\n const eventBridgeAvailable = canUseEventBridge();\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Update the exposed initConfiguration to reflect the bridge and remote configuration overrides\n cachedInitConfiguration = initConfiguration;\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n return;\n }\n const configuration = validateAndBuildRumConfiguration(initConfiguration);\n if (!configuration) {\n return;\n }\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.');\n return;\n }\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(configuration, 'Datadog RUM', \n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to Datadog. We could improve this behavior in the future.\n noop);\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return;\n }\n }\n cachedConfiguration = configuration;\n // Instrumuent fetch to track network requests\n // This is needed in case the consent is not granted and some cutsomer\n // library (Apollo Client) is storing uninstrumented fetch to be used later\n // The subscrption is needed so that the instrumentation process is completed\n initFetchObservable().subscribe(noop);\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartRum();\n }\n const addDurationVital = (vital) => {\n bufferApiCalls.add((startRumResult) => startRumResult.addDurationVital(vital));\n };\n const strategy = {\n init(initConfiguration, publicApi) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures);\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return;\n }\n callPluginsMethod(initConfiguration.plugins, 'onInit', { initConfiguration, publicApi });\n if (initConfiguration.remoteConfigurationId &&\n isExperimentalFeatureEnabled(ExperimentalFeature.REMOTE_CONFIGURATION)) {\n fetchAndApplyRemoteConfiguration(initConfiguration, doInit);\n }\n else {\n doInit(initConfiguration);\n }\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n getInternalContext: noop,\n stopSession: noop,\n addTiming(name, time = timeStampNow()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addTiming(name, time));\n },\n startView(options, startClocks = clocksNow()) {\n const callback = (startRumResult) => {\n startRumResult.startView(options, startClocks);\n };\n bufferApiCalls.add(callback);\n if (!firstStartViewCall) {\n firstStartViewCall = { options, callback };\n tryStartRum();\n }\n },\n setViewName(name) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewName(name));\n },\n setViewContext(context) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContext(context));\n },\n setViewContextProperty(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.setViewContextProperty(key, value));\n },\n getViewContext: () => emptyContext,\n addAction(action, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addAction(action, commonContext));\n },\n addError(providedError, commonContext = getCommonContext()) {\n bufferApiCalls.add((startRumResult) => startRumResult.addError(providedError, commonContext));\n },\n addFeatureFlagEvaluation(key, value) {\n bufferApiCalls.add((startRumResult) => startRumResult.addFeatureFlagEvaluation(key, value));\n },\n startDurationVital(name, options) {\n return startDurationVital(customVitalsState, name, options);\n },\n stopDurationVital(name, options) {\n stopDurationVital(addDurationVital, customVitalsState, name, options);\n },\n addDurationVital,\n };\n return strategy;\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n var _a, _b;\n return {\n ...initConfiguration,\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel(),\n };\n}\n//# sourceMappingURL=preStartRum.js.map","import { addTelemetryUsage, createContextManager, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, checkUser, sanitizeUser, sanitize, createIdentityEncoder, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, createTrackingConsentState, timeStampToClocks, } from '@datadog/browser-core';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createCustomVitalsState } from '../domain/vital/vitalCollection';\nimport { callPluginsMethod } from '../domain/plugins';\nimport { createPreStartStrategy } from './preStartRum';\nconst RUM_STORAGE_KEY = 'rum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, options = {}) {\n const customerDataTrackerManager = createCustomerDataTrackerManager(0 /* CustomerDataCompressionStatus.Unknown */);\n const globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n const userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n const trackingConsentState = createTrackingConsentState();\n const customVitalsState = createCustomVitalsState();\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager, recorderApi);\n }\n let strategy = createPreStartStrategy(options, getCommonContext, trackingConsentState, customVitalsState, (configuration, deflateWorker, initialViewOptions) => {\n if (configuration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, 1 /* CustomerDataType.User */);\n }\n customerDataTrackerManager.setCompressionStatus(deflateWorker ? 1 /* CustomerDataCompressionStatus.Enabled */ : 2 /* CustomerDataCompressionStatus.Disabled */);\n const startRumResult = startRumImpl(configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, deflateWorker && options.createDeflateEncoder\n ? (streamId) => options.createDeflateEncoder(configuration, deflateWorker, streamId)\n : createIdentityEncoder, trackingConsentState, customVitalsState);\n recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewHistory, deflateWorker);\n strategy = createPostStartStrategy(strategy, startRumResult);\n callPluginsMethod(configuration.plugins, 'onRumStart', { strategy });\n return startRumResult;\n });\n const startView = monitor((options) => {\n const sanitizedOptions = typeof options === 'object' ? options : { name: options };\n if (sanitizedOptions.context) {\n customerDataTrackerManager.getOrCreateTracker(3 /* CustomerDataType.View */).updateCustomerData(sanitizedOptions.context);\n }\n strategy.startView(sanitizedOptions);\n addTelemetryUsage({ feature: 'start-view' });\n });\n const rumPublicApi = makePublicApi({\n init: monitor((initConfiguration) => {\n strategy.init(initConfiguration, rumPublicApi);\n }),\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent });\n }),\n setViewName: monitor((name) => {\n strategy.setViewName(name);\n addTelemetryUsage({ feature: 'set-view-name' });\n }),\n setViewContext: monitor((context) => {\n strategy.setViewContext(context);\n addTelemetryUsage({ feature: 'set-view-context' });\n }),\n setViewContextProperty: monitor((key, value) => {\n strategy.setViewContextProperty(key, value);\n addTelemetryUsage({ feature: 'set-view-context-property' });\n }),\n getViewContext: monitor(() => {\n addTelemetryUsage({ feature: 'set-view-context-property' });\n return strategy.getViewContext();\n }),\n setGlobalContext: monitor((context) => {\n globalContextManager.setContext(context);\n addTelemetryUsage({ feature: 'set-global-context' });\n }),\n getGlobalContext: monitor(() => globalContextManager.getContext()),\n setGlobalContextProperty: monitor((key, value) => {\n globalContextManager.setContextProperty(key, value);\n addTelemetryUsage({ feature: 'set-global-context' });\n }),\n removeGlobalContextProperty: monitor((key) => globalContextManager.removeContextProperty(key)),\n clearGlobalContext: monitor(() => globalContextManager.clearContext()),\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n addAction: (name, context) => {\n const handlingStack = createHandlingStack();\n callMonitored(() => {\n strategy.addAction({\n name: sanitize(name),\n context: sanitize(context),\n startClocks: clocksNow(),\n type: \"custom\" /* ActionType.CUSTOM */,\n handlingStack,\n });\n addTelemetryUsage({ feature: 'add-action' });\n });\n },\n addError: (error, context) => {\n const handlingStack = createHandlingStack();\n callMonitored(() => {\n strategy.addError({\n error, // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack,\n context: sanitize(context),\n startClocks: clocksNow(),\n });\n addTelemetryUsage({ feature: 'add-error' });\n });\n },\n addTiming: monitor((name, time) => {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name), time);\n }),\n setUser: monitor((newUser) => {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser));\n }\n addTelemetryUsage({ feature: 'set-user' });\n }),\n getUser: monitor(() => userContextManager.getContext()),\n setUserProperty: monitor((key, property) => {\n const sanitizedProperty = sanitizeUser({ [key]: property })[key];\n userContextManager.setContextProperty(key, sanitizedProperty);\n addTelemetryUsage({ feature: 'set-user' });\n }),\n removeUserProperty: monitor((key) => userContextManager.removeContextProperty(key)),\n clearUser: monitor(() => userContextManager.clearContext()),\n startView,\n stopSession: monitor(() => {\n strategy.stopSession();\n addTelemetryUsage({ feature: 'stop-session' });\n }),\n addFeatureFlagEvaluation: monitor((key, value) => {\n strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n addTelemetryUsage({ feature: 'add-feature-flag-evaluation' });\n }),\n getSessionReplayLink: monitor(() => recorderApi.getSessionReplayLink()),\n startSessionReplayRecording: monitor((options) => {\n recorderApi.start(options);\n addTelemetryUsage({ feature: 'start-session-replay-recording', force: options && options.force });\n }),\n stopSessionReplayRecording: monitor(() => recorderApi.stop()),\n addDurationVital: monitor((name, options) => {\n addTelemetryUsage({ feature: 'add-duration-vital' });\n strategy.addDurationVital({\n name: sanitize(name),\n type: \"duration\" /* VitalType.DURATION */,\n startClocks: timeStampToClocks(options.startTime),\n duration: options.duration,\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n startDurationVital: monitor((name, options) => {\n addTelemetryUsage({ feature: 'start-duration-vital' });\n return strategy.startDurationVital(sanitize(name), {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n stopDurationVital: monitor((nameOrRef, options) => {\n addTelemetryUsage({ feature: 'stop-duration-vital' });\n strategy.stopDurationVital(typeof nameOrRef === 'string' ? sanitize(nameOrRef) : nameOrRef, {\n context: sanitize(options && options.context),\n description: sanitize(options && options.description),\n });\n }),\n });\n return rumPublicApi;\n}\nfunction createPostStartStrategy(preStartStrategy, startRumResult) {\n return {\n init: (initConfiguration) => {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n },\n initConfiguration: preStartStrategy.initConfiguration,\n ...startRumResult,\n };\n}\n//# sourceMappingURL=rumPublicApi.js.map","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined,\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n const MutationObserver = getMutationObserverConstructor();\n return new Observable((observable) => {\n if (!MutationObserver) {\n return;\n }\n const observer = new MutationObserver(monitor(() => observable.notify()));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n return () => observer.disconnect();\n });\n}\nexport function getMutationObserverConstructor() {\n let constructor;\n const browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n const patchedInstance = new browserWindow.MutationObserver(noop);\n const originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n let eventCount = 0;\n let allowNextEvent = false;\n return {\n isLimitReached() {\n if (eventCount === 0) {\n setTimeout(() => {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: `Reached max number of ${eventType}s by minute: ${limit}`,\n source: ErrorSource.AGENT,\n startClocks: clocksNow(),\n });\n }\n finally {\n allowNextEvent = false;\n }\n }\n return true;\n },\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n const testId = getSyntheticsTestId();\n const resultId = getSyntheticsResultId();\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum(),\n };\n }\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n const clone = deepClone(object);\n const result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => {\n const newValue = get(clone, fieldPath);\n const newType = getType(newValue);\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue));\n }\n else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n let current = object;\n for (const field of path.split('.')) {\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n let current = object;\n const fields = path.split('.');\n for (let i = 0; i < fields.length; i += 1) {\n const field = fields[i];\n if (!isValidObject(current)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n }\n else {\n current[field] = value;\n }\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, round, isExperimentalFeatureEnabled, ExperimentalFeature, getConnectivity, addTelemetryDebug, } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { limitModification } from './limitModification';\nconst VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string',\n};\nconst USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object',\n};\nconst ROOT_MODIFIABLE_FIELD_PATHS = {\n service: 'string',\n version: 'string',\n};\nlet modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewHistory, urlContexts, actionContexts, displayContext, ciVisibilityContext, featureFlagContexts, getCommonContext, reportError) {\n modifiableFieldPathsByEvent = {\n [\"view\" /* RumEventType.VIEW */]: { ...USER_CUSTOMIZABLE_FIELD_PATHS, ...VIEW_MODIFIABLE_FIELD_PATHS },\n [\"error\" /* RumEventType.ERROR */]: {\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [\"resource\" /* RumEventType.RESOURCE */]: {\n 'resource.url': 'string',\n ...(isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL)\n ? { 'resource.graphql': 'object' }\n : {}),\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [\"action\" /* RumEventType.ACTION */]: {\n 'action.target.name': 'string',\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n ...ROOT_MODIFIABLE_FIELD_PATHS,\n },\n [\"long_task\" /* RumEventType.LONG_TASK */]: {\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n },\n [\"vital\" /* RumEventType.VITAL */]: {\n ...USER_CUSTOMIZABLE_FIELD_PATHS,\n ...VIEW_MODIFIABLE_FIELD_PATHS,\n },\n };\n const eventRateLimiters = {\n [\"error\" /* RumEventType.ERROR */]: createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError),\n [\"action\" /* RumEventType.ACTION */]: createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError),\n [\"vital\" /* RumEventType.VITAL */]: createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError),\n };\n const syntheticsContext = getSyntheticsContext();\n lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, ({ startTime, rawRumEvent, domainContext, savedCommonContext, customerContext }) => {\n const viewHistoryEntry = viewHistory.findView(startTime);\n const urlContext = urlContexts.findUrl(startTime);\n const session = sessionManager.findTrackedSession(startTime);\n if (session &&\n viewHistoryEntry &&\n !urlContext &&\n isExperimentalFeatureEnabled(ExperimentalFeature.MISSING_URL_CONTEXT_TELEMETRY)) {\n addTelemetryDebug('Missing URL entry', {\n debug: {\n eventType: rawRumEvent.type,\n startTime,\n urlEntries: urlContexts.getAllEntries(),\n urlDeletedEntries: urlContexts.getDeletedEntries(),\n viewEntries: viewHistory.getAllEntries(),\n viewDeletedEntries: viewHistory.getDeletedEntries(),\n },\n });\n }\n if (session && viewHistoryEntry && urlContext) {\n const commonContext = savedCommonContext || getCommonContext();\n const actionId = actionContexts.findActionId(startTime);\n const rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3),\n },\n browser_sdk_version: canUseEventBridge() ? \"6.2.1\" : undefined,\n },\n application: {\n id: configuration.applicationId,\n },\n date: timeStampNow(),\n service: viewHistoryEntry.service || configuration.service,\n version: viewHistoryEntry.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext\n ? \"synthetics\" /* SessionType.SYNTHETICS */\n : ciVisibilityContext.get()\n ? \"ci_test\" /* SessionType.CI_TEST */\n : \"user\" /* SessionType.USER */,\n },\n view: {\n id: viewHistoryEntry.id,\n name: viewHistoryEntry.name,\n url: urlContext.url,\n referrer: urlContext.referrer,\n },\n feature_flags: findFeatureFlagsContext(rawRumEvent, startTime, configuration.trackFeatureFlagsForEvents, featureFlagContexts),\n action: needToAssembleWithAction(rawRumEvent) && actionId ? { id: actionId } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciVisibilityContext.get(),\n display: displayContext.get(),\n connectivity: getConnectivity(),\n };\n const serverRumEvent = combine(rumContext, rawRumEvent);\n serverRumEvent.context = combine(commonContext.context, viewHistoryEntry.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (serverRumEvent.type === 'view') {\n ;\n serverRumEvent.session.sampled_for_replay =\n session.sessionReplay === 1 /* SessionReplayState.SAMPLED */;\n }\n if (session.anonymousId && !commonContext.user.anonymous_id && !!configuration.trackAnonymousUser) {\n commonContext.user.anonymous_id = session.anonymousId;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n const result = limitModification(event, modifiableFieldPathsByEvent[event.type], (event) => beforeSend(event, domainContext));\n if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n const rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\nfunction findFeatureFlagsContext(rawRumEvent, eventStartTime, trackFeatureFlagsForEvents, featureFlagContexts) {\n const isTrackingEnforced = rawRumEvent.type === \"view\" /* RumEventType.VIEW */ || rawRumEvent.type === \"error\" /* RumEventType.ERROR */;\n const isListedInConfig = trackFeatureFlagsForEvents.includes(rawRumEvent.type);\n if (isTrackingEnforced || isListedInConfig) {\n const featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(eventStartTime);\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n return featureFlagContext;\n }\n }\n}\n//# sourceMappingURL=assembly.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport const LifeCycle = (AbstractLifeCycle);\n//# sourceMappingURL=lifeCycle.js.map","// eslint-disable-next-line no-restricted-syntax\nexport class AbstractLifeCycle {\n constructor() {\n this.callbacks = {};\n }\n notify(eventType, data) {\n const eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach((callback) => callback(data));\n }\n }\n subscribe(eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: () => {\n this.callbacks[eventType] = this.callbacks[eventType].filter((other) => callback !== other);\n },\n };\n }\n}\n//# sourceMappingURL=abstractLifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nconst END_OF_TIMES = Infinity;\nexport const CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\nexport function createValueHistory({ expireDelay, maxEntries, }) {\n let entries = [];\n const deletedEntries = [];\n const clearOldValuesInterval = setInterval(() => clearOldValues(), CLEAR_OLD_VALUES_INTERVAL);\n function clearOldValues() {\n const oldTimeThreshold = relativeNow() - expireDelay;\n while (entries.length > 0 && entries[entries.length - 1].endTime < oldTimeThreshold) {\n const entry = entries.pop();\n if (entry) {\n deletedEntries.push(entry.startTime);\n }\n }\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n function add(value, startTime) {\n const entry = {\n value,\n startTime,\n endTime: END_OF_TIMES,\n remove: () => {\n removeItem(entries, entry);\n },\n close: (endTime) => {\n entry.endTime = endTime;\n },\n };\n if (maxEntries && entries.length >= maxEntries) {\n entries.pop();\n }\n entries.unshift(entry);\n return entry;\n }\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n *\n * If `option.returnInactive` is true, returns the value at `startTime` (active or not).\n */\n function find(startTime = END_OF_TIMES, options = { returnInactive: false }) {\n for (const entry of entries) {\n if (entry.startTime <= startTime) {\n if (options.returnInactive || startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n }\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n function closeActive(endTime) {\n const latestEntry = entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n }\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n function findAll(startTime = END_OF_TIMES, duration = 0) {\n const endTime = addDuration(startTime, duration);\n return entries\n .filter((entry) => entry.startTime <= endTime && startTime <= entry.endTime)\n .map((entry) => entry.value);\n }\n function getAllEntries() {\n return entries.map(({ startTime, endTime, value }) => ({\n startTime,\n endTime: endTime === END_OF_TIMES ? 'Infinity' : endTime,\n value,\n }));\n }\n function getDeletedEntries() {\n return deletedEntries;\n }\n /**\n * Remove all entries from this collection.\n */\n function reset() {\n entries = [];\n }\n /**\n * Stop internal garbage collection of past entries.\n */\n function stop() {\n clearInterval(clearOldValuesInterval);\n }\n return { add, find, closeActive, findAll, reset, stop, getAllEntries, getDeletedEntries };\n}\n//# sourceMappingURL=valueHistory.js.map","import { SESSION_TIME_OUT_DELAY, createValueHistory } from '@datadog/browser-core';\nexport const VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewHistory(lifeCycle) {\n const viewValueHistory = createValueHistory({ expireDelay: VIEW_CONTEXT_TIME_OUT_DELAY });\n lifeCycle.subscribe(1 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, (view) => {\n viewValueHistory.add(buildViewHistoryEntry(view), view.startClocks.relative);\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, ({ endClocks }) => {\n viewValueHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(3 /* LifeCycleEventType.BEFORE_VIEW_UPDATED */, (viewUpdate) => {\n const currentView = viewValueHistory.find(viewUpdate.startClocks.relative);\n if (currentView && viewUpdate.name) {\n currentView.name = viewUpdate.name;\n }\n if (currentView && viewUpdate.context) {\n currentView.context = viewUpdate.context;\n }\n });\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, () => {\n viewValueHistory.reset();\n });\n function buildViewHistoryEntry(view) {\n return {\n service: view.service,\n version: view.version,\n context: view.context,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks,\n };\n }\n return {\n findView: (startTime) => viewValueHistory.find(startTime),\n getAllEntries: () => viewValueHistory.getAllEntries(),\n getDeletedEntries: () => viewValueHistory.getDeletedEntries(),\n stop: () => {\n viewValueHistory.stop();\n },\n };\n}\n//# sourceMappingURL=viewHistory.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nlet xhrObservable;\nconst xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable((observable) => {\n const { stop: stopInstrumentingStart } = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr);\n const { stop: stopInstrumentingSend } = instrumentMethod(XMLHttpRequest.prototype, 'send', (call) => {\n sendXhr(call, configuration, observable);\n }, { computeHandlingStack: true });\n const { stop: stopInstrumentingAbort } = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr);\n return () => {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr({ target: xhr, parameters: [method, url] }) {\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url)),\n });\n}\nfunction sendXhr({ target: xhr, handlingStack }, configuration, observable) {\n const context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n const startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n startContext.handlingStack = handlingStack;\n let hasBeenReported = false;\n const { stop: stopInstrumentingOnReadyStateChange } = instrumentMethod(xhr, 'onreadystatechange', () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n });\n const onEnd = () => {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n const completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n const { stop: unsubscribeLoadEndListener } = addEventListener(configuration, xhr, 'loadend', onEnd);\n observable.notify(startContext);\n}\nfunction abortXhr({ target: xhr }) {\n const context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { addTelemetryDebug, elapsed, getPathName, isValidUrl, toServerDuration, isIntakeUrl, } from '@datadog/browser-core';\nexport const FAKE_INITIAL_DOCUMENT = 'initial_document';\nconst RESOURCE_TYPES = [\n [\"document\" /* ResourceType.DOCUMENT */, (initiatorType) => FAKE_INITIAL_DOCUMENT === initiatorType],\n [\"xhr\" /* ResourceType.XHR */, (initiatorType) => 'xmlhttprequest' === initiatorType],\n [\"fetch\" /* ResourceType.FETCH */, (initiatorType) => 'fetch' === initiatorType],\n [\"beacon\" /* ResourceType.BEACON */, (initiatorType) => 'beacon' === initiatorType],\n [\"css\" /* ResourceType.CSS */, (_, path) => /\\.css$/i.test(path)],\n [\"js\" /* ResourceType.JS */, (_, path) => /\\.js$/i.test(path)],\n [\n \"image\" /* ResourceType.IMAGE */,\n (initiatorType, path) => ['image', 'img', 'icon'].includes(initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null,\n ],\n [\"font\" /* ResourceType.FONT */, (_, path) => /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null],\n [\n \"media\" /* ResourceType.MEDIA */,\n (initiatorType, path) => ['audio', 'video'].includes(initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null,\n ],\n];\nexport function computeResourceEntryType(entry) {\n const url = entry.name;\n if (!isValidUrl(url)) {\n addTelemetryDebug(`Failed to construct URL for \"${entry.name}\"`);\n return \"other\" /* ResourceType.OTHER */;\n }\n const path = getPathName(url);\n for (const [type, isType] of RESOURCE_TYPES) {\n if (isType(entry.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder(...numbers) {\n for (let i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isResourceEntryRequestType(entry) {\n return entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch';\n}\nexport function computeResourceEntryDuration(entry) {\n const { duration, startTime, responseEnd } = entry;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computeResourceEntryDetails(entry) {\n if (!hasValidResourceEntryTimings(entry)) {\n return undefined;\n }\n const { startTime, fetchStart, workerStart, redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, secureConnectionStart, connectEnd, requestStart, responseStart, responseEnd, } = entry;\n const details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart),\n };\n // Make sure a worker processing time is recorded\n if (0 < workerStart && workerStart < fetchStart) {\n details.worker = formatTiming(startTime, workerStart, fetchStart);\n }\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\n/**\n * Entries with negative duration are unexpected and should be dismissed. The intake will ignore RUM\n * Resource events with negative durations anyway.\n * Since Chromium 128, more entries have unexpected negative durations, see\n * https://issues.chromium.org/issues/363031537\n */\nexport function hasValidResourceEntryDuration(entry) {\n return entry.duration >= 0;\n}\nexport function hasValidResourceEntryTimings(entry) {\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n const areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n const areRedirectionTimingsInOrder = hasRedirection(entry)\n ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart)\n : true;\n return areCommonTimingsInOrder && areRedirectionTimingsInOrder;\n}\nfunction hasRedirection(entry) {\n return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start)),\n };\n }\n}\n/**\n * The 'nextHopProtocol' is an empty string for cross-origin resources without CORS headers,\n * meaning the protocol is unknown, and we shouldn't report it.\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol#cross-origin_resources\n */\nexport function computeResourceEntryProtocol(entry) {\n return entry.nextHopProtocol === '' ? undefined : entry.nextHopProtocol;\n}\n/**\n * Handles the 'deliveryType' property to distinguish between supported values ('cache', 'navigational-prefetch'),\n * undefined (unsupported in some browsers), and other cases ('other' for unknown or unrecognized values).\n * see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/deliveryType\n */\nexport function computeResourceEntryDeliveryType(entry) {\n return entry.deliveryType === '' ? 'other' : entry.deliveryType;\n}\nexport function computeResourceEntrySize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n const { encodedBodySize, decodedBodySize, transferSize } = entry;\n return {\n size: decodedBodySize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize,\n transfer_size: transferSize,\n };\n }\n return {\n size: undefined,\n encoded_body_size: undefined,\n decoded_body_size: undefined,\n transfer_size: undefined,\n };\n}\nexport function isAllowedRequestUrl(url) {\n return url && !isIntakeUrl(url);\n}\nconst DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport const MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false;\n }\n else if (url.substring(0, 5) === 'data:') {\n // Avoid String.match RangeError: Maximum call stack size exceeded\n url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n return true;\n }\n return false;\n}\nexport function sanitizeDataUrl(url) {\n return `${url.match(DATA_URL_REGEX)[0]}[...]`;\n}\n//# sourceMappingURL=resourceUtils.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone, } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nlet nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n const tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n const subscription = initXhrObservable(configuration).subscribe((rawContext) => {\n const context = rawContext;\n if (!isAllowedRequestUrl(context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"xhr\" /* RequestType.XHR */,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n });\n break;\n }\n });\n return { stop: () => subscription.unsubscribe() };\n}\nexport function trackFetch(lifeCycle, tracer) {\n const subscription = initFetchObservable().subscribe((rawContext) => {\n const context = rawContext;\n if (!isAllowedRequestUrl(context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url,\n });\n break;\n case 'resolve':\n waitForResponseToComplete(context, (duration) => {\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"fetch\" /* RequestType.FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n isAborted: context.isAborted,\n handlingStack: context.handlingStack,\n });\n });\n break;\n }\n });\n return { stop: () => subscription.unsubscribe() };\n}\nfunction getNextRequestIndex() {\n const result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n const clonedResponse = context.response && tryToClone(context.response);\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }\n else {\n readBytesFromStream(clonedResponse.body, () => {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }, {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false,\n });\n }\n}\n//# sourceMappingURL=requestCollection.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n const reader = stream.getReader();\n const chunks = [];\n let readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor((result) => {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n }\n else {\n readMore();\n }\n }), monitor((error) => callback(error)));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n let bytes;\n let limitExceeded;\n if (options.collectStreamBody) {\n let completeBuffer;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer = chunks[0];\n }\n else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer = new Uint8Array(readBytesCount);\n let offset = 0;\n chunks.forEach((chunk) => {\n completeBuffer.set(chunk, offset);\n offset += chunk.length;\n });\n }\n bytes = completeBuffer.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { isNumber } from '@datadog/browser-core';\nexport function discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=discardNegativeDuration.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts({ lifeCycle, isChildEvent, onChange: callback = noop, }) {\n const eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0,\n };\n const subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, (event) => {\n var _a;\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case \"error\" /* RumEventType.ERROR */:\n eventCounts.errorCount += 1;\n callback();\n break;\n case \"action\" /* RumEventType.ACTION */:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case \"long_task\" /* RumEventType.LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case \"resource\" /* RumEventType.RESOURCE */:\n if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n eventCounts.resourceCount += 1;\n callback();\n }\n break;\n }\n });\n return {\n stop: () => {\n subscription.unsubscribe();\n },\n eventCounts,\n };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { addEventListeners, dateNow, relativeNow } from '@datadog/browser-core';\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nexport function retrieveFirstInputTiming(configuration, callback) {\n const startTimeStamp = dateNow();\n let timingSent = false;\n const { stop: removeEventListeners } = addEventListeners(configuration, window, [\"click\" /* DOM_EVENT.CLICK */, \"mousedown\" /* DOM_EVENT.MOUSE_DOWN */, \"keydown\" /* DOM_EVENT.KEY_DOWN */, \"touchstart\" /* DOM_EVENT.TOUCH_START */, \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */], (evt) => {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n const timing = {\n entryType: 'first-input',\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0, // arbitrary value to avoid nullable duration and simplify INP logic\n name: '',\n cancelable: false,\n target: null,\n toJSON: () => ({}),\n };\n if (evt.type === \"pointerdown\" /* DOM_EVENT.POINTER_DOWN */) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n }\n else {\n sendTiming(timing);\n }\n }, { passive: true, capture: true });\n return { stop: removeEventListeners };\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n addEventListeners(configuration, window, [\"pointerup\" /* DOM_EVENT.POINTER_UP */, \"pointercancel\" /* DOM_EVENT.POINTER_CANCEL */], (event) => {\n if (event.type === \"pointerup\" /* DOM_EVENT.POINTER_UP */) {\n sendTiming(timing);\n }\n }, { once: true });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n const delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\n//# sourceMappingURL=firstInputPolyfill.js.map","import { addEventListener, Observable, setTimeout, clearTimeout, monitor } from '@datadog/browser-core';\nimport { hasValidResourceEntryDuration, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { retrieveFirstInputTiming } from './firstInputPolyfill';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n RumPerformanceEntryType[\"EVENT\"] = \"event\";\n RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n RumPerformanceEntryType[\"LONG_ANIMATION_FRAME\"] = \"long-animation-frame\";\n RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nexport function createPerformanceObservable(configuration, options) {\n return new Observable((observable) => {\n if (!window.PerformanceObserver) {\n return;\n }\n const handlePerformanceEntries = (entries) => {\n const rumPerformanceEntries = filterRumPerformanceEntries(entries);\n if (rumPerformanceEntries.length > 0) {\n observable.notify(rumPerformanceEntries);\n }\n };\n let timeoutId;\n let isObserverInitializing = true;\n const observer = new PerformanceObserver(monitor((entries) => {\n // In Safari the performance observer callback is synchronous.\n // Because the buffered performance entry list can be quite large we delay the computation to prevent the SDK from blocking the main thread on init\n if (isObserverInitializing) {\n timeoutId = setTimeout(() => handlePerformanceEntries(entries.getEntries()));\n }\n else {\n handlePerformanceEntries(entries.getEntries());\n }\n }));\n try {\n observer.observe(options);\n }\n catch (_a) {\n // Some old browser versions (<= chrome 74 ) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to getEntriesByType and PerformanceObserver with entryTypes\n // TODO: remove this fallback in the next major version\n const fallbackSupportedEntryTypes = [\n RumPerformanceEntryType.RESOURCE,\n RumPerformanceEntryType.NAVIGATION,\n RumPerformanceEntryType.LONG_TASK,\n RumPerformanceEntryType.PAINT,\n ];\n if (fallbackSupportedEntryTypes.includes(options.type)) {\n if (options.buffered) {\n timeoutId = setTimeout(() => handlePerformanceEntries(performance.getEntriesByType(options.type)));\n }\n try {\n observer.observe({ entryTypes: [options.type] });\n }\n catch (_b) {\n // Old versions of Safari are throwing \"entryTypes contained only unsupported types\"\n // errors when observing only unsupported entry types.\n //\n // We could use `supportPerformanceTimingEvent` to make sure we don't invoke\n // `observer.observe` with an unsupported entry type, but Safari 11 and 12 don't support\n // `Performance.supportedEntryTypes`, so doing so would lose support for these versions\n // even if they do support the entry type.\n return;\n }\n }\n }\n isObserverInitializing = false;\n manageResourceTimingBufferFull(configuration);\n let stopFirstInputTiming;\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT) &&\n options.type === RumPerformanceEntryType.FIRST_INPUT) {\n ;\n ({ stop: stopFirstInputTiming } = retrieveFirstInputTiming(configuration, (timing) => {\n handlePerformanceEntries([timing]);\n }));\n }\n return () => {\n observer.disconnect();\n if (stopFirstInputTiming) {\n stopFirstInputTiming();\n }\n clearTimeout(timeoutId);\n };\n });\n}\nlet resourceTimingBufferFullListener;\nfunction manageResourceTimingBufferFull(configuration) {\n if (!resourceTimingBufferFullListener && supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n resourceTimingBufferFullListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', () => {\n performance.clearResourceTimings();\n });\n }\n return () => {\n resourceTimingBufferFullListener === null || resourceTimingBufferFullListener === void 0 ? void 0 : resourceTimingBufferFullListener.stop();\n };\n}\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return (window.PerformanceObserver &&\n PerformanceObserver.supportedEntryTypes !== undefined &&\n PerformanceObserver.supportedEntryTypes.includes(entryType));\n}\nfunction filterRumPerformanceEntries(entries) {\n return entries.filter((entry) => !isForbiddenResource(entry));\n}\nfunction isForbiddenResource(entry) {\n return (entry.entryType === RumPerformanceEntryType.RESOURCE &&\n (!isAllowedRequestUrl(entry.name) || !hasValidResourceEntryDuration(entry)));\n}\n//# sourceMappingURL=performanceObservable.js.map","import { matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { createPerformanceObservable, RumPerformanceEntryType } from '../browser/performanceObservable';\n// Delay to wait for a page activity to validate the tracking process\nexport const PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport const PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, windowOpenObservable, configuration, pageActivityEndCallback, maxDuration) {\n const pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n let pageActivityEndTimeoutId;\n let hasCompleted = false;\n const validationTimeoutId = setTimeout(monitor(() => complete({ hadActivity: false })), PAGE_ACTIVITY_VALIDATION_DELAY);\n const maxDurationTimeoutId = maxDuration !== undefined\n ? setTimeout(monitor(() => complete({ hadActivity: true, end: timeStampNow() })), maxDuration)\n : undefined;\n const pageActivitySubscription = pageActivityObservable.subscribe(({ isBusy }) => {\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n const lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(() => complete({ hadActivity: true, end: lastChangeTime })), PAGE_ACTIVITY_END_DELAY);\n }\n });\n const stop = () => {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n pageActivityEndCallback(event);\n }\n return { stop };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, windowOpenObservable, configuration) {\n return new Observable((observable) => {\n const subscriptions = [];\n let firstRequestIndex;\n let pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), windowOpenObservable.subscribe(notifyPageActivity), createPerformanceObservable(configuration, { type: RumPerformanceEntryType.RESOURCE }).subscribe((entries) => {\n if (entries.some((entry) => !isExcludedUrl(configuration, entry.name))) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, (startEvent) => {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, (request) => {\n if (isExcludedUrl(configuration, request.url) ||\n firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex) {\n return;\n }\n pendingRequestsCount -= 1;\n notifyPageActivity();\n }));\n return () => {\n subscriptions.forEach((s) => s.unsubscribe());\n };\n function notifyPageActivity() {\n observable.notify({ isBusy: pendingRequestsCount > 0 });\n }\n });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n const shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n let child = node.firstChild;\n while (child) {\n callback(child);\n child = child.nextSibling;\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot);\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nimport { isElementNode, getParentNode, isTextNode } from '../browser/htmlDomUtils';\nexport const NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT,\n};\nexport const PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport const PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport const PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport const PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport const PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport const PRIVACY_CLASS_PREFIX = 'dd-privacy-';\n// Private Replacement Templates\nexport const CENSORED_STRING_MARK = '***';\nexport const CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport const FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true,\n};\nconst TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n if (cache && cache.has(node)) {\n return cache.get(node);\n }\n const parentNode = getParentNode(node);\n const parentNodePrivacyLevel = parentNode\n ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache)\n : defaultPrivacyLevel;\n const selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n const nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n if (cache) {\n cache.set(node, nodePrivacyLevel);\n }\n return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return;\n }\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n const inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n const autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year/new-password/current-password]\n if (autocomplete && (autocomplete.startsWith('cc-') || autocomplete.endsWith('-password'))) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (node.matches(getPrivacySelector(NodePrivacyLevel.HIDDEN))) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK))) {\n return NodePrivacyLevel.MASK;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.MASK_USER_INPUT))) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (node.matches(getPrivacySelector(NodePrivacyLevel.ALLOW))) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n const element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport const censorText = (text) => text.replace(/\\S/g, TEXT_MASKING_CHAR);\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n const parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n let textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n const nodePrivacyLevel = parentNodePrivacyLevel;\n const isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n }\n else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n }\n else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' ||\n parentTagName === 'SELECT' ||\n parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n }\n else if (parentTagName === 'OPTION') {\n //